fix(gs/system): Explicitly add all default i3 keybindings
Something I changed - perhaps removing lib.mkOptionDefault - caused the *default* i3 keybindings (things like switching workspaces and toggling the split layout which I had not added myself) not to get added. This adds them back. Change-Id: I301a346eabb4f7fc4499b60a4c26956fb1e08b0d Reviewed-on: https://cl.tvl.fyi/c/depot/+/2218 Reviewed-by: glittershark <grfn@gws.fyi> Tested-by: BuildkiteCI
This commit is contained in:
		
							parent
							
								
									902bf5bdd9
								
							
						
					
					
						commit
						8ae4854de8
					
				
					 2 changed files with 72 additions and 46 deletions
				
			
		| 
						 | 
				
			
			@ -59,4 +59,6 @@ in {
 | 
			
		|||
      ssh mugwump sudo $system/bin/switch-to-configuration switch
 | 
			
		||||
    '')
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  xsession.windowManager.i3.config.keybindings.F7 = "exec lock";
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -17,6 +17,9 @@ let
 | 
			
		|||
        --output DP-4 --off
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  inherit (builtins) map;
 | 
			
		||||
  inherit (lib) mkMerge range;
 | 
			
		||||
in {
 | 
			
		||||
  options = with lib; {
 | 
			
		||||
    system.machine.wirelessInterface = mkOption {
 | 
			
		||||
| 
						 | 
				
			
			@ -51,6 +54,11 @@ in {
 | 
			
		|||
        # GIFs
 | 
			
		||||
        picom
 | 
			
		||||
        peek
 | 
			
		||||
 | 
			
		||||
        (pkgs.writeShellScriptBin "lock" ''
 | 
			
		||||
          playerctl pause
 | 
			
		||||
          ${pkgs.i3lock}/bin/i3lock -c 222222
 | 
			
		||||
        '')
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      xsession.scriptPath = ".xsession";
 | 
			
		||||
| 
						 | 
				
			
			@ -59,47 +67,60 @@ in {
 | 
			
		|||
        enable = true;
 | 
			
		||||
        config = {
 | 
			
		||||
          modifier = mod;
 | 
			
		||||
          keybindings = lib.mkOptionDefault rec {
 | 
			
		||||
            "${mod}+h" = "focus left";
 | 
			
		||||
            "${mod}+j" = "focus down";
 | 
			
		||||
            "${mod}+k" = "focus up";
 | 
			
		||||
            "${mod}+l" = "focus right";
 | 
			
		||||
            "${mod}+semicolon" = "focus parent";
 | 
			
		||||
          keybindings =
 | 
			
		||||
            mkMerge (
 | 
			
		||||
              (map
 | 
			
		||||
                (n: {
 | 
			
		||||
                  "${mod}+${toString n}" =
 | 
			
		||||
                    "workspace ${toString n}";
 | 
			
		||||
                  "${mod}+Shift+${toString n}" =
 | 
			
		||||
                    "move container to workspace ${toString n}";
 | 
			
		||||
                })
 | 
			
		||||
                (range 0 9))
 | 
			
		||||
            ++ [(rec {
 | 
			
		||||
              "${mod}+h" = "focus left";
 | 
			
		||||
              "${mod}+j" = "focus down";
 | 
			
		||||
              "${mod}+k" = "focus up";
 | 
			
		||||
              "${mod}+l" = "focus right";
 | 
			
		||||
              "${mod}+semicolon" = "focus parent";
 | 
			
		||||
 | 
			
		||||
            "${mod}+Shift+h" = "move left";
 | 
			
		||||
            "${mod}+Shift+j" = "move down";
 | 
			
		||||
            "${mod}+Shift+k" = "move up";
 | 
			
		||||
            "${mod}+Shift+l" = "move right";
 | 
			
		||||
              "${mod}+Shift+h" = "move left";
 | 
			
		||||
              "${mod}+Shift+j" = "move down";
 | 
			
		||||
              "${mod}+Shift+k" = "move up";
 | 
			
		||||
              "${mod}+Shift+l" = "move right";
 | 
			
		||||
 | 
			
		||||
            "${mod}+Shift+x" = "kill";
 | 
			
		||||
              "${mod}+Shift+x" = "kill";
 | 
			
		||||
 | 
			
		||||
            "${mod}+Return" = "exec alacritty";
 | 
			
		||||
              "${mod}+Return" = "exec alacritty";
 | 
			
		||||
 | 
			
		||||
            "${mod}+Shift+s" = "split h";
 | 
			
		||||
            "${mod}+Shift+v" = "split v";
 | 
			
		||||
              "${mod}+Shift+s" = "split h";
 | 
			
		||||
              "${mod}+Shift+v" = "split v";
 | 
			
		||||
              "${mod}+e" = "layout toggle split";
 | 
			
		||||
              "${mod}+w" = "layout tabbed";
 | 
			
		||||
              "${mod}+s" = "layout stacking";
 | 
			
		||||
 | 
			
		||||
            "${mod}+f" = "fullscreen";
 | 
			
		||||
              "${mod}+f" = "fullscreen";
 | 
			
		||||
 | 
			
		||||
            "${mod}+Shift+r" = "restart";
 | 
			
		||||
              "${mod}+Shift+r" = "restart";
 | 
			
		||||
 | 
			
		||||
            "${mod}+r" = "mode resize";
 | 
			
		||||
              "${mod}+r" = "mode resize";
 | 
			
		||||
 | 
			
		||||
            # Marks
 | 
			
		||||
            "${mod}+Shift+m" = ''exec i3-input -F "mark %s" -l 1 -P 'Mark: ' '';
 | 
			
		||||
            "${mod}+m" = ''exec i3-input -F '[con_mark="%s"] focus' -l 1 -P 'Go to: ' '';
 | 
			
		||||
              # Marks
 | 
			
		||||
              "${mod}+Shift+m" = ''exec i3-input -F "mark %s" -l 1 -P 'Mark: ' '';
 | 
			
		||||
              "${mod}+m" = ''exec i3-input -F '[con_mark="%s"] focus' -l 1 -P 'Go to: ' '';
 | 
			
		||||
 | 
			
		||||
            # Screenshots
 | 
			
		||||
            "${mod}+q" = "exec \"maim | xclip -selection clipboard -t image/png\"";
 | 
			
		||||
            "${mod}+Shift+q" = "exec \"maim -s | xclip -selection clipboard -t image/png\"";
 | 
			
		||||
            "${mod}+Ctrl+q" = "exec ${pkgs.writeShellScript "peek.sh" ''
 | 
			
		||||
              # Screenshots
 | 
			
		||||
              "${mod}+q" = "exec \"maim | xclip -selection clipboard -t image/png\"";
 | 
			
		||||
              "${mod}+Shift+q" = "exec \"maim -s | xclip -selection clipboard -t image/png\"";
 | 
			
		||||
              "${mod}+Ctrl+q" = "exec ${pkgs.writeShellScript "peek.sh" ''
 | 
			
		||||
              ${pkgs.picom}/bin/picom &
 | 
			
		||||
              picom_pid=$!
 | 
			
		||||
              ${pkgs.peek}/bin/peek || true
 | 
			
		||||
              kill -SIGINT $picom_pid
 | 
			
		||||
            ''}";
 | 
			
		||||
 | 
			
		||||
            # Launching applications
 | 
			
		||||
            "${mod}+u" = "exec ${pkgs.writeShellScript "rofi" ''
 | 
			
		||||
              # Launching applications
 | 
			
		||||
              "${mod}+u" = "exec ${pkgs.writeShellScript "rofi" ''
 | 
			
		||||
              rofi \
 | 
			
		||||
                -modi 'combi' \
 | 
			
		||||
                -combi-modi "window,drun,ssh,run" \
 | 
			
		||||
| 
						 | 
				
			
			@ -107,32 +128,35 @@ in {
 | 
			
		|||
                -show combi
 | 
			
		||||
            ''}";
 | 
			
		||||
 | 
			
		||||
            # Passwords
 | 
			
		||||
            "${mod}+p" = "exec rofi-pass -font '${decorationFont}'";
 | 
			
		||||
              # Passwords
 | 
			
		||||
              "${mod}+p" = "exec rofi-pass -font '${decorationFont}'";
 | 
			
		||||
 | 
			
		||||
            # Media
 | 
			
		||||
            "XF86AudioPlay" = "exec playerctl play-pause";
 | 
			
		||||
            "XF86AudioNext" = "exec playerctl next";
 | 
			
		||||
            "XF86AudioPrev" = "exec playerctl previous";
 | 
			
		||||
            "XF86AudioRaiseVolume" = "exec pulseaudio-ctl up";
 | 
			
		||||
            "XF86AudioLowerVolume" = "exec pulseaudio-ctl down";
 | 
			
		||||
            "XF86AudioMute" = "exec pulseaudio-ctl mute";
 | 
			
		||||
              # Media
 | 
			
		||||
              "XF86AudioPlay" = "exec playerctl play-pause";
 | 
			
		||||
              "XF86AudioNext" = "exec playerctl next";
 | 
			
		||||
              "XF86AudioPrev" = "exec playerctl previous";
 | 
			
		||||
              "XF86AudioRaiseVolume" = "exec pulseaudio-ctl up";
 | 
			
		||||
              "XF86AudioLowerVolume" = "exec pulseaudio-ctl down";
 | 
			
		||||
              "XF86AudioMute" = "exec pulseaudio-ctl mute";
 | 
			
		||||
 | 
			
		||||
            # Lock
 | 
			
		||||
            Pause = "exec \"sh -c 'playerctl pause; ${pkgs.i3lock}/bin/i3lock -c 222222'\"";
 | 
			
		||||
            F7 = Pause;
 | 
			
		||||
              # Lock
 | 
			
		||||
              Pause = "exec lock";
 | 
			
		||||
 | 
			
		||||
            # Screen Layout
 | 
			
		||||
            "${mod}+Shift+t" = "exec xrandr --auto";
 | 
			
		||||
            "${mod}+t" = "exec ${screenlayout.home}";
 | 
			
		||||
            "${mod}+Ctrl+t" = "exec ${pkgs.writeShellScript "fix_term.sh" ''
 | 
			
		||||
              # Sleep/hibernate
 | 
			
		||||
              "${mod}+Escape" = "exec systemctl suspend";
 | 
			
		||||
              "${mod}+Shift+Escape" = "exec systemctl hibernate";
 | 
			
		||||
 | 
			
		||||
              # Screen Layout
 | 
			
		||||
              "${mod}+Shift+t" = "exec xrandr --auto";
 | 
			
		||||
              "${mod}+t" = "exec ${screenlayout.home}";
 | 
			
		||||
              "${mod}+Ctrl+t" = "exec ${pkgs.writeShellScript "fix_term.sh" ''
 | 
			
		||||
              xrandr --output eDP-1 --off && ${screenlayout.home}
 | 
			
		||||
            ''}";
 | 
			
		||||
 | 
			
		||||
            # Notifications
 | 
			
		||||
            "${mod}+Shift+n" = "exec killall -SIGUSR1 .dunst-wrapped";
 | 
			
		||||
            "${mod}+n" = "exec killall -SIGUSR2 .dunst-wrapped";
 | 
			
		||||
          };
 | 
			
		||||
              # Notifications
 | 
			
		||||
              "${mod}+Shift+n" = "exec killall -SIGUSR1 .dunst-wrapped";
 | 
			
		||||
              "${mod}+n" = "exec killall -SIGUSR2 .dunst-wrapped";
 | 
			
		||||
            })]);
 | 
			
		||||
 | 
			
		||||
          fonts = [ decorationFont ];
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue