# # wm independent hotkeys # # help super + F1 ~/.config/sxhkd/show_help.sh -m -3 # application menu super + a ~/.config/polybar/scripts/menu.sh # shutdown menu ctrl + alt + Delete ~/.config/polybar/scripts/sysmenu.sh # run launcher super + r rofi -show run # toggle sticky #super + q # bspc node -g sticky=on # Scratchpad Terminal super + e ~/.local/bin/scripts/Heads-Up-Display super + {equal,minus} layer.sh {+,-} # Scratchpad super + semicolon ~/.local/bin/scripts/scratchpad super + x ~/.local/bin/scripts/scratchpad #{~/.local/bin/scripts/scratchpad, bspc rule -a \* -o state=floating sticky=on floating=on rectangle=680x260+340+460} #sid=$(cat /tmp/scratchID);\ #cid=$(cat /tmp/calcID);\ #wmctrl -ir $sid -b toggle,hidden && wmctrl -ir $cid -b add,hidden; wmctrl -ia $sid #super + apostrophe # {~/.local/bin/scripts/scratchpad, bspc rule -a \* -o state=floating sticky=on floating=on rectangle=680x700+340+40} #super + x # ~/.local/bin/scripts/scratchpad # open st (simple terminal) #super + colon # st # Bitwarden-rofi super + shift + b rofi-rbw #bwmenu -c 15 # thunderbird mail #super + shift + m # thunderbird # discord super + shift + d discord # Spotify super + shift + y spotify # lockscreen super + Escape betterlockscreen -l # Show clipmenu alt + x rofi -modi "clipboard:greenclip print" -show clipboard -run-command '{cmd}' \ -location 1 \ -m -3 \ -no-show-icons \ -theme-str '* \{ font: 10px; \}' \ -theme-str 'listview \{ spacing: 0; \}' \ -theme-str 'window \{ width: 20em; \}' # terminal emulator super + Return #super + x alacritty #urxvt #$TERMINAL super + shift + z zathura # program launcher super + @space rofi -show drun # task switcher alt + Tab rofi -show window # browser super + w $BROWSER # neovim #super + v # kitty -e nvim # alacritty #super + x # kitty # file manager nnn super + n $TERMINAL -e nnn # file manager ranger super + shift + r $TERMINAL -e ranger # file manager pcmanfm (GUI) super + shift + f pcmanfm # Dictionary super + ctrl + w goldendict # Thesaurus super + shift + w artha # screenshots tool (selection) ctrl + Print flameshot gui -p ~/pictures/screenshots # screenshots tool (screen) shift + Print flameshot full -p ~/pictures/screenshots # turn off compositor super + shift + p toggleprogram "picom" "--experimental-backends" #picom-trans -c -10 #picom-trans -c +10 # make sxhkd reload its configuration files: super + ctrl + x pkill -USR1 -x sxhkd; dunstify "Sxhkd configuration reloaded" # # bspwm hotkeys # # quit/restart bspwm super + alt + shift + {q,r} bspc {quit,wm -r} #super + alt + {q,r} # bspc {quit,wm -r} # launch eww #super + ctrl + a # ~/.config/eww/launch_widgets.sh # close and kill super + d bspc node -c # 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 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} # 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" # xdo raise -N Plank; \ # xdo raise -a polybar-left_LVDS-1; \ # xdo raise -a polybar-bottom_LVDS-1 #polybar-msg cmd show #xdo raise -p $(pidof polybar-bottom_LDVS-1) #bspc node -t \~fullscreen super + {f} bspc node -t \~fullscreen #bspc window -t floating=off; \ #bspc node -t {fullscreen}; \ #xdo lower -N Plank # xdo lower -N Plank; \ # xdo lower -a polybar-left_LVDS-1; \ # xdo lower -a polybar-bottom_LVDS-1 #bspc node -t \~{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}' # Hide/Unhide Window #super + p # ~/.local/bin/scripts/winhide.sh # hide window super + comma bspc node -g hidden # unhide window super + period ${HOME}/.config/bspwm/bspcmd unhide # # 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 #shift + alt + {h,j,k,l} shift + alt + {h,j,k,l} bspwm_resize.sh {west,south,north,east} super + shift + s bspc node -t pseudo_tiled; bspc node -t floating && wtp 340 40 680 700 "$(pfw)" # floating into similar monocle layout super + shift + m bspc node -t pseudo_tiled; bspc node -t floating && wtp 10 40 1342 716 "$(pfw)" #bspc node -t pseudo_tiled; bspc node -t floating && wtp 1 26 1360 735 "$(pfw)" #super + shift + z # bspc node -t floating && wtp 340 40 680 700 "$(pfw)" # Spawn next window/program in floating mode ctrl + alt + 1 bspc rule -a '*' -o state=floating rectangle=680x700+340+40 # Spawn next window/program in smaller scratchpad like floating mode ctrl + alt + 2 bspc rule -a '*' -o state=floating rectangle=478x291+656+214 #super + e : {h,j,k,l} # bspwm_resize.sh expand {west,south,north,east} 50 # #super + shift + e : {h,j,k,l} # bspwm_resize.sh contract {west,south,north,east} 50 #super + colon # bspc rule -a scratchpad -o state=floating rectangle=680x700+340+40 # resize floating windows #shift + alt + {h,j,k,l} # xdo resize {-w -20,-h +20,-h -20,-w +20} # resize floating windows #shift + alt + {h,j,k,l} # xdo resize {-w -20,-h +20,-h -20,-w +20} # resize windows i3 style #shift + alt + {h,j,k,l} # ;bash ~/.config/sxhkd/resize {x -, y +, y -, x +} # expand a window by moving one of its side outward #alt + shift + {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 #alt + ctrl + {h,j,k,l} # bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} # expand/contract a window #alt + shift + {h,j,k,l} # bspc node -z {left -20 0 || bspc node -z right -20 0, \ # bottom 0 20 || bspc node -z top 0 20,\ # top 0 -20 || bspc node -z bottom 0 -20,\ # right 20 0 || bspc node -z left 20 0} # move a floating window #ctrl + alt + {h,j,k,l} # bspc node -v {-20 0,0 20,0 -20,20 0} # move a floating window #super + {Left,Down,Up,Right} # 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 ################################## # Control Multimedia # ################################## #super + {F6,F7,F8} # playerctl {previous,play-pause,next} {XF86AudioStop,XF86AudioPlay,XF86AudioPrev,XF86AudioNext} playerctl {stop,play-pause,previous,next} alt + shift + {Left,Up,Right} playerctl {previous,play-pause,next} # Brightness control XF86MonBrightness{Up,Down} brightnessctl s 5%{+,-} alt + {Up,Down} brightnessctl s 5%{+,-} # Volume control XF86Audio{Raise,Lower}Volume pulsemixer --change-volume {+,-}10 alt + {Right,Left} pulsemixer --change-volume {+,-}10 ##################################### # MPC-MPD Multimedia Keybindings # ##################################### super + {XF86AudioPrev,XF86AudioPlay,XF86AudioStop,XF86AudioNext} mpc {prev,toggle,stop,next} # xdotool {{{ # move mouse cursor alt + {a,s,w,d,q,e,z,c} xdotool mousemove_relative --sync {-- -24 0, 0 24, -- 0 -24, 24 0, -- -24 -24, -- 24 -24, -- -24 24,-- 24 24} # move mouse cursor with extra jump size ctrl + alt + {a,s,w,d,q,e,z,c} xdotool mousemove_relative --sync {-- -48 0, 0 48, -- 0 -48, 48 0, -- -48 -48, -- 48 -48, -- -48 48,-- 48 48} # move mouse cursor with lower jump size shift + alt + {a,s,w,d,q,e,z,c} xdotool mousemove_relative --sync {-- -8 0, 0 8, -- 0 -8, 8 0, -- -8 -8, -- 8 -8, -- -8 8,-- 8 8} # emulate left mouse click alt + i xdotool click --clearmodifiers 1 #alt + q # xdotool click --repeat 2 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 scroll button alt + p xdotool click --clearmodifiers 2 # emulate mouse right click alt + o xdotool click --clearmodifiers 3 # emulate mouse scroll up alt + m xdotool click --clearmodifiers 4 # emulate mouse scroll down alt + n xdotool click --clearmodifiers 5 # 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' # Emulate home/end keys #ctrl + alt + @{Up,Down} # xte 'keyup Control_L' 'keyup Alt_L' 'key {Home,End}' # Emulate home/end keys with shift #ctrl + alt + shift + {k,j} # xte 'keyup Control_L' 'keyup Alt_L' 'key {Home,End}' # Emulate delete key #super + BackSpace # xdotool key --clearmodifiers Delete #super + BackSpace # Delete