326 lines
7.2 KiB
Plaintext
326 lines
7.2 KiB
Plaintext
|
# 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
|