diff --git a/awesome/autorun.sh b/awesome/autorun.sh
deleted file mode 100755
index 9a70bc6..0000000
--- a/awesome/autorun.sh
+++ /dev/null
@@ -1,11 +0,0 @@
-#!/bin/sh
-
-run() {
-  if ! pgrep -f "$1" ;
-  then
-    "$@"&
-  fi
-}
-
-# Usage:
-# run "program [some arguments]"
diff --git a/awesome/awesomewm-vim-tmux-navigator b/awesome/awesomewm-vim-tmux-navigator
new file mode 160000
index 0000000..e448723
--- /dev/null
+++ b/awesome/awesomewm-vim-tmux-navigator
@@ -0,0 +1 @@
+Subproject commit e448723a099a4a702830ffa73791bf5e99b5ef69
diff --git a/awesome/components/exit-screen.lua b/awesome/components/exit-screen.lua
new file mode 100644
index 0000000..20d29bc
--- /dev/null
+++ b/awesome/components/exit-screen.lua
@@ -0,0 +1,225 @@
+--      ███████╗██╗  ██╗██╗████████╗    ███████╗ ██████╗██████╗ ███████╗███████╗███╗   ██╗
+--      ██╔════╝╚██╗██╔╝██║╚══██╔══╝    ██╔════╝██╔════╝██╔══██╗██╔════╝██╔════╝████╗  ██║
+--      █████╗   ╚███╔╝ ██║   ██║       ███████╗██║     ██████╔╝█████╗  █████╗  ██╔██╗ ██║
+--      ██╔══╝   ██╔██╗ ██║   ██║       ╚════██║██║     ██╔══██╗██╔══╝  ██╔══╝  ██║╚██╗██║
+--      ███████╗██╔╝ ██╗██║   ██║       ███████║╚██████╗██║  ██║███████╗███████╗██║ ╚████║
+--      ╚══════╝╚═╝  ╚═╝╚═╝   ╚═╝       ╚══════╝ ╚═════╝╚═╝  ╚═╝╚══════╝╚══════╝╚═╝  ╚═══╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local gears = require("gears")
+local wibox = require("wibox")
+local beautiful = require("beautiful")
+local clickable_container = require("widgets.clickable-container")
+
+local dpi = beautiful.xresources.apply_dpi
+local ICON_DIR = gears.filesystem.get_configuration_dir() .. "/icons/exit-screen/" .. beautiful.name .. "/"
+
+-- define module table
+local exit_screen = {}
+
+
+-- ===================================================================
+-- Appearance
+-- ===================================================================
+
+
+local icon_size = dpi(90)
+
+local build_button = function(icon)
+   local button = wibox.widget {
+      wibox.widget {
+         wibox.widget {
+            wibox.widget {
+               image = icon,
+               widget = wibox.widget.imagebox
+            },
+            top = dpi(16),
+            bottom = dpi(16),
+            left = dpi(16),
+            right = dpi(16),
+            widget = wibox.container.margin
+         },
+         shape = gears.shape.circle,
+         forced_width = icon_size,
+         forced_height = icon_size,
+         widget = clickable_container
+      },
+      left = dpi(24),
+      right = dpi(24),
+      widget = wibox.container.margin
+   }
+
+   return button
+end
+
+
+-- ===================================================================
+-- Functionality
+-- ===================================================================
+
+
+local exit_screen_grabber
+
+local function suspend_command()
+   exit_screen.hide()
+   awful.spawn.with_shell(apps.lock .. " & systemctl suspend")
+end
+
+local function exit_command()
+   awesome.quit()
+end
+
+local function lock_command()
+   exit_screen.hide()
+   awful.spawn.with_shell("sleep 1 && " .. apps.lock)
+end
+
+local function poweroff_command()
+   awful.spawn.with_shell("poweroff")
+   awful.keygrabber.stop(exit_screen_grabber)
+end
+
+local function reboot_command()
+   awful.spawn.with_shell("reboot")
+   awful.keygrabber.stop(exit_screen_grabber)
+end
+
+local poweroff = build_button(ICON_DIR .. "power.png", "Shutdown")
+poweroff:connect_signal(
+   "button::release",
+   function()
+      poweroff_command()
+   end
+)
+
+local reboot = build_button(ICON_DIR .. "restart.png", "Restart")
+reboot:connect_signal(
+   "button::release",
+   function()
+      reboot_command()
+   end
+)
+
+local suspend = build_button(ICON_DIR .. "sleep.png", "Sleep")
+suspend:connect_signal(
+   "button::release",
+   function()
+      suspend_command()
+   end
+)
+
+local exit = build_button(ICON_DIR .. "logout.png", "Logout")
+exit:connect_signal(
+   "button::release",
+   function()
+      exit_command()
+   end
+)
+
+local lock = build_button(ICON_DIR .. "lock.png", "Lock")
+lock:connect_signal(
+   "button::release",
+   function()
+      lock_command()
+   end
+)
+
+-- subscribe to the show_exit_screen signal
+-- show the exit screen when signal is broadcasted
+awesome.connect_signal("show_exit_screen",
+   function()
+      exit_screen_grabber = awful.keygrabber.run(
+         function(_, key, event)
+            if event == "release" then
+               return
+            end
+
+            if key == "s" then
+               suspend_command()
+            elseif key == "e" then
+               exit_command()
+            elseif key == "l" then
+               lock_command()
+            elseif key == "p" then
+               poweroff_command()
+            elseif key == "r" then
+               reboot_command()
+            elseif key == "Escape" or key == "q" or key == "x" then
+               exit_screen.hide()
+            end
+         end
+      )
+      exit_screen.widget.visible = true
+   end
+)
+
+-- hide exit screen
+function exit_screen.hide()
+   awful.keygrabber.stop(exit_screen_grabber)
+   exit_screen.widget.visible = false
+end
+
+
+-- ===================================================================
+-- Create Widget
+-- ===================================================================
+
+
+local screen_geometry = awful.screen.focused().geometry
+
+-- Create the widget
+exit_screen.widget = wibox({
+   x = screen_geometry.x,
+   y = screen_geometry.y,
+   visible = false,
+   ontop = true,
+   type = "splash",
+   height = screen_geometry.height,
+   width = screen_geometry.width
+})
+
+exit_screen.widget:buttons(
+   gears.table.join(
+      -- Middle click - Hide exit_screen
+      awful.button({}, 2,
+         function()
+            exit_screen.hide()
+         end
+      ),
+      -- Right click - Hide exit_screen
+      awful.button({}, 3,
+         function()
+            exit_screen.hide()
+         end
+      )
+   )
+)
+
+-- Item placement
+exit_screen.widget:setup {
+   nil,
+   {
+      nil,
+      {
+         poweroff,
+         reboot,
+         suspend,
+         exit,
+         lock,
+         layout = wibox.layout.fixed.horizontal
+      },
+      nil,
+      expand = "none",
+      layout = wibox.layout.align.horizontal
+   },
+   nil,
+   expand = "none",
+   layout = wibox.layout.align.vertical
+}
+
+return exit_screen
diff --git a/awesome/components/notifications.lua b/awesome/components/notifications.lua
new file mode 100644
index 0000000..afbce2e
--- /dev/null
+++ b/awesome/components/notifications.lua
@@ -0,0 +1,108 @@
+--      ███╗   ██╗ ██████╗ ████████╗██╗███████╗██╗ ██████╗ █████╗ ████████╗██╗ ██████╗ ███╗   ██╗███████╗
+--      ████╗  ██║██╔═══██╗╚══██╔══╝██║██╔════╝██║██╔════╝██╔══██╗╚══██╔══╝██║██╔═══██╗████╗  ██║██╔════╝
+--      ██╔██╗ ██║██║   ██║   ██║   ██║█████╗  ██║██║     ███████║   ██║   ██║██║   ██║██╔██╗ ██║███████╗
+--      ██║╚██╗██║██║   ██║   ██║   ██║██╔══╝  ██║██║     ██╔══██║   ██║   ██║██║   ██║██║╚██╗██║╚════██║
+--      ██║ ╚████║╚██████╔╝   ██║   ██║██║     ██║╚██████╗██║  ██║   ██║   ██║╚██████╔╝██║ ╚████║███████║
+--      ╚═╝  ╚═══╝ ╚═════╝    ╚═╝   ╚═╝╚═╝     ╚═╝ ╚═════╝╚═╝  ╚═╝   ╚═╝   ╚═╝ ╚═════╝ ╚═╝  ╚═══╝╚══════╝
+
+-- ===================================================================
+-- Imports
+-- ===================================================================
+
+
+local naughty = require("naughty")
+local beautiful = require("beautiful")
+local gears = require("gears")
+local wibox = require("wibox")
+local awful = require("awful")
+local dpi = beautiful.xresources.apply_dpi
+
+
+-- ===================================================================
+-- Theme Definitions
+-- ===================================================================
+
+
+naughty.config.defaults.ontop = true
+naughty.config.defaults.icon_size = dpi(32)
+naughty.config.defaults.screen = awful.screen.focused()
+naughty.config.defaults.timeout = 3
+naughty.config.defaults.title = "System Notification"
+naughty.config.defaults.margin = dpi(16)
+naughty.config.defaults.border_width = 0
+naughty.config.defaults.position = "top_right"
+naughty.config.defaults.shape = function(cr, w, h)
+   gears.shape.rounded_rect(cr, w, h, dpi(6))
+end
+
+naughty.config.padding = dpi(7)
+naughty.config.spacing = dpi(7)
+naughty.config.icon_dirs = {
+   "/usr/share/icons/Tela-dark",
+   "/usr/share/pixmaps/"
+}
+naughty.config.icon_formats = {"png", "svg"}
+
+-- Timeouts
+naughty.config.presets.low.timeout = 3
+naughty.config.presets.critical.timeout = 0
+
+naughty.config.presets.normal = {
+   font = beautiful.title_font,
+   fg = beautiful.fg_normal,
+   bg = beautiful.bg_normal,
+   position = "top_right"
+}
+
+naughty.config.presets.low = {
+   font = beautiful.title_font,
+   fg = beautiful.fg_normal,
+   bg = beautiful.bg_normal,
+   position = "top_right"
+}
+
+naughty.config.presets.critical = {
+   font = "SF Display Bold 10",
+   fg = "#ffffff",
+   bg = "#ff0000",
+   position = "top_right",
+   timeout = 0
+}
+
+naughty.config.presets.ok = naughty.config.presets.normal
+naughty.config.presets.info = naughty.config.presets.normal
+naughty.config.presets.warn = naughty.config.presets.critical
+
+
+-- ===================================================================
+-- Error Handling
+-- ===================================================================
+
+
+if awesome.startup_errors then
+   naughty.notify({
+      preset = naughty.config.presets.critical,
+      title = "Oops, there were errors during startup!",
+      text = awesome.startup_errors
+   })
+end
+
+do
+   local in_error = false
+   awesome.connect_signal(
+      "debug::error",
+      function(err)
+         if in_error then
+            return
+         end
+         in_error = true
+
+         naughty.notify({
+            preset = naughty.config.presets.critical,
+            title = "Oops, an error happened!",
+            text = tostring(err)
+         })
+         in_error = false
+      end
+   )
+end
diff --git a/awesome/components/pastel/top-panel.lua b/awesome/components/pastel/top-panel.lua
new file mode 100644
index 0000000..91f19f7
--- /dev/null
+++ b/awesome/components/pastel/top-panel.lua
@@ -0,0 +1,74 @@
+--      ████████╗ ██████╗ ██████╗     ██████╗  █████╗ ███╗   ██╗███████╗██╗
+--      ╚══██╔══╝██╔═══██╗██╔══██╗    ██╔══██╗██╔══██╗████╗  ██║██╔════╝██║
+--         ██║   ██║   ██║██████╔╝    ██████╔╝███████║██╔██╗ ██║█████╗  ██║
+--         ██║   ██║   ██║██╔═══╝     ██╔═══╝ ██╔══██║██║╚██╗██║██╔══╝  ██║
+--         ██║   ╚██████╔╝██║         ██║     ██║  ██║██║ ╚████║███████╗███████╗
+--         ╚═╝    ╚═════╝ ╚═╝         ╚═╝     ╚═╝  ╚═╝╚═╝  ╚═══╝╚══════╝╚══════╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local beautiful = require("beautiful")
+local wibox = require("wibox")
+local gears = require("gears")
+local dpi = beautiful.xresources.apply_dpi
+
+-- import widgets
+local task_list = require("widgets.task-list")
+
+-- define module table
+local top_panel = {}
+
+
+-- ===================================================================
+-- Bar Creation
+-- ===================================================================
+
+
+top_panel.create = function(s)
+   local panel = awful.wibar({
+      screen = s,
+      position = "top",
+      ontop = true,
+      height = beautiful.top_panel_height,
+      width = s.geometry.width,
+   })
+
+   panel:setup {
+      expand = "none",
+      layout = wibox.layout.align.horizontal,
+      task_list.create(s),
+      wibox.widget.textclock('%a %b %d, %H:%M:%S', 1),
+      {
+         layout = wibox.layout.fixed.horizontal,
+         wibox.layout.margin(wibox.widget.systray(), dpi(5), dpi(5), dpi(5), dpi(5)),
+         require("widgets.bluetooth"),
+         require("widgets.network")(),
+         require("widgets.battery"),
+         wibox.layout.margin(require("widgets.layout-box"), dpi(5), dpi(5), dpi(5), dpi(5))
+      }
+   }
+
+
+   -- ===================================================================
+   -- Functionality
+   -- ===================================================================
+
+
+   -- hide panel when client is fullscreen
+   local function change_panel_visibility(client)
+      if client.screen == s then
+         panel.ontop = not client.fullscreen
+      end
+   end
+
+   -- connect panel visibility function to relevant signals
+   client.connect_signal("property::fullscreen", change_panel_visibility)
+   client.connect_signal("focus", change_panel_visibility)
+
+end
+
+return top_panel
diff --git a/awesome/components/pastel/wallpaper.lua b/awesome/components/pastel/wallpaper.lua
new file mode 100644
index 0000000..d6b48dd
--- /dev/null
+++ b/awesome/components/pastel/wallpaper.lua
@@ -0,0 +1,101 @@
+--      ██╗    ██╗ █████╗ ██╗     ██╗     ██████╗  █████╗ ██████╗ ███████╗██████╗
+--      ██║    ██║██╔══██╗██║     ██║     ██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗
+--      ██║ █╗ ██║███████║██║     ██║     ██████╔╝███████║██████╔╝█████╗  ██████╔╝
+--      ██║███╗██║██╔══██║██║     ██║     ██╔═══╝ ██╔══██║██╔═══╝ ██╔══╝  ██╔══██╗
+--      ╚███╔███╔╝██║  ██║███████╗███████╗██║     ██║  ██║██║     ███████╗██║  ██║
+--       ╚══╝╚══╝ ╚═╝  ╚═╝╚══════╝╚══════╝╚═╝     ╚═╝  ╚═╝╚═╝     ╚══════╝╚═╝  ╚═╝
+
+-- ===================================================================
+-- Imports
+-- ===================================================================
+
+
+local awful = require("awful")
+local gears = require("gears")
+local naughty = require("naughty")
+
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local is_blurred = false;
+
+local wallpaper_dir = gears.filesystem.get_configuration_dir() .. "/wallpaper"
+local wallpaper = wallpaper_dir .. "/wallpaper.png"
+local blurred_wallpaper = wallpaper_dir .. "/blurredWallpaper.png"
+
+awful.spawn.with_shell("feh --bg-fill " .. wallpaper)
+
+--- Check if a file or directory exists in this path
+local function exists(file)
+   local ok, err, code = os.rename(file, file)
+   if not ok then
+      if code == 13 then
+         -- Permission denied, but it exists
+         return true
+      end
+   end
+   return ok, err
+end
+
+-- check if blurred wallpaper needs to be created
+if not exists(blurred_wallpaper) then
+   naughty.notify({
+      preset = naughty.config.presets.normal,
+      title = "Wallpaper",
+      text = "Generating blurred wallpaper..."
+   })
+   -- uses image magick to create a blurred version of the wallpaper
+   awful.spawn.with_shell("convert -filter Gaussian -blur 0x30 " .. wallpaper .. " " .. blurred_wallpaper)
+end
+
+
+-- ===================================================================
+-- Functionality
+-- ===================================================================
+
+
+-- changes to blurred wallpaper
+local function blur()
+   if not is_blurred then
+      awful.spawn.with_shell("feh --bg-fill " .. blurred_wallpaper)
+      is_blurred = true
+   end
+end
+
+-- changes to normal wallpaper
+local function unblur()
+   if is_blurred then
+      awful.spawn.with_shell("feh --bg-fill " .. wallpaper)
+      is_blurred = false
+   end
+end
+
+-- blur / unblur on tag change
+tag.connect_signal("property::selected", function(t)
+   -- check if tag has any clients
+   for _ in pairs(t:clients()) do
+      blur()
+      return
+   end
+   -- unblur if tag has no clients
+   unblur()
+end)
+
+-- check if wallpaper should be blurred on client open
+client.connect_signal("manage", function(c)
+   blur()
+end)
+
+-- check if wallpaper should be unblurred on client close
+client.connect_signal("unmanage", function(c)
+   local t = awful.screen.focused().selected_tag
+   -- check if tag has any clients
+   for _ in pairs(t:clients()) do
+      return
+   end
+   -- unblur if tag has no clients
+   unblur()
+end)
diff --git a/awesome/components/volume-adjust.lua b/awesome/components/volume-adjust.lua
new file mode 100644
index 0000000..e34b398
--- /dev/null
+++ b/awesome/components/volume-adjust.lua
@@ -0,0 +1,109 @@
+--      ██╗   ██╗ ██████╗ ██╗     ██╗   ██╗███╗   ███╗███████╗
+--      ██║   ██║██╔═══██╗██║     ██║   ██║████╗ ████║██╔════╝
+--      ██║   ██║██║   ██║██║     ██║   ██║██╔████╔██║█████╗
+--      ╚██╗ ██╔╝██║   ██║██║     ██║   ██║██║╚██╔╝██║██╔══╝
+--       ╚████╔╝ ╚██████╔╝███████╗╚██████╔╝██║ ╚═╝ ██║███████╗
+--        ╚═══╝   ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝
+
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local wibox = require("wibox")
+local awful = require("awful")
+local gears = require("gears")
+local beautiful = require("beautiful")
+local dpi = beautiful.xresources.apply_dpi
+
+local offsetx = dpi(56)
+local offsety = dpi(300)
+local screen = awful.screen.focused()
+local icon_dir = gears.filesystem.get_configuration_dir() .. "/icons/volume/" .. beautiful.name .. "/"
+
+
+-- ===================================================================
+-- Appearance & Functionality
+-- ===================================================================
+
+
+local volume_icon = wibox.widget {
+   widget = wibox.widget.imagebox
+}
+
+-- create the volume_adjust component
+local volume_adjust = wibox({
+   screen = awful.screen.focused(),
+   x = screen.geometry.width - offsetx,
+   y = (screen.geometry.height / 2) - (offsety / 2),
+   width = dpi(48),
+   height = offsety,
+   shape = gears.shape.rounded_rect,
+   visible = false,
+   ontop = true
+})
+
+local volume_bar = wibox.widget{
+   widget = wibox.widget.progressbar,
+   shape = gears.shape.rounded_bar,
+   color = "#efefef",
+   background_color = beautiful.bg_focus,
+   max_value = 100,
+   value = 0
+}
+
+volume_adjust:setup {
+   layout = wibox.layout.align.vertical,
+   {
+      wibox.container.margin(
+         volume_bar, dpi(14), dpi(20), dpi(20), dpi(20)
+      ),
+      forced_height = offsety * 0.75,
+      direction = "east",
+      layout = wibox.container.rotate
+   },
+   wibox.container.margin(
+      volume_icon
+   )
+}
+
+-- create a 4 second timer to hide the volume adjust
+-- component whenever the timer is started
+local hide_volume_adjust = gears.timer {
+   timeout = 4,
+   autostart = true,
+   callback = function()
+      volume_adjust.visible = false
+   end
+}
+
+-- show volume-adjust when "volume_change" signal is emitted
+awesome.connect_signal("volume_change",
+   function()
+      -- set new volume value
+      awful.spawn.easy_async_with_shell(
+         "amixer sget Master | grep 'Right:' | awk -F '[][]' '{print $2}'| sed 's/[^0-9]//g'",
+         function(stdout)
+            local volume_level = tonumber(stdout)
+            volume_bar.value = volume_level
+            if (volume_level > 40) then
+               volume_icon:set_image(icon_dir .. "volume.png")
+            elseif (volume_level > 0) then
+               volume_icon:set_image(icon_dir .. "volume-low.png")
+            else
+               volume_icon:set_image(icon_dir .. "volume-off.png")
+            end
+         end,
+         false
+      )
+
+      -- make volume_adjust component visible
+      if volume_adjust.visible then
+         hide_volume_adjust:again()
+      else
+         volume_adjust.visible = true
+         hide_volume_adjust:start()
+      end
+   end
+)
diff --git a/awesome/configuration/alacritty.yml b/awesome/configuration/alacritty.yml
new file mode 100644
index 0000000..3443896
--- /dev/null
+++ b/awesome/configuration/alacritty.yml
@@ -0,0 +1,560 @@
+# Configuration for Alacritty, the GPU enhanced terminal emulator.
+
+# Any items in the `env` entry below will be added as
+# environment variables. Some entries may override variables
+# set by alacritty itself.
+#env:
+  # TERM variable
+  #
+  # This value is used to set the `$TERM` environment variable for
+  # each instance of Alacritty. If it is not present, alacritty will
+  # check the local terminfo database and use `alacritty` if it is
+  # available, otherwise `xterm-256color` is used.
+  #TERM: alacritty
+
+window:
+  # Window dimensions (changes require restart)
+  #
+  # Specified in number of columns/lines, not pixels.
+  # If both are `0`, this setting is ignored.
+  #dimensions:
+  #  columns: 0
+  #  lines: 0
+
+  # Window position (changes require restart)
+  #
+  # Specified in number of pixels.
+  # If the position is not set, the window manager will handle the placement.
+  #position:
+  #  x: 0
+  #  y: 0
+
+  # Window padding (changes require restart)
+  #
+  # Blank space added around the window in pixels. This padding is scaled
+  # by DPI and the specified value is always added at both opposing sides.
+  padding:
+    x: 10
+    y: 15
+
+  # Spread additional padding evenly around the terminal content.
+  #dynamic_padding: false
+
+  # Window decorations
+  #
+  # Values for `decorations`:
+  #     - full: Borders and title bar
+  #     - none: Neither borders nor title bar
+  #
+  # Values for `decorations` (macOS only):
+  #     - transparent: Title bar, transparent background and title bar buttons
+  #     - buttonless: Title bar, transparent background, but no title bar buttons
+  #decorations: full
+
+  # Startup Mode (changes require restart)
+  #
+  # Values for `startup_mode`:
+  #   - Windowed
+  #   - Maximized
+  #   - Fullscreen
+  #
+  # Values for `startup_mode` (macOS only):
+  #   - SimpleFullscreen
+  #startup_mode: Windowed
+
+  # Window title
+  #title: Alacritty
+
+  # Window class (Linux/BSD only):
+  #class:
+    # Application instance name
+    #instance: Alacritty
+    # General application class
+    #general: Alacritty
+
+  # GTK theme variant (Linux/BSD only)
+  #
+  # Override the variant of the GTK theme. Commonly supported values are `dark` and `light`.
+  # Set this to `None` to use the default theme variant.
+  #gtk_theme_variant: None
+
+#scrolling:
+  # Maximum number of lines in the scrollback buffer.
+  # Specifying '0' will disable scrolling.
+  #history: 10000
+
+  # Number of lines the viewport will move for every line scrolled when
+  # scrollback is enabled (history > 0).
+  #multiplier: 3
+
+# Font configuration
+font:
+  # Normal (roman) font face
+  normal:
+    # Font family
+    #
+    # Default:
+    #   - (macOS) Menlo
+    #   - (Linux/BSD) monospace
+    #   - (Windows) Consolas
+    family: MesloLGS NF
+
+    # The `style` can be specified to pick a specific face.
+    #style: Regular
+
+  # Bold font face
+  #bold:
+    # Font family
+    #
+    # If the bold family is not specified, it will fall back to the
+    # value specified for the normal font.
+    #family: monospace
+
+    # The `style` can be specified to pick a specific face.
+    #style: Bold
+
+  # Italic font face
+  #italic:
+    # Font family
+    #
+    # If the italic family is not specified, it will fall back to the
+    # value specified for the normal font.
+    #family: monospace
+
+    # The `style` can be specified to pick a specific face.
+    #style: Italic
+
+  # Bold italic font face
+  #bold_italic:
+    # Font family
+    #
+    # If the bold italic family is not specified, it will fall back to the
+    # value specified for the normal font.
+    #family: monospace
+
+    # The `style` can be specified to pick a specific face.
+    #style: Bold Italic
+
+  # Point size
+  size: 10.0
+
+  # Offset is the extra space around each character. `offset.y` can be thought of
+  # as modifying the line spacing, and `offset.x` as modifying the letter spacing.
+  #offset:
+  #  x: 0
+  #  y: 0
+
+  # Glyph offset determines the locations of the glyphs within their cells with
+  # the default being at the bottom. Increasing `x` moves the glyph to the right,
+  # increasing `y` moves the glyph upwards.
+  #glyph_ofset:
+  #  x: 0
+  #  y: 0
+
+  # Thin stroke font rendering (macOS only)
+  #
+  # Thin strokes are suitable for retina displays, but for non-retina screens
+  # it is recommended to set `use_thin_strokes` to `false`
+  #
+  # macOS >= 10.14.x:
+  #
+  # If the font quality on non-retina display looks bad then set
+  # `use_thin_strokes` to `true` and enable font smoothing by running the
+  # following command:
+  #   `defaults write -g CGFontRenderingFontSmoothingDisabled -bool NO`
+  #
+  # This is a global setting and will require a log out or restart to take
+  # effect.
+  #use_thin_strokes: true
+
+# If `true`, bold text is drawn using the bright color variants.
+#draw_bold_text_with_bright_colors: false
+
+# Colors (Tomorrow Night Bright)
+colors:
+  # Default colors
+  primary:
+    background: '#1f2430'
+  #  foreground: '#eaeaea'
+
+    # Bright and dim foreground colors
+    #
+    # The dimmed foreground color is calculated automatically if it is not present.
+    # If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
+    # is `false`, the normal foreground color will be used.
+    #dim_foreground: '#9a9a9a'
+    #bright_foreground: '#ffffff'
+
+  # Cursor colors
+  #
+  # Colors which should be used to draw the terminal cursor. If these are unset,
+  # the cursor color will be the inverse of the cell color.
+  #cursor:
+  #  text: '#000000'
+  #  cursor: '#ffffff'
+
+  # Selection colors
+  #
+  # Colors which should be used to draw the selection area. If selection
+  # background is unset, selection color will be the inverse of the cell colors.
+  # If only text is unset the cell text color will remain the same.
+  #selection:
+  #  text: '#eaeaea'
+  #  background: '#404040'
+
+  # Normal colors
+  normal:
+    black:   '#191e2a'
+    red:     '#ed8274'
+    green:   '#a6cc70'
+    yellow:  '#fad07b'
+    blue:    '#6dcbfa'
+    magenta: '#cfbafa'
+    cyan:    '#90e1c6'
+    white:   '#c7c7c7'
+
+  # Bright colors
+  bright:
+    black:   '#686868'
+    red:     '#f28779'
+    green:   '#bae67e'
+    yellow:  '#ffd580'
+    blue:    '#73d0ff'
+    magenta: '#d4bfff'
+    cyan:    '#95e6cb'
+    white:   '#ffffff'
+
+  # Dim colors
+  #
+  # If the dim colors are not set, they will be calculated automatically based
+  # on the `normal` colors.
+  #dim:
+  #  black:   '#000000'
+  #  red:     '#8c3336'
+  #  green:   '#7a8530'
+  #  yellow:  '#97822e'
+  #  blue:    '#506d8f'
+  #  magenta: '#80638e'
+  #  cyan:    '#497e7a'
+  #  white:   '#9a9a9a'
+
+  # Indexed Colors
+  #
+  # The indexed colors include all colors from 16 to 256.
+  # When these are not set, they're filled with sensible defaults.
+  #
+  # Example:
+  #   `- { index: 16, color: '#ff00ff' }`
+  #
+  #indexed_colors: []
+
+# Visual Bell
+#
+# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
+# rung, the terminal background will be set to white and transition back to the
+# default background color. You can control the rate of this transition by
+# setting the `duration` property (represented in milliseconds). You can also
+# configure the transition function by setting the `animation` property.
+#
+# Values for `animation`:
+#   - Ease
+#   - EaseOut
+#   - EaseOutSine
+#   - EaseOutQuad
+#   - EaseOutCubic
+#   - EaseOutQuart
+#   - EaseOutQuint
+#   - EaseOutExpo
+#   - EaseOutCirc
+#   - Linear
+#
+# Specifying a `duration` of `0` will disable the visual bell.
+#visual_bell:
+#  animation: EaseOutExpo
+#  duration: 0
+#  color: '#ffffff'
+
+# Background opacity
+#
+# Window opacity as a floating point number from `0.0` to `1.0`.
+# The value `0.0` is completely transparent and `1.0` is opaque.
+background_opacity: 1.0
+
+#selection:
+  #semantic_escape_chars: ",│`|:\"' ()[]{}<>\t"
+
+  # When set to `true`, selected text will be copied to the primary clipboard.
+  #save_to_clipboard: false
+
+# Allow terminal applications to change Alacritty's window title.
+#dynamic_title: true
+
+#cursor:
+  # Cursor style
+  #
+  # Values for `style`:
+  #   - ▇ Block
+  #   - _ Underline
+  #   - | Beam
+  #style: Block
+
+  # If this is `true`, the cursor will be rendered as a hollow box when the
+  # window is not focused.
+  #unfocused_hollow: true
+
+# Live config reload (changes require restart)
+#live_config_reload: true
+
+# Shell
+#
+# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`.
+# Entries in `shell.args` are passed unmodified as arguments to the shell.
+#
+# Default:
+#   - (macOS) /bin/bash --login
+#   - (Linux/BSD) user login shell
+#   - (Windows) powershell
+#shell:
+#  program: /bin/bash
+#  args:
+#    - --login
+
+# Startup directory
+#
+# Directory the shell is started in. If this is unset, or `None`, the working
+# directory of the parent process will be used.
+#working_directory: None
+
+# WinPTY backend (Windows only)
+#
+# Alacritty defaults to using the newer ConPTY backend if it is available,
+# since it resolves a lot of bugs and is quite a bit faster. If it is not
+# available, the the WinPTY backend will be used instead.
+#
+# Setting this option to `true` makes Alacritty use the legacy WinPTY backend,
+# even if the ConPTY backend is available.
+#winpty_backend: false
+
+# Send ESC (\x1b) before characters when alt is pressed.
+#alt_send_esc: true
+
+#mouse:
+  # Click settings
+  #
+  # The `double_click` and `triple_click` settings control the time
+  # alacritty should wait for accepting multiple clicks as one double
+  # or triple click.
+  #double_click: { threshold: 300 }
+  #triple_click: { threshold: 300 }
+
+  # If this is `true`, the cursor is temporarily hidden when typing.
+  #hide_when_typing: false
+
+  #url:
+    # URL launcher
+    #
+    # This program is executed when clicking on a text which is recognized as a URL.
+    # The URL is always added to the command as the last parameter.
+    #
+    # When set to `None`, URL launching will be disabled completely.
+    #
+    # Default:
+    #   - (macOS) open
+    #   - (Linux/BSD) xdg-open
+    #   - (Windows) explorer
+    #launcher:
+    #  program: xdg-open
+    #  args: []
+
+    # URL modifiers
+    #
+    # These are the modifiers that need to be held down for opening URLs when clicking
+    # on them. The available modifiers are documented in the key binding section.
+    #modifiers: None
+
+# Mouse bindings
+#
+# Mouse bindings are specified as a list of objects, much like the key
+# bindings further below.
+#
+# To trigger mouse bindings when an application running within Alacritty captures the mouse, the
+# `Shift` modifier is automatically added as a requirement.
+#
+# Each mouse binding will specify a:
+#
+# - `mouse`:
+#
+#   - Middle
+#   - Left
+#   - Right
+#   - Numeric identifier such as `5`
+#
+# - `action` (see key bindings)
+#
+# And optionally:
+#
+# - `mods` (see key bindings)
+#mouse_bindings:
+#  - { mouse: Middle, action: PasteSelection }
+
+# Key bindings
+#
+# Key bindings are specified as a list of objects. For example, this is the
+# default paste binding:
+#
+# `- { key: V, mods: Control|Shift, action: Paste }`
+#
+# Each key binding will specify a:
+#
+# - `key`: Identifier of the key pressed
+#
+#    - A-Z
+#    - F1-F24
+#    - Key0-Key9
+#
+#    A full list with available key codes can be found here:
+#    https://docs.rs/glutin/*/glutin/event/enum.VirtualKeyCode.html#variants
+#
+#    Instead of using the name of the keys, the `key` field also supports using
+#    the scancode of the desired key. Scancodes have to be specified as a
+#    decimal number. This command will allow you to display the hex scancodes
+#    for certain keys:
+#
+#       `showkey --scancodes`.
+#
+# Then exactly one of:
+#
+# - `chars`: Send a byte sequence to the running application
+#
+#    The `chars` field writes the specified string to the terminal. This makes
+#    it possible to pass escape sequences. To find escape codes for bindings
+#    like `PageUp` (`"\x1b[5~"`), you can run the command `showkey -a` outside
+#    of tmux. Note that applications use terminfo to map escape sequences back
+#    to keys. It is therefore required to update the terminfo when changing an
+#    escape sequence.
+#
+# - `action`: Execute a predefined action
+#
+#   - Copy
+#   - Paste
+#   - PasteSelection
+#   - IncreaseFontSize
+#   - DecreaseFontSize
+#   - ResetFontSize
+#   - ScrollPageUp
+#   - ScrollPageDown
+#   - ScrollLineUp
+#   - ScrollLineDown
+#   - ScrollToTop
+#   - ScrollToBottom
+#   - ClearHistory
+#   - Hide
+#   - Minimize
+#   - Quit
+#   - ToggleFullscreen
+#   - SpawnNewInstance
+#   - ClearLogNotice
+#   - ReceiveChar
+#   - None
+#
+#   (macOS only):
+#   - ToggleSimpleFullscreen: Enters fullscreen without occupying another space
+#
+# - `command`: Fork and execute a specified command plus arguments
+#
+#    The `command` field must be a map containing a `program` string and an
+#    `args` array of command line parameter strings. For example:
+#       `{ program: "alacritty", args: ["-e", "vttest"] }`
+#
+# And optionally:
+#
+# - `mods`: Key modifiers to filter binding actions
+#
+#    - Command
+#    - Control
+#    - Option
+#    - Super
+#    - Shift
+#    - Alt
+#
+#    Multiple `mods` can be combined using `|` like this:
+#       `mods: Control|Shift`.
+#    Whitespace and capitalization are relevant and must match the example.
+#
+# - `mode`: Indicate a binding for only specific terminal reported modes
+#
+#    This is mainly used to send applications the correct escape sequences
+#    when in different modes.
+#
+#    - AppCursor
+#    - AppKeypad
+#    - Alt
+#
+#    A `~` operator can be used before a mode to apply the binding whenever
+#    the mode is *not* active, e.g. `~Alt`.
+#
+# Bindings are always filled by default, but will be replaced when a new
+# binding with the same triggers is defined. To unset a default binding, it can
+# be mapped to the `ReceiveChar` action. Alternatively, you can use `None` for
+# a no-op if you do not wish to receive input characters for that binding.
+#
+# If the same trigger is assigned to multiple actions, all of them are executed
+# at once.
+#key_bindings:
+  # (Windows, Linux, and BSD only)
+  #- { key: V,        mods: Control|Shift, action: Paste            }
+  #- { key: C,        mods: Control|Shift, action: Copy             }
+  #- { key: Insert,   mods: Shift,         action: PasteSelection   }
+  #- { key: Key0,     mods: Control,       action: ResetFontSize    }
+  #- { key: Equals,   mods: Control,       action: IncreaseFontSize }
+  #- { key: Add,      mods: Control,       action: IncreaseFontSize }
+  #- { key: Subtract, mods: Control,       action: DecreaseFontSize }
+  #- { key: Minus,    mods: Control,       action: DecreaseFontSize }
+
+  # (Windows only)
+  #- { key: Return,   mods: Alt,           action: ToggleFullscreen }
+
+  # (macOS only)
+  #- { key: Key0,   mods: Command,         action: ResetFontSize    }
+  #- { key: Equals, mods: Command,         action: IncreaseFontSize }
+  #- { key: Add,    mods: Command,         action: IncreaseFontSize }
+  #- { key: Minus,  mods: Command,         action: DecreaseFontSize }
+  #- { key: K,      mods: Command,         action: ClearHistory     }
+  #- { key: K,      mods: Command,         chars: "\x0c"            }
+  #- { key: V,      mods: Command,         action: Paste            }
+  #- { key: C,      mods: Command,         action: Copy             }
+  #- { key: H,      mods: Command,         action: Hide             }
+  #- { key: M,      mods: Command,         action: Minimize         }
+  #- { key: Q,      mods: Command,         action: Quit             }
+  #- { key: W,      mods: Command,         action: Quit             }
+  #- { key: F,      mods: Command|Control, action: ToggleFullscreen }
+
+  #- { key: Paste,                    action: Paste                            }
+  #- { key: Copy,                     action: Copy                             }
+  #- { key: L,         mods: Control, action: ClearLogNotice                   }
+  #- { key: L,         mods: Control, chars: "\x0c"                            }
+  #- { key: PageUp,    mods: Shift,   action: ScrollPageUp,   mode: ~Alt       }
+  #- { key: PageDown,  mods: Shift,   action: ScrollPageDown, mode: ~Alt       }
+  #- { key: Home,      mods: Shift,   action: ScrollToTop,    mode: ~Alt       }
+  #- { key: End,       mods: Shift,   action: ScrollToBottom, mode: ~Alt       }
+
+#debug:
+  # Display the time it takes to redraw each frame.
+  #render_timer: false
+
+  # Keep the log file after quitting Alacritty.
+  #persistent_logging: false
+
+  # Log level
+  #
+  # Values for `log_level`:
+  #   - None
+  #   - Error
+  #   - Warn
+  #   - Info
+  #   - Debug
+  #   - Trace
+  #log_level: Warn
+
+  # Print all received window events.
+  #print_events: falsef
diff --git a/awesome/configuration/picom.conf b/awesome/configuration/picom.conf
new file mode 100644
index 0000000..3e987d6
--- /dev/null
+++ b/awesome/configuration/picom.conf
@@ -0,0 +1,61 @@
+# Performance related
+# Use OpenGL
+backend = "glx";
+
+glx-no-stencil = false;
+glx-copy-from-front = false; # When enbled on intel GPU: screen broken until compton is killed.
+glx-swap-method = 1
+
+unredir-if-possible = true
+
+# === Rules ===
+shadow-exclude = [ 
+    "class_g ?= 'slop'",
+    "class_g ?= 'Visualizer'",
+    "class_g ?= 'rofi'",
+    "_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'",
+    "window_type *= 'menu'",
+    "window_type = 'utility'",
+    "window_type = 'dock'",
+    "window_type = 'dropdown_menu'",
+    "window_type = 'popup_menu'"
+]
+
+opacity-rule = []
+
+focus-exclude = [
+    "class_g ?= 'slop'",
+    "name = 'rofi'",
+    "class_g ?= 'Steam'",
+    "_NET_WM_WINDOW_TYPE@:a *= 'MENU'",
+    "window_type *= 'menu'",
+    "window_type = 'utility'",
+    "window_type = 'dropdown_menu'",
+    "window_type = 'popup_menu'"
+]
+
+fade-exclude = []
+
+# === Shadows ===
+# Enabled client-side shadows on windows.
+shadow = false;
+# Detect rounded corners
+# (it doesn't really do anything for shadows)
+detect-rounded-corners = false;
+
+# shadow-radius: The blur radius for shadows. (default 12)
+# shadow-offset-x: The left offset for shadows. (default -15)
+# shadow-offset-y: The top offset for shadows. (default -15)
+# shadow-opacity: The translucency for shadows. (default .75)
+shadow-radius = 14;
+shadow-offset-x = -12;
+shadow-offset-y = -12;
+shadow-opacity = 0.3;
+
+# === Fading ===
+# Fade windows during opacity changes.
+fading = true;
+# The time between steps in a fade in milliseconds. (default 10).
+fade-delta = 10;
+# Fade windows in/out when opening/closing
+no-fading-openclose = false;
diff --git a/awesome/configuration/rofi.rasi b/awesome/configuration/rofi.rasi
new file mode 100644
index 0000000..2cce41c
--- /dev/null
+++ b/awesome/configuration/rofi.rasi
@@ -0,0 +1,95 @@
+configuration {
+    show-icons: true;
+    icon-theme: "Tela-dark";
+    font: "Iosevka Nerd Font 14";
+    display-drun: "";
+    drun-display-format: "{name}";
+}
+
+* {
+    background-color: transparent;
+    background: #1F2430;
+    background-alt: #E5E9F047;
+    text-color: #D8DEE9;
+    selected-text-color: #000000;
+    primary: #A3BE8C;
+    urgent: #BF616A;
+}
+
+window {
+    transparency: "real";
+    background-color: @background;
+}
+
+inputbar {
+    background-color: #ffffff20;
+    text-color: @foreground;
+    border-radius: 12;
+    padding: 1.3%;
+    margin: 5% 30%;
+}
+
+prompt {
+    enabled: true;
+    margin: 0 1% 0 0;
+}
+
+entry {
+    font: "SF Pro Display 14";
+    placeholder-color: #999999;
+    placeholder: "Search Applications";
+    blink: true;
+}
+
+
+mainbox {
+    children: [ inputbar, listview ];
+    padding: 5%;
+}
+
+listview {
+    columns: 5;
+    layout: vertical;
+    spacing: 100;
+    margin: 5% 7%;
+}
+
+element {
+    orientation: vertical;
+    padding: 2% 0;
+    border-radius: 4;
+}
+
+element normal.urgent, element alternate.urgent {
+    background-color: @urgent;
+}
+
+element normal.active, element alternate.active {
+    background-color: @background-alt;
+    color: @selected-text-color;
+}
+
+element selected {
+    background-color: @background-alt;
+    color: @selected-text-color;
+}
+
+element selected.urgent {
+    background-color: @urgent;
+}
+
+element selected.active {
+    background-color: @background-alt;
+    color: @selected-text-color;
+}
+
+element-icon {
+    size: 6%;
+}
+
+element-text {
+    font: "SF Pro Display 14";
+    padding: 10 0 0 0;
+    text-color: inherit;
+    horizontal-align: 0.5;
+}
diff --git a/awesome/icons/battery/battery-10.svg b/awesome/icons/battery/battery-10.svg
new file mode 100644
index 0000000..19cbf1b
--- /dev/null
+++ b/awesome/icons/battery/battery-10.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 15.9993,17.9982L 7.99999,18L 7.9994,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.9994,1.99805L 8.9994,3.99805L 7.33239,3.99805C 6.59608,3.99805 5.9994,4.59503 5.9994,5.33105L 5.9994,20.665C 5.9994,21.4011 6.59608,21.998 7.33239,21.998L 16.6664,21.998C 17.4027,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4027,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-20.svg b/awesome/icons/battery/battery-20.svg
new file mode 100644
index 0000000..9f43900
--- /dev/null
+++ b/awesome/icons/battery/battery-20.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 15.9994,16.998L 7.9994,16.998L 7.9994,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.9994,1.99805L 8.9994,3.99805L 7.33239,3.99805C 6.59608,3.99805 5.9994,4.59503 5.9994,5.33105L 5.9994,20.665C 5.9994,21.4011 6.59608,21.998 7.33239,21.998L 16.6664,21.998C 17.4027,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4027,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-30.svg b/awesome/icons/battery/battery-30.svg
new file mode 100644
index 0000000..7e24035
--- /dev/null
+++ b/awesome/icons/battery/battery-30.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 15.9994,14.998L 7.9994,14.998L 7.9994,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.9994,1.99805L 8.9994,3.99805L 7.33239,3.99805C 6.59608,3.99805 5.9994,4.59503 5.9994,5.33105L 5.9994,20.665C 5.9994,21.4011 6.59608,21.998 7.33239,21.998L 16.6664,21.998C 17.4027,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4027,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-40.svg b/awesome/icons/battery/battery-40.svg
new file mode 100644
index 0000000..6d5f15a
--- /dev/null
+++ b/awesome/icons/battery/battery-40.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 16,14L 7.99998,14L 7.99939,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.99939,1.99805L 8.99939,3.99805L 7.33238,3.99805C 6.59607,3.99805 5.99939,4.59503 5.99939,5.33105L 5.99939,20.665C 5.99939,21.4011 6.59607,21.998 7.33238,21.998L 16.6664,21.998C 17.4027,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4027,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-50.svg b/awesome/icons/battery/battery-50.svg
new file mode 100644
index 0000000..e2d0db0
--- /dev/null
+++ b/awesome/icons/battery/battery-50.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 16,13L 7.99998,13L 7.99939,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.99939,1.99805L 8.99939,3.99805L 7.33238,3.99805C 6.59607,3.99805 5.99939,4.59503 5.99939,5.33105L 5.99939,20.665C 5.99939,21.4011 6.59607,21.998 7.33238,21.998L 16.6664,21.998C 17.4027,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4027,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-60.svg b/awesome/icons/battery/battery-60.svg
new file mode 100644
index 0000000..2974479
--- /dev/null
+++ b/awesome/icons/battery/battery-60.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 15.9993,11.9982L 7.99935,11.9982L 7.99941,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.99941,1.99805L 8.99941,3.99805L 7.3324,3.99805C 6.59609,3.99805 5.99941,4.59503 5.99941,5.33105L 5.99941,20.665C 5.99941,21.4011 6.59609,21.998 7.3324,21.998L 16.6664,21.998C 17.4027,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4027,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-70.svg b/awesome/icons/battery/battery-70.svg
new file mode 100644
index 0000000..d0ac917
--- /dev/null
+++ b/awesome/icons/battery/battery-70.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 15.9993,9.99817L 7.99927,9.99817L 7.99939,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.99939,1.99805L 8.99939,3.99805L 7.33238,3.99805C 6.59607,3.99805 5.99939,4.59503 5.99939,5.33105L 5.99939,20.665C 5.99939,21.4011 6.59607,21.998 7.33238,21.998L 16.6664,21.998C 17.4024,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4024,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-80.svg b/awesome/icons/battery/battery-80.svg
new file mode 100644
index 0000000..a046a8f
--- /dev/null
+++ b/awesome/icons/battery/battery-80.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 15.9994,8.99805L 7.99939,8.99805L 7.99939,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.99939,1.99805L 8.99939,3.99805L 7.33238,3.99805C 6.59607,3.99805 5.99939,4.59503 5.99939,5.33105L 5.99939,20.665C 5.99939,21.4011 6.59607,21.998 7.33238,21.998L 16.6664,21.998C 17.4024,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4024,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-90.svg b/awesome/icons/battery/battery-90.svg
new file mode 100644
index 0000000..2a4f448
--- /dev/null
+++ b/awesome/icons/battery/battery-90.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 15.9994,7.99805L 7.99939,7.99805L 7.99939,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.99939,1.99805L 8.99939,3.99805L 7.3324,3.99805C 6.59637,3.99805 5.99939,4.59503 5.99939,5.33105L 5.99939,20.665C 5.99939,21.4011 6.59637,21.998 7.3324,21.998L 16.6664,21.998C 17.4024,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4024,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-10.svg b/awesome/icons/battery/battery-charging-10.svg
new file mode 100644
index 0000000..e5945c1
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-10.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 23.0503,10.998L 20.0503,10.998L 20.0503,3.99805L 15.0503,13.998L 18.0503,13.998L 18.0503,21.998M 12,18L 3.99997,18L 4.05029,5.99805L 12.0503,5.99805M 12.7173,3.99805L 11.0503,3.99805L 11.0503,1.99805L 5.05029,1.99805L 5.05029,3.99805L 3.3833,3.99805C 2.64728,3.99805 2.05029,4.59503 2.05029,5.33105L 2.05029,20.665C 2.05029,21.4011 2.64728,21.998 3.3833,21.998L 12.7173,21.998C 13.4533,21.998 14.0503,21.4011 14.0503,20.665L 14.0503,5.33105C 14.0503,4.59503 13.4533,3.99805 12.7173,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-100.svg b/awesome/icons/battery/battery-charging-100.svg
new file mode 100644
index 0000000..9713fb3
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-100.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 22.9994,10.998L 19.9994,10.998L 19.9994,3.99805L 14.9994,13.998L 17.9994,13.998L 17.9994,21.998M 12.6664,3.99805L 10.9994,3.99805L 10.9994,1.99805L 4.99939,1.99805L 4.99939,3.99805L 3.3324,3.99805C 2.59637,3.99805 1.99939,4.59503 1.99939,5.33105L 1.99939,20.665C 1.99939,21.4011 2.59637,21.998 3.3324,21.998L 12.6664,21.998C 13.4024,21.998 13.9994,21.4011 13.9994,20.665L 13.9994,5.33105C 13.9994,4.59503 13.4024,3.99805 12.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-20.svg b/awesome/icons/battery/battery-charging-20.svg
new file mode 100644
index 0000000..a7adc99
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-20.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 23.0503,10.998L 20.0503,10.998L 20.0503,3.99805L 15.0503,13.998L 18.0503,13.998L 18.0503,21.998M 12.0503,16.998L 4.05029,16.998L 4.05029,5.99805L 12.0503,5.99805M 12.7173,3.99805L 11.0503,3.99805L 11.0503,1.99805L 5.05029,1.99805L 5.05029,3.99805L 3.3833,3.99805C 2.64728,3.99805 2.05029,4.59503 2.05029,5.33105L 2.05029,20.665C 2.05029,21.4011 2.64728,21.998 3.3833,21.998L 12.7173,21.998C 13.4533,21.998 14.0503,21.4011 14.0503,20.665L 14.0503,5.33105C 14.0503,4.59503 13.4533,3.99805 12.7173,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-30.svg b/awesome/icons/battery/battery-charging-30.svg
new file mode 100644
index 0000000..612cd6f
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-30.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 11.9994,14.998L 3.99939,14.998L 3.99939,5.99805L 11.9994,5.99805M 12.6664,3.99805L 10.9994,3.99805L 10.9994,1.99805L 4.99939,1.99805L 4.99939,3.99805L 3.3324,3.99805C 2.59637,3.99805 1.99939,4.59503 1.99939,5.33105L 1.99939,20.665C 1.99939,21.4011 2.59637,21.998 3.3324,21.998L 12.6664,21.998C 13.4024,21.998 13.9994,21.4011 13.9994,20.665L 13.9994,5.33105C 13.9994,4.59503 13.4024,3.99805 12.6664,3.99805 Z M 22.9994,10.998L 19.9994,10.998L 19.9994,3.99805L 14.9994,13.998L 17.9994,13.998L 17.9994,21.998L 22.9994,10.998 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-40.svg b/awesome/icons/battery/battery-charging-40.svg
new file mode 100644
index 0000000..f0e3a0d
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-40.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 22.9994,10.998L 19.9994,10.998L 19.9994,3.99805L 14.9994,13.998L 17.9994,13.998L 17.9994,21.998M 11.9994,12.998L 3.99939,12.998L 3.99939,5.99805L 11.9994,5.99805M 12.6664,3.99805L 10.9994,3.99805L 10.9994,1.99805L 4.99939,1.99805L 4.99939,3.99805L 3.3324,3.99805C 2.59637,3.99805 1.99939,4.59503 1.99939,5.33105L 1.99939,20.665C 1.99939,21.4011 2.59637,21.998 3.3324,21.998L 12.6664,21.998C 13.4024,21.998 13.9994,21.4011 13.9994,20.665L 13.9994,5.33105C 13.9994,4.59503 13.4024,3.99805 12.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-50.svg b/awesome/icons/battery/battery-charging-50.svg
new file mode 100644
index 0000000..f0e3a0d
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-50.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 22.9994,10.998L 19.9994,10.998L 19.9994,3.99805L 14.9994,13.998L 17.9994,13.998L 17.9994,21.998M 11.9994,12.998L 3.99939,12.998L 3.99939,5.99805L 11.9994,5.99805M 12.6664,3.99805L 10.9994,3.99805L 10.9994,1.99805L 4.99939,1.99805L 4.99939,3.99805L 3.3324,3.99805C 2.59637,3.99805 1.99939,4.59503 1.99939,5.33105L 1.99939,20.665C 1.99939,21.4011 2.59637,21.998 3.3324,21.998L 12.6664,21.998C 13.4024,21.998 13.9994,21.4011 13.9994,20.665L 13.9994,5.33105C 13.9994,4.59503 13.4024,3.99805 12.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-60.svg b/awesome/icons/battery/battery-charging-60.svg
new file mode 100644
index 0000000..5cd577a
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-60.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 11.9994,10.998L 3.99943,10.998L 3.99943,5.99805L 11.9994,5.99805M 12.6664,3.99805L 10.9994,3.99805L 10.9994,1.99805L 4.99943,1.99805L 4.99943,3.99805L 3.33244,3.99805C 2.59642,3.99805 1.99943,4.59503 1.99943,5.33105L 1.99943,20.665C 1.99943,21.4011 2.59642,21.998 3.33244,21.998L 12.6664,21.998C 13.4024,21.998 13.9994,21.4011 13.9994,20.665L 13.9994,5.33105C 13.9994,4.59503 13.4024,3.99805 12.6664,3.99805 Z M 22.9994,10.998L 19.9994,10.998L 19.9994,3.99805L 14.9994,13.998L 17.9994,13.998L 17.9994,21.998L 22.9994,10.998 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-70.svg b/awesome/icons/battery/battery-charging-70.svg
new file mode 100644
index 0000000..6af3dbe
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-70.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 12,10L 3.99998,10L 3.99943,5.99805L 11.9994,5.99805M 12.6664,3.99805L 10.9994,3.99805L 10.9994,1.99805L 4.99943,1.99805L 4.99943,3.99805L 3.33244,3.99805C 2.59642,3.99805 1.99943,4.59503 1.99943,5.33105L 1.99943,20.665C 1.99943,21.4011 2.59642,21.998 3.33244,21.998L 12.6664,21.998C 13.4024,21.998 13.9994,21.4011 13.9994,20.665L 13.9994,5.33105C 13.9994,4.59503 13.4024,3.99805 12.6664,3.99805 Z M 22.9994,10.998L 19.9994,10.998L 19.9994,3.99805L 14.9994,13.998L 17.9994,13.998L 17.9994,21.998L 22.9994,10.998 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-80.svg b/awesome/icons/battery/battery-charging-80.svg
new file mode 100644
index 0000000..e48879a
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-80.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 22.9994,10.998L 19.9994,10.998L 19.9994,3.99805L 14.9994,13.998L 17.9994,13.998L 17.9994,21.998M 11.9994,8.99805L 3.99939,8.99805L 3.99939,5.99805L 11.9994,5.99805M 12.6664,3.99805L 10.9994,3.99805L 10.9994,1.99805L 4.99939,1.99805L 4.99939,3.99805L 3.3324,3.99805C 2.59637,3.99805 1.99939,4.59503 1.99939,5.33105L 1.99939,20.665C 1.99939,21.4011 2.59637,21.998 3.3324,21.998L 12.6664,21.998C 13.4024,21.998 13.9994,21.4011 13.9994,20.665L 13.9994,5.33105C 13.9994,4.59503 13.4024,3.99805 12.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-90.svg b/awesome/icons/battery/battery-charging-90.svg
new file mode 100644
index 0000000..a045bb2
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-90.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 22.9994,10.998L 19.9994,10.998L 19.9994,3.99805L 14.9994,13.998L 17.9994,13.998L 17.9994,21.998M 11.9994,7.99805L 3.99939,7.99805L 3.99939,5.99805L 11.9994,5.99805M 12.6664,3.99805L 10.9994,3.99805L 10.9994,1.99805L 4.99939,1.99805L 4.99939,3.99805L 3.3324,3.99805C 2.59637,3.99805 1.99939,4.59503 1.99939,5.33105L 1.99939,20.665C 1.99939,21.4011 2.59637,21.998 3.3324,21.998L 12.6664,21.998C 13.4024,21.998 13.9994,21.4011 13.9994,20.665L 13.9994,5.33105C 13.9994,4.59503 13.4024,3.99805 12.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging-outline.svg b/awesome/icons/battery/battery-charging-outline.svg
new file mode 100644
index 0000000..4b2c706
--- /dev/null
+++ b/awesome/icons/battery/battery-charging-outline.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 23.0503,10.998L 20.0503,10.998L 20.0503,3.99805L 15.0503,13.998L 18.0503,13.998L 18.0503,21.998M 12,20L 3.99997,20L 4.05029,5.99805L 12.0503,5.99805M 12.7173,3.99805L 11.0503,3.99805L 11.0503,1.99805L 5.05029,1.99805L 5.05029,3.99805L 3.3833,3.99805C 2.64728,3.99805 2.05029,4.59503 2.05029,5.33105L 2.05029,20.665C 2.05029,21.4011 2.64728,21.998 3.3833,21.998L 12.7173,21.998C 13.4533,21.998 14.0503,21.4011 14.0503,20.665L 14.0503,5.33105C 14.0503,4.59503 13.4533,3.99805 12.7173,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery-charging.svg b/awesome/icons/battery/battery-charging.svg
new file mode 100644
index 0000000..97e03c5
--- /dev/null
+++ b/awesome/icons/battery/battery-charging.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 16.6688,3.99875L 14.9987,3.99875L 14.9987,2.0025L 9,2.0025L 9,3.99875L 7.33,3.99875C 6.59751,3.99875 6.0025,4.6 6.0025,5.3325L 6.0025,20.6588C 6.0025,21.4012 6.59751,22.0025 7.33,22.0025L 16.6588,22.0025C 17.4012,22.0025 18.0025,21.4012 18.0025,20.6687L 18.0025,5.3325C 18.0025,4.6 17.4012,3.99875 16.6688,3.99875 Z M 11.0013,20L 11.0013,14.5025L 8.99875,14.5025L 12.9975,7.0025L 12.9975,12.5L 15,12.5"/>
+</svg>
diff --git a/awesome/icons/battery/battery-outline.svg b/awesome/icons/battery/battery-outline.svg
new file mode 100644
index 0000000..75f5d38
--- /dev/null
+++ b/awesome/icons/battery/battery-outline.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 16,20L 7.99999,20L 7.9994,5.99805L 15.9994,5.99805M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.9994,1.99805L 8.9994,3.99805L 7.33239,3.99805C 6.59608,3.99805 5.9994,4.59503 5.9994,5.33105L 5.9994,20.665C 5.9994,21.4011 6.59608,21.998 7.33239,21.998L 16.6664,21.998C 17.4027,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4027,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/battery/battery.svg b/awesome/icons/battery/battery.svg
new file mode 100644
index 0000000..7289a0b
--- /dev/null
+++ b/awesome/icons/battery/battery.svg
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" baseProfile="full" width="240" height="240" viewBox="0 0 24.00 24.00" enable-background="new 0 0 24.00 24.00" xml:space="preserve">
+	<path fill="#FFFFFF" fill-opacity="1" stroke-width="0.2" stroke-linejoin="round" d="M 16.6664,3.99805L 14.9994,3.99805L 14.9994,1.99805L 8.9994,1.99805L 8.9994,3.99805L 7.33239,3.99805C 6.59608,3.99805 5.9994,4.59503 5.9994,5.33105L 5.9994,20.665C 5.9994,21.4011 6.59608,21.998 7.33239,21.998L 16.6664,21.998C 17.4027,21.998 17.9994,21.4011 17.9994,20.665L 17.9994,5.33105C 17.9994,4.59503 17.4027,3.99805 16.6664,3.99805 Z "/>
+</svg>
diff --git a/awesome/icons/bluetooth/bluetooth-off.svg b/awesome/icons/bluetooth/bluetooth-off.svg
new file mode 100644
index 0000000..9055c52
--- /dev/null
+++ b/awesome/icons/bluetooth/bluetooth-off.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white" width="48px" height="48px"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19.29 17.89L6.11 4.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L11 14.41v6.18c0 .89 1.08 1.34 1.71.71l3.59-3.59 1.59 1.59c.39.39 1.02.39 1.41 0 .38-.39.38-1.03-.01-1.41zm-6.29.28v-3.76l1.88 1.88L13 18.17zm0-12.34l1.88 1.88-1.47 1.47 1.41 1.41L17 8.42c.39-.39.39-1.02 0-1.42l-4.29-4.29c-.63-.63-1.71-.19-1.71.7v3.36l2 2V5.83z"/></svg>
\ No newline at end of file
diff --git a/awesome/icons/bluetooth/bluetooth.svg b/awesome/icons/bluetooth/bluetooth.svg
new file mode 100644
index 0000000..b11d5db
--- /dev/null
+++ b/awesome/icons/bluetooth/bluetooth.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white" width="48px" height="48px"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M17 7l-4.29-4.29c-.63-.63-1.71-.19-1.71.7v6.18L7.11 5.7c-.39-.39-1.02-.39-1.41 0-.39.39-.39 1.02 0 1.41L10.59 12 5.7 16.89c-.39.39-.39 1.02 0 1.41.39.39 1.02.39 1.41 0L11 14.41v6.18c0 .89 1.08 1.34 1.71.71L17 17c.39-.39.39-1.02 0-1.41L13.41 12 17 8.42c.39-.39.39-1.03 0-1.42zm-4-1.17l1.88 1.88L13 9.59V5.83zm1.88 10.46L13 18.17v-3.76l1.88 1.88z"/></svg>
\ No newline at end of file
diff --git a/awesome/icons/close.svg b/awesome/icons/close.svg
new file mode 100644
index 0000000..224725a
--- /dev/null
+++ b/awesome/icons/close.svg
@@ -0,0 +1,3 @@
+<svg width="461" height="461" viewBox="0 0 461 461" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M285.08 230.397L456.218 59.27C462.294 53.193 462.294 43.359 456.218 37.284L423.511 4.56501C420.598 1.65401 416.645 0.0150146 412.519 0.0150146C408.392 0.0150146 404.439 1.65401 401.526 4.56501L230.388 175.705L59.25 4.56501C56.337 1.65401 52.384 0.0150146 48.257 0.0150146C44.131 0.0150146 40.177 1.65401 37.265 4.56501L4.55799 37.284C-1.51901 43.359 -1.51901 53.193 4.55799 59.27L175.696 230.398L4.57499 401.505C-1.49901 407.582 -1.49901 417.416 4.57499 423.491L37.284 456.21C40.195 459.121 44.149 460.76 48.276 460.76C52.403 460.76 56.356 459.121 59.27 456.21L230.387 285.09L401.505 456.21C404.418 459.121 408.371 460.76 412.498 460.76C416.626 460.76 420.579 459.121 423.49 456.21L456.199 423.491C462.273 417.416 462.273 407.582 456.199 401.505L285.08 230.397Z" fill="white"/>
+</svg>
diff --git a/awesome/icons/exit-screen/mirage/lock.png b/awesome/icons/exit-screen/mirage/lock.png
new file mode 100644
index 0000000..99aa3c8
Binary files /dev/null and b/awesome/icons/exit-screen/mirage/lock.png differ
diff --git a/awesome/icons/exit-screen/mirage/logout.png b/awesome/icons/exit-screen/mirage/logout.png
new file mode 100644
index 0000000..fa05757
Binary files /dev/null and b/awesome/icons/exit-screen/mirage/logout.png differ
diff --git a/awesome/icons/exit-screen/mirage/power.png b/awesome/icons/exit-screen/mirage/power.png
new file mode 100644
index 0000000..6879a0c
Binary files /dev/null and b/awesome/icons/exit-screen/mirage/power.png differ
diff --git a/awesome/icons/exit-screen/mirage/restart.png b/awesome/icons/exit-screen/mirage/restart.png
new file mode 100644
index 0000000..7c594cf
Binary files /dev/null and b/awesome/icons/exit-screen/mirage/restart.png differ
diff --git a/awesome/icons/exit-screen/mirage/sleep.png b/awesome/icons/exit-screen/mirage/sleep.png
new file mode 100644
index 0000000..2f8fdef
Binary files /dev/null and b/awesome/icons/exit-screen/mirage/sleep.png differ
diff --git a/awesome/icons/exit-screen/pastel/lock.png b/awesome/icons/exit-screen/pastel/lock.png
new file mode 100644
index 0000000..8c9ff02
Binary files /dev/null and b/awesome/icons/exit-screen/pastel/lock.png differ
diff --git a/awesome/icons/exit-screen/pastel/logout.png b/awesome/icons/exit-screen/pastel/logout.png
new file mode 100644
index 0000000..246a93c
Binary files /dev/null and b/awesome/icons/exit-screen/pastel/logout.png differ
diff --git a/awesome/icons/exit-screen/pastel/power.png b/awesome/icons/exit-screen/pastel/power.png
new file mode 100644
index 0000000..af9985f
Binary files /dev/null and b/awesome/icons/exit-screen/pastel/power.png differ
diff --git a/awesome/icons/exit-screen/pastel/restart.png b/awesome/icons/exit-screen/pastel/restart.png
new file mode 100644
index 0000000..af60f4f
Binary files /dev/null and b/awesome/icons/exit-screen/pastel/restart.png differ
diff --git a/awesome/icons/exit-screen/pastel/sleep.png b/awesome/icons/exit-screen/pastel/sleep.png
new file mode 100644
index 0000000..31ab398
Binary files /dev/null and b/awesome/icons/exit-screen/pastel/sleep.png differ
diff --git a/awesome/icons/folders/documents.png b/awesome/icons/folders/documents.png
new file mode 100644
index 0000000..7de37f7
Binary files /dev/null and b/awesome/icons/folders/documents.png differ
diff --git a/awesome/icons/folders/downloads.png b/awesome/icons/folders/downloads.png
new file mode 100644
index 0000000..1cc4d5a
Binary files /dev/null and b/awesome/icons/folders/downloads.png differ
diff --git a/awesome/icons/folders/home.png b/awesome/icons/folders/home.png
new file mode 100644
index 0000000..ef5554d
Binary files /dev/null and b/awesome/icons/folders/home.png differ
diff --git a/awesome/icons/folders/trash.png b/awesome/icons/folders/trash.png
new file mode 100644
index 0000000..2c8e544
Binary files /dev/null and b/awesome/icons/folders/trash.png differ
diff --git a/awesome/icons/layouts/floating.png b/awesome/icons/layouts/floating.png
new file mode 100644
index 0000000..90c89ff
Binary files /dev/null and b/awesome/icons/layouts/floating.png differ
diff --git a/awesome/icons/layouts/maximized.png b/awesome/icons/layouts/maximized.png
new file mode 100644
index 0000000..47ec77e
Binary files /dev/null and b/awesome/icons/layouts/maximized.png differ
diff --git a/awesome/icons/layouts/tiled.png b/awesome/icons/layouts/tiled.png
new file mode 100644
index 0000000..1b0ef1c
Binary files /dev/null and b/awesome/icons/layouts/tiled.png differ
diff --git a/awesome/icons/network/connected_notification.svg b/awesome/icons/network/connected_notification.svg
new file mode 100644
index 0000000..23ebc45
--- /dev/null
+++ b/awesome/icons/network/connected_notification.svg
@@ -0,0 +1 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="white" width="48px" height="48px"><path d="M0 0h24v24H0V0zm0 0h24v24H0V0z" fill="none"/><path d="M2.06 10.06c.51.51 1.32.56 1.87.1 4.67-3.84 11.45-3.84 16.13-.01.56.46 1.38.42 1.89-.09.59-.59.55-1.57-.1-2.1-5.71-4.67-13.97-4.67-19.69 0-.65.52-.7 1.5-.1 2.1zm7.76 7.76l1.47 1.47c.39.39 1.02.39 1.41 0l1.47-1.47c.47-.47.37-1.28-.23-1.59-1.22-.63-2.68-.63-3.91 0-.57.31-.68 1.12-.21 1.59zm-3.73-3.73c.49.49 1.26.54 1.83.13 2.44-1.73 5.72-1.73 8.16 0 .57.4 1.34.36 1.83-.13l.01-.01c.6-.6.56-1.62-.13-2.11-3.44-2.49-8.13-2.49-11.58 0-.69.5-.73 1.51-.12 2.12z"/></svg>
\ No newline at end of file
diff --git a/awesome/icons/network/loading.svg b/awesome/icons/network/loading.svg
new file mode 100755
index 0000000..cd7bc0e
--- /dev/null
+++ b/awesome/icons/network/loading.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240"
+   height="240"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="ic_sync_48px.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview6"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="0.61458333"
+     inkscape:cx="-276.66458"
+     inkscape:cy="-76.310045"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M 120,47.272727 V 20 L 83.636361,56.363636 120,92.72727 V 65.454545 c 30.13636,0 54.54545,24.409095 54.54545,54.545455 0,9.22727 -2.31818,17.86364 -6.31818,25.5 l 13.27272,13.27273 C 188.54545,147.5 192.72727,134.27273 192.72727,120 192.72727,79.818182 160.18181,47.272727 120,47.272727 Z m 0,127.272723 c -30.136366,0 -54.545457,-24.40909 -54.545457,-54.54545 0,-9.22727 2.318182,-17.86364 6.318182,-25.5 L 58.499998,81.227273 C 51.454543,92.5 47.272725,105.72727 47.272725,120 c 0,40.18182 32.545455,72.72727 72.727275,72.72727 V 220 L 156.36363,183.63636 120,147.27273 Z"
+     id="path2"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff;fill-opacity:1;stroke-width:4.5454545" />
+</svg>
diff --git a/awesome/icons/network/wifi-strength-1-alert.svg b/awesome/icons/network/wifi-strength-1-alert.svg
new file mode 100755
index 0000000..7a8de11
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-1-alert.svg
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg8"
+   sodipodi:docname="wifi-strength-1-alert.svg"
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+  <metadata
+     id="metadata14">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs12" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview10"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="2.4583334"
+     inkscape:cx="72.138642"
+     inkscape:cy="106.67249"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg8" />
+  <g
+     id="g832"
+     transform="matrix(0.23231214,0,0,0.23231214,-3.8774568,-3.8774563)">
+    <path
+       style="fill:none"
+       inkscape:connector-curvature="0"
+       id="path2"
+       d="m 19.79,176.45967 h 26 v 24 h -26 z" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#ffffff;fill-opacity:0.4;stroke-width:7.9459672"
+       id="path4"
+       d="M 209.48294,87.216134 220.21,73.866904 c -3.89352,-2.86055 -42.35201,-34.326578 -100.03973,-34.326578 -57.687723,0 -96.146206,31.466028 -99.96027,34.326578 l 99.88081,124.433846 0.0795,0.15892 0.0795,-0.0795 55.54231,-69.20938 V 87.216094 Z" />
+    <path
+       style="fill:#ffffff;fill-opacity:1;stroke-width:7.9459672"
+       inkscape:connector-curvature="0"
+       id="path6"
+       d="m 75.196095,142.4406 44.974175,55.93961 v 0.0795 -0.0795 l 44.97418,-56.01907 c -1.74812,-1.27135 -18.99087,-15.41518 -44.97418,-15.41518 -25.983313,0 -43.226063,14.14383 -44.974175,15.49464 z m 116.487885,56.01907 h 15.89193 v -15.89193 h -15.89193 z m 0,-95.35161 v 63.56774 h 15.89193 v -63.56774 z" />
+  </g>
+</svg>
diff --git a/awesome/icons/network/wifi-strength-1.svg b/awesome/icons/network/wifi-strength-1.svg
new file mode 100755
index 0000000..9e90049
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-1.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg6"
+   sodipodi:docname="ic_signal_wifi_1_bar_48px.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview8"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="4.9166667"
+     inkscape:cx="24"
+     inkscape:cy="24"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <path
+     fill-opacity=".3"
+     d="M24.02 42.98L47.28 14c-.9-.68-9.85-8-23.28-8S1.62 13.32.72 14l23.26 28.98.02.02.02-.02z"
+     id="path2"
+     style="fill:#ffffff;fill-opacity:0.40000001" />
+  <path
+     d="M13.34 29.72l10.65 13.27.01.01.01-.01 10.65-13.27C34.13 29.31 30.06 26 24 26s-10.13 3.31-10.66 3.72z"
+     id="path4"
+     style="fill:#ffffff;fill-opacity:1" />
+</svg>
diff --git a/awesome/icons/network/wifi-strength-2-alert.svg b/awesome/icons/network/wifi-strength-2-alert.svg
new file mode 100755
index 0000000..970987a
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-2-alert.svg
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg8"
+   sodipodi:docname="wifi-strength-2-alert.svg"
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+  <metadata
+     id="metadata14">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs12" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview10"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="4.9166667"
+     inkscape:cx="69.967175"
+     inkscape:cy="30.177599"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg8" />
+  <g
+     id="g832"
+     transform="matrix(1.7907692,0,0,1.7907692,0.7200004,-384.29538)">
+    <path
+       style="fill:none"
+       inkscape:connector-curvature="0"
+       id="path2"
+       d="m 0,216 h 26 v 24 H 0 Z" />
+    <path
+       style="fill:#ffffff;fill-opacity:0.4"
+       inkscape:connector-curvature="0"
+       id="path4"
+       d="m 24.24,224 1.35,-1.68 C 25.1,221.96 20.26,218 13,218 5.74,218 0.9,221.96 0.42,222.32 L 12.99,237.98 13,238 13.01,237.99 20,229.28 V 224 Z" />
+    <path
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path6"
+       d="m 5.45,228.59 7.54,9.4 0.01,0.01 0.01,-0.01 6.99,-8.71 v -1.09 C 18.93,227.46 16.41,226 13,226 c -4.36,0 -7.26,2.38 -7.55,2.59 z M 22,226 v 8 h 2 v -8 z m 0,12 h 2 v -2 h -2 z" />
+  </g>
+</svg>
diff --git a/awesome/icons/network/wifi-strength-2.svg b/awesome/icons/network/wifi-strength-2.svg
new file mode 100755
index 0000000..e65871e
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-2.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg6"
+   sodipodi:docname="ic_signal_wifi_2_bar_48px.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview8"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="4.9166667"
+     inkscape:cx="-14.542373"
+     inkscape:cy="24"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <path
+     fill-opacity=".3"
+     d="M24.02 42.98L47.28 14c-.9-.68-9.85-8-23.28-8S1.62 13.32.72 14l23.26 28.98.02.02.02-.02z"
+     id="path2"
+     style="fill:#ffffff;fill-opacity:0.40000001" />
+  <path
+     d="M9.58 25.03l14.41 17.95.01.02.01-.02 14.41-17.95C37.7 24.47 32.2 20 24 20s-13.7 4.47-14.42 5.03z"
+     id="path4"
+     style="fill:#ffffff;fill-opacity:1" />
+</svg>
diff --git a/awesome/icons/network/wifi-strength-3-alert.svg b/awesome/icons/network/wifi-strength-3-alert.svg
new file mode 100755
index 0000000..e1b5a5f
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-3-alert.svg
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg8"
+   sodipodi:docname="wifi-strength-3-alert.svg"
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+  <metadata
+     id="metadata14">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs12" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview10"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="4.9166666"
+     inkscape:cx="36.415019"
+     inkscape:cy="-31.408761"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg8" />
+  <g
+     id="g824"
+     transform="matrix(1.7907692,0,0,1.7907692,0.7200004,-384.29538)">
+    <path
+       style="fill:#ffffff;fill-opacity:0.4"
+       inkscape:connector-curvature="0"
+       id="path2"
+       d="m 24.24,224 1.35,-1.68 C 25.1,221.96 20.26,218 13,218 5.74,218 0.9,221.96 0.42,222.32 L 12.99,237.98 13,238 13.01,237.99 20,229.28 V 224 Z" />
+    <path
+       style="fill:#ffffff;fill-opacity:1"
+       inkscape:connector-curvature="0"
+       id="path4"
+       d="m 20,229.28 v -4.57 C 18.35,223.87 15.94,223 13,223 c -5.44,0 -9.07,2.97 -9.44,3.24 l 9.43,11.75 0.01,0.01 0.01,-0.01 z m 2,6.72 h 2 v 2 h -2 z m 0,-10 h 2 v 8 h -2 z" />
+    <path
+       style="fill:none"
+       inkscape:connector-curvature="0"
+       id="path6"
+       d="m 0,216 h 26 v 24 H 0 Z" />
+  </g>
+</svg>
diff --git a/awesome/icons/network/wifi-strength-3.svg b/awesome/icons/network/wifi-strength-3.svg
new file mode 100755
index 0000000..cec90d5
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-3.svg
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg6"
+   sodipodi:docname="ic_signal_wifi_3_bar_48px.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview8"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="4.9166667"
+     inkscape:cx="24"
+     inkscape:cy="24"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <path
+     fill-opacity=".3"
+     d="M24.02 42.98L47.28 14c-.9-.68-9.85-8-23.28-8S1.62 13.32.72 14l23.26 28.98.02.02.02-.02z"
+     id="path2"
+     style="fill:#ffffff;fill-opacity:0.40000001" />
+  <path
+     d="M7.07 21.91l16.92 21.07.01.02.02-.02 16.92-21.07C40.08 21.25 33.62 16 24 16c-9.63 0-16.08 5.25-16.93 5.91z"
+     id="path4"
+     style="fill-opacity:1;fill:#ffffff" />
+</svg>
diff --git a/awesome/icons/network/wifi-strength-4-alert.svg b/awesome/icons/network/wifi-strength-4-alert.svg
new file mode 100755
index 0000000..2d9d47d
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-4-alert.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg6"
+   sodipodi:docname="wifi-strength-4-alert.svg"
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+  <metadata
+     id="metadata12">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs10" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview8"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="0.43457604"
+     inkscape:cx="16.852347"
+     inkscape:cy="388.12021"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg6" />
+  <path
+     d="m 40.639143,42.498211 h 3.699641 V 38.79857 H 40.639143 Z M 23.990751,5.5017888 C 10.561049,5.5017888 1.607914,12.827078 0.72,13.493014 l 23.252253,28.9682 0.01851,0.037 0.01851,-0.01851 12.93025,-16.111943 v -9.767054 h 7.843241 L 47.28,13.493014 C 46.373589,12.827078 37.420452,5.5017888 23.990751,5.5017888 Z M 40.639143,35.098926 h 3.699641 v -14.79857 h -3.699641 z"
+     id="path2"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff;fill-opacity:1;stroke-width:1.84982121" />
+</svg>
diff --git a/awesome/icons/network/wifi-strength-4.svg b/awesome/icons/network/wifi-strength-4.svg
new file mode 100755
index 0000000..259a3a9
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-4.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="ic_signal_wifi_4_bar_48px.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview6"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="4.9166667"
+     inkscape:cx="-14.542373"
+     inkscape:cy="24"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M24.02 42.98L47.28 14c-.9-.68-9.85-8-23.28-8S1.62 13.32.72 14l23.26 28.98.02.02.02-.02z"
+     id="path2"
+     style="fill:#ffffff;fill-opacity:1" />
+</svg>
diff --git a/awesome/icons/network/wifi-strength-off.svg b/awesome/icons/network/wifi-strength-off.svg
new file mode 100755
index 0000000..12cb043
--- /dev/null
+++ b/awesome/icons/network/wifi-strength-off.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48"
+   height="48"
+   viewBox="0 0 48 48"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="ic_signal_wifi_off_48px.svg"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview6"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="4.9166667"
+     inkscape:cx="-14.542373"
+     inkscape:cy="24"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M47.28 14c-.9-.68-9.85-8-23.28-8-3.01 0-5.78.38-8.3.96L36.36 27.6 47.28 14zM6.55 2.89L4 5.44l4.11 4.11c-4.28 1.97-6.92 4.1-7.39 4.46l23.26 28.98.02.01.02-.02 7.8-9.72 6.63 6.63L41 37.34 6.55 2.89z"
+     id="path2"
+     style="fill:#ffffff;fill-opacity:1" />
+</svg>
diff --git a/awesome/icons/network/wired-alert.svg b/awesome/icons/network/wired-alert.svg
new file mode 100755
index 0000000..60ad378
--- /dev/null
+++ b/awesome/icons/network/wired-alert.svg
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+   sodipodi:docname="wired-alert.svg"
+   id="svg4"
+   version="1.1"
+   viewBox="0 0 240 240"
+   height="240"
+   width="240">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     inkscape:document-rotation="0"
+     inkscape:current-layer="svg4"
+     inkscape:window-maximized="0"
+     inkscape:window-y="28"
+     inkscape:window-x="45"
+     inkscape:cy="132.09498"
+     inkscape:cx="182.153"
+     inkscape:zoom="1.9765685"
+     inkscape:pagecheckerboard="true"
+     showgrid="false"
+     id="namedview6"
+     inkscape:window-height="740"
+     inkscape:window-width="1321"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0"
+     guidetolerance="10"
+     gridtolerance="10"
+     objecttolerance="10"
+     borderopacity="1"
+     bordercolor="#666666"
+     pagecolor="#ffffff" />
+  <path
+     d="M 38.181641 29.091797 C 28.136187 29.091797 20 37.227983 20 47.273438 L 20 156.36328 C 20 166.40873 28.136187 174.54492 38.181641 174.54492 L 101.81836 174.54492 L 83.636719 201.81836 L 83.636719 210.9082 L 156.36328 210.9082 L 156.36328 201.81836 L 138.18164 174.54492 L 166.98633 174.54492 L 166.98633 138.18164 L 38.181641 138.18164 L 38.181641 47.273438 L 201.81836 47.273438 L 201.81836 81.871094 L 220 81.871094 L 220 47.273438 C 220 37.227984 211.86382 29.091797 201.81836 29.091797 L 38.181641 29.091797 z "
+     style="fill:#ffffff;fill-opacity:1;stroke-width:4.5454545"
+     id="path2" />
+  <path
+     d="m 187,211.03998 h 18.50666 V 192.53333 H 187 Z M 187,100 v 74.02666 h 18.50666 V 100 Z"
+     id="path6"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff;fill-opacity:1;stroke-width:9.25333"
+     sodipodi:nodetypes="cccccccccc" />
+</svg>
diff --git a/awesome/icons/network/wired-off.svg b/awesome/icons/network/wired-off.svg
new file mode 100755
index 0000000..35481c0
--- /dev/null
+++ b/awesome/icons/network/wired-off.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240"
+   height="240"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="wired-alert.svg"
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview6"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="1.7383042"
+     inkscape:cx="84.551561"
+     inkscape:cy="104.10598"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M 201.81818,29.090909 H 38.181818 C 28.136364,29.090909 20,37.227273 20,47.272727 V 156.36364 c 0,10.04545 8.136364,18.18181 18.181818,18.18181 h 63.636362 l -18.181816,27.27273 v 9.09091 h 72.727276 v -9.09091 l -18.18182,-27.27273 h 63.63636 C 211.86364,174.54545 220,166.40909 220,156.36364 V 47.272727 c 0,-10.045454 -8.13636,-18.181818 -18.18182,-18.181818 z m 0,109.090911 H 38.181818 V 47.272727 H 201.81818 Z"
+     id="path2"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff;fill-opacity:0.40000001;stroke-width:4.5454545" />
+</svg>
diff --git a/awesome/icons/network/wired.svg b/awesome/icons/network/wired.svg
new file mode 100755
index 0000000..00441ac
--- /dev/null
+++ b/awesome/icons/network/wired.svg
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240"
+   height="240"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg4"
+   sodipodi:docname="ic_desktop_mac_48px.svg"
+   inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)">
+  <metadata
+     id="metadata10">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs8" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     id="namedview6"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:zoom="2.4583333"
+     inkscape:cx="103.07022"
+     inkscape:cy="132.72641"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4" />
+  <path
+     d="M 201.81818,29.090909 H 38.181818 C 28.136364,29.090909 20,37.227273 20,47.272727 V 156.36364 c 0,10.04545 8.136364,18.18181 18.181818,18.18181 h 63.636362 l -18.181816,27.27273 v 9.09091 h 72.727276 v -9.09091 l -18.18182,-27.27273 h 63.63636 C 211.86364,174.54545 220,166.40909 220,156.36364 V 47.272727 c 0,-10.045454 -8.13636,-18.181818 -18.18182,-18.181818 z m 0,109.090911 H 38.181818 V 47.272727 H 201.81818 Z"
+     id="path2"
+     inkscape:connector-curvature="0"
+     style="fill:#ffffff;fill-opacity:1;stroke-width:4.5454545" />
+</svg>
diff --git a/awesome/icons/tags/mirage/1-busy.png b/awesome/icons/tags/mirage/1-busy.png
new file mode 100644
index 0000000..334eb70
Binary files /dev/null and b/awesome/icons/tags/mirage/1-busy.png differ
diff --git a/awesome/icons/tags/mirage/1-inactive.png b/awesome/icons/tags/mirage/1-inactive.png
new file mode 100644
index 0000000..75a0c8f
Binary files /dev/null and b/awesome/icons/tags/mirage/1-inactive.png differ
diff --git a/awesome/icons/tags/mirage/1.png b/awesome/icons/tags/mirage/1.png
new file mode 100644
index 0000000..de3e03b
Binary files /dev/null and b/awesome/icons/tags/mirage/1.png differ
diff --git a/awesome/icons/tags/mirage/2-busy.png b/awesome/icons/tags/mirage/2-busy.png
new file mode 100644
index 0000000..6ff2131
Binary files /dev/null and b/awesome/icons/tags/mirage/2-busy.png differ
diff --git a/awesome/icons/tags/mirage/2-inactive.png b/awesome/icons/tags/mirage/2-inactive.png
new file mode 100644
index 0000000..6bf3578
Binary files /dev/null and b/awesome/icons/tags/mirage/2-inactive.png differ
diff --git a/awesome/icons/tags/mirage/2.png b/awesome/icons/tags/mirage/2.png
new file mode 100644
index 0000000..95fd47d
Binary files /dev/null and b/awesome/icons/tags/mirage/2.png differ
diff --git a/awesome/icons/tags/mirage/3-busy.png b/awesome/icons/tags/mirage/3-busy.png
new file mode 100644
index 0000000..db71d0d
Binary files /dev/null and b/awesome/icons/tags/mirage/3-busy.png differ
diff --git a/awesome/icons/tags/mirage/3-inactive.png b/awesome/icons/tags/mirage/3-inactive.png
new file mode 100644
index 0000000..1411d7b
Binary files /dev/null and b/awesome/icons/tags/mirage/3-inactive.png differ
diff --git a/awesome/icons/tags/mirage/3.png b/awesome/icons/tags/mirage/3.png
new file mode 100644
index 0000000..6db102b
Binary files /dev/null and b/awesome/icons/tags/mirage/3.png differ
diff --git a/awesome/icons/tags/mirage/4-busy.png b/awesome/icons/tags/mirage/4-busy.png
new file mode 100644
index 0000000..d968e41
Binary files /dev/null and b/awesome/icons/tags/mirage/4-busy.png differ
diff --git a/awesome/icons/tags/mirage/4-inactive.png b/awesome/icons/tags/mirage/4-inactive.png
new file mode 100644
index 0000000..869fa8c
Binary files /dev/null and b/awesome/icons/tags/mirage/4-inactive.png differ
diff --git a/awesome/icons/tags/mirage/4.png b/awesome/icons/tags/mirage/4.png
new file mode 100644
index 0000000..0f61d3f
Binary files /dev/null and b/awesome/icons/tags/mirage/4.png differ
diff --git a/awesome/icons/tags/mirage/5-busy.png b/awesome/icons/tags/mirage/5-busy.png
new file mode 100644
index 0000000..971c806
Binary files /dev/null and b/awesome/icons/tags/mirage/5-busy.png differ
diff --git a/awesome/icons/tags/mirage/5-inactive.png b/awesome/icons/tags/mirage/5-inactive.png
new file mode 100644
index 0000000..6eecfa6
Binary files /dev/null and b/awesome/icons/tags/mirage/5-inactive.png differ
diff --git a/awesome/icons/tags/mirage/5.png b/awesome/icons/tags/mirage/5.png
new file mode 100644
index 0000000..bdb26be
Binary files /dev/null and b/awesome/icons/tags/mirage/5.png differ
diff --git a/awesome/icons/tags/mirage/6-busy.png b/awesome/icons/tags/mirage/6-busy.png
new file mode 100644
index 0000000..40178d4
Binary files /dev/null and b/awesome/icons/tags/mirage/6-busy.png differ
diff --git a/awesome/icons/tags/mirage/6-inactive.png b/awesome/icons/tags/mirage/6-inactive.png
new file mode 100644
index 0000000..2fec9b1
Binary files /dev/null and b/awesome/icons/tags/mirage/6-inactive.png differ
diff --git a/awesome/icons/tags/mirage/6.png b/awesome/icons/tags/mirage/6.png
new file mode 100644
index 0000000..b979d4e
Binary files /dev/null and b/awesome/icons/tags/mirage/6.png differ
diff --git a/awesome/icons/tags/mirage/7-busy.png b/awesome/icons/tags/mirage/7-busy.png
new file mode 100644
index 0000000..c10ca78
Binary files /dev/null and b/awesome/icons/tags/mirage/7-busy.png differ
diff --git a/awesome/icons/tags/mirage/7-inactive.png b/awesome/icons/tags/mirage/7-inactive.png
new file mode 100644
index 0000000..7294de9
Binary files /dev/null and b/awesome/icons/tags/mirage/7-inactive.png differ
diff --git a/awesome/icons/tags/mirage/7.png b/awesome/icons/tags/mirage/7.png
new file mode 100644
index 0000000..2723d02
Binary files /dev/null and b/awesome/icons/tags/mirage/7.png differ
diff --git a/awesome/icons/tags/pastel/1.png b/awesome/icons/tags/pastel/1.png
new file mode 100644
index 0000000..0687066
Binary files /dev/null and b/awesome/icons/tags/pastel/1.png differ
diff --git a/awesome/icons/tags/pastel/2.png b/awesome/icons/tags/pastel/2.png
new file mode 100644
index 0000000..3a5e511
Binary files /dev/null and b/awesome/icons/tags/pastel/2.png differ
diff --git a/awesome/icons/tags/pastel/3.png b/awesome/icons/tags/pastel/3.png
new file mode 100644
index 0000000..84a3b12
Binary files /dev/null and b/awesome/icons/tags/pastel/3.png differ
diff --git a/awesome/icons/tags/pastel/4.png b/awesome/icons/tags/pastel/4.png
new file mode 100644
index 0000000..08f15fd
Binary files /dev/null and b/awesome/icons/tags/pastel/4.png differ
diff --git a/awesome/icons/tags/pastel/5.png b/awesome/icons/tags/pastel/5.png
new file mode 100644
index 0000000..702facf
Binary files /dev/null and b/awesome/icons/tags/pastel/5.png differ
diff --git a/awesome/icons/tags/pastel/6.png b/awesome/icons/tags/pastel/6.png
new file mode 100644
index 0000000..1330140
Binary files /dev/null and b/awesome/icons/tags/pastel/6.png differ
diff --git a/awesome/icons/tags/pastel/7.png b/awesome/icons/tags/pastel/7.png
new file mode 100644
index 0000000..88b1869
Binary files /dev/null and b/awesome/icons/tags/pastel/7.png differ
diff --git a/awesome/icons/tags/pastel/8.png b/awesome/icons/tags/pastel/8.png
new file mode 100644
index 0000000..237768b
Binary files /dev/null and b/awesome/icons/tags/pastel/8.png differ
diff --git a/awesome/icons/tags/pastel/9.png b/awesome/icons/tags/pastel/9.png
new file mode 100644
index 0000000..3d0a045
Binary files /dev/null and b/awesome/icons/tags/pastel/9.png differ
diff --git a/awesome/icons/titlebar/close_focus.svg b/awesome/icons/titlebar/close_focus.svg
new file mode 100644
index 0000000..42f5e89
--- /dev/null
+++ b/awesome/icons/titlebar/close_focus.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240mm"
+   height="240mm"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="close_focus.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="79.70386"
+     inkscape:cy="560"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-57)">
+    <circle
+       style="opacity:1;fill:#ff5f57;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path815"
+       cx="120"
+       cy="177"
+       r="100" />
+  </g>
+</svg>
diff --git a/awesome/icons/titlebar/close_focus_hover.svg b/awesome/icons/titlebar/close_focus_hover.svg
new file mode 100644
index 0000000..2d77a2f
--- /dev/null
+++ b/awesome/icons/titlebar/close_focus_hover.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240mm"
+   height="240mm"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="close_focus (copy).svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="527.165"
+     inkscape:cy="457.76221"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-57)">
+    <circle
+       style="opacity:1;fill:#f48fb1;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path815"
+       cx="120"
+       cy="177"
+       r="100" />
+  </g>
+</svg>
diff --git a/awesome/icons/titlebar/maximized_focus.svg b/awesome/icons/titlebar/maximized_focus.svg
new file mode 100644
index 0000000..ba14f40
--- /dev/null
+++ b/awesome/icons/titlebar/maximized_focus.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240mm"
+   height="240mm"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="maximized_focus_inactive.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="79.70386"
+     inkscape:cy="560"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-57)">
+    <circle
+       style="opacity:1;fill:#28ca41;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path815"
+       cx="120"
+       cy="177"
+       r="100" />
+  </g>
+</svg>
diff --git a/awesome/icons/titlebar/maximized_focus_hover.svg b/awesome/icons/titlebar/maximized_focus_hover.svg
new file mode 100644
index 0000000..7a5c055
--- /dev/null
+++ b/awesome/icons/titlebar/maximized_focus_hover.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240mm"
+   height="240mm"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="maximized_focus_inactive_hover.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-464.58185"
+     inkscape:cy="560"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-57)">
+    <circle
+       style="opacity:1;fill:#a1efd3;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path815"
+       cx="120"
+       cy="177"
+       r="100" />
+  </g>
+</svg>
diff --git a/awesome/icons/titlebar/minimize_focus.svg b/awesome/icons/titlebar/minimize_focus.svg
new file mode 100644
index 0000000..7fae5df
--- /dev/null
+++ b/awesome/icons/titlebar/minimize_focus.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240mm"
+   height="240mm"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="minimize_focus.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="79.70386"
+     inkscape:cy="560"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-57)">
+    <circle
+       style="opacity:1;fill:#fec02f;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path815"
+       cx="120"
+       cy="177"
+       r="100" />
+  </g>
+</svg>
diff --git a/awesome/icons/titlebar/minimize_focus_hover.svg b/awesome/icons/titlebar/minimize_focus_hover.svg
new file mode 100644
index 0000000..282d8b0
--- /dev/null
+++ b/awesome/icons/titlebar/minimize_focus_hover.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240mm"
+   height="240mm"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="minimize_focus_hover.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-464.58185"
+     inkscape:cy="560"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-57)">
+    <circle
+       style="opacity:1;fill:#f1fa8c;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path815"
+       cx="120"
+       cy="177"
+       r="100" />
+  </g>
+</svg>
diff --git a/awesome/icons/titlebar/normal.svg b/awesome/icons/titlebar/normal.svg
new file mode 100644
index 0000000..6acee08
--- /dev/null
+++ b/awesome/icons/titlebar/normal.svg
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="240mm"
+   height="240mm"
+   viewBox="0 0 240 240"
+   version="1.1"
+   id="svg8"
+   inkscape:version="0.92.4 5da689c313, 2019-01-14"
+   sodipodi:docname="close_normal.svg">
+  <defs
+     id="defs2" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.35"
+     inkscape:cx="-464.58185"
+     inkscape:cy="560"
+     inkscape:document-units="mm"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:pagecheckerboard="true"
+     inkscape:window-width="1321"
+     inkscape:window-height="740"
+     inkscape:window-x="45"
+     inkscape:window-y="28"
+     inkscape:window-maximized="0" />
+  <metadata
+     id="metadata5">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-57)">
+    <circle
+       style="opacity:1;fill:#414458;fill-opacity:1;stroke:#baffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path815"
+       cx="120"
+       cy="177"
+       r="100" />
+  </g>
+</svg>
diff --git a/awesome/icons/volume/mirage/volume-low.png b/awesome/icons/volume/mirage/volume-low.png
new file mode 100644
index 0000000..c83c514
Binary files /dev/null and b/awesome/icons/volume/mirage/volume-low.png differ
diff --git a/awesome/icons/volume/mirage/volume-off.png b/awesome/icons/volume/mirage/volume-off.png
new file mode 100644
index 0000000..4e5c360
Binary files /dev/null and b/awesome/icons/volume/mirage/volume-off.png differ
diff --git a/awesome/icons/volume/mirage/volume.png b/awesome/icons/volume/mirage/volume.png
new file mode 100644
index 0000000..243e811
Binary files /dev/null and b/awesome/icons/volume/mirage/volume.png differ
diff --git a/awesome/icons/volume/pastel/volume-low.png b/awesome/icons/volume/pastel/volume-low.png
new file mode 100644
index 0000000..c21cd66
Binary files /dev/null and b/awesome/icons/volume/pastel/volume-low.png differ
diff --git a/awesome/icons/volume/pastel/volume-off.png b/awesome/icons/volume/pastel/volume-off.png
new file mode 100644
index 0000000..c21cd66
Binary files /dev/null and b/awesome/icons/volume/pastel/volume-off.png differ
diff --git a/awesome/icons/volume/pastel/volume.png b/awesome/icons/volume/pastel/volume.png
new file mode 100644
index 0000000..c21cd66
Binary files /dev/null and b/awesome/icons/volume/pastel/volume.png differ
diff --git a/awesome/keys.lua b/awesome/keys.lua
new file mode 100644
index 0000000..5502e2b
--- /dev/null
+++ b/awesome/keys.lua
@@ -0,0 +1,603 @@
+--      ██╗  ██╗███████╗██╗   ██╗███████╗
+--      ██║ ██╔╝██╔════╝╚██╗ ██╔╝██╔════╝
+--      █████╔╝ █████╗   ╚████╔╝ ███████╗
+--      ██╔═██╗ ██╔══╝    ╚██╔╝  ╚════██║
+--      ██║  ██╗███████╗   ██║   ███████║
+--      ╚═╝  ╚═╝╚══════╝   ╚═╝   ╚══════╝
+
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local gears = require("gears")
+local naughty = require("naughty")
+local beautiful = require("beautiful")
+local dpi = beautiful.xresources.apply_dpi
+
+-- Define mod keys
+local modkey = "Mod4"
+local altkey = "Shift"
+
+-- define module table
+local keys = {}
+
+
+-- ===================================================================
+-- Movement Functions (Called by some keybinds)
+-- ===================================================================
+
+
+-- Move given client to given direction
+local function move_client(c, direction)
+   -- If client is floating, move to edge
+   if c.floating or (awful.layout.get(mouse.screen) == awful.layout.suit.floating) then
+      local workarea = awful.screen.focused().workarea
+      if direction == "up" then
+         c:geometry({nil, y = workarea.y + beautiful.useless_gap * 2, nil, nil})
+      elseif direction == "down" then
+         c:geometry({nil, y = workarea.height + workarea.y - c:geometry().height - beautiful.useless_gap * 2 - beautiful.border_width * 2, nil, nil})
+      elseif direction == "left" then
+         c:geometry({x = workarea.x + beautiful.useless_gap * 2, nil, nil, nil})
+      elseif direction == "right" then
+         c:geometry({x = workarea.width + workarea.x - c:geometry().width - beautiful.useless_gap * 2 - beautiful.border_width * 2, nil, nil, nil})
+      end
+   -- Otherwise swap the client in the tiled layout
+   elseif awful.layout.get(mouse.screen) == awful.layout.suit.max then
+      if direction == "up" or direction == "left" then
+         awful.client.swap.byidx(-1, c)
+      elseif direction == "down" or direction == "right" then
+         awful.client.swap.byidx(1, c)
+      end
+   else
+      awful.client.swap.bydirection(direction, c, nil)
+   end
+end
+
+
+-- Resize client in given direction
+local floating_resize_amount = dpi(20)
+local tiling_resize_factor = 0.05
+
+local function resize_client(c, direction)
+   if awful.layout.get(mouse.screen) == awful.layout.suit.floating or (c and c.floating) then
+      if direction == "up" then
+         c:relative_move(0, 0, 0, -floating_resize_amount)
+      elseif direction == "down" then
+         c:relative_move(0, 0, 0, floating_resize_amount)
+      elseif direction == "left" then
+         c:relative_move(0, 0, -floating_resize_amount, 0)
+      elseif direction == "right" then
+         c:relative_move(0, 0, floating_resize_amount, 0)
+      end
+   else
+      if direction == "up" then
+         awful.client.incwfact(-tiling_resize_factor)
+      elseif direction == "down" then
+         awful.client.incwfact(tiling_resize_factor)
+      elseif direction == "left" then
+         awful.tag.incmwfact(-tiling_resize_factor)
+      elseif direction == "right" then
+         awful.tag.incmwfact(tiling_resize_factor)
+      end
+   end
+end
+
+
+-- raise focused client
+local function raise_client()
+   if client.focus then
+      client.focus:raise()
+   end
+end
+
+
+-- ===================================================================
+-- Mouse bindings
+-- ===================================================================
+
+
+-- Mouse buttons on the desktop
+keys.desktopbuttons = gears.table.join(
+   -- left click on desktop to hide notification
+   awful.button({}, 1,
+      function ()
+         naughty.destroy_all_notifications()
+      end
+   )
+)
+
+-- Mouse buttons on the client
+keys.clientbuttons = gears.table.join(
+   -- Raise client
+   awful.button({}, 1,
+      function(c)
+         client.focus = c
+         c:raise()
+      end
+   ),
+
+   -- Move and Resize Client
+   awful.button({modkey}, 1, awful.mouse.client.move),
+   awful.button({modkey}, 3, awful.mouse.client.resize)
+)
+
+
+-- ===================================================================
+-- Desktop Key bindings
+-- ===================================================================
+
+
+keys.globalkeys = gears.table.join(
+   -- =========================================
+   -- SPAWN APPLICATION KEY BINDINGS
+   -- =========================================
+
+   -- Spawn terminal
+   awful.key({modkey}, "Return",
+      function()
+         awful.spawn("kitty --single-instance")
+      end,
+      {description = "open a terminal", group = "launcher"}
+   ),
+   -- launch rofi
+   awful.key({modkey}, "d",
+      function()
+         awful.spawn(apps.launcher)
+      end,
+      {description = "application launcher", group = "launcher"}
+   ),
+
+   -- =========================================
+   -- FUNCTION KEYS
+   -- =========================================
+
+   -- Brightness
+   awful.key({}, "XF86MonBrightnessUp",
+      function()
+         awful.spawn("xbacklight -inc 10", false)
+      end,
+      {description = "+10%", group = "hotkeys"}
+   ),
+   awful.key({}, "XF86MonBrightnessDown",
+      function()
+         awful.spawn("xbacklight -dec 10", false)
+      end,
+      {description = "-10%", group = "hotkeys"}
+   ),
+
+   -- ALSA volume control
+   awful.key({}, "XF86AudioRaiseVolume",
+      function()
+         awful.spawn("amixer -D pulse sset Master 5%+", false)
+         awesome.emit_signal("volume_change")
+      end,
+      {description = "volume up", group = "hotkeys"}
+   ),
+   awful.key({}, "XF86AudioLowerVolume",
+      function()
+         awful.spawn("amixer -D pulse sset Master 5%-", false)
+         awesome.emit_signal("volume_change")
+      end,
+      {description = "volume down", group = "hotkeys"}
+   ),
+   awful.key({}, "XF86AudioMute",
+      function()
+         awful.spawn("amixer -D pulse set Master 1+ toggle", false)
+         awesome.emit_signal("volume_change")
+      end,
+      {description = "toggle mute", group = "hotkeys"}
+   ),
+   awful.key({}, "XF86AudioNext",
+      function()
+         awful.spawn("mpc next", false)
+      end,
+      {description = "next music", group = "hotkeys"}
+   ),
+   awful.key({}, "XF86AudioPrev",
+      function()
+         awful.spawn("mpc prev", false)
+      end,
+      {description = "previous music", group = "hotkeys"}
+   ),
+   awful.key({}, "XF86AudioPlay",
+      function()
+         awful.spawn("mpc toggle", false)
+      end,
+      {description = "play/pause music", group = "hotkeys"}
+   ),
+
+   -- Screenshot on prtscn using scrot
+   awful.key({}, "Print",
+      function()
+         awful.util.spawn(apps.screenshot, false)
+      end
+   ),
+
+   -- =========================================
+   -- RELOAD / QUIT AWESOME
+   -- =========================================
+
+   -- Reload Awesome
+   awful.key({modkey, "Shift"}, "r",
+      awesome.restart,
+      {description = "reload awesome", group = "awesome"}
+   ),
+
+   -- Quit Awesome
+   awful.key({modkey}, "Escape",
+      function()
+         -- emit signal to show the exit screen
+         awesome.emit_signal("show_exit_screen")
+      end,
+      {description = "toggle exit screen", group = "hotkeys"}
+   ),
+
+   awful.key({}, "XF86PowerOff",
+      function()
+         -- emit signal to show the exit screen
+         awesome.emit_signal("show_exit_screen")
+      end,
+      {description = "toggle exit screen", group = "hotkeys"}
+   ),
+
+   -- =========================================
+   -- CLIENT FOCUSING
+   -- =========================================
+
+   -- Focus client by direction (hjkl keys)
+   -- awful.key({modkey}, "j",
+   --    function()
+   --       awful.client.focus.bydirection("down")
+   --       raise_client()
+   --    end,
+   --    {description = "focus down", group = "client"}
+   -- ),
+   -- awful.key({modkey}, "k",
+   --    function()
+   --       awful.client.focus.bydirection("up")
+   --       raise_client()
+   --    end,
+   --    {description = "focus up", group = "client"}
+   -- ),
+   -- awful.key({modkey}, "h",
+   --    function()
+   --       awful.client.focus.bydirection("left")
+   --       raise_client()
+   --    end,
+   --    {description = "focus left", group = "client"}
+   -- ),
+   -- awful.key({modkey}, "l",
+   --    function()
+   --       awful.client.focus.bydirection("right")
+   --       raise_client()
+   --    end,
+   --    {description = "focus right", group = "client"}
+   -- ),
+
+   -- Focus client by direction (arrow keys)
+   -- awful.key({modkey}, "Down",
+   --    function()
+   --       awful.client.focus.bydirection("down")
+   --       raise_client()
+   --    end,
+   --    {description = "focus down", group = "client"}
+   -- ),
+   -- awful.key({modkey}, "Up",
+   --    function()
+   --       awful.client.focus.bydirection("up")
+   --       raise_client()
+   --    end,
+   --    {description = "focus up", group = "client"}
+   -- ),
+   -- awful.key({modkey}, "Left",
+   --    function()
+   --       awful.client.focus.bydirection("left")
+   --       raise_client()
+   --    end,
+   --    {description = "focus left", group = "client"}
+   -- ),
+   -- awful.key({modkey}, "Right",
+   --    function()
+   --       awful.client.focus.bydirection("right")
+   --       raise_client()
+   --    end,
+   --    {description = "focus right", group = "client"}
+   -- ),
+
+   -- Focus client by index (cycle through clients)
+   awful.key({modkey}, "Tab",
+      function()
+         awful.client.focus.byidx(1)
+      end,
+      {description = "focus next by index", group = "client"}
+   ),
+   awful.key({modkey, "Shift"}, "Tab",
+      function()
+         awful.client.focus.byidx(-1)
+      end,
+      {description = "focus previous by index", group = "client"}
+   ),
+
+   -- =========================================
+   -- SCREEN FOCUSING
+   -- =========================================
+
+   -- Focus screen by index (cycle through screens)
+   awful.key({modkey}, "s",
+      function()
+         awful.screen.focus_relative(1)
+      end
+   ),
+
+   -- =========================================
+   -- CLIENT RESIZING
+   -- =========================================
+
+   awful.key({modkey, "Control"}, "Down",
+      function(c)
+         resize_client(client.focus, "down")
+      end
+   ),
+   awful.key({modkey, "Control"}, "Up",
+      function(c)
+         resize_client(client.focus, "up")
+      end
+   ),
+   awful.key({modkey, "Control"}, "Left",
+      function(c)
+         resize_client(client.focus, "left")
+      end
+   ),
+   awful.key({modkey, "Control"}, "Right",
+      function(c)
+         resize_client(client.focus, "right")
+      end
+   ),
+   awful.key({modkey, "Control"}, "j",
+      function(c)
+         resize_client(client.focus, "down")
+      end
+   ),
+   awful.key({ modkey, "Control" }, "k",
+      function(c)
+         resize_client(client.focus, "up")
+      end
+   ),
+   awful.key({modkey, "Control"}, "h",
+      function(c)
+         resize_client(client.focus, "left")
+      end
+   ),
+   awful.key({modkey, "Control"}, "l",
+      function(c)
+         resize_client(client.focus, "right")
+      end
+   ),
+
+   -- =========================================
+   -- NUMBER OF MASTER / COLUMN CLIENTS
+   -- =========================================
+
+   -- Number of master clients
+   awful.key({modkey, altkey}, "h",
+      function()
+         awful.tag.incnmaster( 1, nil, true)
+      end,
+      {description = "increase the number of master clients", group = "layout"}
+   ),
+   awful.key({ modkey, altkey }, "l",
+      function()
+         awful.tag.incnmaster(-1, nil, true)
+      end,
+      {description = "decrease the number of master clients", group = "layout"}
+   ),
+   awful.key({ modkey, altkey }, "Left",
+      function()
+         awful.tag.incnmaster( 1, nil, true)
+      end,
+      {description = "increase the number of master clients", group = "layout"}
+   ),
+   awful.key({ modkey, altkey }, "Right",
+      function()
+         awful.tag.incnmaster(-1, nil, true)
+      end,
+      {description = "decrease the number of master clients", group = "layout"}
+   ),
+
+   -- Number of columns
+   awful.key({modkey, altkey}, "k",
+      function()
+         awful.tag.incncol(1, nil, true)
+      end,
+      {description = "increase the number of columns", group = "layout"}
+   ),
+   awful.key({modkey, altkey}, "j",
+      function()
+         awful.tag.incncol(-1, nil, true)
+      end,
+      {description = "decrease the number of columns", group = "layout"}
+   ),
+   awful.key({modkey, altkey}, "Up",
+      function()
+         awful.tag.incncol(1, nil, true)
+      end,
+      {description = "increase the number of columns", group = "layout"}
+   ),
+   awful.key({modkey, altkey}, "Down",
+      function()
+         awful.tag.incncol(-1, nil, true)
+      end,
+      {description = "decrease the number of columns", group = "layout"}
+   ),
+
+   -- =========================================
+   -- GAP CONTROL
+   -- =========================================
+
+   -- Gap control
+   awful.key({modkey, "Shift"}, "minus",
+      function()
+         awful.tag.incgap(5, nil)
+      end,
+      {description = "increment gaps size for the current tag", group = "gaps"}
+   ),
+   awful.key({modkey}, "minus",
+      function()
+         awful.tag.incgap(-5, nil)
+      end,
+      {description = "decrement gap size for the current tag", group = "gaps"}
+   ),
+
+   -- =========================================
+   -- LAYOUT SELECTION
+   -- =========================================
+
+   -- select next layout
+   awful.key({modkey}, "space",
+      function()
+         awful.layout.inc(1)
+      end,
+      {description = "select next", group = "layout"}
+   ),
+   -- select previous layout
+   awful.key({modkey, "Shift"}, "space",
+      function()
+         awful.layout.inc(-1)
+      end,
+      {description = "select previous", group = "layout"}
+   ),
+
+   -- =========================================
+   -- CLIENT MINIMIZATION
+   -- =========================================
+
+   -- restore minimized client
+   awful.key({modkey, "Shift"}, "n",
+      function()
+         local c = awful.client.restore()
+         -- Focus restored client
+         if c then
+            client.focus = c
+            c:raise()
+         end
+      end,
+      {description = "restore minimized", group = "client"}
+   )
+)
+
+
+-- ===================================================================
+-- Client Key bindings
+-- ===================================================================
+
+
+keys.clientkeys = gears.table.join(
+   -- Move to edge or swap by direction
+   awful.key({modkey, "Shift"}, "Down",
+      function(c)
+         move_client(c, "down")
+      end
+   ),
+   awful.key({modkey, "Shift"}, "Up",
+      function(c)
+         move_client(c, "up")
+      end
+   ),
+   awful.key({modkey, "Shift"}, "Left",
+      function(c)
+         move_client(c, "left")
+      end
+   ),
+   awful.key({modkey, "Shift"}, "Right",
+      function(c)
+         move_client(c, "right")
+      end
+   ),
+   awful.key({modkey, "Shift"}, "j",
+      function(c)
+         move_client(c, "down")
+      end
+   ),
+   awful.key({modkey, "Shift"}, "k",
+      function(c)
+         move_client(c, "up")
+      end
+   ),
+   awful.key({modkey, "Shift"}, "h",
+      function(c)
+         move_client(c, "left")
+      end
+   ),
+   awful.key({modkey, "Shift"}, "l",
+      function(c)
+         move_client(c, "right")
+      end
+   ),
+
+   -- toggle fullscreen
+   awful.key({modkey}, "f",
+      function(c)
+         c.fullscreen = not c.fullscreen
+      end,
+      {description = "toggle fullscreen", group = "client"}
+   ),
+
+   -- close client
+   awful.key({modkey}, "q",
+      function(c)
+         c:kill()
+      end,
+      {description = "close", group = "client"}
+   ),
+
+   -- Minimize
+   awful.key({modkey}, "n",
+      function(c)
+         c.minimized = true
+      end,
+      {description = "minimize", group = "client"}
+   ),
+
+   -- Maximize
+   awful.key({modkey}, "m",
+      function(c)
+         c.maximized = not c.maximized
+         c:raise()
+      end,
+      {description = "(un)maximize", group = "client"}
+   )
+)
+
+-- Bind all key numbers to tags
+for i = 1, 9 do
+   keys.globalkeys = gears.table.join(keys.globalkeys,
+      -- Switch to tag
+      awful.key({modkey}, "#" .. i + 9,
+         function()
+            local screen = awful.screen.focused()
+            local tag = screen.tags[i]
+            if tag then
+               tag:view_only()
+            end
+         end,
+         {description = "view tag #"..i, group = "tag"}
+      ),
+      -- Move client to tag
+      awful.key({modkey, "Shift"}, "#" .. i + 9,
+         function()
+            if client.focus then
+               local tag = client.focus.screen.tags[i]
+               if tag then
+                  client.focus:move_to_tag(tag)
+               end
+            end
+         end,
+         {description = "move focused client to tag #"..i, group = "tag"}
+      )
+   )
+end
+
+return keys
diff --git a/awesome/pastel.lua b/awesome/pastel.lua
new file mode 100644
index 0000000..3ae7e53
--- /dev/null
+++ b/awesome/pastel.lua
@@ -0,0 +1,54 @@
+--      ██████╗  █████╗ ███████╗████████╗███████╗██╗
+--      ██╔══██╗██╔══██╗██╔════╝╚══██╔══╝██╔════╝██║
+--      ██████╔╝███████║███████╗   ██║   █████╗  ██║
+--      ██╔═══╝ ██╔══██║╚════██║   ██║   ██╔══╝  ██║
+--      ██║     ██║  ██║███████║   ██║   ███████╗███████╗
+--      ╚═╝     ╚═╝  ╚═╝╚══════╝   ╚═╝   ╚══════╝╚══════╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local gears = require("gears")
+
+local pastel = {}
+
+
+-- ===================================================================
+-- Pastel setup
+-- ===================================================================
+
+
+pastel.initialize = function()
+   -- Import components
+   require("components.pastel.wallpaper")
+   require("components.exit-screen")
+   require("components.volume-adjust")
+
+   -- Import panels
+   local top_panel = require("components.pastel.top-panel")
+
+   -- Set up each screen (add tags & panels)
+   awful.screen.connect_for_each_screen(function(s)
+      for i = 1, 9, 1
+      do
+         awful.tag.add(i, {
+            icon = gears.filesystem.get_configuration_dir() .. "/icons/tags/pastel/" .. i .. ".png",
+            icon_only = true,
+            layout = awful.layout.suit.tile,
+            screen = s,
+            selected = i == 1
+         })
+      end
+
+      -- Only add the top panel on the primary screen
+      if s.index == 1 then
+          top_panel.create(s)
+      end
+
+   end)
+end
+
+return pastel
diff --git a/awesome/rc.lua b/awesome/rc.lua
index dba561e..3f00b09 100644
--- a/awesome/rc.lua
+++ b/awesome/rc.lua
@@ -1,567 +1,157 @@
--- If LuaRocks is installed, make sure that packages installed through it are
--- found (e.g. lgi). If LuaRocks is not installed, do nothing.
-pcall(require, "luarocks.loader")
+--       █████╗ ██╗    ██╗███████╗███████╗ ██████╗ ███╗   ███╗███████╗
+--      ██╔══██╗██║    ██║██╔════╝██╔════╝██╔═══██╗████╗ ████║██╔════╝
+--      ███████║██║ █╗ ██║█████╗  ███████╗██║   ██║██╔████╔██║█████╗
+--      ██╔══██║██║███╗██║██╔══╝  ╚════██║██║   ██║██║╚██╔╝██║██╔══╝
+--      ██║  ██║╚███╔███╔╝███████╗███████║╚██████╔╝██║ ╚═╝ ██║███████╗
+--      ╚═╝  ╚═╝ ╚══╝╚══╝ ╚══════╝╚══════╝ ╚═════╝ ╚═╝     ╚═╝╚══════╝
 
--- Standard awesome library
+
+-- Standard awesome libraries
 local gears = require("gears")
 local awful = require("awful")
-require("awful.autofocus")
--- Widget and layout library
-local wibox = require("wibox")
--- Theme handling library
+
+
+-- ===================================================================
+-- User Configuration
+-- ===================================================================
+
+
+local theme_config_dir = gears.filesystem.get_configuration_dir() .. "/configuration/"
+
+-- define default apps (global variable so other components can access it)
+apps = {
+   network_manager = "nm-connection-editor", -- recommended: nm-connection-editor
+   power_manager = "", -- recommended: xfce4-power-manager
+   terminal = "kitty",
+   launcher = "/home/user/.toggle_rofi.sh",
+   lock = "i3lock",
+   screenshot = "scrot -e 'mv $f ~/Pictures/Screenshots/ 2>/dev/null'",
+   filebrowser = "nautilus"
+}
+
+-- define wireless and ethernet interface names for the network widget
+-- use `ip link` command to determine these
+network_interfaces = {
+   lan = 'enp4s0'
+}
+
+-- List of apps to run on start-up
+local run_on_start_up = {
+}
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+-- Import notification appearance
+require("components.notifications")
+
+-- Run all the apps listed in run_on_start_up
+for _, app in ipairs(run_on_start_up) do
+   local findme = app
+   local firstspace = app:find(" ")
+   if firstspace then
+      findme = app:sub(0, firstspace - 1)
+   end
+   -- pipe commands to bash to allow command to be shell agnostic
+   awful.spawn.with_shell(string.format("echo 'pgrep -u $USER -x %s > /dev/null || (%s)' | bash -", findme, app), false)
+end
+
+-- Import theme
 local beautiful = require("beautiful")
--- Notification library
-local naughty = require("naughty")
-local menubar = require("menubar")
-local hotkeys_popup = require("awful.hotkeys_popup")
--- Enable hotkeys help widget for VIM and other apps
--- when client with a matching name is opened:
-require("awful.hotkeys_popup.keys")
+beautiful.init(gears.filesystem.get_configuration_dir() .. "theme.lua")
 
--- {{{ Error handling
--- Check if awesome encountered an error during startup and fell back to
--- another config (This code will only ever execute for the fallback config)
-if awesome.startup_errors then
-    naughty.notify({ preset = naughty.config.presets.critical,
-                     title = "Oops, there were errors during startup!",
-                     text = awesome.startup_errors })
-end
+-- Initialize theme
+local selected_theme = require("pastel")
+selected_theme.initialize()
 
--- Handle runtime errors after startup
-do
-    local in_error = false
-    awesome.connect_signal("debug::error", function (err)
-        -- Make sure we don't go into an endless error loop
-        if in_error then return end
-        in_error = true
+-- Import Keybinds
+local keys = require("keys")
+root.keys(keys.globalkeys)
+root.buttons(keys.desktopbuttons)
 
-        naughty.notify({ preset = naughty.config.presets.critical,
-                         title = "Oops, an error happened!",
-                         text = tostring(err) })
-        in_error = false
-    end)
-end
--- }}}
+-- Import rules
+local create_rules = require("rules").create
+awful.rules.rules = create_rules(keys.clientkeys, keys.clientbuttons)
 
--- {{{ Variable definitions
--- Themes define colours, icons, font and wallpapers.
-beautiful.init(gears.filesystem.get_themes_dir() .. "default/theme.lua")
-
--- This is used later as the default terminal and editor to run.
-terminal = "alacritty"
-editor = os.getenv("EDITOR") or "nvim"
-editor_cmd = terminal .. " -e " .. editor
-
--- Default modkey.
--- Usually, Mod4 is the key with a logo between Control and Alt.
--- If you do not like this or do not have such a key,
--- I suggest you to remap Mod4 to another key using xmodmap or other tools.
--- However, you can use another modifier like Mod1, but it may interact with others.
-modkey = "Mod4"
-
--- Table of layouts to cover with awful.layout.inc, order matters.
+-- Define layouts
 awful.layout.layouts = {
-    awful.layout.suit.floating,
-    awful.layout.suit.tile,
-    awful.layout.suit.tile.left,
-    awful.layout.suit.tile.bottom,
-    awful.layout.suit.tile.top,
-    awful.layout.suit.fair,
-    awful.layout.suit.fair.horizontal,
-    awful.layout.suit.spiral,
-    awful.layout.suit.spiral.dwindle,
-    awful.layout.suit.max,
-    awful.layout.suit.max.fullscreen,
-    awful.layout.suit.magnifier,
-    awful.layout.suit.corner.nw,
-    -- awful.layout.suit.corner.ne,
-    -- awful.layout.suit.corner.sw,
-    -- awful.layout.suit.corner.se,
-}
--- }}}
-
--- {{{ Menu
--- Create a launcher widget and a main menu
-myawesomemenu = {
-   { "hotkeys", function() hotkeys_popup.show_help(nil, awful.screen.focused()) end },
-   { "manual", terminal .. " -e man awesome" },
-   { "edit config", editor_cmd .. " " .. awesome.conffile },
-   { "restart", awesome.restart },
-   { "quit", function() awesome.quit() end },
+   awful.layout.suit.tile,
+   awful.layout.suit.floating,
+   awful.layout.suit.max,
 }
 
-mymainmenu = awful.menu({ items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
-                                    { "open terminal", terminal }
-                                  }
-                        })
-
-mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
-                                     menu = mymainmenu })
-
--- Menubar configuration
-menubar.utils.terminal = terminal -- Set the terminal for applications that require it
--- }}}
-
--- Keyboard map indicator and switcher
-mykeyboardlayout = awful.widget.keyboardlayout()
-
--- {{{ Wibar
--- Create a textclock widget
-mytextclock = wibox.widget.textclock()
-
--- Create a wibox for each screen and add it
-local taglist_buttons = gears.table.join(
-                    awful.button({ }, 1, function(t) t:view_only() end),
-                    awful.button({ modkey }, 1, function(t)
-                                              if client.focus then
-                                                  client.focus:move_to_tag(t)
-                                              end
-                                          end),
-                    awful.button({ }, 3, awful.tag.viewtoggle),
-                    awful.button({ modkey }, 3, function(t)
-                                              if client.focus then
-                                                  client.focus:toggle_tag(t)
-                                              end
-                                          end),
-                    awful.button({ }, 4, function(t) awful.tag.viewnext(t.screen) end),
-                    awful.button({ }, 5, function(t) awful.tag.viewprev(t.screen) end)
-                )
-
-local tasklist_buttons = gears.table.join(
-                     awful.button({ }, 1, function (c)
-                                              if c == client.focus then
-                                                  c.minimized = true
-                                              else
-                                                  c:emit_signal(
-                                                      "request::activate",
-                                                      "tasklist",
-                                                      {raise = true}
-                                                  )
-                                              end
-                                          end),
-                     awful.button({ }, 3, function()
-                                              awful.menu.client_list({ theme = { width = 250 } })
-                                          end),
-                     awful.button({ }, 4, function ()
-                                              awful.client.focus.byidx(1)
-                                          end),
-                     awful.button({ }, 5, function ()
-                                              awful.client.focus.byidx(-1)
-                                          end))
-
-local function set_wallpaper(s)
-    -- Wallpaper
-    if beautiful.wallpaper then
-        local wallpaper = beautiful.wallpaper
-        -- If wallpaper is a function, call it with the screen
-        if type(wallpaper) == "function" then
-            wallpaper = wallpaper(s)
-        end
-        gears.wallpaper.maximized(wallpaper, s, true)
-    end
-end
-
--- Re-set wallpaper when a screen's geometry changes (e.g. different resolution)
-screen.connect_signal("property::geometry", set_wallpaper)
-
-awful.screen.connect_for_each_screen(function(s)
-    -- Wallpaper
-    set_wallpaper(s)
-
-    -- Each screen has its own tag table.
-    awful.tag({ "1", "2", "3", "4", "5", "6", "7", "8", "9" }, s, awful.layout.layouts[1])
-
-    -- Create a promptbox for each screen
-    s.mypromptbox = awful.widget.prompt()
-    -- Create an imagebox widget which will contain an icon indicating which layout we're using.
-    -- We need one layoutbox per screen.
-    s.mylayoutbox = awful.widget.layoutbox(s)
-    s.mylayoutbox:buttons(gears.table.join(
-                           awful.button({ }, 1, function () awful.layout.inc( 1) end),
-                           awful.button({ }, 3, function () awful.layout.inc(-1) end),
-                           awful.button({ }, 4, function () awful.layout.inc( 1) end),
-                           awful.button({ }, 5, function () awful.layout.inc(-1) end)))
-    -- Create a taglist widget
-    s.mytaglist = awful.widget.taglist {
-        screen  = s,
-        filter  = awful.widget.taglist.filter.all,
-        buttons = taglist_buttons
-    }
-
-    -- Create a tasklist widget
-    s.mytasklist = awful.widget.tasklist {
-        screen  = s,
-        filter  = awful.widget.tasklist.filter.currenttags,
-        buttons = tasklist_buttons
-    }
-
-    -- Create the wibox
-    s.mywibox = awful.wibar({ position = "top", screen = s })
-
-    -- Add widgets to the wibox
-    s.mywibox:setup {
-        layout = wibox.layout.align.horizontal,
-        { -- Left widgets
-            layout = wibox.layout.fixed.horizontal,
-            mylauncher,
-            s.mytaglist,
-            s.mypromptbox,
-        },
-        s.mytasklist, -- Middle widget
-        { -- Right widgets
-            layout = wibox.layout.fixed.horizontal,
-            mykeyboardlayout,
-            wibox.widget.systray(),
-            mytextclock,
-            s.mylayoutbox,
-        },
-    }
+-- remove gaps if layout is set to max
+tag.connect_signal('property::layout', function(t)
+   local current_layout = awful.tag.getproperty(t, 'layout')
+   if (current_layout == awful.layout.suit.max) then
+      t.gap = 0
+   else
+      t.gap = beautiful.useless_gap
+   end
 end)
--- }}}
 
--- {{{ Mouse bindings
-root.buttons(gears.table.join(
-    awful.button({ }, 3, function () mymainmenu:toggle() end),
-    awful.button({ }, 4, awful.tag.viewnext),
-    awful.button({ }, 5, awful.tag.viewprev)
-))
--- }}}
-
--- {{{ Key bindings
-globalkeys = gears.table.join(
-    awful.key({ modkey,           }, "s",      hotkeys_popup.show_help,
-              {description="show help", group="awesome"}),
-    awful.key({ modkey,           }, "Left",   awful.tag.viewprev,
-              {description = "view previous", group = "tag"}),
-    awful.key({ modkey,           }, "Right",  awful.tag.viewnext,
-              {description = "view next", group = "tag"}),
-    awful.key({ modkey,           }, "Escape", awful.tag.history.restore,
-              {description = "go back", group = "tag"}),
-
-    awful.key({ modkey,           }, "j",
-        function ()
-            awful.client.focus.byidx( 1)
-        end,
-        {description = "focus next by index", group = "client"}
-    ),
-    awful.key({ modkey,           }, "k",
-        function ()
-            awful.client.focus.byidx(-1)
-        end,
-        {description = "focus previous by index", group = "client"}
-    ),
-    awful.key({ modkey,           }, "w", function () mymainmenu:show() end,
-              {description = "show main menu", group = "awesome"}),
-
-    -- Layout manipulation
-    awful.key({ modkey, "Shift"   }, "j", function () awful.client.swap.byidx(  1)    end,
-              {description = "swap with next client by index", group = "client"}),
-    awful.key({ modkey, "Shift"   }, "k", function () awful.client.swap.byidx( -1)    end,
-              {description = "swap with previous client by index", group = "client"}),
-    awful.key({ modkey, "Control" }, "j", function () awful.screen.focus_relative( 1) end,
-              {description = "focus the next screen", group = "screen"}),
-    awful.key({ modkey, "Control" }, "k", function () awful.screen.focus_relative(-1) end,
-              {description = "focus the previous screen", group = "screen"}),
-    awful.key({ modkey,           }, "u", awful.client.urgent.jumpto,
-              {description = "jump to urgent client", group = "client"}),
-    awful.key({ modkey,           }, "Tab",
-        function ()
-            awful.client.focus.history.previous()
-            if client.focus then
-                client.focus:raise()
-            end
-        end,
-        {description = "go back", group = "client"}),
-
-    -- Standard program
-    awful.key({ modkey,           }, "Return", function () awful.spawn(terminal) end,
-              {description = "open a terminal", group = "launcher"}),
-    awful.key({ modkey, "Control" }, "r", awesome.restart,
-              {description = "reload awesome", group = "awesome"}),
-    awful.key({ modkey, "Shift"   }, "q", awesome.quit,
-              {description = "quit awesome", group = "awesome"}),
-
-    awful.key({ modkey,           }, "l",     function () awful.tag.incmwfact( 0.05)          end,
-              {description = "increase master width factor", group = "layout"}),
-    awful.key({ modkey,           }, "h",     function () awful.tag.incmwfact(-0.05)          end,
-              {description = "decrease master width factor", group = "layout"}),
-    awful.key({ modkey, "Shift"   }, "h",     function () awful.tag.incnmaster( 1, nil, true) end,
-              {description = "increase the number of master clients", group = "layout"}),
-    awful.key({ modkey, "Shift"   }, "l",     function () awful.tag.incnmaster(-1, nil, true) end,
-              {description = "decrease the number of master clients", group = "layout"}),
-    awful.key({ modkey, "Control" }, "h",     function () awful.tag.incncol( 1, nil, true)    end,
-              {description = "increase the number of columns", group = "layout"}),
-    awful.key({ modkey, "Control" }, "l",     function () awful.tag.incncol(-1, nil, true)    end,
-              {description = "decrease the number of columns", group = "layout"}),
-    awful.key({ modkey,           }, "space", function () awful.layout.inc( 1)                end,
-              {description = "select next", group = "layout"}),
-    awful.key({ modkey, "Shift"   }, "space", function () awful.layout.inc(-1)                end,
-              {description = "select previous", group = "layout"}),
-
-    awful.key({ modkey, "Control" }, "n",
-              function ()
-                  local c = awful.client.restore()
-                  -- Focus restored client
-                  if c then
-                    c:emit_signal(
-                        "request::activate", "key.unminimize", {raise = true}
-                    )
-                  end
-              end,
-              {description = "restore minimized", group = "client"}),
-
-    -- Prompt
-    awful.key({ modkey },            "r",     function () awful.screen.focused().mypromptbox:run() end,
-              {description = "run prompt", group = "launcher"}),
-
-    awful.key({ modkey }, "x",
-              function ()
-                  awful.prompt.run {
-                    prompt       = "Run Lua code: ",
-                    textbox      = awful.screen.focused().mypromptbox.widget,
-                    exe_callback = awful.util.eval,
-                    history_path = awful.util.get_cache_dir() .. "/history_eval"
-                  }
-              end,
-              {description = "lua execute prompt", group = "awesome"}),
-    -- Menubar
-    awful.key({ modkey }, "p", function() menubar.show() end,
-              {description = "show the menubar", group = "launcher"})
-)
-
-clientkeys = gears.table.join(
-    awful.key({ modkey,           }, "f",
-        function (c)
-            c.fullscreen = not c.fullscreen
-            c:raise()
-        end,
-        {description = "toggle fullscreen", group = "client"}),
-    awful.key({ modkey, "Shift"   }, "c",      function (c) c:kill()                         end,
-              {description = "close", group = "client"}),
-    awful.key({ modkey, "Control" }, "space",  awful.client.floating.toggle                     ,
-              {description = "toggle floating", group = "client"}),
-    awful.key({ modkey, "Control" }, "Return", function (c) c:swap(awful.client.getmaster()) end,
-              {description = "move to master", group = "client"}),
-    awful.key({ modkey,           }, "o",      function (c) c:move_to_screen()               end,
-              {description = "move to screen", group = "client"}),
-    awful.key({ modkey,           }, "t",      function (c) c.ontop = not c.ontop            end,
-              {description = "toggle keep on top", group = "client"}),
-    awful.key({ modkey,           }, "n",
-        function (c)
-            -- The client currently has the input focus, so it cannot be
-            -- minimized, since minimized clients can't have the focus.
-            c.minimized = true
-        end ,
-        {description = "minimize", group = "client"}),
-    awful.key({ modkey,           }, "m",
-        function (c)
-            c.maximized = not c.maximized
-            c:raise()
-        end ,
-        {description = "(un)maximize", group = "client"}),
-    awful.key({ modkey, "Control" }, "m",
-        function (c)
-            c.maximized_vertical = not c.maximized_vertical
-            c:raise()
-        end ,
-        {description = "(un)maximize vertically", group = "client"}),
-    awful.key({ modkey, "Shift"   }, "m",
-        function (c)
-            c.maximized_horizontal = not c.maximized_horizontal
-            c:raise()
-        end ,
-        {description = "(un)maximize horizontally", group = "client"})
-)
-
--- Bind all key numbers to tags.
--- Be careful: we use keycodes to make it work on any keyboard layout.
--- This should map on the top row of your keyboard, usually 1 to 9.
-for i = 1, 9 do
-    globalkeys = gears.table.join(globalkeys,
-        -- View tag only.
-        awful.key({ modkey }, "#" .. i + 9,
-                  function ()
-                        local screen = awful.screen.focused()
-                        local tag = screen.tags[i]
-                        if tag then
-                           tag:view_only()
-                        end
-                  end,
-                  {description = "view tag #"..i, group = "tag"}),
-        -- Toggle tag display.
-        awful.key({ modkey, "Control" }, "#" .. i + 9,
-                  function ()
-                      local screen = awful.screen.focused()
-                      local tag = screen.tags[i]
-                      if tag then
-                         awful.tag.viewtoggle(tag)
-                      end
-                  end,
-                  {description = "toggle tag #" .. i, group = "tag"}),
-        -- Move client to tag.
-        awful.key({ modkey, "Shift" }, "#" .. i + 9,
-                  function ()
-                      if client.focus then
-                          local tag = client.focus.screen.tags[i]
-                          if tag then
-                              client.focus:move_to_tag(tag)
-                          end
-                     end
-                  end,
-                  {description = "move focused client to tag #"..i, group = "tag"}),
-        -- Toggle tag on focused client.
-        awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
-                  function ()
-                      if client.focus then
-                          local tag = client.focus.screen.tags[i]
-                          if tag then
-                              client.focus:toggle_tag(tag)
-                          end
-                      end
-                  end,
-                  {description = "toggle focused client on tag #" .. i, group = "tag"})
-    )
-end
-
-clientbuttons = gears.table.join(
-    awful.button({ }, 1, function (c)
-        c:emit_signal("request::activate", "mouse_click", {raise = true})
-    end),
-    awful.button({ modkey }, 1, function (c)
-        c:emit_signal("request::activate", "mouse_click", {raise = true})
-        awful.mouse.client.move(c)
-    end),
-    awful.button({ modkey }, 3, function (c)
-        c:emit_signal("request::activate", "mouse_click", {raise = true})
-        awful.mouse.client.resize(c)
-    end)
-)
-
--- Set keys
-root.keys(globalkeys)
--- }}}
-
--- {{{ Rules
--- Rules to apply to new clients (through the "manage" signal).
-awful.rules.rules = {
-    -- All clients will match this rule.
-    { rule = { },
-      properties = { border_width = beautiful.border_width,
-                     border_color = beautiful.border_normal,
-                     focus = awful.client.focus.filter,
-                     raise = true,
-                     keys = clientkeys,
-                     buttons = clientbuttons,
-                     screen = awful.screen.preferred,
-                     placement = awful.placement.no_overlap+awful.placement.no_offscreen
-     }
-    },
-
-    -- Floating clients.
-    { rule_any = {
-        instance = {
-          "DTA",  -- Firefox addon DownThemAll.
-          "copyq",  -- Includes session name in class.
-          "pinentry",
-        },
-        class = {
-          "Arandr",
-          "Blueman-manager",
-          "Gpick",
-          "Kruler",
-          "MessageWin",  -- kalarm.
-          "Sxiv",
-          "Tor Browser", -- Needs a fixed window size to avoid fingerprinting by screen size.
-          "Wpa_gui",
-          "veromix",
-          "xtightvncviewer"},
-
-        -- Note that the name property shown in xprop might be set slightly after creation of the client
-        -- and the name shown there might not match defined rules here.
-        name = {
-          "Event Tester",  -- xev.
-        },
-        role = {
-          "AlarmWindow",  -- Thunderbird's calendar.
-          "ConfigManager",  -- Thunderbird's about:config.
-          "pop-up",       -- e.g. Google Chrome's (detached) Developer Tools.
-        }
-      }, properties = { floating = true }},
-
-    -- Add titlebars to normal clients and dialogs
-    { rule_any = {type = { "normal", "dialog" }
-      }, properties = { titlebars_enabled = true }
-    },
-
-    -- Set Firefox to always map on the tag named "2" on screen 1.
-    -- { rule = { class = "Firefox" },
-    --   properties = { screen = 1, tag = "2" } },
-}
--- }}}
-
--- {{{ Signals
 -- Signal function to execute when a new client appears.
 client.connect_signal("manage", function (c)
-    -- Set the windows at the slave,
-    -- i.e. put it at the end of others instead of setting it master.
-    -- if not awesome.startup then awful.client.setslave(c) end
+   -- Set the window as a slave (put it at the end of others instead of setting it as master)
+   if not awesome.startup then
+      awful.client.setslave(c)
+   end
 
-    if awesome.startup
-      and not c.size_hints.user_position
-      and not c.size_hints.program_position then
-        -- Prevent clients from being unreachable after screen count changes.
-        awful.placement.no_offscreen(c)
-    end
+   if awesome.startup and not c.size_hints.user_position and not c.size_hints.program_position then
+      -- Prevent clients from being unreachable after screen count changes.
+      awful.placement.no_offscreen(c)
+   end
 end)
 
--- Add a titlebar if titlebars_enabled is set to true in the rules.
-client.connect_signal("request::titlebars", function(c)
-    -- buttons for the titlebar
-    local buttons = gears.table.join(
-        awful.button({ }, 1, function()
-            c:emit_signal("request::activate", "titlebar", {raise = true})
-            awful.mouse.client.move(c)
-        end),
-        awful.button({ }, 3, function()
-            c:emit_signal("request::activate", "titlebar", {raise = true})
-            awful.mouse.client.resize(c)
-        end)
-    )
 
-    awful.titlebar(c) : setup {
-        { -- Left
-            awful.titlebar.widget.iconwidget(c),
-            buttons = buttons,
-            layout  = wibox.layout.fixed.horizontal
-        },
-        { -- Middle
-            { -- Title
-                align  = "center",
-                widget = awful.titlebar.widget.titlewidget(c)
-            },
-            buttons = buttons,
-            layout  = wibox.layout.flex.horizontal
-        },
-        { -- Right
-            awful.titlebar.widget.floatingbutton (c),
-            awful.titlebar.widget.maximizedbutton(c),
-            awful.titlebar.widget.stickybutton   (c),
-            awful.titlebar.widget.ontopbutton    (c),
-            awful.titlebar.widget.closebutton    (c),
-            layout = wibox.layout.fixed.horizontal()
-        },
-        layout = wibox.layout.align.horizontal
-    }
-end)
+-- ===================================================================
+-- Client Focusing
+-- ===================================================================
 
--- Enable sloppy focus, so that focus follows mouse.
+
+-- Autofocus a new client when previously focused one is closed
+require("awful.autofocus")
+
+-- Focus clients under mouse
 client.connect_signal("mouse::enter", function(c)
-    c:emit_signal("request::activate", "mouse_enter", {raise = false})
+   c:emit_signal("request::activate", "mouse_enter", {raise = false})
 end)
 
-client.connect_signal("focus", function(c) c.border_color = beautiful.border_focus end)
-client.connect_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
--- }}}
 
--- Custom config
-awful.spawn.with_shell("~/.config/awesome/autorun.sh")
+-- ===================================================================
+-- Screen Change Functions (ie multi monitor)
+-- ===================================================================
+
+
+-- Reload config when screen geometry changes
+screen.connect_signal("property::geometry", awesome.restart)
+
+
+-- ===================================================================
+-- Garbage collection (allows for lower memory consumption)
+-- ===================================================================
+
+
+collectgarbage("setpause", 110)
+collectgarbage("setstepmul", 1000)
+
+require("awesomewm-vim-tmux-navigator") {
+    up = {"Up", "k"},
+    down = {"Down", "j"},
+    left = {"Left", "h"},
+    right = {"Right", "l"},
+    mod = "Mod4",
+    mod_keysym = "Super_L",
+    -- experimental = true
+}
+
+
+-- window borders
+client.connect_signal("focus", function(c) c.border_color = "#626363" end)
+
+client.connect_signal("border_animation_timer:timeout", function(c) c.border_color = "#626363" end)
+
+-- Make border transparent black on unfocus
+client.connect_signal("unfocus", function(c) c.border_color = "#00000000" end)
diff --git a/awesome/rules.lua b/awesome/rules.lua
new file mode 100644
index 0000000..c230c9e
--- /dev/null
+++ b/awesome/rules.lua
@@ -0,0 +1,146 @@
+--      ██████╗ ██╗   ██╗██╗     ███████╗███████╗
+--      ██╔══██╗██║   ██║██║     ██╔════╝██╔════╝
+--      ██████╔╝██║   ██║██║     █████╗  ███████╗
+--      ██╔══██╗██║   ██║██║     ██╔══╝  ╚════██║
+--      ██║  ██║╚██████╔╝███████╗███████╗███████║
+--      ╚═╝  ╚═╝ ╚═════╝ ╚══════╝╚══════╝╚══════╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local beautiful = require("beautiful")
+
+-- define screen height and width
+local screen_height = awful.screen.focused().geometry.height
+local screen_width = awful.screen.focused().geometry.width
+
+-- define module table
+local rules = {}
+
+
+-- ===================================================================
+-- Rules
+-- ===================================================================
+
+
+-- return a table of client rules including provided keys / buttons
+function rules.create(clientkeys, clientbuttons)
+   local rofi_rule = {}
+
+   if beautiful.name == "mirage" then
+      rofi_rule = {
+         rule_any = {name = {"rofi"}},
+         properties = {floating = true, titlebars_enabled = false},
+         callback = function(c)
+            if beautiful.name == "mirage" then
+               awful.placement.left(c)
+            end
+         end
+      }
+   else rofi_rule = {
+         rule_any = {name = {"rofi"}},
+         properties = {maximized = true, floating = true, titlebars_enabled = false},
+      }
+   end
+
+   return {
+      -- All clients will match this rule.
+      {
+         rule = {},
+         properties = {
+            titlebars_enabled = beautiful.titlebars_enabled,
+            border_width = beautiful.border_width,
+            border_color = beautiful.border_normal,
+            focus = awful.client.focus.filter,
+            raise = true,
+            keys = clientkeys,
+            buttons = clientbuttons,
+            screen = awful.screen.preferred,
+            placement = awful.placement.centered
+         },
+      },
+      -- Floating clients.
+      {
+         rule_any = {
+            instance = {
+               "DTA",
+               "copyq",
+            },
+            class = {
+               "Nm-connection-editor"
+            },
+            name = {
+               "Event Tester",
+               "Steam Guard - Computer Authorization Required"
+            },
+            role = {
+               "pop-up",
+               "GtkFileChooserDialog"
+            },
+            type = {
+               "dialog"
+            }
+         }, properties = {floating = true}
+      },
+
+      -- Fullscreen clients
+      {
+         rule_any = {
+            class = {
+               "Terraria.bin.x86",
+            },
+         }, properties = {fullscreen = true}
+      },
+
+      -- "Switch to tag"
+      -- These clients make you switch to their tag when they appear
+      {
+         rule_any = {
+            class = {
+               "Firefox"
+            },
+         }, properties = {switchtotag = true}
+      },
+
+      -- Visualizer
+      {
+         rule_any = {name = {"cava"}},
+         properties = {
+            floating = true,
+            maximized_horizontal = true,
+            sticky = true,
+            ontop = false,
+            skip_taskbar = true,
+            below = true,
+            focusable = false,
+            height = screen_height * 0.40,
+            opacity = 0.6
+         },
+         callback = function (c)
+            decorations.hide(c)
+            awful.placement.bottom(c)
+         end
+      },
+
+      -- rofi rule determined above
+      rofi_rule,
+
+      -- File chooser dialog
+      {
+         rule_any = {role = {"GtkFileChooserDialog"}},
+         properties = {floating = true, width = screen_width * 0.55, height = screen_height * 0.65}
+      },
+
+      -- Pavucontrol & Bluetooth Devices
+      {
+         rule_any = {class = {"Pavucontrol"}, name = {"Bluetooth Devices"}},
+         properties = {floating = true, width = screen_width * 0.55, height = screen_height * 0.45}
+      },
+   }
+end
+
+-- return module table
+return rules
diff --git a/awesome/theme.lua b/awesome/theme.lua
new file mode 100644
index 0000000..a1c7cdd
--- /dev/null
+++ b/awesome/theme.lua
@@ -0,0 +1,99 @@
+--      ████████╗██╗  ██╗███████╗███╗   ███╗███████╗
+--      ╚══██╔══╝██║  ██║██╔════╝████╗ ████║██╔════╝
+--         ██║   ███████║█████╗  ██╔████╔██║█████╗
+--         ██║   ██╔══██║██╔══╝  ██║╚██╔╝██║██╔══╝
+--         ██║   ██║  ██║███████╗██║ ╚═╝ ██║███████╗
+--         ╚═╝   ╚═╝  ╚═╝╚══════╝╚═╝     ╚═╝╚══════╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local xresources = require("beautiful.xresources")
+local dpi = xresources.apply_dpi
+
+-- define module table
+local theme = {}
+
+
+-- ===================================================================
+-- Theme Variables
+-- ===================================================================
+
+
+theme.name = "pastel"
+
+-- Font
+theme.font = "Ubuntu 12"
+theme.title_font = "Ubuntu 12"
+
+-- Background
+theme.bg_normal = "#1f2430"
+theme.bg_dark = "#000000"
+theme.bg_focus = "#151821"
+theme.bg_urgent = "#ed8274"
+theme.bg_minimize = "#444444"
+
+-- Foreground
+theme.fg_normal = "#ffffff"
+theme.fg_focus = "#e4e4e4"
+theme.fg_urgent = "#ffffff"
+theme.fg_minimize = "#ffffff"
+
+-- Window Gap Distance
+theme.useless_gap = dpi(5)
+
+-- Show Gaps if Only One Client is Visible
+theme.gap_single_client = false
+
+-- Window Borders
+theme.border_width = dpi(1)
+theme.border_normal = theme.bg_normal
+theme.border_focus = "#ff0000"
+theme.border_marked = theme.fg_urgent
+
+-- Taglist
+theme.taglist_bg_empty = theme.bg_normal
+theme.taglist_bg_occupied = "#ffffff1a"
+theme.taglist_bg_urgent = "#e91e6399"
+theme.taglist_bg_focus = theme.bg_focus
+
+-- Tasklist
+theme.tasklist_font = theme.font
+
+theme.tasklist_bg_normal = theme.bg_normal
+theme.tasklist_bg_focus = theme.bg_focus
+theme.tasklist_bg_urgent = theme.bg_urgent
+
+theme.tasklist_fg_focus = theme.fg_focus
+theme.tasklist_fg_urgent = theme.fg_urgent
+theme.tasklist_fg_normal = theme.fg_normal
+
+-- Panel Sizing
+theme.top_panel_height = dpi(27)
+
+-- Notification Sizing
+theme.notification_max_width = dpi(350)
+
+-- System Tray
+theme.bg_systray = theme.bg_normal
+theme.systray_icon_spacing = dpi(5)
+
+-- Titlebars
+theme.titlebars_enabled = false
+
+-- ===================================================================
+-- Icons
+-- ===================================================================
+
+
+-- Define layout icons
+theme.layout_tile = "~/.config/awesome/icons/layouts/tiled.png"
+theme.layout_floating = "~/.config/awesome/icons/layouts/floating.png"
+theme.layout_max = "~/.config/awesome/icons/layouts/maximized.png"
+
+theme.icon_theme = "Tela-dark"
+
+-- return theme
+return theme
diff --git a/awesome/wallpaper/blurredWallpaper.png b/awesome/wallpaper/blurredWallpaper.png
new file mode 100644
index 0000000..2f663ee
Binary files /dev/null and b/awesome/wallpaper/blurredWallpaper.png differ
diff --git a/awesome/wallpaper/wallpaper.png b/awesome/wallpaper/wallpaper.png
new file mode 100644
index 0000000..5d4ca4b
Binary files /dev/null and b/awesome/wallpaper/wallpaper.png differ
diff --git a/awesome/widgets/battery.lua b/awesome/widgets/battery.lua
new file mode 100644
index 0000000..8cd753a
--- /dev/null
+++ b/awesome/widgets/battery.lua
@@ -0,0 +1,144 @@
+--      ██████╗  █████╗ ████████╗████████╗███████╗██████╗ ██╗   ██╗
+--      ██╔══██╗██╔══██╗╚══██╔══╝╚══██╔══╝██╔════╝██╔══██╗╚██╗ ██╔╝
+--      ██████╔╝███████║   ██║      ██║   █████╗  ██████╔╝ ╚████╔╝
+--      ██╔══██╗██╔══██║   ██║      ██║   ██╔══╝  ██╔══██╗  ╚██╔╝
+--      ██████╔╝██║  ██║   ██║      ██║   ███████╗██║  ██║   ██║
+--      ╚═════╝ ╚═╝  ╚═╝   ╚═╝      ╚═╝   ╚══════╝╚═╝  ╚═╝   ╚═╝
+
+-------------------------------------------------
+-- Battery Widget for Awesome Window Manager
+-- Shows the battery status using the ACPI tool
+-- More details could be found here:
+-- https://github.com/streetturtle/awesome-wm-widgets/tree/master/battery-widget
+
+-- @author Pavel Makhov
+-- @copyright 2017 Pavel Makhov
+-------------------------------------------------
+
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local watch = require("awful.widget.watch")
+local wibox = require("wibox")
+local clickable_container = require("widgets.clickable-container")
+local gears = require("gears")
+local dpi = require("beautiful").xresources.apply_dpi
+
+local PATH_TO_ICONS = os.getenv("HOME") .. "/.config/awesome/icons/battery/"
+
+
+-- ===================================================================
+-- Widget Creation
+-- ===================================================================
+
+
+local widget = wibox.widget {
+   {
+      id = "icon",
+      widget = wibox.widget.imagebox,
+      resize = true
+   },
+   layout = wibox.layout.fixed.horizontal
+}
+
+local widget_button = clickable_container(wibox.container.margin(widget, dpi(7), dpi(7), dpi(7), dpi(7)))
+widget_button:buttons(
+   gears.table.join(
+      awful.button({}, 1, nil,
+         function()
+            awful.spawn(apps.power_manager)
+         end
+      )
+   )
+)
+-- Alternative to naughty.notify - tooltip. You can compare both and choose the preferred one
+local battery_popup = awful.tooltip({
+   objects = {widget_button},
+   mode = "outside",
+   align = "left",
+   referred_positions = {"right", "left", "top", "bottom"}
+})
+
+local function show_battery_warning()
+   naughty.notify {
+      icon = PATH_TO_ICONS .. "battery-alert.svg",
+      icon_size = dpi(48),
+      text = "Huston, we have a problem",
+      title = "Battery is dying",
+      timeout = 5,
+      hover_timeout = 0.5,
+      position = "top_right",
+      bg = "#d32f2f",
+      fg = "#EEE9EF",
+      width = 248
+   }
+end
+
+local last_battery_check = os.time()
+
+watch("acpi -i", 1,
+   function(_, stdout)
+      local battery_info = {}
+      local capacities = {}
+      for s in stdout:gmatch("[^\r\n]+") do
+         local status, charge_str, time = string.match(s, ".+: (%a+), (%d?%d?%d)%%,?.*")
+         if status ~= nil then
+            table.insert(battery_info, {status = status, charge = tonumber(charge_str)})
+         else
+            local cap_str = string.match(s, ".+:.+last full capacity (%d+)")
+            table.insert(capacities, tonumber(cap_str))
+         end
+      end
+
+      local capacity = 0
+      for _, cap in ipairs(capacities) do
+         capacity = capacity + cap
+      end
+
+      local charge = 0
+      local status
+      for i, batt in ipairs(battery_info) do
+         if batt.charge >= charge then
+            status = batt.status -- use most charged battery status
+            -- this is arbitrary, and maybe another metric should be used
+         end
+
+         charge = charge + batt.charge * capacities[i]
+      end
+      charge = charge / capacity
+
+      if (charge >= 0 and charge < 15) then
+         if status ~= "Charging" and os.difftime(os.time(), last_battery_check) > 300 then
+            -- if 5 minutes have elapsed since the last warning
+            last_battery_check = time()
+
+            show_battery_warning()
+         end
+      end
+
+      local battery_icon_name = "battery"
+
+      if status == "Charging" or status == "Full" then
+         battery_icon_name = battery_icon_name .. "-charging"
+      end
+
+      local rounded_charge = math.floor(charge / 10) * 10
+      if (rounded_charge == 0) then
+         battery_icon_name = battery_icon_name .. "-outline"
+      elseif (rounded_charge ~= 100) then
+         battery_icon_name = battery_icon_name .. "-" .. rounded_charge
+      end
+
+      widget.icon:set_image(PATH_TO_ICONS .. battery_icon_name .. ".svg")
+      -- Update popup text
+      battery_popup.text = string.gsub(stdout, "\n$", "")
+      collectgarbage("collect")
+   end,
+   widget
+)
+
+return widget_button
diff --git a/awesome/widgets/bluetooth.lua b/awesome/widgets/bluetooth.lua
new file mode 100644
index 0000000..ed26692
--- /dev/null
+++ b/awesome/widgets/bluetooth.lua
@@ -0,0 +1,82 @@
+--      ██████╗ ██╗     ██╗   ██╗███████╗████████╗ ██████╗  ██████╗ ████████╗██╗  ██╗
+--      ██╔══██╗██║     ██║   ██║██╔════╝╚══██╔══╝██╔═══██╗██╔═══██╗╚══██╔══╝██║  ██║
+--      ██████╔╝██║     ██║   ██║█████╗     ██║   ██║   ██║██║   ██║   ██║   ███████║
+--      ██╔══██╗██║     ██║   ██║██╔══╝     ██║   ██║   ██║██║   ██║   ██║   ██╔══██║
+--      ██████╔╝███████╗╚██████╔╝███████╗   ██║   ╚██████╔╝╚██████╔╝   ██║   ██║  ██║
+--      ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝   ╚═╝    ╚═════╝  ╚═════╝    ╚═╝   ╚═╝  ╚═╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local watch = require("awful.widget.watch")
+local wibox = require("wibox")
+local clickable_container = require("widgets.clickable-container")
+local gears = require("gears")
+local dpi = require("beautiful").xresources.apply_dpi
+
+local PATH_TO_ICONS = os.getenv("HOME") .. "/.config/awesome/icons/bluetooth/"
+local checker
+
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local widget = wibox.widget {
+   {
+      id = "icon",
+      widget = wibox.widget.imagebox,
+      resize = true
+   },
+   layout = wibox.layout.align.horizontal
+}
+
+local widget_button = clickable_container(wibox.container.margin(widget, dpi(7), dpi(7), dpi(7), dpi(7)))
+widget_button:buttons(
+   gears.table.join(
+      awful.button({}, 1, nil,
+         function()
+            awful.spawn("blueman-manager")
+         end
+      )
+   )
+)
+
+awful.tooltip(
+   {
+      objects = {widget_button},
+      mode = "outside",
+      align = "right",
+      timer_function = function()
+         if checker ~= nil then
+            return "Bluetooth is on"
+         else
+            return "Bluetooth is off"
+         end
+      end,
+      preferred_positions = {"right", "left", "top", "bottom"}
+   }
+)
+
+local last_bluetooth_check = os.time()
+watch("bluetoothctl --monitor list", 5,
+   function(_, stdout)
+      -- Check if there  bluetooth
+      checker = stdout:match("Controller") -- If 'Controller' string is detected on stdout
+      local widget_icon_nme
+      if (checker ~= nil) then
+         widget_icon_name = "bluetooth"
+      else
+         widget_icon_name = "bluetooth-off"
+      end
+      widget.icon:set_image(PATH_TO_ICONS .. widget_icon_name .. ".svg")
+      collectgarbage("collect")
+   end,
+   widget
+)
+
+return widget_button
diff --git a/awesome/widgets/calendar.lua b/awesome/widgets/calendar.lua
new file mode 100644
index 0000000..52d51c4
--- /dev/null
+++ b/awesome/widgets/calendar.lua
@@ -0,0 +1,71 @@
+--       ██████╗ █████╗ ██╗     ███████╗███╗   ██╗██████╗  █████╗ ██████╗
+--      ██╔════╝██╔══██╗██║     ██╔════╝████╗  ██║██╔══██╗██╔══██╗██╔══██╗
+--      ██║     ███████║██║     █████╗  ██╔██╗ ██║██║  ██║███████║██████╔╝
+--      ██║     ██╔══██║██║     ██╔══╝  ██║╚██╗██║██║  ██║██╔══██║██╔══██╗
+--      ╚██████╗██║  ██║███████╗███████╗██║ ╚████║██████╔╝██║  ██║██║  ██║
+--       ╚═════╝╚═╝  ╚═╝╚══════╝╚══════╝╚═╝  ╚═══╝╚═════╝ ╚═╝  ╚═╝╚═╝  ╚═╝
+
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local gears = require("gears")
+local wibox = require("wibox")
+local beautiful = require("beautiful")
+local dpi = beautiful.xresources.apply_dpi
+
+local calendar = {}
+
+
+-- ===================================================================
+-- Create Widget
+-- ===================================================================
+
+
+calendar.create = function(screen)
+   -- Clock / Calendar 12h format
+   -- Get Time/Date format using `man strftime`
+   local clock_widget = wibox.widget.textclock("<span font='" .. beautiful.title_font .."'>%l:%M %p</span>", 1)
+
+   -- Alternative to naughty.notify - tooltip. You can compare both and choose the preferred one
+   awful.tooltip({
+      objects = {clock_widget},
+      mode = "outside",
+      align = "right",
+      timer_function = function()
+         return os.date("The date today is %B %d, %Y.")
+      end,
+      preferred_positions = {"right", "left", "top", "bottom"},
+      margin_leftright = dpi(8),
+      margin_topbottom = dpi(8)
+   })
+
+   local cal_shape = function(cr, width, height)
+      gears.shape.partially_rounded_rect(cr, width, height, false, false, true, true, 12)
+   end
+
+   -- Calendar Widget
+   local month_calendar = awful.widget.calendar_popup.month({
+      screen = screen,
+      start_sunday = true,
+      spacing = 10,
+      font = beautiful.title_font,
+      long_weekdays = true,
+      margin = 0, -- 10
+      style_month = {border_width = 0, padding = 12, shape = cal_shape, padding = 25},
+      style_header = {border_width = 0, bg_color = "#00000000"},
+      style_weekday = {border_width = 0, bg_color = "#00000000"},
+      style_normal = {border_width = 0, bg_color = "#00000000"},
+      style_focus = {border_width = 0, bg_color = "#8AB4F8"},
+   })
+
+   -- Attach calentar to clock_widget
+   month_calendar:attach(clock_widget, "tc" , { on_pressed = true, on_hover = false })
+
+   return clock_widget
+end
+
+return calendar
diff --git a/awesome/widgets/clickable-container.lua b/awesome/widgets/clickable-container.lua
new file mode 100644
index 0000000..936a693
--- /dev/null
+++ b/awesome/widgets/clickable-container.lua
@@ -0,0 +1,76 @@
+--       ██████╗██╗     ██╗ ██████╗██╗  ██╗ █████╗ ██████╗ ██╗     ███████╗
+--      ██╔════╝██║     ██║██╔════╝██║ ██╔╝██╔══██╗██╔══██╗██║     ██╔════╝
+--      ██║     ██║     ██║██║     █████╔╝ ███████║██████╔╝██║     █████╗
+--      ██║     ██║     ██║██║     ██╔═██╗ ██╔══██║██╔══██╗██║     ██╔══╝
+--      ╚██████╗███████╗██║╚██████╗██║  ██╗██║  ██║██████╔╝███████╗███████╗
+--      ╚═════╝╚══════╝╚═╝ ╚═════╝╚═╝  ╚═╝╚═╝  ╚═╝╚═════╝ ╚══════╝╚══════╝
+
+--       ██████╗ ██████╗ ███╗   ██╗████████╗ █████╗ ██╗███╗   ██╗███████╗██████╗
+--      ██╔════╝██╔═══██╗████╗  ██║╚══██╔══╝██╔══██╗██║████╗  ██║██╔════╝██╔══██╗
+--      ██║     ██║   ██║██╔██╗ ██║   ██║   ███████║██║██╔██╗ ██║█████╗  ██████╔╝
+--      ██║     ██║   ██║██║╚██╗██║   ██║   ██╔══██║██║██║╚██╗██║██╔══╝  ██╔══██╗
+--      ╚██████╗╚██████╔╝██║ ╚████║   ██║   ██║  ██║██║██║ ╚████║███████╗██║  ██║
+--       ╚═════╝ ╚═════╝ ╚═╝  ╚═══╝   ╚═╝   ╚═╝  ╚═╝╚═╝╚═╝  ╚═══╝╚══════╝╚═╝  ╚═╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local wibox = require('wibox')
+
+
+-- ===================================================================
+-- Widget Creation
+-- ===================================================================
+
+
+function build(widget)
+  local container =
+    wibox.widget {
+    widget,
+    widget = wibox.container.background
+  }
+  local old_cursor, old_wibox
+
+  container:connect_signal(
+    'mouse::enter',
+    function()
+      container.bg = '#ffffff11'
+      local w = _G.mouse.current_wibox
+      if w then
+        old_cursor, old_wibox = w.cursor, w
+        w.cursor = 'hand1'
+      end
+    end
+  )
+
+  container:connect_signal(
+    'mouse::leave',
+    function()
+      container.bg = '#ffffff00'
+      if old_wibox then
+        old_wibox.cursor = old_cursor
+        old_wibox = nil
+      end
+    end
+  )
+
+  container:connect_signal(
+    'button::press',
+    function()
+      container.bg = '#ffffff22'
+    end
+  )
+
+  container:connect_signal(
+    'button::release',
+    function()
+      container.bg = '#ffffff11'
+    end
+  )
+
+  return container
+end
+
+return build
diff --git a/awesome/widgets/folder.lua b/awesome/widgets/folder.lua
new file mode 100644
index 0000000..50b0e61
--- /dev/null
+++ b/awesome/widgets/folder.lua
@@ -0,0 +1,96 @@
+--      ███████╗ ██████╗ ██╗     ██████╗ ███████╗██████╗
+--      ██╔════╝██╔═══██╗██║     ██╔══██╗██╔════╝██╔══██╗
+--      █████╗  ██║   ██║██║     ██║  ██║█████╗  ██████╔╝
+--      ██╔══╝  ██║   ██║██║     ██║  ██║██╔══╝  ██╔══██╗
+--      ██║     ╚██████╔╝███████╗██████╔╝███████╗██║  ██║
+--      ╚═╝      ╚═════╝ ╚══════╝╚═════╝ ╚══════╝╚═╝  ╚═╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require("awful")
+local wibox = require("wibox")
+local clickable_container = require("widgets.clickable-container")
+local gears = require("gears")
+local dpi = require("beautiful").xresources.apply_dpi
+
+local HOME_DIR = os.getenv("HOME")
+local PATH_TO_ICONS = HOME_DIR .. "/.config/awesome/icons/folders/"
+
+-- define module table
+local folder = {}
+
+
+-- ===================================================================
+-- Helper Functions
+-- ===================================================================
+
+
+-- split a string into a list based on a deliminator
+local function split_string(inputstr, delim)
+   if delim == nil then
+      delim = "%s"
+   end
+   local t={}
+   for str in string.gmatch(inputstr, "([^"..delim.."]+)") do
+      table.insert(t, str)
+   end
+   return t
+end
+
+
+-- ===================================================================
+-- Functionality
+-- ===================================================================
+
+
+function folder.create(directory)
+   local docu_widget = wibox.widget {
+      {
+         id = "icon",
+         widget = wibox.widget.imagebox,
+         resize = true
+      },
+      layout = wibox.layout.align.horizontal
+   }
+
+   local docu_button = clickable_container(wibox.container.margin(docu_widget, dpi(8), dpi(8), dpi(8), dpi(8)))
+   docu_button:buttons(
+      gears.table.join(
+         awful.button({}, 1, nil,
+            function()
+               awful.spawn.easy_async_with_shell(apps.filebrowser .. " " .. directory, function(stderr) end, 1)
+            end
+         )
+      )
+   )
+
+   -- determine hover name & icon to use
+   -- icon name must correspond with name of folder
+   local folder_name = ""
+   if directory == HOME_DIR then
+      folder_name = "Home"
+   elseif directory == "trash://" then
+      folder_name = "Trash"
+   else
+      local dir_list = split_string(directory, "/")
+      folder_name = dir_list[#dir_list]
+   end
+
+   awful.tooltip({
+      objects = {docu_button},
+      mode = "outside",
+      align = "right",
+      timer_function = function()
+         return folder_name
+      end,
+      preferred_positions = {"right", "left", "top", "bottom"}
+   })
+
+   docu_widget.icon:set_image(PATH_TO_ICONS .. folder_name:lower() .. ".png")
+   return docu_button
+end
+
+return folder
diff --git a/awesome/widgets/horizontal-separator.lua b/awesome/widgets/horizontal-separator.lua
new file mode 100644
index 0000000..d38a180
--- /dev/null
+++ b/awesome/widgets/horizontal-separator.lua
@@ -0,0 +1,36 @@
+--      ██╗  ██╗ ██████╗ ██████╗ ██╗███████╗ ██████╗ ███╗   ██╗████████╗ █████╗ ██╗
+--      ██║  ██║██╔═══██╗██╔══██╗██║╚══███╔╝██╔═══██╗████╗  ██║╚══██╔══╝██╔══██╗██║
+--      ███████║██║   ██║██████╔╝██║  ███╔╝ ██║   ██║██╔██╗ ██║   ██║   ███████║██║
+--      ██╔══██║██║   ██║██╔══██╗██║ ███╔╝  ██║   ██║██║╚██╗██║   ██║   ██╔══██║██║
+--      ██║  ██║╚██████╔╝██║  ██║██║███████╗╚██████╔╝██║ ╚████║   ██║   ██║  ██║███████╗
+--      ╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═╝╚═╝╚══════╝ ╚═════╝ ╚═╝  ╚═══╝   ╚═╝   ╚═╝  ╚═╝╚══════╝
+
+--      ███████╗███████╗██████╗  █████╗ ██████╗  █████╗ ████████╗ ██████╗ ██████╗
+--      ██╔════╝██╔════╝██╔══██╗██╔══██╗██╔══██╗██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗
+--      ███████╗█████╗  ██████╔╝███████║██████╔╝███████║   ██║   ██║   ██║██████╔╝
+--      ╚════██║██╔══╝  ██╔═══╝ ██╔══██║██╔══██╗██╔══██║   ██║   ██║   ██║██╔══██╗
+--      ███████║███████╗██║     ██║  ██║██║  ██║██║  ██║   ██║   ╚██████╔╝██║  ██║
+--      ╚══════╝╚══════╝╚═╝     ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝    ╚═════╝ ╚═╝  ╚═╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local wibox = require("wibox")
+local dpi = require("beautiful").xresources.apply_dpi
+
+
+-- ===================================================================
+-- Widget Creation
+-- ===================================================================
+
+
+local horizontal_separator =  wibox.widget {
+   orientation = "horizontal",
+   forced_height = dpi(16),
+   opacity = 0.20,
+   widget = wibox.widget.separator
+}
+
+return horizontal_separator
diff --git a/awesome/widgets/layout-box.lua b/awesome/widgets/layout-box.lua
new file mode 100644
index 0000000..a682320
--- /dev/null
+++ b/awesome/widgets/layout-box.lua
@@ -0,0 +1,51 @@
+--      ██╗      █████╗ ██╗   ██╗ ██████╗ ██╗   ██╗████████╗    ██████╗  ██████╗ ██╗  ██╗
+--      ██║     ██╔══██╗╚██╗ ██╔╝██╔═══██╗██║   ██║╚══██╔══╝    ██╔══██╗██╔═══██╗╚██╗██╔╝
+--      ██║     ███████║ ╚████╔╝ ██║   ██║██║   ██║   ██║       ██████╔╝██║   ██║ ╚███╔╝
+--      ██║     ██╔══██║  ╚██╔╝  ██║   ██║██║   ██║   ██║       ██╔══██╗██║   ██║ ██╔██╗
+--      ███████╗██║  ██║   ██║   ╚██████╔╝╚██████╔╝   ██║       ██████╔╝╚██████╔╝██╔╝ ██╗
+--      ╚══════╝╚═╝  ╚═╝   ╚═╝    ╚═════╝  ╚═════╝    ╚═╝       ╚═════╝  ╚═════╝ ╚═╝  ╚═╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local clickable_container = require('widgets.clickable-container')
+local awful = require('awful')
+
+
+-- ===================================================================
+-- Widget Creation
+-- ===================================================================
+
+
+-- Create an imagebox widget which will contains an icon indicating which layout we're using.
+-- We need one layoutbox per screen.
+local layout_box = clickable_container(awful.widget.layoutbox(s))
+
+layout_box:buttons(
+   awful.util.table.join(
+      awful.button({}, 1,
+         function()
+            awful.layout.inc(1)
+         end
+      ),
+      awful.button({}, 3,
+         function()
+            awful.layout.inc(-1)
+         end
+      ),
+      awful.button({}, 4,
+         function()
+            awful.layout.inc(1)
+         end
+      ),
+      awful.button({}, 5,
+         function()
+            awful.layout.inc(-1)
+         end
+      )
+   )
+)
+
+return layout_box
diff --git a/awesome/widgets/network.lua b/awesome/widgets/network.lua
new file mode 100755
index 0000000..400ff49
--- /dev/null
+++ b/awesome/widgets/network.lua
@@ -0,0 +1,347 @@
+----------------------------------------------------------------------------
+--- Simple Network Widget
+--
+-- Depends: iproute2, iw
+--
+--
+-- @author manilarome &lt;gerome.matilla07@gmail.com&gt;
+-- @copyright 2020 manilarome
+-- @widget network
+----------------------------------------------------------------------------
+
+local awful = require('awful')
+local wibox = require('wibox')
+local gears = require('gears')
+local naughty = require('naughty') 
+local dpi = require('beautiful').xresources.apply_dpi
+local clickable_container = require('widgets.clickable-container')
+
+local config_dir = gears.filesystem.get_configuration_dir()
+local widget_icon_dir = config_dir .. 'icons/network/'
+
+local network_mode = nil
+
+local return_button = function()
+
+	local update_notify_no_access = true
+	local notify_no_access_quota = 0
+
+	local startup = true
+	local reconnect_startup = true
+	local notify_new_wifi_conn = false
+
+	local widget = wibox.widget {
+		{
+			id = 'icon',
+			image = widget_icon_dir .. 'loading.svg',
+			widget = wibox.widget.imagebox,
+			resize = true
+		},
+		layout = wibox.layout.align.horizontal
+	}
+
+	local widget_button = wibox.widget {
+		{
+			widget,
+			margins = dpi(7),
+			widget = wibox.container.margin
+		},
+		widget = clickable_container
+	}
+	
+	widget_button:buttons(
+		gears.table.join(
+			awful.button({}, 1, nil,
+				function()
+					awful.spawn(apps.network_manager, false)
+				end
+			)
+		)
+	)
+
+	local network_tooltip = awful.tooltip {
+		text = 'Loading...',
+		objects = {widget_button},
+		mode = 'outside',
+		align = 'right',
+		preferred_positions = {'left', 'right', 'top', 'bottom'},
+		margin_leftright = dpi(8),
+		margin_topbottom = dpi(8)
+	}
+
+	local check_internet_health = [=[
+	status_ping=0
+
+	packets="$(ping -q -w2 -c2 example.com | grep -o "100% packet loss")"
+	if [ ! -z "${packets}" ];
+	then
+		status_ping=0
+	else
+		status_ping=1
+	fi
+
+	if [ $status_ping -eq 0 ];
+	then
+		echo 'Connected but no internet'
+	fi
+	]=]
+
+	-- Awesome/System startup
+	local update_startup = function()
+		if startup then
+			startup = false
+		end
+	end
+
+	-- Consider reconnecting a startup
+	local update_reconnect_startup = function(status)
+		reconnect_startup = status
+	end
+
+	-- Update tooltip
+	local update_tooltip = function(message)
+		network_tooltip:set_markup(message)
+	end
+
+	local network_notify = function(message, title, app_name, icon)
+		naughty.notify({
+			message = message,
+			title = title,
+			app_name = app_name,
+			icon = icon
+		})
+	end
+
+	-- Wireless mode / Update
+	local update_wireless = function()
+
+		network_mode = 'wireless'
+
+		-- Create wireless connection notification
+		local notify_connected = function(essid)
+			local message = 'You are now connected to <b>\"' .. essid .. '\"</b>'
+			local title = 'Connection Established'
+			local app_name = 'System Notification'
+			local icon = widget_icon_dir .. 'connected_notification.svg'
+			network_notify(message, title, app_name, icon)
+		end
+
+		-- Get wifi essid and bitrate
+		local update_wireless_data = function(strength, healthy)
+			awful.spawn.easy_async_with_shell(
+				[[
+				iw dev ]] .. network_interfaces.wlan .. [[ link
+				]],
+				function(stdout)
+					local essid = stdout:match('SSID: (.-)\n') or 'N/A'
+					local bitrate = stdout:match('tx bitrate: (.+/s)') or 'N/A'
+					local message = 'Connected to: <b>' .. (essid or 'Loading...*') ..
+						'</b>\nWireless Interface: <b>' .. network_interfaces.wlan ..
+						'</b>\nWiFi-Strength: <b>' .. tostring(wifi_strength) .. '%' ..
+						'</b>\nBit rate: <b>' .. tostring(bitrate) .. '</b>'
+					
+					if healthy then
+						update_tooltip(message)
+					else
+						update_tooltip('<b>Connected but no internet!</b>\n' .. message)
+					end
+
+					if reconnect_startup or startup then
+						notify_connected(essid)
+						update_reconnect_startup(false)
+					end
+				end
+			)
+		end
+
+		-- Update wifi icon based on wifi strength and health
+		local update_wireless_icon = function(strength)
+			awful.spawn.easy_async_with_shell(
+				check_internet_health,
+				function(stdout)
+					local widget_icon_name = 'wifi-strength'
+					if not stdout:match('Connected but no internet') then
+						if startup or reconnect_startup then
+							awesome.emit_signal('system::network_connected')
+						end
+						widget_icon_name = widget_icon_name .. '-' .. tostring(strength)
+						update_wireless_data(wifi_strength_rounded, true)
+					else
+						widget_icon_name = widget_icon_name .. '-' .. tostring(strength) .. '-alert'
+						update_wireless_data(wifi_strength_rounded, false)
+					end
+					widget.icon:set_image(widget_icon_dir .. widget_icon_name .. '.svg')
+				end
+			)
+		end
+		
+		-- Get wifi strength
+		local update_wireless_strength = function()
+			awful.spawn.easy_async_with_shell(
+				[[
+				awk 'NR==3 {printf "%3.0f" ,($3/70)*100}' /proc/net/wireless
+				]],
+				function(stdout)
+					if not tonumber(stdout) then
+						return
+					end
+					wifi_strength = tonumber(stdout)
+					local wifi_strength_rounded = math.floor(wifi_strength / 25 + 0.5)
+					update_wireless_icon(wifi_strength_rounded)
+				end
+			)
+		end
+
+		update_wireless_strength()
+		update_startup()
+	end
+
+	local update_wired = function()
+
+		network_mode = 'wired'
+
+		local notify_connected = function()
+			local message = 'Connected to internet with <b>\"' .. network_interfaces.lan .. '\"</b>'
+			local title = 'Connection Established'
+			local app_name = 'System Notification'
+			local icon = widget_icon_dir .. 'wired.svg'
+			network_notify(message, title, app_name, icon)
+		end
+
+		awful.spawn.easy_async_with_shell(
+			check_internet_health,
+			function(stdout)
+
+				local widget_icon_name = 'wired'
+				
+				if stdout:match('Connected but no internet') then
+					widget_icon_name = widget_icon_name .. '-alert'
+					update_tooltip(
+						'<b>Connected but no internet!</b>' ..
+						'\nEthernet Interface: <b>' .. network_interfaces.lan .. '</b>'
+					)
+				else
+					update_tooltip('Ethernet Interface: <b>' .. network_interfaces.lan .. '</b>')
+					if startup or reconnect_startup then
+						awesome.emit_signal('system::network_connected')
+						notify_connected()
+						update_startup(false)
+					end
+					update_reconnect_startup(false)
+				end
+				widget.icon:set_image(widget_icon_dir .. widget_icon_name .. '.svg')
+			end
+		)
+	end
+
+	local update_disconnected = function()
+
+		local notify_wireless_disconnected = function(essid)
+			local message = 'Wi-Fi network has been disconnected'
+			local title = 'Connection Disconnected'
+			local app_name = 'System Notification'
+			local icon = widget_icon_dir .. 'wifi-strength-off.svg'
+			network_notify(message, title, app_name, icon)
+		end
+
+		local notify_wired_disconnected = function(essid)
+			local message = 'Ethernet network has been disconnected'
+			local title = 'Connection Disconnected'
+			local app_name = 'System Notification'
+			local icon = widget_icon_dir .. 'wired-off.svg'
+			network_notify(message, title, app_name, icon)
+		end
+
+		local widget_icon_name = 'wifi-strength-off'
+
+		if network_mode == 'wireless' then
+			widget_icon_name = 'wifi-strength-off'
+			if not reconnect_startup then
+				update_reconnect_startup(true)
+				notify_wireless_disconnected()
+			end
+		elseif network_mode == 'wired' then
+			widget_icon_name = 'wired-off'
+			if not reconnect_startup then
+				update_reconnect_startup(true)
+				notify_wired_disconnected()
+			end
+		end
+		update_tooltip('Network is currently disconnected')
+		widget.icon:set_image(widget_icon_dir .. widget_icon_name .. '.svg')
+	end
+
+	local check_network_mode = function()
+		awful.spawn.easy_async_with_shell(
+			[=[
+			wireless="]=] .. tostring(network_interfaces.wlan) .. [=["
+			wired="]=] .. tostring(network_interfaces.lan) .. [=["
+			net="/sys/class/net/"
+
+			wired_state="down"
+			wireless_state="down"
+			network_mode=""
+
+			# Check network state based on interface's operstate value
+			function check_network_state() {
+				# Check what interface is up
+				if [[ "${wireless_state}" == "up" ]];
+				then
+					network_mode='wireless'
+				elif [[ "${wired_state}" == "up" ]];
+				then
+					network_mode='wired'
+				else
+					network_mode='No internet connection'
+				fi
+			}
+
+			# Check if network directory exist
+			function check_network_directory() {
+				if [[ -n "${wireless}" && -d "${net}${wireless}" ]];
+				then
+					wireless_state="$(cat "${net}${wireless}/operstate")"
+				fi
+				if [[ -n "${wired}" && -d "${net}${wired}" ]]; then
+					wired_state="$(cat "${net}${wired}/operstate")"
+				fi
+				check_network_state
+			}
+
+			# Start script
+			function print_network_mode() {
+				# Call to check network dir
+				check_network_directory
+				# Print network mode
+				printf "${network_mode}"
+			}
+
+			print_network_mode
+
+			]=],
+			function(stdout)
+				local mode = stdout:gsub('%\n', '')
+				if stdout:match('No internet connection') then
+					update_disconnected()
+				elseif stdout:match('wireless') then
+					update_wireless()
+				elseif stdout:match('wired') then
+					update_wired()
+				end
+			end
+		)
+	end
+
+	local network_updater = gears.timer {
+		timeout = 5,
+		autostart = true,
+		call_now = true,
+		callback = function()
+			check_network_mode()
+		end	
+	}
+
+	return widget_button
+end
+
+return return_button
diff --git a/awesome/widgets/tag-list.lua b/awesome/widgets/tag-list.lua
new file mode 100644
index 0000000..11559d6
--- /dev/null
+++ b/awesome/widgets/tag-list.lua
@@ -0,0 +1,168 @@
+--      ████████╗ █████╗  ██████╗     ██╗     ██╗███████╗████████╗
+--      ╚══██╔══╝██╔══██╗██╔════╝     ██║     ██║██╔════╝╚══██╔══╝
+--         ██║   ███████║██║  ███╗    ██║     ██║███████╗   ██║
+--         ██║   ██╔══██║██║   ██║    ██║     ██║╚════██║   ██║
+--         ██║   ██║  ██║╚██████╔╝    ███████╗██║███████║   ██║
+--         ╚═╝   ╚═╝  ╚═╝ ╚═════╝     ╚══════╝╚═╝╚══════╝   ╚═╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require('awful')
+local wibox = require('wibox')
+local dpi = require('beautiful').xresources.apply_dpi
+local capi = {button = button}
+local clickable_container = require('widgets.clickable-container')
+local modkey = require('keys').modkey
+
+-- define module table
+local tag_list = {}
+
+
+-- ===================================================================
+-- Widget Creation Functions
+-- ===================================================================
+
+
+-- Create buttons
+local function create_buttons(buttons, object)
+   if buttons then
+      local btns = {}
+      for _, b in ipairs(buttons) do
+         -- Create a proxy button object: it will receive the real
+         -- press and release events, and will propagate them to the
+         -- button object the user provided, but with the object as
+         -- argument.
+         local btn = capi.button {modifiers = b.modifiers, button = b.button}
+         btn:connect_signal('press',
+            function()
+               b:emit_signal('press', object)
+            end
+         )
+         btn:connect_signal('release',
+            function()
+               b:emit_signal('release', object)
+            end
+         )
+         btns[#btns + 1] = btn
+      end
+
+      return btns
+   end
+end
+
+-- Update the taglist
+local function list_update(w, buttons, label, data, objects)
+   -- update the widgets, creating them if needed
+   w:reset()
+   for i, o in ipairs(objects) do
+      local cache = data[o]
+      local ib, tb, bgb, tbm, ibm, l, bg_clickable
+      if cache then
+         ib = cache.ib
+         tb = cache.tb
+         bgb = cache.bgb
+         tbm = cache.tbm
+         ibm = cache.ibm
+      else
+         local icondpi = 10
+         ib = wibox.widget.imagebox()
+         tb = wibox.widget.textbox()
+         bgb = wibox.container.background()
+         tbm = wibox.container.margin(tb, dpi(4), dpi(16))
+         ibm = wibox.container.margin(ib, dpi(icondpi), dpi(icondpi), dpi(icondpi), dpi(icondpi))
+         l = wibox.layout.fixed.horizontal()
+         bg_clickable = clickable_container()
+
+         -- All of this is added in a fixed widget
+         l:fill_space(true)
+         l:add(ibm)
+         bg_clickable:set_widget(l)
+
+         -- And all of this gets a background
+         bgb:set_widget(bg_clickable)
+
+         bgb:buttons(create_buttons(buttons, o))
+
+         data[o] = {
+            ib = ib,
+            tb = tb,
+            bgb = bgb,
+            tbm = tbm,
+            ibm = ibm
+         }
+      end
+
+      local text, bg, bg_image, icon, args = label(o, tb)
+      args = args or {}
+
+      bgb:set_bg(bg)
+      if type(bg_image) == 'function' then
+         -- TODO: Why does this pass nil as an argument?
+         bg_image = bg_image(tb, o, nil, objects, i)
+      end
+
+      bgb:set_bgimage(bg_image)
+      if icon then
+         ib.image = icon
+      else
+         ibm:set_margins(0)
+      end
+
+      bgb.shape = args.shape
+      bgb.shape_border_width = args.shape_border_width
+      bgb.shape_border_color = args.shape_border_color
+
+      w:add(bgb)
+   end
+end
+
+-- create the tag list widget
+tag_list.create = function(s)
+   return awful.widget.taglist(
+      s,
+      awful.widget.taglist.filter.all,
+      awful.util.table.join(
+         awful.button({}, 1,
+            function(t)
+               t:view_only()
+            end
+         ),
+         awful.button({modkey}, 1,
+            function(t)
+               if client.focus then
+                  client.focus:move_to_tag(t)
+                  t:view_only()
+               end
+            end
+         ),
+         awful.button({}, 3,
+            awful.tag.viewtoggle
+         ),
+         awful.button({modkey}, 3,
+            function(t)
+               if client.focus then
+                  client.focus:toggle_tag(t)
+               end
+            end
+         ),
+         awful.button({}, 4,
+            function(t)
+               awful.tag.viewprev(t.screen)
+            end
+         ),
+         awful.button({}, 5,
+            function(t)
+               awful.tag.viewnext(t.screen)
+            end
+         )
+      ),
+      {},
+      list_update,
+      wibox.layout.fixed.vertical()
+   )
+end
+
+return tag_list
diff --git a/awesome/widgets/task-list.lua b/awesome/widgets/task-list.lua
new file mode 100644
index 0000000..2046b49
--- /dev/null
+++ b/awesome/widgets/task-list.lua
@@ -0,0 +1,214 @@
+--      ████████╗ █████╗ ███████╗██╗  ██╗    ██╗     ██╗███████╗████████╗
+--      ╚══██╔══╝██╔══██╗██╔════╝██║ ██╔╝    ██║     ██║██╔════╝╚══██╔══╝
+--         ██║   ███████║███████╗█████╔╝     ██║     ██║███████╗   ██║
+--         ██║   ██╔══██║╚════██║██╔═██╗     ██║     ██║╚════██║   ██║
+--         ██║   ██║  ██║███████║██║  ██╗    ███████╗██║███████║   ██║
+--         ╚═╝   ╚═╝  ╚═╝╚══════╝╚═╝  ╚═╝    ╚══════╝╚═╝╚══════╝   ╚═╝
+
+-- ===================================================================
+-- Initialization
+-- ===================================================================
+
+
+local awful = require('awful')
+local wibox = require('wibox')
+local gears = require('gears')
+local clickable_container = require('widgets.clickable-container')
+
+local dpi = require('beautiful').xresources.apply_dpi
+local capi = {button = button}
+local ICON_DIR = gears.filesystem.get_configuration_dir() .. "/icons/"
+
+-- define module table
+local task_list = {}
+
+
+-- ===================================================================
+-- Functionality
+-- ===================================================================
+
+
+local function create_buttons(buttons, object)
+   if buttons then
+      local btns = {}
+      for _, b in ipairs(buttons) do
+         -- Create a proxy button object: it will receive the real
+         -- press and release events, and will propagate them to the
+         -- button object the user provided, but with the object as
+         -- argument.
+         local btn = capi.button {modifiers = b.modifiers, button = b.button}
+         btn:connect_signal('press',
+            function()
+               b:emit_signal('press', object)
+            end
+         )
+         btn:connect_signal('release',
+            function()
+               b:emit_signal('release', object)
+            end
+         )
+         btns[#btns + 1] = btn
+      end
+
+      return btns
+   end
+end
+
+
+local function list_update(w, buttons, label, data, objects)
+   -- update the widgets, creating them if needed
+   w:reset()
+   for i, o in ipairs(objects) do
+      local cache = data[o]
+      local ib, cb, tb, cbm, bgb, tbm, ibm, tt, l, ll, bg_clickable
+      if cache then
+         ib = cache.ib
+         tb = cache.tb
+         bgb = cache.bgb
+         tbm = cache.tbm
+         ibm = cache.ibm
+         tt  = cache.tt
+      else
+         ib = wibox.widget.imagebox()
+         tb = wibox.widget.textbox()
+         cb = clickable_container(wibox.container.margin(wibox.widget.imagebox(ICON_DIR .. "close.svg"), dpi(6), dpi(6), dpi(6), dpi(6)))
+         cb.shape = gears.shape.circle
+         cbm = wibox.container.margin(cb, dpi(4), dpi(8), dpi(2), dpi(2)) -- 4, 8 ,12 ,12 -- close button
+         cbm:buttons(gears.table.join(awful.button({}, 1, nil,
+            function()
+               o.kill(o)
+            end
+         )))
+         bg_clickable = clickable_container()
+         bgb = wibox.container.background()
+         tbm = wibox.container.margin(tb, dpi(4), dpi(4))
+         ibm = wibox.container.margin(ib, dpi(6), dpi(6), dpi(6), dpi(6)) -- 12 is default top and bottom margin --app icon
+         l = wibox.layout.fixed.horizontal()
+         ll = wibox.layout.fixed.horizontal()
+
+         -- All of this is added in a fixed widget
+         l:fill_space(true)
+         l:add(ibm)
+         l:add(tbm)
+         ll:add(l)
+         ll:add(cbm)
+
+         bg_clickable:set_widget(ll)
+         -- And all of this gets a background
+         bgb:set_widget(bg_clickable)
+
+         l:buttons(create_buttons(buttons, o))
+
+         -- Tooltip to display whole title, if it was truncated
+         tt = awful.tooltip({
+            objects = {tb},
+            mode = 'outside',
+            align = 'bottom',
+            delay_show = 1,
+         })
+
+         data[o] = {
+            ib = ib,
+            tb = tb,
+            bgb = bgb,
+            tbm = tbm,
+            ibm = ibm,
+            tt  = tt
+         }
+      end
+
+      local text, bg, bg_image, icon, args = label(o, tb)
+      args = args or {}
+
+      -- The text might be invalid, so use pcall.
+      if text == nil or text == '' then
+         tbm:set_margins(0)
+      else
+          -- truncate when title is too long
+         local text_only = text:match('>(.-)<')
+         if (text_only:len() > 24) then
+            text = text:gsub('>(.-)<', '>' .. text_only:sub(1, 21) .. '...<')
+            tt:set_text(text_only)
+            tt:add_to_object(tb)
+         else
+            tt:remove_from_object(tb)
+         end
+         if not tb:set_markup_silently(text) then
+            tb:set_markup('<i>&lt;Invalid text&gt;</i>')
+         end
+      end
+      bgb:set_bg(bg)
+      if type(bg_image) == 'function' then
+         -- TODO: Why does this pass nil as an argument?
+         bg_image = bg_image(tb, o, nil, objects, i)
+      end
+      bgb:set_bgimage(bg_image)
+         if icon then
+            ib.image = icon
+         else
+            ibm:set_margins(0)
+         end
+
+      bgb.shape = args.shape
+      bgb.shape_border_width = args.shape_border_width
+      bgb.shape_border_color = args.shape_border_color
+
+      w:add(bgb)
+   end
+end
+
+
+-- ===================================================================
+-- Widget Creation
+-- ===================================================================
+
+
+local tasklist_buttons = awful.util.table.join(
+   awful.button({}, 1,
+      function(c)
+         if c == client.focus then
+            c.minimized = true
+         else
+           -- Without this, the following
+           -- :isvisible() makes no sense
+           c.minimized = false
+           if not c:isvisible() and c.first_tag then
+              c.first_tag:view_only()
+           end
+           -- This will also un-minimize
+           -- the client, if needed
+           client.focus = c
+           c:raise()
+         end
+      end
+   ),
+   awful.button({}, 2,
+      function(c)
+         c.kill(c)
+      end
+   ),
+   awful.button({}, 4,
+      function()
+         awful.client.focus.byidx(1)
+      end
+   ),
+   awful.button({}, 5,
+      function()
+         awful.client.focus.byidx(-1)
+      end
+   )
+)
+
+
+task_list.create = function(s)
+   return awful.widget.tasklist(
+      s,
+      awful.widget.tasklist.filter.currenttags,
+      tasklist_buttons,
+      {},
+      list_update,
+      wibox.layout.fixed.horizontal()
+   )
+end
+
+return task_list
diff --git a/nvim/lua/settings.lua b/nvim/lua/settings.lua
index 8d94df9..8772827 100644
--- a/nvim/lua/settings.lua
+++ b/nvim/lua/settings.lua
@@ -35,7 +35,6 @@ vim.g.python_highlight_all = 1
 vim.wo.signcolumn = "number"
 vim.g.rooter_patterns = {".git", "Makefile", "CMakeLists.txt", "build/"}
 vim.g.rooter_silent_chdir = 1
-vim.g.tmux_navigator_insert_mode = 1
 
 -- Tab for completion
 vim.g.SuperTabContextDefaultCompletionType = "<c-n>"