diff options
| author | ericmarin <maarin.eric@gmail.com> | 2026-04-29 21:12:05 +0200 |
|---|---|---|
| committer | ericmarin <maarin.eric@gmail.com> | 2026-07-27 15:55:03 +0200 |
| commit | 5a75ed84af8e58db80f3687e8f5237dee9876485 (patch) | |
| tree | 6b2fba6a3d5cb34ff647499185e12887658df24f | |
| parent | 4373c2db3d54802735105bc3ca602214d94b9f16 (diff) | |
| download | dotfiles-5a75ed84af8e58db80f3687e8f5237dee9876485.tar.gz dotfiles-5a75ed84af8e58db80f3687e8f5237dee9876485.zip | |
| -rw-r--r-- | fish/completions/hugo.fish | 235 | ||||
| -rw-r--r-- | fish/config.fish | 8 | ||||
| -rw-r--r-- | fish/functions/shrekfetch.fish | 4 | ||||
| -rw-r--r-- | nvim/lua/plugins/indent-blankline.lua | 26 | ||||
| -rw-r--r-- | nvim/lua/plugins/nvim-lspconfig.lua | 21 | ||||
| -rw-r--r-- | nvim/lua/plugins/nvim-parinfer.lua | 5 | ||||
| -rw-r--r-- | nvim/lua/plugins/parinfer-rust.lua | 6 | ||||
| -rw-r--r-- | nvim/lua/plugins/toggleterm.lua | 10 | ||||
| -rwxr-xr-x | scripts/set_random | 7 | ||||
| -rwxr-xr-x | scripts/wallpapermenu | 10 | ||||
| -rw-r--r-- | wallust/templates/foot | 2 | ||||
| -rw-r--r-- | wallust/templates/niri | 4 | ||||
| -rw-r--r-- | wallust/templates/rofi-applauncher | 1 | ||||
| -rw-r--r-- | waybar/config | 1 | ||||
| -rw-r--r-- | yazi/yazi.toml | 2 |
15 files changed, 294 insertions, 48 deletions
diff --git a/fish/completions/hugo.fish b/fish/completions/hugo.fish new file mode 100644 index 0000000..11fe85a --- /dev/null +++ b/fish/completions/hugo.fish @@ -0,0 +1,235 @@ +# fish completion for hugo -*- shell-script -*- + +function __hugo_debug + set -l file "$BASH_COMP_DEBUG_FILE" + if test -n "$file" + echo "$argv" >> $file + end +end + +function __hugo_perform_completion + __hugo_debug "Starting __hugo_perform_completion" + + # Extract all args except the last one + set -l args (commandline -opc) + # Extract the last arg and escape it in case it is a space + set -l lastArg (string escape -- (commandline -ct)) + + __hugo_debug "args: $args" + __hugo_debug "last arg: $lastArg" + + # Disable ActiveHelp which is not supported for fish shell + set -l requestComp "HUGO_ACTIVE_HELP=0 $args[1] __complete $args[2..-1] $lastArg" + + __hugo_debug "Calling $requestComp" + set -l results (eval $requestComp 2> /dev/null) + + # Some programs may output extra empty lines after the directive. + # Let's ignore them or else it will break completion. + # Ref: https://github.com/spf13/cobra/issues/1279 + for line in $results[-1..1] + if test (string trim -- $line) = "" + # Found an empty line, remove it + set results $results[1..-2] + else + # Found non-empty line, we have our proper output + break + end + end + + set -l comps $results[1..-2] + set -l directiveLine $results[-1] + + # For Fish, when completing a flag with an = (e.g., <program> -n=<TAB>) + # completions must be prefixed with the flag + set -l flagPrefix (string match -r -- '-.*=' "$lastArg") + + __hugo_debug "Comps: $comps" + __hugo_debug "DirectiveLine: $directiveLine" + __hugo_debug "flagPrefix: $flagPrefix" + + for comp in $comps + printf "%s%s\n" "$flagPrefix" "$comp" + end + + printf "%s\n" "$directiveLine" +end + +# this function limits calls to __hugo_perform_completion, by caching the result behind $__hugo_perform_completion_once_result +function __hugo_perform_completion_once + __hugo_debug "Starting __hugo_perform_completion_once" + + if test -n "$__hugo_perform_completion_once_result" + __hugo_debug "Seems like a valid result already exists, skipping __hugo_perform_completion" + return 0 + end + + set --global __hugo_perform_completion_once_result (__hugo_perform_completion) + if test -z "$__hugo_perform_completion_once_result" + __hugo_debug "No completions, probably due to a failure" + return 1 + end + + __hugo_debug "Performed completions and set __hugo_perform_completion_once_result" + return 0 +end + +# this function is used to clear the $__hugo_perform_completion_once_result variable after completions are run +function __hugo_clear_perform_completion_once_result + __hugo_debug "" + __hugo_debug "========= clearing previously set __hugo_perform_completion_once_result variable ==========" + set --erase __hugo_perform_completion_once_result + __hugo_debug "Successfully erased the variable __hugo_perform_completion_once_result" +end + +function __hugo_requires_order_preservation + __hugo_debug "" + __hugo_debug "========= checking if order preservation is required ==========" + + __hugo_perform_completion_once + if test -z "$__hugo_perform_completion_once_result" + __hugo_debug "Error determining if order preservation is required" + return 1 + end + + set -l directive (string sub --start 2 $__hugo_perform_completion_once_result[-1]) + __hugo_debug "Directive is: $directive" + + set -l shellCompDirectiveKeepOrder 32 + set -l keeporder (math (math --scale 0 $directive / $shellCompDirectiveKeepOrder) % 2) + __hugo_debug "Keeporder is: $keeporder" + + if test $keeporder -ne 0 + __hugo_debug "This does require order preservation" + return 0 + end + + __hugo_debug "This doesn't require order preservation" + return 1 +end + + +# This function does two things: +# - Obtain the completions and store them in the global __hugo_comp_results +# - Return false if file completion should be performed +function __hugo_prepare_completions + __hugo_debug "" + __hugo_debug "========= starting completion logic ==========" + + # Start fresh + set --erase __hugo_comp_results + + __hugo_perform_completion_once + __hugo_debug "Completion results: $__hugo_perform_completion_once_result" + + if test -z "$__hugo_perform_completion_once_result" + __hugo_debug "No completion, probably due to a failure" + # Might as well do file completion, in case it helps + return 1 + end + + set -l directive (string sub --start 2 $__hugo_perform_completion_once_result[-1]) + set --global __hugo_comp_results $__hugo_perform_completion_once_result[1..-2] + + __hugo_debug "Completions are: $__hugo_comp_results" + __hugo_debug "Directive is: $directive" + + set -l shellCompDirectiveError 1 + set -l shellCompDirectiveNoSpace 2 + set -l shellCompDirectiveNoFileComp 4 + set -l shellCompDirectiveFilterFileExt 8 + set -l shellCompDirectiveFilterDirs 16 + + if test -z "$directive" + set directive 0 + end + + set -l compErr (math (math --scale 0 $directive / $shellCompDirectiveError) % 2) + if test $compErr -eq 1 + __hugo_debug "Received error directive: aborting." + # Might as well do file completion, in case it helps + return 1 + end + + set -l filefilter (math (math --scale 0 $directive / $shellCompDirectiveFilterFileExt) % 2) + set -l dirfilter (math (math --scale 0 $directive / $shellCompDirectiveFilterDirs) % 2) + if test $filefilter -eq 1; or test $dirfilter -eq 1 + __hugo_debug "File extension filtering or directory filtering not supported" + # Do full file completion instead + return 1 + end + + set -l nospace (math (math --scale 0 $directive / $shellCompDirectiveNoSpace) % 2) + set -l nofiles (math (math --scale 0 $directive / $shellCompDirectiveNoFileComp) % 2) + + __hugo_debug "nospace: $nospace, nofiles: $nofiles" + + # If we want to prevent a space, or if file completion is NOT disabled, + # we need to count the number of valid completions. + # To do so, we will filter on prefix as the completions we have received + # may not already be filtered so as to allow fish to match on different + # criteria than the prefix. + if test $nospace -ne 0; or test $nofiles -eq 0 + set -l prefix (commandline -t | string escape --style=regex) + __hugo_debug "prefix: $prefix" + + set -l completions (string match -r -- "^$prefix.*" $__hugo_comp_results) + set --global __hugo_comp_results $completions + __hugo_debug "Filtered completions are: $__hugo_comp_results" + + # Important not to quote the variable for count to work + set -l numComps (count $__hugo_comp_results) + __hugo_debug "numComps: $numComps" + + if test $numComps -eq 1; and test $nospace -ne 0 + # We must first split on \t to get rid of the descriptions to be + # able to check what the actual completion will be. + # We don't need descriptions anyway since there is only a single + # real completion which the shell will expand immediately. + set -l split (string split --max 1 \t $__hugo_comp_results[1]) + + # Fish won't add a space if the completion ends with any + # of the following characters: @=/:., + set -l lastChar (string sub -s -1 -- $split) + if not string match -r -q "[@=/:.,]" -- "$lastChar" + # In other cases, to support the "nospace" directive we trick the shell + # by outputting an extra, longer completion. + __hugo_debug "Adding second completion to perform nospace directive" + set --global __hugo_comp_results $split[1] $split[1]. + __hugo_debug "Completions are now: $__hugo_comp_results" + end + end + + if test $numComps -eq 0; and test $nofiles -eq 0 + # To be consistent with bash and zsh, we only trigger file + # completion when there are no other completions + __hugo_debug "Requesting file completion" + return 1 + end + end + + return 0 +end + +# Since Fish completions are only loaded once the user triggers them, we trigger them ourselves +# so we can properly delete any completions provided by another script. +# Only do this if the program can be found, or else fish may print some errors; besides, +# the existing completions will only be loaded if the program can be found. +if type -q "hugo" + # The space after the program name is essential to trigger completion for the program + # and not completion of the program name itself. + # Also, we use '> /dev/null 2>&1' since '&>' is not supported in older versions of fish. + complete --do-complete "hugo " > /dev/null 2>&1 +end + +# Remove any pre-existing completions for the program since we will be handling all of them. +complete -c hugo -e + +# this will get called after the two calls below and clear the $__hugo_perform_completion_once_result global +complete -c hugo -n '__hugo_clear_perform_completion_once_result' +# The call to __hugo_prepare_completions will setup __hugo_comp_results +# which provides the program's completion choices. +# If this doesn't require order preservation, we don't use the -k flag +complete -c hugo -n 'not __hugo_requires_order_preservation && __hugo_prepare_completions' -f -a '$__hugo_comp_results' +# otherwise we use the -k flag +complete -k -c hugo -n '__hugo_requires_order_preservation && __hugo_prepare_completions' -f -a '$__hugo_comp_results' diff --git a/fish/config.fish b/fish/config.fish index 731f042..ffaf209 100644 --- a/fish/config.fish +++ b/fish/config.fish @@ -5,12 +5,12 @@ function fish_prompt echo '%s%s%s # ' else echo '%s%s%s $ ' - end) \ (set_color $fish_color_cwd) (prompt_pwd --full-length-dirs 5) (set_color normal) + end) (set_color $fish_color_cwd) (prompt_pwd --full-length-dirs 5) (set_color normal) end fish_add_path -p ~/.cargo/bin ~/.ghcup/bin set -U fish_greeting -set EDITOR "neovim" +set EDITOR "nvim" if status is-login killall ssh-agent 1> /dev/null 2>&1 @@ -20,3 +20,7 @@ if status is-login end zoxide init fish | source + + +# Added by Antigravity CLI installer +set -gx PATH "/home/ericmarin/.local/bin" $PATH diff --git a/fish/functions/shrekfetch.fish b/fish/functions/shrekfetch.fish index e3ccc2c..191c64f 100644 --- a/fish/functions/shrekfetch.fish +++ b/fish/functions/shrekfetch.fish @@ -1,3 +1,3 @@ -function shrekfetch --wraps='fastfetch -l Pictures/shrek.jpg --logo-type sixel --logo-width 30' --description 'alias shrekfetch fastfetch -l Pictures/shrek.jpg --logo-type sixel --logo-width 30' - fastfetch -l Pictures/shrek.jpg --logo-type sixel --logo-width 30 $argv +function shrekfetch --wraps='fastfetch -l ~/Pictures/shrek.jpg --logo-type sixel --logo-width 30' --description 'alias shrekfetch fastfetch -l ~/Pictures/shrek.jpg --logo-type sixel --logo-width 30' + fastfetch -l ~/Pictures/shrek.jpg --logo-type sixel --logo-width 30 $argv end diff --git a/nvim/lua/plugins/indent-blankline.lua b/nvim/lua/plugins/indent-blankline.lua index 06298a0..af9cff8 100644 --- a/nvim/lua/plugins/indent-blankline.lua +++ b/nvim/lua/plugins/indent-blankline.lua @@ -1,14 +1,16 @@ return { - "lukas-reineke/indent-blankline.nvim", - lazy = true, - event = { "BufReadPost", "BufWritePost", "BufNewFile" }, - main = "ibl", - opts = { - exclude = { - filetypes = { - "dashboard", - "norg" - }, - }, - }, + "lukas-reineke/indent-blankline.nvim", + lazy = true, + event = { "BufReadPost", "BufWritePost", "BufNewFile" }, + main = "ibl", + ---@module "ibl" + ---@type ibl.config + opts = { + exclude = { + filetypes = { + "dashboard", + "norg" + }, + }, + }, } diff --git a/nvim/lua/plugins/nvim-lspconfig.lua b/nvim/lua/plugins/nvim-lspconfig.lua index e464144..4c69816 100644 --- a/nvim/lua/plugins/nvim-lspconfig.lua +++ b/nvim/lua/plugins/nvim-lspconfig.lua @@ -3,11 +3,22 @@ local config = function() local capabilities = require("cmp_nvim_lsp").default_capabilities() -- setting custom signs - local signs = { Error = "", Warn = "", Hint = "", Info = "" } - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) - end + vim.diagnostic.config({ + signs = { + text = { + [vim.diagnostic.severity.ERROR] = '', + [vim.diagnostic.severity.WARN] = '', + [vim.diagnostic.severity.HINT] = '', + [vim.diagnostic.severity.INFO] = '', + }, + linehl = { + [vim.diagnostic.severity.ERROR] = 'ErrorMsg', + }, + numhl = { + [vim.diagnostic.severity.WARN] = 'WarningMsg', + }, + }, + }) vim.api.nvim_create_autocmd('LspAttach', { callback = function(ev) diff --git a/nvim/lua/plugins/nvim-parinfer.lua b/nvim/lua/plugins/nvim-parinfer.lua deleted file mode 100644 index 8775f83..0000000 --- a/nvim/lua/plugins/nvim-parinfer.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - "gpanders/nvim-parinfer", - lazy = true, - ft = "lisp" -} diff --git a/nvim/lua/plugins/parinfer-rust.lua b/nvim/lua/plugins/parinfer-rust.lua new file mode 100644 index 0000000..2b31d8a --- /dev/null +++ b/nvim/lua/plugins/parinfer-rust.lua @@ -0,0 +1,6 @@ +return { + "eraserhd/parinfer-rust", + build = "cargo build --release", + lazy = true, + ft = { "scheme", "lisp" } +} diff --git a/nvim/lua/plugins/toggleterm.lua b/nvim/lua/plugins/toggleterm.lua index 902cf4b..9bd1b78 100644 --- a/nvim/lua/plugins/toggleterm.lua +++ b/nvim/lua/plugins/toggleterm.lua @@ -1,17 +1,17 @@ local init = function() local keymap = vim.keymap - keymap.set("n", "<C-t>", ":ToggleTerm<Enter>", + --[[ keymap.set("n", "<C-t>", ":ToggleTerm<Enter>", { noremap = true, silent = true, desc = "Terminal (ToggleTerm)" }) -- Terminal - keymap.set("t", "<C-t>", "<C-\\><C-n>:ToggleTerm<Enter>") + keymap.set("t", "<C-t>", "<C-\\><C-n>:ToggleTerm<Enter>") ]] keymap.set("n", "<Space>g", ":ToggleLazyGit<Enter>", { noremap = true, silent = true, desc = "LazyGit (ToggleTerm)" }) -- LazyGit end local config = function() - require("toggleterm").setup { + --[[ require("toggleterm").setup { autochdir = false, direction = "float", - open_mapping = [[<c-t>]], + open_mapping = "<c-t>", terminal_mappings = true, start_in_insert = true, float_opts = { @@ -24,7 +24,7 @@ local config = function() term.dir = cwd end end, - } + } ]] local Terminal = require("toggleterm.terminal").Terminal local opts = { noremap = true, -- non-recursive diff --git a/scripts/set_random b/scripts/set_random index 52dbab4..6c4a76d 100755 --- a/scripts/set_random +++ b/scripts/set_random @@ -5,9 +5,4 @@ if test (count $argv) -lt 1; or not test -d $argv[1] exit 1 end -~/.config/scripts/set_background ( - for file in (fd . $argv[1] -t f -d 1) - if test -z $IMG; or test $file != $IMG - echo (math (random) % 1000)":$file" - end - end | sort -n | head -n 1 | cut -d ':' -f2) +~/.config/scripts/set_background "$(fd -a -t f -d 1 -E "$(basename "$IMG")" -e jpg -e png -e webp . "$argv[1]" | shuf -n1)" diff --git a/scripts/wallpapermenu b/scripts/wallpapermenu index 1ddf308..b60c646 100755 --- a/scripts/wallpapermenu +++ b/scripts/wallpapermenu @@ -3,12 +3,8 @@ if test -z $argv[1] echo "Provide a directory" else - set chosen ( - for file in (fd . $argv[1] -t f -d 1) - if test -z $IMG; or test $file != $IMG - echo -en "$file\0icon\x1fthumbnail://$file\n" - end + ~/.config/scripts/set_background ( + for file in (fd -a -t f -d 1 -E "$(basename "$IMG")" -e jpg -e png -e webp . "$argv[1]") + echo -en "$file\0icon\x1fthumbnail://$file\n" end | rofi -dmenu -p " " -show-icons -theme ~/.config/rofi/wallpapermenu.rasi) - - ~/.config/scripts/set_background (echo $chosen) end diff --git a/wallust/templates/foot b/wallust/templates/foot index 4f487ba..09f97ed 100644 --- a/wallust/templates/foot +++ b/wallust/templates/foot @@ -1,5 +1,5 @@ font=Hack Nerd Font:size=10,Sazanami Gothic:size=10,Noto Color Emoji:size=10 -pad=15x15 +pad=10x10x10x10 center dpi-aware=yes term=foot-extra diff --git a/wallust/templates/niri b/wallust/templates/niri index 5f896d3..b2e7812 100644 --- a/wallust/templates/niri +++ b/wallust/templates/niri @@ -200,9 +200,9 @@ binds { Mod+Space hotkey-overlay-title="Spawn Applauncher" { spawn "rofi" "-show" "drun" "-theme" "~/.config/rofi/applauncher.rasi"; } Mod+Escape hotkey-overlay-title="Spawn Powermenu" { spawn "~/.config/scripts/powermenu"; } Mod+W hotkey-overlay-title="Spawn Wallpapermenu" { spawn-sh "~/.config/scripts/wallpapermenu ~/Pictures/Backgrounds/"; } - Mod+Alt+W { spawn-sh "~/.config/scripts/wallpapermenu ~/Pictures/Backgrounds/Alt/"; } Mod+Shift+W hotkey-overlay-title="Random Wallpaper" { spawn-sh "~/.config/scripts/set_random ~/Pictures/Backgrounds/"; } - Mod+Shift+Alt+W { spawn-sh "~/.config/scripts/set_random ~/Pictures/Backgrounds/Alt/"; } + Mod+Alt+W { spawn-sh "~/.config/scripts/wallpapermenu ~/Pictures/Backgrounds/Alt/"; } + Mod+Alt+Shift+W { spawn-sh "~/.config/scripts/set_random ~/Pictures/Backgrounds/Alt/"; } XF86AudioRaiseVolume allow-when-locked=true { spawn "pamixer" "-i" "5"; } XF86AudioLowerVolume allow-when-locked=true { spawn "pamixer" "-d" "5"; } diff --git a/wallust/templates/rofi-applauncher b/wallust/templates/rofi-applauncher index 0dfb8a4..359fce6 100644 --- a/wallust/templates/rofi-applauncher +++ b/wallust/templates/rofi-applauncher @@ -5,6 +5,7 @@ configuration { show-icons: true; icon-theme: "Papirus"; terminal: "foot -o pad=0x0"; + run-command: "sh -c '{cmd}'"; } * { background-color: {{background}}; diff --git a/waybar/config b/waybar/config index 675e08d..18f6c0c 100644 --- a/waybar/config +++ b/waybar/config @@ -2,6 +2,7 @@ "layer": "top", "spacing": 0, "margin": 0, + "height": 22, "reload_style_on_change": true, "fixed-center": false, "modules-left": ["clock", "network", "bluetooth", "backlight", "pulseaudio", "idle_inhibitor"], diff --git a/yazi/yazi.toml b/yazi/yazi.toml index 8cbefc6..e7c3619 100644 --- a/yazi/yazi.toml +++ b/yazi/yazi.toml @@ -1,6 +1,6 @@ # A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. # If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. -"$schema" = "https://yazi-rs.github.io/schemas/yazi.json" +"schema" = "https://yazi-rs.github.io/schemas/yazi.json" [mgr] ratio = [ 1, 4, 3 ] |
