# node manager shortcuts # focus the node for the given path jump super + {p,b,comma,period} bspc node -f @{parent,brother,first,second} # set modes to tiled/floating for current node super + {s,f} bspc node -t {tiled,floating} # set modes to pseudo_tiled/fullscreen for current node super + shift + {s,f} bspc node -t {pseudo_tiled,fullscreen -l above} # focus the last node/desktop super + {grave,Tab} bspc {node,desktop} -f last # focus the next floating node super + ctrl + f bspc node -f next.floating # swap positions with the previous node super + apostrophe bspc node -s last # swap the current node with the biggest node on the current desktop super + m bspc node -s biggest # move/swap between nodes using vim-style arrows super + {_,shift + }{h,j,k,l} bspc node -{f,s} {west,south,north,east} # swap previous/next desktops super + bracket{left,right} bspc desktop -f {prev,next} # preselect the splitting area for the current node super + ctrl + {h,j,k,l} bspc node -p {west,south,north,east} # clear the splitting area super + ctrl + {_,shift + }space bspc {node -p cancel,desktop -c} # expand the current node super + alt + {h,j,k,l} bspc node {@west -r -10,@south -r +10,@north -r -10,@east -r +10} # shrink the current node super + alt + shift + {h,j,k,l} bspc node {@east -r -10,@north -r +10,@south -r -10,@west -r +10} # set node split ratio super + ctrl + {1-9} bspc node -o 0.{1-9} # move a floating window very slowly super + shift + {Left,Down,Up,Right} bspc node --move {-1 0, 0 1, 0 -1, 1 0} # move a floating window super + {Left,Down,Up,Right} bspc node --move {-20 0, 0 20, 0 -20, 20 0} # focus/move node to the selected desktop super + {_,shift + }{1-9,0} bspc {desktop -f,node -d} {1-9,10} # # focus clicked node ~button1 bspc node -f pointed # set the current node's dimensions to 1920x1080 (for streaming) super + shift + alt + ctrl + s wres1080 # # mouse controls for node movement and resizing # super + button{1-3} # bspc pointer -g {move,resize_side,resize_corner} # # simulate mouse2 # shift + super + button1 # bspc pointer -g resize_corner # # ??? # super + !button{1-3} # bspc pointer -t %i %i # # ??? # super + @button{1-3} # bspc pointer -u # change node gap and desktop padding super + plus bspc config -d focused window_gap $((`bspc config -d focused window_gap` + 5 )) super + equal bspc config -m $(bspc query -M | head -n 1) top_padding $TOP_BAR_PADDING; bspc config -m $(bspc query -M | head -n 1) bottom_padding $BOTTOM_BAR_PADDING; bspc config -d focused window_gap $WINDOW_GAP super + minus bspc config -d focused window_gap $((`bspc config -d focused window_gap` - 5 )) super + alt + r bspc config -m $(bspc query -M | head -n 1) bottom_padding $BOTTOM_BAR_PADDING; bspc config -m $(bspc query -M | head -n 1) top_padding $TOP_BAR_PADDING; bspc config -d focused window_gap $WINDOW_GAP super + alt + equal bspc config -d focused bottom_padding 0; bspc config -d focused top_padding 0; bspc config -d focused left_padding 0; bspc config -d focused right_padding 0 super + alt + plus bspc config -d focused bottom_padding $(expr $(bspc config -d focused bottom_padding) + 5); bspc config -d focused top_padding $(expr $(bspc config -d focused top_padding) + 5); bspc config -d focused left_padding $(expr $(bspc config -d focused left_padding) + 5); bspc config -d focused right_padding $(expr $(bspc config -d focused right_padding) + 5) super + ctrl + alt + k bspc config -d focused bottom_padding $(expr $(bspc config -d focused bottom_padding) - 5); bspc config -d focused top_padding $(expr $(bspc config -d focused top_padding) - 5) super + ctrl + alt + j bspc config -d focused bottom_padding $(expr $(bspc config -d focused bottom_padding) + 5); bspc config -d focused top_padding $(expr $(bspc config -d focused top_padding) + 5) super + ctrl + alt + h bspc config -d focused left_padding $(expr $(bspc config -d focused left_padding) - 5); bspc config -d focused right_padding $(expr $(bspc config -d focused right_padding) - 5) super + ctrl + alt + l bspc config -d focused left_padding $(expr $(bspc config -d focused left_padding) + 5); bspc config -d focused right_padding $(expr $(bspc config -d focused right_padding) + 5) super + alt + plus bspc config -d focused bottom_padding $(expr $(bspc config -d focused bottom_padding) + 5); bspc config -d focused top_padding $(expr $(bspc config -d focused top_padding) + 5); bspc config -d focused left_padding $(expr $(bspc config -d focused left_padding) + 5); bspc config -d focused right_padding $(expr $(bspc config -d focused right_padding) + 5) super + ctrl + alt + shift + space bspc config -d focused bottom_padding 0; bspc config -d focused top_padding 0; bspc config -d focused left_padding 0; bspc config -d focused right_padding 0 super + ctrl + alt + space bspc config -d focused bottom_padding 200; bspc config -d focused top_padding 200; bspc config -d focused left_padding 400; bspc config -d focused right_padding 400 super + alt + minus bspc config -d focused bottom_padding $(expr $(bspc config -d focused bottom_padding) - 5) # rotate the current node super + r bspc node -R 90 # balance the current node's leaves super + shift + b bspc node -B # balance the current node's sibling leaves super + ctrl + b bspc node -f parent && bspc node -B # wm-independant shortcuts # spawn a transparent node super + alt + t "$TERMINAL" && compton-trans -c -o 0 # make current node transparent super + t compton-trans -c -o 0 # make current node fully opaque super + shift + t compton-trans -c -o 100 # swap sxhkd config with an alternate file and reload the new one # super + shift + alt + ctrl + r # if [ -e ~/.config/sxhkd/altsxhkdrc ]; then mv ~/.config/sxhkd/sxhkdrc ~/.config/sxhkd/origsxhkdrc && mv ~/.config/sxhkd/altsxhkdrc ~/.config/sxhkd/sxhkdrc && pkill -USR1 -x sxhkd; fi # spawn a terminal super + Return "$TERMINAL" # spawn a rock-solid and reliable terminal for when I break things super + alt + Return urxvt # spawn a floating terminal super + shift + Return bspc rule -a '*' -o state=floating && "$TERMINAL" # spawn the app launcher super + space app-launcher -modi run -show run # lock the desktop super + ctrl + shift + l dm-tool switch-to-greeter # $SHELL -c '$DOTFILES_PATH/env/x/screensaver/lock.sh' # spawn gui file explorer super + e thunar # volumes controls and media navigation for media keys {_,shift + }XF86AudioLowerVolume amixer -D pulse sset Master 5%- # pulseaudio-ctl lower # ADJ={10,1} && amixer -c 1 sset Speaker $ADJ%- && amixer -c 1 sset Headphone $ADJ%- && amixer -c 1 sset Master $ADJ%- && update_bar_MasterVolume {_,shift + }XF86AudioRaiseVolume amixer -D pulse sset Master 5%+ # pulseaudio-ctl raise # ADJ={10,1} && amixer -c 1 sset Speaker $ADJ%+ && amixer -c 1 sset Headphone $ADJ%+ && amixer -c 1 sset Master $ADJ%+ && update_bar_MasterVolume XF86AudioMute amixer -D pulse sset Master toggle # pulseaudio-ctl mute # amixer -c 1 sset Master toggle && update_bar_MasterVolume XF86AudioPlay mpc toggle XF86AudioNext mpc next XF86AudioPrev mpc prev # monitor brightness controls for monitor birghtness keys {_,shift + }XF86MonBrightnessUp xbacklight + 10 {_,shift + }XF86MonBrightnessDown xbacklight - 10 # open rofi as a window switcher super + w "app-launcher" -modi window,run -show window super + shift + v sh -c 'kill -USR1 $(cat "/var/run/user/$UID/polybar-mic-script.sh.pid")' super + shift + v sh -c 'kill -USR1 $(cat "/var/run/user/$UID/polybar-mic-script.sh.pid")' super + shift + e rofimoji --insert-with-clipboard --rofi-args='--sort -sorting-method fzf' super + shift + p rofi-pass # close the current application super + c bspc node -c # kill the current application super + shift + c bspc node -k # kill the wm, if alt is held, it will reload instead of truly quitting... # I think? super + ctrl + {alt +,_} Escape sh -c '{bspc wm -d > "$BSPWM_STATE_FILE" && bspc quit, bspc quit 1}' # make sxhkd reload its configuration files: super + Escape pkill -USR1 -x sxhkd super + ctrl + c bspc rule -a '*' -o state=floating && kitty -o remember_window_size=no -o initial_window_width=66c -o initial_window_height=10c sh -c "cal -n 3 && printf 'Press [ENTER] to close.' && read" super + ctrl + p bspc rule -a '*' -o state=floating && \ kitty -o remember_window_size=no -o initial_window_width=122c -o initial_window_height=40c sh -c "{ env FZFP_PASS_OPTS='' FZFP_HEIGHT=100% fzfp | head -n 1 | sd '\n\$' '' | clip; } &"