From a568a964fd6a9efba388b2b4919339c0b7dfe51d Mon Sep 17 00:00:00 2001 From: venomade Date: Mon, 16 Feb 2026 17:31:16 +0000 Subject: MacOS Nix Asahi is just not perfectly usable yet. Moved stuff, went nix. --- .bashrc | 95 --- .config/bat/config | 1 - .config/bat/themes/modus_vivendi.tmTheme | 439 -------------- .config/dunst/dunstrc | 39 -- .config/eza/theme.yml | 147 ----- .config/foot/foot.ini | 6 - .config/jellyfin-tui/config.yaml | 6 - .config/kanata/config.kbd | 39 -- .config/lazygit/config.yml | 182 ------ .config/luastatus/alsa.lua | 33 - .config/luastatus/battery.lua | 57 -- .config/luastatus/playerctl.lua | 43 -- .config/luastatus/separator.lua | 6 - .config/luastatus/time-date.lua | 13 - .config/luastatus/wireless.lua | 70 --- .config/ly/config.ini | 265 --------- .config/mimeapps.list | 21 - .config/nvim/.gitignore | 1 - .config/nvim/.luarc.json | 18 - .config/nvim/ftplugin/markdown.lua | 10 - .config/nvim/init.lua | 10 - .config/nvim/lua/config/colemak.lua | 32 - .config/nvim/lua/config/keymaps.lua | 53 -- .config/nvim/lua/config/options.lua | 107 ---- .config/nvim/lua/manager.lua | 26 - .config/nvim/lua/plugins/autopairs.lua | 8 - .config/nvim/lua/plugins/cmp.lua | 103 ---- .config/nvim/lua/plugins/colorizer.lua | 15 - .config/nvim/lua/plugins/compile.lua | 20 - .config/nvim/lua/plugins/image.lua | 20 - .config/nvim/lua/plugins/lastplace.lua | 7 - .config/nvim/lua/plugins/lazygit.lua | 20 - .config/nvim/lua/plugins/lualine.lua | 38 -- .config/nvim/lua/plugins/modus-themes.lua | 13 - .config/nvim/lua/plugins/oil.lua | 28 - .config/nvim/lua/plugins/rainbow-delimiters.lua | 6 - .config/nvim/lua/plugins/render-markdown.lua | 111 ---- .config/nvim/lua/plugins/telescope.lua | 40 -- .config/nvim/lua/plugins/todo-comments.lua | 14 - .config/nvim/lua/plugins/ui.lua | 27 - .config/nvim/lua/plugins/zk.lua | 26 - .config/nvim/lua/scripts/diagnostics.lua | 760 ------------------------ .config/nvim/lua/scripts/init.lua | 3 - .config/rofi/config.rasi | 10 - .config/rofi/theme.rasi | 111 ---- .config/shell/alias | 11 - .config/shell/functions | 16 - .config/shell/vars | 2 - .config/sway/config | 278 --------- .config/swaylock/config | 39 -- .config/systemd/user/.gitignore | 1 - .config/systemd/user/cliphist.service | 13 - .config/systemd/user/kanata.service | 22 - .config/yazi/keymap.toml | 164 ----- .config/yazi/modus_vivendi.tmTheme | 439 -------------- .config/yazi/theme.toml | 135 ----- .config/yazi/yazi.toml | 7 - .config/zk/config.toml | 35 -- .config/zk/templates/note.md | 6 - .ghci | 1 - .gitconfig | 3 - .local/bin/battery-screen | 70 --- .local/bin/lock-screen | 13 - .local/bin/rofi-notes | 9 - .local/bin/rofi-powermenu | 49 -- .local/bin/rofi-ppd | 48 -- .local/bin/rofi-translate | 60 -- .local/bin/rofi-wifimenu | 38 -- .local/bin/take-slurpshot | 18 - .local/share/applications/jellyfin-tui.desktop | 5 - .local/share/applications/yazi.desktop | 6 - .stow-local-ignore | 2 - README.md | 4 +- config/bat/config | 1 + config/bat/themes/modus_vivendi.tmTheme | 439 ++++++++++++++ config/eza/theme.yml | 147 +++++ config/lazygit/.gitignore | 1 + config/lazygit/config.yml | 182 ++++++ config/nvim/.gitignore | 1 + config/nvim/.luarc.json | 18 + config/nvim/ftplugin/markdown.lua | 10 + config/nvim/init.lua | 10 + config/nvim/lua/config/colemak.lua | 32 + config/nvim/lua/config/keymaps.lua | 53 ++ config/nvim/lua/config/options.lua | 107 ++++ config/nvim/lua/manager.lua | 26 + config/nvim/lua/plugins/autopairs.lua | 8 + config/nvim/lua/plugins/cmp.lua | 99 +++ config/nvim/lua/plugins/colorizer.lua | 15 + config/nvim/lua/plugins/compile.lua | 20 + config/nvim/lua/plugins/image.lua | 20 + config/nvim/lua/plugins/lastplace.lua | 7 + config/nvim/lua/plugins/lazygit.lua | 20 + config/nvim/lua/plugins/lualine.lua | 38 ++ config/nvim/lua/plugins/modus-themes.lua | 13 + config/nvim/lua/plugins/oil.lua | 28 + config/nvim/lua/plugins/rainbow-delimiters.lua | 6 + config/nvim/lua/plugins/render-markdown.lua | 111 ++++ config/nvim/lua/plugins/scratch-buffer.lua | 11 + config/nvim/lua/plugins/telescope.lua | 40 ++ config/nvim/lua/plugins/todo-comments.lua | 14 + config/nvim/lua/plugins/ui.lua | 27 + config/nvim/lua/plugins/zk.lua | 26 + config/nvim/lua/scripts/diagnostics.lua | 760 ++++++++++++++++++++++++ config/nvim/lua/scripts/init.lua | 3 + config/shell/alias | 9 + config/shell/functions | 16 + config/shell/vars | 6 + config/starship/config.toml | 91 +++ config/yazi/keymap.toml | 164 +++++ config/yazi/modus_vivendi.tmTheme | 439 ++++++++++++++ config/yazi/theme.toml | 135 +++++ config/yazi/yazi.toml | 7 + config/zk/config.toml | 35 ++ config/zk/templates/note.md | 6 + flake.lock | 48 ++ flake.nix | 31 + home.nix | 55 ++ 118 files changed, 3336 insertions(+), 4592 deletions(-) delete mode 100644 .bashrc delete mode 100644 .config/bat/config delete mode 100644 .config/bat/themes/modus_vivendi.tmTheme delete mode 100644 .config/dunst/dunstrc delete mode 100644 .config/eza/theme.yml delete mode 100644 .config/foot/foot.ini delete mode 100644 .config/jellyfin-tui/config.yaml delete mode 100644 .config/kanata/config.kbd delete mode 100644 .config/lazygit/config.yml delete mode 100644 .config/luastatus/alsa.lua delete mode 100644 .config/luastatus/battery.lua delete mode 100644 .config/luastatus/playerctl.lua delete mode 100644 .config/luastatus/separator.lua delete mode 100644 .config/luastatus/time-date.lua delete mode 100644 .config/luastatus/wireless.lua delete mode 100644 .config/ly/config.ini delete mode 100644 .config/mimeapps.list delete mode 100644 .config/nvim/.gitignore delete mode 100644 .config/nvim/.luarc.json delete mode 100644 .config/nvim/ftplugin/markdown.lua delete mode 100644 .config/nvim/init.lua delete mode 100644 .config/nvim/lua/config/colemak.lua delete mode 100644 .config/nvim/lua/config/keymaps.lua delete mode 100644 .config/nvim/lua/config/options.lua delete mode 100644 .config/nvim/lua/manager.lua delete mode 100644 .config/nvim/lua/plugins/autopairs.lua delete mode 100644 .config/nvim/lua/plugins/cmp.lua delete mode 100644 .config/nvim/lua/plugins/colorizer.lua delete mode 100644 .config/nvim/lua/plugins/compile.lua delete mode 100644 .config/nvim/lua/plugins/image.lua delete mode 100644 .config/nvim/lua/plugins/lastplace.lua delete mode 100644 .config/nvim/lua/plugins/lazygit.lua delete mode 100644 .config/nvim/lua/plugins/lualine.lua delete mode 100644 .config/nvim/lua/plugins/modus-themes.lua delete mode 100644 .config/nvim/lua/plugins/oil.lua delete mode 100644 .config/nvim/lua/plugins/rainbow-delimiters.lua delete mode 100644 .config/nvim/lua/plugins/render-markdown.lua delete mode 100644 .config/nvim/lua/plugins/telescope.lua delete mode 100644 .config/nvim/lua/plugins/todo-comments.lua delete mode 100644 .config/nvim/lua/plugins/ui.lua delete mode 100644 .config/nvim/lua/plugins/zk.lua delete mode 100644 .config/nvim/lua/scripts/diagnostics.lua delete mode 100644 .config/nvim/lua/scripts/init.lua delete mode 100644 .config/rofi/config.rasi delete mode 100644 .config/rofi/theme.rasi delete mode 100644 .config/shell/alias delete mode 100644 .config/shell/functions delete mode 100644 .config/shell/vars delete mode 100644 .config/sway/config delete mode 100644 .config/swaylock/config delete mode 100644 .config/systemd/user/.gitignore delete mode 100644 .config/systemd/user/cliphist.service delete mode 100644 .config/systemd/user/kanata.service delete mode 100644 .config/yazi/keymap.toml delete mode 100644 .config/yazi/modus_vivendi.tmTheme delete mode 100644 .config/yazi/theme.toml delete mode 100644 .config/yazi/yazi.toml delete mode 100644 .config/zk/config.toml delete mode 100644 .config/zk/templates/note.md delete mode 100644 .ghci delete mode 100644 .gitconfig delete mode 100755 .local/bin/battery-screen delete mode 100755 .local/bin/lock-screen delete mode 100755 .local/bin/rofi-notes delete mode 100755 .local/bin/rofi-powermenu delete mode 100755 .local/bin/rofi-ppd delete mode 100755 .local/bin/rofi-translate delete mode 100755 .local/bin/rofi-wifimenu delete mode 100755 .local/bin/take-slurpshot delete mode 100644 .local/share/applications/jellyfin-tui.desktop delete mode 100644 .local/share/applications/yazi.desktop delete mode 100644 .stow-local-ignore create mode 100644 config/bat/config create mode 100644 config/bat/themes/modus_vivendi.tmTheme create mode 100644 config/eza/theme.yml create mode 100644 config/lazygit/.gitignore create mode 100644 config/lazygit/config.yml create mode 100644 config/nvim/.gitignore create mode 100644 config/nvim/.luarc.json create mode 100644 config/nvim/ftplugin/markdown.lua create mode 100644 config/nvim/init.lua create mode 100644 config/nvim/lua/config/colemak.lua create mode 100644 config/nvim/lua/config/keymaps.lua create mode 100644 config/nvim/lua/config/options.lua create mode 100644 config/nvim/lua/manager.lua create mode 100644 config/nvim/lua/plugins/autopairs.lua create mode 100644 config/nvim/lua/plugins/cmp.lua create mode 100644 config/nvim/lua/plugins/colorizer.lua create mode 100644 config/nvim/lua/plugins/compile.lua create mode 100644 config/nvim/lua/plugins/image.lua create mode 100644 config/nvim/lua/plugins/lastplace.lua create mode 100644 config/nvim/lua/plugins/lazygit.lua create mode 100644 config/nvim/lua/plugins/lualine.lua create mode 100644 config/nvim/lua/plugins/modus-themes.lua create mode 100644 config/nvim/lua/plugins/oil.lua create mode 100644 config/nvim/lua/plugins/rainbow-delimiters.lua create mode 100644 config/nvim/lua/plugins/render-markdown.lua create mode 100644 config/nvim/lua/plugins/scratch-buffer.lua create mode 100644 config/nvim/lua/plugins/telescope.lua create mode 100644 config/nvim/lua/plugins/todo-comments.lua create mode 100644 config/nvim/lua/plugins/ui.lua create mode 100644 config/nvim/lua/plugins/zk.lua create mode 100644 config/nvim/lua/scripts/diagnostics.lua create mode 100644 config/nvim/lua/scripts/init.lua create mode 100644 config/shell/alias create mode 100644 config/shell/functions create mode 100644 config/shell/vars create mode 100644 config/starship/config.toml create mode 100644 config/yazi/keymap.toml create mode 100644 config/yazi/modus_vivendi.tmTheme create mode 100644 config/yazi/theme.toml create mode 100644 config/yazi/yazi.toml create mode 100644 config/zk/config.toml create mode 100644 config/zk/templates/note.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 home.nix diff --git a/.bashrc b/.bashrc deleted file mode 100644 index b1d2c7b..0000000 --- a/.bashrc +++ /dev/null @@ -1,95 +0,0 @@ -# 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 deleted file mode 100644 index 2d65ccf..0000000 --- a/.config/bat/config +++ /dev/null @@ -1 +0,0 @@ ---theme="modus_vivendi" diff --git a/.config/bat/themes/modus_vivendi.tmTheme b/.config/bat/themes/modus_vivendi.tmTheme deleted file mode 100644 index 15d2429..0000000 --- a/.config/bat/themes/modus_vivendi.tmTheme +++ /dev/null @@ -1,439 +0,0 @@ - - - - - - - - name - modus_vivendi - settings - - - settings - - background - #000000 - caret - #989898 - foreground - #ffffff - invisibles - #989898 - lineHighlight - #2f3849 - selection - #7030af - findHighlight - #7a6100 - selectionBorder - #646464 - gutterForeground - #989898 - - - - name - Comment - scope - comment - settings - - fontStyle - italic - foreground - #989898 - - - - name - String - scope - string - settings - - foreground - #79a8ff - - - - name - Number - scope - constant.numeric - settings - - foreground - #82b0ec - - - - name - Built-in constant - scope - constant.language - settings - - foreground - #6ae4b9 - - - - name - User-defined constant - scope - constant.character, constant.other - settings - - foreground - #ffffff - - - - name - Variable - scope - variable - settings - - fontStyle - #00d3d0 - - - - name - Ruby's @variable - scope - variable.other.readwrite.instance - settings - - foreground - #00d3d0 - - - - name - String interpolation - scope - constant.character.escaped, constant.character.escape, string source, string source.ruby - settings - - foreground - #d2b580 - - - - name - Keyword - scope - keyword - settings - - fontStyle - italic - foreground - #b6a0ff - - - - name - Storage - scope - storage - settings - - foreground - #b6a0ff - - - - name - Storage type - scope - storage.type - settings - - foreground - #b6a0ff - - - - name - Class name - scope - entity.name.class - settings - - foreground - #b6a0ff - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - foreground - #b6a0ff - - - - name - Function name - scope - entity.name.function - settings - - foreground - #feacd0 - - - - name - Function argument - scope - variable.parameter - settings - - foreground - #00d3d0 - - - - name - Tag name - scope - entity.name.tag - settings - - foreground - #00d3d0 - - - - name - Tag attribute - scope - entity.other.attribute-name - settings - - foreground - #00d3d0 - - - - name - Library function - scope - support.function - settings - - foreground - #feacd0 - - - - name - Library constant - scope - support.constant - settings - - foreground - #6ae4b9 - - - - name - Library class/type - scope - support.type, support.class - settings - - foreground - #6ae4b9 - - - - name - Library variable - scope - support.other.variable - settings - - foreground - #00d3d0 - - - - name - Invalid - scope - invalid - settings - - foreground - #989898 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - foreground - #989898 - - - - name - JSON String - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #79a8ff - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #feacd0 - - - - name - diff.deleted - scope - markup.deleted - settings - - background - #4f1119 - - - - name - diff.inserted - scope - markup.inserted - settings - - background - #00381f - - - - name - diff.changed - scope - markup.changed - settings - - background - #363300 - - - - scope - constant.numeric.line-number.find-in-files - match - settings - - foreground - #82b0ec - - - - scope - entity.name.filename - settings - - foreground - #2fafff - - - - scope - message.error - settings - - fontStyle - bold - foreground - #ff7f9f - - - - name - JSON Punctuation - scope - punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json - settings - - foreground - #ffffff - - - - name - JSON Structure - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #79a8ff - - - - name - JSON String - scope - meta.structure.dictionary.value.json string.quoted.double.json - settings - - foreground - #79a8ff - - - - name - Escape Characters - scope - constant.character.escape - settings - - foreground - #d2b580 - - - - name - Regular Expressions - scope - string.regexp - settings - - foreground - #00c06f - - - - uuid - 09CE9B40-0137-442C-8512-7CEAFC78C153 - colorSpaceName - sRGB - semanticClass - Modus Vivendi - - diff --git a/.config/dunst/dunstrc b/.config/dunst/dunstrc deleted file mode 100644 index 7f94795..0000000 --- a/.config/dunst/dunstrc +++ /dev/null @@ -1,39 +0,0 @@ -[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 = "%s\n%b" - -[urgency_normal] - background = "#000000" - highlight = "#ffffff" - frame_color = "#ffffff" - format = "%s\n%b" - -[urgency_critical] - background = "#000000" - highlight = "#ffffff" - frame_color = "#ffffff" - default_icon = "dialog-error" - format = "%s\n%b" diff --git a/.config/eza/theme.yml b/.config/eza/theme.yml deleted file mode 100644 index f74a128..0000000 --- a/.config/eza/theme.yml +++ /dev/null @@ -1,147 +0,0 @@ -# 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 deleted file mode 100644 index be335dc..0000000 --- a/.config/foot/foot.ini +++ /dev/null @@ -1,6 +0,0 @@ -[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 deleted file mode 100644 index 30322e0..0000000 --- a/.config/jellyfin-tui/config.yaml +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index a805cf7..0000000 --- a/.config/kanata/config.kbd +++ /dev/null @@ -1,39 +0,0 @@ -#| -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/lazygit/config.yml b/.config/lazygit/config.yml deleted file mode 100644 index 0151f13..0000000 --- a/.config/lazygit/config.yml +++ /dev/null @@ -1,182 +0,0 @@ -gui: - border: single - -keybinding: - universal: - quit: q - quit-alt1: - suspendApp: - return: - quitWithoutChangingDirectory: Q - togglePanel: - prevItem: - nextItem: - prevItem-alt: e - nextItem-alt: n - prevPage: ',' - nextPage: . - scrollLeft: H - scrollRight: I - gotoTop: < - gotoBottom: '>' - gotoTop-alt: - gotoBottom-alt: - toggleRangeSelect: v - rangeSelectDown: - rangeSelectUp: - prevBlock: - nextBlock: - prevBlock-alt: h - nextBlock-alt: i - nextBlock-alt2: - prevBlock-alt2: - jumpToBlock: - - "1" - - "2" - - "3" - - "4" - - "5" - focusMainView: "0" - nextMatch: "k" - prevMatch: "K" - startSearch: / - optionMenu: - optionMenu-alt1: '?' - select: - goInto: - confirm: - confirmMenu: - confirmSuggestion: - confirmInEditor: - confirmInEditor-alt: - remove: d - new: "n" - edit: j - openFile: o - scrollUpMain: - scrollDownMain: - scrollUpMain-alt1: E - scrollDownMain-alt1: N - scrollUpMain-alt2: - scrollDownMain-alt2: - executeShellCommand: ':' - createRebaseOptionsMenu: m - - # 'Files' appended for legacy reasons - pushFiles: P - - # 'Files' appended for legacy reasons - pullFiles: p - refresh: R - createPatchOptionsMenu: - nextTab: ']' - prevTab: '[' - nextScreenMode: + - prevScreenMode: _ - cyclePagers: '|' - undo: z - redo: Z - filteringMenu: - diffingMenu: W - diffingMenu-alt: - copyToClipboard: - openRecentRepos: - submitEditorText: - extrasMenu: '@' - toggleWhitespaceInDiffView: - increaseContextInDiffView: '}' - decreaseContextInDiffView: '{' - increaseRenameSimilarityThreshold: ) - decreaseRenameSimilarityThreshold: ( - openDiffTool: - status: - checkForUpdate: u - recentRepos: - allBranchesLogGraph: a - files: - commitChanges: c - commitChangesWithoutHook: w - amendLastCommit: A - commitChangesWithEditor: C - findBaseCommitForFixup: - confirmDiscard: x - ignoreFile: l - refreshFiles: r - stashAllChanges: s - viewStashOptions: S - toggleStagedAll: a - viewResetOptions: D - fetch: f - toggleTreeView: '`' - openMergeOptions: M - openStatusFilter: - copyFileInfoToClipboard: "y" - collapseAll: '-' - expandAll: = - branches: - createPullRequest: o - viewPullRequestOptions: O - copyPullRequestURL: - 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: - moveUpCommit: - amendToCommit: A - resetCommitAuthor: a - pickCommit: p - revertCommit: t - cherryPickCopy: C - pasteCommits: V - markCommitAsBaseForRebase: B - tagCommit: T - checkoutCommit: - resetCherryPick: - copyCommitAttributeToClipboard: "y" - openLogMenu: - 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: diff --git a/.config/luastatus/alsa.lua b/.config/luastatus/alsa.lua deleted file mode 100644 index fc0f13b..0000000 --- a/.config/luastatus/alsa.lua +++ /dev/null @@ -1,33 +0,0 @@ -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 = '󰕾' - if percent >= 99.5 then - return { - full_text = string.format('%s %d%%', symbol, math.floor(0.5 + percent)), - color = '#b7bdf8' - } - end - 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 deleted file mode 100644 index 459599e..0000000 --- a/.config/luastatus/battery.lua +++ /dev/null @@ -1,57 +0,0 @@ -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 deleted file mode 100644 index a3e743c..0000000 --- a/.config/luastatus/playerctl.lua +++ /dev/null @@ -1,43 +0,0 @@ -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 deleted file mode 100644 index 1a3ef01..0000000 --- a/.config/luastatus/separator.lua +++ /dev/null @@ -1,6 +0,0 @@ -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 deleted file mode 100644 index 8d5bfe7..0000000 --- a/.config/luastatus/time-date.lua +++ /dev/null @@ -1,13 +0,0 @@ -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 deleted file mode 100644 index e3d53d7..0000000 --- a/.config/luastatus/wireless.lua +++ /dev/null @@ -1,70 +0,0 @@ -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 deleted file mode 100644 index f70ca36..0000000 --- a/.config/ly/config.ini +++ /dev/null @@ -1,265 +0,0 @@ -# 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/mimeapps.list b/.config/mimeapps.list deleted file mode 100644 index f31391c..0000000 --- a/.config/mimeapps.list +++ /dev/null @@ -1,21 +0,0 @@ - -[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/.gitignore b/.config/nvim/.gitignore deleted file mode 100644 index e033bc6..0000000 --- a/.config/nvim/.gitignore +++ /dev/null @@ -1 +0,0 @@ -lazy-lock.json diff --git a/.config/nvim/.luarc.json b/.config/nvim/.luarc.json deleted file mode 100644 index bd8a14b..0000000 --- a/.config/nvim/.luarc.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json", - "Lua.runtime.version": "LuaJIT", - "diagnostics.globals": ["vim"], - "workspace.checkThirdParty": false, - "workspace.library": [ - "$VIMRUNTIME" - ], - "Lua.diagnostics.enable": true, - "Lua.format.defaultConfig": { - "indent_style": "space", - "indent_size": "2" - }, - "typeFormat.config": false, - "completion.callSnippet": "Replace", - "completion.showWord": "Disable", - "completion.workspaceWord": false -} diff --git a/.config/nvim/ftplugin/markdown.lua b/.config/nvim/ftplugin/markdown.lua deleted file mode 100644 index 4f658e4..0000000 --- a/.config/nvim/ftplugin/markdown.lua +++ /dev/null @@ -1,10 +0,0 @@ -vim.keymap.set('n', 'n', 'gj', { buffer = true, noremap = true }) -vim.keymap.set('n', 'e', 'gk', { buffer = true, noremap = true }) - -vim.opt_local.wrap = true -vim.opt_local.linebreak = true - -vim.opt_local.number = false -vim.opt_local.relativenumber = false - -vim.treesitter.start(vim.api.nvim_get_current_buf(), 'markdown') diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua deleted file mode 100644 index 4b53a96..0000000 --- a/.config/nvim/init.lua +++ /dev/null @@ -1,10 +0,0 @@ --- Setup Config -require("config.colemak") -require("config.options") -require("config.keymaps") - --- Setup Lazy Plugin Manager -require("manager") - --- Test Script -require("scripts") diff --git a/.config/nvim/lua/config/colemak.lua b/.config/nvim/lua/config/colemak.lua deleted file mode 100644 index e6ce33b..0000000 --- a/.config/nvim/lua/config/colemak.lua +++ /dev/null @@ -1,32 +0,0 @@ -local function map(mode, lhs, rhs, opts) - local options = { noremap = true, silent = true } - if opts then - options = vim.tbl_extend("force", options, opts) - end - vim.keymap.set(mode, lhs, rhs, options) -end - -map("", "n", "j") -map("", "e", "k") -map("", "i", "l") -map("", "j", "n") -map("", "k", "e") -map("", "l", "i") -map("", "K", "E") -map("", "N", "J") -map("", "E", "K") -- As in 'Explore' documentation -map("", "L", "I") -map("", "I", "L") -map("", "J", "N") - -map("n", "h", "h") -map("n", "n", "j") -map("n", "e", "k") -map("n", "i", "l") - -map ("", "gn", "gj") -map ("", "ge", "gk") - --- Kakoune Holdover -map ("", "gh", "0") -map ("", "gi", "$") diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua deleted file mode 100644 index f30283e..0000000 --- a/.config/nvim/lua/config/keymaps.lua +++ /dev/null @@ -1,53 +0,0 @@ -vim.g.mapleader = " " -vim.keymap.set("n", "bk", vim.cmd.bdelete, - { desc = "Kill Buffer" }) -vim.keymap.set("n", "bn", vim.cmd.bnext, - { desc = "Next Buffer" }) -vim.keymap.set("n", "bp", vim.cmd.bprev, - { desc = "Previous Buffer" }) - -vim.keymap.set("n", "E", vim.lsp.buf.hover) -vim.keymap.set("n", "", vim.diagnostic.open_float) -vim.keymap.set("n", "ld", vim.lsp.buf.definition, - { desc = "Go to Definition" }) -vim.keymap.set("n", "lt", vim.lsp.buf.type_definition, - { desc = "Go to Type Definition"} ) -vim.keymap.set("n", "li", vim.lsp.buf.implementation, - { desc = "Go to Implementation" }) -vim.keymap.set("n", "la", vim.lsp.buf.code_action, - { desc = "Show Code Actions" }) -vim.keymap.set("n", "lf", vim.lsp.buf.format, - { desc = "Format Document" }) -vim.keymap.set("n", "lr", vim.lsp.buf.rename, - { desc = "Rename" }) -vim.keymap.set("n", "le", function() - vim.diagnostic.jump({ count = 1, float = true }) -end, - { desc = "Next Error" }) --- vim.keymap.set("n", "lh", vim.lsp.buf.hover, --- { desc = "Hover Diagnostics" }) - -vim.keymap.set("n", "wh", vim.cmd.split, - { desc = "Split Window Horizontally" }) -vim.keymap.set("n", "wv", vim.cmd.vsplit, - { desc = "Split Window Vertically" }) -vim.keymap.set("n", "wc", "q", - { desc = "Close Window" }) -vim.keymap.set("n", "ww", "w", - { desc = "Next Window" }) - -vim.keymap.set("n", "foc", function() - vim.cmd('edit ~/.config/nvim/init.lua') -end, { desc = "Open Config File" }) - -vim.keymap.set("n", "fot", function() - vim.cmd('edit ~/Documents/TODO.org') -end, { desc = "Open Todo File" }) - -vim.keymap.set("n", "fon", function() - vim.cmd('edit ~/Documents/Notes.org') -end, { desc = "Open Notes File" }) - -vim.keymap.set('n', '', '==', { noremap = true, silent = true }) - -vim.keymap.set('n', 'q:', ':q', { noremap = true }) diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua deleted file mode 100644 index 559f4c7..0000000 --- a/.config/nvim/lua/config/options.lua +++ /dev/null @@ -1,107 +0,0 @@ -vim.opt.nu = true -vim.opt.rnu = true - -vim.opt.tabstop = 2 -vim.opt.softtabstop = 2 -vim.opt.shiftwidth = 2 -vim.opt.expandtab = true -vim.opt.autoindent = true - -vim.opt.smartindent = true - -vim.opt.wrap = false - -vim.opt.swapfile = false -vim.opt.backup = false -vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undodir" -vim.opt.undofile = true - -vim.opt.hlsearch = false -vim.opt.incsearch = true - -vim.opt.termguicolors = true - -vim.opt.scrolloff = 12 - -vim.opt.updatetime = 50 - -vim.opt.splitbelow = true -vim.opt.splitright = true - -vim.opt.encoding = "utf-8" - -vim.opt.shell = "bash" - -vim.opt.mouse = "a" - -vim.opt.ignorecase = true -vim.opt.smartcase = true -vim.opt.incsearch = true - --- vim.opt.cursorline = true - -vim.opt.title = true - -vim.opt.clipboard = "unnamedplus" - -vim.opt.colorcolumn = "80" - -vim.opt.signcolumn = 'no' - -vim.cmd "set showtabline=0 | set laststatus=0" - -vim.wo.fillchars='eob: ' - -vim.opt.conceallevel = 3 - --- Window Borders -vim.o.winborder = 'single' - --- Remove Whitespaces on File Save -vim.api.nvim_create_autocmd({ "BufWritePre" }, { - pattern = { "*" }, - command = [[%s/\s\+$//e]], -}) - --- Define highlight groups for line numbers with diagnostics -vim.api.nvim_set_hl(0, "LineNrDiagnosticError", { bg = "#3f1d1d", fg = "#ff6c6b" }) -vim.api.nvim_set_hl(0, "LineNrDiagnosticWarn", { bg = "#3f311d", fg = "#ECBE7B" }) -vim.api.nvim_set_hl(0, "LineNrDiagnosticInfo", { bg = "#1d2d3f", fg = "#51afef" }) -vim.api.nvim_set_hl(0, "LineNrDiagnosticHint", { bg = "#1d3f2d", fg = "#98be65" }) - -local function set_line_number_highlight() - -- Clear existing highlights - vim.fn.sign_unplace("LineNrDiagnostics") - - -- Get diagnostics per buffer - for _, diag in ipairs(vim.diagnostic.get(0)) do - local hl_group = nil - if diag.severity == vim.diagnostic.severity.ERROR then - hl_group = "LineNrDiagnosticError" - elseif diag.severity == vim.diagnostic.severity.WARN then - hl_group = "LineNrDiagnosticWarn" - elseif diag.severity == vim.diagnostic.severity.INFO then - hl_group = "LineNrDiagnosticInfo" - elseif diag.severity == vim.diagnostic.severity.HINT then - hl_group = "LineNrDiagnosticHint" - end - - if hl_group then - vim.fn.sign_place(0, "LineNrDiagnostics", hl_group, vim.api.nvim_get_current_buf(), { - lnum = diag.lnum + 1, -- diagnostics are 0-indexed - priority = 10, - }) - end - end -end - --- Create the sign definitions -vim.fn.sign_define("LineNrDiagnosticError", { text = "", texthl = "LineNrDiagnosticError", numhl = "LineNrDiagnosticError" }) -vim.fn.sign_define("LineNrDiagnosticWarn", { text = "", texthl = "LineNrDiagnosticWarn", numhl = "LineNrDiagnosticWarn" }) -vim.fn.sign_define("LineNrDiagnosticInfo", { text = "", texthl = "LineNrDiagnosticInfo", numhl = "LineNrDiagnosticInfo" }) -vim.fn.sign_define("LineNrDiagnosticHint", { text = "", texthl = "LineNrDiagnosticHint", numhl = "LineNrDiagnosticHint" }) - --- Update line numbers when diagnostics change -vim.api.nvim_create_autocmd({ "DiagnosticChanged", "BufEnter", "CursorHold" }, { - callback = set_line_number_highlight, -}) diff --git a/.config/nvim/lua/manager.lua b/.config/nvim/lua/manager.lua deleted file mode 100644 index f450d31..0000000 --- a/.config/nvim/lua/manager.lua +++ /dev/null @@ -1,26 +0,0 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end -end -vim.opt.rtp:prepend(lazypath) - -vim.g.mapleader = " " -vim.g.maplocalleader = "\\" - -require("lazy").setup({ - spec = { - { import = "plugins" }, - }, - install = { colorscheme = { "modus" } }, - checker = { enabled = true, notify = false }, -}) diff --git a/.config/nvim/lua/plugins/autopairs.lua b/.config/nvim/lua/plugins/autopairs.lua deleted file mode 100644 index c37e301..0000000 --- a/.config/nvim/lua/plugins/autopairs.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "windwp/nvim-autopairs", - config = function() - require("nvim-autopairs").setup({ - disable_filetype = { "TelescopePrompt" , "vim" } - }) - end, -} diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua deleted file mode 100644 index 7728d19..0000000 --- a/.config/nvim/lua/plugins/cmp.lua +++ /dev/null @@ -1,103 +0,0 @@ -return { - 'hrsh7th/nvim-cmp', - dependencies = { - 'neovim/nvim-lspconfig', - 'hrsh7th/cmp-nvim-lsp', - 'hrsh7th/cmp-buffer', - 'hrsh7th/cmp-path', - 'lukas-reineke/cmp-rg', - 'onsails/lspkind.nvim' - }, - config = function() - local cmp = require('cmp') - local lspkind = require('lspkind') - cmp.setup({ - -- preselect = cmp.PreselectMode.None, - completion = { - completeopt = "menu,menuone,noinsert", - callSnippet = "Replace", - keywordSnippet = "Replace", - }, - window = { - completion = cmp.config.window.bordered({}), - documentation = cmp.config.window.bordered({}), - }, - snippet = { - expand = function(arg) - vim.snippet.expand(arg.body) - end - }, - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.confirm({ select = true }), - [''] = cmp.mapping.select_next_item(), - [''] = cmp.mapping.select_prev_item(), - [''] = cmp.mapping.abort(), - }), - sources = cmp.config.sources( - { - { name = 'nvim_lsp' }, - }, - { - { name = 'path' }, - } - -- { - -- { name = 'buffer' }, - -- { name = 'rg', keyword_length = 3 } - -- } - ), - formatting = { - format = lspkind.cmp_format({ - mode = 'symbol' - }) - }, - -- view = { - -- entries = 'native' - -- }, - }) - - local capabilities = require('cmp_nvim_lsp').default_capabilities() - vim.lsp.config('lua_ls', { - 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 - }) - vim.lsp.enable('clangd') - end -} diff --git a/.config/nvim/lua/plugins/colorizer.lua b/.config/nvim/lua/plugins/colorizer.lua deleted file mode 100644 index 460eb5c..0000000 --- a/.config/nvim/lua/plugins/colorizer.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - 'norcalli/nvim-colorizer.lua', - config = function() - require("colorizer").setup({ "*" }, { - RGB = true, - RRGGBB = true, - names = false, - RRGGBBAA = true, - rgb_fn = true, - hsl_fn = true, - css = false, - css_fn = false, - }) - end -} diff --git a/.config/nvim/lua/plugins/compile.lua b/.config/nvim/lua/plugins/compile.lua deleted file mode 100644 index 8d824de..0000000 --- a/.config/nvim/lua/plugins/compile.lua +++ /dev/null @@ -1,20 +0,0 @@ -return { - "ej-shafran/compile-mode.nvim", - branch = "latest", - dependencies = { - "nvim-lua/plenary.nvim", - }, - config = function() - vim.g.compile_mode = {} - - local compile_mode = require("compile-mode") - - vim.keymap.set("n", "cc", compile_mode.compile, - { desc = "Compile" }) - vim.keymap.set("n", "cr", compile_mode.recompile, - { desc = "Recompile" }) - vim.keymap.set("n", "cq", compile_mode.interrupt, - { desc = "Quit Compile (Interrupt)" }) - - end -} diff --git a/.config/nvim/lua/plugins/image.lua b/.config/nvim/lua/plugins/image.lua deleted file mode 100644 index 32c3540..0000000 --- a/.config/nvim/lua/plugins/image.lua +++ /dev/null @@ -1,20 +0,0 @@ -return { - '3rd/image.nvim', - config = function() - require("image").setup({ - backend = "sixel", - processor = "magick_cli", - integrations = { - markdown = { - enabled = true, - only_render_image_at_cursor = true, - only_render_image_at_cursor_mode = "popup", -- or "inline" - floating_windows = true, -- if true, images will be rendered in floating markdown windows - }, - }, - window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs" }, - editor_only_render_when_focused = true, -- auto show/hide images when the editor gains/looses focus - }) - end - -} diff --git a/.config/nvim/lua/plugins/lastplace.lua b/.config/nvim/lua/plugins/lastplace.lua deleted file mode 100644 index a393a90..0000000 --- a/.config/nvim/lua/plugins/lastplace.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - 'ethanholz/nvim-lastplace', - config = function() - require'nvim-lastplace'.setup({}) - end -} - diff --git a/.config/nvim/lua/plugins/lazygit.lua b/.config/nvim/lua/plugins/lazygit.lua deleted file mode 100644 index f9ddc84..0000000 --- a/.config/nvim/lua/plugins/lazygit.lua +++ /dev/null @@ -1,20 +0,0 @@ -return { - "kdheepak/lazygit.nvim", - lazy = true, - cmd = { - "LazyGit", - "LazyGitConfig", - "LazyGitCurrentFile", - "LazyGitFilter", - "LazyGitFilterCurrentFile", - }, - -- optional for floating window border decoration - dependencies = { - "nvim-lua/plenary.nvim", - }, - -- setting the keybinding for LazyGit with 'keys' is recommended in - -- order to load the plugin when the command is run for the first time - keys = { - { "g", "LazyGit", desc = "LazyGit" } - } -} diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua deleted file mode 100644 index 5412061..0000000 --- a/.config/nvim/lua/plugins/lualine.lua +++ /dev/null @@ -1,38 +0,0 @@ -return { - "nvim-lualine/lualine.nvim", - dependencies = { 'nvim-tree/nvim-web-devicons' }, - config = function() - require("lualine").setup({ - options = { - 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", { - "filetype", - icon_only = true, - separator = "", - padding = { right = 0, left = 1 }, - }, "filename" }, - lualine_b = {}, - lualine_c = {}, - lualine_x = {"diagnostics"}, - lualine_y = {}, - lualine_z = {} - } - }) - end, -} diff --git a/.config/nvim/lua/plugins/modus-themes.lua b/.config/nvim/lua/plugins/modus-themes.lua deleted file mode 100644 index 3058078..0000000 --- a/.config/nvim/lua/plugins/modus-themes.lua +++ /dev/null @@ -1,13 +0,0 @@ -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/oil.lua b/.config/nvim/lua/plugins/oil.lua deleted file mode 100644 index 3eb396d..0000000 --- a/.config/nvim/lua/plugins/oil.lua +++ /dev/null @@ -1,28 +0,0 @@ -return { - 'stevearc/oil.nvim', - dependencies = { "nvim-tree/nvim-web-devicons" }, - config = function() - - function _G.get_oil_winbar() - local bufnr = vim.api.nvim_win_get_buf(vim.g.statusline_winid) - local dir = require("oil").get_current_dir(bufnr) - if dir then - return vim.fn.fnamemodify(dir, ":~") - else - -- If there is no current directory (e.g. over ssh), just show the buffer name - return vim.api.nvim_buf_get_name(0) - end - end - - require('oil').setup({ - win_options = { - winbar = "%!v:lua.get_oil_winbar()", - }, - view_options = { - show_hidden = true - } - }) - vim.keymap.set('n', '-', 'Oil', {desc = "Open Dir in Oil"}) - end, - lazy = false, -} diff --git a/.config/nvim/lua/plugins/rainbow-delimiters.lua b/.config/nvim/lua/plugins/rainbow-delimiters.lua deleted file mode 100644 index 9fe4a06..0000000 --- a/.config/nvim/lua/plugins/rainbow-delimiters.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "hiphish/rainbow-delimiters.nvim", - config = function() - require('rainbow-delimiters.setup').setup({}) - end, -} diff --git a/.config/nvim/lua/plugins/render-markdown.lua b/.config/nvim/lua/plugins/render-markdown.lua deleted file mode 100644 index 9d52c5b..0000000 --- a/.config/nvim/lua/plugins/render-markdown.lua +++ /dev/null @@ -1,111 +0,0 @@ -return { - 'MeanderingProgrammer/render-markdown.nvim', - dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, - config = function() - require('render-markdown').setup({ - link = { - enabled = true, - render_modes = false, - footnote = { - enabled = true, - superscript = true, - prefix = '', - suffix = '', - }, - image = '󰥶 ', - email = '󰀓 ', - hyperlink = '󰌹 ', - highlight = 'RenderMarkdownLink', - wiki = { - icon = '󱗖 ', - body = function() - return nil - end, - highlight = 'RenderMarkdownWikiLink', - }, - custom = { - web = { pattern = '^http', icon = '󰖟 ' }, - github = { pattern = 'github%.com', icon = '󰊤 ' }, - stackoverflow = { pattern = 'stackoverflow%.com', icon = '󰓌 ' }, - wikipedia = { pattern = 'wikipedia%.org', icon = '󰖬 ' }, - youtube = { pattern = 'youtube%.com', icon = '󰗃 ' }, - reddit = { pattern = 'reddit%.com', icon = '󰑍 ' }, - old_reddit = { pattern = 'old.reddit%.com', icon = '󰑍 ' }, - gvc = { pattern = 'git%.venomade%.com', icon = '󰊢 ' }, - catechism = { pattern = 'ccc%.directory', icon = '󰅄 ' }, - bible = { pattern = 'biblenow%.net', icon = '󰂢 ' }, - luarocks = { pattern = 'luarocks%.org', icon = '󰢱 ' }, - }, - }, - callout = { - note = { raw = '[!NOTE]', rendered = '󰋽 Note', highlight = 'RenderMarkdownInfo' }, - tip = { raw = '[!TIP]', rendered = '󰌶 Tip', highlight = 'RenderMarkdownSuccess' }, - important = { raw = '[!IMPORTANT]', rendered = '󰅾 Important', highlight = 'RenderMarkdownHint' }, - warning = { raw = '[!WARNING]', rendered = '󰀪 Warning', highlight = 'RenderMarkdownWarn' }, - caution = { raw = '[!CAUTION]', rendered = '󰳦 Caution', highlight = 'RenderMarkdownError' }, - abstract = { raw = '[!ABSTRACT]', rendered = '󰨸 Abstract', highlight = 'RenderMarkdownInfo' }, - summary = { raw = '[!SUMMARY]', rendered = '󰨸 Summary', highlight = 'RenderMarkdownInfo' }, - tldr = { raw = '[!TLDR]', rendered = '󰨸 Tldr', highlight = 'RenderMarkdownInfo' }, - info = { raw = '[!INFO]', rendered = '󰋽 Info', highlight = 'RenderMarkdownInfo' }, - todo = { raw = '[!TODO]', rendered = '󰗡 Todo', highlight = 'RenderMarkdownInfo' }, - hint = { raw = '[!HINT]', rendered = '󰌶 Hint', highlight = 'RenderMarkdownSuccess' }, - success = { raw = '[!SUCCESS]', rendered = '󰄬 Success', highlight = 'RenderMarkdownSuccess' }, - check = { raw = '[!CHECK]', rendered = '󰄬 Check', highlight = 'RenderMarkdownSuccess' }, - done = { raw = '[!DONE]', rendered = '󰄬 Done', highlight = 'RenderMarkdownSuccess' }, - question = { raw = '[!QUESTION]', rendered = '󰘥 Question', highlight = 'RenderMarkdownWarn' }, - help = { raw = '[!HELP]', rendered = '󰘥 Help', highlight = 'RenderMarkdownWarn' }, - faq = { raw = '[!FAQ]', rendered = '󰘥 Faq', highlight = 'RenderMarkdownWarn' }, - attention = { raw = '[!ATTENTION]', rendered = '󰀪 Attention', highlight = 'RenderMarkdownWarn' }, - failure = { raw = '[!FAILURE]', rendered = '󰅖 Failure', highlight = 'RenderMarkdownError' }, - fail = { raw = '[!FAIL]', rendered = '󰅖 Fail', highlight = 'RenderMarkdownError' }, - missing = { raw = '[!MISSING]', rendered = '󰅖 Missing', highlight = 'RenderMarkdownError' }, - danger = { raw = '[!DANGER]', rendered = '󱐌 Danger', highlight = 'RenderMarkdownError' }, - error = { raw = '[!ERROR]', rendered = '󱐌 Error', highlight = 'RenderMarkdownError' }, - bug = { raw = '[!BUG]', rendered = '󰨰 Bug', highlight = 'RenderMarkdownError' }, - example = { raw = '[!EXAMPLE]', rendered = '󰉹 Example', highlight = 'RenderMarkdownHint' }, - quote = { raw = '[!QUOTE]', rendered = '󱆨 Quote', highlight = 'RenderMarkdownQuote' }, - cite = { raw = '[!CITE]', rendered = '󱆨 Cite', highlight = 'RenderMarkdownQuote' }, - }, - checkbox = { - enabled = true, - render_modes = false, - bullet = false, - right_pad = 1, - unchecked = { - icon = '󰄱 ', - highlight = 'RenderMarkdownUnchecked', - scope_highlight = nil, - }, - checked = { - icon = '󰱒 ', - highlight = 'RenderMarkdownChecked', - scope_highlight = nil, - }, - custom = { - todo = { raw = '[-]', rendered = '󰥔 ', highlight = 'RenderMarkdownTodo', scope_highlight = nil }, - }, - }, - bullet = { - enabled = true, - render_modes = false, - icons = { '●', '○', '◆', '◇' }, - ordered_icons = function(ctx) - local value = vim.trim(ctx.value) - local index = tonumber(value:sub(1, #value - 1)) - return ('%d.'):format(index > 1 and index or ctx.index) - end, - left_pad = 0, - right_pad = 0, - highlight = 'RenderMarkdownBullet', - scope_highlight = {}, - }, - quote = { icon = '▋' }, - anti_conceal = { - enabled = false, - }, - heading = { - width = 'block', - } - }) - end -} diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua deleted file mode 100644 index e761994..0000000 --- a/.config/nvim/lua/plugins/telescope.lua +++ /dev/null @@ -1,40 +0,0 @@ -return { - "nvim-telescope/telescope.nvim", - dependencies = { "nvim-lua/plenary.nvim" }, - config = function() - require("telescope").setup({ - defaults = { - borderchars = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, - }, - }) - - local tscope = require('telescope.builtin') - vim.keymap.set("n", "ff", function() - local cwd - if vim.bo.filetype == "oil" then - cwd = require("oil").get_current_dir() - else - cwd = vim.fn.expand("%:p:h") - end - tscope.find_files({ cwd = cwd }) - end, { desc = "Find File" }) - - vim.keymap.set("n", "fp", function() - tscope.find_files({ - cwd = vim.loop.cwd(), - }) - end, { desc = "Find Project File" }) - vim.keymap.set('n', 'bb', tscope.buffers, - { desc = "Find Buffer" }) - vim.keymap.set('n', 'fh', tscope.help_tags, - { desc = "Find Help" }) - vim.keymap.set('n', 'fg', tscope.live_grep, - { desc = "Find by Grep" }) - vim.keymap.set('n', 'fr', tscope.oldfiles, - { desc = "Find Recent Files" }) - vim.keymap.set('n', 'lw', tscope.diagnostics, - { desc = "Search Diagnostics" }) - vim.keymap.set('n', 'lg', tscope.lsp_references, - { desc = "Search References" }) - end, -} diff --git a/.config/nvim/lua/plugins/todo-comments.lua b/.config/nvim/lua/plugins/todo-comments.lua deleted file mode 100644 index 69f907e..0000000 --- a/.config/nvim/lua/plugins/todo-comments.lua +++ /dev/null @@ -1,14 +0,0 @@ -return { - "folke/todo-comments.nvim", - dependencies = { "nvim-lua/plenary.nvim" }, - opts = { - - }, - config = function() - require('todo-comments').setup({}) - vim.keymap.set('n', 'ft', function() - vim.cmd('TodoTelescope') - end, - { desc = "Find Buffer" }) - end, -} diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua deleted file mode 100644 index 5df6f44..0000000 --- a/.config/nvim/lua/plugins/ui.lua +++ /dev/null @@ -1,27 +0,0 @@ -return { - "OXY2DEV/ui.nvim", - lazy = false, - config = function() - require("ui").setup({ - cmdline = { - enable = true, - row_offset = 0, - }, - messages = { - enable = true, - }, - popupmenu = { - enable = false, - }, - }); - - local spec = require("ui.spec") - - spec.config.message.showcmd.modifier = function(_, lines) - return { - lines = { "" }, - extmarks = { {} }, - } - end - end, -}; diff --git a/.config/nvim/lua/plugins/zk.lua b/.config/nvim/lua/plugins/zk.lua deleted file mode 100644 index ce2e11a..0000000 --- a/.config/nvim/lua/plugins/zk.lua +++ /dev/null @@ -1,26 +0,0 @@ -return { - "zk-org/zk-nvim", - lazy = false, - config = function() - require("zk").setup({ - picker = "telescope", - lsp = { - config = { - name = "zk", - cmd = { "zk", "lsp" }, - filetypes = { "markdown" }, - }, - auto_attach = { - enabled = true, - }, - }, - }) - end, - keys = { - { "zz", "ZkNotes", desc = "Notes" }, - { "zl", "ZkLinks", desc = "Links" }, - { "zb", "ZkBacklinks", desc = "Backlinks" }, - { "zi", "ZkInsertLink", desc = "Insert Link" }, - { "zd", "ZkCd", desc = "Enter Directory" }, - } -} diff --git a/.config/nvim/lua/scripts/diagnostics.lua b/.config/nvim/lua/scripts/diagnostics.lua deleted file mode 100644 index 0855af1..0000000 --- a/.config/nvim/lua/scripts/diagnostics.lua +++ /dev/null @@ -1,760 +0,0 @@ ---[[ -*Fancy* diagnostics for `Neovim`. - -## Usage - -```lua -require("diagnostics").setup(); -``` - -You can then hit `D` to show diagnostics for the current line. - -## Highlight groups - -This script uses highlight groups provided by [highlights.lua](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/highlights.lua). - -The used groups are, -- `FancyDiagnostic`, Default group for diagnostics. -- `FancyDiagnosticIcon`, Default group for the icons of diagnostics. -- `FancyDiagnosticInfo`, Group for `information` diagnostics. -- `FancyDiagnosticInfoIcon`, Group for the icons of `information` diagnostics. -- `FancyDiagnosticHint`, Group for `hint` diagnostics. -- `FancyDiagnosticHintIcon`, Group for the icons of `hint` diagnostics. -- `FancyDiagnosticWarn`, Group for `warning` diagnostics. -- `FancyDiagnosticWarnIcon`, Group for the icons of `warning` diagnostics. -- `FancyDiagnosticError`, Group for `error` diagnostics. -- `FancyDiagnosticErrorIcon`, Group for the icons of `error` diagnostics. - -## Dependencies - -- [beacon.lua](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/beacon.lua), For highlighting cursor. -- [highlights.lua](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/highlights.lua), For highlight groups. -- [types/diagnostics.lua](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/types/diagnostics.lua), For type definition. - -## Configuration - -Use `setup()` for setting configuration. See [types/diagnostics.lua#diagnostics.config](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/types/diagnostics.lua#L3-L19) for the type definition. -]] -local diagnostics = {}; - ----@param level string ----@param icon string ----@return table -local function handle_diagnostic_level (level, icon) - ---|fS - - local default = string.format("FancyDiagnostic%s", "Default"); - local default_icon_hl = string.format("FancyDiagnostic%sIcon", "Default"); - - local bg = string.format("FancyDiagnostic%s", level); - local icon_hl = string.format("FancyDiagnostic%sIcon", level); - - return { - width = 3, - - line_hl_group = function (_, current) - return current and bg or default; - end, - icon = function (_, current) - return { - { "▌", current and icon_hl or default_icon_hl }, - { icon, current and icon_hl or default_icon_hl }, - { " ", current and bg or default }, - } - end, - padding = function (_, current) - return { - { "▌", current and icon_hl or default_icon_hl }, - { " ", current and icon_hl or default_icon_hl }, - { " ", current and bg or default }, - } - end - }; - - ---|fE -end - ----@class diagnostics.config -diagnostics.config = { - ---|fS - - keymap = "D", - - decoration_width = 4, - width = function (items) - local max = math.floor(vim.o.columns * 0.4); - local use = 1 - - for _, item in ipairs(items) do - local width = vim.fn.strdisplaywidth(item.message or ""); - - use = math.min( - math.max(width, 0), - max - ); - end - - return use; - end, - - max_height = function () - return math.floor(vim.o.lines * 0.4); - end, - - beacon = { - ---|fS - - default = { - from = function () - local fg = vim.api.nvim_get_hl(0, { name = "@comment", link = false }).fg; - return fg and string.format("#%06x", fg) or "#9399b2"; - end, - to = function () - local bg = vim.api.nvim_get_hl(0, { name = vim.o.statusline and "Cursorline" or "Normal", link = false }).bg; - return bg and string.format("#%06x", bg) or "#1e1e2e"; - end, - - steps = 10, - interval = 100, - }, - - [vim.diagnostic.severity.INFO] = { - from = function () - local fg = vim.api.nvim_get_hl(0, { name = "FancyDiagnosticInfoIcon", link = false }).fg; - return fg and string.format("#%06x", fg) or "#94e2d5"; - end - }, - [vim.diagnostic.severity.HINT] = { - from = function () - local fg = vim.api.nvim_get_hl(0, { name = "FancyDiagnosticHintIcon", link = false }).fg; - return fg and string.format("#%06x", fg) or "#94e2d5"; - end - }, - [vim.diagnostic.severity.WARN] = { - from = function () - local fg = vim.api.nvim_get_hl(0, { name = "FancyDiagnosticWarnIcon", link = false }).fg; - return fg and string.format("#%06x", fg) or "#f9e2af"; - end - }, - [vim.diagnostic.severity.ERROR] = { - from = function () - local fg = vim.api.nvim_get_hl(0, { name = "FancyDiagnosticErrorIcon", link = false }).fg; - return fg and string.format("#%06x", fg) or "#f38ba8"; - end - }, - - ---|fE - }, - - decorations = { - ---|fS - - [vim.diagnostic.severity.INFO] = handle_diagnostic_level("Info", "󰀨 "), - [vim.diagnostic.severity.HINT] = handle_diagnostic_level("Hint", "󰁨 "), - [vim.diagnostic.severity.WARN] = handle_diagnostic_level("Warn", " "), - [vim.diagnostic.severity.ERROR] = handle_diagnostic_level("Error", "󰅙 "), - - ---|fE - }, - - ---|fE -}; - ---[[ Evaluates `val`. ]] ----@param val any ----@param ... any ----@return any -local function eval(val, ...) - ---|fS - - if type(val) ~= "function" then - return val; - else - local can_call, new_val = pcall(val, ...); - - if can_call and new_val ~= nil then - return new_val; - end - end - - ---|fE -end - ---[[ Gets diagnostic item `decoration`. ]] ----@param level vim.diagnostic.Severity | "default" Diagnostic severity. ----@param ... any Extra arguments to be used for value evaluation. ----@return diagnostics.decorations__static decoration Static version of the diagnostic item's decoration. -local function get_decorations (level, ...) - ---|fS - - local output = {}; - - for k, v in pairs(diagnostics.config.decorations[level]) do - output[k] = eval(v, ...); - end - - return output; - - ---|fE -end - ---[[ Gets `beacon` configuration. ]] ----@param level? vim.diagnostic.Severity | "default" Diagnostic level. ----@param ... any Extra arguments to be used for value evaluation. ----@return table? -local function get_beacon_config (level, ...) - ---|fS - - if not level or not diagnostics.config.beacon then - return; - end - - local output = {}; - - for k, v in pairs(diagnostics.config.beacon[level]) do - output[k] = eval(v, ...); - end - - return output; - - ---|fE -end - ---[[ Turns given **virtual text** into **format string** for the statusline. ]] ----@param virt_text diagnostics.decoration_fragment[] Virtual text. ----@return string sign Virtual text as a sign(use in `statuscolumn`, `statusline`, `tabline` or `winbar`) -local function virt_text_to_sign (virt_text) - ---|fS - - local output = ""; - - for _, item in ipairs(virt_text) do - if type(item[2]) == "string" then - output = output .. string.format("%%#%s#%s", item[2], item[1]) .. "%#Normal#"; - else - output = output .. item[1]; - end - end - - return output; - - ---|fE -end - ------------------------------------------------------------------------------- - ----@type integer Decoration namespace. -diagnostics.ns = vim.api.nvim_create_namespace("fancy_diagnostics"); - ----@type integer, integer Diagnostics buffer & window. -diagnostics.buffer, diagnostics.window = nil, nil; - ---[[ Which *quadrant* the diagnostics window is currently using? ]] ----@type ----| "top_left" ----| "top_right" ----| "bottom_left" ----| "bottom_right" ----| "center" -diagnostics.quad = nil; - ----@type diagnostics.signs.entry[] -diagnostics.sign_data = {}; - ---[[ Prepares the buffer for the diagnostics window. ]] -diagnostics.__prepare = function () - ---|fS - - if not diagnostics.buffer or not vim.api.nvim_buf_is_valid(diagnostics.buffer) then - diagnostics.buffer = vim.api.nvim_create_buf(false, true); - end - - ---|fE -end - ---[[ Updates the *quadrant* which is being used by the diagnostics window. ]] ----@param quad ----| "top_left" ----| "top_right" ----| "bottom_left" ----| "bottom_right" ----| "center" ----@param state boolean -diagnostics.update_quad = function (quad, state) - ---|fS - - if not _G.__used_quads then - -- NIT: Should this set a default state value? - return; - end - - _G.__used_quads[quad] = state; - - ---|fE -end - ---[[ Returns `{opts}` for `nvim_open_win()` based on the parameters. ]] ----@param window integer Window ID. ----@param w integer Window width. ----@param h integer Window height. ----@return string | string[] border Window border. ----@return "editor" | "cursor" relative Relative position for floating window. ----@return "NE" | "NW" | "SE" | "SW" anchor Anchor position. ----@return integer row Window position in Y-axis. ----@return integer col Window position in X-axis. -diagnostics.__win_args = function (window, w, h) - ---|fS - - ---@type [ integer, integer ] - local cursor = vim.api.nvim_win_get_cursor(window); - ---@type table - local screenpos = vim.fn.screenpos(window, cursor[1], cursor[2]); - - local screen_width = vim.o.columns - 2; - local screen_height = vim.o.lines - vim.o.cmdheight - 2; - - local quad_pref = { "bottom_right", "top_right", "bottom_left", "top_left" }; - local quads = { - ---|fS - - center = { - relative = "editor", - anchor = "NW", - - row = math.ceil((vim.o.lines - h) / 2), - col = math.ceil((vim.o.columns - w) / 2), - border = "rounded" - }, - - top_left = { - condition = function () - if h >= screenpos.row then - -- Not enough space above. - return false; - elseif screenpos.curscol <= w then - -- Not enough space before. - return false; - end - - return true; - end, - - relative = "cursor", - border = { "╭", "─", "╮", "│", "┤", "─", "╰", "│" }, - anchor = "SE", - row = 0, - col = 1 - }, - top_right = { - condition = function () - if h >= screenpos.row then - -- Not enough space above. - return false; - elseif screenpos.curscol + w > screen_width then - -- Not enough space after. - return false; - end - - return true; - end, - - relative = "cursor", - border = { "╭", "─", "╮", "│", "╯", "─", "├", "│" }, - anchor = "SW", - row = 0, - col = 0 - }, - - bottom_left = { - condition = function () - if screenpos.row + h > screen_height then - -- Not enough space below. - return false; - elseif screenpos.curscol <= w then - -- Not enough space before. - return false; - end - - return true; - end, - - relative = "cursor", - border = { "╭", "─", "┤", "│", "╯", "─", "╰", "│" }, - anchor = "NE", - row = 1, - col = 1 - }, - bottom_right = { - condition = function () - if screenpos.row + h > screen_height then - -- Not enough space below. - return false; - elseif screenpos.curscol + w > screen_width then - -- Nor enough space after. - return false; - end - - return true; - end, - - relative = "cursor", - border = { "├", "─", "╮", "│", "╯", "─", "╰", "│" }, - anchor = "NW", - row = 1, - col = 0 - } - - ---|fE - }; - - for _, pref in ipairs(quad_pref) do - if _G.__used_quads and _G.__used_quads[pref] == true then - goto continue; - elseif not quads[pref] then - goto continue; - end - - local quad = quads[pref]; - local ran_cond, cond = pcall(quad.condition); - - if ran_cond and cond then - diagnostics.quad = pref; - return quad.border, quad.cursor, quad.anchor, quad.row, quad.col; - end - - ::continue:: - end - - diagnostics.quad = "center"; - - local fallback = quads.center; - return fallback.border, fallback.cursor, fallback.anchor, fallback.row, fallback.col; - - ---|fE -end - ------------------------------------------------------------------------------- - ---[[ Closes diagnostics window. ]] -diagnostics.close = function () - ---|fS - - if diagnostics.window and vim.api.nvim_win_is_valid(diagnostics.window) then - pcall(vim.api.nvim_win_close, diagnostics.window, true); - diagnostics.window = nil; - - if diagnostics.quad then - diagnostics.update_quad(diagnostics.quad, false); - diagnostics.quad = nil; - end - end - - ---|fE -end - ----@type beacon.instance Beacon instance to use for the Cursor. -diagnostics.__beacon = nil; - ---[[ External integrations. ]] ----@param window integer Window Id. ----@param beacon_config beacon.instance.config Configuration for `beacon`. -diagnostics.__integration = function (window, beacon_config) - ---|fS - - -- Markdown rendering. - if package.loaded["markview"] then - package.loaded["markview"].render(diagnostics.buffer, { - enable = true, - hybrid_mode = false - }, { - markdown_inline = { - inline_codes = { - virtual = true - } - } - }); - end - - -- Beacon. - if package.loaded["scripts.beacon"] then - if not diagnostics.__beacon then - diagnostics.__beacon = require("scripts.beacon").new(window, beacon_config); - else - diagnostics.__beacon:update(window, beacon_config); - end - - diagnostics.__beacon:start(); - end - - ---|fE -end - ---- Custom statuscolumn. ----@return string -_G.fancy_diagnostics_statuscolumn = function () - ---|fS - - if vim.tbl_isempty(diagnostics.sign_data) then - return ""; - end - - local lnum = vim.v.lnum; - - local data = diagnostics.sign_data[lnum]; - local start = data.start_row; - - if not data then - return ""; - elseif vim.v.virtnum == 0 and start == lnum then - return virt_text_to_sign(data.icon); - else - return virt_text_to_sign(data.padding or data.icon); - end - - ---|fE -end - ---- Hover function for diagnostics. ----@param window integer -diagnostics.hover = function (window) - ---|fS - - window = window or vim.api.nvim_get_current_win(); - - ---@type integer Source buffer. - local buffer = vim.api.nvim_win_get_buf(window); - ---@type [ integer, integer ] - local cursor = vim.api.nvim_win_get_cursor(window); - - local items = vim.diagnostic.get(buffer, { lnum = cursor[1] - 1 }); - - ---@type boolean Is the window already open? - local already_open = diagnostics.window and vim.api.nvim_win_is_valid(diagnostics.window); - - if #items == 0 then - -- No diagnostics available. - diagnostics.close(); - vim.api.nvim_echo({ - { " 󰾕 diagnostics.lua ", "DiagnosticVirtualTextWarn" }, - { ": ", "@comment" }, - { "No diagnostic under cursor", "@comment" }, - }, true, {}); - return; - elseif already_open then - vim.api.nvim_set_current_win(diagnostics.window); - return; - end - - if diagnostics.quad then - -- If the old window's quadrant wasn't freed, we free it here. - diagnostics.update_quad(diagnostics.quad, false) - end - - diagnostics.__prepare(); - vim.bo[diagnostics.buffer].ft = "markdown"; - - -- Clear old decorations. - vim.api.nvim_buf_clear_namespace(diagnostics.buffer, diagnostics.ns, 0, -1); - vim.api.nvim_buf_set_lines(diagnostics.buffer, 0, -1, false, {}); - - local W = eval(diagnostics.config.width, items); - local D = eval(diagnostics.config.decoration_width, items); - - ---@type table Configuration used for calculating window height. - local height_calc_config = { - relative = "editor", - - row = 0, col = 1, - width = W - D, height = 2, - - style = "minimal", - hide = true, - }; - - if not diagnostics.window or not vim.api.nvim_win_is_valid(diagnostics.window) then - diagnostics.window = vim.api.nvim_open_win(diagnostics.buffer, false, height_calc_config); - else - vim.api.nvim_win_set_config(diagnostics.window, height_calc_config); - end - - vim.wo[diagnostics.window].wrap = true; - vim.wo[diagnostics.window].linebreak = true; - vim.wo[diagnostics.window].breakindent = true; - - local diagnostic_lines = 0; - - ---@type integer Line where the cursor should be placed. - local cursor_y = 1; - local ranges = {}; - - local start_row = 1; - ---@type vim.diagnostic.Severity | nil - local level; - - diagnostics.sign_data = {}; - - for i, item in ipairs(items) do - ---|fS - - local from = i == 1 and 0 or -1; - local lines = vim.split(item.message, "\n", { trimempty = true }) - - local start = item.col; - local stop = item.end_col; - - local current = false; - - if cursor[2] >= start and cursor[2] <= stop then - cursor_y = i; - current = true; - end - - vim.api.nvim_buf_set_lines(diagnostics.buffer, from, -1, false, lines); - local decorations = get_decorations(item.severity, item, current); - - ranges[i] = { item.lnum, item.col }; - - vim.api.nvim_buf_set_extmark(diagnostics.buffer, diagnostics.ns, diagnostic_lines, 0, { - end_row = diagnostic_lines + #lines, - line_hl_group = decorations.line_hl_group, - }); - - diagnostic_lines = diagnostic_lines + #lines; - - if current == true and ( not level or item.severity < level ) then - level = item.severity; - end - - for _ = 1, #lines do - -- Signs - table.insert(diagnostics.sign_data, { - start_row = start_row, - - current = current, - width = decorations.width, - - icon = decorations.icon, - line_hl_group = decorations.line_hl_group, - padding = decorations.padding, - }); - end - - start_row = start_row + #lines; - - ---|fE - end - - local beacon_config = vim.tbl_extend("force", - get_beacon_config("default", {}, true), - get_beacon_config(level, {}, true) or {} - ); - - local H = vim.api.nvim_win_text_height(diagnostics.window, { start_row = 0, end_row = -1 }).all; - - local _, relative, anchor, row, col = diagnostics.__win_args(window, W, H); - - local win_config = { - relative = relative or "cursor", - - row = row or 0, col = col or 0, - width = W, height = H, - - anchor = anchor, - border = "none", - - style = "minimal", - hide = false, - }; - - vim.api.nvim_win_set_config(diagnostics.window, win_config); - vim.api.nvim_win_set_cursor(diagnostics.window, { cursor_y, 0 }); - - -- Update quadrant state. - diagnostics.update_quad(diagnostics.quad, true); - - -- Set necessary options. - vim.wo[diagnostics.window].signcolumn = "no"; - vim.wo[diagnostics.window].statuscolumn = "%!v:lua.fancy_diagnostics_statuscolumn()"; - - vim.wo[diagnostics.window].conceallevel = 3; - vim.wo[diagnostics.window].concealcursor = "ncv"; - - vim.wo[diagnostics.window].winhl = "FloatBorder:@comment,Normal:Normal"; - - diagnostics.__integration(window, beacon_config); - - ---|fS - - - vim.api.nvim_buf_set_keymap(diagnostics.buffer, "n", "", "", { - desc = "Go to diagnostic location", - callback = function () - ---|fS - - ---@type [ integer, integer ] Selected item. - local _cursor = vim.api.nvim_win_get_cursor(diagnostics.window); - ---@type [ integer, integer ]? Diagnostic location. - local location = ranges[_cursor[1]]; - - if location then - location[1] = location[1] + 1; - - vim.api.nvim_win_set_cursor(window, location); - vim.api.nvim_set_current_win(window); - - diagnostics.close(); - end - - ---|fE - end - }); - - vim.api.nvim_buf_set_keymap(diagnostics.buffer, "n", "q", "", { - desc = "Exit diagnostics window", - callback = function () - pcall(vim.api.nvim_set_current_win, window); - diagnostics.close(); - end - }); - - ---|fE - - ---|fE -end - ---- Configuration for the diagnostics module. ----@param config? diagnostics.config -diagnostics.setup = function (config) - ---|fS - - if type(config) == "table" then - diagnostics.config = vim.tbl_extend("force", diagnostics.config, config); - end - - if diagnostics.config.keymap then - vim.api.nvim_set_keymap("n", diagnostics.config.keymap, "", { - callback = diagnostics.hover - }); - end - - vim.api.nvim_create_autocmd({ - "CursorMoved", "CursorMovedI" - }, { - callback = function () - local win = vim.api.nvim_get_current_win(); - - if diagnostics.window and win ~= diagnostics.window then - diagnostics.close(); - - if diagnostics.quad then - diagnostics.update_quad(diagnostics.quad, false); - diagnostics.quad = nil; - end - end - end - }); - - ---|fE -end - -return diagnostics; diff --git a/.config/nvim/lua/scripts/init.lua b/.config/nvim/lua/scripts/init.lua deleted file mode 100644 index f0e0f11..0000000 --- a/.config/nvim/lua/scripts/init.lua +++ /dev/null @@ -1,3 +0,0 @@ -require("scripts.diagnostics").setup({ - keymap = "lh" -}) diff --git a/.config/rofi/config.rasi b/.config/rofi/config.rasi deleted file mode 100644 index c80fd01..0000000 --- a/.config/rofi/config.rasi +++ /dev/null @@ -1,10 +0,0 @@ -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 deleted file mode 100644 index 6cac4e6..0000000 --- a/.config/rofi/theme.rasi +++ /dev/null @@ -1,111 +0,0 @@ -* { - 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 deleted file mode 100644 index 931c115..0000000 --- a/.config/shell/alias +++ /dev/null @@ -1,11 +0,0 @@ -alias rgf='rg --files | rg' -alias ls='eza --icons=auto' -alias md='mkdir' -alias ec='emacsclient -nw' -alias cat='bat -pp' -alias man='batman' -alias diff='batdiff' -alias fzf="fzf --preview 'bat --style=numbers --color=always {}'" -alias tlbx="toolbox enter" -alias vi="nvim" -alias vim="nvim" diff --git a/.config/shell/functions b/.config/shell/functions deleted file mode 100644 index a300316..0000000 --- a/.config/shell/functions +++ /dev/null @@ -1,16 +0,0 @@ -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 deleted file mode 100644 index 974c435..0000000 --- a/.config/shell/vars +++ /dev/null @@ -1,2 +0,0 @@ -export EDITOR=nvim -export ZK_NOTEBOOK_DIR=/home/venomade/Documents/Notes diff --git a/.config/sway/config b/.config/sway/config deleted file mode 100644 index a5d6b0f..0000000 --- a/.config/sway/config +++ /dev/null @@ -1,278 +0,0 @@ -# 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 -i -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 deleted file mode 100644 index 9e82dc5..0000000 --- a/.config/swaylock/config +++ /dev/null @@ -1,39 +0,0 @@ -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 deleted file mode 100644 index 419e6be..0000000 --- a/.config/systemd/user/.gitignore +++ /dev/null @@ -1 +0,0 @@ -default.target.wants diff --git a/.config/systemd/user/cliphist.service b/.config/systemd/user/cliphist.service deleted file mode 100644 index 91ad51f..0000000 --- a/.config/systemd/user/cliphist.service +++ /dev/null @@ -1,13 +0,0 @@ -[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 deleted file mode 100644 index 771cfed..0000000 --- a/.config/systemd/user/kanata.service +++ /dev/null @@ -1,22 +0,0 @@ -[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/yazi/keymap.toml b/.config/yazi/keymap.toml deleted file mode 100644 index 27da4fc..0000000 --- a/.config/yazi/keymap.toml +++ /dev/null @@ -1,164 +0,0 @@ -"$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 = [ "" ] -run = "seek -5" - -[[mgr.prepend_keymap]] -on = [ "" ] -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 = [ "" ] -run = [ "move -999", "insert" ] - -[[input.prepend_keymap]] -on = [ "" ] -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 = [ "" ] -run = "arrow -1" - -[[cmp.prepend_keymap]] -on = [ "" ] -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 deleted file mode 100644 index 15d2429..0000000 --- a/.config/yazi/modus_vivendi.tmTheme +++ /dev/null @@ -1,439 +0,0 @@ - - - - - - - - name - modus_vivendi - settings - - - settings - - background - #000000 - caret - #989898 - foreground - #ffffff - invisibles - #989898 - lineHighlight - #2f3849 - selection - #7030af - findHighlight - #7a6100 - selectionBorder - #646464 - gutterForeground - #989898 - - - - name - Comment - scope - comment - settings - - fontStyle - italic - foreground - #989898 - - - - name - String - scope - string - settings - - foreground - #79a8ff - - - - name - Number - scope - constant.numeric - settings - - foreground - #82b0ec - - - - name - Built-in constant - scope - constant.language - settings - - foreground - #6ae4b9 - - - - name - User-defined constant - scope - constant.character, constant.other - settings - - foreground - #ffffff - - - - name - Variable - scope - variable - settings - - fontStyle - #00d3d0 - - - - name - Ruby's @variable - scope - variable.other.readwrite.instance - settings - - foreground - #00d3d0 - - - - name - String interpolation - scope - constant.character.escaped, constant.character.escape, string source, string source.ruby - settings - - foreground - #d2b580 - - - - name - Keyword - scope - keyword - settings - - fontStyle - italic - foreground - #b6a0ff - - - - name - Storage - scope - storage - settings - - foreground - #b6a0ff - - - - name - Storage type - scope - storage.type - settings - - foreground - #b6a0ff - - - - name - Class name - scope - entity.name.class - settings - - foreground - #b6a0ff - - - - name - Inherited class - scope - entity.other.inherited-class - settings - - foreground - #b6a0ff - - - - name - Function name - scope - entity.name.function - settings - - foreground - #feacd0 - - - - name - Function argument - scope - variable.parameter - settings - - foreground - #00d3d0 - - - - name - Tag name - scope - entity.name.tag - settings - - foreground - #00d3d0 - - - - name - Tag attribute - scope - entity.other.attribute-name - settings - - foreground - #00d3d0 - - - - name - Library function - scope - support.function - settings - - foreground - #feacd0 - - - - name - Library constant - scope - support.constant - settings - - foreground - #6ae4b9 - - - - name - Library class/type - scope - support.type, support.class - settings - - foreground - #6ae4b9 - - - - name - Library variable - scope - support.other.variable - settings - - foreground - #00d3d0 - - - - name - Invalid - scope - invalid - settings - - foreground - #989898 - - - - name - Invalid deprecated - scope - invalid.deprecated - settings - - foreground - #989898 - - - - name - JSON String - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #79a8ff - - - - name - diff.header - scope - meta.diff, meta.diff.header - settings - - foreground - #feacd0 - - - - name - diff.deleted - scope - markup.deleted - settings - - background - #4f1119 - - - - name - diff.inserted - scope - markup.inserted - settings - - background - #00381f - - - - name - diff.changed - scope - markup.changed - settings - - background - #363300 - - - - scope - constant.numeric.line-number.find-in-files - match - settings - - foreground - #82b0ec - - - - scope - entity.name.filename - settings - - foreground - #2fafff - - - - scope - message.error - settings - - fontStyle - bold - foreground - #ff7f9f - - - - name - JSON Punctuation - scope - punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json - settings - - foreground - #ffffff - - - - name - JSON Structure - scope - meta.structure.dictionary.json string.quoted.double.json - settings - - foreground - #79a8ff - - - - name - JSON String - scope - meta.structure.dictionary.value.json string.quoted.double.json - settings - - foreground - #79a8ff - - - - name - Escape Characters - scope - constant.character.escape - settings - - foreground - #d2b580 - - - - name - Regular Expressions - scope - string.regexp - settings - - foreground - #00c06f - - - - uuid - 09CE9B40-0137-442C-8512-7CEAFC78C153 - colorSpaceName - sRGB - semanticClass - Modus Vivendi - - diff --git a/.config/yazi/theme.toml b/.config/yazi/theme.toml deleted file mode 100644 index 7e83248..0000000 --- a/.config/yazi/theme.toml +++ /dev/null @@ -1,135 +0,0 @@ -# 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 deleted file mode 100644 index 4f05c94..0000000 --- a/.config/yazi/yazi.toml +++ /dev/null @@ -1,7 +0,0 @@ -[mgr] -sort_by = "mtime" -sort_reverse = true -show_hidden = true -linemode = "size" -scrolloff = 12 -ratio = [1,2,0] diff --git a/.config/zk/config.toml b/.config/zk/config.toml deleted file mode 100644 index 1e6df92..0000000 --- a/.config/zk/config.toml +++ /dev/null @@ -1,35 +0,0 @@ -[notebook] -dir = "~/Documents/Notes" - -[note] -filename = "{{slug title}}" -template = "note.md" - -[extra] -author = "Venomade" - -[format.markdown] -link-format = "wiki" -hashtags = true -colon-tags = false -multiword-tags = true - -[tool] -editor = "nvim" -shell = "/bin/bash" -fzf-preview = "bat -p --color always {-1}" - -[alias] -todo = "zk edit TODO" - -push = "git fetch && if [ \"$(git rev-parse @)\" = \"$(git rev-parse @{u})\" ]; then git add -A && git commit -m \"Update: $(date '+%Y-%m-%d %H:%M:%S')\" && git push; else echo \"Local branch is not up‑to‑date with the remote; aborting.\"; fi" -pull = "git pull" -history = "git log --pretty=format:\"%s\" | tail -10; echo" - -rm = "rm -i $@.md" - -[lsp] -[lsp.diagnostics] -wiki-title = "hint" -dead-link = "error" -missing-backlink = { level = "warning", position = "bottom" } diff --git a/.config/zk/templates/note.md b/.config/zk/templates/note.md deleted file mode 100644 index be4c1d2..0000000 --- a/.config/zk/templates/note.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: {{title}} -tags: [] ---- - -{{content}} diff --git a/.ghci b/.ghci deleted file mode 100644 index 31f559e..0000000 --- a/.ghci +++ /dev/null @@ -1 +0,0 @@ -:set prompt "λ " diff --git a/.gitconfig b/.gitconfig deleted file mode 100644 index 8a59d3e..0000000 --- a/.gitconfig +++ /dev/null @@ -1,3 +0,0 @@ -[user] - name = venomade - email = venomade@venomade.com diff --git a/.local/bin/battery-screen b/.local/bin/battery-screen deleted file mode 100755 index 26ac78a..0000000 --- a/.local/bin/battery-screen +++ /dev/null @@ -1,70 +0,0 @@ -#!/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 deleted file mode 100755 index 4307c9a..0000000 --- a/.local/bin/lock-screen +++ /dev/null @@ -1,13 +0,0 @@ -#!/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 deleted file mode 100755 index 840dea6..0000000 --- a/.local/bin/rofi-notes +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env sh - -note_list=$(zk list -f "{{ title }}" -d $'\n' -q) - -selected=$(printf "%s\n" "$note_list" | rofi -dmenu -i -p "󱞁 ") - -if [[ -n $selected ]]; then - foot -a=floating_foot -e sh -c "zk edit --match \"${selected}\"" -fi diff --git a/.local/bin/rofi-powermenu b/.local/bin/rofi-powermenu deleted file mode 100755 index 0ff3f9c..0000000 --- a/.local/bin/rofi-powermenu +++ /dev/null @@ -1,49 +0,0 @@ -#!/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 deleted file mode 100755 index 5a4f13b..0000000 --- a/.local/bin/rofi-ppd +++ /dev/null @@ -1,48 +0,0 @@ -#!/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 deleted file mode 100755 index f71557d..0000000 --- a/.local/bin/rofi-translate +++ /dev/null @@ -1,60 +0,0 @@ -#!/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 deleted file mode 100755 index fb45671..0000000 --- a/.local/bin/rofi-wifimenu +++ /dev/null @@ -1,38 +0,0 @@ -#!/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 deleted file mode 100755 index f30fabe..0000000 --- a/.local/bin/take-slurpshot +++ /dev/null @@ -1,18 +0,0 @@ -#!/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 deleted file mode 100644 index 3ac887a..0000000 --- a/.local/share/applications/jellyfin-tui.desktop +++ /dev/null @@ -1,5 +0,0 @@ -[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 deleted file mode 100644 index 24580fa..0000000 --- a/.local/share/applications/yazi.desktop +++ /dev/null @@ -1,6 +0,0 @@ -[Desktop Entry] -Name=Yazi -Exec=foot yazi %U -Type=Application -Terminal=false -MimeType=inode/directory; diff --git a/.stow-local-ignore b/.stow-local-ignore deleted file mode 100644 index 35cdaf3..0000000 --- a/.stow-local-ignore +++ /dev/null @@ -1,2 +0,0 @@ -.git -README.md diff --git a/README.md b/README.md index 2fe72b5..5fc3be5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ # 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. +These are my dotfiles managed with [Home Manager](https://nixos.wiki/wiki/Home_Manager). 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 @@ + + + + + + + + name + modus_vivendi + settings + + + settings + + background + #000000 + caret + #989898 + foreground + #ffffff + invisibles + #989898 + lineHighlight + #2f3849 + selection + #7030af + findHighlight + #7a6100 + selectionBorder + #646464 + gutterForeground + #989898 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #989898 + + + + name + String + scope + string + settings + + foreground + #79a8ff + + + + name + Number + scope + constant.numeric + settings + + foreground + #82b0ec + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #6ae4b9 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #ffffff + + + + name + Variable + scope + variable + settings + + fontStyle + #00d3d0 + + + + name + Ruby's @variable + scope + variable.other.readwrite.instance + settings + + foreground + #00d3d0 + + + + name + String interpolation + scope + constant.character.escaped, constant.character.escape, string source, string source.ruby + settings + + foreground + #d2b580 + + + + name + Keyword + scope + keyword + settings + + fontStyle + italic + foreground + #b6a0ff + + + + name + Storage + scope + storage + settings + + foreground + #b6a0ff + + + + name + Storage type + scope + storage.type + settings + + foreground + #b6a0ff + + + + name + Class name + scope + entity.name.class + settings + + foreground + #b6a0ff + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + foreground + #b6a0ff + + + + name + Function name + scope + entity.name.function + settings + + foreground + #feacd0 + + + + name + Function argument + scope + variable.parameter + settings + + foreground + #00d3d0 + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #00d3d0 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + foreground + #00d3d0 + + + + name + Library function + scope + support.function + settings + + foreground + #feacd0 + + + + name + Library constant + scope + support.constant + settings + + foreground + #6ae4b9 + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #6ae4b9 + + + + name + Library variable + scope + support.other.variable + settings + + foreground + #00d3d0 + + + + name + Invalid + scope + invalid + settings + + foreground + #989898 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + foreground + #989898 + + + + name + JSON String + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #79a8ff + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #feacd0 + + + + name + diff.deleted + scope + markup.deleted + settings + + background + #4f1119 + + + + name + diff.inserted + scope + markup.inserted + settings + + background + #00381f + + + + name + diff.changed + scope + markup.changed + settings + + background + #363300 + + + + scope + constant.numeric.line-number.find-in-files - match + settings + + foreground + #82b0ec + + + + scope + entity.name.filename + settings + + foreground + #2fafff + + + + scope + message.error + settings + + fontStyle + bold + foreground + #ff7f9f + + + + name + JSON Punctuation + scope + punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json + settings + + foreground + #ffffff + + + + name + JSON Structure + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #79a8ff + + + + name + JSON String + scope + meta.structure.dictionary.value.json string.quoted.double.json + settings + + foreground + #79a8ff + + + + name + Escape Characters + scope + constant.character.escape + settings + + foreground + #d2b580 + + + + name + Regular Expressions + scope + string.regexp + settings + + foreground + #00c06f + + + + uuid + 09CE9B40-0137-442C-8512-7CEAFC78C153 + colorSpaceName + sRGB + semanticClass + Modus Vivendi + + 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/lazygit/.gitignore b/config/lazygit/.gitignore new file mode 100644 index 0000000..ace2661 --- /dev/null +++ b/config/lazygit/.gitignore @@ -0,0 +1 @@ +state.yml 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: + suspendApp: + return: + quitWithoutChangingDirectory: Q + togglePanel: + prevItem: + nextItem: + prevItem-alt: e + nextItem-alt: n + prevPage: ',' + nextPage: . + scrollLeft: H + scrollRight: I + gotoTop: < + gotoBottom: '>' + gotoTop-alt: + gotoBottom-alt: + toggleRangeSelect: v + rangeSelectDown: + rangeSelectUp: + prevBlock: + nextBlock: + prevBlock-alt: h + nextBlock-alt: i + nextBlock-alt2: + prevBlock-alt2: + jumpToBlock: + - "1" + - "2" + - "3" + - "4" + - "5" + focusMainView: "0" + nextMatch: "k" + prevMatch: "K" + startSearch: / + optionMenu: + optionMenu-alt1: '?' + select: + goInto: + confirm: + confirmMenu: + confirmSuggestion: + confirmInEditor: + confirmInEditor-alt: + remove: d + new: "n" + edit: j + openFile: o + scrollUpMain: + scrollDownMain: + scrollUpMain-alt1: E + scrollDownMain-alt1: N + scrollUpMain-alt2: + scrollDownMain-alt2: + executeShellCommand: ':' + createRebaseOptionsMenu: m + + # 'Files' appended for legacy reasons + pushFiles: P + + # 'Files' appended for legacy reasons + pullFiles: p + refresh: R + createPatchOptionsMenu: + nextTab: ']' + prevTab: '[' + nextScreenMode: + + prevScreenMode: _ + cyclePagers: '|' + undo: z + redo: Z + filteringMenu: + diffingMenu: W + diffingMenu-alt: + copyToClipboard: + openRecentRepos: + submitEditorText: + extrasMenu: '@' + toggleWhitespaceInDiffView: + increaseContextInDiffView: '}' + decreaseContextInDiffView: '{' + increaseRenameSimilarityThreshold: ) + decreaseRenameSimilarityThreshold: ( + openDiffTool: + status: + checkForUpdate: u + recentRepos: + allBranchesLogGraph: a + files: + commitChanges: c + commitChangesWithoutHook: w + amendLastCommit: A + commitChangesWithEditor: C + findBaseCommitForFixup: + confirmDiscard: x + ignoreFile: l + refreshFiles: r + stashAllChanges: s + viewStashOptions: S + toggleStagedAll: a + viewResetOptions: D + fetch: f + toggleTreeView: '`' + openMergeOptions: M + openStatusFilter: + copyFileInfoToClipboard: "y" + collapseAll: '-' + expandAll: = + branches: + createPullRequest: o + viewPullRequestOptions: O + copyPullRequestURL: + 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: + moveUpCommit: + amendToCommit: A + resetCommitAuthor: a + pickCommit: p + revertCommit: t + cherryPickCopy: C + pasteCommits: V + markCommitAsBaseForRebase: B + tagCommit: T + checkoutCommit: + resetCherryPick: + copyCommitAttributeToClipboard: "y" + openLogMenu: + 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: diff --git a/config/nvim/.gitignore b/config/nvim/.gitignore new file mode 100644 index 0000000..e033bc6 --- /dev/null +++ b/config/nvim/.gitignore @@ -0,0 +1 @@ +lazy-lock.json diff --git a/config/nvim/.luarc.json b/config/nvim/.luarc.json new file mode 100644 index 0000000..bd8a14b --- /dev/null +++ b/config/nvim/.luarc.json @@ -0,0 +1,18 @@ +{ + "$schema": "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json", + "Lua.runtime.version": "LuaJIT", + "diagnostics.globals": ["vim"], + "workspace.checkThirdParty": false, + "workspace.library": [ + "$VIMRUNTIME" + ], + "Lua.diagnostics.enable": true, + "Lua.format.defaultConfig": { + "indent_style": "space", + "indent_size": "2" + }, + "typeFormat.config": false, + "completion.callSnippet": "Replace", + "completion.showWord": "Disable", + "completion.workspaceWord": false +} diff --git a/config/nvim/ftplugin/markdown.lua b/config/nvim/ftplugin/markdown.lua new file mode 100644 index 0000000..4f658e4 --- /dev/null +++ b/config/nvim/ftplugin/markdown.lua @@ -0,0 +1,10 @@ +vim.keymap.set('n', 'n', 'gj', { buffer = true, noremap = true }) +vim.keymap.set('n', 'e', 'gk', { buffer = true, noremap = true }) + +vim.opt_local.wrap = true +vim.opt_local.linebreak = true + +vim.opt_local.number = false +vim.opt_local.relativenumber = false + +vim.treesitter.start(vim.api.nvim_get_current_buf(), 'markdown') diff --git a/config/nvim/init.lua b/config/nvim/init.lua new file mode 100644 index 0000000..4b53a96 --- /dev/null +++ b/config/nvim/init.lua @@ -0,0 +1,10 @@ +-- Setup Config +require("config.colemak") +require("config.options") +require("config.keymaps") + +-- Setup Lazy Plugin Manager +require("manager") + +-- Test Script +require("scripts") diff --git a/config/nvim/lua/config/colemak.lua b/config/nvim/lua/config/colemak.lua new file mode 100644 index 0000000..e6ce33b --- /dev/null +++ b/config/nvim/lua/config/colemak.lua @@ -0,0 +1,32 @@ +local function map(mode, lhs, rhs, opts) + local options = { noremap = true, silent = true } + if opts then + options = vim.tbl_extend("force", options, opts) + end + vim.keymap.set(mode, lhs, rhs, options) +end + +map("", "n", "j") +map("", "e", "k") +map("", "i", "l") +map("", "j", "n") +map("", "k", "e") +map("", "l", "i") +map("", "K", "E") +map("", "N", "J") +map("", "E", "K") -- As in 'Explore' documentation +map("", "L", "I") +map("", "I", "L") +map("", "J", "N") + +map("n", "h", "h") +map("n", "n", "j") +map("n", "e", "k") +map("n", "i", "l") + +map ("", "gn", "gj") +map ("", "ge", "gk") + +-- Kakoune Holdover +map ("", "gh", "0") +map ("", "gi", "$") diff --git a/config/nvim/lua/config/keymaps.lua b/config/nvim/lua/config/keymaps.lua new file mode 100644 index 0000000..f30283e --- /dev/null +++ b/config/nvim/lua/config/keymaps.lua @@ -0,0 +1,53 @@ +vim.g.mapleader = " " +vim.keymap.set("n", "bk", vim.cmd.bdelete, + { desc = "Kill Buffer" }) +vim.keymap.set("n", "bn", vim.cmd.bnext, + { desc = "Next Buffer" }) +vim.keymap.set("n", "bp", vim.cmd.bprev, + { desc = "Previous Buffer" }) + +vim.keymap.set("n", "E", vim.lsp.buf.hover) +vim.keymap.set("n", "", vim.diagnostic.open_float) +vim.keymap.set("n", "ld", vim.lsp.buf.definition, + { desc = "Go to Definition" }) +vim.keymap.set("n", "lt", vim.lsp.buf.type_definition, + { desc = "Go to Type Definition"} ) +vim.keymap.set("n", "li", vim.lsp.buf.implementation, + { desc = "Go to Implementation" }) +vim.keymap.set("n", "la", vim.lsp.buf.code_action, + { desc = "Show Code Actions" }) +vim.keymap.set("n", "lf", vim.lsp.buf.format, + { desc = "Format Document" }) +vim.keymap.set("n", "lr", vim.lsp.buf.rename, + { desc = "Rename" }) +vim.keymap.set("n", "le", function() + vim.diagnostic.jump({ count = 1, float = true }) +end, + { desc = "Next Error" }) +-- vim.keymap.set("n", "lh", vim.lsp.buf.hover, +-- { desc = "Hover Diagnostics" }) + +vim.keymap.set("n", "wh", vim.cmd.split, + { desc = "Split Window Horizontally" }) +vim.keymap.set("n", "wv", vim.cmd.vsplit, + { desc = "Split Window Vertically" }) +vim.keymap.set("n", "wc", "q", + { desc = "Close Window" }) +vim.keymap.set("n", "ww", "w", + { desc = "Next Window" }) + +vim.keymap.set("n", "foc", function() + vim.cmd('edit ~/.config/nvim/init.lua') +end, { desc = "Open Config File" }) + +vim.keymap.set("n", "fot", function() + vim.cmd('edit ~/Documents/TODO.org') +end, { desc = "Open Todo File" }) + +vim.keymap.set("n", "fon", function() + vim.cmd('edit ~/Documents/Notes.org') +end, { desc = "Open Notes File" }) + +vim.keymap.set('n', '', '==', { noremap = true, silent = true }) + +vim.keymap.set('n', 'q:', ':q', { noremap = true }) diff --git a/config/nvim/lua/config/options.lua b/config/nvim/lua/config/options.lua new file mode 100644 index 0000000..ba0bb5a --- /dev/null +++ b/config/nvim/lua/config/options.lua @@ -0,0 +1,107 @@ +vim.opt.nu = true +vim.opt.rnu = true + +vim.opt.tabstop = 2 +vim.opt.softtabstop = 2 +vim.opt.shiftwidth = 2 +vim.opt.expandtab = true +vim.opt.autoindent = true + +vim.opt.smartindent = true + +vim.opt.wrap = false + +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undodir" +vim.opt.undofile = true + +vim.opt.hlsearch = false +vim.opt.incsearch = true + +vim.opt.termguicolors = true + +vim.opt.scrolloff = 12 + +vim.opt.updatetime = 50 + +vim.opt.splitbelow = true +vim.opt.splitright = true + +vim.opt.encoding = "utf-8" + +vim.opt.shell = "zsh" + +vim.opt.mouse = "a" + +vim.opt.ignorecase = true +vim.opt.smartcase = true +vim.opt.incsearch = true + +-- vim.opt.cursorline = true + +vim.opt.title = true + +vim.opt.clipboard = "unnamedplus" + +vim.opt.colorcolumn = "80" + +vim.opt.signcolumn = 'no' + +vim.cmd "set showtabline=0 | set laststatus=0" + +vim.wo.fillchars='eob: ' + +vim.opt.conceallevel = 3 + +-- Window Borders +vim.o.winborder = 'single' + +-- Remove Whitespaces on File Save +vim.api.nvim_create_autocmd({ "BufWritePre" }, { + pattern = { "*" }, + command = [[%s/\s\+$//e]], +}) + +-- Define highlight groups for line numbers with diagnostics +vim.api.nvim_set_hl(0, "LineNrDiagnosticError", { bg = "#3f1d1d", fg = "#ff6c6b" }) +vim.api.nvim_set_hl(0, "LineNrDiagnosticWarn", { bg = "#3f311d", fg = "#ECBE7B" }) +vim.api.nvim_set_hl(0, "LineNrDiagnosticInfo", { bg = "#1d2d3f", fg = "#51afef" }) +vim.api.nvim_set_hl(0, "LineNrDiagnosticHint", { bg = "#1d3f2d", fg = "#98be65" }) + +local function set_line_number_highlight() + -- Clear existing highlights + vim.fn.sign_unplace("LineNrDiagnostics") + + -- Get diagnostics per buffer + for _, diag in ipairs(vim.diagnostic.get(0)) do + local hl_group = nil + if diag.severity == vim.diagnostic.severity.ERROR then + hl_group = "LineNrDiagnosticError" + elseif diag.severity == vim.diagnostic.severity.WARN then + hl_group = "LineNrDiagnosticWarn" + elseif diag.severity == vim.diagnostic.severity.INFO then + hl_group = "LineNrDiagnosticInfo" + elseif diag.severity == vim.diagnostic.severity.HINT then + hl_group = "LineNrDiagnosticHint" + end + + if hl_group then + vim.fn.sign_place(0, "LineNrDiagnostics", hl_group, vim.api.nvim_get_current_buf(), { + lnum = diag.lnum + 1, -- diagnostics are 0-indexed + priority = 10, + }) + end + end +end + +-- Create the sign definitions +vim.fn.sign_define("LineNrDiagnosticError", { text = "", texthl = "LineNrDiagnosticError", numhl = "LineNrDiagnosticError" }) +vim.fn.sign_define("LineNrDiagnosticWarn", { text = "", texthl = "LineNrDiagnosticWarn", numhl = "LineNrDiagnosticWarn" }) +vim.fn.sign_define("LineNrDiagnosticInfo", { text = "", texthl = "LineNrDiagnosticInfo", numhl = "LineNrDiagnosticInfo" }) +vim.fn.sign_define("LineNrDiagnosticHint", { text = "", texthl = "LineNrDiagnosticHint", numhl = "LineNrDiagnosticHint" }) + +-- Update line numbers when diagnostics change +vim.api.nvim_create_autocmd({ "DiagnosticChanged", "BufEnter", "CursorHold" }, { + callback = set_line_number_highlight, +}) diff --git a/config/nvim/lua/manager.lua b/config/nvim/lua/manager.lua new file mode 100644 index 0000000..f450d31 --- /dev/null +++ b/config/nvim/lua/manager.lua @@ -0,0 +1,26 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +require("lazy").setup({ + spec = { + { import = "plugins" }, + }, + install = { colorscheme = { "modus" } }, + checker = { enabled = true, notify = false }, +}) diff --git a/config/nvim/lua/plugins/autopairs.lua b/config/nvim/lua/plugins/autopairs.lua new file mode 100644 index 0000000..c37e301 --- /dev/null +++ b/config/nvim/lua/plugins/autopairs.lua @@ -0,0 +1,8 @@ +return { + "windwp/nvim-autopairs", + config = function() + require("nvim-autopairs").setup({ + disable_filetype = { "TelescopePrompt" , "vim" } + }) + end, +} diff --git a/config/nvim/lua/plugins/cmp.lua b/config/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..69a2396 --- /dev/null +++ b/config/nvim/lua/plugins/cmp.lua @@ -0,0 +1,99 @@ +return { + 'hrsh7th/nvim-cmp', + dependencies = { + 'neovim/nvim-lspconfig', + 'hrsh7th/cmp-nvim-lsp', + 'hrsh7th/cmp-buffer', + 'hrsh7th/cmp-path', + 'lukas-reineke/cmp-rg', + 'onsails/lspkind.nvim' + }, + config = function() + local cmp = require('cmp') + local lspkind = require('lspkind') + cmp.setup({ + -- preselect = cmp.PreselectMode.None, + completion = { + completeopt = "menu,menuone,noinsert", + callSnippet = "Replace", + keywordSnippet = "Replace", + }, + window = { + completion = cmp.config.window.bordered({}), + documentation = cmp.config.window.bordered({}), + }, + snippet = { + expand = function(arg) + vim.snippet.expand(arg.body) + end + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.confirm({ select = true }), + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.abort(), + }), + sources = cmp.config.sources( + { + { name = 'nvim_lsp' }, + }, + { + { name = 'path' }, + } + -- { + -- { name = 'buffer' }, + -- { name = 'rg', keyword_length = 3 } + -- } + ), + formatting = { + format = lspkind.cmp_format({ + mode = 'symbol' + }) + }, + -- view = { + -- entries = 'native' + -- }, + }) + + local capabilities = require('cmp_nvim_lsp').default_capabilities() + vim.lsp.config('lua_ls', { + -- 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', + path = vim.list_extend( + vim.split(package.path, ';'), + { + '?.lua', + '?/init.lua', + './stubs/?.lua', + './stubs/?/init.lua' + }), + }, + workspace = { + library = { + vim.env.HOME .. '/.luarocks/share/lua/5.4', + './stubs' + }, + }, + diagnostics = { + enable = true, + }, + }, + }, + }) + + vim.lsp.enable('lua_ls') + vim.lsp.config('clangd', { + capabilities = capabilities + }) + vim.lsp.enable('clangd') + end +} diff --git a/config/nvim/lua/plugins/colorizer.lua b/config/nvim/lua/plugins/colorizer.lua new file mode 100644 index 0000000..460eb5c --- /dev/null +++ b/config/nvim/lua/plugins/colorizer.lua @@ -0,0 +1,15 @@ +return { + 'norcalli/nvim-colorizer.lua', + config = function() + require("colorizer").setup({ "*" }, { + RGB = true, + RRGGBB = true, + names = false, + RRGGBBAA = true, + rgb_fn = true, + hsl_fn = true, + css = false, + css_fn = false, + }) + end +} diff --git a/config/nvim/lua/plugins/compile.lua b/config/nvim/lua/plugins/compile.lua new file mode 100644 index 0000000..8d824de --- /dev/null +++ b/config/nvim/lua/plugins/compile.lua @@ -0,0 +1,20 @@ +return { + "ej-shafran/compile-mode.nvim", + branch = "latest", + dependencies = { + "nvim-lua/plenary.nvim", + }, + config = function() + vim.g.compile_mode = {} + + local compile_mode = require("compile-mode") + + vim.keymap.set("n", "cc", compile_mode.compile, + { desc = "Compile" }) + vim.keymap.set("n", "cr", compile_mode.recompile, + { desc = "Recompile" }) + vim.keymap.set("n", "cq", compile_mode.interrupt, + { desc = "Quit Compile (Interrupt)" }) + + end +} diff --git a/config/nvim/lua/plugins/image.lua b/config/nvim/lua/plugins/image.lua new file mode 100644 index 0000000..32c3540 --- /dev/null +++ b/config/nvim/lua/plugins/image.lua @@ -0,0 +1,20 @@ +return { + '3rd/image.nvim', + config = function() + require("image").setup({ + backend = "sixel", + processor = "magick_cli", + integrations = { + markdown = { + enabled = true, + only_render_image_at_cursor = true, + only_render_image_at_cursor_mode = "popup", -- or "inline" + floating_windows = true, -- if true, images will be rendered in floating markdown windows + }, + }, + window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs" }, + editor_only_render_when_focused = true, -- auto show/hide images when the editor gains/looses focus + }) + end + +} diff --git a/config/nvim/lua/plugins/lastplace.lua b/config/nvim/lua/plugins/lastplace.lua new file mode 100644 index 0000000..a393a90 --- /dev/null +++ b/config/nvim/lua/plugins/lastplace.lua @@ -0,0 +1,7 @@ +return { + 'ethanholz/nvim-lastplace', + config = function() + require'nvim-lastplace'.setup({}) + end +} + diff --git a/config/nvim/lua/plugins/lazygit.lua b/config/nvim/lua/plugins/lazygit.lua new file mode 100644 index 0000000..f9ddc84 --- /dev/null +++ b/config/nvim/lua/plugins/lazygit.lua @@ -0,0 +1,20 @@ +return { + "kdheepak/lazygit.nvim", + lazy = true, + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + -- optional for floating window border decoration + dependencies = { + "nvim-lua/plenary.nvim", + }, + -- setting the keybinding for LazyGit with 'keys' is recommended in + -- order to load the plugin when the command is run for the first time + keys = { + { "g", "LazyGit", desc = "LazyGit" } + } +} diff --git a/config/nvim/lua/plugins/lualine.lua b/config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..5412061 --- /dev/null +++ b/config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,38 @@ +return { + "nvim-lualine/lualine.nvim", + dependencies = { 'nvim-tree/nvim-web-devicons' }, + config = function() + require("lualine").setup({ + options = { + 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", { + "filetype", + icon_only = true, + separator = "", + padding = { right = 0, left = 1 }, + }, "filename" }, + lualine_b = {}, + lualine_c = {}, + lualine_x = {"diagnostics"}, + lualine_y = {}, + lualine_z = {} + } + }) + end, +} 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/oil.lua b/config/nvim/lua/plugins/oil.lua new file mode 100644 index 0000000..3eb396d --- /dev/null +++ b/config/nvim/lua/plugins/oil.lua @@ -0,0 +1,28 @@ +return { + 'stevearc/oil.nvim', + dependencies = { "nvim-tree/nvim-web-devicons" }, + config = function() + + function _G.get_oil_winbar() + local bufnr = vim.api.nvim_win_get_buf(vim.g.statusline_winid) + local dir = require("oil").get_current_dir(bufnr) + if dir then + return vim.fn.fnamemodify(dir, ":~") + else + -- If there is no current directory (e.g. over ssh), just show the buffer name + return vim.api.nvim_buf_get_name(0) + end + end + + require('oil').setup({ + win_options = { + winbar = "%!v:lua.get_oil_winbar()", + }, + view_options = { + show_hidden = true + } + }) + vim.keymap.set('n', '-', 'Oil', {desc = "Open Dir in Oil"}) + end, + lazy = false, +} diff --git a/config/nvim/lua/plugins/rainbow-delimiters.lua b/config/nvim/lua/plugins/rainbow-delimiters.lua new file mode 100644 index 0000000..9fe4a06 --- /dev/null +++ b/config/nvim/lua/plugins/rainbow-delimiters.lua @@ -0,0 +1,6 @@ +return { + "hiphish/rainbow-delimiters.nvim", + config = function() + require('rainbow-delimiters.setup').setup({}) + end, +} diff --git a/config/nvim/lua/plugins/render-markdown.lua b/config/nvim/lua/plugins/render-markdown.lua new file mode 100644 index 0000000..9d52c5b --- /dev/null +++ b/config/nvim/lua/plugins/render-markdown.lua @@ -0,0 +1,111 @@ +return { + 'MeanderingProgrammer/render-markdown.nvim', + dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, + config = function() + require('render-markdown').setup({ + link = { + enabled = true, + render_modes = false, + footnote = { + enabled = true, + superscript = true, + prefix = '', + suffix = '', + }, + image = '󰥶 ', + email = '󰀓 ', + hyperlink = '󰌹 ', + highlight = 'RenderMarkdownLink', + wiki = { + icon = '󱗖 ', + body = function() + return nil + end, + highlight = 'RenderMarkdownWikiLink', + }, + custom = { + web = { pattern = '^http', icon = '󰖟 ' }, + github = { pattern = 'github%.com', icon = '󰊤 ' }, + stackoverflow = { pattern = 'stackoverflow%.com', icon = '󰓌 ' }, + wikipedia = { pattern = 'wikipedia%.org', icon = '󰖬 ' }, + youtube = { pattern = 'youtube%.com', icon = '󰗃 ' }, + reddit = { pattern = 'reddit%.com', icon = '󰑍 ' }, + old_reddit = { pattern = 'old.reddit%.com', icon = '󰑍 ' }, + gvc = { pattern = 'git%.venomade%.com', icon = '󰊢 ' }, + catechism = { pattern = 'ccc%.directory', icon = '󰅄 ' }, + bible = { pattern = 'biblenow%.net', icon = '󰂢 ' }, + luarocks = { pattern = 'luarocks%.org', icon = '󰢱 ' }, + }, + }, + callout = { + note = { raw = '[!NOTE]', rendered = '󰋽 Note', highlight = 'RenderMarkdownInfo' }, + tip = { raw = '[!TIP]', rendered = '󰌶 Tip', highlight = 'RenderMarkdownSuccess' }, + important = { raw = '[!IMPORTANT]', rendered = '󰅾 Important', highlight = 'RenderMarkdownHint' }, + warning = { raw = '[!WARNING]', rendered = '󰀪 Warning', highlight = 'RenderMarkdownWarn' }, + caution = { raw = '[!CAUTION]', rendered = '󰳦 Caution', highlight = 'RenderMarkdownError' }, + abstract = { raw = '[!ABSTRACT]', rendered = '󰨸 Abstract', highlight = 'RenderMarkdownInfo' }, + summary = { raw = '[!SUMMARY]', rendered = '󰨸 Summary', highlight = 'RenderMarkdownInfo' }, + tldr = { raw = '[!TLDR]', rendered = '󰨸 Tldr', highlight = 'RenderMarkdownInfo' }, + info = { raw = '[!INFO]', rendered = '󰋽 Info', highlight = 'RenderMarkdownInfo' }, + todo = { raw = '[!TODO]', rendered = '󰗡 Todo', highlight = 'RenderMarkdownInfo' }, + hint = { raw = '[!HINT]', rendered = '󰌶 Hint', highlight = 'RenderMarkdownSuccess' }, + success = { raw = '[!SUCCESS]', rendered = '󰄬 Success', highlight = 'RenderMarkdownSuccess' }, + check = { raw = '[!CHECK]', rendered = '󰄬 Check', highlight = 'RenderMarkdownSuccess' }, + done = { raw = '[!DONE]', rendered = '󰄬 Done', highlight = 'RenderMarkdownSuccess' }, + question = { raw = '[!QUESTION]', rendered = '󰘥 Question', highlight = 'RenderMarkdownWarn' }, + help = { raw = '[!HELP]', rendered = '󰘥 Help', highlight = 'RenderMarkdownWarn' }, + faq = { raw = '[!FAQ]', rendered = '󰘥 Faq', highlight = 'RenderMarkdownWarn' }, + attention = { raw = '[!ATTENTION]', rendered = '󰀪 Attention', highlight = 'RenderMarkdownWarn' }, + failure = { raw = '[!FAILURE]', rendered = '󰅖 Failure', highlight = 'RenderMarkdownError' }, + fail = { raw = '[!FAIL]', rendered = '󰅖 Fail', highlight = 'RenderMarkdownError' }, + missing = { raw = '[!MISSING]', rendered = '󰅖 Missing', highlight = 'RenderMarkdownError' }, + danger = { raw = '[!DANGER]', rendered = '󱐌 Danger', highlight = 'RenderMarkdownError' }, + error = { raw = '[!ERROR]', rendered = '󱐌 Error', highlight = 'RenderMarkdownError' }, + bug = { raw = '[!BUG]', rendered = '󰨰 Bug', highlight = 'RenderMarkdownError' }, + example = { raw = '[!EXAMPLE]', rendered = '󰉹 Example', highlight = 'RenderMarkdownHint' }, + quote = { raw = '[!QUOTE]', rendered = '󱆨 Quote', highlight = 'RenderMarkdownQuote' }, + cite = { raw = '[!CITE]', rendered = '󱆨 Cite', highlight = 'RenderMarkdownQuote' }, + }, + checkbox = { + enabled = true, + render_modes = false, + bullet = false, + right_pad = 1, + unchecked = { + icon = '󰄱 ', + highlight = 'RenderMarkdownUnchecked', + scope_highlight = nil, + }, + checked = { + icon = '󰱒 ', + highlight = 'RenderMarkdownChecked', + scope_highlight = nil, + }, + custom = { + todo = { raw = '[-]', rendered = '󰥔 ', highlight = 'RenderMarkdownTodo', scope_highlight = nil }, + }, + }, + bullet = { + enabled = true, + render_modes = false, + icons = { '●', '○', '◆', '◇' }, + ordered_icons = function(ctx) + local value = vim.trim(ctx.value) + local index = tonumber(value:sub(1, #value - 1)) + return ('%d.'):format(index > 1 and index or ctx.index) + end, + left_pad = 0, + right_pad = 0, + highlight = 'RenderMarkdownBullet', + scope_highlight = {}, + }, + quote = { icon = '▋' }, + anti_conceal = { + enabled = false, + }, + heading = { + width = 'block', + } + }) + end +} diff --git a/config/nvim/lua/plugins/scratch-buffer.lua b/config/nvim/lua/plugins/scratch-buffer.lua new file mode 100644 index 0000000..a6526ab --- /dev/null +++ b/config/nvim/lua/plugins/scratch-buffer.lua @@ -0,0 +1,11 @@ +return { + 'miguelcrespo/scratch-buffer.nvim', + event = 'VimEnter', + config = function() + require('scratch-buffer').setup() + end, + dependencies = { + -- Recommended if you want interactive evaluation + "Olical/conjure" + } +} diff --git a/config/nvim/lua/plugins/telescope.lua b/config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..e761994 --- /dev/null +++ b/config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,40 @@ +return { + "nvim-telescope/telescope.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + config = function() + require("telescope").setup({ + defaults = { + borderchars = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, + }, + }) + + local tscope = require('telescope.builtin') + vim.keymap.set("n", "ff", function() + local cwd + if vim.bo.filetype == "oil" then + cwd = require("oil").get_current_dir() + else + cwd = vim.fn.expand("%:p:h") + end + tscope.find_files({ cwd = cwd }) + end, { desc = "Find File" }) + + vim.keymap.set("n", "fp", function() + tscope.find_files({ + cwd = vim.loop.cwd(), + }) + end, { desc = "Find Project File" }) + vim.keymap.set('n', 'bb', tscope.buffers, + { desc = "Find Buffer" }) + vim.keymap.set('n', 'fh', tscope.help_tags, + { desc = "Find Help" }) + vim.keymap.set('n', 'fg', tscope.live_grep, + { desc = "Find by Grep" }) + vim.keymap.set('n', 'fr', tscope.oldfiles, + { desc = "Find Recent Files" }) + vim.keymap.set('n', 'lw', tscope.diagnostics, + { desc = "Search Diagnostics" }) + vim.keymap.set('n', 'lg', tscope.lsp_references, + { desc = "Search References" }) + end, +} diff --git a/config/nvim/lua/plugins/todo-comments.lua b/config/nvim/lua/plugins/todo-comments.lua new file mode 100644 index 0000000..69f907e --- /dev/null +++ b/config/nvim/lua/plugins/todo-comments.lua @@ -0,0 +1,14 @@ +return { + "folke/todo-comments.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + opts = { + + }, + config = function() + require('todo-comments').setup({}) + vim.keymap.set('n', 'ft', function() + vim.cmd('TodoTelescope') + end, + { desc = "Find Buffer" }) + end, +} diff --git a/config/nvim/lua/plugins/ui.lua b/config/nvim/lua/plugins/ui.lua new file mode 100644 index 0000000..5df6f44 --- /dev/null +++ b/config/nvim/lua/plugins/ui.lua @@ -0,0 +1,27 @@ +return { + "OXY2DEV/ui.nvim", + lazy = false, + config = function() + require("ui").setup({ + cmdline = { + enable = true, + row_offset = 0, + }, + messages = { + enable = true, + }, + popupmenu = { + enable = false, + }, + }); + + local spec = require("ui.spec") + + spec.config.message.showcmd.modifier = function(_, lines) + return { + lines = { "" }, + extmarks = { {} }, + } + end + end, +}; diff --git a/config/nvim/lua/plugins/zk.lua b/config/nvim/lua/plugins/zk.lua new file mode 100644 index 0000000..ce2e11a --- /dev/null +++ b/config/nvim/lua/plugins/zk.lua @@ -0,0 +1,26 @@ +return { + "zk-org/zk-nvim", + lazy = false, + config = function() + require("zk").setup({ + picker = "telescope", + lsp = { + config = { + name = "zk", + cmd = { "zk", "lsp" }, + filetypes = { "markdown" }, + }, + auto_attach = { + enabled = true, + }, + }, + }) + end, + keys = { + { "zz", "ZkNotes", desc = "Notes" }, + { "zl", "ZkLinks", desc = "Links" }, + { "zb", "ZkBacklinks", desc = "Backlinks" }, + { "zi", "ZkInsertLink", desc = "Insert Link" }, + { "zd", "ZkCd", desc = "Enter Directory" }, + } +} diff --git a/config/nvim/lua/scripts/diagnostics.lua b/config/nvim/lua/scripts/diagnostics.lua new file mode 100644 index 0000000..0855af1 --- /dev/null +++ b/config/nvim/lua/scripts/diagnostics.lua @@ -0,0 +1,760 @@ +--[[ +*Fancy* diagnostics for `Neovim`. + +## Usage + +```lua +require("diagnostics").setup(); +``` + +You can then hit `D` to show diagnostics for the current line. + +## Highlight groups + +This script uses highlight groups provided by [highlights.lua](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/highlights.lua). + +The used groups are, +- `FancyDiagnostic`, Default group for diagnostics. +- `FancyDiagnosticIcon`, Default group for the icons of diagnostics. +- `FancyDiagnosticInfo`, Group for `information` diagnostics. +- `FancyDiagnosticInfoIcon`, Group for the icons of `information` diagnostics. +- `FancyDiagnosticHint`, Group for `hint` diagnostics. +- `FancyDiagnosticHintIcon`, Group for the icons of `hint` diagnostics. +- `FancyDiagnosticWarn`, Group for `warning` diagnostics. +- `FancyDiagnosticWarnIcon`, Group for the icons of `warning` diagnostics. +- `FancyDiagnosticError`, Group for `error` diagnostics. +- `FancyDiagnosticErrorIcon`, Group for the icons of `error` diagnostics. + +## Dependencies + +- [beacon.lua](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/beacon.lua), For highlighting cursor. +- [highlights.lua](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/highlights.lua), For highlight groups. +- [types/diagnostics.lua](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/types/diagnostics.lua), For type definition. + +## Configuration + +Use `setup()` for setting configuration. See [types/diagnostics.lua#diagnostics.config](https://github.com/OXY2DEV/nvim/blob/main/lua/scripts/types/diagnostics.lua#L3-L19) for the type definition. +]] +local diagnostics = {}; + +---@param level string +---@param icon string +---@return table +local function handle_diagnostic_level (level, icon) + ---|fS + + local default = string.format("FancyDiagnostic%s", "Default"); + local default_icon_hl = string.format("FancyDiagnostic%sIcon", "Default"); + + local bg = string.format("FancyDiagnostic%s", level); + local icon_hl = string.format("FancyDiagnostic%sIcon", level); + + return { + width = 3, + + line_hl_group = function (_, current) + return current and bg or default; + end, + icon = function (_, current) + return { + { "▌", current and icon_hl or default_icon_hl }, + { icon, current and icon_hl or default_icon_hl }, + { " ", current and bg or default }, + } + end, + padding = function (_, current) + return { + { "▌", current and icon_hl or default_icon_hl }, + { " ", current and icon_hl or default_icon_hl }, + { " ", current and bg or default }, + } + end + }; + + ---|fE +end + +---@class diagnostics.config +diagnostics.config = { + ---|fS + + keymap = "D", + + decoration_width = 4, + width = function (items) + local max = math.floor(vim.o.columns * 0.4); + local use = 1 + + for _, item in ipairs(items) do + local width = vim.fn.strdisplaywidth(item.message or ""); + + use = math.min( + math.max(width, 0), + max + ); + end + + return use; + end, + + max_height = function () + return math.floor(vim.o.lines * 0.4); + end, + + beacon = { + ---|fS + + default = { + from = function () + local fg = vim.api.nvim_get_hl(0, { name = "@comment", link = false }).fg; + return fg and string.format("#%06x", fg) or "#9399b2"; + end, + to = function () + local bg = vim.api.nvim_get_hl(0, { name = vim.o.statusline and "Cursorline" or "Normal", link = false }).bg; + return bg and string.format("#%06x", bg) or "#1e1e2e"; + end, + + steps = 10, + interval = 100, + }, + + [vim.diagnostic.severity.INFO] = { + from = function () + local fg = vim.api.nvim_get_hl(0, { name = "FancyDiagnosticInfoIcon", link = false }).fg; + return fg and string.format("#%06x", fg) or "#94e2d5"; + end + }, + [vim.diagnostic.severity.HINT] = { + from = function () + local fg = vim.api.nvim_get_hl(0, { name = "FancyDiagnosticHintIcon", link = false }).fg; + return fg and string.format("#%06x", fg) or "#94e2d5"; + end + }, + [vim.diagnostic.severity.WARN] = { + from = function () + local fg = vim.api.nvim_get_hl(0, { name = "FancyDiagnosticWarnIcon", link = false }).fg; + return fg and string.format("#%06x", fg) or "#f9e2af"; + end + }, + [vim.diagnostic.severity.ERROR] = { + from = function () + local fg = vim.api.nvim_get_hl(0, { name = "FancyDiagnosticErrorIcon", link = false }).fg; + return fg and string.format("#%06x", fg) or "#f38ba8"; + end + }, + + ---|fE + }, + + decorations = { + ---|fS + + [vim.diagnostic.severity.INFO] = handle_diagnostic_level("Info", "󰀨 "), + [vim.diagnostic.severity.HINT] = handle_diagnostic_level("Hint", "󰁨 "), + [vim.diagnostic.severity.WARN] = handle_diagnostic_level("Warn", " "), + [vim.diagnostic.severity.ERROR] = handle_diagnostic_level("Error", "󰅙 "), + + ---|fE + }, + + ---|fE +}; + +--[[ Evaluates `val`. ]] +---@param val any +---@param ... any +---@return any +local function eval(val, ...) + ---|fS + + if type(val) ~= "function" then + return val; + else + local can_call, new_val = pcall(val, ...); + + if can_call and new_val ~= nil then + return new_val; + end + end + + ---|fE +end + +--[[ Gets diagnostic item `decoration`. ]] +---@param level vim.diagnostic.Severity | "default" Diagnostic severity. +---@param ... any Extra arguments to be used for value evaluation. +---@return diagnostics.decorations__static decoration Static version of the diagnostic item's decoration. +local function get_decorations (level, ...) + ---|fS + + local output = {}; + + for k, v in pairs(diagnostics.config.decorations[level]) do + output[k] = eval(v, ...); + end + + return output; + + ---|fE +end + +--[[ Gets `beacon` configuration. ]] +---@param level? vim.diagnostic.Severity | "default" Diagnostic level. +---@param ... any Extra arguments to be used for value evaluation. +---@return table? +local function get_beacon_config (level, ...) + ---|fS + + if not level or not diagnostics.config.beacon then + return; + end + + local output = {}; + + for k, v in pairs(diagnostics.config.beacon[level]) do + output[k] = eval(v, ...); + end + + return output; + + ---|fE +end + +--[[ Turns given **virtual text** into **format string** for the statusline. ]] +---@param virt_text diagnostics.decoration_fragment[] Virtual text. +---@return string sign Virtual text as a sign(use in `statuscolumn`, `statusline`, `tabline` or `winbar`) +local function virt_text_to_sign (virt_text) + ---|fS + + local output = ""; + + for _, item in ipairs(virt_text) do + if type(item[2]) == "string" then + output = output .. string.format("%%#%s#%s", item[2], item[1]) .. "%#Normal#"; + else + output = output .. item[1]; + end + end + + return output; + + ---|fE +end + +------------------------------------------------------------------------------ + +---@type integer Decoration namespace. +diagnostics.ns = vim.api.nvim_create_namespace("fancy_diagnostics"); + +---@type integer, integer Diagnostics buffer & window. +diagnostics.buffer, diagnostics.window = nil, nil; + +--[[ Which *quadrant* the diagnostics window is currently using? ]] +---@type +---| "top_left" +---| "top_right" +---| "bottom_left" +---| "bottom_right" +---| "center" +diagnostics.quad = nil; + +---@type diagnostics.signs.entry[] +diagnostics.sign_data = {}; + +--[[ Prepares the buffer for the diagnostics window. ]] +diagnostics.__prepare = function () + ---|fS + + if not diagnostics.buffer or not vim.api.nvim_buf_is_valid(diagnostics.buffer) then + diagnostics.buffer = vim.api.nvim_create_buf(false, true); + end + + ---|fE +end + +--[[ Updates the *quadrant* which is being used by the diagnostics window. ]] +---@param quad +---| "top_left" +---| "top_right" +---| "bottom_left" +---| "bottom_right" +---| "center" +---@param state boolean +diagnostics.update_quad = function (quad, state) + ---|fS + + if not _G.__used_quads then + -- NIT: Should this set a default state value? + return; + end + + _G.__used_quads[quad] = state; + + ---|fE +end + +--[[ Returns `{opts}` for `nvim_open_win()` based on the parameters. ]] +---@param window integer Window ID. +---@param w integer Window width. +---@param h integer Window height. +---@return string | string[] border Window border. +---@return "editor" | "cursor" relative Relative position for floating window. +---@return "NE" | "NW" | "SE" | "SW" anchor Anchor position. +---@return integer row Window position in Y-axis. +---@return integer col Window position in X-axis. +diagnostics.__win_args = function (window, w, h) + ---|fS + + ---@type [ integer, integer ] + local cursor = vim.api.nvim_win_get_cursor(window); + ---@type table + local screenpos = vim.fn.screenpos(window, cursor[1], cursor[2]); + + local screen_width = vim.o.columns - 2; + local screen_height = vim.o.lines - vim.o.cmdheight - 2; + + local quad_pref = { "bottom_right", "top_right", "bottom_left", "top_left" }; + local quads = { + ---|fS + + center = { + relative = "editor", + anchor = "NW", + + row = math.ceil((vim.o.lines - h) / 2), + col = math.ceil((vim.o.columns - w) / 2), + border = "rounded" + }, + + top_left = { + condition = function () + if h >= screenpos.row then + -- Not enough space above. + return false; + elseif screenpos.curscol <= w then + -- Not enough space before. + return false; + end + + return true; + end, + + relative = "cursor", + border = { "╭", "─", "╮", "│", "┤", "─", "╰", "│" }, + anchor = "SE", + row = 0, + col = 1 + }, + top_right = { + condition = function () + if h >= screenpos.row then + -- Not enough space above. + return false; + elseif screenpos.curscol + w > screen_width then + -- Not enough space after. + return false; + end + + return true; + end, + + relative = "cursor", + border = { "╭", "─", "╮", "│", "╯", "─", "├", "│" }, + anchor = "SW", + row = 0, + col = 0 + }, + + bottom_left = { + condition = function () + if screenpos.row + h > screen_height then + -- Not enough space below. + return false; + elseif screenpos.curscol <= w then + -- Not enough space before. + return false; + end + + return true; + end, + + relative = "cursor", + border = { "╭", "─", "┤", "│", "╯", "─", "╰", "│" }, + anchor = "NE", + row = 1, + col = 1 + }, + bottom_right = { + condition = function () + if screenpos.row + h > screen_height then + -- Not enough space below. + return false; + elseif screenpos.curscol + w > screen_width then + -- Nor enough space after. + return false; + end + + return true; + end, + + relative = "cursor", + border = { "├", "─", "╮", "│", "╯", "─", "╰", "│" }, + anchor = "NW", + row = 1, + col = 0 + } + + ---|fE + }; + + for _, pref in ipairs(quad_pref) do + if _G.__used_quads and _G.__used_quads[pref] == true then + goto continue; + elseif not quads[pref] then + goto continue; + end + + local quad = quads[pref]; + local ran_cond, cond = pcall(quad.condition); + + if ran_cond and cond then + diagnostics.quad = pref; + return quad.border, quad.cursor, quad.anchor, quad.row, quad.col; + end + + ::continue:: + end + + diagnostics.quad = "center"; + + local fallback = quads.center; + return fallback.border, fallback.cursor, fallback.anchor, fallback.row, fallback.col; + + ---|fE +end + +------------------------------------------------------------------------------ + +--[[ Closes diagnostics window. ]] +diagnostics.close = function () + ---|fS + + if diagnostics.window and vim.api.nvim_win_is_valid(diagnostics.window) then + pcall(vim.api.nvim_win_close, diagnostics.window, true); + diagnostics.window = nil; + + if diagnostics.quad then + diagnostics.update_quad(diagnostics.quad, false); + diagnostics.quad = nil; + end + end + + ---|fE +end + +---@type beacon.instance Beacon instance to use for the Cursor. +diagnostics.__beacon = nil; + +--[[ External integrations. ]] +---@param window integer Window Id. +---@param beacon_config beacon.instance.config Configuration for `beacon`. +diagnostics.__integration = function (window, beacon_config) + ---|fS + + -- Markdown rendering. + if package.loaded["markview"] then + package.loaded["markview"].render(diagnostics.buffer, { + enable = true, + hybrid_mode = false + }, { + markdown_inline = { + inline_codes = { + virtual = true + } + } + }); + end + + -- Beacon. + if package.loaded["scripts.beacon"] then + if not diagnostics.__beacon then + diagnostics.__beacon = require("scripts.beacon").new(window, beacon_config); + else + diagnostics.__beacon:update(window, beacon_config); + end + + diagnostics.__beacon:start(); + end + + ---|fE +end + +--- Custom statuscolumn. +---@return string +_G.fancy_diagnostics_statuscolumn = function () + ---|fS + + if vim.tbl_isempty(diagnostics.sign_data) then + return ""; + end + + local lnum = vim.v.lnum; + + local data = diagnostics.sign_data[lnum]; + local start = data.start_row; + + if not data then + return ""; + elseif vim.v.virtnum == 0 and start == lnum then + return virt_text_to_sign(data.icon); + else + return virt_text_to_sign(data.padding or data.icon); + end + + ---|fE +end + +--- Hover function for diagnostics. +---@param window integer +diagnostics.hover = function (window) + ---|fS + + window = window or vim.api.nvim_get_current_win(); + + ---@type integer Source buffer. + local buffer = vim.api.nvim_win_get_buf(window); + ---@type [ integer, integer ] + local cursor = vim.api.nvim_win_get_cursor(window); + + local items = vim.diagnostic.get(buffer, { lnum = cursor[1] - 1 }); + + ---@type boolean Is the window already open? + local already_open = diagnostics.window and vim.api.nvim_win_is_valid(diagnostics.window); + + if #items == 0 then + -- No diagnostics available. + diagnostics.close(); + vim.api.nvim_echo({ + { " 󰾕 diagnostics.lua ", "DiagnosticVirtualTextWarn" }, + { ": ", "@comment" }, + { "No diagnostic under cursor", "@comment" }, + }, true, {}); + return; + elseif already_open then + vim.api.nvim_set_current_win(diagnostics.window); + return; + end + + if diagnostics.quad then + -- If the old window's quadrant wasn't freed, we free it here. + diagnostics.update_quad(diagnostics.quad, false) + end + + diagnostics.__prepare(); + vim.bo[diagnostics.buffer].ft = "markdown"; + + -- Clear old decorations. + vim.api.nvim_buf_clear_namespace(diagnostics.buffer, diagnostics.ns, 0, -1); + vim.api.nvim_buf_set_lines(diagnostics.buffer, 0, -1, false, {}); + + local W = eval(diagnostics.config.width, items); + local D = eval(diagnostics.config.decoration_width, items); + + ---@type table Configuration used for calculating window height. + local height_calc_config = { + relative = "editor", + + row = 0, col = 1, + width = W - D, height = 2, + + style = "minimal", + hide = true, + }; + + if not diagnostics.window or not vim.api.nvim_win_is_valid(diagnostics.window) then + diagnostics.window = vim.api.nvim_open_win(diagnostics.buffer, false, height_calc_config); + else + vim.api.nvim_win_set_config(diagnostics.window, height_calc_config); + end + + vim.wo[diagnostics.window].wrap = true; + vim.wo[diagnostics.window].linebreak = true; + vim.wo[diagnostics.window].breakindent = true; + + local diagnostic_lines = 0; + + ---@type integer Line where the cursor should be placed. + local cursor_y = 1; + local ranges = {}; + + local start_row = 1; + ---@type vim.diagnostic.Severity | nil + local level; + + diagnostics.sign_data = {}; + + for i, item in ipairs(items) do + ---|fS + + local from = i == 1 and 0 or -1; + local lines = vim.split(item.message, "\n", { trimempty = true }) + + local start = item.col; + local stop = item.end_col; + + local current = false; + + if cursor[2] >= start and cursor[2] <= stop then + cursor_y = i; + current = true; + end + + vim.api.nvim_buf_set_lines(diagnostics.buffer, from, -1, false, lines); + local decorations = get_decorations(item.severity, item, current); + + ranges[i] = { item.lnum, item.col }; + + vim.api.nvim_buf_set_extmark(diagnostics.buffer, diagnostics.ns, diagnostic_lines, 0, { + end_row = diagnostic_lines + #lines, + line_hl_group = decorations.line_hl_group, + }); + + diagnostic_lines = diagnostic_lines + #lines; + + if current == true and ( not level or item.severity < level ) then + level = item.severity; + end + + for _ = 1, #lines do + -- Signs + table.insert(diagnostics.sign_data, { + start_row = start_row, + + current = current, + width = decorations.width, + + icon = decorations.icon, + line_hl_group = decorations.line_hl_group, + padding = decorations.padding, + }); + end + + start_row = start_row + #lines; + + ---|fE + end + + local beacon_config = vim.tbl_extend("force", + get_beacon_config("default", {}, true), + get_beacon_config(level, {}, true) or {} + ); + + local H = vim.api.nvim_win_text_height(diagnostics.window, { start_row = 0, end_row = -1 }).all; + + local _, relative, anchor, row, col = diagnostics.__win_args(window, W, H); + + local win_config = { + relative = relative or "cursor", + + row = row or 0, col = col or 0, + width = W, height = H, + + anchor = anchor, + border = "none", + + style = "minimal", + hide = false, + }; + + vim.api.nvim_win_set_config(diagnostics.window, win_config); + vim.api.nvim_win_set_cursor(diagnostics.window, { cursor_y, 0 }); + + -- Update quadrant state. + diagnostics.update_quad(diagnostics.quad, true); + + -- Set necessary options. + vim.wo[diagnostics.window].signcolumn = "no"; + vim.wo[diagnostics.window].statuscolumn = "%!v:lua.fancy_diagnostics_statuscolumn()"; + + vim.wo[diagnostics.window].conceallevel = 3; + vim.wo[diagnostics.window].concealcursor = "ncv"; + + vim.wo[diagnostics.window].winhl = "FloatBorder:@comment,Normal:Normal"; + + diagnostics.__integration(window, beacon_config); + + ---|fS + + + vim.api.nvim_buf_set_keymap(diagnostics.buffer, "n", "", "", { + desc = "Go to diagnostic location", + callback = function () + ---|fS + + ---@type [ integer, integer ] Selected item. + local _cursor = vim.api.nvim_win_get_cursor(diagnostics.window); + ---@type [ integer, integer ]? Diagnostic location. + local location = ranges[_cursor[1]]; + + if location then + location[1] = location[1] + 1; + + vim.api.nvim_win_set_cursor(window, location); + vim.api.nvim_set_current_win(window); + + diagnostics.close(); + end + + ---|fE + end + }); + + vim.api.nvim_buf_set_keymap(diagnostics.buffer, "n", "q", "", { + desc = "Exit diagnostics window", + callback = function () + pcall(vim.api.nvim_set_current_win, window); + diagnostics.close(); + end + }); + + ---|fE + + ---|fE +end + +--- Configuration for the diagnostics module. +---@param config? diagnostics.config +diagnostics.setup = function (config) + ---|fS + + if type(config) == "table" then + diagnostics.config = vim.tbl_extend("force", diagnostics.config, config); + end + + if diagnostics.config.keymap then + vim.api.nvim_set_keymap("n", diagnostics.config.keymap, "", { + callback = diagnostics.hover + }); + end + + vim.api.nvim_create_autocmd({ + "CursorMoved", "CursorMovedI" + }, { + callback = function () + local win = vim.api.nvim_get_current_win(); + + if diagnostics.window and win ~= diagnostics.window then + diagnostics.close(); + + if diagnostics.quad then + diagnostics.update_quad(diagnostics.quad, false); + diagnostics.quad = nil; + end + end + end + }); + + ---|fE +end + +return diagnostics; diff --git a/config/nvim/lua/scripts/init.lua b/config/nvim/lua/scripts/init.lua new file mode 100644 index 0000000..f0e0f11 --- /dev/null +++ b/config/nvim/lua/scripts/init.lua @@ -0,0 +1,3 @@ +require("scripts.diagnostics").setup({ + keymap = "lh" +}) diff --git a/config/shell/alias b/config/shell/alias new file mode 100644 index 0000000..84eab84 --- /dev/null +++ b/config/shell/alias @@ -0,0 +1,9 @@ +alias rgf='rg --files | rg' +alias ls='eza --icons=auto' +alias md='mkdir' +alias cat='bat -pp' +alias man='batman' +alias diff='batdiff' +alias fzf="fzf --preview 'bat --style=numbers --color=always {}'" +alias vi="nvim" +alias vim="nvim" 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 new file mode 100644 index 0000000..601d79f --- /dev/null +++ b/config/shell/vars @@ -0,0 +1,6 @@ +export EDITOR=nvim +export ZK_NOTEBOOK_DIR=$HOME/Documents/Notes +export XDG_CONFIG_HOME=$HOME/.config +export GOPATH=$HOME/.go +export LIMA_SHELL=/bin/zsh +export LIMA_INSTANCE=alpine diff --git a/config/starship/config.toml b/config/starship/config.toml new file mode 100644 index 0000000..6165b64 --- /dev/null +++ b/config/starship/config.toml @@ -0,0 +1,91 @@ +# Get editor completions based on the config schema +"$schema" = 'https://starship.rs/config-schema.json' + +# Inserts a blank line between shell prompts +add_newline = true + +format = """ +$nix_shell\ +$directory\ +$git_branch\ +$git_status\ +$git_commit\ +$status\ +$fill\ +$lua\ +$rust\ +$golang\ +$haskell\ +$jobs\ +$cmd_duration\ +$line_break\ +$character""" + +[nix_shell] +format = '[$symbol]($style) ' +symbol = '󱄅 ' +style = 'bold #74c7ec' + +[directory] +style = '#b2bbfb' +truncation_length = 2 + +[git_branch] +symbol = ' ' +format = '[$symbol$branch(:$remote_branch)]($style) ' +style = 'bold #eba0ac' +ignore_branches = ['master', 'main'] + +[git_status] +format = '([\[$all_status$ahead_behind\]]($style) )' +style = 'bold #89dceb' + +[git_commit] +format = '[\[#$hash$tag\]]($style) ' +style = 'bold #94e2d5' + +[status] +format = '[\[$status\]]($style)' +disabled = false + +[fill] +symbol = ' ' + +[lua] +format = '[$symbol($version )]($style)' +version_format = '$major.$minor' +symbol = '󰢱 ' +detect_files = ['.lua-version', '.luarc.json'] + +[rust] +format = '[$symbol($version )]($style)' +version_format = '$major.$minor' +symbol = ' ' +style = 'bold #fab387' + +[golang] +format = '[$symbol($version )]($style)' +version_format = '$major.$minor' +symbol = ' ' +style = 'bold #94e2d5' + +[haskell] +format = '[$symbol($ghc_version )]($style)' +symbol = ' ' +style = 'bold #cba6f7' + +[cmd_duration] +format = '[󰔚 $duration]($style) ' +style = 'bold #f9e2af' + +# Replace the '❯' symbol in the prompt with '➜' +[character] # The name of the module we are configuring is 'character' +success_symbol = '[󰘧](bold #a6e3a1)' +error_symbol = '[󰘧](bold #f38ba8)' + +# TODO +# - [container] +# - [docker_context] +# - [direnv] +# CONTINUE FROM HERE + 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 = [ "" ] +run = "seek -5" + +[[mgr.prepend_keymap]] +on = [ "" ] +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 = [ "" ] +run = [ "move -999", "insert" ] + +[[input.prepend_keymap]] +on = [ "" ] +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 = [ "" ] +run = "arrow -1" + +[[cmp.prepend_keymap]] +on = [ "" ] +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 @@ + + + + + + + + name + modus_vivendi + settings + + + settings + + background + #000000 + caret + #989898 + foreground + #ffffff + invisibles + #989898 + lineHighlight + #2f3849 + selection + #7030af + findHighlight + #7a6100 + selectionBorder + #646464 + gutterForeground + #989898 + + + + name + Comment + scope + comment + settings + + fontStyle + italic + foreground + #989898 + + + + name + String + scope + string + settings + + foreground + #79a8ff + + + + name + Number + scope + constant.numeric + settings + + foreground + #82b0ec + + + + name + Built-in constant + scope + constant.language + settings + + foreground + #6ae4b9 + + + + name + User-defined constant + scope + constant.character, constant.other + settings + + foreground + #ffffff + + + + name + Variable + scope + variable + settings + + fontStyle + #00d3d0 + + + + name + Ruby's @variable + scope + variable.other.readwrite.instance + settings + + foreground + #00d3d0 + + + + name + String interpolation + scope + constant.character.escaped, constant.character.escape, string source, string source.ruby + settings + + foreground + #d2b580 + + + + name + Keyword + scope + keyword + settings + + fontStyle + italic + foreground + #b6a0ff + + + + name + Storage + scope + storage + settings + + foreground + #b6a0ff + + + + name + Storage type + scope + storage.type + settings + + foreground + #b6a0ff + + + + name + Class name + scope + entity.name.class + settings + + foreground + #b6a0ff + + + + name + Inherited class + scope + entity.other.inherited-class + settings + + foreground + #b6a0ff + + + + name + Function name + scope + entity.name.function + settings + + foreground + #feacd0 + + + + name + Function argument + scope + variable.parameter + settings + + foreground + #00d3d0 + + + + name + Tag name + scope + entity.name.tag + settings + + foreground + #00d3d0 + + + + name + Tag attribute + scope + entity.other.attribute-name + settings + + foreground + #00d3d0 + + + + name + Library function + scope + support.function + settings + + foreground + #feacd0 + + + + name + Library constant + scope + support.constant + settings + + foreground + #6ae4b9 + + + + name + Library class/type + scope + support.type, support.class + settings + + foreground + #6ae4b9 + + + + name + Library variable + scope + support.other.variable + settings + + foreground + #00d3d0 + + + + name + Invalid + scope + invalid + settings + + foreground + #989898 + + + + name + Invalid deprecated + scope + invalid.deprecated + settings + + foreground + #989898 + + + + name + JSON String + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #79a8ff + + + + name + diff.header + scope + meta.diff, meta.diff.header + settings + + foreground + #feacd0 + + + + name + diff.deleted + scope + markup.deleted + settings + + background + #4f1119 + + + + name + diff.inserted + scope + markup.inserted + settings + + background + #00381f + + + + name + diff.changed + scope + markup.changed + settings + + background + #363300 + + + + scope + constant.numeric.line-number.find-in-files - match + settings + + foreground + #82b0ec + + + + scope + entity.name.filename + settings + + foreground + #2fafff + + + + scope + message.error + settings + + fontStyle + bold + foreground + #ff7f9f + + + + name + JSON Punctuation + scope + punctuation.definition.string.begin.json - meta.structure.dictionary.value.json, punctuation.definition.string.end.json - meta.structure.dictionary.value.json + settings + + foreground + #ffffff + + + + name + JSON Structure + scope + meta.structure.dictionary.json string.quoted.double.json + settings + + foreground + #79a8ff + + + + name + JSON String + scope + meta.structure.dictionary.value.json string.quoted.double.json + settings + + foreground + #79a8ff + + + + name + Escape Characters + scope + constant.character.escape + settings + + foreground + #d2b580 + + + + name + Regular Expressions + scope + string.regexp + settings + + foreground + #00c06f + + + + uuid + 09CE9B40-0137-442C-8512-7CEAFC78C153 + colorSpaceName + sRGB + semanticClass + Modus Vivendi + + 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/config/zk/config.toml b/config/zk/config.toml new file mode 100644 index 0000000..b9d3ca2 --- /dev/null +++ b/config/zk/config.toml @@ -0,0 +1,35 @@ +[notebook] +dir = "~/Documents/Notes" + +[note] +filename = "{{slug title}}" +template = "note.md" + +[extra] +author = "Venomade" + +[format.markdown] +link-format = "wiki" +hashtags = true +colon-tags = false +multiword-tags = true + +[tool] +editor = "nvim" +shell = "/bin/zsh" +fzf-preview = "bat -p --color always {-1}" + +[alias] +todo = "zk edit TODO" + +push = "git fetch && if [ \"$(git rev-parse @)\" = \"$(git rev-parse @{u})\" ]; then git add -A && git commit -m \"Update: $(date '+%Y-%m-%d %H:%M:%S')\" && git push; else echo \"Local branch is not up‑to‑date with the remote; aborting.\"; fi" +pull = "git pull" +history = "git log --pretty=format:\"%s\" | tail -10; echo" + +rm = "rm -i $@.md" + +[lsp] +[lsp.diagnostics] +wiki-title = "hint" +dead-link = "error" +missing-backlink = { level = "warning", position = "bottom" } diff --git a/config/zk/templates/note.md b/config/zk/templates/note.md new file mode 100644 index 0000000..be4c1d2 --- /dev/null +++ b/config/zk/templates/note.md @@ -0,0 +1,6 @@ +--- +title: {{title}} +tags: [] +--- + +{{content}} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..0d96965 --- /dev/null +++ b/flake.lock @@ -0,0 +1,48 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1771102945, + "narHash": "sha256-e5NfW8NhC3qChR8bHVni/asrig/ZFzd1wzpq+cEE/tg=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "ff5e5d882c51f9a032479595cbab40fd04f56399", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1771008912, + "narHash": "sha256-gf2AmWVTs8lEq7z/3ZAsgnZDhWIckkb+ZnAo5RzSxJg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "a82ccc39b39b621151d6732718e3e250109076fa", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..93a558c --- /dev/null +++ b/flake.nix @@ -0,0 +1,31 @@ +{ + description = "Home Manager configuration of venomade"; + + inputs = { + # Specify the source of Home Manager and Nixpkgs. + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = + { nixpkgs, home-manager, ... }: + let + system = "aarch64-darwin"; + pkgs = nixpkgs.legacyPackages.${system}; + in + { + homeConfigurations."venomade" = home-manager.lib.homeManagerConfiguration { + inherit pkgs; + + # Specify your home configuration modules here, for example, + # the path to your home.nix. + modules = [ ./home.nix ]; + + # Optionally use extraSpecialArgs + # to pass through arguments to home.nix + }; + }; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..7607adc --- /dev/null +++ b/home.nix @@ -0,0 +1,55 @@ +{ config, lib, pkgs, ... }: + +{ + home.username = "venomade"; + home.homeDirectory = "/Users/venomade"; + + home.packages = with pkgs; [ + # Neovim + neovim + imagemagick + fzf + ripgrep + + # Lua + lua-language-server + lua5_4 + lua5_4.pkgs.luarocks + + # Personal + bat + eza + jellyfin-tui + lazygit + starship + yazi + zk + lima + ]; + + programs.git = { + enable = true; + settings.user = { + name = "venomade"; + email = "venomade@venomade.com"; + }; + }; + + home.stateVersion = "25.11"; + + programs.home-manager.enable = true; + + home.file = + let + dir = "${config.home.homeDirectory}/.dotfiles/config"; + in + lib.mapAttrs + (name: _: { + target = ".config/${name}"; + source = config.lib.file.mkOutOfStoreSymlink "${dir}/${name}"; + recursive = true; + }) + (lib.filterAttrs + (name: type: type == "directory") + (builtins.readDir ./config)); +} -- cgit 1.4.1-2-gfad0