#
# wm independent hotkeys
#

# terminal emulator
super + Return
	$TERMINAL
	#xfce4-terminal

# floating terminal emulator
super + shift + Return
  bspc rule -a \* -o state=floating rectangle=800x500+560+290 && $TERMINAL

# rofi launcher
super + space
	$HOME/.config/rofi/launchers/type-6/launcher.sh
	#~/.config/polybar/hack/scripts/launcher.sh

super + v
   bspc rule -a \* -o state=floating rectangle=800x500+560+290 && $TERMINAL ncmpcpp 
   #type="6" style="7" exec ~/.config/rofi/applets/bin/mpd.sh 

super + shift + v
   bspc rule -a \* -o state=floating rectangle=800x500+560+290 && $TERMINAL bluetuith

# dmenu launcher
alt + F2
	dmenu_run

# make sxhkd reload its configuration files:
super + Escape
	pkill -USR1 -x sxhkd

#
# polybar
#

# show/hide polybar
# super + ISO_Next_Group
super + alt + a
	exec ~/.config/bspwm/polyhide.sh

#
# bspwm hotkeys
#

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

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

# xkill
super + shift + Escape
  xkill

# alternate between the tiled and monocle layout
super + {_,shift + }m
  {bspc desktop -l next,exec ~/.config/bspwm/monocle_improved.sh}
  #{exec ~/.config/bspwm/monocle_improved.sh,bspc desktop -l next}

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

# swap the current node and the biggest window
super + g
	bspc node -s biggest.window

#
# state/flags
#

# set the window state
super + {t,shift + t,s,shift + s,f}
	bspc node -t {tiled,pseudo_tiled,floating,floating && exec ~/.config/bspwm/set_window_size.sh 800 600,fullscreen}

# set the node flags
super + ctrl + {m,x,y,z}
	bspc node -g {marked,locked,sticky,private}

# make the new window a small floating window
super + ctrl + s
    bspc rule -a \* -o state=floating rectangle=800x500+560+290

# hide one / unhide all
super + {_,shift + } + z
  bspc {node -g hidden,query -N -n .local.window | xargs -I ID bspc node ID -g hidden}

#
# focus/swap
#

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

#super + ctrl + {1-9}
#	bspc desktop -m {1-9} --follow

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

# focus the next/previous window in the current desktop
super + {_,shift + }c
	bspc node -f {next,prev}.local.!hidden.window

# focus the next/previous desktop in the current monitor
super + bracket{left,right}
	bspc desktop -f {prev,next}.local

# focus the last node/desktop
super + Tab
	bspc desktop -f last

alt + Tab
	bspc {node} -f last

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

# focus or send to the given desktop
super + {_,shift + }{1-9,0,minus,equal}
	bspc {desktop -f,node -d} '^{1-9,10,11,12}'

#
# 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
#

# Layout changer
super + n
    ~/.config/rofi/bspscript.sh

# Contracting windows
super + shift + alt + {h,j,k,l}
    bspwm_resize contract {west,south,north,east} 50

# Expanding windows
super + alt + {h,j,k,l}
    bspwm_resize expand {west,south,north,east} 50

# Shrinking
super + {_,shift +} x
   ~/.config/bspwm/{shrink,margin}.sh

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

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

#
# hardware control
#

# brightness
super + XF86MonBrightness{Up,Down}
	brightnessctl s 5000{+,-}

XF86MonBrightness{Up,Down}
	brightnessctl s {90000,0}

# touchpad
super + {_,shift +}  grave
  {bspc monitor -f next,~/.config/bspwm/touchpad.sh}

#
# lockscreen
#
super + {_,shift + } BackSpace
  {betterlockscreen --lock,i3lock -i /home/greg/Pictures/Wallpapers/BSOD.png -u -e -f}

#
# shutdown
#
super + shift + Delete
	shutdown now

#
# picom toggle
#
super + ctrl + p
	~/.config/bspwm/toggle-picom.sh

#
# toggle grayscale
#
super + ctrl + g
  ~/.config/bspwm/grayscale.sh
#
# audio control
#

# volume
XF86Audio{Raise,Lower}Volume
	pactl set-sink-volume 0 {+,-}10%

# next track
XF86Audio{Prev,Next}
	playerctl {previous,next}

# play 
XF86AudioPlay
	playerctl play

# pause
XF86AudioPause
	playerctl pause

# Mute mic
#F7
#	pactl set-source-mute alsa_input.pci-0000_00_1f.3.analog-stereo toggle

#
# Networking
#

# Nmtui
super + F9
	xfce4-terminal -e nmtui; exit

#
# screenshots
#
Print
    flameshot full
shift + Print
    flameshot gui

#
# emoji
#
super + semicolon
  emoji-picker
#
# apps
#
super + {_,shift + } q
	zen-browser {_,--private-window}

#
# keepassxc
#
super + d
  keepassxc

super + backslash
	qutebrowser

super + e
	thunar
