nix-config/home/hyprland.nix
Donovan Glover e3cf378b31
meta: Try hyprbars fork
This was my test of the hyprbars fork. It turns out that the original
version is more useful, although both versions crash whenever reloading
the plugin after unloading it once.
2023-08-01 18:54:26 -04:00

249 lines
8.1 KiB
Nix

{ pkgs, config, lib, ... }:
let
opacity = lib.strings.floatToString config.stylix.opacity.terminal;
modifier = "SUPER";
in
{
xdg.configFile."hypr/gaps.sh" = {
executable = true;
text = /* bash */ ''
#/usr/bin/env bash
hyprctl keyword general:gaps_out $((10 - $(hyprctl getoption general:gaps_out -j | jq -r ".int")))
hyprctl keyword general:gaps_in $((5 - $(hyprctl getoption general:gaps_in -j | jq -r ".int")))
hyprctl keyword general:border_size $((2 - $(hyprctl getoption general:border_size -j | jq -r ".int")))
hyprctl keyword decoration:rounding $((8 - $(hyprctl getoption decoration:rounding -j | jq -r ".int")))
'';
};
xdg.configFile."hypr/set-bg.fish" = {
executable = true;
text = /* fish */ ''
#!/usr/bin/env fish
if [ (hyprctl getoption animations:enabled -j | jq -r ".int") = "1" ]
swww img \
--transition-type $(random choice grow wave outer) \
--transition-wave 80,40 \
--transition-angle $(random choice 45 90 135 225 270 315) \
--transition-pos $(random choice center top left right bottom top-left top-right bottom-left bottom-right) \
--transition-step 200 \
--transition-duration 1.5 \
--transition-fps 240 \
"$argv"
else
swww img \
--transition-type simple \
--transition-step 255 \
"$argv"
end
'';
};
xdg.configFile."hypr/random-bg.fish" = {
executable = true;
text = /* fish */ ''
#!/usr/bin/env fish
cd ~/.config/hypr
./set-bg.fish "$(random choice $(fd . /run/current-system/sw/share/backgrounds --follow -e jpg -e png))"
'';
};
xdg.configFile."hypr/hyprland.conf".text = with config.lib.stylix.colors; /* bash */ ''
env=XCURSOR_SIZE,24
env=BROWSER,librewolf
env=GTK_IM_MODULE,fcitx
env=QT_IM_MODULE,fcitx
env=XMODIFIERS,@im=fcitx
env=SDL_IM_MODULE,fcitx
env=GLFW_IM_MODULE,ibus
env=SWWW_TRANSITION,grow
env=SWWW_TRANSITION_STEP,200
env=SWWW_TRANSITION_DURATION,1.5
env=SWWW_TRANSITION_FPS,240
env=SWWW_TRANSITION_WAVE,80,40
env=WLR_NO_HARDWARE_CURSORS,1
monitor=,preferred,auto,1
monitor=HDMI-A-1,preferred,auto,1,mirror,eDP-1
exec-once = sleep 0.1; swww init
exec-once = wpctl set-volume @DEFAULT_AUDIO_SINK@ 20%
exec-once = ironbar
exec-once = fcitx5
exec-once = hyprctl dispatch workspace 5000000
exec-once = ${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1
exec-once = hyprdim --persist
input {
kb_layout = us
accel_profile = flat
follow_mouse = 1
mouse_refocus = 0
sensitivity = 0
touchpad {
natural_scroll = yes
disable_while_typing = no
}
repeat_rate = 50
repeat_delay = 300
}
general {
gaps_in = 0
gaps_out = -1
border_size = 0
col.active_border = rgba(${base03}ee) rgba(${base04}ee) 45deg
col.inactive_border = rgba(${base02}99)
layout = master
}
plugin {
hyprbars {
bar_color = rgba(${base00}F2)
bar_height = 30
col.text = rgba(${base05}99)
bar_text_size = 9
bar_text_font = Maple Mono
exclude_windowrulev2 = floating:0,title:^(Easy Effects|Volume Control|Bluetooth|iwgtk)$
buttons {
button_size = 14
col.maximize = rgba(${base04}cc)
col.close = rgba(${base05}cc)
}
}
}
decoration {
rounding = 0
blur = yes
blur_size = 4
blur_passes = 2
blur_new_optimizations = yes
drop_shadow = yes
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
fullscreen_opacity = 0.9999999
}
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default, slidevert
animation = specialWorkspace, 1, 6, default, fade
}
dwindle {
preserve_split = yes
special_scale_factor = 1
}
master {
new_is_master = no
new_on_top = no
mfact = 0.65
special_scale_factor = 1
}
gestures {
workspace_swipe = yes
}
device:synps/2-synaptics-touchpad {
sensitivity = 0.75
accel_profile = flat
natural_scroll = yes
disable_while_typing = no
}
device:tpps/2-elan-trackpoint {
sensitivity = 0.5
accel_profile = flat
}
binds {
allow_workspace_cycles = yes
}
$SUPER = ${modifier}
$SUPER_SHIFT = ${modifier}_SHIFT
$SUPER_ALT = ${modifier}_ALT
bind = $SUPER_SHIFT, Return, exec, kitty
bind = $SUPER, Q, killactive
bind = $SUPER, P, exec, dunstify --icon=$(grimblast save screen) Screenshot Captured.
bind = , Print, exec, grimblast copy area
bind = $SUPER_ALT, delete, exit
bind = $SUPER, T, exec, tessen
bind = $SUPER, V, togglefloating
bind = $SUPER, B, centerwindow
bind = $SUPER, U, exec, ~/.config/hypr/gaps.sh
bind = $SUPER, X, pin
bind = $SUPER, F, fullscreen
bind = $SUPER, S, exec, hyprctl dispatch swapactiveworkspaces 0 1
bind = $SUPER_SHIFT, S, movetoworkspace, special
bind = $SUPER_SHIFT, S, focuscurrentorlast
bind = $SUPER, F1, exec, killall ..ironbar-wrapper || ironbar
bind = $SUPER, F2, togglespecialworkspace
bind = $SUPER, Return, layoutmsg, swapwithmaster master
bind = $SUPER, J, layoutmsg, cyclenext
bind = $SUPER, K, layoutmsg, cycleprev
bind = $SUPER_SHIFT, J, layoutmsg, swapnext
bind = $SUPER_SHIFT, K, layoutmsg, swapprev
bind = $SUPER, C, splitratio, exact 0.80
bind = $SUPER, C, layoutmsg, orientationtop
bind = $SUPER_SHIFT, C, splitratio, exact 0.65
bind = $SUPER_SHIFT, C, layoutmsg, orientationleft
bind = $SUPER, H, layoutmsg, addmaster
bind = $SUPER, L, layoutmsg, removemaster
bind = $SUPER_SHIFT, H, splitratio, -0.05
bind = $SUPER_SHIFT, L, splitratio, +0.05
bind = $SUPER, 1, exec, hyprland-relative-workspace b
bind = $SUPER, 2, exec, hyprland-relative-workspace f
bind = $SUPER_SHIFT, 1, exec, hyprland-relative-workspace b --with-window
bind = $SUPER_SHIFT, 2, exec, hyprland-relative-workspace f --with-window
layerrule = blur,ironbar
layerrule = blur,notifications
windowrulev2 = nomaxsize,class:^(winecfg\.exe)$
windowrulev2 = nomaxsize,class:^(osu\.exe)$
windowrulev2 = opaque,class:^(kitty)$
windowrulev2 = noblur,class:^(kitty)$
windowrulev2 = nodim,title:^(Picture-in-Picture)$
windowrulev2 = tile,class:^(.qemu-system-x86_64-wrapped)$
windowrulev2 = opacity ${opacity} ${opacity},class:^(thunar)$
# Scroll through existing workspaces with super + scroll
bind = $SUPER, mouse_down, workspace, e+1
bind = $SUPER, mouse_up, workspace, e-1
# Move/resize windows with super + LMB/RMB and dragging
bindm = $SUPER, mouse:272, movewindow
bindm = $SUPER, mouse:273, resizewindow
# Change volume with keys
# TODO: Change notification once at 0/100%
bindl=, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && notify-send -t 2000 "Muted" "$(wpctl get-volume @DEFAULT_AUDIO_SINK@)"
bindl=, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+ && notify-send -t 2000 "Raised volume to" "$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | tail -c 3)%"
bindl=, XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && notify-send -t 2000 "Lowered volume to" "$(wpctl get-volume @DEFAULT_AUDIO_SINK@ | tail -c 3)%"
bindl=, XF86MonBrightnessDown, exec, brightnessctl set 5%- && notify-send -t 2000 "Decreased brightness to" "$(brightnessctl get)"
bindl=, XF86MonBrightnessUp, exec, brightnessctl set +5% && notify-send -t 2000 "Increased brightness to" "$(brightnessctl get)"
misc {
disable_hyprland_logo = yes
animate_manual_resizes = yes
animate_mouse_windowdragging = yes
disable_autoreload = yes
}
'';
}