super+Return
    $TERMINAL

super+space
    $TERMINAL

super+r
    rofi -show run

super+d
    cd ~/dotfiles && eval $FZF_DEFAULT_COMMAND | rofi -width 90 -dmenu -p dotfiles | xargs -d '\n' -r $TERMINAL -e $EDITOR

super+a
    rofi -modi windowcd -show windowcd

super+i
	input-setup

super+e
    rofimoji -a type copy

XF86Audio{Lower,Raise}Volume
    pactl set-sink-volume @DEFAULT_SINK@ {-,+}5%

super+{minus,plus}
    pactl set-sink-volume @DEFAULT_SINK@ {-,+}5%

XF86AudioMute
    pactl set-sink-mute @DEFAULT_SINK@ toggle

super+shift+m
    pactl set-sink-mute @DEFAULT_SINK@ toggle

super+m
    pactl set-source-mute 1 toggle

XF86Audio{Prev,Play,Next}
    playerctl -p spotifyd {previous,play-pause,next}

super+{Left,Down,Right}
    playerctl {previous,play-pause,next}

XF86Display
    xset dpms force off

@Print
    scrot -q 100 -t 10 -s '%Y-%m-%d-%H-%M-%S.png' -e 'mv $f ~/pics/screenshots'

shift+@Print
    scrot -q 100 -t 10 '%Y-%m-%d-%H-%M-%S.png' -e 'mv $f ~/pics/screenshots'

super+o;{m,e,n,t,f,p,h,c}
    $TERMINAL -e {spt,aerc,newsboat,tremc,lf,ipython -i -c 'from math import *', htop, ikhal -d work}

super+o;{k,s,w,0}
    {tokodi,linkhandler,librewolf, printf "¯\_(⊙_ʖ⊙)_/¯" | xclip -selection clipboard}

super+z;{r,w}
    {rqr,wqr}

super+v
    videowrapper

super+shift+s
    locknpause

super+alt+c
    showclip

super+F5
    stream

super+F6
    record

super+shift+a
    automute

super+n
    dunstctl close

super+shift+n
    dunstctl close-all

super+alt+n
    dunstctl history-pop

super+alt+shift+n
    dunstctl context
ctrl+q
	:

# quit/restart bspwm
super + alt + {q,r}
	bspc {quit,wm -r}

# close and kill
super + {_,shift + }q
	bspc node -{c,k}

# alternate between the tiled and monocle layout
super + g
	bspc desktop -l next

# send the focused node to the newest preselected node
super + y
	bspc node focused -n newest.!automatic

# swap the current node and the marked node
super + shift + g
	bspc node -s newest.marked

super + ctrl + r
	bspc node @parent -R 90
#
# state/flags
#

# set the window state
super + {t,shift+f,f}
	bspc node -t \~{tiled,floating,fullscreen}

# set the node flags
super + w;{m,l,s,p}
	bspc node -g {marked,locked,sticky,private}

super + alt + s;{b,n,a}
	bspc node -l {below,normal,above}

#
# focus/swap
#

# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
	bspc node -{f,s} {west,south,north,east}

# focus the node for the given path jump
super + ctrl + {p,b,comma,period}
	bspc node -f @{parent,brother,first,second}

# focus the next/previous desktop in the current monitor
super + {_,shift + }Tab
	bspc desktop -f {next,prev}.local.occupied

# focus the last node/desktop
super + {ctrl,shift + } o
	bspc {node,desktop} -f last

# focus the older or newer node in the focus history
super + alt + {o,i}
	bspc wm -h off; \
	bspc node {older,newer} -f; \
	bspc wm -h on

# focus to the given desktop
super + {1-9,0}
	desktop='{1-9,10}'; \
	bspc query -D -d "$desktop.focused" && bspc desktop -f last || bspc desktop -f "$desktop"

# focus or send to the given desktop
super + shift + {1-9,0}
	bspc node -d '{1-9,10}'

#
# preselect
#

# preselect the direction
super + ctrl + {h,j,k,l}
	bspc node -p {west,south,north,east}

# preselect the ratio
super + ctrl + {1-9}
	bspc node -o 0.{1-9}

# cancel the preselection for the focused node
super + ctrl + space
	bspc node -p cancel

# cancel the preselection for the focused desktop
super + ctrl + shift + space
	bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel

#
# move/resize
#

# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
	bspc node -z {left -10 0,bottom 0 10,top 0 -10,right 10 0}

# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
	bspc node -z {right -10 0,top 0 10,bottom 0 -10,left 10 0}

# move a floating window
super + shift + {Left,Down,Up,Right}
	bspc node -v {-10 0,0 10,0 -10,10 0}