about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.bashrc95
-rw-r--r--.config/bat/config1
-rw-r--r--.config/bat/themes/modus_vivendi.tmTheme439
-rw-r--r--.config/dunst/dunstrc39
-rw-r--r--.config/eza/theme.yml147
-rw-r--r--.config/foot/foot.ini6
-rw-r--r--.config/jellyfin-tui/config.yaml6
-rw-r--r--.config/kanata/config.kbd39
-rw-r--r--.config/kxkbrc9
-rw-r--r--.config/lazygit/config.yml182
-rw-r--r--.config/luastatus/alsa.lua23
-rw-r--r--.config/luastatus/battery.lua57
-rw-r--r--.config/luastatus/playerctl.lua43
-rw-r--r--.config/luastatus/separator.lua6
-rw-r--r--.config/luastatus/time-date.lua13
-rw-r--r--.config/luastatus/wireless.lua70
-rw-r--r--.config/ly/config.ini265
-rw-r--r--.config/mc/hotlist2
-rw-r--r--.config/mc/hotlist.bak1
-rw-r--r--.config/mc/ini167
-rw-r--r--.config/mc/panels.ini37
-rw-r--r--.config/mimeapps.list21
-rw-r--r--.config/nvim/.luarc.json15
-rw-r--r--.config/nvim/lua/config/options.lua7
-rw-r--r--.config/nvim/lua/manager.lua2
-rw-r--r--.config/nvim/lua/plugins/cmp.lua51
-rw-r--r--.config/nvim/lua/plugins/flutter.lua11
-rw-r--r--.config/nvim/lua/plugins/fterm.lua14
-rw-r--r--.config/nvim/lua/plugins/init.lua14
-rw-r--r--.config/nvim/lua/plugins/lastplace.lua1
-rw-r--r--.config/nvim/lua/plugins/lualine.lua12
-rw-r--r--.config/nvim/lua/plugins/modus-themes.lua13
-rw-r--r--.config/nvim/lua/plugins/orgmode.lua31
-rw-r--r--.config/nvim/lua/plugins/render-markdown.lua (renamed from .config/nvim/lua/plugins/markdown.lua)2
-rw-r--r--.config/nvim/lua/plugins/statuscol.lua6
-rw-r--r--.config/nvim/lua/plugins/telescope.lua12
-rw-r--r--.config/nvim/lua/plugins/theme.lua29
-rw-r--r--.config/nvim/lua/plugins/todo-comments.lua11
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua53
-rw-r--r--.config/nvim/lua/plugins/which-key.lua17
-rw-r--r--.config/nvim/lua/plugins/zen.lua24
-rw-r--r--.config/rofi/config.rasi10
-rw-r--r--.config/rofi/theme.rasi111
-rw-r--r--.config/shell/alias9
-rw-r--r--.config/shell/functions16
-rw-r--r--.config/shell/vars13
-rw-r--r--.config/sway/config278
-rw-r--r--.config/swaylock/config39
-rw-r--r--.config/systemd/user/.gitignore1
-rw-r--r--.config/systemd/user/cliphist.service13
-rw-r--r--.config/systemd/user/kanata.service22
-rw-r--r--.config/xkb/symbols/us_colemak_pt_mac13
-rw-r--r--.config/yazi/keymap.toml164
-rw-r--r--.config/yazi/modus_vivendi.tmTheme439
-rw-r--r--.config/yazi/theme.toml135
-rw-r--r--.config/yazi/yazi.toml7
-rw-r--r--.emacs.d/.gitignore13
-rw-r--r--.emacs.d/custom.el39
-rw-r--r--.emacs.d/early-init.el9
-rw-r--r--.emacs.d/init.el915
-rw-r--r--.emacs.d/lang/clojure.el26
-rw-r--r--.emacs.d/lang/java.el38
-rw-r--r--.emacs.d/lang/lisp.el9
-rw-r--r--.emacs.d/lang/lua.el11
-rw-r--r--.emacs.d/pkg/consult-jdt.el105
-rw-r--r--.emacs.d/pkg/flymake-cppcheck.el84
-rw-r--r--.kxkbrc10
-rwxr-xr-x.local/bin/battery-screen70
-rwxr-xr-x.local/bin/lock-screen13
-rwxr-xr-x.local/bin/rofi-notes101
-rwxr-xr-x.local/bin/rofi-powermenu49
-rwxr-xr-x.local/bin/rofi-ppd48
-rwxr-xr-x.local/bin/rofi-translate60
-rwxr-xr-x.local/bin/rofi-wifimenu38
-rwxr-xr-x.local/bin/take-slurpshot18
-rw-r--r--.local/share/applications/jellyfin-tui.desktop5
-rw-r--r--.local/share/applications/yazi.desktop6
-rw-r--r--.mg2
-rw-r--r--.tmux.conf107
-rw-r--r--.xkbmap3
-rw-r--r--.zprofile6
-rw-r--r--.zshenv12
-rw-r--r--.zshrc103
-rw-r--r--README.md2
84 files changed, 3192 insertions, 1973 deletions
diff --git a/.bashrc b/.bashrc
new file mode 100644
index 0000000..b1d2c7b
--- /dev/null
+++ b/.bashrc
@@ -0,0 +1,95 @@
+# Source Default /etc/bashrc
+if [ -f /etc/bashrc ]; then
+    . /etc/bashrc
+fi
+
+# Add .local/bin to PATH
+if ! [[ "$PATH" =~ "$HOME/.local/bin:" ]]; then
+    PATH="$HOME/.local/bin:$PATH"
+fi
+export PATH
+
+# Custom Shell variables, aliases, and functions
+[ -f "$HOME/.config/shell/alias" ] && source "$HOME/.config/shell/alias"
+[ -f "$HOME/.config/shell/vars" ] && source "$HOME/.config/shell/vars"
+[ -f "$HOME/.config/shell/functions" ] && source "$HOME/.config/shell/functions"
+
+# Custom Prompt
+USER_COLOR="\[\e[35m\]"          # magenta
+VENV_COLOR="\[\e[33m\]"          # yellow
+DIR_COLOR="\[\e[32m\]"           # green
+GIT_COLOR="\[\e[34m\]"           # blue
+GIT_DIRTY_COLOR="\[\e[31m\]"     # red
+PROMPT_SYMBOL_COLOR="\[\e[33m\]" # yellow
+RESET_COLOR="\[\e[0m\]"          # blank
+WHITE_COLOR="\[\e[37m\]"         # white
+TOOLBOX_COLOR="\[\e[36m\]"       # cyan
+
+shorten_path() {
+  if [[ "$PWD" == "$HOME" ]]; then
+    echo "~"
+    return
+  fi
+
+  if [[ "$PWD" == "$HOME/"* ]]; then
+    local rel="${PWD#$HOME/}"
+    local depth
+    IFS='/' read -ra parts <<< "$rel"
+    depth=${#parts[@]}
+
+    if (( depth == 1 )); then
+      echo "~/${parts[0]}"
+    elif (( depth == 2 )); then
+      echo ".../${parts[0]}/${parts[1]}"
+    else
+      echo ".../${parts[-2]}/${parts[-1]}"
+    fi
+    return
+  fi
+
+  IFS='/' read -ra parts <<< "$PWD"
+  if (( ${#parts[@]} > 3 )); then
+    echo ".../${parts[-2]}/${parts[-1]}"
+  else
+    echo "$PWD"
+  fi
+}
+
+git_branch() {
+  git symbolic-ref --short HEAD 2>/dev/null \
+    || git rev-parse --short HEAD 2>/dev/null
+}
+
+git_dirty() {
+  if [[ -n "$(git status --porcelain 2>/dev/null)" ]]; then
+    echo " ✗"
+  else
+    echo " ✓"
+  fi
+}
+
+set_prompt() {
+  local user="${USER_COLOR}\u${RESET_COLOR}"
+
+  local toolbox=""
+  if [[ -n "$TOOLBOX_PATH" ]]; then
+    toolbox="${TOOLBOX_COLOR}(tlbx)${RESET_COLOR}"
+  fi
+
+  local venv=""
+  if [[ -n "$VIRTUAL_ENV" ]]; then
+    venv="${VENV_COLOR}($(basename "$VIRTUAL_ENV"))${RESET_COLOR} "
+  fi
+
+  local path="${DIR_COLOR}$(shorten_path)${RESET_COLOR}"
+  local git_info=""
+  local branch="$(git_branch)"
+
+  if [[ -n "$branch" ]]; then
+    git_info=" ${WHITE_COLOR}on${RESET_COLOR} ${GIT_COLOR}${branch}${RESET_COLOR}${GIT_DIRTY_COLOR}$(git_dirty)${RESET_COLOR}"
+  fi
+
+  PS1="${user}${toolbox} ${WHITE_COLOR}in${RESET_COLOR} ${venv}${path}${git_info}\n${PROMPT_SYMBOL_COLOR}λ${RESET_COLOR} "
+}
+
+PROMPT_COMMAND="set_prompt${PROMPT_COMMAND:+; $PROMPT_COMMAND}"
diff --git a/.config/bat/config b/.config/bat/config
new file mode 100644
index 0000000..2d65ccf
--- /dev/null
+++ b/.config/bat/config
@@ -0,0 +1 @@
+--theme="modus_vivendi"
diff --git a/.config/bat/themes/modus_vivendi.tmTheme b/.config/bat/themes/modus_vivendi.tmTheme
new file mode 100644
index 0000000..15d2429
--- /dev/null
+++ b/.config/bat/themes/modus_vivendi.tmTheme
@@ -0,0 +1,439 @@
+<!-- Modus Themes for Bat -->
+<!-- Auto generated with https://github.com/miikanissi/modus-themes.nvim/blob/master/lua/modus-themes/extras/bat.lua -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+  <dict>
+    <key>name</key>
+    <string>modus_vivendi</string>
+    <key>settings</key>
+    <array>
+      <dict>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#000000</string>
+          <key>caret</key>
+          <string>#989898</string>
+          <key>foreground</key>
+          <string>#ffffff</string>
+          <key>invisibles</key>
+          <string>#989898</string>
+          <key>lineHighlight</key>
+          <string>#2f3849</string>
+          <key>selection</key>
+          <string>#7030af</string>
+          <key>findHighlight</key>
+          <string>#7a6100</string>
+          <key>selectionBorder</key>
+          <string>#646464</string>
+          <key>gutterForeground</key>
+          <string>#989898</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Comment</string>
+        <key>scope</key>
+        <string>comment</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>italic</string>
+          <key>foreground</key>
+          <string>#989898</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>String</string>
+        <key>scope</key>
+        <string>string</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#79a8ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Number</string>
+        <key>scope</key>
+        <string>constant.numeric</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#82b0ec</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Built-in constant</string>
+        <key>scope</key>
+        <string>constant.language</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#6ae4b9</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>User-defined constant</string>
+        <key>scope</key>
+        <string>constant.character, constant.other</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#ffffff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Variable</string>
+        <key>scope</key>
+        <string>variable</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Ruby's @variable</string>
+        <key>scope</key>
+        <string>variable.other.readwrite.instance</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>String interpolation</string>
+        <key>scope</key>
+        <string>constant.character.escaped, constant.character.escape, string source, string source.ruby</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#d2b580</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Keyword</string>
+        <key>scope</key>
+        <string>keyword</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>italic</string>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Storage</string>
+        <key>scope</key>
+        <string>storage</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Storage type</string>
+        <key>scope</key>
+        <string>storage.type</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Class name</string>
+        <key>scope</key>
+        <string>entity.name.class</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Inherited class</string>
+        <key>scope</key>
+        <string>entity.other.inherited-class</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Function name</string>
+        <key>scope</key>
+        <string>entity.name.function</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#feacd0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Function argument</string>
+        <key>scope</key>
+        <string>variable.parameter</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Tag name</string>
+        <key>scope</key>
+        <string>entity.name.tag</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Tag attribute</string>
+        <key>scope</key>
+        <string>entity.other.attribute-name</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Library function</string>
+        <key>scope</key>
+        <string>support.function</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#feacd0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Library constant</string>
+        <key>scope</key>
+        <string>support.constant</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#6ae4b9</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Library class/type</string>
+        <key>scope</key>
+        <string>support.type, support.class</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#6ae4b9</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Library variable</string>
+        <key>scope</key>
+        <string>support.other.variable</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Invalid</string>
+        <key>scope</key>
+        <string>invalid</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#989898</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Invalid deprecated</string>
+        <key>scope</key>
+        <string>invalid.deprecated</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#989898</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON String</string>
+        <key>scope</key>
+        <string>meta.structure.dictionary.json string.quoted.double.json</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#79a8ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>diff.header</string>
+        <key>scope</key>
+        <string>meta.diff, meta.diff.header</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#feacd0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>diff.deleted</string>
+        <key>scope</key>
+        <string>markup.deleted</string>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#4f1119</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>diff.inserted</string>
+        <key>scope</key>
+        <string>markup.inserted</string>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#00381f</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>diff.changed</string>
+        <key>scope</key>
+        <string>markup.changed</string>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#363300</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>constant.numeric.line-number.find-in-files - match</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#82b0ec</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>entity.name.filename</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#2fafff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>message.error</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>bold</string>
+          <key>foreground</key>
+          <string>#ff7f9f</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON Punctuation</string>
+        <key>scope</key>
+        <string>punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#ffffff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON Structure</string>
+        <key>scope</key>
+        <string>meta.structure.dictionary.json string.quoted.double.json</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#79a8ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON String</string>
+        <key>scope</key>
+        <string>meta.structure.dictionary.value.json string.quoted.double.json</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#79a8ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Escape Characters</string>
+        <key>scope</key>
+        <string>constant.character.escape</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#d2b580</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regular Expressions</string>
+        <key>scope</key>
+        <string>string.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00c06f</string>
+        </dict>
+      </dict>
+    </array>
+    <key>uuid</key>
+    <string>09CE9B40-0137-442C-8512-7CEAFC78C153</string>
+    <key>colorSpaceName</key>
+    <string>sRGB</string>
+    <key>semanticClass</key>
+    <string>Modus Vivendi</string>
+  </dict>
+</plist>
diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc
new file mode 100644
index 0000000..7f94795
--- /dev/null
+++ b/.config/dunst/dunstrc
@@ -0,0 +1,39 @@
+[global]
+    width = (200,600)
+    offset = (24,24)
+
+    progress_bar_min_width = 380
+    progress_bar_max_width = 380
+    progress_bar_corner_radius = 0
+
+    padding = 10
+    horizontal_padding = 10
+    frame_width = 2
+    gap_size = 3
+    origin = "top-right"
+    font = "Google Sans 12"
+
+    enable_recursive_icon_lookup = true
+    corner_radius = 0
+
+    background = "#000000"
+    foreground = "#ffffff"
+
+[urgency_low]
+    background = "#000000"
+    highlight = "#ffffff"
+    frame_color = "#ffffff"
+    format = "<b><span foreground='#31748f'>%s</span></b>\n%b"
+
+[urgency_normal]
+    background = "#000000"
+    highlight = "#ffffff"
+    frame_color = "#ffffff"
+    format = "<b><span foreground='#e0def4'>%s</span></b>\n%b"
+
+[urgency_critical]
+    background = "#000000"
+    highlight = "#ffffff"
+    frame_color = "#ffffff"
+    default_icon = "dialog-error"
+    format = "<b><span foreground='#36263d'>%s</span></b>\n%b"
diff --git a/.config/eza/theme.yml b/.config/eza/theme.yml
new file mode 100644
index 0000000..f74a128
--- /dev/null
+++ b/.config/eza/theme.yml
@@ -0,0 +1,147 @@
+# Modus Themes for eza
+# Auto generated with https://github.com/miikanissi/modus-themes.nvim/blob/master/lua/modus-themes/extras/eza.lua
+colourful: true
+
+# base colors
+define: &bg_main "#000000"
+define: &bg_dim = "#1e1e1e"
+define: &bg_alt = "#0f0f0f"
+define: &fg_main = "#ffffff"
+define: &fg_dim = "#989898"
+define: &fg_alt = "#c6daff"
+define: &border = "#646464"
+define: &border_highlight = "#C4C4C4"
+
+# foreground colors
+define: &red "#ff5f59"
+define: &red_warmer "#ff6b55"
+define: &red_cooler "#ff7f9f"
+define: &red_faint "#ff9580"
+define: &green "#44bc44"
+define: &green_warmer "#70b900"
+define: &green_cooler "#00c06f"
+define: &green_faint "#88ca9f"
+define: &yellow "#d0bc00"
+define: &yellow_warmer "#fec43f"
+define: &yellow_cooler "#dfaf7a"
+define: &yellow_faint "#d2b580"
+define: &blue "#2fafff"
+define: &blue_warmer "#79a8ff"
+define: &blue_cooler "#00bcff"
+define: &blue_faint "#82b0ec"
+define: &magenta "#feacd0"
+define: &magenta_warmer "#f78fe7"
+define: &magenta_cooler "#b6a0ff"
+define: &magenta_faint "#caa6df"
+define: &cyan "#00d3d0"
+define: &cyan_warmer "#4ae2f0"
+define: &cyan_cooler "#6ae4b9"
+define: &cyan_faint "#9ac8e0"
+define: &rust "#db7b5f"
+define: &gold "#c0965b"
+define: &olive "#9cbd6f"
+define: &slate "#76afbf"
+define: &indigo "#9099d9"
+define: &maroon "#cf7fa7"
+define: &pink "#d09dc0"
+
+filekinds:
+  normal: {foreground: *fg_main}
+  directory: {foreground: *blue_warmer}
+  symlink: {foreground: *blue}
+  pipe: {foreground: *fg_dim}
+  block_device: {foreground: *magenta_cooler}
+  char_device: {foreground: *yellow_warmer}
+  socket: {foreground: *magenta}
+  special: {foreground: *pink}
+  executable: {foreground: *green}
+  mount_point: {foreground: *cyan}
+
+perms:
+  user_read: {foreground: *fg_dim}
+  user_write: {foreground: *red}
+  user_execute_file: {foreground: *green}
+  user_execute_other: {foreground: *green}
+  group_read: {foreground: *fg_dim}
+  group_write: {foreground: *red}
+  group_execute: {foreground: *green}
+  other_read: {foreground: *fg_dim}
+  other_write: {foreground: *red}
+  other_execute: {foreground: *green}
+  special_user_file: {foreground: *magenta_cooler}
+  special_other: {foreground: *red}
+  attribute: {foreground: *pink}
+
+size:
+  major: {foreground: *fg_dim}
+  minor: {foreground: *blue_warmer}
+  number_byte: {foreground: *pink}
+  number_kilo: {foreground: *rust}
+  number_mega: {foreground: *blue_warmer}
+  number_giga: {foreground: *magenta_cooler}
+  number_huge: {foreground: *magenta}
+  unit_byte: {foreground: *pink}
+  unit_kilo: {foreground: *rust}
+  unit_mega: {foreground: *blue_warmer}
+  unit_giga: {foreground: *magenta_cooler}
+  unit_huge: {foreground: *magenta}
+
+users:
+  user_you: {foreground: *yellow_warmer}
+  user_root: {foreground: *red}
+  user_other: {foreground: *magenta_cooler}
+  group_yours: {foreground: *pink}
+  group_other: {foreground: *fg_dim}
+  group_root: {foreground: *red}
+
+links:
+  normal: {foreground: *blue}
+  multi_link_file: {foreground: *cyan}
+
+git:
+  new: {foreground: *green}
+  modified: {foreground: *yellow_warmer}
+  deleted: {foreground: *red}
+  renamed: {foreground: *cyan}
+  typechange: {foreground: *magenta_cooler}
+  ignored: {foreground: *pink}
+  conflicted: {foreground: *magenta}
+
+git_repo:
+  branch_main: {foreground: *fg_dim}
+  branch_other: {foreground: *magenta_cooler}
+  git_clean: {foreground: *green}
+  git_dirty: {foreground: *red}
+
+security_context:
+  colon: {foreground: *fg_dim}
+  user: {foreground: *blue_warmer}
+  role: {foreground: *magenta_cooler}
+  typ: {foreground: *pink}
+  range: {foreground: *magenta_cooler}
+
+file_type:
+  image: {foreground: *yellow_warmer}
+  video: {foreground: *magenta}
+  music: {foreground: *blue_warmer}
+  lossless: {foreground: *cyan}
+  crypto: {foreground: *pink}
+  document: {foreground: *fg_dim}
+  compressed: {foreground: *magenta_cooler}
+  temp: {foreground: *yellow_warmer}
+  compiled: {foreground: *cyan}
+  build: {foreground: *pink}
+  source: {foreground: *green}
+
+punctuation: {foreground: *pink}
+date: {foreground: *cyan}
+inode: {foreground: *fg_dim}
+blocks: {foreground: *pink}
+header: {foreground: *fg_dim}
+octal: {foreground: *blue_warmer}
+flags: {foreground: *magenta_cooler}
+
+symlink_path: {foreground: *blue}
+control_char: {foreground: *cyan}
+broken_symlink: {foreground: *red}
+broken_path_overlay: {foreground: *pink}
diff --git a/.config/foot/foot.ini b/.config/foot/foot.ini
new file mode 100644
index 0000000..be335dc
--- /dev/null
+++ b/.config/foot/foot.ini
@@ -0,0 +1,6 @@
+[main]
+include=/usr/share/foot/themes/modus-vivendi
+font=GoogleSansCodeNF:size=12
+
+[cursor]
+style=beam
diff --git a/.config/jellyfin-tui/config.yaml b/.config/jellyfin-tui/config.yaml
new file mode 100644
index 0000000..30322e0
--- /dev/null
+++ b/.config/jellyfin-tui/config.yaml
@@ -0,0 +1,6 @@
+servers:
+- name: NAS
+  quick_connect: true
+  url: https://iv.venomade.com
+
+rounded_corners: false
diff --git a/.config/kanata/config.kbd b/.config/kanata/config.kbd
new file mode 100644
index 0000000..a805cf7
--- /dev/null
+++ b/.config/kanata/config.kbd
@@ -0,0 +1,39 @@
+#|
+This minimal config changes Caps Lock to act as Caps Lock on quick tap, but
+if held, it will act as Left Ctrl. It also changes the backtick/grave key to
+act as backtick/grave on quick tap, but change ijkl keys to arrow keys on hold.
+
+This text between the two pipe+octothorpe sequences is a multi-line comment.
+|#
+
+;; Text after double-semicolons are single-line comments.
+
+#|
+One defcfg entry may be added, which is used for configuration key-pairs. These
+configurations change kanata's behaviour at a more global level than the other
+configuration entries.
+|#
+
+(defcfg
+  #|
+  This configuration will process all keys pressed inside of kanata, even if
+  they are not mapped in defsrc. This is so that certain actions can activate
+  at the right time for certain input sequences. By default, unmapped keys are
+  not processed through kanata due to a Windows issue related to AltGr. If you
+  use AltGr in your keyboard, you will likely want to follow the simple.kbd
+  file while unmapping lctl and ralt from defsrc.
+  |#
+  process-unmapped-keys yes
+)
+
+(defsrc
+  caps
+)
+
+(deflayer default
+  @cap
+)
+
+(defalias
+  cap (tap-hold 200 200 esc lctl)
+)
diff --git a/.config/kxkbrc b/.config/kxkbrc
deleted file mode 100644
index e5674f4..0000000
--- a/.config/kxkbrc
+++ /dev/null
@@ -1,9 +0,0 @@
-[$Version]
-update_info=kxkb.upd:remove-empty-lists,kxkb.upd:add-back-resetoptions,kxkb_variants.upd:split-variants
-
-[Layout]
-LayoutList=us_colemak_pt_mac
-Options=ctrl:nocaps,lv3:switch
-ResetOldOptions=true
-Use=true
-VariantList=basic
diff --git a/.config/lazygit/config.yml b/.config/lazygit/config.yml
new file mode 100644
index 0000000..0151f13
--- /dev/null
+++ b/.config/lazygit/config.yml
@@ -0,0 +1,182 @@
+gui:
+  border: single
+
+keybinding:
+  universal:
+    quit: q
+    quit-alt1: <c-c>
+    suspendApp: <c-z>
+    return: <esc>
+    quitWithoutChangingDirectory: Q
+    togglePanel: <tab>
+    prevItem: <up>
+    nextItem: <down>
+    prevItem-alt: e
+    nextItem-alt: n
+    prevPage: ','
+    nextPage: .
+    scrollLeft: H
+    scrollRight: I
+    gotoTop: <
+    gotoBottom: '>'
+    gotoTop-alt: <home>
+    gotoBottom-alt: <end>
+    toggleRangeSelect: v
+    rangeSelectDown: <s-down>
+    rangeSelectUp: <s-up>
+    prevBlock: <left>
+    nextBlock: <right>
+    prevBlock-alt: h
+    nextBlock-alt: i
+    nextBlock-alt2: <tab>
+    prevBlock-alt2: <backtab>
+    jumpToBlock:
+      - "1"
+      - "2"
+      - "3"
+      - "4"
+      - "5"
+    focusMainView: "0"
+    nextMatch: "k"
+    prevMatch: "K"
+    startSearch: /
+    optionMenu: <disabled>
+    optionMenu-alt1: '?'
+    select: <space>
+    goInto: <enter>
+    confirm: <enter>
+    confirmMenu: <enter>
+    confirmSuggestion: <enter>
+    confirmInEditor: <a-enter>
+    confirmInEditor-alt: <c-s>
+    remove: d
+    new: "n"
+    edit: j
+    openFile: o
+    scrollUpMain: <pgup>
+    scrollDownMain: <pgdown>
+    scrollUpMain-alt1: E
+    scrollDownMain-alt1: N
+    scrollUpMain-alt2: <c-u>
+    scrollDownMain-alt2: <c-d>
+    executeShellCommand: ':'
+    createRebaseOptionsMenu: m
+
+    # 'Files' appended for legacy reasons
+    pushFiles: P
+
+    # 'Files' appended for legacy reasons
+    pullFiles: p
+    refresh: R
+    createPatchOptionsMenu: <c-p>
+    nextTab: ']'
+    prevTab: '['
+    nextScreenMode: +
+    prevScreenMode: _
+    cyclePagers: '|'
+    undo: z
+    redo: Z
+    filteringMenu: <c-s>
+    diffingMenu: W
+    diffingMenu-alt: <c-j>
+    copyToClipboard: <c-o>
+    openRecentRepos: <c-r>
+    submitEditorText: <enter>
+    extrasMenu: '@'
+    toggleWhitespaceInDiffView: <c-w>
+    increaseContextInDiffView: '}'
+    decreaseContextInDiffView: '{'
+    increaseRenameSimilarityThreshold: )
+    decreaseRenameSimilarityThreshold: (
+    openDiffTool: <c-t>
+  status:
+    checkForUpdate: u
+    recentRepos: <enter>
+    allBranchesLogGraph: a
+  files:
+    commitChanges: c
+    commitChangesWithoutHook: w
+    amendLastCommit: A
+    commitChangesWithEditor: C
+    findBaseCommitForFixup: <c-f>
+    confirmDiscard: x
+    ignoreFile: l
+    refreshFiles: r
+    stashAllChanges: s
+    viewStashOptions: S
+    toggleStagedAll: a
+    viewResetOptions: D
+    fetch: f
+    toggleTreeView: '`'
+    openMergeOptions: M
+    openStatusFilter: <c-b>
+    copyFileInfoToClipboard: "y"
+    collapseAll: '-'
+    expandAll: =
+  branches:
+    createPullRequest: o
+    viewPullRequestOptions: O
+    copyPullRequestURL: <c-y>
+    checkoutBranchByName: c
+    forceCheckoutBranch: F
+    checkoutPreviousBranch: '-'
+    rebaseBranch: r
+    renameBranch: R
+    mergeIntoCurrentBranch: M
+    moveCommitsToNewBranch: "K"
+    viewGitFlowOptions: l
+    fastForward: f
+    createTag: T
+    pushTag: P
+    setUpstream: u
+    fetchRemote: f
+    addForkRemote: F
+    sortOrder: s
+  worktrees:
+    viewWorktreeOptions: w
+  commits:
+    squashDown: s
+    renameCommit: r
+    renameCommitWithEditor: R
+    viewResetOptions: g
+    markCommitAsFixup: f
+    setFixupMessage: c
+    createFixupCommit: F
+    squashAboveCommits: S
+    moveDownCommit: <c-n>
+    moveUpCommit: <c-e>
+    amendToCommit: A
+    resetCommitAuthor: a
+    pickCommit: p
+    revertCommit: t
+    cherryPickCopy: C
+    pasteCommits: V
+    markCommitAsBaseForRebase: B
+    tagCommit: T
+    checkoutCommit: <space>
+    resetCherryPick: <c-R>
+    copyCommitAttributeToClipboard: "y"
+    openLogMenu: <c-l>
+    openInBrowser: o
+    viewBisectOptions: b
+    startInteractiveRebase: l
+    selectCommitsOfCurrentBranch: '*'
+  amendAttribute:
+    resetAuthor: a
+    setAuthor: A
+    addCoAuthor: c
+  stash:
+    popStash: g
+    renameStash: r
+  commitFiles:
+    checkoutCommitFile: c
+  main:
+    toggleSelectHunk: a
+    pickBothHunks: b
+    editSelectHunk: J
+  submodules:
+    init: l
+    update: u
+    bulkMenu: b
+  commitMessage:
+    commitMenu: <c-o>
diff --git a/.config/luastatus/alsa.lua b/.config/luastatus/alsa.lua
new file mode 100644
index 0000000..fb97270
--- /dev/null
+++ b/.config/luastatus/alsa.lua
@@ -0,0 +1,23 @@
+widget = {
+  plugin = 'alsa',
+  cb = function(t)
+    local symbol = '󰖀'
+    if t.mute then
+      return { full_text = '  󰝟  ', color = '#ed8796' }
+    else
+      local percent = (t.vol.cur - t.vol.min) / (t.vol.max - t.vol.min) * 100
+      if percent <= 30 then
+        symbol = '󰕿'
+      elseif percent >= 70 then
+        symbol = '󰕾'
+      end
+      return { full_text = string.format('%s%3d%%', symbol, math.floor(0.5 + percent)), color = '#b7bdf8' }
+    end
+  end,
+  event = [[
+        local t = ...
+        if t.button == 1 then
+            os.execute('pactl set-sink-mute @DEFAULT_SINK@ toggle &')
+        end
+    ]],
+}
diff --git a/.config/luastatus/battery.lua b/.config/luastatus/battery.lua
new file mode 100644
index 0000000..459599e
--- /dev/null
+++ b/.config/luastatus/battery.lua
@@ -0,0 +1,57 @@
+local function read(path)
+  local f = io.open(path)
+  if not f then return nil end
+  local v = tonumber(f:read('*l'))
+  f:close()
+  return v
+end
+
+widget = {
+  plugin = 'timer',
+  opts = { period = 2 },
+  cb = function()
+    local base        = '/sys/class/power_supply/macsmc-battery/'
+
+    local energy_now  = read(base .. 'energy_now')
+    local energy_full = read(base .. 'energy_full')
+    local status_f    = io.open(base .. 'status')
+
+    if not energy_now or not energy_full or not status_f then
+      return { { full_text = 'bat ?' } }
+    end
+
+    local status = status_f:read('*l')
+    status_f:close()
+
+    local capacity = math.floor(energy_now / energy_full * 100 + 0.5)
+
+    local text_color = '#ffffff'
+    local battery_symbol = ' '
+
+    if capacity < 30 then
+      text_color = '#ed8796'
+      battery_symbol = '󰁼'
+    elseif capacity > 70 then
+      text_color = '#a6da95'
+      battery_symbol = '󰂁'
+    else
+      text_color = '#eed49f'
+      battery_symbol = '󰁾'
+    end
+
+    local symbol = ({
+      Charging    = '󱐋',
+      Discharging = battery_symbol,
+    })[status] or ' '
+
+    return {
+      { full_text = string.format('%s %2d%%', symbol, capacity), color = text_color }
+    }
+  end,
+  event = [[
+        local t = ...
+        if t.button == 1 then
+            os.execute('~/.local/bin/rofi-ppd &')
+        end
+    ]],
+}
diff --git a/.config/luastatus/playerctl.lua b/.config/luastatus/playerctl.lua
new file mode 100644
index 0000000..a3e743c
--- /dev/null
+++ b/.config/luastatus/playerctl.lua
@@ -0,0 +1,43 @@
+local player = 'jellyfin-tui'
+
+widget = {
+  plugin = 'timer',
+  opts = { period = 2 },
+  cb = function()
+
+    local handle = io.popen('playerctl -p ' .. player .. ' status')
+    local playerctl_status = string.sub(handle:read("*a"), 1, -2)
+    handle:close()
+
+    local symbol = '󰏤'
+
+    if (playerctl_status == 'Playing') or (playerctl_status == 'Paused') then
+      local handle = io.popen('playerctl -p ' .. player ..' metadata title')
+      local playerctl_title = string.sub(handle:read("*a"), 1, -2)
+      handle:close()
+
+      local handle = io.popen('playerctl -p ' .. player .. ' metadata artist')
+      local playerctl_artist = string.sub(handle:read("*a"), 1, -2)
+      handle:close()
+
+      if playerctl_status == 'Playing' then
+        symbol = '󰐊'
+      end
+
+      return {
+        { full_text = string.format('%s - %s %s', playerctl_artist, playerctl_title, symbol), color = "#f2cdcd" }
+      }
+    end
+
+    return {
+      { full_text = " "}
+    }
+  end,
+  -- TODO: Figure out if this can stop being hardcoded
+  event = [[
+        local t = ...
+        if t.button == 1 then
+            os.execute('playerctl -p jellyfin-tui play-pause')
+        end
+    ]],
+}
diff --git a/.config/luastatus/separator.lua b/.config/luastatus/separator.lua
new file mode 100644
index 0000000..1a3ef01
--- /dev/null
+++ b/.config/luastatus/separator.lua
@@ -0,0 +1,6 @@
+widget = {
+  plugin = 'fs',
+  cb = function()
+    return { full_text = "|", color = "#333333" }
+  end,
+}
diff --git a/.config/luastatus/time-date.lua b/.config/luastatus/time-date.lua
new file mode 100644
index 0000000..8d5bfe7
--- /dev/null
+++ b/.config/luastatus/time-date.lua
@@ -0,0 +1,13 @@
+local months = {'Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Sep', 'Out', 'Nov', 'Dez'}
+local days = {'Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', ''}
+
+widget = {
+    plugin = 'timer',
+    cb = function()
+        local d = os.date('*t')
+        return {
+            {full_text = string.format('%s %d %s', days[d.wday] , d.day, months[d.month])},
+            {full_text = string.format('%02d:%02d ', d.hour, d.min)},
+        }
+    end,
+}
diff --git a/.config/luastatus/wireless.lua b/.config/luastatus/wireless.lua
new file mode 100644
index 0000000..e3d53d7
--- /dev/null
+++ b/.config/luastatus/wireless.lua
@@ -0,0 +1,70 @@
+local MIN_DBM, MAX_DBM = -90, -20
+local COLOR_DIM = '#709080'
+
+local function clamp(x, lo, hi)
+  if x < lo then return lo end
+  if x > hi then return hi end
+  return x
+end
+
+local function make_wifi_level(dbm)
+  dbm = clamp(dbm, MIN_DBM, MAX_DBM)
+
+  -- Normalize to [0, 1]
+  local t = (dbm - MIN_DBM) / (MAX_DBM - MIN_DBM)
+
+  local level
+  if t < 0.25 then
+    level = '󰢿'
+  elseif t < 0.50 then
+    level = '󰢼'
+  elseif t < 0.75 then
+    level = '󰢽'
+  else
+    level = '󰢾'
+  end
+
+  return {
+    full_text = level,
+    color = COLOR_DIM,
+  }
+end
+
+widget = {
+  plugin = 'network-linux',
+  opts = {
+    wireless = true,
+    timeout = 10,
+  },
+  cb = function(t)
+    if not t then
+      return nil
+    end
+    local r = {}
+    for iface, params in pairs(t) do
+      if params.wireless then
+        if params.wireless.ssid then
+          r[#r + 1] = {
+            full_text = params.wireless.ssid,
+            color = COLOR_DIM,
+          }
+        end
+        if params.wireless.signal_dbm then
+          r[#r + 1] = make_wifi_level(params.wireless.signal_dbm)
+        end
+      elseif iface ~= 'lo' and (params.ipv4 or params.ipv6) then
+        r[#r + 1] = {
+          full_text = string.format('[%s]', iface),
+          color = COLOR_DIM,
+        }
+      end
+    end
+    return r
+  end,
+  event = [[
+        local t = ...
+        if t.button == 1 then
+            os.execute('~/.local/bin/rofi-wifimenu &')
+        end
+    ]],
+}
diff --git a/.config/ly/config.ini b/.config/ly/config.ini
new file mode 100644
index 0000000..f70ca36
--- /dev/null
+++ b/.config/ly/config.ini
@@ -0,0 +1,265 @@
+# Allow empty password or not when authenticating
+allow_empty_password = false
+
+# The active animation
+animation = none
+
+# Stop the animation after some time
+animation_timeout_sec = 0
+
+# The character used to mask the password
+asterisk = *
+
+# The number of failed authentications before a special animation is played... ;)
+auth_fails = 10
+
+# Identifier for battery whose charge to display at top left
+battery_id = macsmc-battery
+
+# Automatic login configuration
+# PAM service name to use for automatic login
+auto_login_service = ly-autologin
+
+# Session name to launch automatically
+auto_login_session = null
+
+# Username to automatically log in
+auto_login_user = null
+
+# Background color id
+bg = 0x00000000
+
+# Change the state and language of the big clock
+bigclock = en
+
+# Set bigclock to 12-hour notation.
+bigclock_12hr = false
+
+# Set bigclock to show the seconds.
+bigclock_seconds = false
+
+# Blank main box background
+blank_box = true
+
+# Border foreground color id
+border_fg = 0x00FFFFFF
+
+# Title to show at the top of the main box
+box_title = null
+
+# Brightness decrease command
+brightness_down_cmd = /usr/bin/brightnessctl -q -n s 10%-
+
+# Brightness decrease key, or null to disable
+brightness_down_key = F5
+
+# Brightness increase command
+brightness_up_cmd = /usr/bin/brightnessctl -q -n s +10%
+
+# Brightness increase key, or null to disable
+brightness_up_key = F6
+
+# Erase password input on failure
+clear_password = true
+
+# Format string for clock in top right corner (see strftime specification). Example: %c
+clock = null
+
+# CMatrix animation foreground color id
+cmatrix_fg = 0x0000FF00
+
+# CMatrix animation character string head color id
+cmatrix_head_col = 0x01FFFFFF
+
+# CMatrix animation minimum codepoint. It uses a 16-bit integer
+cmatrix_min_codepoint = 0x21
+
+# CMatrix animation maximum codepoint. It uses a 16-bit integer
+cmatrix_max_codepoint = 0x7B
+
+# Color mixing animation first color id
+colormix_col1 = 0x00FF0000
+
+# Color mixing animation second color id
+colormix_col2 = 0x000000FF
+
+# Color mixing animation third color id
+colormix_col3 = 0x20000000
+
+# Custom sessions directory
+custom_sessions = /etc/ly/custom-sessions
+
+# Input box active by default on startup
+default_input = password
+
+# DOOM animation fire height (1 thru 9)
+doom_fire_height = 6
+
+# DOOM animation fire spread (0 thru 4)
+doom_fire_spread = 2
+
+# DOOM animation custom top color (low intensity flames)
+doom_top_color = 0x009F2707
+
+# DOOM animation custom middle color (medium intensity flames)
+doom_middle_color = 0x00C78F17
+
+# DOOM animation custom bottom color (high intensity flames)
+doom_bottom_color = 0x00FFFFFF
+
+# Dur file path
+dur_file_path = /etc/ly/example.dur
+
+# Dur offset x direction
+dur_x_offset = 0
+
+# Dur offset y direction
+dur_y_offset = 0
+
+# Set margin to the edges of the DM (useful for curved monitors)
+edge_margin = 0
+
+# Error background color id
+error_bg = 0x00000000
+
+# Error foreground color id
+error_fg = 0x01FF0000
+
+# Foreground color id
+fg = 0x00FFFFFF
+
+# Render true colors (if supported)
+full_color = true
+
+# Game of Life entropy interval (0 = disabled, >0 = add entropy every N generations)
+gameoflife_entropy_interval = 10
+
+# Game of Life animation foreground color id
+gameoflife_fg = 0x0000FF00
+
+# Game of Life frame delay (lower = faster animation, higher = slower)
+gameoflife_frame_delay = 6
+
+# Game of Life initial cell density (0.0 to 1.0)
+gameoflife_initial_density = 0.4
+
+# Command executed when pressing hibernate key (can be null)
+hibernate_cmd = null
+
+# Specifies the key used for hibernate (F1-F12)
+hibernate_key = F4
+
+# Remove main box borders
+hide_borders = false
+
+# Remove power management command hints
+hide_key_hints = false
+
+# Remove keyboard lock states from the top right corner
+hide_keyboard_locks = false
+
+# Remove version number from the top left corner
+hide_version_string = false
+
+# Command executed when no input is detected for a certain time
+inactivity_cmd = null
+
+# Executes a command after a certain amount of seconds
+inactivity_delay = 0
+
+# Initial text to show on the info line
+initial_info_text = null
+
+# Input boxes length
+input_len = 34
+
+# Active language
+lang = en
+
+# Command executed when logging in
+login_cmd = null
+
+# Path for login.defs file (used for listing all local users on the system on
+# Linux)
+login_defs_path = /etc/login.defs
+
+# Command executed when logging out
+logout_cmd = null
+
+# General log file path
+ly_log = /var/log/ly.log
+
+# Main box horizontal margin
+margin_box_h = 2
+
+# Main box vertical margin
+margin_box_v = 1
+
+# Event timeout in milliseconds
+min_refresh_delta = 5
+
+# Set numlock on/off at startup
+numlock = false
+
+# Default path
+path = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
+
+# Command executed when pressing restart_key
+restart_cmd = /sbin/shutdown -r now
+
+# Specifies the key used for restart (F1-F12)
+restart_key = F2
+
+# Save the current desktop and login as defaults, and load them on startup
+save = true
+
+# Service name (set to ly to use the provided pam config file)
+service_name = ly
+
+# Session log file path
+session_log = .local/state/ly-session.log
+
+# Setup command
+setup_cmd = /etc/ly/setup.sh
+
+# Command executed when pressing shutdown_key
+shutdown_cmd = /sbin/shutdown -a now
+
+# Specifies the key used for shutdown (F1-F12)
+shutdown_key = F1
+
+# Command executed when pressing sleep key (can be null)
+sleep_cmd = null
+
+# Specifies the key used for sleep (F1-F12)
+sleep_key = F3
+
+# Command executed when starting Ly (before the TTY is taken control of)
+start_cmd = null
+
+# Center the session name.
+text_in_center = false
+
+# Default vi mode
+vi_default_mode = normal
+
+# Enable vi keybindings
+vi_mode = false
+
+# Wayland desktop environments
+waylandsessions = /usr/share/wayland-sessions
+
+# Xorg server command
+x_cmd = /usr/bin/X
+
+# Xorg virtual terminal number
+x_vt = null
+
+# Xorg xauthority edition tool
+xauth_cmd = /usr/bin/xauth
+
+# xinitrc
+xinitrc = ~/.xinitrc
+
+# Xorg desktop environments
+xsessions = /usr/share/xsessions
diff --git a/.config/mc/hotlist b/.config/mc/hotlist
deleted file mode 100644
index 47b50be..0000000
--- a/.config/mc/hotlist
+++ /dev/null
@@ -1,2 +0,0 @@
-ENTRY "/home/venomade/.build/suckless" URL "/home/venomade/.build/suckless"
-ENTRY "/home/venomade/Documents" URL "/home/venomade/Documents"
diff --git a/.config/mc/hotlist.bak b/.config/mc/hotlist.bak
deleted file mode 100644
index 4dbffb7..0000000
--- a/.config/mc/hotlist.bak
+++ /dev/null
@@ -1 +0,0 @@
-ENTRY "/home/venomade/.build/suckless" URL "/home/venomade/.build/suckless"
diff --git a/.config/mc/ini b/.config/mc/ini
deleted file mode 100644
index b3a7bb1..0000000
--- a/.config/mc/ini
+++ /dev/null
@@ -1,167 +0,0 @@
-[Midnight-Commander]
-verbose=true
-shell_patterns=true
-auto_save_setup=true
-preallocate_space=false
-auto_menu=false
-use_internal_view=false
-use_internal_edit=false
-clear_before_exec=true
-confirm_delete=true
-confirm_overwrite=true
-confirm_execute=false
-confirm_history_cleanup=true
-confirm_exit=false
-confirm_directory_hotlist_delete=false
-confirm_view_dir=false
-safe_delete=false
-safe_overwrite=false
-use_8th_bit_as_meta=false
-mouse_move_pages_viewer=true
-mouse_close_dialog=false
-fast_refresh=false
-drop_menus=false
-wrap_mode=true
-old_esc_mode=true
-cd_symlinks=true
-show_all_if_ambiguous=false
-alternate_plus_minus=false
-only_leading_plus_minus=true
-show_output_starts_shell=false
-xtree_mode=false
-file_op_compute_totals=true
-classic_progressbar=true
-use_netrc=true
-ftpfs_always_use_proxy=false
-ftpfs_use_passive_connections=true
-ftpfs_use_passive_connections_over_proxy=false
-ftpfs_use_unix_list_options=true
-ftpfs_first_cd_then_ls=true
-ignore_ftp_chattr_errors=true
-editor_fill_tabs_with_spaces=false
-editor_return_does_auto_indent=true
-editor_backspace_through_tabs=false
-editor_fake_half_tabs=true
-editor_option_save_position=true
-editor_option_auto_para_formatting=false
-editor_option_typewriter_wrap=false
-editor_edit_confirm_save=true
-editor_syntax_highlighting=true
-editor_persistent_selections=true
-editor_drop_selection_on_copy=true
-editor_cursor_beyond_eol=false
-editor_cursor_after_inserted_block=false
-editor_visible_tabs=true
-editor_visible_spaces=true
-editor_line_state=false
-editor_simple_statusbar=false
-editor_check_new_line=false
-editor_show_right_margin=false
-editor_group_undo=false
-editor_state_full_filename=false
-editor_ask_filename_before_edit=false
-nice_rotating_dash=true
-shadows=true
-mcview_remember_file_position=false
-auto_fill_mkdir_name=true
-copymove_persistent_attr=true
-pause_after_run=1
-mouse_repeat_rate=100
-double_click_speed=250
-old_esc_mode_timeout=1000000
-max_dirt_limit=10
-num_history_items_recorded=60
-vfs_timeout=60
-ftpfs_directory_timeout=900
-ftpfs_retry_seconds=30
-shell_directory_timeout=900
-editor_tab_spacing=8
-editor_word_wrap_line_length=72
-editor_option_save_mode=0
-editor_backup_extension=~
-editor_filesize_threshold=64M
-editor_stop_format_chars=-+*\\,.;:&>
-mcview_eof=
-skin=seasons-winter16M
-filepos_max_saved_entries=1024
-
-use_file_to_guess_type=true
-fish_directory_timeout=900
-
-[Layout]
-output_lines=0
-left_panel_size=160
-top_panel_size=0
-message_visible=true
-keybar_visible=false
-xterm_title=true
-command_prompt=true
-menubar_visible=false
-free_space=false
-horizontal_split=false
-vertical_equal=true
-horizontal_equal=true
-
-[Misc]
-timeformat_recent=%b %e %H:%M
-timeformat_old=%b %e  %Y
-ftp_proxy_host=gate
-ftpfs_password=anonymous@
-display_codepage=UTF-8
-source_codepage=Other_8_bit
-autodetect_codeset=
-clipboard_store=
-clipboard_paste=
-
-spell_language=en
-
-[Colors]
-base_color=
-xterm-kitty=
-color_terminals=
-
-xterm-256color=
-linux=
-
-[Panels]
-simple_swap=false
-show_mini_info=true
-kilobyte_si=false
-mix_all_files=false
-show_backups=true
-show_dot_files=true
-fast_reload=false
-fast_reload_msg_shown=false
-mark_moves_down=true
-reverse_files_only=true
-auto_save_setup_panels=false
-navigate_with_arrows=false
-panel_scroll_pages=true
-panel_scroll_center=false
-mouse_move_pages=true
-filetype_mode=true
-permission_mode=false
-torben_fj_mode=false
-quick_search_mode=0
-select_flags=6
-
-[FindFile]
-file_case_sens=true
-file_shell_pattern=true
-file_find_recurs=true
-follow_symlinks=false
-file_skip_hidden=false
-file_all_charsets=false
-content_case_sens=true
-content_regexp=false
-content_first_hit=false
-content_whole_words=false
-content_all_charsets=false
-ignore_dirs_enable=true
-ignore_dirs=
-
-[Panelize]
-Find *.orig after patching=find . -name \\*.orig -print
-Find rejects after patching=find . -name \\*.rej -print
-Modified git files=git ls-files --modified
-Find SUID and SGID programs=find . \\( \\( -perm -04000 -a -perm /011 \\) -o \\( -perm -02000 -a -perm /01 \\) \\) -print
diff --git a/.config/mc/panels.ini b/.config/mc/panels.ini
deleted file mode 100644
index d22858b..0000000
--- a/.config/mc/panels.ini
+++ /dev/null
@@ -1,37 +0,0 @@
-[New Left Panel]
-display=listing
-reverse=false
-case_sensitive=true
-exec_first=false
-sort_order=name
-list_mode=full
-brief_cols=2
-user_format=half type name | size | perm
-user_status0=half type name | size | perm
-user_status1=half type name | size | perm
-user_status2=half type name | size | perm
-user_status3=half type name | size | perm
-user_mini_status=false
-filter_flags=7
-list_format=full
-
-[New Right Panel]
-display=listing
-reverse=false
-case_sensitive=true
-exec_first=false
-sort_order=name
-list_mode=full
-brief_cols=2
-user_format=half type name | size | perm
-user_status0=half type name | size | perm
-user_status1=half type name | size | perm
-user_status2=half type name | size | perm
-user_status3=half type name | size | perm
-user_mini_status=false
-filter_flags=7
-list_format=full
-
-[Dirs]
-current_is_left=true
-other_dir=/home/venomade/.build/suckless/patches/st
diff --git a/.config/mimeapps.list b/.config/mimeapps.list
new file mode 100644
index 0000000..f31391c
--- /dev/null
+++ b/.config/mimeapps.list
@@ -0,0 +1,21 @@
+
+[Default Applications]
+inode/directory=yazi.desktop
+image/bmp=imv.desktop
+image/gif=imv.desktop
+image/jpeg=imv.desktop
+image/jpg=imv.desktop
+image/pjpeg=imv.desktop
+image/png=imv.desktop
+image/tiff=imv.desktop
+image/heif=imv.desktop
+image/avif=imv.desktop
+image/x-bmp=imv.desktop
+image/x-pcx=imv.desktop
+image/x-png=imv.desktop
+image/x-portable-anymap=imv.desktop
+image/x-portable-bitmap=imv.desktop
+image/x-portable-graymap=imv.desktop
+image/x-portable-pixmap=imv.desktop
+image/x-tga=imv.desktop
+image/x-xbitmap=imv.desktop
diff --git a/.config/nvim/.luarc.json b/.config/nvim/.luarc.json
index c5a6ffc..bd8a14b 100644
--- a/.config/nvim/.luarc.json
+++ b/.config/nvim/.luarc.json
@@ -1,21 +1,6 @@
 {
     "$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
     "Lua.runtime.version": "LuaJIT",
-    "Lua.runtime.path": [
-        "?.lua",
-        "?/init.lua",
-        "/Users/venomade/.luarocks/share/lua/5.4/?.lua",
-        "/Users/venomade/.luarocks/share/lua/5.4/?/init.lua",
-        "/opt/homebrew/share/lua/5.4/?.lua",
-        "/opt/homebrew/share/lua/5.4/?/init.lua",
-        "./stubs/?.lua",
-        "./stubs/?/init.lua"
-    ],
-    "Lua.workspace.library": [
-        "/Users/venomade/.luarocks/share/lua/5.4",
-        "/opt/homebrew/share/lua/5.4",
-        "./stubs"
-    ],
     "diagnostics.globals": ["vim"],
     "workspace.checkThirdParty": false,
     "workspace.library": [
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
index fd1de92..559f4c7 100644
--- a/.config/nvim/lua/config/options.lua
+++ b/.config/nvim/lua/config/options.lua
@@ -30,7 +30,7 @@ vim.opt.splitright = true
 
 vim.opt.encoding = "utf-8"
 
-vim.opt.shell = "zsh"
+vim.opt.shell = "bash"
 
 vim.opt.mouse = "a"
 
@@ -55,7 +55,7 @@ vim.wo.fillchars='eob: '
 vim.opt.conceallevel = 3
 
 -- Window Borders
-vim.o.winborder = 'rounded'
+vim.o.winborder = 'single'
 
 -- Remove Whitespaces on File Save
 vim.api.nvim_create_autocmd({ "BufWritePre" }, {
@@ -105,6 +105,3 @@ vim.fn.sign_define("LineNrDiagnosticHint",  { text = "", texthl = "LineNrDiagnos
 vim.api.nvim_create_autocmd({ "DiagnosticChanged", "BufEnter", "CursorHold" }, {
   callback = set_line_number_highlight,
 })
-
--- TODO: Put somewhere else (for llm.nvim)
-vim.fn.setenv("LLM_KEY", "NONE")
diff --git a/.config/nvim/lua/manager.lua b/.config/nvim/lua/manager.lua
index da5a221..f450d31 100644
--- a/.config/nvim/lua/manager.lua
+++ b/.config/nvim/lua/manager.lua
@@ -21,6 +21,6 @@ require("lazy").setup({
   spec = {
     { import = "plugins" },
   },
-  install = { colorscheme = { "habamax" } },
+  install = { colorscheme = { "modus" } },
   checker = { enabled = true, notify = false },
 })
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
index 79bf9ac..541e62c 100644
--- a/.config/nvim/lua/plugins/cmp.lua
+++ b/.config/nvim/lua/plugins/cmp.lua
@@ -12,7 +12,10 @@ return {
     local cmp = require('cmp')
     local lspkind = require('lspkind')
     cmp.setup({
-      preselect = 'none',
+      -- preselect = cmp.PreselectMode.None,
+      completion = {
+        completeopt = "menu,menuone,noinsert",
+      },
       window = {
         completion = cmp.config.window.bordered({}),
         documentation = cmp.config.window.bordered({}),
@@ -23,11 +26,10 @@ return {
         end
       },
       mapping = cmp.mapping.preset.insert({
-        -- ['<CR>'] = cmp.mapping.confirm({ select = true }),
-        ['<C-t>'] = cmp.mapping.complete(),
-        ['<CR>'] = cmp.mapping.confirm(),
-        ['<Tab>'] = cmp.mapping.select_next_item(),
-        ['<S-Tab>'] = cmp.mapping.select_prev_item(),
+        ['<Tab>'] = cmp.mapping.confirm({ select = true }),
+        ['<C-n>'] = cmp.mapping.select_next_item(),
+        ['<C-p>'] = cmp.mapping.select_prev_item(),
+        ['<C-g>'] = cmp.mapping.abort(),
       }),
       sources = cmp.config.sources(
         {
@@ -53,8 +55,43 @@ return {
 
     local capabilities = require('cmp_nvim_lsp').default_capabilities()
     vim.lsp.config('lua_ls', {
-      capabilities = capabilities
+      cmd = { '/home/venomade/.local/share/lua-language-server/bin/lua-language-server' },
+      capabilities = capabilities,
+      root_markers = {
+        ".luarc.json",
+        ".luarc.jsonc",
+        ".git",
+      },
+      settings = {
+        Lua = {
+          runtime = {
+            version = 'Lua 5.4',
+            -- luarocks path --lr-path | tr ';' '\n' | sed 's/?.*//' | sort -u
+            path = {
+              '?.lua',
+              '?/init.lua',
+              '/home/venomade/.luarocks/share/lua/5.4/?.lua',
+              '/home/venomade/.luarocks/share/lua/5.4/?/init.lua',
+              '/usr/share/lua/5.4/?.lua',
+              '/usr/share/lua/5.4/?/init.lua',
+              './stubs/?.lua',
+              './stubs/?/init.lua'
+            },
+          },
+          workspace = {
+            library = {
+              '/home/venomade/.luarocks/share/lua/5.4',
+              '/usr/share/lua/5.4',
+              './stubs'
+            },
+          },
+          diagnostics = {
+            enable = true,
+          },
+        },
+      },
     })
+
     vim.lsp.enable('lua_ls')
     vim.lsp.config('clangd', {
       capabilities = capabilities
diff --git a/.config/nvim/lua/plugins/flutter.lua b/.config/nvim/lua/plugins/flutter.lua
deleted file mode 100644
index a6d3506..0000000
--- a/.config/nvim/lua/plugins/flutter.lua
+++ /dev/null
@@ -1,11 +0,0 @@
-return {
-    'nvim-flutter/flutter-tools.nvim',
-    lazy = false,
-    dependencies = {
-        'nvim-lua/plenary.nvim',
-        -- 'stevearc/dressing.nvim', -- optional for vim.ui.select
-    },
-    config = function ()
-      require('flutter-tools').setup({})
-    end,
-}
diff --git a/.config/nvim/lua/plugins/fterm.lua b/.config/nvim/lua/plugins/fterm.lua
deleted file mode 100644
index dfc9375..0000000
--- a/.config/nvim/lua/plugins/fterm.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-return {
-  "numToStr/FTerm.nvim",
-  config = function()
-    require("FTerm").setup({
-      border = "bold",
-      dimensions = {
-        height = 0.9,
-        width = 0.9,
-      },
-    })
-    vim.keymap.set('n', '<A-i>', '<CMD>lua require("FTerm").toggle()<CR>')
-    vim.keymap.set('t', '<A-i>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>')
-  end,
-}
diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua
deleted file mode 100644
index 4c12912..0000000
--- a/.config/nvim/lua/plugins/init.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-return {
-  require('plugins.theme'),
-  require('plugins.autopairs'),
-  require('plugins.treesitter'),
-  require('plugins.rainbow-delimiters'),
-  require('plugins.telescope'),
-  require('plugins.lualine'),
-  require('plugins.statuscol'),
-  require('plugins.oil'),
-  require('plugins.cmp'),
-  require('plugins.lastplace'),
-  require('plugins.orgmode'),
-  require('plugins.which-key'),
-}
diff --git a/.config/nvim/lua/plugins/lastplace.lua b/.config/nvim/lua/plugins/lastplace.lua
index 6c9f074..a393a90 100644
--- a/.config/nvim/lua/plugins/lastplace.lua
+++ b/.config/nvim/lua/plugins/lastplace.lua
@@ -4,3 +4,4 @@ return {
     require'nvim-lastplace'.setup({})
   end
 }
+
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
index cd3d6f1..5412061 100644
--- a/.config/nvim/lua/plugins/lualine.lua
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -7,6 +7,18 @@ return {
         icons_enabled = true,
         component_separators = { left = '|', right = '|'},
         section_separators = { left = '', right = ''},
+        theme = {
+          normal = {
+            a = { bg = '#000000' },
+            b = { bg = '#000000' },
+            c = { bg = '#000000' },
+          },
+          inactive = {
+            a = { bg = '#000000' },
+            b = { bg = '#000000' },
+            c = { bg = '#000000' },
+          }
+        },
       },
       sections = {
         lualine_a = {"mode", {
diff --git a/.config/nvim/lua/plugins/modus-themes.lua b/.config/nvim/lua/plugins/modus-themes.lua
new file mode 100644
index 0000000..3058078
--- /dev/null
+++ b/.config/nvim/lua/plugins/modus-themes.lua
@@ -0,0 +1,13 @@
+return {
+  "miikanissi/modus-themes.nvim",
+  priority = 1000,
+  config = function ()
+    require("modus-themes").setup({
+      style = "modus_vivendi",
+      sign_column_background = false,
+      line_nr_column_background = false,
+    })
+    vim.cmd.colorscheme("modus")
+  end
+}
+
diff --git a/.config/nvim/lua/plugins/orgmode.lua b/.config/nvim/lua/plugins/orgmode.lua
deleted file mode 100644
index f35d7b4..0000000
--- a/.config/nvim/lua/plugins/orgmode.lua
+++ /dev/null
@@ -1,31 +0,0 @@
-return {
-  'nvim-orgmode/orgmode',
-  event = 'VeryLazy',
-  ft = { 'org' },
-  config = function()
-    -- Setup orgmode
-    require('orgmode').setup({
-      org_agenda_files = '~/orgfiles/**/*',
-      org_default_notes_file = '~/orgfiles/refile.org',
-      org_hide_emphasis_markers = true,
-    })
-
-    -- Enable line wrapping and line breaking for Org files
-    vim.api.nvim_create_augroup("OrgMode", { clear = true })
-    vim.api.nvim_create_autocmd("FileType", {
-      pattern = "org",
-      callback = function()
-        vim.opt_local.wrap = true
-        vim.opt_local.linebreak = true
-        vim.opt_local.textwidth = 80
-      end,
-    })
-
-    -- AUTHORS_NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option
-    -- add ~org~ to ignore_install
-    -- require('nvim-treesitter.configs').setup({
-    --   ensure_installed = 'all',
-    --   ignore_install = { 'org' },
-    -- })
-  end,
-}
diff --git a/.config/nvim/lua/plugins/markdown.lua b/.config/nvim/lua/plugins/render-markdown.lua
index b003495..65408bc 100644
--- a/.config/nvim/lua/plugins/markdown.lua
+++ b/.config/nvim/lua/plugins/render-markdown.lua
@@ -1,6 +1,6 @@
 return {
     'MeanderingProgrammer/render-markdown.nvim',
-    dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' },
+    dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
     ---@module 'render-markdown'
     ---@type render.md.UserConfig
     opts = {},
diff --git a/.config/nvim/lua/plugins/statuscol.lua b/.config/nvim/lua/plugins/statuscol.lua
deleted file mode 100644
index 15ccef9..0000000
--- a/.config/nvim/lua/plugins/statuscol.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-return {
-  "luukvbaal/statuscol.nvim",
-  config = function()
-    require("statuscol").setup({relculright = true})
-  end,
-}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
index f942dc8..e761994 100644
--- a/.config/nvim/lua/plugins/telescope.lua
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -2,13 +2,16 @@ return {
   "nvim-telescope/telescope.nvim",
   dependencies = { "nvim-lua/plenary.nvim" },
   config = function()
-    require("telescope").setup({})
+    require("telescope").setup({
+      defaults = {
+        borderchars = { "─", "│", "─", "│", "┌", "┐", "┘", "└" },
+      },
+    })
 
     local tscope = require('telescope.builtin')
     vim.keymap.set("n", "<leader>ff", function()
       local cwd
       if vim.bo.filetype == "oil" then
-        -- For Oil buffers
         cwd = require("oil").get_current_dir()
       else
         cwd = vim.fn.expand("%:p:h")
@@ -25,11 +28,6 @@ return {
       { desc = "Find Buffer" })
     vim.keymap.set('n', '<leader>fh', tscope.help_tags,
       { desc = "Find Help" })
-    -- vim.keymap.set('n', '<leader>fg', function()
-    --   tscope.grep_string(
-    --     { search = vim.fn.input("Grep > "),
-    --     desc = "Find by Grep" });
-    -- end)
     vim.keymap.set('n', '<leader>fg', tscope.live_grep,
       { desc = "Find by Grep" })
     vim.keymap.set('n', '<leader>fr', tscope.oldfiles,
diff --git a/.config/nvim/lua/plugins/theme.lua b/.config/nvim/lua/plugins/theme.lua
deleted file mode 100644
index 995c3dc..0000000
--- a/.config/nvim/lua/plugins/theme.lua
+++ /dev/null
@@ -1,29 +0,0 @@
--- return {
---   "rose-pine/neovim",
---   as = "rose-pine",
---   config = function()
---     require("rose-pine").setup({
---       variant = "main",
---       palette = {
---         main = {
---           base = "#000000",
---           surface = "#000000",
---         }
---       }
---     })
---     vim.opt.termguicolors = true
---     vim.cmd.colorscheme("rose-pine")
---   end,
--- }
-
-return {
-  "catppuccin/nvim",
-  priority = 1000,
-  config = function ()
-    require("catppuccin").setup({
-      flavour = "mocha"
-    })
-    vim.cmd.colorscheme("catppuccin")
-  end,
-  opts = {}
-}
diff --git a/.config/nvim/lua/plugins/todo-comments.lua b/.config/nvim/lua/plugins/todo-comments.lua
index 64f12b7..69f907e 100644
--- a/.config/nvim/lua/plugins/todo-comments.lua
+++ b/.config/nvim/lua/plugins/todo-comments.lua
@@ -2,6 +2,13 @@ return {
   "folke/todo-comments.nvim",
   dependencies = { "nvim-lua/plenary.nvim" },
   opts = {
-  }
+
+  },
+  config = function()
+    require('todo-comments').setup({})
+    vim.keymap.set('n', '<leader>ft', function()
+        vim.cmd('TodoTelescope')
+      end,
+      { desc = "Find Buffer" })
+  end,
 }
--- TODO: Add a bind to :TodoTelescope at '<leader>ft'
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
deleted file mode 100644
index 88b699b..0000000
--- a/.config/nvim/lua/plugins/treesitter.lua
+++ /dev/null
@@ -1,53 +0,0 @@
--- return {
---   "nvim-treesitter/nvim-treesitter",
---   config = function()
---     require("nvim-treesitter.configs").setup({
---       ensure_installed = {"c", "vimdoc", "markdown", "jsonc", "lua"},
---       sync_install = false,
---       highlight = { enable = true },
---       indent = { enable = true },
---     })
---   end,
--- }
-
-return {
-  "nvim-treesitter/nvim-treesitter",
-  opts = {
-    highlight = { enable = true },
-    indent = { enable = true },
-    ensure_installed = {
-      "bash",
-      "c",
-      "dart",
-      "diff",
-      "go",
-      "html",
-      "javascript",
-      "jsdoc",
-      "json",
-      "jsonc",
-      "lua",
-      "luadoc",
-      "luap",
-      "make",
-      "markdown",
-      "markdown_inline",
-      "printf",
-      "python",
-      "query",
-      "regex",
-      "rust",
-      "toml",
-      "tsx",
-      "typescript",
-      "vim",
-      "vimdoc",
-      "xml",
-      "yaml",
-    },
-  },
-  ---@param opts TSConfig
-  config = function(_, opts)
-    require("nvim-treesitter.configs").setup(opts)
-  end,
-}
diff --git a/.config/nvim/lua/plugins/which-key.lua b/.config/nvim/lua/plugins/which-key.lua
deleted file mode 100644
index 746b399..0000000
--- a/.config/nvim/lua/plugins/which-key.lua
+++ /dev/null
@@ -1,17 +0,0 @@
-return {
-  "folke/which-key.nvim",
-  event = "VeryLazy",
-  opts = {
-    icons = { mappings = false },
-    delay = 1000
-  },
-  keys = {
-    {
-      "<leader>?",
-      function()
-        require("which-key").show({ global = false })
-      end,
-      desc = "Buffer Local Keymaps",
-    },
-  },
-}
diff --git a/.config/nvim/lua/plugins/zen.lua b/.config/nvim/lua/plugins/zen.lua
deleted file mode 100644
index 004aa8c..0000000
--- a/.config/nvim/lua/plugins/zen.lua
+++ /dev/null
@@ -1,24 +0,0 @@
-return {
-  "Pocco81/true-zen.nvim",
-  config = function()
-    require('true-zen').setup({
-      modes = {
-        ataraxis = {
-          padding = {
-            left = 100,
-            right = 100,
-          }
-        },
-        minimalist = {
-          options = {
-            -- Some weird bug fix :/
-            cmdheight = 1
-          }
-        }
-      }
-    })
-
-    vim.keymap.set('n', '<leader>z', require('true-zen.ataraxis').toggle,
-      { desc = "Toggle Zen Mode" })
-  end,
-}
diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi
new file mode 100644
index 0000000..c80fd01
--- /dev/null
+++ b/.config/rofi/config.rasi
@@ -0,0 +1,10 @@
+configuration {
+  display-drun: "Applications:";
+  display-windows: "Windows:";
+  drun-display-format: "{icon} {name}";
+  font: "Google Sans 12";
+  modi: "window,run,drun";
+  show-icons: false;
+}
+
+@theme "/home/venomade/.config/rofi/theme.rasi"
diff --git a/.config/rofi/theme.rasi b/.config/rofi/theme.rasi
new file mode 100644
index 0000000..6cac4e6
--- /dev/null
+++ b/.config/rofi/theme.rasi
@@ -0,0 +1,111 @@
+* {
+  font:   "Google Sans 11";
+
+  bg0     : #000000;
+  bg1     : #000000;
+  bg2     : #ffffff;
+  bg3     : #ffffff;
+  fg0     : #ffffff;
+  fg1     : #a9b1d6;
+  fg2     : #737aa2;
+  red     : #f7768e;
+  green   : #9ece6a;
+  yellow  : #e0af68;
+  blue    : #7aa2f7;
+  magenta : #9a7ecc;
+  cyan    : #4abaaf;
+  purple  : #b6a2e9;
+
+  accent: @purple;
+  urgent: @yellow;
+
+  background-color : transparent;
+  text-color       : @fg0;
+
+  margin  : 0;
+  padding : 0;
+  spacing : 0;
+}
+
+element-icon, element-text, scrollbar {
+  cursor: pointer;
+}
+
+window {
+  width    : 280px;
+  background-color: @bg1;
+  border: 1px;
+  border-color: @bg3;
+  border-radius: 0px;
+}
+
+inputbar {
+  spacing  : 8px;
+  padding  : 4px 8px;
+
+  background-color: @bg0;
+}
+
+icon-search, entry, element-icon, element-text {
+  vertical-align: 0.5;
+}
+
+icon-search {
+  expand   : false;
+  filename : "search-symbolic";
+  size     : 14px;
+}
+
+textbox {
+  padding          : 4px 8px;
+  background-color : @bg2;
+}
+
+listview {
+  padding      : 4px 0px;
+  lines        : 12;
+  columns      : 1;
+  scrollbar    : false;
+  fixed-height : false;
+  dynamic      : true;
+}
+
+element {
+  padding : 4px 8px;
+  spacing : 8px;
+}
+
+element normal urgent {
+  text-color: @urgent;
+}
+
+element normal active {
+  text-color: @accent;
+}
+
+element alternate active {
+  text-color: @accent;
+}
+
+element selected {
+  text-color       : @bg1;
+  background-color : @accent;
+}
+
+element selected urgent {
+  background-color: @urgent;
+}
+
+element-icon {
+  size: 0.8em;
+}
+
+element-text {
+  text-color: inherit;
+}
+
+scrollbar {
+  handle-width : 4px;
+  handle-color : @fg2;
+  padding      : 0 4px;
+}
diff --git a/.config/shell/alias b/.config/shell/alias
index 29a7333..627e915 100644
--- a/.config/shell/alias
+++ b/.config/shell/alias
@@ -1,6 +1,9 @@
-alias gvc="ssh git@git.venomade.com"
 alias rgf='rg --files | rg'
-alias ls='ls --color=auto'
+alias ls='eza --icons=auto'
 alias md='mkdir'
 alias ec='emacsclient -nw'
-alias cat='bat -p'
+alias cat='bat -pp'
+alias man='batman'
+alias diff='batdiff'
+alias fzf="fzf --preview 'bat --style=numbers --color=always {}'"
+alias tlbx="toolbox enter"
diff --git a/.config/shell/functions b/.config/shell/functions
new file mode 100644
index 0000000..a300316
--- /dev/null
+++ b/.config/shell/functions
@@ -0,0 +1,16 @@
+gvc() {
+    if [[ $1 == "clone" ]]; then
+        shift
+        git clone git@git.venomade.com:"$@"
+    else
+        ssh git@git.venomade.com "$@"
+    fi
+}
+
+function y() {
+	local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
+	command yazi "$@" --cwd-file="$tmp"
+	IFS= read -r -d '' cwd < "$tmp"
+	[ "$cwd" != "$PWD" ] && [ -d "$cwd" ] && builtin cd -- "$cwd"
+	rm -f -- "$tmp"
+}
diff --git a/.config/shell/vars b/.config/shell/vars
index a68dea2..2f9c223 100644
--- a/.config/shell/vars
+++ b/.config/shell/vars
@@ -1,12 +1 @@
-export GOPATH="$HOME/.go"
-
-export PATH="$PATH:$GOPATH/bin"
-export PATH="$PATH:$HOME/.local/bin"
-export PATH="$PATH:$HOME/.config/emacs/bin"
-
-export EDITOR=emacs
-
-# export LDFLAGS="-L/opt/homebrew/opt/llvm/lib"
-# export CPPFLAGS="-I/opt/homebrew/opt/llvm/include"
-
-# export CMAKE_PREFIX_PATH="/opt/homebrew/opt/llvm"
+export EDITOR=nvim
diff --git a/.config/sway/config b/.config/sway/config
new file mode 100644
index 0000000..6747a42
--- /dev/null
+++ b/.config/sway/config
@@ -0,0 +1,278 @@
+# Venomade's Sway Config
+
+# Logo key. Use Mod1 for Alt.
+set $mod Mod4
+# Home row direction keys, like vim but colemak
+set $left h
+set $down n
+set $up e
+set $right i
+# Your preferred terminal emulator
+set $term foot
+# Your preferred application launcher
+set $rofi_run rofi -show run
+set $rofi_drun rofi -show drun -show-icons
+# This is a little hacky but I don't know if
+# any other way is possible on wayland.
+set $rofi_cliphist cliphist list \
+                   | rofi -dmenu -p "" \
+                   | cliphist decode \
+                   | wl-copy \
+                   && wtype -M ctrl -M shift -k v -m shift -m ctrl
+
+# Set the Music Player to Control
+set $player jellyfin-tui
+
+# Applications
+set $web_browser brave-browser
+set $file_manager foot -a=floating_foot yazi
+set $music_player foot jellyfin-tui
+
+# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
+output * bg /home/venomade/Pictures/Papes/PurplePhoneLines.jpg fill
+
+# Set Monitor Resolution and Scale
+output eDP-1 resolution 2560x1600 position 0,0 scale 1.66
+
+# Input Configuration
+input * {
+    xkb_layout us
+    xkb_variant colemak
+    # xkb_options caps:ctrl_modifier
+    xkb_options caps:escape
+
+    # tap enabled
+    natural_scroll enabled
+}
+
+### Key bindings
+#
+# Basics:
+#
+    # Start a terminal
+    bindsym $mod+Return exec $term
+
+    # Kill focused window
+    bindsym $mod+q kill
+
+    # Applications
+    bindsym $mod+w exec $web_browser
+    bindsym $mod+y exec $file_manager
+    bindsym $mod+m exec $music_player
+
+    # Start your launcher
+    bindsym $mod+d exec $rofi_drun
+    bindsym $mod+Shift+d exec $rofi_run
+
+    bindsym $mod+v exec $rofi_cliphist
+
+    bindsym $mod+Shift+t exec ~/.local/bin/rofi-translate
+
+    bindsym $mod+Shift+w exec ~/.local/bin/rofi-wifimenu
+
+    bindsym $mod+Shift+s exec ~/.local/bin/take-slurpshot
+    bindsym $mod+s exec sh -c 'grim /tmp/grimshot.png && imv -f /tmp/grimshot.png && rm /tmp/grimshot.png'
+
+    bindsym $mod+Shift+return exec ~/.local/bin/rofi-notes
+    bindsym $mod+Ctrl+Shift+return exec ~/.local/bin/rofi-notes --delete
+
+    # Drag floating windows by holding down $mod and left mouse button.
+    # Resize them with right mouse button + $mod.
+    # Despite the name, also works for non-floating windows.
+    # Change normal to inverse to use left mouse button for resizing and right
+    # mouse button for dragging.
+    floating_modifier $mod normal
+
+    # Reload the configuration file
+    bindsym $mod+Shift+r reload
+
+    # Exit sway (logs you out of your Wayland session)
+    # bindsym $mod+Shift+x exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
+    bindsym $mod+Shift+x exec ~/.local/bin/rofi-powermenu
+
+    # Lock Screen
+    bindsym $mod+l exec ~/.local/bin/lock-screen
+    bindsym $mod+Shift+l exec ~/.local/bin/lock-screen 0
+#
+# Moving around:
+#
+    # Move your focus around
+    bindsym $mod+$left focus left
+    bindsym $mod+$down focus down
+    bindsym $mod+$up focus up
+    bindsym $mod+$right focus right
+    # Or use $mod+[up|down|left|right]
+    bindsym $mod+Left focus left
+    bindsym $mod+Down focus down
+    bindsym $mod+Up focus up
+    bindsym $mod+Right focus right
+
+    # Move the focused window with the same, but add Shift
+    bindsym $mod+Shift+$left move left
+    bindsym $mod+Shift+$down move down
+    bindsym $mod+Shift+$up move up
+    bindsym $mod+Shift+$right move right
+    # Ditto, with arrow keys
+    bindsym $mod+Shift+Left move left
+    bindsym $mod+Shift+Down move down
+    bindsym $mod+Shift+Up move up
+    bindsym $mod+Shift+Right move right
+#
+# Workspaces:
+#
+    # Switch to workspace
+    bindsym $mod+1 workspace number 1
+    bindsym $mod+2 workspace number 2
+    bindsym $mod+3 workspace number 3
+    bindsym $mod+4 workspace number 4
+    bindsym $mod+5 workspace number 5
+    bindsym $mod+6 workspace number 6
+    bindsym $mod+7 workspace number 7
+    bindsym $mod+8 workspace number 8
+    bindsym $mod+9 workspace number 9
+    bindsym $mod+0 workspace number 10
+    # Move focused container to workspace
+    bindsym $mod+Shift+1 move container to workspace number 1
+    bindsym $mod+Shift+2 move container to workspace number 2
+    bindsym $mod+Shift+3 move container to workspace number 3
+    bindsym $mod+Shift+4 move container to workspace number 4
+    bindsym $mod+Shift+5 move container to workspace number 5
+    bindsym $mod+Shift+6 move container to workspace number 6
+    bindsym $mod+Shift+7 move container to workspace number 7
+    bindsym $mod+Shift+8 move container to workspace number 8
+    bindsym $mod+Shift+9 move container to workspace number 9
+    bindsym $mod+Shift+0 move container to workspace number 10
+    # Note: workspaces can have any name you want, not just numbers.
+    # We just use 1-10 as the default.
+# Gestures
+bindgesture swipe:right workspace prev
+bindgesture swipe:left workspace next
+#
+# Layout stuff:
+#
+    # You can "split" the current object of your focus with
+    # $mod+b or $mod+v, for horizontal and vertical splits
+    # respectively.
+    # bindsym $mod+Shift+b splith
+    # bindsym $mod+Shift+v splitv
+
+    # Switch the current container between different layout styles
+    # bindsym $mod+s layout stacking
+    # bindsym $mod+w layout tabbed
+    # bindsym $mod+f layout toggle split
+
+    # Make the current focus fullscreen
+    bindsym $mod+Shift+f fullscreen
+
+    # Toggle the current focus between tiling and floating mode
+    bindsym $mod+Shift+space floating toggle
+
+    # Swap focus between the tiling area and the floating area
+    bindsym $mod+space focus mode_toggle
+
+    # Move focus to the parent container
+    bindsym $mod+a focus parent
+#
+# Scratchpad:
+#
+    # Sway has a "scratchpad", which is a bag of holding for windows.
+    # You can send windows there and get them back later.
+
+    # Move the currently focused window to the scratchpad
+    bindsym $mod+Shift+minus move scratchpad
+
+    # Show the next scratchpad window or hide the focused scratchpad window.
+    # If there are multiple scratchpad windows, this command cycles through them.
+    bindsym $mod+minus scratchpad show
+#
+# Resizing containers:
+#
+mode "resize" {
+    # left will shrink the containers width
+    # right will grow the containers width
+    # up will shrink the containers height
+    # down will grow the containers height
+    bindsym $left resize shrink width 10px
+    bindsym $down resize grow height 10px
+    bindsym $up resize shrink height 10px
+    bindsym $right resize grow width 10px
+
+    # Ditto, with arrow keys
+    bindsym Left resize shrink width 10px
+    bindsym Down resize grow height 10px
+    bindsym Up resize shrink height 10px
+    bindsym Right resize grow width 10px
+
+    # Return to default mode
+    bindsym Return mode "default"
+    bindsym Escape mode "default"
+}
+bindsym $mod+r mode "resize"
+#
+# Utilities:
+#
+    # Special keys to adjust volume via PulseAudio
+    bindsym --locked XF86AudioMute exec pactl set-sink-mute \@DEFAULT_SINK@ toggle
+    bindsym --locked XF86AudioLowerVolume exec pactl set-sink-volume \@DEFAULT_SINK@ -5%
+    bindsym --locked XF86AudioRaiseVolume exec pactl set-sink-volume \@DEFAULT_SINK@ +5%
+    bindsym --locked XF86AudioMicMute exec pactl set-source-mute \@DEFAULT_SOURCE@ toggle
+    # Special keys to affect playing audio via PlayerCTL
+    bindsym --locked XF86AudioPlay exec playerctl -p $player play-pause
+    bindsym --locked XF86AudioNext exec playerctl -p $player next
+    bindsym --locked XF86AudioPrev exec playerctl -p $player previous
+    # Special keys to adjust brightness via brightnessctl
+    bindsym --locked XF86MonBrightnessDown exec brightnessctl set 5%-
+    bindsym --locked XF86MonBrightnessUp exec brightnessctl set 5%+
+    bindsym --locked XF86KbdBrightnessDown exec brightnessctl --device='kbd_backlight' set 10%-
+    bindsym --locked XF86KbdBrightnessUp exec brightnessctl --device='kbd_backlight' set 10%+
+
+    # Special key to take a screenshot with grim
+    bindsym Print exec grim
+
+# Disable Titlebars
+gaps inner 4
+default_border pixel 2
+default_floating_border pixel 2
+titlebar_padding 1
+titlebar_border_thickness 0
+
+# Floating Terminal
+for_window [app_id = "floating_foot"] floating enable
+
+# Set Font
+font pango:Google Sans Code 12
+#
+# Status Bar:
+#
+# Read `man 5 sway-bar` for more information about this section.
+bar {
+    status_command cd ~/.config/luastatus && exec luastatus-i3-wrapper -B no_separators\
+                   playerctl.lua \
+                   separator.lua \
+                   wireless.lua \
+                   separator.lua \
+                   alsa.lua \
+                   separator.lua \
+                   battery.lua \
+                   separator.lua \
+                   time-date.lua
+
+    position top
+
+    colors {
+        statusline #ffffff
+        background #000000
+        inactive_workspace #00000000 #00000000 #000000ff
+        focused_workspace #00000000 #000000ff #ffffffaa
+    }
+}
+
+# class                 border  bground text    indicator child_border
+client.focused          #000000 #000000 #F8F8F2 #000000   #000000
+client.focused_inactive #000000 #000000 #F8F8F2 #000000   #000000
+client.unfocused        #000000 #000000 #F8F8F2 #000000   #000000
+client.urgent           #000000 #000000 #F8F8F2 #000000   #000000
+client.placeholder      #000000 #000000 #F8F8F2 #000000   #000000
+client.background       #000000 #000000 #FFFFFF #000000   #000000
+
+include /etc/sway/config.d/*
diff --git a/.config/swaylock/config b/.config/swaylock/config
new file mode 100644
index 0000000..9e82dc5
--- /dev/null
+++ b/.config/swaylock/config
@@ -0,0 +1,39 @@
+font=Google Sans
+font-size=28
+
+color=#000000
+
+layout-bg-color=#00000000
+layout-border-color=#00000000
+layout-text-color=#ffffff
+
+text-color=#f4f4f4
+text-clear-color=#00c06f
+text-caps-lock-color=#d0bc00
+text-ver-color=#9099d9
+text-wrong-color=#ff5f59
+
+bs-hl-color=#30303066
+key-hl-color=#9099d9
+caps-lock-bs-hl-color=#30303066
+caps-lock-key-hl-color=#d0bc00
+
+separator-color=#00000000
+
+inside-color=#9099d955
+inside-clear-color=#00c06f55
+inside-caps-lock-color=#d0bc0055
+inside-ver-color=#9099d955
+inside-wrong-color=#ff5f5955
+
+line-color=#9099d911
+line-clear-color=#00c06f11
+line-caps-lock-color=#d0bc0011
+line-ver-color=#9099d911
+line-wrong-color=#ff5f5911
+
+ring-color=#9099d9aa
+ring-clear-color=#00c06faa
+ring-caps-lock-color=#d0bc00aa
+ring-ver-color=#9099d9aa
+ring-wrong-color=#ff5f59aa
diff --git a/.config/systemd/user/.gitignore b/.config/systemd/user/.gitignore
new file mode 100644
index 0000000..419e6be
--- /dev/null
+++ b/.config/systemd/user/.gitignore
@@ -0,0 +1 @@
+default.target.wants
diff --git a/.config/systemd/user/cliphist.service b/.config/systemd/user/cliphist.service
new file mode 100644
index 0000000..91ad51f
--- /dev/null
+++ b/.config/systemd/user/cliphist.service
@@ -0,0 +1,13 @@
+[Unit]
+Description=Cliphist clipboard watcher
+After=graphical-session.target
+PartOf=graphical-session.target
+
+[Service]
+Type=simple
+ExecStart=/usr/bin/wl-paste --watch /usr/local/bin/cliphist store
+Restart=always
+RestartSec=1
+
+[Install]
+WantedBy=default.target
diff --git a/.config/systemd/user/kanata.service b/.config/systemd/user/kanata.service
new file mode 100644
index 0000000..771cfed
--- /dev/null
+++ b/.config/systemd/user/kanata.service
@@ -0,0 +1,22 @@
+[Unit]
+Description=Kanata keyboard remapper
+Documentation=https://github.com/jtroo/kanata
+
+[Service]
+Environment=PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin
+#   Uncomment the 4 lines beneath this to increase process priority
+#   of Kanata in case you encounter lagginess when resource constrained.
+#   WARNING: doing so will require the service to run as an elevated user such as root.
+#   Implementing least privilege access is an exercise left to the reader.
+#
+# CPUSchedulingPolicy=rr
+# CPUSchedulingPriority=99
+# IOSchedulingClass=realtime
+# Nice=-20
+Type=simple
+ExecStart=/usr/local/bin/kanata --cfg /home/venomade/.config/kanata/config.kbd
+Restart=on-failure
+RestartSec=3
+
+[Install]
+WantedBy=default.target
diff --git a/.config/xkb/symbols/us_colemak_pt_mac b/.config/xkb/symbols/us_colemak_pt_mac
deleted file mode 100644
index db2394f..0000000
--- a/.config/xkb/symbols/us_colemak_pt_mac
+++ /dev/null
@@ -1,13 +0,0 @@
-default partial alphanumeric_keys
-xkb_symbols "basic" {
-
-    include "us(colemak)"
-
-    key <AC06> { [ h, H, dead_circumflex, dead_circumflex ] };
-    key <AC07> { [ n, N, dead_tilde, dead_tilde ] };
-    key <AC08> { [ e, E, dead_acute, dead_acute ] };
-    key <AC09> { [ i, I, dead_grave, dead_grave ] };
-    key <AD08> { [ u, U, dead_diaeresis, dead_diaeresis ] };
-
-    name[Group1] = "English (US, Colemak, macOS PT accents)";
-};
diff --git a/.config/yazi/keymap.toml b/.config/yazi/keymap.toml
new file mode 100644
index 0000000..27da4fc
--- /dev/null
+++ b/.config/yazi/keymap.toml
@@ -0,0 +1,164 @@
+"$schema" = "https://yazi-rs.github.io/schemas/keymap.json"
+
+# Manager / File list layer
+[[mgr.prepend_keymap]]
+on  = [ "e" ]
+run = "arrow -1"
+
+[[mgr.prepend_keymap]]
+on  = [ "n" ]
+run = "arrow 1"
+
+[[mgr.prepend_keymap]]
+on  = [ "E" ]
+run = "arrow -5"
+
+[[mgr.prepend_keymap]]
+on  = [ "N" ]
+run = "arrow 5"
+
+[[mgr.prepend_keymap]]
+on  = [ "h" ]
+run = "leave"
+
+[[mgr.prepend_keymap]]
+on  = [ "i" ]
+run = "enter"
+
+[[mgr.prepend_keymap]]
+on  = [ "H" ]
+run = "back"
+
+[[mgr.prepend_keymap]]
+on  = [ "I" ]
+run = "forward"
+
+[[mgr.prepend_keymap]]
+on  = [ "<C-e>" ]
+run = "seek -5"
+
+[[mgr.prepend_keymap]]
+on  = [ "<C-n>" ]
+run = "seek 5"
+
+[[mgr.prepend_keymap]]
+on  = [ "k" ]
+run = "link"
+
+[[mgr.prepend_keymap]]
+on  = [ "K" ]
+run = "link --relative"
+
+[[mgr.prepend_keymap]]
+on  = [ "j" ]
+run = "find_arrow"
+
+[[mgr.prepend_keymap]]
+on  = [ "J" ]
+run = "find_arrow --previous"
+
+
+# Tasks layer
+[[tasks.prepend_keymap]]
+on  = [ "W" ]
+run = "close"
+
+[[tasks.prepend_keymap]]
+on  = [ "e" ]
+run = "arrow -1"
+
+[[tasks.prepend_keymap]]
+on  = [ "n" ]
+run = "arrow 1"
+
+
+# Select layer (spot/picker remnants)
+[[spot.prepend_keymap]]
+on  = [ "e" ]
+run = "arrow -1"
+
+[[spot.prepend_keymap]]
+on  = [ "n" ]
+run = "arrow 1"
+
+[[spot.prepend_keymap]]
+on  = [ "E" ]
+run = "arrow -5"
+
+[[spot.prepend_keymap]]
+on  = [ "N" ]
+run = "arrow 5"
+
+
+# Input layer
+[[input.prepend_keymap]]
+on  = [ "l" ]
+run = "insert"
+
+[[input.prepend_keymap]]
+on  = [ "<C-h>" ]
+run = [ "move -999", "insert" ]
+
+[[input.prepend_keymap]]
+on  = [ "<C-i>" ]
+run = [ "move 999", "insert --append" ]
+
+[[input.prepend_keymap]]
+on  = [ "h" ]
+run = "move -1"
+
+[[input.prepend_keymap]]
+on  = [ "i" ]
+run = "move 1"
+
+[[input.prepend_keymap]]
+on  = [ "=" ]
+run = "forward --end-of-word"
+
+[[input.prepend_keymap]]
+on  = [ "H" ]
+run = "move -999"
+
+[[input.prepend_keymap]]
+on  = [ "I" ]
+run = "move 999"
+
+[[input.prepend_keymap]]
+on  = [ "x" ]
+run = [ "delete", "move 1 --in-operating" ]
+
+[[input.prepend_keymap]]
+on  = [ "u" ]
+run = "undo"
+
+[[input.prepend_keymap]]
+on  = [ "U" ]
+run = "redo"
+
+
+# Completion layer
+[[cmp.prepend_keymap]]
+on  = [ "<C-e>" ]
+run = "arrow -1"
+
+[[cmp.prepend_keymap]]
+on  = [ "<C-n>" ]
+run = "arrow 1"
+
+
+# Help layer
+[[help.prepend_keymap]]
+on  = [ "e" ]
+run = "arrow -1"
+
+[[help.prepend_keymap]]
+on  = [ "n" ]
+run = "arrow 1"
+
+[[help.prepend_keymap]]
+on  = [ "E" ]
+run = "arrow -5"
+
+[[help.prepend_keymap]]
+on  = [ "N" ]
+run = "arrow 5"
diff --git a/.config/yazi/modus_vivendi.tmTheme b/.config/yazi/modus_vivendi.tmTheme
new file mode 100644
index 0000000..15d2429
--- /dev/null
+++ b/.config/yazi/modus_vivendi.tmTheme
@@ -0,0 +1,439 @@
+<!-- Modus Themes for Bat -->
+<!-- Auto generated with https://github.com/miikanissi/modus-themes.nvim/blob/master/lua/modus-themes/extras/bat.lua -->
+
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+  <dict>
+    <key>name</key>
+    <string>modus_vivendi</string>
+    <key>settings</key>
+    <array>
+      <dict>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#000000</string>
+          <key>caret</key>
+          <string>#989898</string>
+          <key>foreground</key>
+          <string>#ffffff</string>
+          <key>invisibles</key>
+          <string>#989898</string>
+          <key>lineHighlight</key>
+          <string>#2f3849</string>
+          <key>selection</key>
+          <string>#7030af</string>
+          <key>findHighlight</key>
+          <string>#7a6100</string>
+          <key>selectionBorder</key>
+          <string>#646464</string>
+          <key>gutterForeground</key>
+          <string>#989898</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Comment</string>
+        <key>scope</key>
+        <string>comment</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>italic</string>
+          <key>foreground</key>
+          <string>#989898</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>String</string>
+        <key>scope</key>
+        <string>string</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#79a8ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Number</string>
+        <key>scope</key>
+        <string>constant.numeric</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#82b0ec</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Built-in constant</string>
+        <key>scope</key>
+        <string>constant.language</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#6ae4b9</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>User-defined constant</string>
+        <key>scope</key>
+        <string>constant.character, constant.other</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#ffffff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Variable</string>
+        <key>scope</key>
+        <string>variable</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Ruby's @variable</string>
+        <key>scope</key>
+        <string>variable.other.readwrite.instance</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>String interpolation</string>
+        <key>scope</key>
+        <string>constant.character.escaped, constant.character.escape, string source, string source.ruby</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#d2b580</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Keyword</string>
+        <key>scope</key>
+        <string>keyword</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>italic</string>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Storage</string>
+        <key>scope</key>
+        <string>storage</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Storage type</string>
+        <key>scope</key>
+        <string>storage.type</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Class name</string>
+        <key>scope</key>
+        <string>entity.name.class</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Inherited class</string>
+        <key>scope</key>
+        <string>entity.other.inherited-class</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#b6a0ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Function name</string>
+        <key>scope</key>
+        <string>entity.name.function</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#feacd0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Function argument</string>
+        <key>scope</key>
+        <string>variable.parameter</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Tag name</string>
+        <key>scope</key>
+        <string>entity.name.tag</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Tag attribute</string>
+        <key>scope</key>
+        <string>entity.other.attribute-name</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Library function</string>
+        <key>scope</key>
+        <string>support.function</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#feacd0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Library constant</string>
+        <key>scope</key>
+        <string>support.constant</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#6ae4b9</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Library class/type</string>
+        <key>scope</key>
+        <string>support.type, support.class</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#6ae4b9</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Library variable</string>
+        <key>scope</key>
+        <string>support.other.variable</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00d3d0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Invalid</string>
+        <key>scope</key>
+        <string>invalid</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#989898</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Invalid deprecated</string>
+        <key>scope</key>
+        <string>invalid.deprecated</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#989898</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON String</string>
+        <key>scope</key>
+        <string>meta.structure.dictionary.json string.quoted.double.json</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#79a8ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>diff.header</string>
+        <key>scope</key>
+        <string>meta.diff, meta.diff.header</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#feacd0</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>diff.deleted</string>
+        <key>scope</key>
+        <string>markup.deleted</string>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#4f1119</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>diff.inserted</string>
+        <key>scope</key>
+        <string>markup.inserted</string>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#00381f</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>diff.changed</string>
+        <key>scope</key>
+        <string>markup.changed</string>
+        <key>settings</key>
+        <dict>
+          <key>background</key>
+          <string>#363300</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>constant.numeric.line-number.find-in-files - match</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#82b0ec</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>entity.name.filename</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#2fafff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>scope</key>
+        <string>message.error</string>
+        <key>settings</key>
+        <dict>
+          <key>fontStyle</key>
+          <string>bold</string>
+          <key>foreground</key>
+          <string>#ff7f9f</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON Punctuation</string>
+        <key>scope</key>
+        <string>punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#ffffff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON Structure</string>
+        <key>scope</key>
+        <string>meta.structure.dictionary.json string.quoted.double.json</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#79a8ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>JSON String</string>
+        <key>scope</key>
+        <string>meta.structure.dictionary.value.json string.quoted.double.json</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#79a8ff</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Escape Characters</string>
+        <key>scope</key>
+        <string>constant.character.escape</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#d2b580</string>
+        </dict>
+      </dict>
+      <dict>
+        <key>name</key>
+        <string>Regular Expressions</string>
+        <key>scope</key>
+        <string>string.regexp</string>
+        <key>settings</key>
+        <dict>
+          <key>foreground</key>
+          <string>#00c06f</string>
+        </dict>
+      </dict>
+    </array>
+    <key>uuid</key>
+    <string>09CE9B40-0137-442C-8512-7CEAFC78C153</string>
+    <key>colorSpaceName</key>
+    <string>sRGB</string>
+    <key>semanticClass</key>
+    <string>Modus Vivendi</string>
+  </dict>
+</plist>
diff --git a/.config/yazi/theme.toml b/.config/yazi/theme.toml
new file mode 100644
index 0000000..7e83248
--- /dev/null
+++ b/.config/yazi/theme.toml
@@ -0,0 +1,135 @@
+# Modus Themes for Yazi
+# Auto generated with https://github.com/miikanissi/modus-themes.nvim/blob/master/lua/modus-themes/extras/yazi.lua
+
+[manager]
+# NOTE: can combined with tmTheme (sublime colorshceme file) for preview code highlight
+highlight = "~/.config/yazi/modus_vivendi.tmTheme"
+
+cwd = { fg = "#00d3d0", italic = true }
+
+# Hovered
+hovered         = { bg = "#2f3849" }
+preview_hovered = { bg = "#2f3849" }
+
+# Find
+find_keyword  = { fg = "#ffffff", bg = "#7030af", bold = true }
+find_position = { fg = "#79a8ff", bg = "#1e1e1e", bold = true }
+
+# Marker
+marker_copied   = { fg = "#70b900", bg = "#70b900" }
+marker_cut      = { fg = "#ff5f59", bg = "#ff5f59" }
+marker_marked   = { fg = "#feacd0", bg = "#feacd0" }
+marker_selected = { fg = "#2fafff", bg = "#2fafff" }
+
+# Tab
+tab_active   = { fg = "#000000", bg = "#2fafff" }
+tab_inactive = { fg = "#989898", bg = "#000000" }
+tab_width    = 1
+
+# Count
+count_copied   = { fg = "#000000", bg = "#70b900" }
+count_cut      = { fg = "#000000", bg = "#ff6b55" }
+count_selected = { fg = "#000000", bg = "#79a8ff" }
+
+# Border
+border_symbol = "│"
+border_style  = { fg = "#C4C4C4" }
+
+[status]
+separator_open  = ""
+separator_close = ""
+separator_style = { fg = "#0f0f0f", bg = "#0f0f0f" }
+
+# Mode
+mode_normal = { fg = "#000000", bg = "#2fafff", bold = true }
+mode_select = { fg = "#000000", bg = "#f78fe7", bold = true }
+mode_unset  = { fg = "#000000", bg = "#db7b5f", bold = true }
+
+# Progress
+progress_label  = { fg = "#989898", bold = true }
+progress_normal = { fg = "#000000" }
+progress_error  = { fg = "#ff5f59" }
+
+# Permissions
+permissions_t = { fg = "#2fafff" }
+permissions_r = { fg = "#d0bc00" }
+permissions_w = { fg = "#ff5f59" }
+permissions_x = { fg = "#44bc44" }
+permissions_s = { fg = "#989898" }
+
+[select]
+border   = { fg = "#C4C4C4" }
+active   = { fg = "#ffffff",  bg = "#646464" }
+inactive = { fg = "#ffffff" }
+
+# Input
+[input]
+border   = { fg = "#00bcff" }
+title    = {}
+value    = { fg = "#f78fe7" }
+selected = { bg = "#646464" }
+
+# Completion
+[completion]
+border   = { fg = "#00bcff" }
+active   = { fg = "#ffffff", bg = "#646464" }
+inactive = { fg = "#ffffff" }
+
+# Tasks
+[tasks]
+border  = { fg = "#C4C4C4" }
+title   = {}
+hovered = { fg = "#ffffff", bg="#646464" }
+
+# Which
+[which]
+cols = 3
+mask            = { bg = "#0f0f0f" }
+cand            = { fg = "#00d3d0" }
+rest            = { fg = "#2fafff" }
+desc            = { fg = "#feacd0" }
+separator       = "  "
+separator_style = { fg = "#989898" }
+
+# Notify
+[notify]
+title_info  = { fg = "#00bcff" }
+title_warn  = { fg = "#d0bc00" }
+title_error = { fg = "#ff5f59" }
+
+# Help
+[help]
+on      = { fg = "#44bc44" }
+run     = { fg = "#feacd0" }
+hovered = { bg = "#646464" }
+footer  = { fg = "#ffffff", bg = "#0f0f0f" }
+
+[filetype]
+
+rules = [
+	# Images
+	{ mime = "image/*", fg = "#00d3d0" },
+
+	# Media
+	{ mime = "{audio,video}/*", fg = "#fec43f" },
+
+	# Archives
+	{ mime = "application/*zip", fg = "#feacd0" },
+	{ mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", fg = "#feacd0" },
+
+	# Documents
+	{ mime = "application/{pdf,doc,rtf,vnd.*}", fg = "#00d3d0" },
+
+	# Empty files
+	# { mime = "inode/x-empty", fg = "#ff5f59" },
+
+	# Special files
+	{ name = "*", is = "orphan", bg = "#ff5f59" },
+	{ name = "*", is = "exec"  , fg = "#44bc44" },
+
+	{ name = "*.rs", fg = "#db7b5f" },
+
+	# Fallback
+	{ name = "*/", fg = "#2fafff" }
+]
+
diff --git a/.config/yazi/yazi.toml b/.config/yazi/yazi.toml
new file mode 100644
index 0000000..4f05c94
--- /dev/null
+++ b/.config/yazi/yazi.toml
@@ -0,0 +1,7 @@
+[mgr]
+sort_by = "mtime"
+sort_reverse = true
+show_hidden = true
+linemode = "size"
+scrolloff = 12
+ratio = [1,2,0]
diff --git a/.emacs.d/.gitignore b/.emacs.d/.gitignore
deleted file mode 100644
index 44ac41e..0000000
--- a/.emacs.d/.gitignore
+++ /dev/null
@@ -1,13 +0,0 @@
-#*
-.cache
-auto-save-list
-autosaves
-backups
-eln-cache
-elpa
-eshell
-history
-lock
-places
-projects
-recentf
\ No newline at end of file
diff --git a/.emacs.d/custom.el b/.emacs.d/custom.el
deleted file mode 100644
index 1bca6e5..0000000
--- a/.emacs.d/custom.el
+++ /dev/null
@@ -1,39 +0,0 @@
-
-(custom-set-variables
- ;; custom-set-variables was added by Custom.
- ;; If you edit it by hand, you could mess it up, so be careful.
- ;; Your init file should contain only one such instance.
- ;; If there is more than one, they won't work right.
- '(custom-safe-themes
-   '("a59d0dbcbdfc57a14bc3fa28cb5a8367bc7ede82d848f517b4979b4a03c09da9"
-     "3538194fff1b928df280dc08f041518a8d51ac3ff704c5e46d1517f5c4d8a0e0"
-     default))
- '(package-selected-packages nil)
- '(package-vc-selected-packages
-   '((eglot-booster :url "https://github.com/jdtsmith/eglot-booster.git")))
- '(safe-local-variable-directories '("/Users/venomade/Projects/Learning/C/GeneticsProject/")))
-(custom-set-faces
- ;; custom-set-faces was added by Custom.
- ;; If you edit it by hand, you could mess it up, so be careful.
- ;; Your init file should contain only one such instance.
- ;; If there is more than one, they won't work right.
- '(org-block ((t (:inherit fixed-pitch))))
- '(org-code ((t (:inherit (shadow fixed-pitch)))))
- '(org-document-info-keyword ((t (:inherit (shadow fixed-pitch)))))
- '(org-document-title ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans" :height 2.0 :underline nil))))
- '(org-indent ((t (:inherit (org-hide fixed-pitch)))))
- '(org-level-1 ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans" :height 1.75))))
- '(org-level-2 ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans" :height 1.5))))
- '(org-level-3 ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans" :height 1.25))))
- '(org-level-4 ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans" :height 1.1))))
- '(org-level-5 ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans"))))
- '(org-level-6 ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans"))))
- '(org-level-7 ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans"))))
- '(org-level-8 ((t (:inherit default :weight bold :foreground "#cdd6f4" :font "Google Sans"))))
- '(org-link ((t (:foreground "royal blue" :underline t))))
- '(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch)))))
- '(org-property-value ((t (:inherit fixed-pitch))))
- '(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
- '(org-table ((t (:inherit fixed-pitch))))
- '(org-tag ((t (:inherit (shadow fixed-pitch) :weight bold :height 0.8))))
- '(org-verbatim ((t (:inherit (shadow fixed-pitch))))))
diff --git a/.emacs.d/early-init.el b/.emacs.d/early-init.el
deleted file mode 100644
index 8ba547e..0000000
--- a/.emacs.d/early-init.el
+++ /dev/null
@@ -1,9 +0,0 @@
-;; GC Perfomance Tweaks from DOOM Emacs
-(setq gc-cons-threshold most-positive-fixnum
-      gc-cons-percentage 1.0)
-(add-hook 'emacs-startup-hook
-          (lambda ()
-            (setq gc-cons-threshold (* 128 1024 1024) ;; 128MB
-                  gc-cons-percentage 1.0)))
-
-(setenv "LSP_USE_PLISTS" "true")
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
deleted file mode 100644
index 25db606..0000000
--- a/.emacs.d/init.el
+++ /dev/null
@@ -1,915 +0,0 @@
-;;; init.el --- Venomade's Emacs Config -*- lexical-binding: t; -*-
-
-;;; Commentary:
-;;;
-;;; This is my Emacs config which I rewrote from the ground up in October 2025.
-;;; It is built around these rules:
-;;;   - Performance as a Focus
-;;;   - Don't do with a package what should be done without
-;;;   - Don't replicate functionality of built-in packages
-;;;   - When using a package, take advantage of most of it's features
-
-;;; Code:
-
-;; Package Setup
-(require 'package)
-(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
-(package-initialize)
-
-(if (native-comp-available-p)
-    (setq package-native-compile t))
-
-;; Core Functionality
-(setq mac-command-modifier nil) ; disable super on mac
-
-; (add-to-list 'default-frame-alist '(undecorated . t)) ; disable titlebar
-
-(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
-(when (file-exists-p custom-file)
-  (load custom-file))
-
-(use-package gcmh ; Improved Garbage Collection
-  :ensure t
-  :hook (after-init . gcmh-mode)
-  :config
-  (setq gcmh-high-cons-threshold (* 128 1024 1024)  ; 128MB
-        gcmh-idle-delay 10
-        gcmh-verbose nil))
-
-(use-package exec-path-from-shell ; FIXME: Doesn't work with Daemonex
-  :ensure t
-  :config
-  (setq exec-path-from-shell-shell-name "/bin/zsh"
-        exec-path-from-shell-arguments nil)
-  (when (memq window-system '(mac ns x))
-    (exec-path-from-shell-initialize)))
-
-(let* ((backup-dir (expand-file-name "backups/" user-emacs-directory))
-       (autosave-dir (expand-file-name "autosaves/" user-emacs-directory))
-       (lock-dir (expand-file-name "lock/" user-emacs-directory)))
-  (make-directory backup-dir t)
-  (make-directory autosave-dir t)
-  (make-directory lock-dir t)
-
-  (setq backup-directory-alist `((".*" . ,(directory-file-name backup-dir)))
-        auto-save-file-name-transforms `((".*" ,(directory-file-name autosave-dir) t))
-        lock-file-name-transforms `((".*" ,(directory-file-name lock-dir) t))))
-
-(add-to-list 'display-buffer-alist
-             '("\\`\\*\\(Warnings\\|Compile-Log\\)\\*\\'"
-               (display-buffer-no-window)
-               (allow-no-window . t)))
-
-(progn
-  (setq trash-directory "~/.Trash")
-  (defun system-move-file-to-trash (file)
-    "Use \"trash\" to move FILE to the system trash."
-    (cl-assert (executable-find "trash") nil "'trash' must be installed. Needs \"brew install trash\"")
-    (call-process "trash" nil 0 nil "-F"  file)))
-
-;; User Interface
-(setq frame-resize-pixelwise t
-      display-line-numbers-width-start t
-      display-line-numbers-width 4
-      display-line-numbers-grow-only t
-      ring-bell-function 'ignore
-      ns-confirm-quit t)
-
-(setq-default truncate-lines t)
-
-; Replace the $ signs for truncation with spaces
-(set-display-table-slot standard-display-table 'truncation 32)
-
-(tool-bar-mode -1)
-(scroll-bar-mode -1)
-(menu-bar-mode -1)
-
-(add-hook 'emacs-startup-hook #'global-display-line-numbers-mode)
-
-(add-hook 'after-make-frame-functions
-          (lambda (f)
-            (select-frame-set-input-focus f)))
-
-; (use-package kaolin-themes
-;   :ensure t
-;   :config
-;   ; (add-hook 'emacs-startup-hook
-;   ;           (lambda ()
-;   ;             (load-theme 'kaolin-dark t)))
-;   (load-theme 'kaolin-dark t)
-
-;   (defun theme-toggle ()
-;     "Toggle between two Emacs themes."
-;     (interactive)
-;     (let ((theme-a 'kaolin-dark)
-;           (theme-b 'kaolin-light))
-;       (cond
-;        ((member theme-a custom-enabled-themes)
-;         (disable-theme theme-a)
-;         (load-theme theme-b t))
-;        ((member theme-b custom-enabled-themes)
-;         (disable-theme theme-b)
-;         (load-theme theme-a t))
-;        (t
-;         (load-theme theme-a t))))))
-
-; TODO: Redo to be less hacky
-; (defun set-mode-line-box ()
-;   (set-face-attribute
-;    'mode-line-active nil
-;    :box '(:line-width 1 :color "#B4BEFE" :style nil)))
-
-; (with-eval-after-load 'spacious-padding
-;   (add-hook 'spacious-padding-mode-hook #'set-mode-line-box))
-
-(use-package catppuccin-theme
-  :ensure t
-  :config
-  (setq catppuccin-flavor 'mocha)
-  ; (add-hook 'emacs-startup-hook
-  ;           (lambda ()
-                                        ;             (load-theme 'kaolin-dark t)))
-  (load-theme 'catppuccin t)
-  ; (set-mode-line-box)
-
-  (defun theme-toggle ()
-    "Toggle between two Emacs themes."
-    (interactive)
-    (let ((theme-a 'kaolin-dark)
-          (theme-b 'kaolin-light))
-      (cond
-       ((eq catppuccin-flavor 'latte)
-        (disable-theme 'catppuccin)
-        (setq catppuccin-flavor 'mocha)
-        (load-theme 'catppuccin t))
-        ; (set-mode-line-box))
-       ((eq catppuccin-flavor 'mocha)
-        (disable-theme 'catppuccin)
-        (setq catppuccin-flavor 'latte)
-        (load-theme 'catppuccin t))
-        ; (set-mode-line-box))
-       (t
-        (load-theme theme-a t))))))
-
-(use-package ns-auto-titlebar
-  :ensure t
-  :config
-  (when (eq system-type 'darwin) (ns-auto-titlebar-mode)))
-
-(use-package hide-mode-line
-  :ensure t)
-
-; TEMPORARILY DISABLED WHILE FIGURING OUT STIPPLES
-; ------------------------
-;(use-package indent-bars
-;  :ensure t
-;  :hook (prog-mode . indent-bars-mode)
-;  :config
-;  (setq indent-bars-width-frac 0.15
-;        indent-bars-starting-column 0
-;        indent-bars-prefer-character t
-;        indent-bars-color '(font-lock-comment-face :face-bg nil :blend 0.425)
-;        indent-bars-color-by-depth nil))
-;
-;(face-attribute 'default :stipple nil t)
-
-(use-package olivetti
-  :ensure t
-  :after hide-mode-line
-  :config
-  (keymap-global-set "C-c z" 'olivetti-mode)
-  (which-key-add-key-based-replacements "C-c z" "zen-mode")
-  (setq olivetti-minimum-body-width 100)
-
-  (defun zen-toggle-minor-modes ()
-    "Toggle minor modes with `olivetti-mode`."
-    (if olivetti-mode
-        (progn
-          (hide-mode-line-mode 1)
-          (display-line-numbers-mode 0))
-      (progn
-        (setq olivetti-body-width 100) ; HACK: Fixes default being set below minimum
-        (hide-mode-line-mode 0)
-        (unless (eq major-mode 'fundamental-mode)
-          (display-line-numbers-mode 1)))))
-
-  (add-hook 'olivetti-mode-hook #'zen-toggle-minor-modes))
-
-(let ((no-numbers-modes '(fundamental-mode-hook)))
-  (dolist (hk no-numbers-modes)
-    (add-hook hk (lambda () (display-line-numbers-mode 0)))))
-
-(use-package doom-modeline
-  :ensure t
-  :hook (after-init . doom-modeline-mode)
-  :config
-  (setq doom-modeline-height 0 ; minimum
-        doom-modeline-bar-width 0 ; disabled
-        doom-modeline-project-detection 'project ; use project.el
-        doom-modeline-buffer-state-icon nil
-        doom-modeline-highlight-modified-buffer-name nil
-        doom-modeline-percent-position nil
-        line-number-mode nil
-        doom-modeline-buffer-encoding nil
-        doom-modeline-time-live-icon nil
-        doom-modeline-time-icon nil
-        display-time-default-load-average nil
-        display-time-format "%a %d %b | %R"
-        helm-ag-show-status-function nil)) ;HACK: Doom Modeline asks for this but I don't use helm
-  ;(display-battery-mode 1)
-  ;(display-time-mode 1))
-
-(use-package spacious-padding
-  :ensure t
-  :hook (after-init . spacious-padding-mode)
-  :config
-  (setq spacious-padding-widths
-        '( :internal-border-width 8
-           :header-line-width 4
-           :mode-line-width 6
-           :custom-button-width 3
-           :tab-width 4
-           :right-divider-width 30
-           :scroll-bar-width 8
-           :fringe-width 0))
-  (setq spacious-padding-subtle-frame-lines
-      '( :mode-line-active spacious-padding-line-active
-         :mode-line-inactive spacious-padding-line-inactive
-         :header-line-active spacious-padding-line-active
-         :header-line-inactive spacious-padding-line-inactive)))
-
-(use-package nerd-icons
-  :ensure t
-  :if (display-graphic-p))
-
-(use-package nerd-icons-dired
-  :ensure t
-  :after nerd-icons
-  :hook
-  (dired-mode . nerd-icons-dired-mode))
-
-(use-package nerd-icons-ibuffer
-  :ensure t
-  :after nerd-icons
-  :hook (ibuffer-mode . nerd-icons-ibuffer-mode))
-
-(use-package rainbow-delimiters
-  :ensure t
-  :hook (prog-mode . rainbow-delimiters-mode))
-
-(use-package hl-todo
-  :ensure t
-  :hook ((org-mode . hl-todo-mode)
-         (prog-mode . hl-todo-mode))
-  :config
-  (add-to-list 'hl-todo-keyword-faces '("ERROR" . "#8c5353")))
-
-(let* ((quit-messages
-        `(; from Doom 1
-          ,(format "I wouldn't leave if I were you. %s is much worse."
-                   (if (featurep 'windows-nt) "DOS" "UNIX"))
-          "Ya know, next time you come in here I'm gonna toast ya."
-          "Go ahead and leave. See if I care."
-          "Are you sure you want to quit this great editor?"
-          ; from Doom Emacs
-          "(setq nothing t everything 'permitted)"
-          "Emacs will remember that."
-          "Emacs, Emacs never changes."
-          "Hey! Hey, M-x listen!"
-          "Wake up, Mr. Stallman. Wake up and smell the ashes."
-          "You are *not* prepared!"
-          "Please don't go. The drones need you. They look up to you.")))
-  (progn
-    (defun random-quit-message ()
-      "Return a randomly chosen quit message from `quit-messages'."
-      (nth (random (length quit-messages)) quit-messages))
-
-    (defun message-confirm-kill-emacs (&rest _)
-      "Prompt the user with a random message before quitting.
-Returns t to allow kill if the user answers yes; nil otherwise."
-      (let* ((msg (random-quit-message))
-             (prompt (format "%s  Really quit Emacs? " msg)))
-        (yes-or-no-p (propertize prompt 'face '(italic default)))))
-
-    (setq confirm-kill-emacs #'message-confirm-kill-emacs)))
-
-(use-package goggles
-  :ensure t
-  :hook ((prog-mode text-mode) . goggles-mode)
-  :config
-  (setq-default goggles-pulse t))
-
-(add-hook 'emacs-startup-hook #'which-key-mode)
-
-;; Text Editing
-(setq-default indent-tabs-mode nil
-              tab-width 2
-              tab-stop-list (number-sequence 2 100 2)
-              c-basic-offset 2)
-
-(keymap-global-set "C-c r" 'replace-regexp)
-
-(cl-labels
-    ((vi-open-line-above ()
-       "Open line above the current line."
-       (interactive)
-       (unless (bolp) (beginning-of-line))
-       (newline)
-       (forward-line -1)
-       (indent-according-to-mode))
-     (vi-open-line-below ()
-       "Open line below the current line."
-       (interactive)
-       (unless (eolp) (end-of-line))
-       (newline-and-indent)))
-  (define-key (current-global-map) (kbd "C-c o") #'vi-open-line-above)
-  (define-key (current-global-map) (kbd "C-c O") #'vi-open-line-below)
-  (which-key-add-key-based-replacements "C-c o" "open-line-above")
-  (which-key-add-key-based-replacements "C-c O" "open-line-below"))
-
-(use-package move-text
-  :ensure t
-  :config
-  (keymap-global-set "M-p" 'move-text-up)
-  (keymap-global-set "M-n" 'move-text-down)
-  (defun indent-region-advice (&rest ignored)
-    (let ((deactivate deactivate-mark))
-      (if (region-active-p)
-          (indent-region (region-beginning) (region-end))
-        (indent-region (line-beginning-position) (line-end-position)))
-      (setq deactivate-mark deactivate)))
-
-  (advice-add 'move-text-up :after 'indent-region-advice)
-  (advice-add 'move-text-down :after 'indent-region-advice))
-
-(progn
-  (defun smart-beginning-of-line ()
-    "Move the cursor to the beginning of text on the line."
-    (interactive)
-    (let ((initial-point (point)))
-      (back-to-indentation)
-      (when (eq initial-point (point))
-        (move-beginning-of-line 1))))
-  (defun setup-prog-mode-c-a ()
-    (local-set-key (kbd "C-a") 'smart-beginning-of-line))
-  (add-hook 'prog-mode-hook 'setup-prog-mode-c-a)
-  (add-hook 'conf-mode-hook 'setup-prog-mode-c-a))
-
-(progn
-  (defun prog-nuke-trailing-whitespace ()
-    "Removes trailing whitespace at the end of the line."
-    (when (or (derived-mode-p 'prog-mode) (derived-mode-p 'conf-mode))
-      (delete-trailing-whitespace)))
-  (add-hook 'before-save-hook 'prog-nuke-trailing-whitespace))
-
-(use-package smartparens
-  :ensure t
-  :hook (prog-mode text-mode markdown-mode)
-  :config
-  (require 'smartparens-config)
-  (sp-use-paredit-bindings))
-
-(use-package undo-tree
-  :ensure t
-  :init
-  (global-undo-tree-mode 1)
-  :config
-  (setq undo-tree-auto-save-history t
-        undo-tree-history-directory-alist '(("." . "~/.emacs.d/.cache"))))
-
-(use-package gptel
-  :ensure t
-  :config
-  (setq
-   gptel-model 'qwen2.5-coder:7b-instruct-q4_K_M
-   gptel-backend (gptel-make-ollama "Ollama"
-                                    :host "localhost:11434"
-                                    :stream t
-                                    :models '(qwen2.5-coder:7b-instruct-q4_K_M)))
-  (keymap-global-set "C-c g" 'gptel-menu)
-  (which-key-add-key-based-replacements "C-c g" "gptel"))
-
-(use-package delsel
-    :hook (after-init . delete-selection-mode))
-
-(use-package accent
-  :ensure t
-  :bind* (("C-'" . accent-menu))
-  :config
-  (setq accent-diacritics '((a (á ã â à)) ; só para Português
-                            (e (é ê))
-                            (i (í))
-                            (o (ó õ ô))
-                            (u (ú))
-                            (c (ç))
-                            (A (Á Ã Â À))
-                            (E (É Ê))
-                            (I (Í))
-                            (O (Ó Õ Ô))
-                            (U (Ú)))))
-
-;; Emacsing
-(setq scroll-margin 10 ; Doesn't work with smooth-scrolling
-      scroll-conservatively 100
-      scroll-step 1)
-
-(setopt use-short-answers t)
-
-(use-package dired
-  :commands (dired)
-  :hook
-  ((dired-mode . dired-hide-details-mode)
-   (dired-mode . hl-line-mode))
-  :config
-  (setq dired-recursive-copies 'always
-        dired-recursive-deletes 'always
-        ; delete-by-moving-to-trash t ; FIXME: Currently Broken, need to find why
-        dired-dwim-target t
-        dired-listing-switches "-lah"))
-
-(use-package dired-subtree
-  :ensure t
-  :after dired
-  :bind
-  (:map dired-mode-map
-        ("TAB" . dired-subtree-toggle)
-        ("<backtab>" . dired-subtree-remove))
-  :config
-  (setq dired-subtree-use-backgrounds nil))
-
-(add-hook 'emacs-startup-hook #'save-place-mode)
-
-(progn
-  (dolist (spec
-           '((eshell-prompt-user-face        font-lock-keyword-face   "Face for the username in the eshell prompt.")
-             (eshell-prompt-venv-face        font-lock-string-face    "Face for the virtualenv name in the eshell prompt.")
-             (eshell-prompt-dir-face         dired-directory          "Face for the directory path in the eshell prompt.")
-             (eshell-prompt-git-face         magit-tag                "Face for the git branch in the eshell prompt.")
-             (eshell-prompt-git-dirty-face   eshell-prompt-git-face   "Face for the git dirty status in the eshell prompt.")
-             (eshell-prompt-symbol-face      font-lock-builtin-face   "Face for the prompt symbol in the eshell prompt.")))
-    (cl-destructuring-bind (name inherit doc) spec
-      (defface name
-        `((t (:inherit ,inherit)))
-        doc
-        :group 'eshell-prompt)))
-
-  (defun eshell-abbreviate-dir (dir)
-    "Abbreviate directory to show only the first and the last two components."
-    (let* ((abbrev (abbreviate-file-name dir))
-           (components (split-string abbrev "/" t))
-           (num-components (length components)))
-      (if (>= num-components 4)
-          (concat (car components) "/.../"
-                  (mapconcat #'identity (last components 2) "/"))
-        abbrev)))
-
-  (defun eshell-prompt-git-branch ()
-    "Return the current git branch or short commit hash, if available."
-    (when (and (executable-find "git")
-               (locate-dominating-file default-directory ".git"))
-      (with-temp-buffer
-        (let ((ret (call-process "git" nil t nil "symbolic-ref" "--short" "HEAD")))
-          (if (zerop ret)
-              (string-trim (buffer-string))
-            (when (zerop (call-process "git" nil t nil "rev-parse" "--short" "HEAD"))
-              (string-trim (buffer-string))))))))
-
-  (defun eshell-prompt-git-dirty ()
-    "Return a dirty flag (✗ if dirty, ✓ if clean) for the git repository."
-    (when (eshell-prompt-git-branch)
-      (with-temp-buffer
-        (call-process "git" nil t nil "status" "--porcelain")
-        (if (> (buffer-size) 0) "✗" "✓"))))
-
-  (defun eshell-prompt ()
-    "Custom eshell prompt."
-    (let* ((user (propertize (user-login-name) 'face 'eshell-prompt-user-face))
-           (venv (when-let ((venv (getenv "VIRTUAL_ENV")))
-                   (concat (propertize "(" 'face 'eshell-prompt-venv-face)
-                           (propertize (file-name-nondirectory venv) 'face 'eshell-prompt-venv-face)
-                           (propertize ")" 'face 'eshell-prompt-venv-face))))
-           (path (propertize (eshell-abbreviate-dir (eshell/pwd)) 'face 'eshell-prompt-dir-face))
-           (git-branch (eshell-prompt-git-branch))
-           (git-info (when git-branch
-                       (concat " " (propertize "on" 'face 'font-lock-number-face) " "
-                               (propertize git-branch 'face 'eshell-prompt-git-face)
-                               (propertize (eshell-prompt-git-dirty) 'face 'eshell-prompt-git-dirty-face))))
-           (prompt (concat user " " (propertize "in" 'face 'font-lock-number-face) " "
-                           (if venv (concat venv " ") "")
-                           path git-info "\n"
-                           (propertize "λ" 'face 'eshell-prompt-symbol-face) " ")))
-      prompt))
-
-  (setq eshell-prompt-function 'eshell-prompt
-        eshell-prompt-regexp "^[^λ\n]*λ "))
-
-(use-package disproject
-  :ensure t
-  :after project
-  :bind (:map ctl-x-map
-              ("p" . disproject-dispatch)))
-
-(use-package ibuffer-project
-  :ensure t
-  :after project
-  :config
-  (add-hook
-   'ibuffer-hook
-   (lambda ()
-     (setq ibuffer-filter-groups (ibuffer-project-generate-filter-groups))
-     (unless (eq ibuffer-sorting-mode 'project-file-relative)
-       (ibuffer-do-sort-by-project-file-relative))))
-  (keymap-global-set "C-x C-b" 'ibuffer))
-
-(progn
-  (add-hook 'emacs-startup-hook #'recentf-mode)
-  (keymap-global-set "C-x C-r" 'recentf-open)
-  (which-key-add-key-based-replacements "C-x C-r" "Recent Files")
-  (put 'compile-command 'safe-local-variable #'stringp))
-
-(use-package savehist
-  :hook (after-init . savehist-mode))
-
-(add-to-list 'Info-directory-list "/Users/venomade/Documents/Info/")
-
-;; Org Mode
-(setq org-src-window-setup 'current-window
-      org-confirm-babel-evaluate nil
-      org-hide-emphasis-markers t)
-
-(font-lock-add-keywords 'org-mode
-                        '(("^ *\\([-]\\) "
-                           (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))
-
-; (use-package org-bullets
-;   :ensure t
-;   :config
-;   (setq org-bullets-bullet-list
-;       '("◉" "○" "◎" "◈" "◆" "▶"))
-;   (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))
-
-(use-package org-superstar
-  :ensure t
-  :hook (org-mode . org-superstar-mode)
-  :custom
-  (org-superstar-remove-leading-stars nil)
-  (org-superstar-headline-bullets-list
-   '("◉" "○" "◎" "◈" "◆" "▶")))
-
-(let* ((variable-tuple
-        (cond ((x-list-fonts "Google Sans")     '(:font "Google Sans"))
-              ((x-family-fonts "Sans Serif")    '(:family "Sans Serif"))
-              (nil (warn "Cannot find a Sans Serif Font.  Install Google Sans."))))
-       (base-font-color     (face-foreground 'default nil 'default))
-       (headline           `(:inherit default :weight bold :foreground ,base-font-color)))
-
-  (custom-theme-set-faces
-   'user
-   `(org-level-8 ((t (,@headline ,@variable-tuple))))
-   `(org-level-7 ((t (,@headline ,@variable-tuple))))
-   `(org-level-6 ((t (,@headline ,@variable-tuple))))
-   `(org-level-5 ((t (,@headline ,@variable-tuple))))
-   `(org-level-4 ((t (,@headline ,@variable-tuple :height 1.1))))
-   `(org-level-3 ((t (,@headline ,@variable-tuple :height 1.2))))
-   `(org-level-2 ((t (,@headline ,@variable-tuple :height 1.3))))
-   `(org-level-1 ((t (,@headline ,@variable-tuple :height 1.4))))
-   `(org-document-title ((t (,@headline ,@variable-tuple :height 1.6 :underline nil))))))
-
-(add-hook 'org-mode-hook 'variable-pitch-mode)
-(add-hook 'org-mode-hook 'visual-line-mode)
-(add-hook 'org-mode-hook (lambda () (display-line-numbers-mode -1)))
-
-(custom-theme-set-faces
- 'user
- '(org-block ((t (:inherit fixed-pitch))))
- '(org-code ((t (:inherit (shadow fixed-pitch)))))
- '(org-document-info-keyword ((t (:inherit (shadow fixed-pitch)))))
- '(org-indent ((t (:inherit (org-hide fixed-pitch)))))
- '(org-link ((t (:foreground "royal blue" :underline t))))
- '(org-meta-line ((t (:inherit (font-lock-comment-face fixed-pitch)))))
- '(org-property-value ((t (:inherit fixed-pitch))) t)
- '(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
- '(org-table ((t (:inherit fixed-pitch))))
- '(org-tag ((t (:inherit (shadow fixed-pitch) :weight bold :height 0.8))))
- '(org-verbatim ((t (:inherit (shadow fixed-pitch))))))
-
-(require 'org-tempo)
-
-(use-package pdf-tools
-  :ensure t
-  :config
-  (pdf-tools-install)
-  (add-hook 'pdf-view-mode-hook (lambda () (display-line-numbers-mode -1))))
-
-; Open Org Mode links in current window
-(setq org-link-frame-setup
-      '((file . find-file)
-        (wl . wl-other-frame)
-        (vm . vm-visit-folder-other-frame)
-        (gnus . gnus)))
-
-(use-package denote
-  :ensure t
-  :hook (dired-mode . denote-dired-mode)
-  :bind
-  (("C-c n n" . denote)
-   ("C-c n r" . denote-rename-file)
-   ("C-c n l f" . denote-link)
-   ("C-c n b" . denote-backlinks)
-   ("C-c n g" . denote-grep))
-  :config
-  (setq denote-directory (expand-file-name "~/Documents/Denotes/")
-        denote-known-keywords '("politics" "history" "united kingdom"))
-  (denote-rename-buffer-mode 1))
-
-(use-package consult-denote
-  :ensure t
-  :bind
-  (("C-c n f" . consult-denote-find)
-   ("C-c n g" . consult-denote-grep))
-  :config
-  (consult-denote-mode 1))
-
-; TODO: Denote Explore https://lucidmanager.org/productivity/denote-explore/
-
-(use-package denote-menu
-  :ensure t
-  :bind
-  (("C-c n d" . list-denotes))
-  :config
-  (add-hook 'denote-menu-mode-hook (lambda () (display-line-numbers-mode -1))))
-
-(use-package denote-org
-  :ensure t
-  :bind
-  (("C-c n l h" . denote-org-link-to-heading)))
-
-;; Completion
-(use-package orderless
-  :ensure t
-  :config
-  (setq completion-styles '(orderless basic)
-        completion-category-defaults nil
-        completion-category-overrides '((file (styles . (partial-completion))))))
-
-(use-package yasnippet
-  :ensure t
-  :hook (prog-mode . yas-minor-mode)
-  :bind
-  (("C-c y n" . yas-new-snippet)
-   ("C-c y v" . yas-visit-snippet-file)
-   ("C-c y i" . yas-insert-snippet))
-  :config
-  (yas-reload-all))
-
-(use-package yasnippet-snippets
-  :after yasnippet
-  :ensure t)
-
-(use-package cape
-  :ensure t)
-
-(defun eglot-capf-with-yasnippet ()
-  (setq-local completion-at-point-functions
-              (list
-           (cape-capf-super
-        #'eglot-completion-at-point
-        #'yasnippet-capf))))
-(with-eval-after-load 'eglot
-  (add-hook 'eglot-managed-mode-hook #'eglot-capf-with-yasnippet))
-
-(use-package corfu
-  :ensure t
-  :hook (after-init . global-corfu-mode)
-  :bind (:map corfu-map ("<tab>" . corfu-complete)
-              ("RET" . nil))
-  :config
-  (setq corfu-cycle t
-        corfu-auto t
-        corfu-auto-delay 0.2
-        corfu-preview-current nil
-        corfu-quit-at-boundary t
-        corfu-quit-no-match t
-        corfu-scroll-margin 5
-        corfu-tab-always-indent 'complete
-        corfu-preview-current nil
-        corfu-min-width 20
-        corfu-popupinfo-delay '(1.25 . 0.5))
-  (corfu-popupinfo-mode 1)
-  (with-eval-after-load 'savehist
-    (corfu-history-mode 1)
-    (add-to-list 'savehist-additional-variables 'corfu-history)))
-
-(use-package nerd-icons-corfu
-  :ensure t
-  :after nerd-icons corfu
-  :config
-  (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))
-
-(use-package vertico
-  :ensure t
-  :hook (after-init . vertico-mode)
-  :bind (:map vertico-map
-              ("DEL" . vertico-directory-delete-char)))
-
-(use-package consult
-  :ensure t
-  :bind (("M-g g" . consult-goto-line)
-         ("M-g M-g" . consult-goto-line)
-         ("C-c s" . consult-line))
-
-  :config
-  (which-key-add-key-based-replacements "C-c s" "search-lines"))
-
-(use-package affe
-  :ensure t
-  :after consult
-  :bind (("C-c f f" . affe-find)
-         ("C-c f g" . affe-grep))
-  :init
-  (which-key-add-key-based-replacements "C-c f" "find-file")
-  (which-key-add-key-based-replacements "C-c f f" "find-fuzzy")
-  (which-key-add-key-based-replacements "C-c f g" "find-greppy"))
-
-(use-package marginalia
-  :ensure t
-  :after vertico
-  :config (marginalia-mode 1))
-
-(use-package nerd-icons-completion
-  :ensure t
-  :after vertico marginalia
-  :hook
-  (marginalia-mode . nerd-icons-completion-marginalia-setup)
-  (after-init . nerd-icons-completion-mode))
-
-;; Version Control
-(setq vc-follow-symlinks t)
-
-(use-package magit
-  :ensure t
-  :after nerd-icons
-  :custom
-  (magit-format-file-function #'magit-format-file-nerd-icons))
-
-(use-package magit-todos
-  :ensure t
-  :after magit hl-todo
-  :config
-  (add-hook 'magit-log-wash-summary-hook
-            #'hl-todo-search-and-highlight t)
-  (add-hook 'magit-revision-wash-message-hook
-            #'hl-todo-search-and-highlight t)
-  (magit-todos-mode 1))
-
-;; Programming
-(use-package eglot
-  :ensure t
-  :after cape
-  :config
-  (setq eglot-report-progress nil)
-  (advice-add 'eglot-completion-at-point :around #'cape-wrap-buster)
-  (add-hook 'c-mode-hook #'eglot-ensure))
-
-(use-package eglot-booster
-  :vc (:url "https://github.com/jdtsmith/eglot-booster.git")
-  :ensure t
-	:after eglot
-	:config
-  (setq eglot-booster-io-only t)
-  (eglot-booster-mode))
-
-(use-package consult-eglot
-  :ensure t
-  :after eglot)
-
-(progn
-  (use-package eldoc-box
-    :ensure t)
-
-  (defun markdown-follow-help-or-link-at-point-advice (orig-fun &rest args)
-    "Prefer to use the help-echo property as `browse-url' target."
-    (let* ((event-win (posn-window (event-start last-input-event)))
-           (help-echo (with-selected-frame (window-frame event-win)
-                        (with-current-buffer (window-buffer event-win)
-                          (get-text-property (point) 'help-echo))))
-           (help-is-url (url-type (url-generic-parse-url help-echo))))
-      (message "if %s (browse-url %S)" help-is-url help-echo)
-      (if help-is-url
-          (browse-url help-echo)
-        (apply orig-fun args))))
-
-  (advice-add 'markdown-follow-link-at-point :around #'markdown-follow-help-or-link-at-point-advice))
-
-(transient-define-prefix eglot-transient ()
-  "Transient menu for Eglot."
-  [["Server"
-    ("c" "Reconnect" eglot-reconnect)
-    ("q" "Shutdown" eglot-shutdown)
-    ("I" "Server Info" eglot-show-workspace-configuration)]
-   ["Navigation"
-    ("g" "Go to Definition" xref-find-definitions)
-    ("d" "Describe Thing at Point" eldoc-box-help-at-point)
-    ("D" "Go to Declaration" eglot-find-declaration)
-    ("i" "Go to Implementation" eglot-find-implementation)
-    ("f" "Find References" xref-find-references)
-    ("t" "Type Definition" eglot-find-typeDefinition)
-    ("s" "Search Symbols"
-     (lambda ()
-       (interactive)
-       (if (eq major-mode 'java-mode)
-           (call-interactively 'consult-eglot-jdt-symbols)
-         (call-interactively 'consult-eglot-symbols))))]
-   ["Code Actions"
-    ("a" "Code Actions" eglot-code-actions)
-    ("q" "Quick Fix" eglot-code-action-quickfix)
-    ("=" "Format Buffer" eglot-format-buffer)
-    ("o" "Organize Imports" eglot-code-action-organize-imports)
-    ("r" "Rename Symbol" eglot-rename)]
-   ["Diagnostics"
-    ("l" "List Diagnostics" flycheck-list-errors)
-    ("L" "Project Diagnostics" flymake-show-project-diagnostics)]]
-  (interactive)
-   (transient-setup 'eglot-transient))
-
-(define-key eglot-mode-map (kbd "C-c l") #'eglot-transient)
-
-(use-package flycheck
-  :ensure t
-  :config
-  (global-flycheck-mode 1))
-
-(use-package flycheck-eglot
-  :ensure t
-  :after (flycheck eglot)
-  :custom (flycheck-eglot-exclusive nil)
-  :config
-  (global-flycheck-eglot-mode 1))
-
-(setq-default flycheck-disabled-checkers '(c/c++-clang))
-
-(progn
-  (setq compilation-scroll-output t)
-  (keymap-global-set "C-c m c" 'compile)
-  (keymap-global-set "C-c m r" 'recompile)
-  (which-key-add-key-based-replacements "C-c m" "make"))
-
-(require 'ansi-color)
-(defun colorize-compilation-buffer ()
-  (ansi-color-apply-on-region compilation-filter-start (point)))
-(add-hook 'compilation-filter-hook 'colorize-compilation-buffer)
-
-(global-prettify-symbols-mode 1)
-
-;; Languages
-
-; (load-file
-;  (expand-file-name
-;   "lang/java.el"
-;   user-emacs-directory))
-
-(load-file
- (expand-file-name
-  "lang/lua.el"
-  user-emacs-directory))
-
-; (load-file
-;  (expand-file-name
-;   "lang/lisp.el"
-;   user-emacs-directory))
-
-; (load-file
-;  (expand-file-name
-;   "lang/clojure.el"
-;   user-emacs-directory))
-
-;; Font
-; Putting at the end to test if it fixes this:
-; https://github.com/d12frosted/homebrew-emacs-plus/issues/898
-
-(let* ((fontconf '((fixed-font    . "Google Sans Code")
-                   (variable-font . "Google Sans")
-                   (size          . 12)))
-       (fixed-font    (cdr (assoc 'fixed-font fontconf)))
-       (variable-font (cdr (assoc 'variable-font fontconf)))
-       (pt-size       (cdr (assoc 'size fontconf)))
-       (height        (* pt-size 10))
-       (frame-font    (concat fixed-font "-" (number-to-string pt-size))))
-  ; Fixed-width faces
-  (dolist (face '(default fixed-pitch))
-    (set-face-attribute face nil
-                        :font fixed-font
-                        :height height
-                        :weight 'regular))
-  ; Variable-pitch face
-  (set-face-attribute 'variable-pitch nil
-                      :font variable-font
-                      :height height
-                      :weight 'regular)
-
-  ; Syntax styling
-  (set-face-attribute 'font-lock-comment-face nil :slant 'italic)
-  (set-face-attribute 'font-lock-keyword-face nil :slant 'italic)
-
-  ; Frame font
-  (add-to-list 'default-frame-alist `(font . ,frame-font)))
diff --git a/.emacs.d/lang/clojure.el b/.emacs.d/lang/clojure.el
deleted file mode 100644
index 804fcc7..0000000
--- a/.emacs.d/lang/clojure.el
+++ /dev/null
@@ -1,26 +0,0 @@
-(use-package cider
-  :ensure t)
-
-(add-hook 'cider-repl-mode-hook (lambda () (display-line-numbers-mode -1)))
-(add-hook 'cider-repl-mode-hook #'smartparens-mode)
-(add-hook 'clojure-mode #'eglot-ensure t)
-
-(setq-default cider-eldoc-display-for-symbol-at-point nil)
-
-(defun mu-cider-disable-eldoc ()
-  "Let LSP handle ElDoc instead of CIDER."
-  (remove-hook 'eldoc-documentation-functions #'cider-eldoc t))
-
-(add-hook 'cider-mode-hook #'mu-cider-disable-eldoc)
-
-(defun mu-cider-disable-eldoc ()
-  "Let LSP handle ElDoc instead of CIDER."
-  (remove-hook 'eldoc-documentation-functions #'cider-eldoc t))
-
-(add-hook 'cider-mode-hook #'mu-cider-disable-eldoc)
-
-(defun mu-cider-disable-completion ()
-  "Let LSP handle completion instead of CIDER."
-  (remove-hook 'completion-at-point-functions #'cider-complete-at-point t))
-
-(add-hook 'cider-mode-hook #'mu-cider-disable-completion)
diff --git a/.emacs.d/lang/java.el b/.emacs.d/lang/java.el
deleted file mode 100644
index 5d41a0c..0000000
--- a/.emacs.d/lang/java.el
+++ /dev/null
@@ -1,38 +0,0 @@
-;; Emacs Configuration for Java
-
-; JDT URI fix for JDTLS from https://www.reddit.com/r/emacs/comments/1ibkh2h/comment/m9slw00/
-(with-eval-after-load 'eglot
-  (add-to-list 'eglot-server-programs
-               `((java-mode java-ts-mode) .
-                 ("jdtls"
-                  :initializationOptions
-                  (:extendedClientCapabilities (:classFileContentsSupport t))))))
-
-(defun jdt-file-name-handler (operation &rest args)
-  "Support Eclipse jdtls `jdt://' uri scheme."
-  (let* ((uri (car args))
-         (cache-dir "/tmp/.eglot")
-         (source-file
-          (expand-file-name
-           (file-name-concat
-            cache-dir
-            (save-match-data
-              (when (string-match "jdt://contents/\\(.*?\\)/\\(.*\\)\.class\\?" uri)
-                (format "%s.java" (replace-regexp-in-string "/" "." (match-string 2 uri) t t))))))))
-    (unless (file-readable-p source-file)
-      (let ((content (jsonrpc-request (eglot-current-server) :java/classFileContents (list :uri uri)))
-            (metadata-file (format "%s.%s.metadata"
-                                   (file-name-directory source-file)
-                                   (file-name-base source-file))))
-        (unless (file-directory-p cache-dir) (make-directory cache-dir t))
-        (with-temp-file source-file (insert content))
-        (with-temp-file metadata-file (insert uri))))
-    source-file))
-(add-to-list 'file-name-handler-alist '("\\`jdt://" . jdt-file-name-handler))
-
-(add-hook 'java-mode-hook #'eglot-ensure t)
-
-(load-file
-   (expand-file-name
-    "pkg/consult-jdt.el"
-    user-emacs-directory))
diff --git a/.emacs.d/lang/lisp.el b/.emacs.d/lang/lisp.el
deleted file mode 100644
index b0aebd3..0000000
--- a/.emacs.d/lang/lisp.el
+++ /dev/null
@@ -1,9 +0,0 @@
-(use-package sly
-  :ensure t
-  :config
-  (setq inferior-lisp-program "ros -L sbcl -Q run"
-        browse-url-browser-function '(("hyperspec" . eww-browse-url) ("." . browse-url-default-browser)))
-  (add-hook 'sly-mrepl-mode-hook 'smartparens-mode)
-  (add-hook 'lisp-mode-hook
-            (lambda ()
-              (define-key lisp-mode-map (kbd "C-c d") 'sly-documentation))))
diff --git a/.emacs.d/lang/lua.el b/.emacs.d/lang/lua.el
deleted file mode 100644
index dfc1b19..0000000
--- a/.emacs.d/lang/lua.el
+++ /dev/null
@@ -1,11 +0,0 @@
-;; Emacs Configuration for Lua
-
-(use-package lua-mode
-  :ensure t
-  :config
-  (add-hook 'lua-mode-hook #'eglot-ensure t)
-  (setq lua-indent-level 2
-        lua-documentation-url "https://www.lua.org/manual/5.4/manual.html"))
-
-; TODO Try fix this only for lua-mode as that is where the bug is
-(setq eglot-ignored-server-capabilities '(:documentOnTypeFormattingProvider))
diff --git a/.emacs.d/pkg/consult-jdt.el b/.emacs.d/pkg/consult-jdt.el
deleted file mode 100644
index 6959f72..0000000
--- a/.emacs.d/pkg/consult-jdt.el
+++ /dev/null
@@ -1,105 +0,0 @@
-(require 'consult)
-(require 'eglot)
-(require 'jsonrpc)
-(require 'subr-x)
-
-(defvar eglot-jdt--symbolkind-map
-  '((1 . "File") (2 . "Module") (3 . "Namespace") (4 . "Package")
-    (5 . "Class") (6 . "Method") (7 . "Property") (8 . "Field")
-    (9 . "Constructor") (10 . "Enum") (11 . "Interface") (12 . "Function")
-    (13 . "Variable") (14 . "Constant") (15 . "String") (16 . "Number")
-    (17 . "Boolean") (18 . "Array") (19 . "Object") (20 . "Key")
-    (21 . "Null") (22 . "EnumMember") (23 . "Struct") (24 . "Event")
-    (25 . "Operator") (26 . "TypeParameter"))
-  "Mapping of LSP SymbolKind integers to human-readable names.")
-
-(defun eglot-jdt--get (obj key)
-  "Robustly retrieve KEY from LSP OBJ (plist/alist)."
-  (let* ((kname (substring (symbol-name key) 1))
-         (sym-key (intern kname)))
-    (or (plist-get obj key)
-        (alist-get key obj)
-        (alist-get sym-key obj)
-        (alist-get kname obj))))
-
-(defun eglot-jdt--fetch-symbols (&optional query)
-  "Synchronously fetch workspace symbols for QUERY from Eglot/JDTLS."
-  (unless (eglot-managed-p)
-    (user-error "Eglot is not managing this buffer"))
-  (let* ((server (eglot-current-server))
-         (symbols (jsonrpc-request server :workspace/symbol `(:query ,(or query "")))))
-    (when (vectorp symbols)
-      (setq symbols (append symbols nil)))
-    symbols))
-
-;; Helper to pad strings
-(defun eglot-jdt--pad-right (str width)
-  "Pad STR on the right with spaces to WIDTH."
-  (let ((len (length str)))
-    (if (< len width)
-        (concat str (make-string (- width len) ?\s))
-      str)))
-
-;; Main formatting function with faces
-(defun eglot-jdt--format-symbols-table (symbols)
-  "Format SYMBOLS into a table with faces for Consult, showing Kind first."
-  (let* ((rows (mapcar (lambda (sym)
-                         (let ((kind-num (eglot-jdt--get sym :kind)))
-                           (list (or (alist-get kind-num eglot-jdt--symbolkind-map)
-                                     (format "Kind %s" kind-num))
-                                 (eglot-jdt--get sym :name)
-                                 (or (eglot-jdt--get sym :containerName) "<no-package>")
-                                 (let ((location (eglot-jdt--get sym :location)))
-                                   (eglot-jdt--get location :uri)))))
-                       symbols))
-         ;; compute max width for each column
-         (max-kind (apply #'max (mapcar (lambda (r) (length (nth 0 r))) rows)))
-         (max-name (apply #'max (mapcar (lambda (r) (length (nth 1 r))) rows)))
-         (max-package (apply #'max (mapcar (lambda (r) (length (nth 2 r))) rows)))
-         ;; faces
-         (divider-face 'shadow)       ;; low opacity / dim for dividers
-         (kind-face 'font-lock-function-name-face)
-         (name-face 'font-lock-variable-name-face)
-         (package-face 'font-lock-keyword-face))
-    ;; create table rows with faces
-    (mapcar (lambda (r)
-              (let* ((kind (propertize (eglot-jdt--pad-right (nth 0 r) max-kind) 'face kind-face))
-                     (name (propertize (eglot-jdt--pad-right (nth 1 r) max-name) 'face name-face))
-                     (package (propertize (eglot-jdt--pad-right (nth 2 r) max-package) 'face package-face))
-                     (divider (propertize "|" 'face divider-face)))
-                (cons (format "%s %s %s %s %s"
-                              kind divider name divider package)
-                      (nth 3 r))))
-            rows)))
-
-(defun eglot-jdt--open-uri (uri)
-  "Open a URI returned by the language server, handling jdt:// URIs."
-  (if (and uri (string-prefix-p "jdt://" uri))
-      (find-file (expand-file-name uri))  ; your jdt-file-name-handler takes care of this
-    (find-file (eglot-uri-to-path uri))))
-
-(defun eglot-jdt--sort-by-query (symbols query)
-  "Sort SYMBOLS by how closely their names match QUERY."
-  (let ((query (or query "")))
-    (sort symbols
-          (lambda (a b)
-            (< (string-distance (eglot-jdt--get a :name) query)
-               (string-distance (eglot-jdt--get b :name) query))))))
-
-(defun consult-eglot-jdt-symbols (&optional query)
-  "Consult interface for Java workspace symbols via Eglot/JDTLS.
-Sorts results based on closeness to QUERY."
-  (interactive "sSymbol query (blank for all): ")
-  (let* ((symbols (eglot-jdt--fetch-symbols query))
-         (sorted-symbols (eglot-jdt--sort-by-query symbols query))
-         (candidates (eglot-jdt--format-symbols-table sorted-symbols))
-         (selection (consult--read
-                     (mapcar #'car candidates)
-                     :prompt "Symbol: "
-                     :sort nil
-                     :require-match t
-                     :category 'symbol)))
-    (when selection
-      (let ((uri (cdr (assoc selection candidates))))
-        (when uri
-          (eglot-jdt--open-uri uri))))))
diff --git a/.emacs.d/pkg/flymake-cppcheck.el b/.emacs.d/pkg/flymake-cppcheck.el
deleted file mode 100644
index 92a78de..0000000
--- a/.emacs.d/pkg/flymake-cppcheck.el
+++ /dev/null
@@ -1,84 +0,0 @@
-;;; flymake-cppcheck.el --- Flymake work with Cppcheck for C/C++
-
-;; Copyright 2014 Akiha Senda
-
-;; Author: Akiha Senda <senda.akiha@gmail.com>
-;; URL: https://github.com/senda-akiha/flymake-cppcheck/
-;; Created: 13 January 2014
-;; Version: 1.0.0
-;; Keywords: flymake, cppcheck, C, C++
-;; Package-Requires: ((flymake-easy "0.9"))
-
-;; This file is not part of GNU Emacs.
-;; However, it is distributed under the same license.
-
-;; GNU Emacs is free software; you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 3, or (at your option)
-;; any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
-
-;;; Commentary:
-
-;; Please check the GitHub
-;; (https://github.com/senda-akiha/flymake-cppcheck/)
-;; for more information.
-
-;;; Code:
-
-(require 'flymake-easy)
-
-(defconst flymake-cppcheck-err-line-patterns
-  '(("\\(.*\\)::\\([[:digit:]]+\\)::\\(.*\\)\r?\n"
-     1 2 nil 3)))
-
-(defconst flymake-cppcheck-template "{file}::{line}::{message}"
-  "Output format template.")
-
-(defcustom flymake-cppcheck-enable "error"
-  "By default only error messages are shown.
-Through the --enable command more checks can be enabled."
-  :type 'string
-  :group 'flymake-cppcheck)
-
-(defcustom flymake-cppcheck-command (or (executable-find "cppcheck") "")
-  "The name of the cppcheck executable."
-  :type 'string
-  :group 'flymake-cppcheck)
-
-(defcustom flymake-cppcheck-location 'inplace
-  "Where to create the temporary copy: one of 'tempdir or 'inplace (default)."
-  :type `(choice
-          (const :tag "In place" inplace)
-          (const :tag "Temporary location" tempdir))
-  :group 'flymake-cppcheck)
-
-(defun flymake-cppcheck-build-command-line (filename)
-  "Construct a command that flymake can use to check C/C++ source."
-  (list flymake-cppcheck-command "--quiet"
-        (concat "--template=" flymake-cppcheck-template)
-        (if (string-match "error" flymake-cppcheck-enable)
-            "" (concat "--enable=" flymake-cppcheck-enable))
-        filename))
-
-;;;###autoload
-(defun flymake-cppcheck-load ()
-  "Configure flymake mode to check the current buffer's C/C++ source."
-  (interactive)
-  (flymake-easy-load 'flymake-cppcheck-build-command-line
-                     flymake-cppcheck-err-line-patterns
-                     flymake-cppcheck-location
-                     "cpp"))
-
-(provide 'flymake-cppcheck)
-
-;;; flymake-cppcheck.el ends here
diff --git a/.kxkbrc b/.kxkbrc
deleted file mode 100644
index 18ee6ab..0000000
--- a/.kxkbrc
+++ /dev/null
@@ -1,10 +0,0 @@
-[$Version]
-update_info=kxkb.upd:remove-empty-lists,kxkb.upd:add-back-resetoptions,kxkb_variants.upd:split-variants
-
-[Layout]
-DisplayNames=,
-LayoutList=us_colemak_pt_mac
-Use=true
-VariantList=basic
-Options=ctrl:nocaps,lv3:alt_switch
-ResetOldOptions=true
diff --git a/.local/bin/battery-screen b/.local/bin/battery-screen
new file mode 100755
index 0000000..26ac78a
--- /dev/null
+++ b/.local/bin/battery-screen
@@ -0,0 +1,70 @@
+#!/usr/bin/env lua
+
+local function read(path)
+  local f = io.open(path)
+  if not f then return nil end
+  local v = tonumber(f:read('*l'))
+  f:close()
+  return v
+end
+
+local function batterytext()
+  local base        = '/sys/class/power_supply/macsmc-battery/'
+
+  local energy_now  = read(base .. 'energy_now')
+  local energy_full = read(base .. 'energy_full')
+  local status_f    = io.open(base .. 'status')
+
+  if not energy_now or not energy_full or not status_f then
+    return { { full_text = 'bat ?' } }
+  end
+
+  local status = status_f:read('*l')
+  status_f:close()
+
+  local capacity = math.floor(energy_now / energy_full * 100 + 0.5)
+
+  local text_color = '#ffffff'
+  local battery_symbol = ' '
+
+  if capacity < 30 then
+    text_color = '#ed8796'
+    battery_symbol = '󰁼'
+  elseif capacity > 70 then
+    text_color = '#a6da95'
+    battery_symbol = '󰂁'
+  else
+    text_color = '#eed49f'
+    battery_symbol = '󰁾'
+  end
+
+  local symbol = ({
+    Charging    = '󱐋',
+    Discharging = battery_symbol,
+  })[status] or ' '
+
+  return string.format('%s %2d%%', symbol, capacity), text_color
+end
+
+function hexToRgb(hex)
+  hex = hex:gsub("#", "")
+
+  local r = tonumber(hex:sub(1, 2), 16)
+  local g = tonumber(hex:sub(3, 4), 16)
+  local b = tonumber(hex:sub(5, 6), 16)
+
+  return r, g, b
+end
+
+function printHexColor(text, hex)
+  local r, g, b = hexToRgb(hex)
+  local colorCode = string.format("\27[38;2;%d;%d;%dm", r, g, b)
+  local resetCode = "\27[0m"
+
+  print(colorCode .. text .. resetCode)
+end
+
+while true do
+  printHexColor(batterytext())
+  os.execute("sleep 1")   -- Wait for 1 second
+end
diff --git a/.local/bin/lock-screen b/.local/bin/lock-screen
new file mode 100755
index 0000000..4307c9a
--- /dev/null
+++ b/.local/bin/lock-screen
@@ -0,0 +1,13 @@
+#!/usr/bin/env bash
+
+if [[ $1 =~ ^[0-9]+$ ]]; then
+    SLEEP_DURATION=$1
+else
+    SLEEP_DURATION=10
+fi
+
+grim /tmp/lockscreen-0.png
+magick /tmp/lockscreen-0.png -scale 10% -blur 0x1 -resize 1000% /tmp/lockscreen.png
+swaylock -i /tmp/lockscreen.png &
+sleep $SLEEP_DURATION
+systemctl sleep
diff --git a/.local/bin/rofi-notes b/.local/bin/rofi-notes
new file mode 100755
index 0000000..876bc66
--- /dev/null
+++ b/.local/bin/rofi-notes
@@ -0,0 +1,101 @@
+#!/usr/bin/env lua
+
+local HOME   = os.getenv("HOME")
+local NOTES  = HOME .. "/Documents/Notes"
+local TERM   = "foot -a=floating_foot"
+local EDITOR = "nvim"
+
+local MODE   = arg[1] -- nil | "--delete" | "-d"
+
+local function rofi(prompt, lines)
+  local cmd = string.format(
+    'printf "%s" | rofi -dmenu -i -p "%s"',
+    table.concat(lines, "\n"),
+    prompt
+  )
+  local handle = io.popen(cmd)
+  local selection = handle:read("*a")
+  handle:close()
+  selection = selection:gsub("%s+$", "")
+  if selection == "" then return nil end
+  return selection
+end
+
+local function list_notes()
+  local display = {}
+  local lookup  = {}
+
+  local cmd     = string.format('find "%s" -type f', NOTES)
+  local pipe    = assert(io.popen(cmd, "r"))
+
+  for fullPath in pipe:lines() do
+    local relPath  = fullPath:gsub("^" .. NOTES .. "/", "")
+    local noteName = relPath:gsub("%.[^./]*$", "")
+
+    table.insert(display, noteName)
+    lookup[noteName] = fullPath
+  end
+
+  pipe:close()
+  return display, lookup
+end
+
+local function normalize_path(input)
+  input = input:gsub("^/", "")
+  if not input:match("%.md$") then
+    input = input .. ".md"
+  end
+  return NOTES .. "/" .. input
+end
+
+local function ensure_parent_dir(path)
+  local dir = path:match("(.+)/[^/]+$")
+  if dir then
+    os.execute(string.format('mkdir -p "%s"', dir))
+  end
+end
+
+local function open_in_nvim(path)
+  local cmd = string.format(
+    '%s -e %s "%s"',
+    TERM,
+    EDITOR,
+    path
+  )
+  os.execute(cmd)
+end
+
+local function delete_note(path, name)
+  local confirm = rofi("Delete " .. name .. "?", { "No", "Yes" })
+  if confirm == "Yes" then
+    os.execute(string.format('rm -- "%s"', path))
+  end
+end
+
+-- ---- main ----
+
+local notes, paths = list_notes()
+
+if MODE == "--delete" or MODE == "-d" then
+  local choice = rofi(" ", notes)
+  if not choice then os.exit(0) end
+
+  local path = paths[choice]
+  if path then
+    delete_note(path, choice)
+  end
+
+  os.exit(0)
+end
+
+-- default: open / create
+local choice = rofi(" ", notes)
+if not choice then os.exit(0) end
+
+local path = paths[choice]
+if not path then
+  path = normalize_path(choice)
+  ensure_parent_dir(path)
+end
+
+open_in_nvim(path)
diff --git a/.local/bin/rofi-powermenu b/.local/bin/rofi-powermenu
new file mode 100755
index 0000000..0ff3f9c
--- /dev/null
+++ b/.local/bin/rofi-powermenu
@@ -0,0 +1,49 @@
+#!/usr/bin/env lua
+
+local function rofi(prompt, lines)
+  local cmd = string.format(
+    'printf "%s" | rofi -dmenu -i -p "%s"',
+    table.concat(lines, "\n"),
+    prompt
+  )
+  local handle = io.popen(cmd)
+  local selection = handle:read("*a")
+  handle:close()
+  selection = selection:gsub("%s+$", "")
+  if selection == "" then return nil end
+  return selection
+end
+
+local function contains(tbl, val)
+  for _, v in pairs(tbl) do
+    if v == val then
+      return true
+    end
+  end
+  return false
+end
+
+-- TODO: Deduplicate This
+local options = {
+  "Log Out",
+  "Shutdown",
+  "Restart"
+}
+
+local option_pair = {
+  ["Log Out"] = "swaymsg exit",
+  ["Shutdown"] = "systemctl poweroff",
+  ["Restart"] = "systemctl reboot"
+}
+
+local choice = rofi("Action:", options)
+if (not choice) or (not contains(options,choice)) then os.exit() end
+
+if choice == "Log Out" then
+  io.popen(option_pair[choice])
+else
+  local confirm = rofi("Are you sure?:", {"Yes", "No"})
+  if confirm == "Yes" then
+    io.popen(option_pair[choice])
+  end
+end
diff --git a/.local/bin/rofi-ppd b/.local/bin/rofi-ppd
new file mode 100755
index 0000000..5a4f13b
--- /dev/null
+++ b/.local/bin/rofi-ppd
@@ -0,0 +1,48 @@
+#!/usr/bin/env lua
+
+local function trim(s)
+  return s:gsub("^%s+", ""):gsub("%s+$", "")
+end
+
+local function rofi(prompt, lines)
+  local cmd = string.format(
+    'printf "%s" | rofi -dmenu -i -p "%s"',
+    table.concat(lines, "\n"),
+    prompt
+  )
+  local handle = io.popen(cmd)
+  local selection = handle:read("*a")
+  handle:close()
+  selection = trim(selection or "")
+  if selection == "" then return nil end
+  return selection
+end
+
+local modes = {}
+
+local handle = io.popen('powerprofilesctl list')
+local profile_list = handle:read("*a")
+handle:close()
+
+local handle = io.popen('powerprofilesctl get')
+local current_profile = trim(handle:read("*a") or "")
+handle:close()
+
+for line in profile_list:gmatch("[^\r\n]+") do
+  line = trim(line)
+  local mode = line:match("^%*?%s*([%w%-_]+)%s*:$")
+  if mode then
+    if mode == current_profile then
+      table.insert(modes, "* " .. mode)
+    else
+      table.insert(modes, "  " .. mode)
+    end
+  end
+end
+
+local selected_profile = rofi('󰓅', modes)
+if not selected_profile then os.exit() end
+
+selected_profile = selected_profile:gsub("^%*%s*", ""):gsub("^%s+", "")
+
+io.popen('powerprofilesctl set ' .. selected_profile)
diff --git a/.local/bin/rofi-translate b/.local/bin/rofi-translate
new file mode 100755
index 0000000..f71557d
--- /dev/null
+++ b/.local/bin/rofi-translate
@@ -0,0 +1,60 @@
+#!/usr/bin/env lua
+
+local function rofi(prompt, lines)
+  local cmd = string.format(
+    'printf "%s" | rofi -dmenu -i -p "%s"',
+    table.concat(lines, "\n"),
+    prompt
+  )
+  local handle = io.popen(cmd)
+  local selection = handle:read("*a")
+  handle:close()
+  selection = selection:gsub("%s+$", "")
+  if selection == "" then return nil end
+  return selection
+end
+
+local function contains(tbl, val)
+  for _, v in pairs(tbl) do
+    if v == val then
+      return true
+    end
+  end
+  return false
+end
+
+local directions = {
+  "English → Portuguese",
+  "Portuguese → English"
+}
+
+local choice = rofi("Translate:", directions)
+if (not choice) or (not contains(directions,choice)) then os.exit() end
+
+local lang_pair = {
+  ["English → Portuguese"] = "en:pt",
+  ["Portuguese → English"] = "pt:en"
+}
+local pair = lang_pair[choice]
+
+local text = rofi("󰗊", { "" })
+if not text then os.exit() end
+
+local trans_cmd = string.format('trans -b %s "%s"', pair, text:gsub('"', '\\"'))
+local trans_handle = io.popen(trans_cmd)
+local translation = trans_handle:read("*a")
+trans_handle:close()
+translation = translation:gsub("%s+$", "")
+
+if translation == "" then
+  translation = "(no translation returned)"
+else
+  io.popen("wl-copy " .. translation)
+end
+
+local notify_cmd = string.format(
+  'notify-send -- "Translation (%s)" "%s"',
+  choice,
+  translation:gsub('"', '\\"')
+)
+os.execute(notify_cmd)
diff --git a/.local/bin/rofi-wifimenu b/.local/bin/rofi-wifimenu
new file mode 100755
index 0000000..fb45671
--- /dev/null
+++ b/.local/bin/rofi-wifimenu
@@ -0,0 +1,38 @@
+#!/usr/bin/env bash
+
+notify-send "Getting list of available Wi-Fi networks..."
+# Get a list of available wifi connections and morph it into a nice-looking list
+wifi_list=$(nmcli --fields "SECURITY,SSID" device wifi list | sed 1d | sed 's/  */ /g' | sed -E "s/WPA*.?\S/ /g" | sed "s/^--/ /g" | sed "s/  //g" | sed "/--/d")
+
+connected=$(nmcli -fields WIFI g)
+if [[ "$connected" =~ "enabled" ]]; then
+	toggle="󰖪  Disable Wi-Fi"
+elif [[ "$connected" =~ "disabled" ]]; then
+	toggle="󰖩  Enable Wi-Fi"
+fi
+
+# Use rofi to select wifi network
+chosen_network=$(echo -e "$toggle\n$wifi_list" | uniq -u | rofi -dmenu -i -selected-row 1 -p "Wi-Fi SSID: " )
+# Get name of connection
+read -r chosen_id <<< "${chosen_network:3}"
+
+if [ "$chosen_network" = "" ]; then
+	exit
+elif [ "$chosen_network" = "󰖩  Enable Wi-Fi" ]; then
+	nmcli radio wifi on
+elif [ "$chosen_network" = "󰖪  Disable Wi-Fi" ]; then
+	nmcli radio wifi off
+else
+	# Message to show when connection is activated successfully
+  	success_message="You are now connected to the Wi-Fi network \"$chosen_id\"."
+	# Get saved connections
+	saved_connections=$(nmcli -g NAME connection)
+	if [[ $(echo "$saved_connections" | grep -w "$chosen_id") = "$chosen_id" ]]; then
+		nmcli connection up id "$chosen_id" | grep "successfully" && notify-send "Connection Established" "$success_message"
+	else
+		if [[ "$chosen_network" =~ "" ]]; then
+			wifi_password=$(rofi -dmenu -p "Password: " )
+		fi
+		nmcli device wifi connect "$chosen_id" password "$wifi_password" | grep "successfully" && notify-send "Connection Established" "$success_message"
+    fi
+fi
diff --git a/.local/bin/take-slurpshot b/.local/bin/take-slurpshot
new file mode 100755
index 0000000..f30fabe
--- /dev/null
+++ b/.local/bin/take-slurpshot
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# Generate base filename with timestamp
+base_filename=$(date +"%m-%d-%Y_%H-%M-%S")
+extension=".png"
+
+# Initialize full filename
+filename="${base_filename}${extension}"
+counter=1
+
+# Check if file exists and append incremental suffix if needed
+while [[ -e "$filename" ]]; do
+    filename="${base_filename}-${counter}${extension}"
+    ((counter++))
+done
+
+# Output the available filename
+grim -g "$(slurp)" "$HOME/Pictures/Screenshots/$filename"
diff --git a/.local/share/applications/jellyfin-tui.desktop b/.local/share/applications/jellyfin-tui.desktop
new file mode 100644
index 0000000..3ac887a
--- /dev/null
+++ b/.local/share/applications/jellyfin-tui.desktop
@@ -0,0 +1,5 @@
+[Desktop Entry]
+Name=Jellyfin TUI
+Exec=foot jellyfin-tui
+Type=Application
+Terminal=false
diff --git a/.local/share/applications/yazi.desktop b/.local/share/applications/yazi.desktop
new file mode 100644
index 0000000..24580fa
--- /dev/null
+++ b/.local/share/applications/yazi.desktop
@@ -0,0 +1,6 @@
+[Desktop Entry]
+Name=Yazi
+Exec=foot yazi %U
+Type=Application
+Terminal=false
+MimeType=inode/directory;
diff --git a/.mg b/.mg
deleted file mode 100644
index 5b00b1b..0000000
--- a/.mg
+++ /dev/null
@@ -1,2 +0,0 @@
-backup-to-home-directory
-auto-execute *.c c-mode
diff --git a/.tmux.conf b/.tmux.conf
deleted file mode 100644
index 8f3db13..0000000
--- a/.tmux.conf
+++ /dev/null
@@ -1,107 +0,0 @@
-# Set Shell to ZSH
-set-option -g default-shell /bin/zsh
-
-# Use C-t and C-n for the prefix
-set-option -g prefix C-space
-
-# Easy Config Reload
-bind-key r source-file ~/.tmux.conf \; display-message "Config reloaded"
-
-# Mouse Mode
-set -g mouse on
-
-# Fix Colors
-set -g default-terminal "tmux-256color"
-set -ga terminal-overrides ",*col*:Tc"
-
-# Fix Pane Numbers
-set -g base-index 1
-setw -g pane-base-index 1
-
-# Switch Pane Keys
-bind-key h select-pane -L
-bind-key i select-pane -R
-bind-key e select-pane -U
-bind-key n select-pane -D
-
-# Easier Splitting
-bind-key v split-window -h -c "#{pane_current_path}"
-bind-key s split-window -v -c "#{pane_current_path}"
-
-# Quick Create and tab through windows
-# bind-key -n C-Tab next-window
-# bind-key -n C-S-Tab previous-window
-bind-key Tab next-window
-bind-key k confirm-before -p "kill window #W? (y/n)" kill-window
-bind-key c new-window
-
-# Bind Popup Window
-bind-key t display-popup
-
-bind-key g display-popup \
-  -d "#{pane_current_path}" \
-  -w 80% \
-  -h 80% \
-  -E "lazygit"
-
-bind-key f display-popup \
-  -w 80% \
-  -h 80% \
-  -E "nvim -c \"Oil\""
-
-bind-key l display-popup \
-  -d "#{pane_current_path}" \
-  -w 80% \
-  -h 80% \
-  -E "elia"
-
-# Fix delay on vim escape
-set -s escape-time 0
-
-# Change background color of a tab when activity occurs
-setw -g monitor-activity on
-
-# Do NOT reset the color of the tab after activity stops occuring
-setw -g monitor-silence 0
-
-# Disable bell
-setw -g monitor-bell off
-
-# Disable visual text box when activity occurs
-set -g visual-activity off
-
-# Images in TMUX
-set -g allow-passthrough all
-set -ga update-environment TERM
-set -ga update-environment TERM_PROGRAM
-
-# Set Terminal Title
-set-option -g set-titles on
-set-option -g set-titles-string "#T"
-
-# Bind Toggle Status Bar
-bind m set-option status
-
-# tmux2k
-set -g @tmux2k-start-icon "λ"
-set -g @tmux2k-theme 'duo'
-# Rose Pine
-# set -g @tmux2k-duo-bg '#191724'
-# Pinheiro Preto
-set -g @tmux2k-duo-bg '#1d2021'
-set -g @tmux2k-duo-fg '#98a18c'
-set -g @tmux2k-icons-only true
-set -g @tmux2k-left-plugins "git cwd"
-set -g @tmux2k-right-plugins "cpu cpu-temp battery time"
-set -g @tmux2k-refresh-rate 5
-set -g @tmux2k-window-list-alignment "left"
-set -g @tmux2k-cpu-temp-round true
-set -g @tmux2k-time-format "%a %H:%M"
-
-# TMUX Packages
-
-set -g @plugin 'tmux-plugins/tpm'
-set -g @plugin 'tmux-plugins/tmux-sensible'
-set -g @plugin '2kabhishek/tmux2k'
-
-run '~/.tmux/plugins/tpm/tpm'
diff --git a/.xkbmap b/.xkbmap
deleted file mode 100644
index 3a5a677..0000000
--- a/.xkbmap
+++ /dev/null
@@ -1,3 +0,0 @@
-xkb_symbols {
-    include "us_colemak_pt_mac(basic)"
-};
diff --git a/.zprofile b/.zprofile
deleted file mode 100644
index bd8da72..0000000
--- a/.zprofile
+++ /dev/null
@@ -1,6 +0,0 @@
-
-eval "$(/opt/homebrew/bin/brew shellenv)"
-
-# Added by OrbStack: command-line tools and integration
-# This won't be added again if you remove it.
-source ~/.orbstack/shell/init.zsh 2>/dev/null || :
diff --git a/.zshenv b/.zshenv
deleted file mode 100644
index 97f7a5a..0000000
--- a/.zshenv
+++ /dev/null
@@ -1,12 +0,0 @@
-# Rust
-# . "$HOME/.cargo/env"
-
-# Custom
-[ -f "$HOME/.config/shell/vars" ] && source "$HOME/.config/shell/vars"
-
-# Brew
-# eval "$(/opt/homebrew/bin/brew shellenv)"
-
-# bun
-# export BUN_INSTALL="$HOME/.bun"
-# export PATH="$BUN_INSTALL/bin:$PATH"
diff --git a/.zshrc b/.zshrc
deleted file mode 100644
index a22919e..0000000
--- a/.zshrc
+++ /dev/null
@@ -1,103 +0,0 @@
-# Venomade's zshrc
-
-# source global variables and aliases
-[ -f "$HOME/.config/shell/alias" ] && source "$HOME/.config/shell/alias"
-[ -f "$HOME/.config/shell/vars" ] && source "$HOME/.config/shell/vars"
-
-# load modules
-zmodload zsh/complist
-autoload -U compinit && compinit
-autoload -U colors && colors
-
-# completion
-zstyle ':completion:*' menu select
-zstyle ':completion:*' special-dirs true
-zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} ma=0\;33
-
-# options
-setopt append_history inc_append_history share_history
-setopt auto_menu menu_complete
-setopt auto_param_slash
-setopt no_case_glob no_case_match
-setopt globdots
-setopt extended_glob
-
-# history
-HISTCONTROL=ignoreboth
-
-
-# prompt
-USER_COLOR="%F{magenta}"
-VENV_COLOR="%F{yellow}"
-DIR_COLOR="%F{green}"
-GIT_COLOR="%F{blue}"
-GIT_DIRTY_COLOR="%F{red}"
-PROMPT_SYMBOL_COLOR="%F{yellow}"
-RESET_COLOR="%f"
-
-shorten_path() {
-  local path="${PWD/#$HOME/~}"
-  local parts=("${(@s:/:)path}")
-
-  if (( ${#parts} > 3 )); then
-    echo "${parts[1]}/.../${parts[-2]}/${parts[-1]}"
-  else
-    echo "$path"
-  fi
-}
-
-git_branch() {
-  local branch
-  branch=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --short HEAD 2>/dev/null)
-  [[ -n "$branch" ]] && echo "$branch"
-}
-
-git_dirty() {
-  [[ -n "$(git status --porcelain 2>/dev/null)" ]] && echo "✗" || echo "✓"
-}
-
-set_prompt() {
-  if [ "$DEVBOX_SHELL_ENABLED" -ne 1 ]; then
-      local user="${USER_COLOR}%n${RESET_COLOR}"
-      local venv=""
-      [[ -n "$VIRTUAL_ENV" ]] && venv="${VENV_COLOR}($(basename $VIRTUAL_ENV))${RESET_COLOR} "
-
-      local path="${DIR_COLOR}$(shorten_path)${RESET_COLOR}"
-      local git_info=""
-      local branch="$(git_branch)"
-
-      if [[ -n "$branch" ]]; then
-          git_info=" %F{white}on%f ${GIT_COLOR}${branch}${RESET_COLOR}${GIT_DIRTY_COLOR}$(git_dirty)${RESET_COLOR}"
-      fi
-
-      PROMPT="${user} %F{white}in%f ${venv}${path}${git_info}
-${PROMPT_SYMBOL_COLOR}λ${RESET_COLOR} "
-  fi
-}
-
-autoload -Uz add-zsh-hook
-add-zsh-hook precmd set_prompt
-
-# plugins
-
-source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
-
-# GHCUP for Haskell
-# [ -f "/home/venomade/.ghcup/env" ] && . "/home/venomade/.ghcup/env" # ghcup-env
-
-# OPAM for OCaml
-# [[ ! -r '/home/venomade/.opam/opam-init/init.zsh' ]] || source '/home/venomade/.opam/opam-init/init.zsh' > /dev/null 2> /dev/null
-# bun completions
-# [ -s "/home/venomade/.bun/_bun" ] && source "/home/venomade/.bun/_bun"
-
-# bun
-# export BUN_INSTALL="$HOME/.bun"
-# export PATH="$BUN_INSTALL/bin:$PATH"
-
-# Devbox
-# eval "$(devbox global shellenv)"
-
-# Homebrew
-# eval "$(/opt/homebrew/bin/brew shellenv)"
-
-# export PATH="/opt/homebrew/opt/llvm/bin:$PATH"
diff --git a/README.md b/README.md
index 7a22cbf..2fe72b5 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,5 @@
 # Venomade's Dotfiles
 
 These are my dotfiles managed with [GNU Stow](https://www.gnu.org/software/stow/).
+
+These dotfiles are fairly hardcoded, so take them as inspiration. They are made specifically for me (*/home/venomade*), in a mix of Portuguese and English and are for Asahi Linux on an M1 Macbook.