#! /bin/sh
-bspc config border_width 3
-bspc config window_gap 10
+sxhkd &
-bspc config top_padding 30
+bspc monitor -d I II III IV V VI VII VIII IX X
-bspc config split_ratio 0.6
-bspc config borderless_monocle true
-bspc config gapless_monocle true
-bspc config focus_by_distance true
+bspc config border_width 2
+bspc config window_gap 12
+#bspc config bottom_padding 32
-bspc monitor -d web code term iv v vi vii viii ix x
+# bspc config split_ratio 0.52
+bspc config borderless_monocle true
+bspc config click_to_focus true
+bspc config gapless_monocle true
-bspc config normal_border_color '#1d1f21'
-bspc config focused_border_color '#093748'
-
-# bspc rule -a Firefox desktop=^1 focus=on
-# bspc rule -a emacs desktop=^2 focus=on
-# bspc rule -a Chromium desktop=^3 focus=on
-# bspc rule -a zathura desktop=^5 focus=on
-bspc rule -a xfce4-appfinder floating=on
-
-# panel &
+bspc rule -a Firefox desktop='^1' follow=on
+bspc rule -a Emacs desktop='^2' state=tiled follow=on
+bspc rule -a Chromium desktop='^4' follow=on
+bspc rule -a Termite state=floating
+bspc rule -a URxvt state=floating
+bspc rule -a qterminal state=floating
+++ /dev/null
-COLOR_FOREGROUND='#FFffffff'
-COLOR_BACKGROUND='#FF1d1f21'
-COLOR_ACTIVE_MONITOR_FG='#FF1d1f21'
-COLOR_ACTIVE_MONITOR_BG='#FFcc6666'
-COLOR_INACTIVE_MONITOR_FG='#FFffffff'
-COLOR_INACTIVE_MONITOR_BG='#FF1d1f21'
-COLOR_FOCUSED_OCCUPIED_FG='#FFffffff'
-COLOR_FOCUSED_OCCUPIED_BG='#FF373b41'
-COLOR_FOCUSED_OCCUPIED_UL='#FFbcbac2'
-COLOR_FOCUSED_FREE_FG='#FFffffff'
-COLOR_FOCUSED_FREE_BG='#FF1d1f21'
-COLOR_FOCUSED_FREE_UL='#FFa39e98'
-COLOR_FOCUSED_URGENT_FG='white'
-COLOR_FOCUSED_URGENT_BG='#FFF9A299'
-COLOR_FOCUSED_URGENT_UL='white'
-COLOR_OCCUPIED_FG='#FFffffff'
-COLOR_OCCUPIED_BG='#FF1d1f21'
-#COLOR_FREE_FG='#FF6F7277'
-COLOR_FREE_FG='#FF969896'
-COLOR_FREE_BG='#FF1d1f21'
-COLOR_URGENT_FG='#FFF9A299'
-COLOR_URGENT_BG='#FF1d1f21'
-COLOR_LAYOUT_FG='#FFffffff'
-COLOR_LAYOUT_BG='#FF1d1f21'
-COLOR_TITLE_FG='#FFffffff'
-COLOR_TITLE_BG='#FF1d1f21'
-COLOR_STATUS_FG='#FFffffff'
-COLOR_STATUS_BG='#FF1d1f21'
-COLOR_STATUS_IC='#FFcc6666'
#
-# bspwm hotkeys
+# wm independent hotkeys
#
-super + alt + Escape
- bspc quit
-
-super + w
- bspc window -c
-
-super + t
- bspc desktop -l next
-
-super + b
- bspc desktop -B
-
-super + {p,s,f}
- state={pseudo_tiled,floating,fullscreen}; \
- bspc query -W -w "focused.$\{state\}" && state=tiled; \
- bspc window -t "$state"
+# terminal emulator
+super + Return
+ urxvt
-super + {grave,Tab}
- bspc {window,desktop} -f last
+# program launcher
+super + space
+ rofi -show run -font "Inconsolata 13"
-super + apostrophe
- bspc window -s last
+super + z ; t
+ urxvt
-super + {o,i}
- bspc control --record-history off; \
- bspc window {older,newer} -f; \
- bspc control --record-history on
+super + z ; f
+ firefox-nightly
-super + y
- bspc window -w last.manual
+# firefox
+#super + r
+# firefox
-super + m
- bspc window -s biggest
+# chromium
+#super + c
+# chromium
-super + {_,shift + }{h,j,k,l}
- bspc window -{f,s} {left,down,up,right}
+# emacs
+super + e
+ emacs
-super + {_,shift + }slash
- bspc window -f {next,prev}
+# stalonetray
+#super + minus
+# toggle_tray&
-super + {comma,period}
- bspc desktop -C {backward,forward}
+# volume up
+XF86AudioRaiseVolume
+ pamixer --allow-boost --increase 5
-super + bracket{left,right}
- bspc desktop -f {prev,next}
+# volume down
+XF86AudioLowerVolume
+ pamixer --allow-boost --decrease 5
-super + shift + bracket{left,right}
- bspc window -d {prev,next}
+# mute
+XF86AudioMute
+ pamixer --toggle-mute
-super + ctrl + {h,j,k,l}
- bspc window -p {left,down,up,right}
+# monitor brightness
+#XF86MonBrightness{Up,Down}
+# xbacklight -time 0 {+5,-5}
-super + ctrl + {_,shift + }space
- bspc {window -p cancel,desktop -c}
+# keyboard brightness
+#XF86KbdBrightness{Up,Down}
+# kbdlight {up,down}
-super + alt + {h,j,k,l}
- bspc window -e {left -10,down +10,up -10,right +10}
+XF86LaunchA
+ toggle-layout
-super + alt + shift + {h,j,k,l}
- bspc window -e {right -10,up +10,down -10,left +10}
+# make sxhkd reload its configuration files:
+super + Escape
+ pkill -USR1 -x sxhkd
-super + ctrl + {1-9}
- bspc window -r 0.{1-9}
+#
+# bspwm hotkeys
+#
-super + {_,shift + }{1-9,0}
- bspc {desktop -f,window -d} ^{1-9,10}
+# quit bspwm normally
+super + alt + Escape
+ bspc quit
-~button1
- bspc pointer -g focus
+# close and kill
+super + {w,q}
+ bspc node -{c,k}
-super + button{1-3}
- bspc pointer -g {move,resize_side,resize_corner}
+# alternate between the tiled and monocle layout
+super + m
+ bspc desktop -l next
-super + !button{1-3}
- bspc pointer -t %i %i
+# if the current node is automatic, send it to the last manual, otherwise pull the last leaf
+super + y
+ bspc query -N -n focused.automatic && bspc node -n last.!automatic || bspc node last.leaf -n focused
-super + @button{1-3}
- bspc pointer -u
+# swap the current node and the biggest node
+super + g
+ bspc node -s biggest
#
-# wm independent hotkeys
+# state/flags
#
-super + Return
- urxvt
+# set the window state
+super + {t,shift + t,s,f}
+ bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
-super + space
- rofi -show run -font "Source Code Pro 11" -fg "#195465" -bg "#0A0F14" -hlfg "#EDB54B" -hlbg "#0A0F14" -o 85
+# set the node flags
+super + ctrl + {x,y,z}
+ bspc node -g {locked,sticky,private}
-super + x
- slimlock
-
-super + e
- emacs
-
-super + r
- firefox
+#
+# focus/swap
+#
-super + c
- chromium -incognito
+# focus the node in the given direction
+super + {_,shift + }{h,j,k,l}
+ bspc node -{f,s} {west,south,north,east}
-# make sxhkd reload its configuration files:
-super + Escape
- pkill -USR1 -x sxhkd
+# focus the node for the given path jump
+super + {p,b,comma,period}
+ bspc node -f @{parent,brother,first,second}
-#XF86MonBrightnessDown
-# xbacklight -dec 5
+# focus the next/previous node
+super + {_,shift + }slash
+ bspc node -f {next,prev}
-#XF86MonBrightnessUp
-# xbacklight -inc 5
+# focus the next/previous desktop
+super + bracket{left,right}
+ bspc desktop -f {prev,next}
-# XF86KbdBrightnessDown
- #kbdlight down
+# send to next/prev desktop
+super + shift + bracket{left,right}
+ bspc node -d {prev,next}
-# XF86KbdBrightnessUp
- #kbdlight up
+# focus the last node/desktop
+super + {grave,Tab}
+ bspc {node,desktop} -f last
-#XF86AudioRaiseVolume
-# pulseaudio-ctl up
+# 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
-#XF86AudioLowerVolume
-# pulseaudio-ctl down
+# focus or send to the given desktop
+super + {_,shift + }{1-9,0}
+ bspc {desktop -f,node -d} '^{1-9,10}'
-#XF86AudioMute
-# pulseaudio-ctl mute
+#
+# preselect
+#
-XF86AudioPlay
- mpc toggle
+# preselect the direction
+super + ctrl + {h,j,k,l}
+ bspc node -p {west,south,north,east}
-XF86AudioPrev
- mpc prev
+# preselect the ratio
+super + ctrl + {1-9}
+ bspc node -o 0.{1-9}
-XF86AudioNext
- mpc next
+# cancel the preselection for the focused node
+super + ctrl + space
+ bspc node -p cancel
-XF86AudioRaiseVolume
- pamixer --allow-boost --increase 5
+# 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
-XF86AudioLowerVolume
- pamixer --allow-boost --decrease 5
+#
+# move/resize
+#
-XF86AudioMute
- pamixer --toggle-mute
+# 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}
-XF86LaunchA
- toggle-layout
+# 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}
-XF86LaunchB
- toggle-mouse
+# move a floating window
+super + {Left,Down,Up,Right}
+ bspc node -v {-20 0,0 20,0 -20,20 0}