{ cfg, pkgs, modifier }: { # Start a terminal # TODO: this might fail "${modifier}+Return" = "exec ${cfg.term}/bin/${cfg.term.pname}"; # Area screenshot support "${modifier}+Shift+9" = "exec --no-startup-id ${pkgs.libkookie-i3-scrcap}"; # Close individual windows "${modifier}+Shift+q" = "kill"; # Float current window "${modifier}+Shift+space" = "floating toggle"; "${modifier}+space" = "focus toggle"; # Full-screen current window "${modifier}+f" = "fullscreen"; # Start software on or workspace "${modifier}+e" = if cfg.bar-location == "top" then "exec ${pkgs.dmenu}/bin/dmenu_run -b" else "exec ${pkgs.dmenu}/bin/dmenu_run"; # Switch to workspace (optionally take current window) "${modifier}+o" = "exec ${pkgs.libkookie-i3-switch}"; "${modifier}+Shift+o" = "exec ${pkgs.libkookie-i3-move}"; # Rename workspaces "${modifier}+Ctrl+r" = "exec ${pkgs.libkookie-i3-rename}"; # Move focus around - vim style "${modifier}+h" = "focus left"; "${modifier}+t" = "focus up"; "${modifier}+n" = "focus down"; "${modifier}+s" = "focus right"; # Move focus around - boring style "${modifier}+Up" = "focus up"; "${modifier}+Down" = "focus down"; "${modifier}+Left" = "focus left"; "${modifier}+Right" = "focus right"; # Move windows - vim style "${modifier}+Shift+h" = "move left"; "${modifier}+Shift+t" = "move up"; "${modifier}+Shift+n" = "move down"; "${modifier}+Shift+s" = "move right"; # Move windows - boring style "${modifier}+Shift+Up" = "move up"; "${modifier}+Shift+Down" = "move down"; "${modifier}+Shift+Left" = "move left"; "${modifier}+Shift+Right" = "move right"; # Move workspaces between multi-monitor setups "${modifier}+Ctrl+Shift+Up" = "move workspace to output up"; "${modifier}+Ctrl+Shift+Down" = "move workspace to output down"; "${modifier}+Ctrl+Shift+Left" = " move workspace to output left"; "${modifier}+Ctrl+Shift+Right" = "move workspace to output right"; # Define split behaviours "${modifier}+2" = "split h"; "${modifier}+1" = "split v"; # Some layout modifiers "${modifier}+3" = "layout default"; "${modifier}+4" = "layout tabbed"; "${modifier}+5" = "layout stacked"; # Select parent container "${modifier}+a" = "focus parent"; }