Personal Nix flake
nixos home-manager nix
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: Add hyprland bindings for play/previous/next media keys

+82 -76
+82 -76
nix/home/modules/de/hyprland/binds/default.nix
··· 11 11 genList 12 12 mkEnableOption 13 13 mkIf 14 - mkMerge 15 14 range 16 15 ; 17 16 ··· 51 50 enableFnKeys = lib.mkEnableOption "function key bindings"; 52 51 }; 53 52 54 - config = mkIf cfg.enable (mkMerge [ 55 - { 56 - wayland.windowManager.hyprland = { 57 - settings = { 58 - "$mod" = "SUPER"; 59 - bind = 60 - [ 61 - "$mod, E, exec, nautilus" 62 - "CTRL ALT, L, exec, ${config.services.hypridle.settings.general.lock_cmd}" 63 - "$mod, F11, exec, pidof grimblast || grimblast copy output --notify" 64 - "$mod ALT, F11, exec, pidof grimblast || grimblast copy active --notify" 65 - "$mod SHIFT, F11, exec, pidof grimblast || ${pkgs.writeShellScript "grimblast-freeze" '' 66 - # Workaround for grimblast --freeze not actually freezing, see https://github.com/hyprwm/contrib/issues/37#issuecomment-1558933363 67 - hyprpicker -r -n -z & 68 - hyprpicker_pid=$! 69 - grimblast copy area --notify 70 - kill "$hyprpicker_pid" 71 - ''}" 53 + config = mkIf cfg.enable { 54 + wayland.windowManager.hyprland = { 55 + settings = { 56 + "$mod" = "SUPER"; 57 + bind = 58 + [ 59 + "$mod, E, exec, nautilus" 60 + "CTRL ALT, L, exec, ${config.services.hypridle.settings.general.lock_cmd}" 61 + "$mod, F11, exec, pidof grimblast || grimblast copy output --notify" 62 + "$mod ALT, F11, exec, pidof grimblast || grimblast copy active --notify" 63 + "$mod SHIFT, F11, exec, pidof grimblast || ${pkgs.writeShellScript "grimblast-freeze" '' 64 + # Workaround for grimblast --freeze not actually freezing, see https://github.com/hyprwm/contrib/issues/37#issuecomment-1558933363 65 + hyprpicker -r -n -z & 66 + hyprpicker_pid=$! 67 + grimblast copy area --notify 68 + kill "$hyprpicker_pid" 69 + ''}" 72 70 73 - # "$mod CTRL, Z, pseudo," # dwindle 74 - "$mod, X, togglesplit," # dwindle 71 + # "$mod CTRL, Z, pseudo," # dwindle 72 + "$mod, X, togglesplit," # dwindle 75 73 76 - "$mod, Q, exec, ${pkgs.writeShellScript "killactive" '' 77 - # See https://wiki.hyprland.org/configuring/uncommon-tips--tricks/#minimize-steam-instead-of-killing 78 - if [ "$(${pkgs.hyprland}/bin/hyprctl activewindow -j | ${lib.getBin pkgs.jq} -r ".class")" = "Steam" ]; then 79 - ${lib.getBin pkgs.xdotool} getactivewindow windowunmap 80 - else 81 - ${pkgs.hyprland}/bin/hyprctl dispatch killactive "" 82 - fi 83 - ''}" 84 - "$mod, F, togglefloating," 85 - "$mod ALT, F, setfloating," 86 - "$mod ALT, F, pin," 87 - "$mod, G, togglegroup," 88 - "$mod SHIFT, G, changegroupactive," 89 - "$mod, Z, fullscreen," 74 + "$mod, Q, exec, ${pkgs.writeShellScript "killactive" '' 75 + # See https://wiki.hyprland.org/configuring/uncommon-tips--tricks/#minimize-steam-instead-of-killing 76 + if [ "$(${pkgs.hyprland}/bin/hyprctl activewindow -j | ${lib.getBin pkgs.jq} -r ".class")" = "Steam" ]; then 77 + ${lib.getBin pkgs.xdotool} getactivewindow windowunmap 78 + else 79 + ${pkgs.hyprland}/bin/hyprctl dispatch killactive "" 80 + fi 81 + ''}" 82 + "$mod, F, togglefloating," 83 + "$mod ALT, F, setfloating," 84 + "$mod ALT, F, pin," 85 + "$mod, G, togglegroup," 86 + "$mod SHIFT, G, changegroupactive," 87 + "$mod, Z, fullscreen," 90 88 91 - "ALT, TAB, cyclenext, tiled" 92 - "ALT SHIFT, TAB, cyclenext, prev tiled" 93 - "$mod, TAB, cyclenext," 94 - "$mod SHIFT, TAB, cyclenext, prev" 89 + "ALT, TAB, cyclenext, tiled" 90 + "ALT SHIFT, TAB, cyclenext, prev tiled" 91 + "$mod, TAB, cyclenext," 92 + "$mod SHIFT, TAB, cyclenext, prev" 95 93 96 - "$mod, S, togglespecialworkspace, magic" 97 - "$mod SHIFT, S, movetoworkspace, special:magic" 94 + "$mod, S, togglespecialworkspace, magic" 95 + "$mod SHIFT, S, movetoworkspace, special:magic" 98 96 99 - "$mod, mouse_down, workspace, e+1" 100 - "$mod, mouse_up, workspace, e-1" 97 + "$mod, mouse_down, workspace, e+1" 98 + "$mod, mouse_up, workspace, e-1" 101 99 102 - "$mod SHIFT ALT, 1, movewindow, mon:+1" 103 - "$mod SHIFT ALT, 2, movewindow, mon:-1" 104 - ] 105 - ++ (makeDirectionalBinds "movefocus" []) 106 - ++ (makeDirectionalBinds "movewindoworgroup" ["SHIFT"]) 107 - ++ (makeWorkspaceBinds "workspace" []) 108 - ++ (makeWorkspaceBinds "movetoworkspace" ["SHIFT"]) 109 - ++ (lib.optional config.programs.firefox.enable "$mod, B, exec, firefox") 110 - ++ (lib.optional config.programs.kitty.enable "$mod, T, exec, kitty") 111 - ++ (lib.optional config.programs.wezterm.enable "$mod ALT, T, exec, wezterm"); 100 + "$mod SHIFT ALT, 1, movewindow, mon:+1" 101 + "$mod SHIFT ALT, 2, movewindow, mon:-1" 102 + ] 103 + ++ (makeDirectionalBinds "movefocus" []) 104 + ++ (makeDirectionalBinds "movewindoworgroup" ["SHIFT"]) 105 + ++ (makeWorkspaceBinds "workspace" []) 106 + ++ (makeWorkspaceBinds "movetoworkspace" ["SHIFT"]) 107 + ++ (lib.optional config.programs.firefox.enable "$mod, B, exec, firefox") 108 + ++ (lib.optional config.programs.kitty.enable "$mod, T, exec, kitty") 109 + ++ (lib.optional config.programs.wezterm.enable "$mod ALT, T, exec, wezterm"); 112 110 113 - binde = [ 111 + bindle = 112 + [ 114 113 "$mod CTRL, H, resizeactive, -10 0" 115 114 "$mod CTRL, L, resizeactive, 10 0" 116 115 "$mod CTRL, K, resizeactive, 0 -10" 117 116 "$mod CTRL, J, resizeactive, 0 10" 117 + ] 118 + ++ lib.optionals cfg.enableFnKeys [ 119 + ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" 120 + ", XF86MonBrightnessUp, exec, brightnessctl set 5%+" 121 + ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" 122 + ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" 118 123 ]; 119 - bindm = [ 120 - "$mod, mouse:272, movewindow" # LMB 121 - "$mod, mouse:273, resizewindow" # RMB 122 - ]; 123 - misc = { 124 - enable_swallow = true; 125 - swallow_regex = "^(kitty|wezterm)"; 126 - }; 124 + bindl = lib.optionals cfg.enableFnKeys [ 125 + ", XF86AudioPlay, exec, playerctl play-pause" 126 + ", XF86AudioNext, exec, playerctl next" 127 + ", XF86AudioPrev, exec, playerctl previous" 128 + ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" 129 + ]; 130 + bindm = [ 131 + "$mod, mouse:272, movewindow" # LMB 132 + "$mod, mouse:273, resizewindow" # RMB 133 + ]; 134 + misc = { 135 + enable_swallow = true; 136 + swallow_regex = "^(kitty|wezterm)"; 127 137 }; 128 138 }; 139 + }; 129 140 130 - home.packages = with pkgs; [ 131 - grimblast 132 - nautilus 141 + home.packages = 142 + [ 143 + pkgs.grimblast 144 + pkgs.nautilus 145 + ] 146 + ++ lib.optionals cfg.enableFnKeys [ 147 + pkgs.brightnessctl 148 + pkgs.playerctl 133 149 ]; 134 - } 135 - (lib.mkIf cfg.enableFnKeys { 136 - wayland.windowManager.hyprland.settings.binde = [ 137 - ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" 138 - ", XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" 139 - ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" 140 - ", XF86MonBrightnessDown, exec, brightnessctl set 5%-" 141 - ", XF86MonBrightnessUp, exec, brightnessctl set 5%+" 142 - ]; 143 - }) 144 - ]); 150 + }; 145 151 }