diff --git a/.config/i3/config b/.config/i3/config
new file mode 100644
index 00000000..5c733764
--- /dev/null
+++ b/.config/i3/config
@@ -0,0 +1,169 @@
+#
+# Salt's i3 configuration file
+# Licensed under the terms of the MIT License
+#
+
+## STARTUP TASKS
+# High-priority
+exec --no-startup-id pulseaudio
+exec --no-startup-id ~/.config/compton/launch.sh
+exec --no-startup-id nitrogen --restore
+exec --no-startup-id ~/.config/polybar/launch.sh
+exec --no-startup-id redshift
+# Low-priority
+exec --no-startup-id dunst
+exec --no-startup-id "sleep 15 && mpd"
+exec --no-startup-id "g910-lights"
+# XDG
+exec --no-startup-id "dex -a"
+
+## WORKSPACES
+set $w1 1
+set $w2 2
+set $w3 3
+set $w4 4
+set $w5 5
+set $w6 6
+set $w7 7
+set $w8 8
+# Workspace setup for my desktop
+# Defaults to whatever on my laptop and on other machines
+set $monprim DisplayPort-0
+set $monsec HDMI-A-0
+workspace $w1 output $monprim
+workspace $w2 output $monprim
+workspace $w3 output $monprim
+workspace $w4 output $monprim
+workspace $w5 output $monprim
+# Putting 8 here first so it's the default for my secondary
+workspace $w8 output $monsec
+workspace $w6 output $monsec
+workspace $w7 output $monsec
+
+## COSMETICS
+font pango:Roboto 10
+new_window pixel 4
+focus_on_window_activation none
+gaps inner 8
+
+## KEYBINDINGS
+# Set modifiers
+set $mod Mod1
+set $sup Mod4
+set $ctl Ctrl
+set $shift Shift
+
+# Use Mouse+$mod to drag floating windows to their wanted position
+floating_modifier $mod
+
+# Program opening and closing
+bindsym $mod+Return exec "konsole"
+bindsym $mod+q kill
+bindsym $mod+space exec "rofi -show drun"
+bindsym $mod+backslash exec "rofi -show ssh"
+bindsym $mod+Tab exec "rofi -show window"
+
+# Pulse controls
+bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5% #increase sound volume
+bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5% #decrease sound volume
+bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle # mute sound
+
+# Brightness controls
+bindsym XF86MonBrightnessUp exec xbacklight -inc 5 # increase screen brightness
+bindsym XF86MonBrightnessDown exec xbacklight -dec 5 # decrease screen brightness
+
+# pavucontrol-qt controls
+bindsym $mod+p exec --no-startup-id "pgrep pavucontrol-qt || pavucontrol-qt"
+bindsym $mod+$shift+p exec --no-startup-id "pkill pavucontrol-qt"
+
+# i3-settree
+bindsym $mod+o exec --no-startup-id "~/.bin/i3-settree"
+
+# Miscellaneous non-movement hotkeys
+bindsym $ctl+$mod+l exec --no-startup-id "~/.bin/i3lock-custom"
+bindsym $mod+$shift+c reload
+bindsym $mod+$shift+r restart
+
+# change focus
+bindsym $mod+h focus left
+bindsym $mod+j focus down
+bindsym $mod+k focus up
+bindsym $mod+l focus right
+
+# move focused window
+bindsym $mod+$shift+h move left
+bindsym $mod+$shift+j move down
+bindsym $mod+$shift+k move up
+bindsym $mod+$shift+l move right
+
+# move focused workspace between monitors
+bindsym $sup+h move workspace to output left
+bindsym $sup+j move workspace to output down
+bindsym $sup+k move workspace to output up
+bindsym $sup+l move workspace to output right
+
+# split in horizontal orientation
+bindsym $mod+semicolon split h
+
+# split in vertical orientation
+bindsym $mod+v split v
+
+# toggle tiling / floating
+bindsym $mod+f floating toggle
+
+# enter fullscreen mode for the focused container
+bindsym $mod+$shift+f fullscreen toggle
+
+# change container layout (stacked, tabbed, toggle split)
+bindsym $mod+s layout stacking
+bindsym $mod+w layout tabbed
+bindsym $mod+e layout toggle split
+
+# focus the parent container
+bindsym $mod+a focus parent
+
+# focus the child container
+bindsym $mod+d focus child
+
+# switch to workspace
+bindsym $mod+1 workspace $w1
+bindsym $mod+2 workspace $w2
+bindsym $mod+3 workspace $w3
+bindsym $mod+4 workspace $w4
+bindsym $mod+5 workspace $w5
+bindsym $mod+6 workspace $w6
+bindsym $mod+7 workspace $w7
+bindsym $mod+8 workspace $w8
+
+# switch to next and previous workspaces
+bindsym $mod+period workspace next
+bindsym $mod+comma workspace prev
+
+# move focused container to workspace
+bindsym $mod+$shift+1 move container to workspace $w1
+bindsym $mod+$shift+2 move container to workspace $w2
+bindsym $mod+$shift+3 move container to workspace $w3
+bindsym $mod+$shift+4 move container to workspace $w4
+bindsym $mod+$shift+5 move container to workspace $w5
+bindsym $mod+$shift+6 move container to workspace $w6
+bindsym $mod+$shift+7 move container to workspace $w7
+bindsym $mod+$shift+8 move container to workspace $w8
+
+## MODES
+# Resize
+bindsym $mod+r mode "resize"
+mode "resize" {
+	bindsym h resize shrink width 10 px or 10 ppt
+	bindsym j resize grow height 10 px or 10 ppt
+	bindsym k resize shrink height 10 px or 10 ppt
+	bindsym l resize grow width 10 px or 10 ppt
+
+	bindsym Left resize shrink width 10 px or 10 ppt
+	bindsym Down resize grow height 10 px or 10 ppt
+	bindsym Up resize shrink height 10 px or 10 ppt
+	bindsym Right resize grow width 10 px or 10 ppt
+
+	bindsym Return mode "default"
+	bindsym Escape mode "default"
+	bindsym $mod+r mode "default"
+}
diff --git a/.config/polybar/config b/.config/polybar/config
new file mode 100644
index 00000000..43090197
--- /dev/null
+++ b/.config/polybar/config
@@ -0,0 +1,209 @@
+# vim:ft=dosini
+#              _       _                
+#  _ __   ___ | |_   _| |__   __ _ _ __ 
+# | '_ \ / _ \| | | | | '_ \ / _` | '__|
+# | |_) | (_) | | |_| | |_) | (_| | |   
+# | .__/ \___/|_|\__, |_.__/ \__,_|_|   
+# |_|            |___/                  
+#
+# Copyright (c) 2020 Vintage Salt <rehashedsalt@cock.li>
+# Distributed under the terms of the MIT License
+#
+
+## VARIABLES
+[res/colors]
+red = #BF616A
+green = #A3BE8C
+yellow = #EBCB8B
+blue = #81A1C1
+magenta = #B48EAD
+cyan = #88C0D0
+white = #D8DEE9
+black = #2E3440
+gray = #3B4252
+
+bg = #2E3440
+fg = #D8DEE9
+border = #3B4252
+selection = #88C0D0
+
+[res/config]
+padding = 2
+
+[settings]
+screenchange-reload = true
+format-padding = ${res/config.padding}
+format-background = ${res/colors.bg}
+
+## BARS
+[template/bar]
+bottom = true
+wm-restack = ${env:PB_WM_RESTACK:i3}
+tray-maxsize = 16
+background = ${res/colors.bg}
+foreground = ${res/colors.fg}
+border-color = ${res/colors.border}
+tray-background = ${res/colors.bg}
+height = 48
+font-0 = "Inconsolata:style=Medium:size=11;2"
+font-1 = "Deja Vu Sans Mono:style=Regular:size=11;2"
+
+[bar/primary]
+monitor = ${env:PB_MONITOR:eDP-1}
+inherit = template/bar
+border-top-size = 4
+modules-left = i3 cpu memory battery temp
+modules-right = backlight pulse date
+
+## MODULES
+[module/backlight]
+type = internal/xbacklight
+format = <ramp> <label>
+label = %percentage:3%%
+ramp-foreground = ${res/colors.yellow}
+ramp-0 = ▁
+ramp-1 = ▂
+ramp-2 = ▃
+ramp-3 = ▄
+ramp-4 = ▅
+ramp-5 = ▆
+ramp-6 = ▇
+ramp-7 = █
+
+[module/battery]
+type = internal/battery
+full-at = 100
+time-format = %H:%M
+interval = 15
+
+format-charging = <ramp-capacity> <label-charging>
+format-discharging = <ramp-capacity> <label-discharging>
+format-full = <ramp-capacity> <label-full>
+label-charging = %percentage:3%%
+label-discharging = %percentage:3%%
+ramp-capacity-foreground = ${res/colors.green}
+ramp-capacity-0 = ▁
+ramp-capacity-0-foreground = ${res/colors.red}
+ramp-capacity-1 = ▂
+ramp-capacity-1-foreground = ${res/colors.red}
+ramp-capacity-2 = ▃
+ramp-capacity-3 = ▄
+ramp-capacity-4 = ▅
+ramp-capacity-5 = ▆
+ramp-capacity-6 = ▇
+ramp-capacity-7 = █
+
+[module/cpu]
+type = internal/cpu
+interval = 1
+
+format = <ramp-coreload> <label>
+label = %percentage:3%%
+ramp-coreload-foreground = ${res/colors.blue}
+ramp-coreload-spacing = 1
+ramp-coreload-0 = ▁
+ramp-coreload-1 = ▂
+ramp-coreload-2 = ▃
+ramp-coreload-3 = ▄
+ramp-coreload-4 = ▅
+ramp-coreload-5 = ▆
+ramp-coreload-5-foreground = ${res/colors.yellow}
+ramp-coreload-6 = ▇
+ramp-coreload-6-foreground = ${res/colors.yellow}
+ramp-coreload-7 = █
+ramp-coreload-7-foreground = ${res/colors.red}
+
+[module/date]
+type = internal/date
+date = %a
+time = %I:%M %p
+interval = 30
+format = <label>
+label = %date% %time%
+
+[module/i3]
+type = internal/i3
+format = <label-state> <label-mode>
+format-padding = 0
+enable-scroll = false
+pin-workspaces = true
+
+label-mode-padding = ${res/config.padding}
+label-mode-background = ${res/colors.red}
+label-focused = %name%
+label-focused-padding = ${res/config.padding}
+label-focused-foreground = ${res/colors.bg}
+label-focused-background = ${res/colors.selection}
+label-unfocused = %name%
+label-unfocused-background = ${res/colors.bg}
+label-unfocused-padding = ${res/config.padding}
+label-visible = %name%
+label-visible-background = ${res/colors.gray}
+label-visible-padding = ${res/config.padding}
+
+[module/memory]
+type = internal/memory
+
+format = <ramp-used> <ramp-swap-used> <label>
+label = %gb_free:8%
+ramp-used-foreground = ${res/colors.magenta}
+ramp-used-0 = ▁
+ramp-used-1 = ▂
+ramp-used-2 = ▃
+ramp-used-3 = ▄
+ramp-used-4 = ▅
+ramp-used-5 = ▆
+ramp-used-5-foreground = ${res/colors.yellow}
+ramp-used-6 = ▇
+ramp-used-6-foreground = ${res/colors.yellow}
+ramp-used-7 = █
+ramp-used-7-foreground = ${res/colors.red}
+ramp-swap-used-foreground = ${res/colors.magenta}
+ramp-swap-used-0 = ▁
+ramp-swap-used-1 = ▂
+ramp-swap-used-2 = ▃
+ramp-swap-used-3 = ▄
+ramp-swap-used-4 = ▅
+ramp-swap-used-5 = ▆
+ramp-swap-used-5-foreground = ${res/colors.yellow}
+ramp-swap-used-6 = ▇
+ramp-swap-used-6-foreground = ${res/colors.yellow}
+ramp-swap-used-7 = █
+ramp-swap-used-7-foreground = ${res/colors.red}
+
+[module/pulse]
+type = internal/pulseaudio
+format-volume = <ramp-volume> <label-volume>
+format-muted = <ramp-volume> <label-muted>
+format-muted-foreground = ${res/colors.red}
+label-muted = %percentage%%
+label-muted-foreground = ${res/colors.red}
+ramp-volume-foreground = ${res/colors.cyan}
+ramp-volume-0 = ▁
+ramp-volume-1 = ▂
+ramp-volume-2 = ▃
+ramp-volume-3 = ▄
+ramp-volume-4 = ▅
+ramp-volume-5 = ▆
+ramp-volume-6 = ▇
+ramp-volume-7 = █
+
+[module/temp]
+type = internal/temperature
+units = true
+warn-temperature = 80
+format = <ramp> <label>
+format-warn = <ramp> <label-warn>
+label = %temperature-c:6%
+label-warn = %temperature-c:6%
+label-warn-foreground = ${res/colors.red}
+ramp-foreground = ${res/colors.yellow}
+ramp-0 = ▁
+ramp-1 = ▂
+ramp-2 = ▃
+ramp-3 = ▄
+ramp-4 = ▅
+ramp-5 = ▆
+ramp-6 = ▇
+ramp-7 = █
+ramp-7-foreground = ${res/colors.red}
diff --git a/.config/polybar/launch.sh b/.config/polybar/launch.sh
new file mode 100755
index 00000000..387322de
--- /dev/null
+++ b/.config/polybar/launch.sh
@@ -0,0 +1,76 @@
+#! /bin/bash
+#
+# launch.sh
+# A Polybar launch script with a heck of a lot of compat
+# Copyright (C) 2019 Vintage Salt <rehashedsalt@cock.li>
+#
+# Distributed under terms of the MIT license.
+#
+
+log() {
+	[ -z "$1" ] && return 1
+	printf "$1\\n"
+}
+
+# Trap our exit
+die() {
+	kill $(jobs -p)
+}
+trap die EXIT
+
+# Steps
+step_fallback() {
+	if ! command -v polybar > /dev/null 2>&1; then
+		if command -v tint2 > /dev/null 2>&1; then
+			log "Executing fallback"
+			exec tint2
+		fi
+		log "No valid bars found"
+		exit 51
+	fi
+}
+step_configure_restack() {
+	# Restack compatibility
+	if pgrep -U "$UID" bspwm > /dev/null 2>&1; then
+		export PB_WM_RESTACK="bspwm"
+	elif pgrep -U "$UID" i3 > /dev/null 2>&1; then
+		export PB_WM_RESTACK="i3"
+	fi
+}
+step_spawn_primary() {
+	# Spawn bars on the primary monitor
+	log "Spawning primary bars"
+	export PB_MONITOR=$(xrandr -q | awk '/primary/{print $1}')
+	polybar -r primary &
+	polybar -r primary-2 &
+}
+step_spawn_secondary() {
+	# Spawn more for each secondary
+	log "Spawning secondary bars"
+	export secondary_monitors=$(xrandr -q | grep ' connected' | grep -v 'primary' | awk '{print $1}')
+	if [ "$secondary_monitors" == "" ]; then
+		return 0
+	fi
+	for monitor in $secondary_monitors; do
+		PB_MONITOR=$monitor
+		polybar -r secondary &
+		polybar -r secondary-2 &
+	done
+}
+step_wait() {
+	# And wait
+	log "Waiting"
+	wait
+}
+
+# Main
+main() {
+	step_fallback
+	step_configure_restack
+	step_spawn_primary
+	step_spawn_secondary
+	step_wait
+}
+
+main "$@"
+
diff --git a/.local/share/konsole/Main.profile b/.local/share/konsole/Main.profile
index 51985752..a0e8abde 100644
--- a/.local/share/konsole/Main.profile
+++ b/.local/share/konsole/Main.profile
@@ -1,5 +1,6 @@
 [Appearance]
 ColorScheme=Nordic
+Font=Inconsolata,11,-1,5,57,0,0,0,0,0,Medium
 
 [General]
 Name=Main
diff --git a/.vim/bundle/vim-closetag b/.vim/bundle/vim-closetag
index 9f130117..90cf416c 160000
--- a/.vim/bundle/vim-closetag
+++ b/.vim/bundle/vim-closetag
@@ -1 +1 @@
-Subproject commit 9f13011738e11d6f926a641d774635fa415f1b6e
+Subproject commit 90cf416c03ed841ad7f3d44f4d6f3192f216176a
diff --git a/.vim/bundle/vim-javascript b/.vim/bundle/vim-javascript
index db595656..c3966153 160000
--- a/.vim/bundle/vim-javascript
+++ b/.vim/bundle/vim-javascript
@@ -1 +1 @@
-Subproject commit db595656304959dcc3805cf63ea9a430e3f01e8f
+Subproject commit c3966153e81bc3766b1627e6ab0cd53333b61c1e