diff --git a/config/users/alex/default.nix b/config/users/alex/default.nix index 7699b48..9511f5d 100644 --- a/config/users/alex/default.nix +++ b/config/users/alex/default.nix @@ -36,8 +36,8 @@ nextcloud-client nixpkgs-fmt obsidian + pavucontrol picard - polybar rawtherapee rofi spotify @@ -69,6 +69,7 @@ border_width = 10; }; extraConfig = '' + bspc monitor -d I II III IV V polybar & ''; startupPrograms = [ ]; @@ -79,11 +80,88 @@ { enable = true; keybindings = { + "Super_L; @Super_L" = "rofi -show drun"; "super + Return" = "kitty"; - "super + @space" = "rofi"; + + # + # bspwm hotkeys + # + + # quit/restart bspwm + "super + alt + {q,r}" = + "bspc {quit,wm -r}"; + + # close and kill + "super + {_,shift + }w" = + "bspc node -{c,k}"; + + # + # state/flags + # + + # set the window state + "super + {t,shift + t,s,f}" = + "bspc node -t {tiled,pseudo_tiled,floating,fullscreen}"; + + # set the node flags + "super + ctrl + {m,x,y,z}" = + "bspc node -g {marked,locked,sticky,private}"; + + # + # focus/swap + # + + # focus the node in the given direction + "super + {_,shift + }{h,j,k,l}" = + "bspc node -{f,s} {west,south,north,east}"; + + # focus the node for the given path jump + "super + {p,b,comma,period}" = + "bspc node -f @{parent,brother,first,second}"; + # focus the next/previous window in the current desktop + "super + {_,shift + }c" = "bspc node -f {next,prev}.local.!hidden.window"; + + # focus the next/previous desktop in the current monitor + "super + bracket{left,right}" = + "bspc desktop -f {prev,next}.local"; + + # focus the last node/desktop + "super + {grave,Tab}" = "bspc {node,desktop} -f last"; + + # focus the older or newer node in the focus history + "super + {o,i}" = '' + bspc wm -h off; \ + bspc node {older,newer} -f; \ + bspc wm -h on + ''; + + # focus or send to the given desktop + "super + {_,shift + }{1-9,0}" = + "bspc {desktop -f,node -d} '^{1-9,10}'"; + + # + # move/resize + # + + # expand a window by moving one of its side outward + "super + alt + {h,j,k,l}" = + " bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}"; + + # contract a window by moving one of its side inward + "super + alt + shift + {h,j,k,l}" = + "bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}"; + + # move a floating window + "super + {Left,Down,Up,Right}" = + " bspc node -v {-20 0,0 20,0 -20,20 0}"; }; }; + services.polybar = { + enable = true; + config = "${pkgs.polybar}/etc/polybar/config.ini"; + script = "polybar &"; + }; # User software configurations programs = { bash = { diff --git a/quick-switch.sh b/quick-switch.sh index 0726d2b..ac2b90e 100755 --- a/quick-switch.sh +++ b/quick-switch.sh @@ -54,5 +54,6 @@ else echo "Committing flake and pushing..." commit_and_apply fi + echo "\nOperation completed." fi