diff options
| author | quentin@aristote.fr <quentin@aristote.fr> | 2023-03-11 16:20:19 +0100 |
|---|---|---|
| committer | quentin@aristote.fr <quentin@aristote.fr> | 2023-03-12 16:43:59 +0100 |
| commit | 437fe775219d98fe6170889d250ce20d2ea80d30 (patch) | |
| tree | 7a861bb1d2931b07894b6d96fd7fbb61a4399046 /modules/home-manager/personal/gui/x/i3 | |
| parent | 8ff582da73b9c4b401dfdfedecba5d7b0172f101 (diff) | |
home: i3: keybingings: reorganize and add rofi applets
Diffstat (limited to 'modules/home-manager/personal/gui/x/i3')
| -rw-r--r-- | modules/home-manager/personal/gui/x/i3/keybindings.nix | 70 |
1 files changed, 49 insertions, 21 deletions
diff --git a/modules/home-manager/personal/gui/x/i3/keybindings.nix b/modules/home-manager/personal/gui/x/i3/keybindings.nix index 3132462..26af10f 100644 --- a/modules/home-manager/personal/gui/x/i3/keybindings.nix +++ b/modules/home-manager/personal/gui/x/i3/keybindings.nix @@ -1,47 +1,75 @@ { config, lib, pkgs, ... }: let + # i3 pretty-printing + exec = script: ''exec "${script}";''; + execRofiShow = modi: exec "${rofiShow} ${modi}"; + modifier = "Mod4"; + mkTempMode = lib.mapAttrs (_: value: "mode default; ${value}"); + + # scripts brightnessctl = "${pkgs.brightnessctl}/bin/brightnessctl"; brightnessctlKbd = "${brightnessctl} --device dell:kbd_backlight"; volumectl = "${pkgs.pulseaudio}/bin/pactl"; screenshot = "${pkgs.shutter}/bin/shutter"; - - modifier = "Mod4"; + rofiShow = "rofi -show"; + rofiPulseSelect = "${pkgs.rofi-pulse-select}/bin/rofi-pulse-select"; + rofiBluetooth = "${pkgs.rofi-bluetooth}/bin/rofi-bluetooth"; + rofiPowerMenu = "${pkgs.rofi-power-menu}/bin/rofi-power-menu"; in { xsession.windowManager.i3.config = { inherit modifier; - keybindings = lib.mkOptionDefault { + modes = lib.mkOptionDefault { # launching apps - "${modifier}+Control+Return" = ''exec "emacsclient --create-frame"''; - "${modifier}+Shift+Return" = ''exec "$BROWSER"''; - "${modifier}+d" = lib.mkIf config.programs.rofi.enable - ''exec "rofi -modi drun,filebrowser,run,window -show drun"''; + launch = mkTempMode ({ + "e" = exec "emacsclient --create-frame"; + "b" = exec "$BROWSER"; + } // lib.optionalAttrs config.programs.rofi.enable { + "c" = execRofiShow "calc"; + "d" = execRofiShow "drun"; + "f" = execRofiShow "filebrowser"; + "m" = execRofiShow "emoji"; + "r" = execRofiShow "run"; + "t" = execRofiShow "top"; + "w" = execRofiShow "window"; + "Escape" = ""; + }); + }; + + keybindings = lib.mkOptionDefault ({ + "${modifier}+space" = "mode launch"; + } // lib.optionalAttrs config.programs.rofi.enable { + "${modifier}+F1" = exec "${rofiPulseSelect} sink"; + "${modifier}+F4" = exec "${rofiPulseSelect} source"; + "${modifier}+Print" = exec rofiBluetooth; + "${modifier}+Delete" = + exec "${rofiShow} menu -modi menu:${rofiPowerMenu}"; + } // { # exiting - "${modifier}+Shift+e" = "exec i3-msg exit"; - "${modifier}+l" = - "exec ${config.personal.home.lockscreen}"; + "${modifier}+Shift+e" = exec "i3-msg exit"; + "${modifier}+l" = exec config.personal.home.lockscreen; # media keys - "XF86MonBrightnessUp" = "exec ${brightnessctl} set 5%+"; - "XF86MonBrightnessDown" = "exec ${brightnessctl} set 5%-"; + "XF86MonBrightnessUp" = exec "${brightnessctl} set 5%+"; + "XF86MonBrightnessDown" = exec "${brightnessctl} set 5%-"; "XF86AudioRaiseVolume" = - "exec ${volumectl} set-sink-volume @DEFAULT_SINK@ +5%"; + exec "${volumectl} set-sink-volume @DEFAULT_SINK@ +5%"; "XF86AudioLowerVolume" = - "exec ${volumectl} set-sink-volume @DEFAULT_SINK@ -5%"; + exec "${volumectl} set-sink-volume @DEFAULT_SINK@ -5%"; "XF86AudioMute" = "exec ${volumectl} set-sink-mute @DEFAULT_SINK@ toggle"; "Shift+XF86AudioRaiseVolume" = - "exec ${volumectl} set-source-volume @DEFAULT_SOURCE@ +5%"; + exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ +5%"; "Shift+XF86AudioLowerVolume" = - "exec ${volumectl} set-source-volume @DEFAULT_SOURCE@ -5%"; + exec "${volumectl} set-source-volume @DEFAULT_SOURCE@ -5%"; "XF86AudioMicMute" = - "exec ${volumectl} set-source-mute @DEFAULT_SOURCE@ toggle"; + exec "${volumectl} set-source-mute @DEFAULT_SOURCE@ toggle"; "XF86KbdBrightnessUp" = '' - exec ${brightnessctlKbd} set \ - $(( $(${brightnessctlKbd} max) - $(${brightnessctlKbd} get) )) + exec {brightnessctlKbd} set \ + $(( $(${brightnessctlKbd} max) - $(${brightnessctlKbd} get) )) ''; - "Print" = "exec ${screenshot}"; - }; + "Print" = exec screenshot; + }); }; } |
