From 26428de7b5bdd2480a1c225df6a5429b27214ed0 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> Date: Wed, 18 Sep 2024 22:52:13 +0530 Subject: Add descriptions to sxhkd keybindings and a rofi keybindings help popup. --- sxhkd/default.nix | 72 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 21 deletions(-) (limited to 'sxhkd') diff --git a/sxhkd/default.nix b/sxhkd/default.nix index 8a987b1..cdb012a 100644 --- a/sxhkd/default.nix +++ b/sxhkd/default.nix @@ -3,37 +3,67 @@ { services.sxhkd.enable = true; - services.sxhkd.keybindings = { - "super + r" = "rofi -show run"; - "super + t" = "alacritty"; - "super + f" = "alacritty -t 'File Explorer' --class 'File Explorer' -e lf"; - "super + q" = "bspc node -c"; + services.sxhkd.keybindings = + let + withDescription = keybinding: description: "# ${description}\n${keybinding}"; + in { + ${(withDescription + "super + h" + "Show keybindings.")} = ''awk '/^#/{desc=substr($0, 3)} /^[a-z]/ { cmd=$0; print cmd " : " desc }' ~/.config/sxhkd/sxhkdrc | rofi -dmenu -i -p "Keybindings"''; + + ${(withDescription + "super + r" + "Launch rofi.")} = "rofi -show run"; + + ${(withDescription + "super + t" + "Launch terminal.")} = "alacritty"; + + ${(withDescription + "super + f" + "Launch File Explorer.")} = "alacritty -t 'File Explorer' --class 'File Explorer' -e lf"; + + ${(withDescription + "super + q" + "Kill current window.")} = "bspc node -c"; # switch desktops - "super + {1-9,0}" = "bspc desktop -f {1-9,10}"; + ${(withDescription + "super + {1-9,0}" + "Switch workspace.")} = "bspc desktop -f {1-9,10}"; # move window to desktop - "super + shift + {1-9,0}" = "bspc node -d {1-9,10} --follow"; + ${(withDescription + "super + shift + {1-9,0}" + "Move window to workspace.")} = "bspc node -d {1-9,10} --follow"; # tiled - "super + n" = "bspc node focused -t tiled"; + ${(withDescription + "super + n" + "Set current window to tiled mode.")} = "bspc node focused -t tiled"; # floating - "super + d" = "bspc node focused -t floating"; + ${(withDescription + "super + d" + "Set current window to floating mode.")} = "bspc node focused -t floating"; # fullscreen - "super + m" = "bspc node focused -t fullscreen"; - - # resize windows - "super + alt + {h,j,k,l}" = '' - {bspc node @parent/second -z left -20 0; \ - bspc node @parent/first -z right -20 0, \ - bspc node @parent/second -z top 0 +20; \ - bspc node @parent/first -z bottom 0 +20, \ - bspc node @parent/first -z bottom 0 -20; \ - bspc node @parent/second -z top 0 -20, \ - bspc node @parent/first -z right +20 0; \ - bspc node @parent/second -z left +20 0} + ${(withDescription + "super + m" + "Set current window to full screen mode.")} = "bspc node focused -t fullscreen"; + + # resize windows (the indentation for each line is required to work with the help prompt) + ${(withDescription + "super + alt + {h,j,k,l}" + "Resize current window.")} = '' + {bspc node @parent/second -z left -20 0; \ + bspc node @parent/first -z right -20 0, \ + bspc node @parent/second -z top 0 +20; \ + bspc node @parent/first -z bottom 0 +20, \ + bspc node @parent/first -z bottom 0 -20; \ + bspc node @parent/second -z top 0 -20, \ + bspc node @parent/first -z right +20 0; \ + bspc node @parent/second -z left +20 0} ''; }; } -- cgit v1.2.3