From: Andre Ramnitz Date: Thu, 19 Sep 2024 15:55:36 +0000 (+0200) Subject: hypr: move keybinds and rules into separate files X-Git-Tag: v0.2~58 X-Git-Url: https://git.ramnitz.eu/?a=commitdiff_plain;h=1be1608a62e792a0802af328ea00cb9a8882c718;p=dotfiles.git hypr: move keybinds and rules into separate files --- diff --git a/config/dot-config/hypr/fragments/hypr-keybinds.conf b/config/dot-config/hypr/fragments/hypr-keybinds.conf new file mode 100644 index 00000000..a3a5a183 --- /dev/null +++ b/config/dot-config/hypr/fragments/hypr-keybinds.conf @@ -0,0 +1,127 @@ +# See https://wiki.hyprland.org/Configuring/Keywords/ for more +$suremod = SUPER ALT CTRL +$mainmod = SUPER + +# binds that don't want to get fat-fingered +bind = $suremod, M, exit, +bind = $suremod, F, fullscreen,0 +bind = $suremod, Return, exec, konsole # backup terminal app +bind = $suremod, D, denywindowfromgroup, toggle +bind = ALT SHIFT, F12, exec, ~/.config/hypr/scripts/gamemode.sh + +# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more +bind = $mainmod, Return, exec, footclient +bind = $mainmod Shift, Q, killactive, +bind = $mainmod Shift, Return, exec, footclient -w 1280x800 -a popup +bind = $mainmod, P, exec, footclient -w 640x400 -a popup -H hyprpicker #color Pipette +bind = $mainmod, E, exec, dolphin +bind = $mainmod, F, fullscreen,1 +bind = $mainmod, V, exec, killall fuzzel || cliphist list | fuzzel -d --config="$HOME"/.config/fuzzel/fuzzel-centered.ini | cliphist decode | wl-copy +bind = $mainmod Shift, V, togglefloating +bind = $mainmod, R, exec, killall fuzzel || fuzzel +bind = $mainmod Shift, R, exec, killall fuzzel || fuzzel --config="$HOME"/.config/fuzzel/fuzzel-centered.ini +# bind = $mainmod Shift, R, exec, killall rofi || rofi -show run # rofi installed for keepassxc-browser script +bind = $mainmod, A, pseudo, # dwindle, A for Artificial +bind = $mainmod, S, swapsplit, # dwindle +bind = $mainmod SHIFT, S, layoutmsg, preselect d # dwindle +bind = $mainmod, G, togglegroup +bind = $mainmod SHIFT, G, lockactivegroup, toggle +bind = ALT, TAB, focuscurrentorlast +bind = $mainmod, TAB, exec, ~/.config/hypr/scripts/windowswitch-rg.sh +bind = $mainmod, grave, exec, ~/.config/hypr/scripts/RofiEmoji.sh +bind = $mainmod, plus, layoutmsg, hy3:makegroup v +bind = $mainmod, minus, layoutmsg, hy3:makegroup h + +# Move focus with mainMod + arrow keys +bind = $mainmod, left, movefocus, l +bind = $mainmod, right, movefocus, r +bind = $mainmod, up, movefocus, u +bind = $mainmod, down, movefocus, d +bind = $mainmod, H, movefocus, l +bind = $mainmod, L, movefocus, r +bind = $mainmod, K, movefocus, u +bind = $mainmod, J, movefocus, d + +# Move windows or groups with mainMod + Shift + arrow keys +bind = $mainmod SHIFT, left, movewindoworgroup, l +bind = $mainmod SHIFT, right, movewindoworgroup, r +bind = $mainmod SHIFT, up, movewindoworgroup, u +bind = $mainmod SHIFT, down, movewindoworgroup, d +bind = $mainmod SHIFT, H, movewindoworgroup, l +bind = $mainmod SHIFT, L, movewindoworgroup, r +bind = $mainmod SHIFT, K, movewindoworgroup, u +bind = $mainmod SHIFT, J, movewindoworgroup, d + +# Move windows into groups +bind = $mainmod ALT, left, moveintogroup, l +bind = $mainmod ALT, right, moveintogroup, r +bind = $mainmod ALT, up, moveintogroup, u +bind = $mainmod ALT, down, moveintogroup, d +bind = $mainmod ALT, H, moveintogroup, l +bind = $mainmod ALT, L, moveintogroup, r +bind = $mainmod ALT, K, moveintogroup, u +bind = $mainmod ALT, J, moveintogroup, d + +# Move windows out of groups +bind = $mainmod SHIFT ALT, left, moveoutofgroup, l +bind = $mainmod SHIFT ALT, right, moveoutofgroup, r +bind = $mainmod SHIFT ALT, up, moveoutofgroup, u +bind = $mainmod SHIFT ALT, down, moveoutofgroup, d +bind = $mainmod SHIFT ALT, H, moveoutofgroup, l +bind = $mainmod SHIFT ALT, L, moveoutofgroup, r +bind = $mainmod SHIFT ALT, K, moveoutofgroup, u +bind = $mainmod SHIFT ALT, J, moveoutofgroup, d + +# Switch through group windows +bind = $mainmod, O, changegroupactive, f +bind = $mainmod, U, changegroupactive, b + +# Switch workspaces with mainMod + [0-9] +bind = $mainmod, 1, workspace, 1 +bind = $mainmod, 2, workspace, 2 +bind = $mainmod, 3, workspace, 3 +bind = $mainmod, 4, workspace, 4 +bind = $mainmod, 5, workspace, 5 +bind = $mainmod, 6, workspace, 6 +bind = $mainmod, 7, workspace, 7 +bind = $mainmod, 8, workspace, 8 +bind = $mainmod, 9, workspace, 9 +bind = $mainmod, 0, workspace, 10 + +# Move active window to a workspace with mainMod + SHIFT + [0-9] +bind = $mainmod SHIFT, 1, movetoworkspacesilent, 1 +bind = $mainmod SHIFT, 2, movetoworkspacesilent, 2 +bind = $mainmod SHIFT, 3, movetoworkspacesilent, 3 +bind = $mainmod SHIFT, 4, movetoworkspacesilent, 4 +bind = $mainmod SHIFT, 5, movetoworkspacesilent, 5 +bind = $mainmod SHIFT, 6, movetoworkspacesilent, 6 +bind = $mainmod SHIFT, 7, movetoworkspacesilent, 7 +bind = $mainmod SHIFT, 8, movetoworkspacesilent, 8 +bind = $mainmod SHIFT, 9, movetoworkspacesilent, 9 +bind = $mainmod SHIFT, 0, movetoworkspacesilent, 10 + +# Scroll through existing workspaces with mainMod + scroll +bind = $mainmod, mouse_down, workspace, e+1 +bind = $mainmod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainmod, mouse:272, movewindow +bindm = $mainmod, mouse:273, resizewindow + +# media keys +bindl = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ +bindl = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- +bindl = , XF86AudioMute, exec, ~/.config/hypr/scripts/muteorunmute.sh +bindl = , XF86AudioPlay, exec, playerctl play-pause +bindl = , XF86AudioNext, exec, playerctl next +bindl = , XF86AudioPrev, exec, playerctl previous +bindl = , XF86audiostop, exec, playerctl stop + +# printscr +bind = $mainmod, Print, exec, grim -g "$(slurp)" - | swappy -f - +bind = $suremod, Print, exec, grim "$HOME/Bilder/scrot-"$(date +"%Y%m%d--%H%M%S")"" + +# 'scratchpad +bind = $mainmod, I, togglespecialworkspace, overlay +bind = $mainmod SHIFT, I, movetoworkspacesilent, special:overlay + diff --git a/config/dot-config/hypr/fragments/hypr-windowrules.conf b/config/dot-config/hypr/fragments/hypr-windowrules.conf new file mode 100644 index 00000000..3de6262e --- /dev/null +++ b/config/dot-config/hypr/fragments/hypr-windowrules.conf @@ -0,0 +1,77 @@ +# Example windowrule v1 +# windowrule = float, ^(kitty)$ +# Example windowrule v2 +# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ +# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more +# more windowrules + +# handle steam client +windowrulev2 = float,class:^(steam)$ +windowrulev2 = float,title:^(Steam)$ +windowrulev2 = float,title:^(Freundesliste)$ +windowrulev2 = stayfocused, title:^()$, class:^(steam)$ +windowrulev2 = minsize 1 1, title:^()$, class:^(steam)$ +windowrulev2 = plugin:hyprbars:nobar,class:^(steam)$ +windowrulev2 = plugin:hyprbars:nobar,title:^(Steam)$ +windowrulev2 = plugin:hyprbars:nobar,title:^(Freundesliste)$ + +# handle wine/proton games +windowrulev2 = noanim, class:^(.*exe)$ +windowrulev2 = fullscreen, initialClass:^(gamescope)$ + +# handle hyprbars for floating windows +windowrulev2 = plugin:hyprbars:nobar, ^floating:0 + +# handle plasma/kde/qt apps +windowrule = float, ^(org.kde.*)$ +windowrule = float, ^(kdesystemsettings.*)$ +windowrulev2 = minsize 1 1, stayfocused, float, class: ^(com.nextcloud.desktopclient.nextcloud)$ +windowrulev2 = float, size 1560 1000, pin, workspace special:overlay, class:^(org.keepassxc.KeePassXC)$ +windowrule = float, ^(lxqt-.*)$ +windowrule = float, ^(vlc.*)$ +windowrule = float, ^(pcmanfm.*)$ +windowrule = float, class:^(qalculate.*)$ + +# handle dialogs +windowrulev2 = float, title:^((Über|About).*)$ +windowrulev2 = stayfocused, title:^((Über|About).*)$ + +# handle browsers +windowrulev2 = float, class:^(firefox.*)$ +windowrulev2 = tag +neverdim, class:^(firefox.*)$ +windowrulev2 = pseudo, class:^(org.qutebrowser.*)$ +windowrulev2 = tag +neverdim, class:^(org.qutebrowser.*)$ + +# handle terminal(s/-apps) +windowrulev2 = opacity 1.0 override 0.8 override, group, class:^(foot)$ +windowrulev2 = float, opacity 1.0 override 0.8 override, class:^(popup)$ +windowrulev2 = pseudo, class:^(ncmpcpp)$ +windowrulev2 = maxsize 60% 80%, class:^(ncmpcpp)$ +windowrulev2 = float, stayfocused, center, opacity 1.0 override, class:^(kakpopup)$ +windowrule = workspace 2, ncmpcpp +windowrule = workspace 2, cava +windowrule = noinitialfocus, cava + +# handle other clients +windowrule = float, ^(openrgb)$ +windowrule = float, ^(org.corectrl.CoreCtrl)$ +windowrule = float, ^(pavucontrol.*)$ +windowrulev2 = float, class:^(lutris)$ +windowrulev2 = float, class:^(Threema.*)$ +windowrulev2 = float, class:^(blueman-manager.*)$ +windowrulev2 = tag +game, class:^(.*)exe$ +windowrulev2 = tag +game, initialClass:^(gamescope)$ + +# handle portals +windowrule = float, ^(org.freedesktop.impl.portal.desktop.kde)$ +windowrule = stayfocused, ^(org.freedesktop.impl.portal.desktop.kde)$ + +# handle TAGS (always handle tags last) +windowrulev2 = nodim, tag:neverdim +windowrulev2 = noblur, tag:game +windowrulev2 = norounding, tag:game +windowrulev2 = noshadow, tag:game +windowrulev2 = immediate, tag:game +windowrulev2 = opaque, tag:game + + diff --git a/config/dot-config/hypr/fragments/hypr-workspacerules.conf b/config/dot-config/hypr/fragments/hypr-workspacerules.conf new file mode 100644 index 00000000..163d6651 --- /dev/null +++ b/config/dot-config/hypr/fragments/hypr-workspacerules.conf @@ -0,0 +1,7 @@ +# workspace rules +workspace = 1, on-created-empty:[pseudo] qutebrowser +workspace = 2, on-created-empty:[pseudo] footclient -a ncmpcpp ncmpcpp +workspace = 2, gapsout:80 +workspace = 4, on-created-empty:[float] steam + + diff --git a/config/dot-config/hypr/hyprland.conf b/config/dot-config/hypr/hyprland.conf index 04bd9f18..0e97d89e 100644 --- a/config/dot-config/hypr/hyprland.conf +++ b/config/dot-config/hypr/hyprland.conf @@ -200,7 +200,7 @@ plugin { bar_text_font = Iosevka Nerd Font Propo bar_text_size = 12 bar_height = 24 - bar_color = $base0C + bar_color = $base0A col.text = $base00 bar_part_of_window = true bar_precedence_over_border = true @@ -210,195 +210,7 @@ plugin { } } -# Example windowrule v1 -# windowrule = float, ^(kitty)$ -# Example windowrule v2 -# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more -# more windowrules - -# handle steam client -windowrulev2 = float,class:^(steam)$ -windowrulev2 = float,title:^(Steam)$ -windowrulev2 = float,title:^(Freundesliste)$ -windowrulev2 = stayfocused, title:^()$, class:^(steam)$ -windowrulev2 = minsize 1 1, title:^()$, class:^(steam)$ -windowrulev2 = plugin:hyprbars:nobar,class:^(steam)$ -windowrulev2 = plugin:hyprbars:nobar,title:^(Steam)$ -windowrulev2 = plugin:hyprbars:nobar,title:^(Freundesliste)$ - -# handle wine/proton games -windowrulev2 = noanim, class:^(.*exe)$ -windowrulev2 = fullscreen, class:^(gamescope)$ - -# handle hyprbars for floating windows -windowrulev2 = plugin:hyprbars:nobar, ^floating:0 - -# handle plasma/kde/qt apps -windowrule = float, ^(org.kde.*)$ -windowrule = float, ^(kdesystemsettings.*)$ -windowrulev2 = minsize 1 1, stayfocused, float, class: ^(com.nextcloud.desktopclient.nextcloud)$ -windowrulev2 = float, size 1560 1000, pin, workspace special:overlay, class:^(org.keepassxc.KeePassXC)$ -windowrule = float, ^(lxqt-.*)$ -windowrule = float, ^(vlc.*)$ -windowrule = float, ^(pcmanfm.*)$ -windowrule = float, class:^(qalculate.*)$ - -# handle dialogs -windowrulev2 = float, title:^((Über|About).*)$ - -# handle browsers -windowrulev2 = float, class:^(firefox.*)$ -windowrulev2 = tag +browser, class:^(firefox.*)$ -windowrulev2 = tag +browser, class:^(org.qutebrowser.*)$ - -# handle terminal(s/-apps) -windowrulev2 = opacity 1.0 override 0.8 override, group, class:^(foot)$ -windowrulev2 = float, opacity 1.0 override 0.8 override, class:^(popup)$ -windowrulev2 = size 60% 100%, float, title:^(NCMPCPP.*)$ -windowrulev2 = float, stayfocused, center, opacity 1.0 override, class:^(kakpopup)$ -windowrule = workspace 2, ncmpcpp -windowrule = workspace 2, cava -windowrule = noinitialfocus, cava - -# handle other clients -windowrule = float, ^(openrgb)$ -windowrule = float, ^(org.corectrl.CoreCtrl)$ -windowrule = float, ^(pavucontrol.*)$ -windowrulev2 = float, class:^(lutris)$ -windowrulev2 = float, class:^(Threema.*)$ -windowrulev2 = float, class:^(blueman-manager.*)$ - -# handle portals -windowrule = float, ^(org.freedesktop.impl.portal.desktop.kde)$ -windowrule = stayfocused, ^(org.freedesktop.impl.portal.desktop.kde)$ - -# handle TAGS (always handle tags last) -windowrulev2 = nodim, tag:browser +source=./fragments/hypr-keybinds.conf +source=./fragments/hypr-windowrules.conf +source=./fragments/hypr-workspacerules.conf -# See https://wiki.hyprland.org/Configuring/Keywords/ for more -$suremod = SUPER ALT CTRL -$mainmod = SUPER - -# binds that don't want to get fat-fingered -bind = $suremod, M, exit, -bind = $suremod, F, fullscreen,0 -bind = $suremod, Return, exec, konsole # backup terminal app -bind = $suremod, D, denywindowfromgroup, toggle -bind = ALT SHIFT, F12, exec, ~/.config/hypr/scripts/gamemode.sh - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainmod, Return, exec, footclient -bind = $mainmod Shift, Q, killactive, -bind = $mainmod Shift, Return, exec, footclient -w 1280x800 -a popup -bind = $mainmod, P, exec, footclient -w 640x400 -a popup -H hyprpicker #color Pipette -bind = $mainmod, E, exec, dolphin -bind = $mainmod, F, fullscreen,1 -bind = $mainmod, V, exec, killall fuzzel || cliphist list | fuzzel -d --config="$HOME"/.config/fuzzel/fuzzel-centered.ini | cliphist decode | wl-copy -bind = $mainmod Shift, V, togglefloating -bind = $mainmod, R, exec, killall fuzzel || fuzzel -bind = $mainmod Shift, R, exec, killall fuzzel || fuzzel --config="$HOME"/.config/fuzzel/fuzzel-centered.ini -# bind = $mainmod Shift, R, exec, killall rofi || rofi -show run # rofi installed for keepassxc-browser script -bind = $mainmod, A, pseudo, # dwindle, A for Artificial -bind = $mainmod, S, swapsplit, # dwindle -bind = $mainmod SHIFT, S, layoutmsg, preselect d # dwindle -bind = $mainmod, G, togglegroup -bind = $mainmod SHIFT, G, lockactivegroup, toggle -bind = ALT, TAB, focuscurrentorlast -bind = $mainmod, TAB, exec, ~/.config/hypr/scripts/windowswitch-rg.sh -bind = $mainmod, grave, exec, ~/.config/hypr/scripts/RofiEmoji.sh -bind = $mainmod, plus, layoutmsg, hy3:makegroup v -bind = $mainmod, minus, layoutmsg, hy3:makegroup h - -# Move focus with mainMod + arrow keys -bind = $mainmod, left, movefocus, l -bind = $mainmod, right, movefocus, r -bind = $mainmod, up, movefocus, u -bind = $mainmod, down, movefocus, d -bind = $mainmod, H, movefocus, l -bind = $mainmod, L, movefocus, r -bind = $mainmod, K, movefocus, u -bind = $mainmod, J, movefocus, d - -# Move windows or groups with mainMod + Shift + arrow keys -bind = $mainmod SHIFT, left, movewindoworgroup, l -bind = $mainmod SHIFT, right, movewindoworgroup, r -bind = $mainmod SHIFT, up, movewindoworgroup, u -bind = $mainmod SHIFT, down, movewindoworgroup, d -bind = $mainmod SHIFT, H, movewindoworgroup, l -bind = $mainmod SHIFT, L, movewindoworgroup, r -bind = $mainmod SHIFT, K, movewindoworgroup, u -bind = $mainmod SHIFT, J, movewindoworgroup, d - -# Move windows into groups -bind = $mainmod ALT, left, moveintogroup, l -bind = $mainmod ALT, right, moveintogroup, r -bind = $mainmod ALT, up, moveintogroup, u -bind = $mainmod ALT, down, moveintogroup, d -bind = $mainmod ALT, H, moveintogroup, l -bind = $mainmod ALT, L, moveintogroup, r -bind = $mainmod ALT, K, moveintogroup, u -bind = $mainmod ALT, J, moveintogroup, d - -# Move windows out of groups -bind = $mainmod SHIFT ALT, left, moveoutofgroup, l -bind = $mainmod SHIFT ALT, right, moveoutofgroup, r -bind = $mainmod SHIFT ALT, up, moveoutofgroup, u -bind = $mainmod SHIFT ALT, down, moveoutofgroup, d -bind = $mainmod SHIFT ALT, H, moveoutofgroup, l -bind = $mainmod SHIFT ALT, L, moveoutofgroup, r -bind = $mainmod SHIFT ALT, K, moveoutofgroup, u -bind = $mainmod SHIFT ALT, J, moveoutofgroup, d - -# Switch through group windows -bind = $mainmod, O, changegroupactive, f -bind = $mainmod, U, changegroupactive, b - -# Switch workspaces with mainMod + [0-9] -bind = $mainmod, 1, workspace, 1 -bind = $mainmod, 2, workspace, 2 -bind = $mainmod, 3, workspace, 3 -bind = $mainmod, 4, workspace, 4 -bind = $mainmod, 5, workspace, 5 -bind = $mainmod, 6, workspace, 6 -bind = $mainmod, 7, workspace, 7 -bind = $mainmod, 8, workspace, 8 -bind = $mainmod, 9, workspace, 9 -bind = $mainmod, 0, workspace, 10 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainmod SHIFT, 1, movetoworkspacesilent, 1 -bind = $mainmod SHIFT, 2, movetoworkspacesilent, 2 -bind = $mainmod SHIFT, 3, movetoworkspacesilent, 3 -bind = $mainmod SHIFT, 4, movetoworkspacesilent, 4 -bind = $mainmod SHIFT, 5, movetoworkspacesilent, 5 -bind = $mainmod SHIFT, 6, movetoworkspacesilent, 6 -bind = $mainmod SHIFT, 7, movetoworkspacesilent, 7 -bind = $mainmod SHIFT, 8, movetoworkspacesilent, 8 -bind = $mainmod SHIFT, 9, movetoworkspacesilent, 9 -bind = $mainmod SHIFT, 0, movetoworkspacesilent, 10 - -# Scroll through existing workspaces with mainMod + scroll -bind = $mainmod, mouse_down, workspace, e+1 -bind = $mainmod, mouse_up, workspace, e-1 - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainmod, mouse:272, movewindow -bindm = $mainmod, mouse:273, resizewindow - -# media keys -bindl = , XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ -bindl = , XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- -bindl = , XF86AudioMute, exec, ~/.config/hypr/scripts/muteorunmute.sh -bindl = , XF86AudioPlay, exec, playerctl play-pause -bindl = , XF86AudioNext, exec, playerctl next -bindl = , XF86AudioPrev, exec, playerctl previous -bindl = , XF86audiostop, exec, playerctl stop - -# printscr -bind = $mainmod, Print, exec, grim -g "$(slurp)" - | swappy -f - -bind = $suremod, Print, exec, grim "$HOME/Bilder/scrot-"$(date +"%Y%m%d--%H%M%S")"" - -# 'scratchpad -bind = $mainmod, I, togglespecialworkspace, overlay -bind = $mainmod SHIFT, I, movetoworkspacesilent, special:overlay