# bspwm hotkeys # # Cleanly quit bspwm super + shift + a bspc quit 1 && pkill lemonpanel && pkill lemonbar # Show keybindings super + F1 $TERMINAL -e keybindings.sh # # Window manipulation # ______________ # Close window super + x bspc node -c # Kill window super + shift + x bspc node -k # Toggle tiling mode of window super + shift + t bspc node -t {pseudo_tiled,tiled} super + t {bspc node -t floating && window-placer $(bspc query -T -d | grep -o '"state":"floating"' | wc -l),bspc node -t tiled} # Force all windows of the desktop to tile super + ctrl + t bspcp tile # Force all windows of the desktop to float and arrange them super + ctrl + shift + t bspcp float # Toggle fullscreen super + shift + f bspc node -t {fullscreen,tiled} # Try to keep size and position of the selected window super + o bspc node -g private # Make window sticky super + i bspc node -g sticky # Lock a window from closing super + Escape bspc node -g locked # # Window moving and splitting # ______________ # Autopresel (split window in its largest dimension) super + ctrl + Return auto-presel # Presel window for splitting in certain direction alt + ctrl + {q,s,z,d} bspc node -p \~{west,south,north,east} -i alt + ctrl + {h,j,k,l} bspc node -p \~{west,south,north,east} alt + ctrl + {Left,Down,Up,Right} bspc node -p \~{west,south,north,east} # Presel the desktop for splitting in certain direction alt + shift + {q,s,z,d} bspc node @/ -p \~{west,south,north,east} alt + shift + {h,j,k,l} bspc node @/ -p \~{west,south,north,east} alt + shift + {Left,Down,Up,Right} bspc node @/ -p \~{west,south,north,east} # Set splitting ratio of windows alt + ctrl + {1-9} bspc node -o 0.{1-9} # Move current window to largest space or preselected area if there is one. super + Return windowpromoter # # Create a new "master area", splitting the whole desktop instead of just windows. # alt + Return # bspc node -n @/ # go (Shift=move) to desktop (and focus the monitor that the desktop is located on. Bspwm style) super + {_,shift + }{ampersand,eacute,quotedbl,apostrophe,parenleft,minus,egrave,underscore,ccedilla,agrave} bspc {desktop -f,node -d} ^{1-9,10} ## Alternative: i3 style behavior (focus nth, desktop of the focused monitor) #super + {ampersand,eacute,quotedbl,apostrophe,parenleft,minus,egrave,underscore,ccedilla,agrave} # focusdesktopofthismonitor {1-9} #super + shift + {ampersand,eacute,quotedbl,apostrophe,parenleft,minus,egrave,underscore,ccedilla,agrave} # movetodesktopofthismonitor {1-9,10} ## Another alternative: xmonad style desktops. You have 10 desktops shared between all monitors, ## and focusing a desktop focuses it on the currently focused monitor #super + {ampersand,eacute,quotedbl,apostrophe,parenleft,minus,egrave,underscore,ccedilla,agrave} # summondesktop.sh {1-9,10} #super + shift + {ampersand,eacute,quotedbl,apostrophe,parenleft,minus,egrave,underscore,ccedilla,agrave} # bspc node -d ^{1-9,10} # Select previous / next desktop super + {m,n} bspc desktop -f {prev.occupied,next.occupied} # cycle windows alt + {_,shift + }Tab bspc node -f {next,prev} # Go to specific window super + Tab WindowSelector #Focus windows by direction, works with multihead super + {q,s,z,d} focusmover {west,south,north,east} super + {h,j,k,l} focusmover {west,south,north,east} super + {Left,Down,Up,Right} focusmover {west,south,north,east} # Move tiled windows. Moving a tiled window to # preselected one moves into preselection instead. # Moving out of the screen should move the window to next monitor if possible super + shift + {q,s,z,d} windowgrabber {west,south,north,east} super + shift + {h,j,k,l} windowgrabber {west,south,north,east} # Different style of movement: transplant into window in chosen direction super + shift + {Left,Down,Up,Right} euclid_mover {west,south,north,east} #resize windows super + ctrl + {q,s,z,d} bspwm_resize.sh {west,south,north,east} super + ctrl + {h,j,k,l} bspwm_resize.sh {west,south,north,east} super + ctrl + {Left,Down,Up,Right} bspwm_resize.sh {west,south,north,east} # # Layout manipulation/desktop level controls # ______________ # Toggle monocle mode super + f bspc desktop -l next # Balance tree super + b bspc node @/ -B # Balance brother node. If you do this on biggest window of the desktop, it usually means balancing all windows with except the biggest. super + alt + b bspc node @brother -B # Undo balancing (equalize windows) super + ctrl + b bspc node @/ -E # Toggle automatic balancing of windows alt + b euclid_balancer # Mirror and flip leaves of tree super + {comma,period} bspc node @/ -F {horizontal,vertical} # Rotate leaves of tree super + shift + {comma,period} bspc node @/ -R {90,270} # Change window gap super + g bspc config -d focused window_gap {$gap,$(($gap+$gap)),$(($gap+$gap+$gap))} super + button{4,5} bspc config -d focused window_gap $((`bspc config -d focused window_gap` {+,-} 2 )) # # mouse bindings # __________________ ~button1 DidIClickDesktop.sh && gapgrab ~button2 DidIClickDesktop.sh && mygtkmenui -- .config/GTKmenu/BspwmDesktopMenui ~button3 DidIClickDesktop.sh && mygtkmenui -- .config/GTKmenu/LaunchMenu # Switch workspace by scrolling on the desktop. Causes scrolling issues on some systems. #~button4 # DidIClickDesktop.sh && bspc desktop -f next #~button5 # DidIClickDesktop.sh && bspc desktop -f prev ### Add or remove desktops by scrolling super + ctrl + button5 bspcp dsktp rm super + ctrl + button4 bspcp dsktp add # Spawn applications popup menu and manually tile selected # app where your mouse was when you opened the menu. Smartsplit only chooses # biggest dimension of the window, MouseLaunch only cares which edge is closer. # mod5 is alt_gr (first key right from space) on most keyboards. mod5 + @button1 MouseLaunch ; mygtkmenui -- .config/GTKmenu/LaunchMenu # smartsplit ; dboxmenu # Spawn window manipulation menu # Mod1 is alt # BspwmWindowMenu #mod1 + @button1 # mygtkmenui -- .config/GTKmenu/BspwmWindowMenui # # Touchpad "gestures" (depend on your touchpad driver, very likely to be unavailable) #_____________________ # # spawn programs # # run applications super + space dmenu_recent -i -l 14 -w 600 -y $PANEL_HEIGHT super + p st spt super + shift + Return st super + z st super + shift + z open-terminal-here super + r rofi-finder.sh super + shift + b $BROWSER super + e spacefm -n ctrl + alt + n switchkblayout super + shift + e st ranger super + shift + n newsboat Print scrot -s # # Media keys # XF86AudioRaiseVolume volume up XF86AudioLowerVolume volume down XF86AudioMute volume mute XF86MonBrightnessDown xbacklight -dec 10 XF86MonBrightnessUp xbacklight -inc 10 XF86Sleep systemctl suspend XF86AudioPlay playerctl play-pause XF86AudioPlay playerctl stop XF86AudioPrev playerctl previous XF86AudioNext playerctl next # make sxhkd reload its configuration files: super + shift + Escape pkill -USR1 -x sxhkd # In case bspwmrc fails to execute/you wish have plugged in a new monitor super + shift + r bspwmrc # Toggle compositing super + ctrl + space {pkill picom ,\ picom -b } # Remove receptacles super + BackSpace for i in $(bspc query -N -n .leaf.!window.local); do bspc node $i -k; done