diff --git a/.config/compton.conf b/.config/compton.conf
new file mode 100644
index 00000000..17a3a62f
--- /dev/null
+++ b/.config/compton.conf
@@ -0,0 +1,138 @@
+## BACKEND
+
+backend = "glx";
+glx-no-stencil = true;
+glx-copy-from-front = false;
+
+# GLX backend: Avoid rebinding pixmap on window damage.
+# Probably could improve performance on rapid window content changes, but is known to break things on some drivers (LLVMpipe).
+# Recommended if it works.
+glx-no-rebind-pixmap = true;
+
+# GLX backend: GLX buffer swap method we assume.
+# Could be undefined (0), copy (1), exchange (2), 3-6, or buffer-age (-1).
+# undefined is the slowest and the safest, and the default value.
+# copy is fastest, but may fail on some drivers,
+# 2-6 are gradually slower but safer (6 is still faster than 0).
+# Usually, double buffer means 2, triple buffer means 3.
+# buffer-age means auto-detect using GLX_EXT_buffer_age, supported by some drivers.
+# Useless with --glx-use-copysubbuffermesa.
+# Partially breaks --resize-damage.
+# Defaults to undefined.
+glx-swap-method = "undefined";
+
+## SHADOWS
+
+shadow = true;
+no-dnd-shadow = true;
+no-dock-shadow = false;
+# Zero the part of the shadow's mask behind the window. Fix some weirdness with ARGB windows.
+clear-shadow = true;
+shadow-radius = 6;
+shadow-offset-x = -4;
+shadow-offset-y = -4;
+shadow-opacity = 0.5;
+# shadow-red = 0.0;
+# shadow-green = 0.0;
+# shadow-blue = 0.0;
+shadow-ignore-shaped = false;
+
+shadow-exclude = [
+    "name = 'oneko'",
+    "name = 'Notification'",
+    "name = 'xfce4-notifyd'",
+    "name *= 'VLC'",
+    "name *= 'compton'",
+    "name *= 'Chromium'",
+    "name *= 'Chrome'",
+    "name *= 'Conky'",
+    "name *= 'Polybar tray window'",
+    "class_g = 'Conky'",
+    "class_g ?= 'Notify-osd'",
+    "class_g ?= 'Xfce4-notifyd'",
+    "class_g ?= 'Xfce4-power-manager'",
+    "class_g ?= 'Wine'",
+    "_GTK_FRAME_EXTENTS@:c"
+];
+
+## OPACITY
+
+menu-opacity = 1;
+inactive-opacity = 1;
+active-opacity = 1;
+frame-opacity = 1;
+inactive-opacity-override = false;
+alpha-step = 0.06;
+blur-background = false;
+blur-kern = "7x7box";
+# Blur background of opaque windows with transparent frames as well.
+blur-background-frame = false;
+# Do not let blur radius adjust based on window opacity.
+blur-background-fixed = true;
+blur-background-exclude = [
+    "! class_g = 'Conky'",
+    "class_g ?= 'xfdesktop'",
+    "window_type = 'dock'",
+    "class_g ?= 'Wine'"
+];
+
+## FADING
+
+fading = true;
+# The time between steps in a fade in milliseconds. (default 10).
+fade-delta = 5;
+# Opacity change between steps while fading in. (default 0.028).
+fade-in-step = 0.07;
+# Opacity change between steps while fading out. (default 0.03).
+fade-out-step = 0.07;
+# Fade windows in/out when opening/closing
+# no-fading-openclose = true;
+
+fade-exclude = [ ];
+
+## OTHER
+
+# Try to detect WM windows and mark them as active.
+mark-wmwin-focused = true;
+# Mark all non-WM but override-redirect windows active (e.g. menus).
+mark-ovredir-focused = true;
+use-ewmh-active-win = true;
+detect-rounded-corners = true;
+detect-client-opacity = true;
+refresh-rate = 144;
+vsync = "opengl-swc";
+# Enable DBE painting mode, intended to use with VSync to (hopefully) eliminate tearing.
+# Reported to have no effect, though.
+dbe = false;
+# Painting on X Composite overlay window. Recommended.
+paint-on-overlay = true;
+# Limit compton to repaint at most once every 1 / refresh_rate second to boost performance.
+# This should not be used with --vsync drm/opengl/opengl-oml as they essentially does --sw-opti's job already
+sw-opti = true;
+# Unredirect all windows if a full-screen opaque window is detected, to maximize performance for full-screen windows, like games.
+# Known to cause flickering when redirecting/unredirecting windows.
+# paint-on-overlay may make the flickering less obvious.
+unredir-if-possible = true;
+
+# Specify a list of conditions of windows that should always be considered focused.
+focus-exclude = [ ];
+
+detect-transient = true;
+detect-client-leader = true;
+
+## WINDOW TYPE SETTINGS
+
+wintypes:
+{
+    tooltip =
+    {
+        # fade: Fade the particular type of windows.
+        fade = true;
+        # shadow: Give those windows shadow
+        shadow = true;
+        # opacity: Default opacity for the type of windows.
+        opacity = 0.85;
+        # focus: Whether to always consider windows of this type focused.
+        focus = true;
+    };
+};
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 00000000..ab60303a
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,322 @@
+[global]
+    ### Display ###
+
+    # Which monitor should the notifications be displayed on.
+    monitor = 0
+
+    # Display notification on focused monitor.  Possible modes are:
+    #   mouse: follow mouse pointer
+    #   keyboard: follow window with keyboard focus
+    #   none: don't follow anything
+    #
+    # "keyboard" needs a window manager that exports the
+    # _NET_ACTIVE_WINDOW property.
+    # This should be the case for almost all modern window managers.
+    #
+    # If this option is set to mouse or keyboard, the monitor option
+    # will be ignored.
+    follow = mouse
+
+    # The geometry of the window:
+    #   [{width}]x{height}[+/-{x}+/-{y}]
+    # The geometry of the message window.
+    # The height is measured in number of notifications everything else
+    # in pixels.  If the width is omitted but the height is given
+    # ("-geometry x2"), the message window expands over the whole screen
+    # (dmenu-like).  If width is 0, the window expands to the longest
+    # message displayed.  A positive x is measured from the left, a
+    # negative from the right side of the screen.  Y is measured from
+    # the top and down respectively.
+    # The width can be negative.  In this case the actual width is the
+    # screen width minus the width defined in within the geometry option.
+    geometry = "500x8-6-42"
+    corner_radius = 0
+
+    # Show how many messages are currently hidden (because of geometry).
+    indicate_hidden = yes
+
+    # Shrink window if it's smaller than the width.  Will be ignored if
+    # width is 0.
+    shrink = no
+
+    # The transparency of the window.  Range: [0; 100].
+    # This option will only work if a compositing window manager is
+    # present (e.g. xcompmgr, compiz, etc.).
+    transparency = 0
+
+    # The height of the entire notification.  If the height is smaller
+    # than the font height and padding combined, it will be raised
+    # to the font height and padding.
+    notification_height = 0
+
+    # Draw a line of "separator_height" pixel height between two
+    # notifications.
+    # Set to 0 to disable.
+    separator_height = 4
+
+    # Padding between text and separator.
+    padding = 12
+
+    # Horizontal padding.
+    horizontal_padding = 12
+
+    # Defines width in pixels of frame around the notification window.
+    # Set to 0 to disable.
+    frame_width = 4
+
+    # Defines color of the frame around the notification window.
+    #frame_color = "#aaaaaa"
+     frame_color = "#31363b"
+
+    # Define a color for the separator.
+    # possible values are:
+    #  * auto: dunst tries to find a color fitting to the background;
+    #  * foreground: use the same color as the foreground;
+    #  * frame: use the same color as the frame;
+    #  * anything else will be interpreted as a X color.
+    separator_color = frame
+
+    # Sort messages by urgency.
+    sort = yes
+
+    # Don't remove messages, if the user is idle (no mouse or keyboard input)
+    # for longer than idle_threshold seconds.
+    # Set to 0 to disable.
+    idle_threshold = 120
+
+    ### Text ###
+
+    #font = Monospace 8
+     font = Roboto 10
+
+    # The spacing between lines.  If the height is smaller than the
+    # font height, it will get raised to the font height.
+    line_height = 0
+
+    # Possible values are:
+    # full: Allow a small subset of html markup in notifications:
+    #        <b>bold</b>
+    #        <i>italic</i>
+    #        <s>strikethrough</s>
+    #        <u>underline</u>
+    #
+    #        For a complete reference see
+    #        <http://developer.gnome.org/pango/stable/PangoMarkupFormat.html>.
+    #
+    # strip: This setting is provided for compatibility with some broken
+    #        clients that send markup even though it's not enabled on the
+    #        server. Dunst will try to strip the markup but the parsing is
+    #        simplistic so using this option outside of matching rules for
+    #        specific applications *IS GREATLY DISCOURAGED*.
+    #
+    # no:    Disable markup parsing, incoming notifications will be treated as
+    #        plain text. Dunst will not advertise that it has the body-markup
+    #        capability if this is set as a global setting.
+    #
+    # It's important to note that markup inside the format option will be parsed
+    # regardless of what this is set to.
+    markup = full
+
+    # The format of the message.  Possible variables are:
+    #   %a  appname
+    #   %s  summary
+    #   %b  body
+    #   %i  iconname (including its path)
+    #   %I  iconname (without its path)
+    #   %p  progress value if set ([  0%] to [100%]) or nothing
+    #   %n  progress value if set without any extra characters
+    # Markup is allowed
+    format = "<span font='Bold'>%s</span> <span font='Light'>(%a)</span>\n%b"
+
+    # Alignment of message text.
+    # Possible values are "left", "center" and "right".
+    alignment = left
+
+    # Show age of message if message is older than show_age_threshold
+    # seconds.
+    # Set to -1 to disable.
+    show_age_threshold = 60
+
+    # Split notifications into multiple lines if they don't fit into
+    # geometry.
+    word_wrap = yes
+
+    # Ignore newlines '\n' in notifications.
+    ignore_newline = no
+
+    # Merge multiple notifications with the same content
+    stack_duplicates = true
+
+    # Hide the count of merged notifications with the same content
+    hide_duplicate_count = false
+
+    # Display indicators for URLs (U) and actions (A).
+    show_indicators = yes
+
+    ### Icons ###
+
+    # Align icons left/right/off
+    icon_position = right
+
+    # Scale larger icons down to this size, set to 0 to disable
+    max_icon_size = 48
+
+    # Paths to default icons.
+    icon_path = /usr/share/icons/Papirus-Dark/48x48/status/:/usr/share/icons/Papirus-Dark/48x48/devices/:/usr/share/icons/Papirus-Dark/48x48/apps
+
+    ### History ###
+
+    # Should a notification popped up from history be sticky or timeout
+    # as if it would normally do.
+    sticky_history = yes
+
+    # Maximum amount of notifications kept in history
+    history_length = 20
+
+    ### Misc/Advanced ###
+
+    # dmenu path.
+    dmenu = /usr/bin/rofi -dmenu -p dunst:
+
+    # Browser for opening urls in context menu.
+    browser = xdg-open
+
+    # Always run rule-defined scripts, even if the notification is suppressed
+    always_run_script = true
+
+    # Define the title of the windows spawned by dunst
+    title = Dunst
+
+    # Define the class of the windows spawned by dunst
+    class = Dunst
+
+    # Print a notification on startup.
+    # This is mainly for error detection, since dbus (re-)starts dunst
+    # automatically after a crash.
+    startup_notification = false
+
+    ### Legacy
+
+    # Use the Xinerama extension instead of RandR for multi-monitor support.
+    # This setting is provided for compatibility with older nVidia drivers that
+    # do not support RandR and using it on systems that support RandR is highly
+    # discouraged.
+    #
+    # By enabling this setting dunst will not be able to detect when a monitor
+    # is connected or disconnected which might break follow mode if the screen
+    # layout changes.
+    force_xinerama = false
+
+# Experimental features that may or may not work correctly. Do not expect them
+# to have a consistent behaviour across releases.
+[experimental]
+    # Calculate the dpi to use on a per-monitor basis.
+    # If this setting is enabled the Xft.dpi value will be ignored and instead
+    # dunst will attempt to calculate an appropriate dpi value for each monitor
+    # using the resolution and physical size. This might be useful in setups
+    # where there are multiple screens with very different dpi values.
+    per_monitor_dpi = false
+
+[shortcuts]
+
+    # Shortcuts are specified as [modifier+][modifier+]...key
+    # Available modifiers are "ctrl", "mod1" (the alt-key), "mod2",
+    # "mod3" and "mod4" (windows-key).
+    # Xev might be helpful to find names for keys.
+
+    # Close notification.
+    close = mod1+shift+space
+
+    # Close all notifications.
+    close_all = mod1+shift+enter
+
+    # Redisplay last message(s).
+    # On the US keyboard layout "grave" is normally above TAB and left
+    # of "1". Make sure this key actually exists on your keyboard layout,
+    # e.g. check output of 'xmodmap -pke'
+    history = mod1+shift+d
+
+    # Context menu.
+    context = mod1+shift+o
+
+[urgency_low]
+    # IMPORTANT: colors have to be defined in quotation marks.
+    # Otherwise the "#" and following would be interpreted as a comment.
+    background = "#232629"
+    foreground = "#eff0f1"
+    timeout = 10
+    # Icon for notifications with low urgency, uncomment to enable
+    #icon = /path/to/icon
+
+[urgency_normal]
+    background = "#232629"
+    foreground = "#eff0f1"
+    timeout = 10
+    # Icon for notifications with normal urgency, uncomment to enable
+    #icon = /path/to/icon
+
+[urgency_critical]
+    background = "#232629"
+    foreground = "#fdbc4b"
+    timeout = 0
+    # Icon for notifications with critical urgency, uncomment to enable
+    #icon = /path/to/icon
+
+# Every section that isn't one of the above is interpreted as a rules to
+# override settings for certain messages.
+# Messages can be matched by "appname", "summary", "body", "icon", "category",
+# "msg_urgency" and you can override the "timeout", "urgency", "foreground",
+# "background", "new_icon" and "format".
+# Shell-like globbing will get expanded.
+#
+# SCRIPTING
+# You can specify a script that gets run when the rule matches by
+# setting the "script" option.
+# The script will be called as follows:
+#   script appname summary body icon urgency
+# where urgency can be "LOW", "NORMAL" or "CRITICAL".
+#
+# NOTE: if you don't want a notification to be displayed, set the format
+# to "".
+# NOTE: It might be helpful to run dunst -print in a terminal in order
+# to find fitting options for rules.
+
+#[espeak]
+#    summary = "*"
+#    script = dunst_espeak.sh
+
+#[script-test]
+#    summary = "*script*"
+#    script = dunst_test.sh
+
+#[ignore]
+#    # This notification will not be displayed
+#    summary = "foobar"
+#    format = ""
+
+#[history-ignore]
+#    # This notification will not be saved in history
+#    summary = "foobar"
+#    history_ignore = yes
+
+#[signed_on]
+#    appname = Pidgin
+#    summary = "*signed on*"
+#    urgency = low
+#
+#[signed_off]
+#    appname = Pidgin
+#    summary = *signed off*
+#    urgency = low
+#
+#[says]
+#    appname = Pidgin
+#    summary = *says*
+#    urgency = critical
+#
+#[twitter]
+#    appname = Pidgin
+#    summary = *twitter.com*
+#    urgency = normal
+#
+# vim: ft=cfg
diff --git a/.config/i3/config b/.config/i3/config
index 5c733764..ac456656 100644
--- a/.config/i3/config
+++ b/.config/i3/config
@@ -3,20 +3,6 @@
 # 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
@@ -44,7 +30,27 @@ workspace $w7 output $monsec
 font pango:Roboto 10
 new_window pixel 4
 focus_on_window_activation none
-gaps inner 8
+gaps top 36
+gaps inner 6
+gaps bottom 36
+
+set $red #ed1515
+set $green #11d116
+set $yellow #fdbc4b
+set $blue #1d99f3
+set $magenta #9b59b6
+set $cyan #1abc9c
+set $white #eff0f1
+set $black #232629
+set $gray #31363b
+
+#	<colorclass>		<brd>	<bg>	<text>	<ind>	<chld>
+	client.focused		$blue	$black	$white	$gray	$blue
+	client.focused_inactive	$gray	$black	$white	$gray	$gray
+	client.unfocused	$gray	$black	$white	$gray	$gray
+	client.urgent		$yellow	$black	$white	$gray	$yellow
+	client.placeholder	$magenta $black	$white	$gray	$magenta
+	client.background	$bg
 
 ## KEYBINDINGS
 # Set modifiers
diff --git a/.config/polybar/config b/.config/polybar/config
index 43090197..e200e4d0 100644
--- a/.config/polybar/config
+++ b/.config/polybar/config
@@ -12,22 +12,27 @@
 
 ## VARIABLES
 [res/colors]
-red = #BF616A
-green = #A3BE8C
-yellow = #EBCB8B
-blue = #81A1C1
-magenta = #B48EAD
-cyan = #88C0D0
-white = #D8DEE9
-black = #2E3440
-gray = #3B4252
+red = #ed1515
+green = #11d116
+yellow = #fdbc4b
+blue = #1d99f3
+magenta = #9b59b6
+cyan = #1abc9c
+white = #eff0f1
+black = #232629
+gray = #31363b
 
-bg = #2E3440
-fg = #D8DEE9
-border = #3B4252
-selection = #88C0D0
+bg = #232629
+fg = #eff0f1
+border = #31363b
+selection = #1d99f3
 
 [res/config]
+bar-width = 50
+bar-fill = |
+bar-empty = |
+bar-indicator = 
+border-size = 4
 padding = 2
 
 [settings]
@@ -39,36 +44,53 @@ format-background = ${res/colors.bg}
 [template/bar]
 bottom = true
 wm-restack = ${env:PB_WM_RESTACK:i3}
+override-redirect = true
 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"
+height = 32
+width = 100%:-12
+offset-x = 6
+padding = 2
+border-left-size = ${res/config.border-size}
+border-right-size = ${res/config.border-size}
+font-0 = "Roboto:style=Regular:size=10;2"
+font-1 = "Deja Vu Sans Mono:style=Regular:size=10;2"
 
 [bar/primary]
 monitor = ${env:PB_MONITOR:eDP-1}
+bottom = false
 inherit = template/bar
-border-top-size = 4
-modules-left = i3 cpu memory battery temp
-modules-right = backlight pulse date
+border-bottom-size = ${res/config.border-size}
+modules-left = i3
+modules-center = xwindow
+
+[bar/primary-2]
+monitor = ${env:PB_MONITOR:eDP-1}
+inherit = template/bar
+border-top-size = ${res/config.border-size}
+modules-left = battery cpu memory
+modules-right = backlight pulse | date
 
 ## MODULES
+[module/|]
+type = custom/text
+content = |
+content-foreground = ${res/colors.gray}
+
 [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 = █
+format = <bar>
+format-prefix = "BRI: "
+format-prefix-foreground = ${res/colors.blue}
+bar-width = ${res/config.bar-width}
+bar-fill = ${res/config.bar-fill}
+bar-fill-foreground = ${res/colors.blue}
+bar-empty = ${res/config.bar-empty}
+bar-empty-foreground = ${res/colors.gray}
+bar-indicator = ${res/config.bar-indicator}
 
 [module/battery]
 type = internal/battery
@@ -76,42 +98,33 @@ 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 = █
+format-charging = <bar-capacity>
+format-charging-prefix = "Charging: "
+format-charging-prefix-foreground = ${res/colors.green}
+format-discharging = <bar-capacity>
+format-discharging-prefix = "Battery: "
+format-discharging-prefix-foreground = ${res/colors.green}
+format-full = <bar-capacity>
+bar-capacity-width = ${res/config.bar-width}
+bar-capacity-fill = ${res/config.bar-fill}
+bar-capacity-fill-foreground = ${res/colors.green}
+bar-capacity-empty = ${res/config.bar-empty}
+bar-capacity-empty-foreground = ${res/colors.gray}
+bar-capacity-indicator = ${res/config.bar-indicator}
 
 [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}
+format = <bar-load>
+format-prefix = "CPU: "
+format-prefix-foreground = ${res/colors.blue}
+bar-load-width = ${res/config.bar-width}
+bar-load-fill = ${res/config.bar-fill}
+bar-load-fill-foreground = ${res/colors.blue}
+bar-load-empty = ${res/config.bar-empty}
+bar-load-empty-foreground = ${res/colors.gray}
+bar-load-indicator = ${res/config.bar-indicator}
 
 [module/date]
 type = internal/date
@@ -128,82 +141,50 @@ format-padding = 0
 enable-scroll = false
 pin-workspaces = true
 
-label-mode-padding = ${res/config.padding}
+label-mode-padding = 4
 label-mode-background = ${res/colors.red}
 label-focused = %name%
-label-focused-padding = ${res/config.padding}
+label-focused-padding = 4
 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-unfocused-padding = 4
 label-visible = %name%
 label-visible-background = ${res/colors.gray}
-label-visible-padding = ${res/config.padding}
+label-visible-padding = 4
 
 [module/memory]
 type = internal/memory
 
-format = <ramp-used> <ramp-swap-used> <label>
+format = <bar-used> <label>
+format-prefix = "Memory: "
+format-prefix-foreground = ${res/colors.magenta}
 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}
+bar-used-width = ${res/config.bar-width}
+bar-used-fill = ${res/config.bar-fill}
+bar-used-fill-foreground = ${res/colors.magenta}
+bar-used-empty = ${res/config.bar-empty}
+bar-used-empty-foreground = ${res/colors.gray}
+bar-used-indicator = ${res/config.bar-indicator}
 
 [module/pulse]
 type = internal/pulseaudio
-format-volume = <ramp-volume> <label-volume>
-format-muted = <ramp-volume> <label-muted>
-format-muted-foreground = ${res/colors.red}
+format-volume = <bar-volume> <label-volume>
+format-volume-prefix = "Volume: "
+format-volume-foreground = ${res/colors.blue}
+format-muted = <bar-volume> <label-muted>
+format-muted-prefix = "Volume: "
+format-muted-prefix-foreground = ${res/colors.blue}
 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 = █
+label-muted-foreground = ${res/colors.gray}
+bar-volume-width = ${res/config.bar-width}
+bar-volume-fill = ${res/config.bar-fill}
+bar-volume-fill-foreground = ${res/colors.blue}
+bar-volume-empty = ${res/config.bar-empty}
+bar-volume-empty-foreground = ${res/colors.gray}
+bar-volume-indicator = ${res/config.bar-indicator}
 
-[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}
+[module/xwindow]
+type = internal/xwindow
+label = %title:40%
diff --git a/.config/polybar/launch.sh b/.config/polybar/launch.sh
index 387322de..825dd767 100755
--- a/.config/polybar/launch.sh
+++ b/.config/polybar/launch.sh
@@ -29,7 +29,7 @@ step_fallback() {
 		exit 51
 	fi
 }
-step_configure_restack() {
+step_configure() {
 	# Restack compatibility
 	if pgrep -U "$UID" bspwm > /dev/null 2>&1; then
 		export PB_WM_RESTACK="bspwm"
@@ -65,8 +65,10 @@ step_wait() {
 
 # Main
 main() {
+	# Dirty hack for i3
+	sleep 2
 	step_fallback
-	step_configure_restack
+	step_configure
 	step_spawn_primary
 	step_spawn_secondary
 	step_wait
diff --git a/.xinitrc b/.xinitrc
new file mode 100755
index 00000000..749cafd5
--- /dev/null
+++ b/.xinitrc
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+if [ -x "$HOME/.firestarter/firestarter" ]; then
+	export FS_DIEONWM=true
+	exec "$HOME/.firestarter/firestarter" | tee .firestarter.log
+fi