From 62b519dd1ad73867d4afb02785da7e2def5393a2 Mon Sep 17 00:00:00 2001
From: Salt <rehashedsalt@cock.li>
Date: Wed, 23 Aug 2017 00:50:25 -0500
Subject: [PATCH] bspwm, sxhkd: Initialize configuration files

---
 .config/bspwm/bspwmrc |  64 +++++++++++++++++++++
 .config/sxhkd/sxhkdrc | 125 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 189 insertions(+)
 create mode 100755 .config/bspwm/bspwmrc
 create mode 100755 .config/sxhkd/sxhkdrc

diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc
new file mode 100755
index 00000000..7a7c61f2
--- /dev/null
+++ b/.config/bspwm/bspwmrc
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+# Copyright (c) 2017 rehashedsalt/vintagesalt
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+## PATCH PATH, IF NOT ALREADY DONE
+if [[ "$PATH" != "*$HOME/.local/bin" ]]; then
+	export PATH="$HOME/.local/bin:$PATH"
+fi
+if [[ "$PATH" != "*$HOME/.bin" ]]; then
+	export PATH="$HOME/.bin:$PATH"
+fi
+
+## SIMPLE CONFIGURATION
+xset -b
+xset -dpms
+xset s off
+
+## SERVICES AND DAEMONS
+sxhkd &						# Simple hotkey daemon
+dunst &						# Notification daemon
+redshift -l 38.627003;-90.199402 &		# Eye strain-reducer
+
+feh --randomize --bg-fill "~/Pictures/Wallpapers/i3" &
+compton &					# Desktop compositor
+polybar top &					# Simple bar system for monitoring system
+
+syncthing -no-browser &				# File synchronization daemon
+
+## LOCKUP
+# I autostart my session on all of my machines
+# Thus, having a session-side lock screen is kind of important
+i3lock -i "~/.i3splash" &
+
+## bspwm GENERAL CONFIGURATION
+bspc monitor -d			web music terminal files V VI VII VIII IX touchy
+
+bspc config border_width	2
+bspc config window_gap		4
+
+bspc config split_ratio		0.52
+bspc config borderless_monocle	true
+bspc config gapless_monocle	true
+
+## bspwm WINDOW RULES
+# TODO: Make loads of awesome window rules
+
diff --git a/.config/sxhkd/sxhkdrc b/.config/sxhkd/sxhkdrc
new file mode 100755
index 00000000..799025b3
--- /dev/null
+++ b/.config/sxhkd/sxhkdrc
@@ -0,0 +1,125 @@
+#!/bin/bash
+
+# terminal emulator
+alt + Return
+	urxvt
+
+# program launcher
+alt + @space
+	rofi -show drun
+
+# ssh launcher
+alt + @\
+	rofi -show ssh
+
+# make sxhkd reload its configuration files:
+alt + Escape
+	pkill -USR1 -x sxhkd
+
+#
+# bspwm hotkeys
+#
+
+# quit bspwm normally
+alt + alt + Escape
+	bspc quit
+
+# close and kill
+alt + {_,shift + }q
+	bspc node -{c,k}
+
+# alternate between the tiled and monocle layout
+alt + m
+	bspc desktop -l next
+
+# if the current node is automatic, send it to the last manual, otherwise pull the last leaf
+alt + y
+	bspc query -N -n focused.automatic && bspc node -n last.!automatic || bspc node last.leaf -n focused
+
+# swap the current node and the biggest node
+alt + g
+	bspc node -s biggest
+
+#
+# state/flags
+#
+
+# set the window state
+alt + {t,shift + t,s,f}
+	bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
+
+# set the node flags
+alt + ctrl + {x,y,z}
+	bspc node -g {locked,sticky,private}
+
+#
+# focus/swap
+#
+
+# focus the node in the given direction
+alt + {_,shift + }{h,j,k,l}
+	bspc node -{f,s} {west,south,north,east}
+alt + {_,shift + }{left,down,up,right}
+	bspc node -{f,s} {west,south,north,east}
+
+# focus the node for the given path jump
+alt + {p,b,comma,period}
+	bspc node -f @{parent,brother,first,second}
+
+# focus the next/previous node in the current desktop
+alt + {_,shift + }c
+	bspc node -f {next,prev}.local
+
+# focus the next/previous desktop in the current monitor
+alt + bracket{left,right}
+	bspc desktop -f {prev,next}.local
+
+# focus the last node/desktop
+alt + {grave,Tab}
+	bspc {node,desktop} -f last
+
+# focus the older or newer node in the focus history
+alt + {o,i}
+	bspc wm -h off; \
+	bspc node {older,newer} -f; \
+	bspc wm -h on
+
+# focus or send to the given desktop
+alt + {_,shift + }{1-9,0}
+	bspc {desktop -f,node -d} '^{1-9,10}'
+
+#
+# preselect
+#
+
+# preselect the direction
+alt + ctrl + {h,j,k,l}
+	bspc node -p {west,south,north,east}
+
+# preselect the ratio
+alt + ctrl + {1-9}
+	bspc node -o 0.{1-9}
+
+# cancel the preselection for the focused node
+alt + ctrl + space
+	bspc node -p cancel
+
+# cancel the preselection for the focused desktop
+alt + 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
+alt + 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
+alt + 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
+alt + {Left,Down,Up,Right}
+	bspc node -v {-20 0,0 20,0 -20,20 0}