diff --git a/home/i3/default.nix b/home/i3/default.nix index 12ac4c0..053b26f 100644 --- a/home/i3/default.nix +++ b/home/i3/default.nix @@ -159,62 +159,69 @@ in names = [ "SpaceMono Nerd Font" ]; size = 10.0; }; - keybindings = lib.mkOptionDefault { - "${modifier}+h" = "focus left"; - "${modifier}+j" = "focus down"; - "${modifier}+k" = "focus up"; - "${modifier}+l" = "focus right"; - "${modifier}+Shift+h" = "move left"; - "${modifier}+Shift+j" = "move down"; - "${modifier}+Shift+k" = "move up"; - "${modifier}+Shift+l" = "move right"; - "${modifier}+v" = "split h"; - "${modifier}+Shift+v" = "split v"; - "${modifier}+s" = "layout stacking"; - "${modifier}+t" = "layout tabbed"; - "${modifier}+e" = "layout toggle split"; - "${modifier}+p" = "floating toggle"; - "${modifier}+Shift+p" = "focus mode_toggle"; - "${modifier}+Shift+c" = "reload"; - "${modifier}+Shift+r" = "restart"; - # mode - "${modifier}+r" = ''mode "${resizeMode}"''; - "${modifier}+Escape" = ''mode "${powerManagementMode}"''; - "${modifier}+Shift+Escape" = ''mode "${miscellaneousMode}"''; - # workspace - # "${modifier}+Shift+minus" = "move scratchpad"; - # "${modifier}+minus" = "scratchpad show"; - # media - "XF86AudioRaiseVolume" = - "exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ +1% && ${refresh_i3status}"; - "XF86AudioLowerVolume" = - "exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ -1% && ${refresh_i3status}"; - "XF86AudioMute" = - "exec --no-startup-id ${pactl} set-sink-mute @DEFAULT_SINK@ toggle && ${refresh_i3status}"; - "XF86AudioMicMute" = - "exec --no-startup-id ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle && ${refresh_i3status}"; - "XF86AudioPlay" = "exec --no-startup-id ${playerctl} play-pause"; - "XF86AudioPause" = "exec --no-startup-id ${playerctl} play-pause"; - "XF86AudioNext" = "exec --no-startup-id ${playerctl} next"; - "XF86AudioPrev" = "exec --no-startup-id ${playerctl} previous"; - # brightness - "XF86MonBrightnessUp" = "exec --no-startup-id ${light} s +10%"; - "XF86MonBrightnessDown" = "exec --no-startup-id ${light} s 10%-"; - # screenshot - "${modifier}+o" = - "exec --no-startup-id ${maim} -s ~/Pictures/screenshots/$(date +%Y-%m-%d-%H-%M-%S).png"; - "${modifier}+Shift+o" = - "exec --no-startup-id ${maim} -s | ${clipboard} -selection clipboard -t image/png"; - # others - "${modifier}+space" = "exec --no-startup-id ${dmenu}"; - "${modifier}+b" = "exec --no-startup-id ${terminal} -e ${yazi}"; - "${modifier}+z" = "exec --no-startup-id ${boomer}"; # tsoding's zoom - # "${modifier}+Shift+Return" = "exec ${second_terminal}"; - # reset - "${modifier}+Shift+e" = null; - "${modifier}+w" = null; - "${modifier}+d" = null; - }; + keybindings = lib.mkOptionDefault ( + { + "${modifier}+h" = "focus left"; + "${modifier}+j" = "focus down"; + "${modifier}+k" = "focus up"; + "${modifier}+l" = "focus right"; + "${modifier}+Shift+h" = "move left"; + "${modifier}+Shift+j" = "move down"; + "${modifier}+Shift+k" = "move up"; + "${modifier}+Shift+l" = "move right"; + "${modifier}+v" = "split h"; + "${modifier}+Shift+v" = "split v"; + "${modifier}+s" = "layout stacking"; + "${modifier}+t" = "layout tabbed"; + "${modifier}+e" = "layout toggle split"; + "${modifier}+p" = "floating toggle"; + "${modifier}+Shift+p" = "focus mode_toggle"; + "${modifier}+Shift+c" = "reload"; + "${modifier}+Shift+r" = "restart"; + # mode + "${modifier}+r" = ''mode "${resizeMode}"''; + "${modifier}+Escape" = ''mode "${powerManagementMode}"''; + "${modifier}+Shift+Escape" = ''mode "${miscellaneousMode}"''; + # workspace + # "${modifier}+Shift+minus" = "move scratchpad"; + # "${modifier}+minus" = "scratchpad show"; + # media + "XF86AudioRaiseVolume" = + "exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ +1% && ${refresh_i3status}"; + "XF86AudioLowerVolume" = + "exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ -1% && ${refresh_i3status}"; + "XF86AudioMute" = + "exec --no-startup-id ${pactl} set-sink-mute @DEFAULT_SINK@ toggle && ${refresh_i3status}"; + "XF86AudioMicMute" = + "exec --no-startup-id ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle && ${refresh_i3status}"; + "XF86AudioPlay" = "exec --no-startup-id ${playerctl} play-pause"; + "XF86AudioPause" = "exec --no-startup-id ${playerctl} play-pause"; + "XF86AudioNext" = "exec --no-startup-id ${playerctl} next"; + "XF86AudioPrev" = "exec --no-startup-id ${playerctl} previous"; + # brightness + "XF86MonBrightnessUp" = "exec --no-startup-id ${light} s +10%"; + "XF86MonBrightnessDown" = "exec --no-startup-id ${light} s 10%-"; + # screenshot + "${modifier}+o" = + "exec --no-startup-id ${maim} -s ~/Pictures/screenshots/$(date +%Y-%m-%d-%H-%M-%S).png"; + "${modifier}+Shift+o" = + "exec --no-startup-id ${maim} -s | ${clipboard} -selection clipboard -t image/png"; + # others + "${modifier}+space" = "exec --no-startup-id ${dmenu}"; + "${modifier}+b" = "exec --no-startup-id ${terminal} -e ${yazi}"; + "${modifier}+z" = "exec --no-startup-id ${boomer}"; # tsoding's zoom + # "${modifier}+Shift+Return" = "exec ${second_terminal}"; + # reset + "${modifier}+Shift+e" = null; + "${modifier}+w" = null; + "${modifier}+d" = null; + } + # neomutt (only if enabled) - focus existing or spawn new + // lib.optionalAttrs config.custom.email.neomutt { + "${modifier}+m" = + ''exec --no-startup-id sh -c 'i3-msg "[instance=ghostty][title=neomutt] focus" || ${terminal} -e neomutt' ''; + } + ); modes = let exitMode = {