# # wm independent hotkeys # # terminal emulator super + Return urxvt # scratchpad super + grave xdotool search --onlyvisible --classname scratchpad windowunmap \ || xdotool search --classname scratchpad windowmap \ || termite --name scratchpad --class scratchpad --geometry 400x120 # program launcher super + space rofi -show run # make sxhkd reload its configuration files: super + Escape pkill -USR1 -x sxhkd # # bspwm hotkeys # # quit bspwm normally super + alt + Escape bspc quit # close and kill super + {_,shift + }w bspc node -{c,k} # alternate between the tiled and monocle layout super + m bspc desktop -l next # if the current node is automatic, send it to the last manual, otherwise pull the last leaf super + y bspc query -N -n focused.automatic && bspc node -n last.!automatic || bspc node last.leaf -n focused # swap the current node and the biggest node super + g bspc node -s biggest # # 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 + {x,y,z} bspc node -g {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 node super + {_,shift + }c bspc node -f {next,prev} # focus the next/previous desktop super + bracket{left,right} bspc desktop -f {prev,next} # focus the last node/desktop super + Tab bspc node -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}' # # preselect # # preselect the direction super + ctrl + {h,j,k,l} bspc node -p {west,south,north,east} # preselect the ratio super + ctrl + {1-9} bspc node -o 0.{1-9} # cancel the preselection for the focused node super + ctrl + space bspc node -p cancel # cancel the preselection for the focused desktop super + ctrl + shift + space bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel # # resize tiled/floating # # expand the tiled space in the given direction super + alt + {h,j,k,l} bspc node {@west -r -10,@south -r +10,@north -r -10,@east -r +10} # contract the tiled space in the given direction super + alt + shift + {h,j,k,l} bspc node {@east -r -10,@north -r +10,@south -r -10,@west -r +10} # move a floating window super + {Left,Down,Up,Right} xdo move {-x -20,-y +20,-y -20,-x +20} # # pointer focus/move/resize # # focus ~button1 bspc pointer -g focus # start move/resize super + button{1-3} bspc pointer -g {move,resize_side,resize_corner} # end move/resize super + @button{1-3} bspc pointer -u # # Volume # super + shift + {Down,Up} amixer set Master 5%{-,+}; \ echo "V$(amixer get Master | sed -n 's/^.*\[\([0-9]\+\)%.*$/\1/p' | uniq)" > /tmp/panel-fifo super + ctrl + shift + Up amixer set Master unmute; \ echo "V$(amixer get Master | sed -n 's/^.*\[\([0-9]\+\)%.*$/\1/p' | uniq)" > /tmp/panel-fifo super + ctrl + shift + Down amixer set Master mute; \ echo "V0" > /tmp/panel-fifo