340 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			340 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
| # 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
 |