# 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 super + h bspc node -g hidden super + H WindowMinimiser # 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 # tonitch: I don't use that and it's more combersome when it happen # 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} "to work with azerty" alt + ctrl + {ampersand,eacute,quotedbl,apostrophe,parenleft,minus,egrave,underscore,ccedilla} 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,section,egrave,exclam,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+$cgap)),$(($gap+$cgap+$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 # Enable notifications super + p {pkill dunst --signal=USR1 ,\ pkill dunst --signal=USR2 } 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 alt + z boomer Print scrot -s shift + Print scrot_copy # # 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