############################################################################################################################### # bspwm hotkeys ############################################################################################################################### # Cleanly quit bspwm super + shift + q bspc quit 1 && pkill polybar # Show this file super + F1 alacritty -e bat ~/.config/sxhkd/sxhkdrc # # Window manipulation #-------------------------------------------------------------- # BSPWM WINDOW STATES: #tiled - Its size and position are determined by the window tree. #pseudo_tiled - A tiled window that automatically shrinks but doesn’t stretch beyond its floating size. #floating - Can be moved/resized freely. Although it doesn’t use any tiling space, it is still part of the window tree. #fullscreen - Fills its monitor rectangle and has no borders. #-------------------------------------------------------------- # 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} # Toggle floating mode of window 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 ### Map or unmap windows (functional equivalent of "minimize") # Show hidden windows super + c whid dmenu # Hide window super + shift + c whid hide # Show the most recently hidden window super + ctrl + c whid last # # Window moving and splitting # ______________ # Autopresel (split window in its largest dimension) #ctrl + space #auto-presel # Presel window for splitting in certain direction alt + ctrl + {a,s,w,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} # cancel the preselection for the focused node super + ctrl + space bspc node -p cancel # Presel the desktop for splitting in certain direction # alt + shift + {a,s,w,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 + }{1-9,0} bspc {desktop -f,node -d} ^{1-9,10} ## Alternative: i3 style behavior (focus nth, desktop of the focused monitor) #super + {1-9,0} # focusdesktopofthismonitor {1-9} #super + shift + {1-9,0} # 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 + {1-9,0} # summondesktop.sh {1-9,10} #super + shift + {1-9,0} # 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 rofi -modi window -show window #Focus windows by direction, works with multihead super + {a,s,w,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 + {a,s,w,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 + {a,s,w,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} super + shift + r bspwm_rename_desktop # # 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 #DidIClickDesktop.sh && mygtkmenui -- .config/GTKmenu/BspwmWindowMenui ~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 rofi -modi drun,run,window,calc,emoji -show drun #dmenu_recent -fn 'xos4 Terminus:size=15' -i -l 14 -w 600 -y $PANEL_HEIGHT # Triggered by jus tapping super super + shift + @space ulauncher-toggle #gnome-pie -o 460 --display=:0 super + shift + Return urxvt super + z kitty super + shift + z alacritty super + r rofi -modi drun,run,window,calc,emoji -show run super + shift + b $BROWSER super + e nemo super + shift + e alacritty -e ranger super + shift + l loginctl lock-session Print # scrot flameshot screen -c # # Media keys # XF86AudioPrev playerctl previous XF86AudioPlay playerctl play-pause XF86AudioNext playerctl next XF86AudioRaiseVolume amixer set Master playback 2%+ XF86AudioLowerVolume amixer set Master playback 2%- XF86AudioMute amixer set Master toggle XF86MonBrightnessDown xbacklight -dec 5 XF86MonBrightnessUp xbacklight -inc 5 XF86ScreenSaver loginctl lock-session XF86Sleep systemctl suspend XF86Display workspaces_multimonitor; $HOME/.config/polybar/launch.sh shift + XF86Display arandr XF86AudioMicMute amixer set Capture toggle XF86Launch1 #rofi -modi drun,run,window,calc,windowcd,combi,keys,filebrowser,emoji -show drun rofi-rbw ctrl + shift + Escape alacritty -e btop # make sxhkd reload its configuration files: super + shift + Escape pkill -SIGUSR1 -x sxhkd alt + space ulauncher-toggle super + shift + @S flameshot gui #scrot # In case bspwmrc fails to execute/you wish have plugged in a new monitor super + shift + R bspwmrc #edit this file alt + ctrl + space $EDITOR ~/.config/sxhkd/sxhkdrc # Toggle compositing super + ctrl + alt + space {pkill picom, picom -b --vsync } # Remove receptacles super + BackSpace for i in $(bspc query -N -n .leaf.!window.local); do bspc node $i -k; done ############################################################################################################################### # VIDEO-RELATED HOTKEYS ############################################################################################################################### # Rotate the screen. WARNING: Laggy. mod5 + {Left,Down,Up,Right} rotate_desktop {left,inverted,normal,right}