#-----------------------------------------------------------Functions-------------------------------------------------------------- # lock screen super + F1 xset s activate # dmenu password selector super + F2 ~/.local/bin/pass-dmenu # dmenu authenticator super + F3 ~/.local/bin/oath-dmenu # ssh shell super + F4 ~/.local/bin/ssh-dmenu -p SSH: # player controls super + F5 playerctl stop super + F6 playerctl previous super + F7 playerctl play-pause super + F8 playerctl next # Wireguard super + F11 ~/.local/bin/wireguard-switch # dmenu calculator super + F12 = #-----------------------------------------------------------Audio & screen brightness & shutdown-------------------------------------------------------------- # Audio controls XF86AudioRaiseVolume pamixer --allow-boost -i 3 XF86AudioLowerVolume pamixer --allow-boost -d 3 XF86AudioMute pamixer -t XF86AudioPrev playerctl previous XF86AudioPlay playerctl play-pause XF86AudioNext playerctl next # Screen brightness controls XF86MonBrightnessUp brightnessctl set +10% XF86MonBrightnessDown brightnessctl set 10%- # Kill wlan & bluetooth XF86RFKill rfkill toggle all Print maimpick XF86AudioMedia firefox https://community.frame.work/ # Shutdown / reboot XF86Eject prompt "Shutdown computer?" "sudo -A shutdown -h now" shift + XF86Eject prompt "Reboot computer?" "sudo -A reboot" #-----------------------------------------------------------Screenshots-------------------------------------------------------------- shift + Print maimpick # desktop screenshot Print TIMESTAMP=$(date '+%Y-%m-%d-%H%M%S'); maim ~/Pictures/Screenshots/pic-full-$TIMESTAMP.png && notify-send -i ~/Pictures/Screenshots/pic-full-$TIMESTAMP.png "Desktop Screenshot pic-full-$TIMESTAMP.png" #-----------------------------------------------------------App shortcuts-------------------------------------------------------------- # terminal emulator super + {{ if eq .chassisType "desktop" }}Backspace{{ else }}Return{{- end }} $TERMINAL # program launcher super + {{ if eq .chassisType "desktop" }}Delete{{ else }}@space{{- end }} dmenu-frecency # make sxhkd reload its configuration files: super + Escape pkill -USR1 -x sxhkd # Misc apps super + ctrl + alt + {l, n, r, s, v, a, u} $TERMINAL --class float,float -e {lf, neomutt, /usr/bin/newsboat, spt, nvim, ~/.local/bin/audit, ~/.local/bin/update-{{ .chezmoi.osRelease.id }}} super + ctrl + alt + {b, e, S} {brave, emacs, spotify} super + ctrl + alt + {t} ~/.local/bin/tldr-dmenu super + ctrl + alt + {m} ~/.local/bin/dmenuunicode super + ctrl + alt + {w} alacritty --class fullscreen,fullscreen -e ~/.local/bin/wttr-and-wait # clipboard manager super + ctrl + {c} clipmenu #-----------------------------------------------------------Bspwm-------------------------------------------------------------- # quit/restart bspwm super + alt + {q,r} bspc {quit,wm -r} # close and kill super + {_,shift + }w bspc node -{c,k} # alternate between the tiled and monocle layout super + m bspc desktop -l next # send the newest marked node to the newest preselected node super + y bspc node newest.marked.local -n newest.!automatic.local # swap the current node and the biggest node super + g bspc node -s biggest # 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 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 in the current desktop super + {_,shift + }c bspc node -f {next,prev}.local # 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}' # 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 # 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} # Swap nodes the tree from the current nodes parent super + control + {Up, Down} bspc node @parent -C {forward, backward} # Rotate the tree from the current nodes parent super + control + {Right, Left} bspc node @parent --rotate {90,270}