# __ __ __
# ______ __/ /_ / /______/ /
# / ___/ |/_/ __ \/ //_/ __ /
# (__ )> </ / / / ,< / /_/ /
# /____/_/|_/_/ /_/_/|_|\__,_/
#
# CONFIGURATION SCRIPT
# ~slendi
#
# wm independent hotkeys
#
##################################
# MOUNTING #
##################################
super + F12
udiskie-umount "$(lsblk | grep --line-buffered '─' | grep '/media/' | cut -c 7- | awk "\{ print \$1 \" (\" \$4 \") \" \$7 \}" | grep -v '/media/data' | dmenu -l 10 -p 'What partition do you wish to unmount?' | cut -d' ' -f3 | sed 's/^ *$/cum/g')"
super + F11
udiskie-mount "/dev/$(lsblk --noheadings --raw -o NAME,MOUNTPOINT | grep -v 'sda' | awk '$1~/[[:digit:]]/ && $2 == ""' | grep sd | dmenu -l 10 -p 'What partition do you wish to mount?' | sed 's/^$/cum/g' | sed 's/ *$//g')"
##################################
# Applications #
##################################
# Terminal emulator
super + Return
alacritty
super + space
alacritty
# Rofi
super + d
zsh -c "rofi -show drun -theme $HOME/.local/share/slate.rasi -show-icons"
super + shift + d
zsh -c "rofi -show window -theme $HOME/.local/share/slate.rasi -show-icons"
super + alt + d
zsh -c "rofi -show run -theme $HOME/.local/share/slate.rasi -show-icons"
# Screenshots
Print
screen_all
super + Print
screen_select &
super + shift + Print
screen_win
# Pulseaudio volume control
super + v
pavucontrol
# ncmpcpp MPD client
super + shift + v
alacritty -e ncmpcpp
# Catia jack patch editor
super + alt + v
catia
# Desktop locking
super + shift + p
$HOME/.local/bin/i3lock-fancy -f Helvetica
# Bar toggle
super + shift + g
toggle_bar
# Background changing script
super+u
setbf.sh
##################################
# Media controls #
##################################
# Media player D-Bus
XF86Audio{Next,Prev,Play,Stop}
playerctl {next,previous,play-pause,stop}
# Volume control
XF86Audio{RaiseVolume,LowerVolume,Mute}
$HOME/.local/bin/volume_control {raise,lower,mute}
# amixer {-q set Master 5%+,-q set Master 5%-,set Master toggle}
##################################
# BSPWM Hotkeys #
##################################
# Quit/restart bspwm
super + shift + e
prompt "Are you sure you want to exit this Xsession?" "bspc quit"
super + shift + r
bspc wm -r
# Close and kill
super + q
bspc node -c
super + shift + q
bspc node -k
# Alternate between the tiled and monocle layout
super + shift + m
bspc desktop -l next
# swap the current node and the biggest window
super + g
bspc node -s biggest.window
super + {z,x,c}
bspc node -p {east,south,cancel}
##################################
# BSPWM State/Flags #
##################################
# Set the window state
super + {t,shift + t,y,f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
# Set the node flags
super + ctrl + {m,x,y,z}
bspc node -g {marked,locked,sticky,private}
##################################
# BSPWM 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 + {p,shift+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 last node/desktop
super + {grave,Tab}
bspc {node,desktop} -f last
# Focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} 'pointed:^{1-9,10}' ; pkill lemonblocks -4
##################################
# BSPWM Preselecting #
##################################
# Preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
# Cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
##################################
# BSPWM Moving/Resizing #
##################################
# Expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# Contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# Move a floating window
super + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}
##################################
# FUN #
##################################
# Weeb stuff because why not
# ÒwÓ
super+shift+o
bash -c "sleep .2; xdotool keyup shift Super_L o Caps_Lock; xdotool keydown shift; xdotool type Ò; sleep .02; xdotool keyup shift; xdotool type w; xdotool keydown shift; sleep .02; xdotool type Ó; xdotool keyup shift;"
# ÓwÒ
super+shift+i
bash -c "sleep .2; xdotool keyup shift Super_L i Caps_Lock; xdotool keydown shift; xdotool type Ó; sleep .02; xdotool keyup shift; xdotool type w; xdotool keydown shift; sleep .02; xdotool type Ò; xdotool keyup shift;"
# ÚwÙ
super+shift+u
bash -c "sleep .2; xdotool keyup shift Super_L u Caps_Lock; xdotool keydown shift; xdotool type Ú; sleep .02; xdotool keyup shift; xdotool type w; xdotool keydown shift; sleep .02; xdotool type Ù; xdotool keyup shift;"
# Fake roalert message, you probably don't want it.
super + F5
roalert