################################################# # ███████╗██╗ ██╗██╗ ██╗██╗ ██╗██████╗ # # ██╔════╝╚██╗██╔╝██║ ██║██║ ██╔╝██╔══██╗ # # ███████╗ ╚███╔╝ ███████║█████╔╝ ██║ ██║ # # ╚════██║ ██╔██╗ ██╔══██║██╔═██╗ ██║ ██║ # # ███████║██╔╝ ██╗██║ ██║██║ ██╗██████╔╝ # # ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ # ################################################# #--------------------------------------------------------------- # # WM independent hotkeys # # Help super + F1 ~/.config/sxhkd/show_help.sh -m -3 # Application menu super + a ~/.config/polybar/scripts/menu.sh # Shutdown menu #super + alt + Delete # ~/.config/polybar/scripts/sysmenu.sh # lockscreen super + Escape betterlockscreen -l # Program launcher super + @space rofi -show drun # Run launcher (commands) super + r rofi -show run # Task switcher alt + Tab rofi -show window # Turn off compositor super + shift + p toggleprogram "picom" "--experimental-backends" #picom-trans -c -10 #picom-trans -c +10 # Right click menu ~button3 xqp 0 $(xdo id -N Bspwm -n root) && jgmenu_run # Terminal emulator #super + Return # $TERMINAL # Browser super + w $BROWSER # Keyboard super + o onboard # Show clipmenu #alt + x # parcellite #~/.scripts/clip.sh # Screenshots tool (selection) ctrl + Print screenshot crop # Screenshots tool (screen) shift + Print screenshot full # make sxhkd reload its configuration files: super + ctrl + x pkill -USR1 -x sxhkd; dunstify "Sxhkd configuration reloaded" # Kill window ctrl + alt + Escape xkill # Un/mount drives ctrl + alt + {m,u} {_,u}mnt #--------------------------------------------------------------- # # bspwm hotkeys # # Quit/restart bspwm super + alt + shift + {q,r} bspc {quit,wm -r} # Close and kill super + d bspc node -c # Alternate between the tiled and monocle layout super + m bspc desktop -l next super + z 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 window super + g bspc node -s biggest.window #--------------------------------------------------------------- # # state/flags # # Set the window state #super + {t,shift + t,s,f} # bspc node -t {tiled,pseudo_tiled,floating,fullscreen} # Floating into monocle layout super + shift + m bspc node -t pseudo_tiled; bspc node -t floating && wtp 5 40 $(($(bspc query -T -m | jq '.rectangle.width') * 98.9 / 100)) $(($(($(bspc query -T -m | jq '.rectangle.height') - $(bspc config top_padding))) * 97 / 100)) "$(pfw)" # Set the window state super + {t,shift + t,s} bspc node -t {tiled,pseudo_tiled,floating}; \ xdo raise -N Plank; \ xdo raise -N '*:*:Picture in picture'; \ xdo raise -N "Picture-in-Picture" # Toggle fullscreen super + {f} bspc node -t \~fullscreen # Toggle sticky #super + q # bspc node -g sticky=on # Set the node flags super + ctrl + {m,x,y,z} bspc node -g {marked,locked,sticky,private} # Move layers of windows above/below each other (script) super + {equal,minus} layer.sh {+,-} #--------------------------------------------------------------- # # 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}' # Hide window super + comma bspc node -g hidden # Unhide window (script) super + period ${HOME}/.config/bspwm/bspcmd unhide # Toggle the hidden state of the focused node super + q ~/.scripts/bspwm-toggle-visibility.sh #--------------------------------------------------------------- # # 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 # Close all receptacle super + shift + i for win in `bspc query -N -n .leaf.\!window`; do bspc node $win -k ; done; # Insert receptacle super + i; {h,j,k,l} bspc node --presel-dir {west,south,north,east} -i # Move to rectacle super + ctrl + i bspreceptacle # Balance nodes super + alt + i bspc node @/ -B #--------------------------------------------------------------- # # Move/resize # # Move a floating window or swap with any other adjacent tiled/pseudo_tiled window ctrl + alt + {h,j,k,l} { dir=west dx=-20 dy=0 \ , dir=south dx=0 dy=20 \ , dir=north dx=0 dy=-20 \ , dir=east dx=20 dy=0 \ }; \ bspc node --move "$dx" "$dy" || bspc node --swap $dir # Move a tiled window to any direction super + shift + {h,j,k,l} /path/to/bspwm_smart_move {west,south,north,east} # Rotate windows to different nodes super + ctrl + r bspc node @parent -R 90 # Resize tiled/floating windows (script) shift + alt + {h,j,k,l} bspwm_resize.sh {west,south,north,east} # Resize window into predefined pseudo_tiled window super + shift + s bspc node -t pseudo_tiled; bspc node -t floating && wtp 396 185 570 394 "$(pfw)" # Spawn next window/program into predefined floating window super + ctrl + s bspc rule -a '*' -o state=floating rectangle=720x480+320+200 # Spawn next window/program into predefined smaller Heads-Up-Display like floating window #ctrl + alt + 2 # bspc rule -a '*' -o state=floating rectangle=320x140+1030+32 # Spawn next window/program into another desktop super + alt + {1-9,0} bspc rule -a '*' -o desktop=^{1-9,10} #--------------------------------------------------------------- # # Multimedia # # Multimedia control {XF86AudioStop,XF86AudioPlay,XF86AudioPrev,XF86AudioNext} playerctl {stop,play-pause,previous,next} # Use arrow keys as multimedia keys alt + shift + {Left,Up,Right} playerctl {previous,play-pause,next} # Brightness control XF86MonBrightness{Up,Down} brightnessctl s 5%{+,-} # Use arrow keys as brightness keys alt + {Right,Left} brightnessctl s 5%{+,-} # Volume control XF86Audio{Raise,Lower}Volume pulsemixer --change-volume {+,-}5 # Use arrow keys as volume keys alt + {Up,Down} pulsemixer --change-volume {+,-}5 #--------------------------------------------------------------- # # Xdotool keys # # Move mouse cursor north, west, south, east alt + {w,a,s,d} xdotool mousemove_relative --sync {-- 0 -24, -- -24 0, 0 24, 24 0} # Move mouse cursor diagonally north-west, north-east, south-west, south-east shift + alt + {q,e,a,d} xdotool mousemove_relative --sync {-- -24 -24, -- 24 -24, -- -24 24,-- 24 24} # Emulate left mouse click alt + i xdotool click --clearmodifiers 1 # Emulate left mouse click select alt + shift + i xdotool mousedown 1 sleep 0.5 mousemove_relative --sync {-- -8 0, 0 8, -- 0 -8, 8 0} sleep 0.5 mouseup 1 # Emulate mouse right click alt + o xdotool click --clearmodifiers 3 # Emulate mouse scroll up alt + n xdotool click --clearmodifiers 4 # Emulate mouse scroll down alt + m xdotool click --clearmodifiers 5 # Emulate mouse scroll button alt + p xdotool click --clearmodifiers 2 # Emulate home key alt + ctrl + Left xdotool keyup Left key --clearmodifiers Home # Emulate end key alt + ctrl + Right xdotool keyup Right key --clearmodifiers End # Emulate delete key ~alt + BackSpace xte 'keyup Alt_L' 'key Delete' 'keydown Alt_L' #--------------------------------------------------------------- # # Programs # # Scratchpd super + semicolon ~/.scripts/scratchpad super + x ~/.scripts/scratchpad # Heads-Up-Display scratchpad terminal super + e ~/.scripts/heads-up-display # File manager nnn super + shift + n $TERMINAL -e nnn # File manager pcmanfm (GUI) super + shift + f pcmanfm # Bitwarden-rofi super + shift + b rofi-rbw # Thunderbird mail #super + shift + m # thunderbird # VirtualBox gui super + v /usr/bin/VirtualBox -- :0 vt1 # Discord super + shift + d discord # Spotify super + shift + y spotify # Book reader (zathura) super + shift + z zathura # Dictionary super + ctrl + w goldendict # Thesaurus super + shift + w artha # Suspend alt + F4 systemctl suspend && betterlockscreen --lock dimblur