From 42e6595b606f2bd316be510bb0d45837842e87c4 Mon Sep 17 00:00:00 2001 From: Alexander Navarro Date: Fri, 8 Nov 2024 22:53:56 +0000 Subject: [PATCH 001/152] add base setup with dotter --- .chezmoiroot | 1 - .dotter/devbox.toml | 6 + .dotter/global.toml | 46 + .gitignore | 3 + .php-cs-fixer.cache | 1 - chezmoi/.chezmoidata/packages.yaml | 41 - .../nvim/symlink_lazy-lock.json.tmpl | 2 - .../dot_config/yazi/symlink_package.toml.tmpl | 2 - .../alacritty/alacritty.toml | 0 .../alacritty/alacritty.yml | 0 .../alacritty/themes/.keep | 0 {chezmoi/dot_config => config}/bat/config | 0 {chezmoi/dot_config => config}/foot/foot.ini | 0 .../foot/themes/catppuccin/LICENSE | 0 .../foot/themes/catppuccin/README.md | 0 .../catppuccin/assets/empty_dot_gitkeep | 0 .../foot/themes/catppuccin/assets/foot.png | Bin .../themes/catppuccin/catppuccin-frappe.conf | 0 .../themes/catppuccin/catppuccin-latte.conf | 0 .../catppuccin/catppuccin-macchiato.conf | 0 .../themes/catppuccin/catppuccin-mocha.conf | 0 .../foot/themes/catppuccin/dot_editorconfig | 0 .../foot/themes/catppuccin/dot_git | 0 {chezmoi/dot_config => config}/fzf/forgitrc | 0 {chezmoi/dot_config => config}/fzf/fzfrc | 0 .../fzf/widgets/alias_widget.zsh | 0 .../fzf/widgets/atuin-history_widget.zsh | 0 .../fzf/widgets/cd-recent-dir_widget.zsh | 0 .../fzf/widgets/cd_widget.zsh | 0 .../fzf/widgets/dictionary_widget.zsh | 0 .../fzf/widgets/fzf-rg-launcher.zsh | 0 .../fzf/widgets/locate_widget.zsh | 0 .../fzf/widgets/man_widget.zsh | 0 {chezmoi/dot_config => config}/git/config | 0 {chezmoi/dot_config => config}/git/ignore | 0 .../hypr/executable_gdm-wrapper.sh | 0 .../dot_config => config}/hypr/hyprland.conf | 0 .../dot_config => config}/hypr/hyprpaper.conf | 0 .../kitty/current-theme.conf | 0 .../dot_config => config}/kitty/kitty.conf | 0 .../kitty/private_kitty.conf.bak | 0 .../dot_config => config}/lazygit/config.yml | 0 {chezmoi/dot_config => config}/mako/config | 0 .../dot_config => config}/mise/config.toml | 0 .../dot_config => config}/mpv/encoding.rst | 0 {chezmoi/dot_config => config}/mpv/input.conf | 0 .../mpv/mplayer-input.conf | 0 {chezmoi/dot_config => config}/mpv/mpv.conf | 0 .../mpv/restore-old-bindings.conf | 0 .../mpv/script-opts/mpv_thumbnail_script.conf | 0 .../mpv/scripts/mpv-i3-floating-centered.lua | 0 .../mpv_thumbnail_script_client_osc.lua | 0 .../scripts/mpv_thumbnail_script_server-1.lua | 0 .../scripts/mpv_thumbnail_script_server-2.lua | 0 .../scripts/mpv_thumbnail_script_server.lua | 0 .../mpv/scripts/pause-indicator.lua | 0 .../mpv/tech-overview.txt | 0 config/nushell/config.nu | 898 ++++++++++++++++++ config/nushell/env.nu | 101 ++ .../nvim/after/queries/blade/highlights.scm | 0 .../nvim/after/queries/blade/injections.scm | 0 {chezmoi/dot_config => config}/nvim/init.lua | 0 .../nvim/lazy-lock.json | 4 +- .../nvim/lua/aleidk/autocmds.lua | 0 .../nvim/lua/aleidk/constants.lua | 0 .../nvim/lua/aleidk/keymaps.lua | 0 .../nvim/lua/aleidk/options.lua | 0 .../nvim/lua/aleidk/plugins/ai.lua | 0 .../nvim/lua/aleidk/plugins/auto-pairs.lua | 0 .../nvim/lua/aleidk/plugins/bookmarks.lua | 0 .../nvim/lua/aleidk/plugins/colorscheme.lua | 0 .../nvim/lua/aleidk/plugins/comments.lua | 0 .../nvim/lua/aleidk/plugins/completion.lua | 0 .../nvim/lua/aleidk/plugins/dashboard.lua | 0 .../nvim/lua/aleidk/plugins/database.lua | 0 .../nvim/lua/aleidk/plugins/debugprint.lua | 0 .../nvim/lua/aleidk/plugins/dressing.lua | 0 .../nvim/lua/aleidk/plugins/file-browser.lua | 0 .../nvim/lua/aleidk/plugins/file-explorer.lua | 0 .../nvim/lua/aleidk/plugins/formatter.lua | 0 .../nvim/lua/aleidk/plugins/git.lua | 0 .../nvim/lua/aleidk/plugins/http.lua | 0 .../lua/aleidk/plugins/indent-blankline.lua | 0 .../nvim/lua/aleidk/plugins/init.lua | 0 .../nvim/lua/aleidk/plugins/key-help.lua | 0 .../nvim/lua/aleidk/plugins/linters.lua | 0 .../nvim/lua/aleidk/plugins/lsp.lua | 0 .../nvim/lua/aleidk/plugins/lualine.lua | 0 .../nvim/lua/aleidk/plugins/luasnip.lua | 0 .../nvim/lua/aleidk/plugins/markdown.lua | 0 .../nvim/lua/aleidk/plugins/mason.lua | 0 .../nvim/lua/aleidk/plugins/noice.lua | 0 .../nvim/lua/aleidk/plugins/pretty-fold.lua | 0 .../nvim/lua/aleidk/plugins/quickfix.lua | 0 .../nvim/lua/aleidk/plugins/remote-sshfs.lua | 0 .../nvim/lua/aleidk/plugins/sessions.lua | 0 .../nvim/lua/aleidk/plugins/smart-splits.lua | 0 .../nvim/lua/aleidk/plugins/surround.lua | 0 .../nvim/lua/aleidk/plugins/task-runner.lua | 0 .../nvim/lua/aleidk/plugins/telescope.lua | 0 .../nvim/lua/aleidk/plugins/todo-comments.lua | 0 .../nvim/lua/aleidk/plugins/treesitter.lua | 20 +- .../nvim/lua/aleidk/plugins/trouble.lua | 0 .../lua/aleidk/plugins/ts-node-action.lua | 0 .../nvim/lua/aleidk/plugins/zen.lua | 0 .../php-cs-fixer-conf.php | 0 {chezmoi/dot_config => config}/pycodestyle | 0 .../river/executable_init | 0 {chezmoi/dot_config => config}/river/init.lua | 0 .../dot_config => config}/river/logger.lua | 0 .../dot_config => config}/river/river.lua | 0 {chezmoi/dot_config => config}/sesh/sesh.toml | 0 {chezmoi/dot_config => config}/starship.toml | 0 {chezmoi/dot_config => config}/swappy/config | 0 {chezmoi/dot_config => config}/sway/config | 0 .../sway/executable_autorotate | 0 .../sway/executable_lock.sh | 0 .../sway/executable_sway-bar.sh | 0 .../sway/themes/catppuccin/.keep | 0 {chezmoi/dot_config => config}/tmux/tmux.conf | 0 .../dot_config => config}/vimiv/keys.conf | 0 .../vimiv/styles/default | 0 .../vimiv/styles/material-darker | 0 .../dot_config => config}/vimiv/vimiv.conf | 0 {chezmoi/dot_config => config}/waybar/config | 0 .../dot_config => config}/waybar/style.css | 0 .../waybar/themes/catppuccin/LICENSE | 0 .../waybar/themes/catppuccin/README.md | 0 .../catppuccin/assets/empty_dot_gitkeep | 0 .../themes/catppuccin/assets/frappe.webp | Bin .../themes/catppuccin/assets/latte.webp | Bin .../themes/catppuccin/assets/macchiato.webp | Bin .../themes/catppuccin/assets/mocha.webp | Bin .../themes/catppuccin/assets/preview.webp | Bin .../themes/catppuccin/dot_catppuccin.yaml | 0 .../waybar/themes/catppuccin/dot_editorconfig | 0 .../waybar/themes/catppuccin/dot_git | 0 .../themes/catppuccin/themes/frappe.css | 0 .../waybar/themes/catppuccin/themes/latte.css | 0 .../themes/catppuccin/themes/macchiato.css | 0 .../waybar/themes/catppuccin/themes/mocha.css | 0 .../dot_config => config}/wezterm/wezterm.lua | 0 {chezmoi/dot_config => config}/yazi/init.lua | 0 .../dot_config => config}/yazi/keymap.toml | 0 .../yazi/package.toml | 0 .../dot_config => config}/yazi/plugins/.keep | 0 .../dot_config => config}/yazi/theme.toml | 0 {chezmoi/dot_config => config}/yazi/yazi.toml | 0 .../dot_config => config}/zed/keymap.json | 0 .../zed/private_settings.json | 0 .../dot_config => config}/zed/themes/.keep | 0 .../dot_config => config}/zellij/config.kdl | 0 .../zellij/themes/catppuccin.kdl | 0 {chezmoi/dot_config => config}/zk/config.toml | 0 .../zsh/aliases/aliases.zsh | 0 .../zsh/aliases/configs.zsh | 0 .../dot_config => config}/zsh/aliases/fzf.zsh | 0 .../zsh/aliases/nvim.zsh | 0 .../zsh/aliases/pnpm.zsh | 0 .../zsh/completions/_alacritty | 0 .../zsh/completions/_cargo | 0 .../zsh/completions/_chezmoi | 0 .../zsh/completions/_cht | 0 .../zsh/completions/_globdots | 0 .../zsh/completions/_lsd | 0 .../dot_config => config}/zsh/completions/_rg | 0 .../zsh/completions/_rtx | 0 .../zsh/completions/_rye | 0 .../zsh/completions/_starship | 0 .../zsh/completions/_tea | 0 .../zsh/completions/_tldr | 0 .../zsh/completions/_zellij | 0 .../zsh/functions/fedora.zsh | 0 .../zsh/functions/flatpak.zsh | 0 .../zsh/functions/functions.zsh | 0 .../zsh/zprofile | 1 - .../executable_dot_zshrc => config/zsh/zshrc | 6 +- 177 files changed, 1062 insertions(+), 70 deletions(-) delete mode 100644 .chezmoiroot create mode 100644 .dotter/devbox.toml create mode 100644 .dotter/global.toml delete mode 100644 .php-cs-fixer.cache delete mode 100644 chezmoi/.chezmoidata/packages.yaml delete mode 100644 chezmoi/dot_config/nvim/symlink_lazy-lock.json.tmpl delete mode 100644 chezmoi/dot_config/yazi/symlink_package.toml.tmpl rename {chezmoi/dot_config => config}/alacritty/alacritty.toml (100%) rename {chezmoi/dot_config => config}/alacritty/alacritty.yml (100%) rename {chezmoi/dot_config => config}/alacritty/themes/.keep (100%) rename {chezmoi/dot_config => config}/bat/config (100%) rename {chezmoi/dot_config => config}/foot/foot.ini (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/LICENSE (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/README.md (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/assets/empty_dot_gitkeep (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/assets/foot.png (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/catppuccin-frappe.conf (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/catppuccin-latte.conf (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/catppuccin-macchiato.conf (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/catppuccin-mocha.conf (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/dot_editorconfig (100%) rename {chezmoi/dot_config => config}/foot/themes/catppuccin/dot_git (100%) rename {chezmoi/dot_config => config}/fzf/forgitrc (100%) rename {chezmoi/dot_config => config}/fzf/fzfrc (100%) rename {chezmoi/dot_config => config}/fzf/widgets/alias_widget.zsh (100%) rename {chezmoi/dot_config => config}/fzf/widgets/atuin-history_widget.zsh (100%) rename {chezmoi/dot_config => config}/fzf/widgets/cd-recent-dir_widget.zsh (100%) rename {chezmoi/dot_config => config}/fzf/widgets/cd_widget.zsh (100%) rename {chezmoi/dot_config => config}/fzf/widgets/dictionary_widget.zsh (100%) rename {chezmoi/dot_config => config}/fzf/widgets/fzf-rg-launcher.zsh (100%) rename {chezmoi/dot_config => config}/fzf/widgets/locate_widget.zsh (100%) rename {chezmoi/dot_config => config}/fzf/widgets/man_widget.zsh (100%) rename {chezmoi/dot_config => config}/git/config (100%) rename {chezmoi/dot_config => config}/git/ignore (100%) rename {chezmoi/dot_config => config}/hypr/executable_gdm-wrapper.sh (100%) rename {chezmoi/dot_config => config}/hypr/hyprland.conf (100%) rename {chezmoi/dot_config => config}/hypr/hyprpaper.conf (100%) rename {chezmoi/dot_config => config}/kitty/current-theme.conf (100%) rename {chezmoi/dot_config => config}/kitty/kitty.conf (100%) rename {chezmoi/dot_config => config}/kitty/private_kitty.conf.bak (100%) rename {chezmoi/dot_config => config}/lazygit/config.yml (100%) rename {chezmoi/dot_config => config}/mako/config (100%) rename {chezmoi/dot_config => config}/mise/config.toml (100%) rename {chezmoi/dot_config => config}/mpv/encoding.rst (100%) rename {chezmoi/dot_config => config}/mpv/input.conf (100%) rename {chezmoi/dot_config => config}/mpv/mplayer-input.conf (100%) rename {chezmoi/dot_config => config}/mpv/mpv.conf (100%) rename {chezmoi/dot_config => config}/mpv/restore-old-bindings.conf (100%) rename {chezmoi/dot_config => config}/mpv/script-opts/mpv_thumbnail_script.conf (100%) rename {chezmoi/dot_config => config}/mpv/scripts/mpv-i3-floating-centered.lua (100%) rename {chezmoi/dot_config => config}/mpv/scripts/mpv_thumbnail_script_client_osc.lua (100%) rename {chezmoi/dot_config => config}/mpv/scripts/mpv_thumbnail_script_server-1.lua (100%) rename {chezmoi/dot_config => config}/mpv/scripts/mpv_thumbnail_script_server-2.lua (100%) rename {chezmoi/dot_config => config}/mpv/scripts/mpv_thumbnail_script_server.lua (100%) rename {chezmoi/dot_config => config}/mpv/scripts/pause-indicator.lua (100%) rename {chezmoi/dot_config => config}/mpv/tech-overview.txt (100%) create mode 100644 config/nushell/config.nu create mode 100644 config/nushell/env.nu rename {chezmoi/dot_config => config}/nvim/after/queries/blade/highlights.scm (100%) rename {chezmoi/dot_config => config}/nvim/after/queries/blade/injections.scm (100%) rename {chezmoi/dot_config => config}/nvim/init.lua (100%) rename chezmoi/dot_config/nvim/original_lazy-lock.json => config/nvim/lazy-lock.json (97%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/autocmds.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/constants.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/keymaps.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/options.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/ai.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/auto-pairs.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/bookmarks.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/colorscheme.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/comments.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/completion.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/dashboard.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/database.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/debugprint.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/dressing.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/file-browser.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/file-explorer.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/formatter.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/git.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/http.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/indent-blankline.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/init.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/key-help.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/linters.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/lsp.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/lualine.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/luasnip.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/markdown.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/mason.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/noice.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/pretty-fold.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/quickfix.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/remote-sshfs.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/sessions.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/smart-splits.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/surround.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/task-runner.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/telescope.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/todo-comments.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/treesitter.lua (88%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/trouble.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/ts-node-action.lua (100%) rename {chezmoi/dot_config => config}/nvim/lua/aleidk/plugins/zen.lua (100%) rename {chezmoi/dot_config => config}/php-cs-fixer-conf.php (100%) rename {chezmoi/dot_config => config}/pycodestyle (100%) rename {chezmoi/dot_config => config}/river/executable_init (100%) rename {chezmoi/dot_config => config}/river/init.lua (100%) rename {chezmoi/dot_config => config}/river/logger.lua (100%) rename {chezmoi/dot_config => config}/river/river.lua (100%) rename {chezmoi/dot_config => config}/sesh/sesh.toml (100%) rename {chezmoi/dot_config => config}/starship.toml (100%) rename {chezmoi/dot_config => config}/swappy/config (100%) rename {chezmoi/dot_config => config}/sway/config (100%) rename {chezmoi/dot_config => config}/sway/executable_autorotate (100%) rename {chezmoi/dot_config => config}/sway/executable_lock.sh (100%) rename {chezmoi/dot_config => config}/sway/executable_sway-bar.sh (100%) rename {chezmoi/dot_config => config}/sway/themes/catppuccin/.keep (100%) rename {chezmoi/dot_config => config}/tmux/tmux.conf (100%) rename {chezmoi/dot_config => config}/vimiv/keys.conf (100%) rename {chezmoi/dot_config => config}/vimiv/styles/default (100%) rename {chezmoi/dot_config => config}/vimiv/styles/material-darker (100%) rename {chezmoi/dot_config => config}/vimiv/vimiv.conf (100%) rename {chezmoi/dot_config => config}/waybar/config (100%) rename {chezmoi/dot_config => config}/waybar/style.css (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/LICENSE (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/README.md (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/assets/empty_dot_gitkeep (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/assets/frappe.webp (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/assets/latte.webp (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/assets/macchiato.webp (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/assets/mocha.webp (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/assets/preview.webp (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/dot_catppuccin.yaml (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/dot_editorconfig (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/dot_git (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/themes/frappe.css (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/themes/latte.css (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/themes/macchiato.css (100%) rename {chezmoi/dot_config => config}/waybar/themes/catppuccin/themes/mocha.css (100%) rename {chezmoi/dot_config => config}/wezterm/wezterm.lua (100%) rename {chezmoi/dot_config => config}/yazi/init.lua (100%) rename {chezmoi/dot_config => config}/yazi/keymap.toml (100%) rename chezmoi/dot_config/yazi/original_package.toml => config/yazi/package.toml (100%) rename {chezmoi/dot_config => config}/yazi/plugins/.keep (100%) rename {chezmoi/dot_config => config}/yazi/theme.toml (100%) rename {chezmoi/dot_config => config}/yazi/yazi.toml (100%) rename {chezmoi/dot_config => config}/zed/keymap.json (100%) rename {chezmoi/dot_config => config}/zed/private_settings.json (100%) rename {chezmoi/dot_config => config}/zed/themes/.keep (100%) rename {chezmoi/dot_config => config}/zellij/config.kdl (100%) rename {chezmoi/dot_config => config}/zellij/themes/catppuccin.kdl (100%) rename {chezmoi/dot_config => config}/zk/config.toml (100%) rename {chezmoi/dot_config => config}/zsh/aliases/aliases.zsh (100%) rename {chezmoi/dot_config => config}/zsh/aliases/configs.zsh (100%) rename {chezmoi/dot_config => config}/zsh/aliases/fzf.zsh (100%) rename {chezmoi/dot_config => config}/zsh/aliases/nvim.zsh (100%) rename {chezmoi/dot_config => config}/zsh/aliases/pnpm.zsh (100%) rename {chezmoi/dot_config => config}/zsh/completions/_alacritty (100%) rename {chezmoi/dot_config => config}/zsh/completions/_cargo (100%) rename {chezmoi/dot_config => config}/zsh/completions/_chezmoi (100%) rename {chezmoi/dot_config => config}/zsh/completions/_cht (100%) rename {chezmoi/dot_config => config}/zsh/completions/_globdots (100%) rename {chezmoi/dot_config => config}/zsh/completions/_lsd (100%) rename {chezmoi/dot_config => config}/zsh/completions/_rg (100%) rename {chezmoi/dot_config => config}/zsh/completions/_rtx (100%) rename {chezmoi/dot_config => config}/zsh/completions/_rye (100%) rename {chezmoi/dot_config => config}/zsh/completions/_starship (100%) rename {chezmoi/dot_config => config}/zsh/completions/_tea (100%) rename {chezmoi/dot_config => config}/zsh/completions/_tldr (100%) rename {chezmoi/dot_config => config}/zsh/completions/_zellij (100%) rename {chezmoi/dot_config => config}/zsh/functions/fedora.zsh (100%) rename {chezmoi/dot_config => config}/zsh/functions/flatpak.zsh (100%) rename {chezmoi/dot_config => config}/zsh/functions/functions.zsh (100%) rename chezmoi/executable_dot_zprofile.tmpl => config/zsh/zprofile (96%) rename chezmoi/executable_dot_zshrc => config/zsh/zshrc (97%) diff --git a/.chezmoiroot b/.chezmoiroot deleted file mode 100644 index 73d74c2..0000000 --- a/.chezmoiroot +++ /dev/null @@ -1 +0,0 @@ -chezmoi diff --git a/.dotter/devbox.toml b/.dotter/devbox.toml new file mode 100644 index 0000000..7709e32 --- /dev/null +++ b/.dotter/devbox.toml @@ -0,0 +1,6 @@ +includes = [] +packages = ["default", "cli", "dev"] + +[files] + +[variables] diff --git a/.dotter/global.toml b/.dotter/global.toml new file mode 100644 index 0000000..d929b92 --- /dev/null +++ b/.dotter/global.toml @@ -0,0 +1,46 @@ +[helpers] + +[default] +depends = ["nvim"] + +[default.files] +"README.md" = "" +chezmoi = "" +config = "" +exports = "" +scripts = "" + +[default.variables] + +# CLI package +[cli] +depends = ["nvim", "nushell", "zsh"] + +[cli.files] +"config/yazi" = "~/.config/yazi" +"config/tmux" = "~/.config/tmux" +"config/sesh" = "~/.config/sesh" +"config/zellij" = "~/.config/zellij" +"config/starship.toml" = "~/.config/starship.toml" + +[dev.files] +"config/git" = "~/.config/git" +"config/lazygit" = { target = "~/.config/lazygit", type = "symbolic"} +"config/zed" = "~/.config/zed" + +[zsh.files] +"config/zsh/zshrc" = "~/.zshrc" +"config/zsh/zprofile" = "~/.zprofile" +"config/zsh/aliases" = {target = "~/.config/zsh/aliases", type="symbolic"} +"config/zsh/completions" = {target = "~/.config/zsh/completions", type = "symbolic"} +"config/zsh/functions" = "~/.config/zsh/functions" +"config/fzf" = "~/.config/fzf" + +[nushell.files] +"config/nushell" = "~/.config/nushell" + +[settings] +default_target_type = "automatic" + +[nvim.files] +"config/nvim" = "~/.config/nvim" diff --git a/.gitignore b/.gitignore index 218484e..dcbf75b 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,6 @@ config/ncspot/userstate.cbor config/zsh/zprofile.local config/spicetify/CustomApps/* chezmoi/dot_config/zsh/aliases/work.zsh +.dotter/cache.toml +.dotter/cache +.dotter/local.toml diff --git a/.php-cs-fixer.cache b/.php-cs-fixer.cache deleted file mode 100644 index c737580..0000000 --- a/.php-cs-fixer.cache +++ /dev/null @@ -1 +0,0 @@ -{"php":"8.1.16","version":"3.14.4","indent":" ","lineEnding":"\n","rules":{"blank_line_after_opening_tag":true,"blank_line_between_import_groups":true,"braces":{"allow_single_line_anonymous_class_with_empty_body":true},"class_definition":{"inline_constructor_arguments":false,"space_before_parenthesis":true},"compact_nullable_typehint":true,"declare_equal_normalize":true,"lowercase_cast":true,"lowercase_static_reference":true,"new_with_braces":true,"no_blank_lines_after_class_opening":true,"no_leading_import_slash":true,"no_whitespace_in_blank_line":true,"ordered_class_elements":{"order":["use_trait"]},"ordered_imports":{"imports_order":["class","function","const"],"sort_algorithm":"none"},"return_type_declaration":true,"short_scalar_cast":true,"single_blank_line_before_namespace":true,"single_import_per_statement":{"group_to_single_imports":false},"single_trait_insert_per_statement":true,"ternary_operator_spaces":true,"visibility_required":true,"blank_line_after_namespace":true,"constant_case":true,"elseif":true,"function_declaration":true,"indentation_type":true,"line_ending":true,"lowercase_keywords":true,"method_argument_space":{"on_multiline":"ensure_fully_multiline"},"no_break_comment":true,"no_closing_tag":true,"no_space_around_double_colon":true,"no_spaces_after_function_name":true,"no_spaces_inside_parenthesis":true,"no_trailing_whitespace":true,"no_trailing_whitespace_in_comment":true,"single_blank_line_at_eof":true,"single_class_element_per_statement":{"elements":["property"]},"single_line_after_imports":true,"switch_case_semicolon_to_colon":true,"switch_case_space":true,"encoding":true,"full_opening_tag":true},"hashes":{"config\/.null-ls_409243_php-cs-fixer-conf.php":"fb71792ed72df5b2976115b4380ef622","config\/.null-ls_800261_php-cs-fixer-conf.php":"1a554594a4eaa31e7bf231c0a93ad00e","config\/.null-ls_450233_php-cs-fixer-conf.php":"1a554594a4eaa31e7bf231c0a93ad00e","config\/.null-ls_536351_php-cs-fixer-conf.php":"5bfcd97c4bfff433fa6da9d289fd7ef9","config\/.null-ls_121074_php-cs-fixer-conf.php":"c116993e570fd1fd0d8e5ff29103a452"}} \ No newline at end of file diff --git a/chezmoi/.chezmoidata/packages.yaml b/chezmoi/.chezmoidata/packages.yaml deleted file mode 100644 index 3512bc7..0000000 --- a/chezmoi/.chezmoidata/packages.yaml +++ /dev/null @@ -1,41 +0,0 @@ -packages: - cargo: - - du-dust - - mise - - rbw - # - yazi-fm - # - yazi-cli - dnf: - copr: - - atim/lazygit - - atim/starship - - the4runner/firefox-dev - packages: - - bat - - dnf-plugin-system-upgrade - - duf - - eza - - fd-find - - firefox-dev - - flatpak - - fzf - - gcc - - gcc-c++ - - git - - gitlint - - gnome-software - - lazygit - - neovim - - nodejs - - openssl - - openssl-devel - - papirus-icon-theme - - remove-retired-packages - - ripgrep - - sd - - starship - - tealdeer - - tmux - - tree-sitter-cli - - zoxide - - zsh diff --git a/chezmoi/dot_config/nvim/symlink_lazy-lock.json.tmpl b/chezmoi/dot_config/nvim/symlink_lazy-lock.json.tmpl deleted file mode 100644 index efac3ee..0000000 --- a/chezmoi/dot_config/nvim/symlink_lazy-lock.json.tmpl +++ /dev/null @@ -1,2 +0,0 @@ -{{ .chezmoi.sourceDir }}/dot_config/nvim/original_lazy-lock.json - diff --git a/chezmoi/dot_config/yazi/symlink_package.toml.tmpl b/chezmoi/dot_config/yazi/symlink_package.toml.tmpl deleted file mode 100644 index 716b5a9..0000000 --- a/chezmoi/dot_config/yazi/symlink_package.toml.tmpl +++ /dev/null @@ -1,2 +0,0 @@ -{{ .chezmoi.sourceDir }}/dot_config/yazi/original_package.toml - diff --git a/chezmoi/dot_config/alacritty/alacritty.toml b/config/alacritty/alacritty.toml similarity index 100% rename from chezmoi/dot_config/alacritty/alacritty.toml rename to config/alacritty/alacritty.toml diff --git a/chezmoi/dot_config/alacritty/alacritty.yml b/config/alacritty/alacritty.yml similarity index 100% rename from chezmoi/dot_config/alacritty/alacritty.yml rename to config/alacritty/alacritty.yml diff --git a/chezmoi/dot_config/alacritty/themes/.keep b/config/alacritty/themes/.keep similarity index 100% rename from chezmoi/dot_config/alacritty/themes/.keep rename to config/alacritty/themes/.keep diff --git a/chezmoi/dot_config/bat/config b/config/bat/config similarity index 100% rename from chezmoi/dot_config/bat/config rename to config/bat/config diff --git a/chezmoi/dot_config/foot/foot.ini b/config/foot/foot.ini similarity index 100% rename from chezmoi/dot_config/foot/foot.ini rename to config/foot/foot.ini diff --git a/chezmoi/dot_config/foot/themes/catppuccin/LICENSE b/config/foot/themes/catppuccin/LICENSE similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/LICENSE rename to config/foot/themes/catppuccin/LICENSE diff --git a/chezmoi/dot_config/foot/themes/catppuccin/README.md b/config/foot/themes/catppuccin/README.md similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/README.md rename to config/foot/themes/catppuccin/README.md diff --git a/chezmoi/dot_config/foot/themes/catppuccin/assets/empty_dot_gitkeep b/config/foot/themes/catppuccin/assets/empty_dot_gitkeep similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/assets/empty_dot_gitkeep rename to config/foot/themes/catppuccin/assets/empty_dot_gitkeep diff --git a/chezmoi/dot_config/foot/themes/catppuccin/assets/foot.png b/config/foot/themes/catppuccin/assets/foot.png similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/assets/foot.png rename to config/foot/themes/catppuccin/assets/foot.png diff --git a/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-frappe.conf b/config/foot/themes/catppuccin/catppuccin-frappe.conf similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/catppuccin-frappe.conf rename to config/foot/themes/catppuccin/catppuccin-frappe.conf diff --git a/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-latte.conf b/config/foot/themes/catppuccin/catppuccin-latte.conf similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/catppuccin-latte.conf rename to config/foot/themes/catppuccin/catppuccin-latte.conf diff --git a/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-macchiato.conf b/config/foot/themes/catppuccin/catppuccin-macchiato.conf similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/catppuccin-macchiato.conf rename to config/foot/themes/catppuccin/catppuccin-macchiato.conf diff --git a/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-mocha.conf b/config/foot/themes/catppuccin/catppuccin-mocha.conf similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/catppuccin-mocha.conf rename to config/foot/themes/catppuccin/catppuccin-mocha.conf diff --git a/chezmoi/dot_config/foot/themes/catppuccin/dot_editorconfig b/config/foot/themes/catppuccin/dot_editorconfig similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/dot_editorconfig rename to config/foot/themes/catppuccin/dot_editorconfig diff --git a/chezmoi/dot_config/foot/themes/catppuccin/dot_git b/config/foot/themes/catppuccin/dot_git similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/dot_git rename to config/foot/themes/catppuccin/dot_git diff --git a/chezmoi/dot_config/fzf/forgitrc b/config/fzf/forgitrc similarity index 100% rename from chezmoi/dot_config/fzf/forgitrc rename to config/fzf/forgitrc diff --git a/chezmoi/dot_config/fzf/fzfrc b/config/fzf/fzfrc similarity index 100% rename from chezmoi/dot_config/fzf/fzfrc rename to config/fzf/fzfrc diff --git a/chezmoi/dot_config/fzf/widgets/alias_widget.zsh b/config/fzf/widgets/alias_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/alias_widget.zsh rename to config/fzf/widgets/alias_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/atuin-history_widget.zsh b/config/fzf/widgets/atuin-history_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/atuin-history_widget.zsh rename to config/fzf/widgets/atuin-history_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/cd-recent-dir_widget.zsh b/config/fzf/widgets/cd-recent-dir_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/cd-recent-dir_widget.zsh rename to config/fzf/widgets/cd-recent-dir_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/cd_widget.zsh b/config/fzf/widgets/cd_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/cd_widget.zsh rename to config/fzf/widgets/cd_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/dictionary_widget.zsh b/config/fzf/widgets/dictionary_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/dictionary_widget.zsh rename to config/fzf/widgets/dictionary_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/fzf-rg-launcher.zsh b/config/fzf/widgets/fzf-rg-launcher.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/fzf-rg-launcher.zsh rename to config/fzf/widgets/fzf-rg-launcher.zsh diff --git a/chezmoi/dot_config/fzf/widgets/locate_widget.zsh b/config/fzf/widgets/locate_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/locate_widget.zsh rename to config/fzf/widgets/locate_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/man_widget.zsh b/config/fzf/widgets/man_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/man_widget.zsh rename to config/fzf/widgets/man_widget.zsh diff --git a/chezmoi/dot_config/git/config b/config/git/config similarity index 100% rename from chezmoi/dot_config/git/config rename to config/git/config diff --git a/chezmoi/dot_config/git/ignore b/config/git/ignore similarity index 100% rename from chezmoi/dot_config/git/ignore rename to config/git/ignore diff --git a/chezmoi/dot_config/hypr/executable_gdm-wrapper.sh b/config/hypr/executable_gdm-wrapper.sh similarity index 100% rename from chezmoi/dot_config/hypr/executable_gdm-wrapper.sh rename to config/hypr/executable_gdm-wrapper.sh diff --git a/chezmoi/dot_config/hypr/hyprland.conf b/config/hypr/hyprland.conf similarity index 100% rename from chezmoi/dot_config/hypr/hyprland.conf rename to config/hypr/hyprland.conf diff --git a/chezmoi/dot_config/hypr/hyprpaper.conf b/config/hypr/hyprpaper.conf similarity index 100% rename from chezmoi/dot_config/hypr/hyprpaper.conf rename to config/hypr/hyprpaper.conf diff --git a/chezmoi/dot_config/kitty/current-theme.conf b/config/kitty/current-theme.conf similarity index 100% rename from chezmoi/dot_config/kitty/current-theme.conf rename to config/kitty/current-theme.conf diff --git a/chezmoi/dot_config/kitty/kitty.conf b/config/kitty/kitty.conf similarity index 100% rename from chezmoi/dot_config/kitty/kitty.conf rename to config/kitty/kitty.conf diff --git a/chezmoi/dot_config/kitty/private_kitty.conf.bak b/config/kitty/private_kitty.conf.bak similarity index 100% rename from chezmoi/dot_config/kitty/private_kitty.conf.bak rename to config/kitty/private_kitty.conf.bak diff --git a/chezmoi/dot_config/lazygit/config.yml b/config/lazygit/config.yml similarity index 100% rename from chezmoi/dot_config/lazygit/config.yml rename to config/lazygit/config.yml diff --git a/chezmoi/dot_config/mako/config b/config/mako/config similarity index 100% rename from chezmoi/dot_config/mako/config rename to config/mako/config diff --git a/chezmoi/dot_config/mise/config.toml b/config/mise/config.toml similarity index 100% rename from chezmoi/dot_config/mise/config.toml rename to config/mise/config.toml diff --git a/chezmoi/dot_config/mpv/encoding.rst b/config/mpv/encoding.rst similarity index 100% rename from chezmoi/dot_config/mpv/encoding.rst rename to config/mpv/encoding.rst diff --git a/chezmoi/dot_config/mpv/input.conf b/config/mpv/input.conf similarity index 100% rename from chezmoi/dot_config/mpv/input.conf rename to config/mpv/input.conf diff --git a/chezmoi/dot_config/mpv/mplayer-input.conf b/config/mpv/mplayer-input.conf similarity index 100% rename from chezmoi/dot_config/mpv/mplayer-input.conf rename to config/mpv/mplayer-input.conf diff --git a/chezmoi/dot_config/mpv/mpv.conf b/config/mpv/mpv.conf similarity index 100% rename from chezmoi/dot_config/mpv/mpv.conf rename to config/mpv/mpv.conf diff --git a/chezmoi/dot_config/mpv/restore-old-bindings.conf b/config/mpv/restore-old-bindings.conf similarity index 100% rename from chezmoi/dot_config/mpv/restore-old-bindings.conf rename to config/mpv/restore-old-bindings.conf diff --git a/chezmoi/dot_config/mpv/script-opts/mpv_thumbnail_script.conf b/config/mpv/script-opts/mpv_thumbnail_script.conf similarity index 100% rename from chezmoi/dot_config/mpv/script-opts/mpv_thumbnail_script.conf rename to config/mpv/script-opts/mpv_thumbnail_script.conf diff --git a/chezmoi/dot_config/mpv/scripts/mpv-i3-floating-centered.lua b/config/mpv/scripts/mpv-i3-floating-centered.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/mpv-i3-floating-centered.lua rename to config/mpv/scripts/mpv-i3-floating-centered.lua diff --git a/chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_client_osc.lua b/config/mpv/scripts/mpv_thumbnail_script_client_osc.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_client_osc.lua rename to config/mpv/scripts/mpv_thumbnail_script_client_osc.lua diff --git a/chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server-1.lua b/config/mpv/scripts/mpv_thumbnail_script_server-1.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server-1.lua rename to config/mpv/scripts/mpv_thumbnail_script_server-1.lua diff --git a/chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server-2.lua b/config/mpv/scripts/mpv_thumbnail_script_server-2.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server-2.lua rename to config/mpv/scripts/mpv_thumbnail_script_server-2.lua diff --git a/chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server.lua b/config/mpv/scripts/mpv_thumbnail_script_server.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server.lua rename to config/mpv/scripts/mpv_thumbnail_script_server.lua diff --git a/chezmoi/dot_config/mpv/scripts/pause-indicator.lua b/config/mpv/scripts/pause-indicator.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/pause-indicator.lua rename to config/mpv/scripts/pause-indicator.lua diff --git a/chezmoi/dot_config/mpv/tech-overview.txt b/config/mpv/tech-overview.txt similarity index 100% rename from chezmoi/dot_config/mpv/tech-overview.txt rename to config/mpv/tech-overview.txt diff --git a/config/nushell/config.nu b/config/nushell/config.nu new file mode 100644 index 0000000..2917e52 --- /dev/null +++ b/config/nushell/config.nu @@ -0,0 +1,898 @@ +# Nushell Config File +# +# version = "0.99.1" + +# For more information on defining custom themes, see +# https://www.nushell.sh/book/coloring_and_theming.html +# And here is the theme collection +# https://github.com/nushell/nu_scripts/tree/main/themes +let dark_theme = { + # color for nushell primitives + separator: white + leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off + header: green_bold + empty: blue + # Closures can be used to choose colors for specific values. + # The value (in this case, a bool) is piped into the closure. + # eg) {|| if $in { 'light_cyan' } else { 'light_gray' } } + bool: light_cyan + int: white + filesize: cyan + duration: white + date: purple + range: white + float: white + string: white + nothing: white + binary: white + cell-path: white + row_index: green_bold + record: white + list: white + block: white + hints: dark_gray + search_result: { bg: red fg: white } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_yellow_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + # shapes are used to change the cli syntax highlighting + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple + shape_raw_string: light_purple +} + +let light_theme = { + # color for nushell primitives + separator: dark_gray + leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off + header: green_bold + empty: blue + # Closures can be used to choose colors for specific values. + # The value (in this case, a bool) is piped into the closure. + # eg) {|| if $in { 'dark_cyan' } else { 'dark_gray' } } + bool: dark_cyan + int: dark_gray + filesize: cyan_bold + duration: dark_gray + date: purple + range: dark_gray + float: dark_gray + string: dark_gray + nothing: dark_gray + binary: dark_gray + cell-path: dark_gray + row_index: green_bold + record: dark_gray + list: dark_gray + block: dark_gray + hints: dark_gray + search_result: { fg: white bg: red } + shape_and: purple_bold + shape_binary: purple_bold + shape_block: blue_bold + shape_bool: light_cyan + shape_closure: green_bold + shape_custom: green + shape_datetime: cyan_bold + shape_directory: cyan + shape_external: cyan + shape_externalarg: green_bold + shape_external_resolved: light_purple_bold + shape_filepath: cyan + shape_flag: blue_bold + shape_float: purple_bold + # shapes are used to change the cli syntax highlighting + shape_garbage: { fg: white bg: red attr: b } + shape_glob_interpolation: cyan_bold + shape_globpattern: cyan_bold + shape_int: purple_bold + shape_internalcall: cyan_bold + shape_keyword: cyan_bold + shape_list: cyan_bold + shape_literal: blue + shape_match_pattern: green + shape_matching_brackets: { attr: u } + shape_nothing: light_cyan + shape_operator: yellow + shape_or: purple_bold + shape_pipe: purple_bold + shape_range: yellow_bold + shape_record: cyan_bold + shape_redirection: purple_bold + shape_signature: green_bold + shape_string: green + shape_string_interpolation: cyan_bold + shape_table: blue_bold + shape_variable: purple + shape_vardecl: purple + shape_raw_string: light_purple +} + +# External completer example +# let carapace_completer = {|spans| +# carapace $spans.0 nushell ...$spans | from json +# } + +# The default config record. This is where much of your global configuration is setup. +$env.config = { + show_banner: false # true or false to enable or disable the welcome banner at startup + + ls: { + use_ls_colors: true # use the LS_COLORS environment variable to colorize output + clickable_links: true # enable or disable clickable links. Your terminal has to support links. + } + + rm: { + always_trash: true # always act as if -t was given. Can be overridden with -p + } + + table: { + mode: compact # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other + index_mode: auto # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column + show_empty: true # show 'empty list' and 'empty record' placeholders for command output + padding: { left: 1, right: 1 } # a left right padding of each column in a table + trim: { + methodology: wrapping # wrapping or truncating + wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology + truncating_suffix: "..." # A suffix used by the 'truncating' methodology + } + header_on_separator: false # show header text on separator/border line + # abbreviated_row_count: 10 # limit data rows from top and bottom after reaching a set point + } + + error_style: "fancy" # "fancy" or "plain" for screen reader-friendly error messages + + # Whether an error message should be printed if an error of a certain kind is triggered. + display_errors: { + exit_code: false # assume the external command prints an error message + # Core dump errors are always printed, and SIGPIPE never triggers an error. + # The setting below controls message printing for termination by all other signals. + termination_signal: true + } + + # datetime_format determines what a datetime rendered in the shell would look like. + # Behavior without this configuration point will be to "humanize" the datetime display, + # showing something like "a day ago." + datetime_format: { + # normal: '%a, %d %b %Y %H:%M:%S %z' # shows up in displays of variables or other datetime's outside of tables + # table: '%m/%d/%y %I:%M:%S%p' # generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format + } + + explore: { + status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" }, + command_bar_text: { fg: "#C4C9C6" }, + highlight: { fg: "black", bg: "yellow" }, + status: { + error: { fg: "white", bg: "red" }, + warn: {} + info: {} + }, + selected_cell: { bg: light_blue }, + } + + history: { + max_size: 100_000 # Session has to be reloaded for this to take effect + sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file + file_format: "sqlite" # "sqlite" or "plaintext" + isolation: true # only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions. + } + + completions: { + case_sensitive: false # set to true to enable case-sensitive completions + quick: true # set this to false to prevent auto-selecting completions when only one remains + partial: true # set this to false to prevent partial filling of the prompt + algorithm: "prefix" # prefix or fuzzy + sort: "smart" # "smart" (alphabetical for prefix matching, fuzzy score for fuzzy matching) or "alphabetical" + external: { + enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow + max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options + completer: null # check 'carapace_completer' above as an example + } + use_ls_colors: true # set this to true to enable file/path/directory completions using LS_COLORS + } + + filesize: { + metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) + format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto + } + + cursor_shape: { + emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default) + vi_insert: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default) + vi_normal: block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default) + } + + color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record + footer_mode: 25 # always, never, number_of_rows, auto + float_precision: 2 # the precision for displaying floats in tables + buffer_editor: null # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL + use_ansi_coloring: true + bracketed_paste: true # enable bracketed paste, currently useless on windows + edit_mode: vi # emacs, vi + shell_integration: { + # osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title + osc2: true + # osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory + osc7: true + # osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8 + osc8: true + # osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal + osc9_9: false + # osc133 is several escapes invented by Final Term which include the supported ones below. + # 133;A - Mark prompt start + # 133;B - Mark prompt end + # 133;C - Mark pre-execution + # 133;D;exit - Mark execution finished with exit code + # This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is + osc133: true + # osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features + # 633;A - Mark prompt start + # 633;B - Mark prompt end + # 633;C - Mark pre-execution + # 633;D;exit - Mark execution finished with exit code + # 633;E - Explicitly set the command line with an optional nonce + # 633;P;Cwd= - Mark the current working directory and communicate it to the terminal + # and also helps with the run recent menu in vscode + osc633: true + # reset_application_mode is escape \x1b[?1l and was added to help ssh work better + reset_application_mode: true + } + render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt. + use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this. + highlight_resolved_externals: true # true enables highlighting of external commands in the repl resolved by which. + recursion_limit: 50 # the maximum number of times nushell allows recursion before stopping it + + plugins: {} # Per-plugin configuration. See https://www.nushell.sh/contributor-book/plugins.html#configuration. + + plugin_gc: { + # Configuration for plugin garbage collection + default: { + enabled: true # true to enable stopping of inactive plugins + stop_after: 10sec # how long to wait after a plugin is inactive to stop it + } + plugins: { + # alternate configuration for specific plugins, by name, for example: + # + # gstat: { + # enabled: false + # } + } + } + + hooks: { + pre_prompt: [{ null }] # run before the prompt is shown + pre_execution: [{ null }] # run before the repl input is run + env_change: { + PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input + } + display_output: "if (term size).columns >= 100 { table -e } else { table }" # run to display the output of a pipeline + command_not_found: { null } # return an error message when a command is not found + } + + menus: [ + # Configuration for default nushell menus + # Note the lack of source parameter + { + name: completion_menu + only_buffer_difference: false + marker: "| " + type: { + layout: columnar + columns: 4 + col_width: 20 # Optional value. If missing all the screen width is used to calculate column width + col_padding: 2 + } + style: { + text: green + selected_text: { attr: r } + description_text: yellow + match_text: { attr: u } + selected_match_text: { attr: ur } + } + } + { + name: ide_completion_menu + only_buffer_difference: false + marker: "| " + type: { + layout: ide + min_completion_width: 0, + max_completion_width: 50, + max_completion_height: 10, # will be limited by the available lines in the terminal + padding: 0, + border: true, + cursor_offset: 0, + description_mode: "prefer_right" + min_description_width: 0 + max_description_width: 50 + max_description_height: 10 + description_offset: 1 + # If true, the cursor pos will be corrected, so the suggestions match up with the typed text + # + # C:\> str + # str join + # str trim + # str split + correct_cursor_pos: false + } + style: { + text: green + selected_text: { attr: r } + description_text: yellow + match_text: { attr: u } + selected_match_text: { attr: ur } + } + } + { + name: history_menu + only_buffer_difference: true + marker: "? " + type: { + layout: list + page_size: 10 + } + style: { + text: green + selected_text: green_reverse + description_text: yellow + } + } + { + name: help_menu + only_buffer_difference: true + marker: "? " + type: { + layout: description + columns: 4 + col_width: 20 # Optional value. If missing all the screen width is used to calculate column width + col_padding: 2 + selection_rows: 4 + description_rows: 10 + } + style: { + text: green + selected_text: green_reverse + description_text: yellow + } + } + ] + + keybindings: [ + { + name: completion_menu + modifier: none + keycode: tab + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: completion_previous_menu + modifier: shift + keycode: backtab + mode: [emacs, vi_normal, vi_insert] + event: { send: menuprevious } + } + { + name: ide_completion_menu + modifier: control + keycode: space + mode: [emacs vi_normal vi_insert] + event: { + until: [ + { send: menu name: ide_completion_menu } + { send: menunext } + { edit: complete } + ] + } + } + { + name: history_menu + modifier: control + keycode: char_r + mode: [emacs, vi_insert, vi_normal] + event: { send: menu name: history_menu } + } + { + name: help_menu + modifier: none + keycode: f1 + mode: [emacs, vi_insert, vi_normal] + event: { send: menu name: help_menu } + } + { + name: next_page_menu + modifier: control + keycode: char_x + mode: emacs + event: { send: menupagenext } + } + { + name: undo_or_previous_page_menu + modifier: control + keycode: char_z + mode: emacs + event: { + until: [ + { send: menupageprevious } + { edit: undo } + ] + } + } + { + name: escape + modifier: none + keycode: escape + mode: [emacs, vi_normal, vi_insert] + event: { send: esc } # NOTE: does not appear to work + } + { + name: cancel_command + modifier: control + keycode: char_c + mode: [emacs, vi_normal, vi_insert] + event: { send: ctrlc } + } + { + name: quit_shell + modifier: control + keycode: char_d + mode: [emacs, vi_normal, vi_insert] + event: { send: ctrld } + } + { + name: clear_screen + modifier: control + keycode: char_l + mode: [emacs, vi_normal, vi_insert] + event: { send: clearscreen } + } + { + name: search_history + modifier: control + keycode: char_q + mode: [emacs, vi_normal, vi_insert] + event: { send: searchhistory } + } + { + name: open_command_editor + modifier: control + keycode: char_o + mode: [emacs, vi_normal, vi_insert] + event: { send: openeditor } + } + { + name: move_up + modifier: none + keycode: up + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: move_down + modifier: none + keycode: down + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: move_left + modifier: none + keycode: left + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: none + keycode: right + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: move_one_word_left + modifier: control + keycode: left + mode: [emacs, vi_normal, vi_insert] + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: control + keycode: right + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_to_line_start + modifier: none + keycode: home + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_start + modifier: control + keycode: char_a + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_end_or_take_history_hint + modifier: none + keycode: end + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: move_to_line_end_or_take_history_hint + modifier: control + keycode: char_e + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: historyhintcomplete } + { edit: movetolineend } + ] + } + } + { + name: move_to_line_start + modifier: control + keycode: home + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolinestart } + } + { + name: move_to_line_end + modifier: control + keycode: end + mode: [emacs, vi_normal, vi_insert] + event: { edit: movetolineend } + } + { + name: move_down + modifier: control + keycode: char_n + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menudown } + { send: down } + ] + } + } + { + name: move_up + modifier: control + keycode: char_p + mode: [emacs, vi_normal, vi_insert] + event: { + until: [ + { send: menuup } + { send: up } + ] + } + } + { + name: delete_one_character_backward + modifier: none + keycode: backspace + mode: [emacs, vi_insert] + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: backspace + mode: [emacs, vi_insert] + event: { edit: backspaceword } + } + { + name: delete_one_character_forward + modifier: none + keycode: delete + mode: [emacs, vi_insert] + event: { edit: delete } + } + { + name: delete_one_character_forward + modifier: control + keycode: delete + mode: [emacs, vi_insert] + event: { edit: delete } + } + { + name: delete_one_character_backward + modifier: control + keycode: char_h + mode: [emacs, vi_insert] + event: { edit: backspace } + } + { + name: delete_one_word_backward + modifier: control + keycode: char_w + mode: [emacs, vi_insert] + event: { edit: backspaceword } + } + { + name: move_left + modifier: none + keycode: backspace + mode: vi_normal + event: { edit: moveleft } + } + { + name: newline_or_run_command + modifier: none + keycode: enter + mode: emacs + event: { send: enter } + } + { + name: move_left + modifier: control + keycode: char_b + mode: emacs + event: { + until: [ + { send: menuleft } + { send: left } + ] + } + } + { + name: move_right_or_take_history_hint + modifier: control + keycode: char_f + mode: emacs + event: { + until: [ + { send: historyhintcomplete } + { send: menuright } + { send: right } + ] + } + } + { + name: redo_change + modifier: control + keycode: char_g + mode: emacs + event: { edit: redo } + } + { + name: undo_change + modifier: control + keycode: char_z + mode: emacs + event: { edit: undo } + } + { + name: paste_before + modifier: control + keycode: char_y + mode: emacs + event: { edit: pastecutbufferbefore } + } + { + name: cut_word_left + modifier: control + keycode: char_w + mode: emacs + event: { edit: cutwordleft } + } + { + name: cut_line_to_end + modifier: control + keycode: char_k + mode: emacs + event: { edit: cuttolineend } + } + { + name: cut_line_from_start + modifier: control + keycode: char_u + mode: emacs + event: { edit: cutfromstart } + } + { + name: swap_graphemes + modifier: control + keycode: char_t + mode: emacs + event: { edit: swapgraphemes } + } + { + name: move_one_word_left + modifier: alt + keycode: left + mode: emacs + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: alt + keycode: right + mode: emacs + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: move_one_word_left + modifier: alt + keycode: char_b + mode: emacs + event: { edit: movewordleft } + } + { + name: move_one_word_right_or_take_history_hint + modifier: alt + keycode: char_f + mode: emacs + event: { + until: [ + { send: historyhintwordcomplete } + { edit: movewordright } + ] + } + } + { + name: delete_one_word_forward + modifier: alt + keycode: delete + mode: emacs + event: { edit: deleteword } + } + { + name: delete_one_word_backward + modifier: alt + keycode: backspace + mode: emacs + event: { edit: backspaceword } + } + { + name: delete_one_word_backward + modifier: alt + keycode: char_m + mode: emacs + event: { edit: backspaceword } + } + { + name: cut_word_to_right + modifier: alt + keycode: char_d + mode: emacs + event: { edit: cutwordright } + } + { + name: upper_case_word + modifier: alt + keycode: char_u + mode: emacs + event: { edit: uppercaseword } + } + { + name: lower_case_word + modifier: alt + keycode: char_l + mode: emacs + event: { edit: lowercaseword } + } + { + name: capitalize_char + modifier: alt + keycode: char_c + mode: emacs + event: { edit: capitalizechar } + } + # The following bindings with `*system` events require that Nushell has + # been compiled with the `system-clipboard` feature. + # If you want to use the system clipboard for visual selection or to + # paste directly, uncomment the respective lines and replace the version + # using the internal clipboard. + { + name: copy_selection + modifier: control_shift + keycode: char_c + mode: emacs + event: { edit: copyselection } + # event: { edit: copyselectionsystem } + } + { + name: cut_selection + modifier: control_shift + keycode: char_x + mode: emacs + event: { edit: cutselection } + # event: { edit: cutselectionsystem } + } + # { + # name: paste_system + # modifier: control_shift + # keycode: char_v + # mode: emacs + # event: { edit: pastesystem } + # } + { + name: select_all + modifier: control_shift + keycode: char_a + mode: emacs + event: { edit: selectall } + } + ] +} diff --git a/config/nushell/env.nu b/config/nushell/env.nu new file mode 100644 index 0000000..0ed67b1 --- /dev/null +++ b/config/nushell/env.nu @@ -0,0 +1,101 @@ +# Nushell Environment Config File +# +# version = "0.99.1" + +def create_left_prompt [] { + let dir = match (do --ignore-shell-errors { $env.PWD | path relative-to $nu.home-path }) { + null => $env.PWD + '' => '~' + $relative_pwd => ([~ $relative_pwd] | path join) + } + + let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold }) + let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold }) + let path_segment = $"($path_color)($dir)(ansi reset)" + + $path_segment | str replace --all (char path_sep) $"($separator_color)(char path_sep)($path_color)" +} + +def create_right_prompt [] { + # create a right prompt in magenta with green separators and am/pm underlined + let time_segment = ([ + (ansi reset) + (ansi magenta) + (date now | format date '%x %X') # try to respect user's locale + ] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" | + str replace --regex --all "([AP]M)" $"(ansi magenta_underline)${1}") + + let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([ + (ansi rb) + ($env.LAST_EXIT_CODE) + ] | str join) + } else { "" } + + ([$last_exit_code, (char space), $time_segment] | str join) +} + +# Use nushell functions to define your right and left prompt +$env.PROMPT_COMMAND = {|| create_left_prompt } +# FIXME: This default is not implemented in rust code as of 2023-09-08. +$env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt } + +# The prompt indicators are environmental variables that represent +# the state of the prompt +$env.PROMPT_INDICATOR = {|| "> " } +$env.PROMPT_INDICATOR_VI_INSERT = {|| ": " } +$env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " } +$env.PROMPT_MULTILINE_INDICATOR = {|| "::: " } + +# If you want previously entered commands to have a different prompt from the usual one, +# you can uncomment one or more of the following lines. +# This can be useful if you have a 2-line prompt and it's taking up a lot of space +# because every command entered takes up 2 lines instead of 1. You can then uncomment +# the line below so that previously entered commands show with a single `🚀`. +# $env.TRANSIENT_PROMPT_COMMAND = {|| "🚀 " } +# $env.TRANSIENT_PROMPT_INDICATOR = {|| "" } +# $env.TRANSIENT_PROMPT_INDICATOR_VI_INSERT = {|| "" } +# $env.TRANSIENT_PROMPT_INDICATOR_VI_NORMAL = {|| "" } +# $env.TRANSIENT_PROMPT_MULTILINE_INDICATOR = {|| "" } +# $env.TRANSIENT_PROMPT_COMMAND_RIGHT = {|| "" } + +# Specifies how environment variables are: +# - converted from a string to a value on Nushell startup (from_string) +# - converted from a value back to a string when running external commands (to_string) +# Note: The conversions happen *after* config.nu is loaded +$env.ENV_CONVERSIONS = { + "PATH": { + from_string: { |s| $s | split row (char esep) | path expand --no-symlink } + to_string: { |v| $v | path expand --no-symlink | str join (char esep) } + } + "Path": { + from_string: { |s| $s | split row (char esep) | path expand --no-symlink } + to_string: { |v| $v | path expand --no-symlink | str join (char esep) } + } +} + +# Directories to search for scripts when calling source or use +# The default for this is $nu.default-config-dir/scripts +$env.NU_LIB_DIRS = [ + ($nu.default-config-dir | path join 'scripts') # add /scripts + ($nu.data-dir | path join 'completions') # default home for nushell completions +] + +# Directories to search for plugin binaries when calling register +# The default for this is $nu.default-config-dir/plugins +$env.NU_PLUGIN_DIRS = [ + ($nu.default-config-dir | path join 'plugins') # add /plugins +] + +# To add entries to PATH (on Windows you might use Path), you can use the following pattern: +# $env.PATH = ($env.PATH | split row (char esep) | prepend '/some/path') +# An alternate way to add entries to $env.PATH is to use the custom command `path add` +# which is built into the nushell stdlib: +# use std "path add" +# $env.PATH = ($env.PATH | split row (char esep)) +# path add /some/path +# path add ($env.CARGO_HOME | path join "bin") +# path add ($env.HOME | path join ".local" "bin") +# $env.PATH = ($env.PATH | uniq) + +# To load from a custom file you can use: +# source ($nu.default-config-dir | path join 'custom.nu') \ No newline at end of file diff --git a/chezmoi/dot_config/nvim/after/queries/blade/highlights.scm b/config/nvim/after/queries/blade/highlights.scm similarity index 100% rename from chezmoi/dot_config/nvim/after/queries/blade/highlights.scm rename to config/nvim/after/queries/blade/highlights.scm diff --git a/chezmoi/dot_config/nvim/after/queries/blade/injections.scm b/config/nvim/after/queries/blade/injections.scm similarity index 100% rename from chezmoi/dot_config/nvim/after/queries/blade/injections.scm rename to config/nvim/after/queries/blade/injections.scm diff --git a/chezmoi/dot_config/nvim/init.lua b/config/nvim/init.lua similarity index 100% rename from chezmoi/dot_config/nvim/init.lua rename to config/nvim/init.lua diff --git a/chezmoi/dot_config/nvim/original_lazy-lock.json b/config/nvim/lazy-lock.json similarity index 97% rename from chezmoi/dot_config/nvim/original_lazy-lock.json rename to config/nvim/lazy-lock.json index 11840da..8b6a601 100644 --- a/chezmoi/dot_config/nvim/original_lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -21,14 +21,13 @@ "debugprint.nvim": { "branch": "main", "commit": "8f2a335fb0e6ebf0291a3551e0198363437e3a38" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" }, - "flash.nvim": { "branch": "main", "commit": "d0799ae43a581d9f190e182e2a1f389d2887c42a" }, "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, "gopher.nvim": { "branch": "main", "commit": "f55c15ada8e02398000c04a96ef44d986cd01051" }, "grapple.nvim": { "branch": "main", "commit": "7aedc261b05a6c030397c4bc26416efbe746ebf1" }, "hurl.nvim": { "branch": "main", "commit": "d708158dda9a175c0f83cd106ea232301f4317cb" }, "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, - "lazy.nvim": { "branch": "main", "commit": "b02c9eae6a250f98908c146d1dc1a891f5019f0a" }, + "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" }, "lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, @@ -64,6 +63,7 @@ "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "tfm.nvim": { "branch": "main", "commit": "fb0de2c96bf303216ac5d91ce9bdb7f430030f8b" }, "todo-comments.nvim": { "branch": "main", "commit": "d61567557e2ff5c548c74e96b2d9f8d33e5fcb34" }, + "tree-sitter-nu": { "branch": "main", "commit": "7e0f16f608a9e804fae61430ade734f9f849fb80" }, "treesj": { "branch": "main", "commit": "6e8bd008bacd5ad001c3953017c1dca20709e915" }, "trouble.nvim": { "branch": "main", "commit": "03c1fbf518bef683422a3be9643c3da190903488" }, "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, diff --git a/chezmoi/dot_config/nvim/lua/aleidk/autocmds.lua b/config/nvim/lua/aleidk/autocmds.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/autocmds.lua rename to config/nvim/lua/aleidk/autocmds.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/constants.lua b/config/nvim/lua/aleidk/constants.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/constants.lua rename to config/nvim/lua/aleidk/constants.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/keymaps.lua b/config/nvim/lua/aleidk/keymaps.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/keymaps.lua rename to config/nvim/lua/aleidk/keymaps.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/options.lua b/config/nvim/lua/aleidk/options.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/options.lua rename to config/nvim/lua/aleidk/options.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/ai.lua b/config/nvim/lua/aleidk/plugins/ai.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/ai.lua rename to config/nvim/lua/aleidk/plugins/ai.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/auto-pairs.lua b/config/nvim/lua/aleidk/plugins/auto-pairs.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/auto-pairs.lua rename to config/nvim/lua/aleidk/plugins/auto-pairs.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/bookmarks.lua b/config/nvim/lua/aleidk/plugins/bookmarks.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/bookmarks.lua rename to config/nvim/lua/aleidk/plugins/bookmarks.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/colorscheme.lua b/config/nvim/lua/aleidk/plugins/colorscheme.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/colorscheme.lua rename to config/nvim/lua/aleidk/plugins/colorscheme.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/comments.lua b/config/nvim/lua/aleidk/plugins/comments.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/comments.lua rename to config/nvim/lua/aleidk/plugins/comments.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/completion.lua b/config/nvim/lua/aleidk/plugins/completion.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/completion.lua rename to config/nvim/lua/aleidk/plugins/completion.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/dashboard.lua b/config/nvim/lua/aleidk/plugins/dashboard.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/dashboard.lua rename to config/nvim/lua/aleidk/plugins/dashboard.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/database.lua b/config/nvim/lua/aleidk/plugins/database.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/database.lua rename to config/nvim/lua/aleidk/plugins/database.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/debugprint.lua b/config/nvim/lua/aleidk/plugins/debugprint.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/debugprint.lua rename to config/nvim/lua/aleidk/plugins/debugprint.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/dressing.lua b/config/nvim/lua/aleidk/plugins/dressing.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/dressing.lua rename to config/nvim/lua/aleidk/plugins/dressing.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/file-browser.lua b/config/nvim/lua/aleidk/plugins/file-browser.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/file-browser.lua rename to config/nvim/lua/aleidk/plugins/file-browser.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/file-explorer.lua b/config/nvim/lua/aleidk/plugins/file-explorer.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/file-explorer.lua rename to config/nvim/lua/aleidk/plugins/file-explorer.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/formatter.lua b/config/nvim/lua/aleidk/plugins/formatter.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/formatter.lua rename to config/nvim/lua/aleidk/plugins/formatter.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/git.lua b/config/nvim/lua/aleidk/plugins/git.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/git.lua rename to config/nvim/lua/aleidk/plugins/git.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/http.lua b/config/nvim/lua/aleidk/plugins/http.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/http.lua rename to config/nvim/lua/aleidk/plugins/http.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/indent-blankline.lua b/config/nvim/lua/aleidk/plugins/indent-blankline.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/indent-blankline.lua rename to config/nvim/lua/aleidk/plugins/indent-blankline.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/init.lua b/config/nvim/lua/aleidk/plugins/init.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/init.lua rename to config/nvim/lua/aleidk/plugins/init.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/key-help.lua b/config/nvim/lua/aleidk/plugins/key-help.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/key-help.lua rename to config/nvim/lua/aleidk/plugins/key-help.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/linters.lua b/config/nvim/lua/aleidk/plugins/linters.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/linters.lua rename to config/nvim/lua/aleidk/plugins/linters.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/lsp.lua b/config/nvim/lua/aleidk/plugins/lsp.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/lsp.lua rename to config/nvim/lua/aleidk/plugins/lsp.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/lualine.lua b/config/nvim/lua/aleidk/plugins/lualine.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/lualine.lua rename to config/nvim/lua/aleidk/plugins/lualine.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/luasnip.lua b/config/nvim/lua/aleidk/plugins/luasnip.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/luasnip.lua rename to config/nvim/lua/aleidk/plugins/luasnip.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/markdown.lua b/config/nvim/lua/aleidk/plugins/markdown.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/markdown.lua rename to config/nvim/lua/aleidk/plugins/markdown.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/mason.lua b/config/nvim/lua/aleidk/plugins/mason.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/mason.lua rename to config/nvim/lua/aleidk/plugins/mason.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/noice.lua b/config/nvim/lua/aleidk/plugins/noice.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/noice.lua rename to config/nvim/lua/aleidk/plugins/noice.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/pretty-fold.lua b/config/nvim/lua/aleidk/plugins/pretty-fold.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/pretty-fold.lua rename to config/nvim/lua/aleidk/plugins/pretty-fold.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/quickfix.lua b/config/nvim/lua/aleidk/plugins/quickfix.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/quickfix.lua rename to config/nvim/lua/aleidk/plugins/quickfix.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/remote-sshfs.lua b/config/nvim/lua/aleidk/plugins/remote-sshfs.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/remote-sshfs.lua rename to config/nvim/lua/aleidk/plugins/remote-sshfs.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/sessions.lua b/config/nvim/lua/aleidk/plugins/sessions.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/sessions.lua rename to config/nvim/lua/aleidk/plugins/sessions.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/smart-splits.lua b/config/nvim/lua/aleidk/plugins/smart-splits.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/smart-splits.lua rename to config/nvim/lua/aleidk/plugins/smart-splits.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/surround.lua b/config/nvim/lua/aleidk/plugins/surround.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/surround.lua rename to config/nvim/lua/aleidk/plugins/surround.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/task-runner.lua b/config/nvim/lua/aleidk/plugins/task-runner.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/task-runner.lua rename to config/nvim/lua/aleidk/plugins/task-runner.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/telescope.lua b/config/nvim/lua/aleidk/plugins/telescope.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/telescope.lua rename to config/nvim/lua/aleidk/plugins/telescope.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/todo-comments.lua b/config/nvim/lua/aleidk/plugins/todo-comments.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/todo-comments.lua rename to config/nvim/lua/aleidk/plugins/todo-comments.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/treesitter.lua b/config/nvim/lua/aleidk/plugins/treesitter.lua similarity index 88% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/treesitter.lua rename to config/nvim/lua/aleidk/plugins/treesitter.lua index 6246d99..73616e1 100644 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/treesitter.lua +++ b/config/nvim/lua/aleidk/plugins/treesitter.lua @@ -7,30 +7,12 @@ return { "JoosepAlviste/nvim-ts-context-commentstring", "nvim-treesitter/nvim-treesitter-context", { "windwp/nvim-ts-autotag", opts = {} }, + { "nushell/tree-sitter-nu", build = ":TSUpdate nu" }, }, build = ":TSUpdate", config = function() ---@diagnostic disable-next-line: missing-fields require("nvim-treesitter.configs").setup({ - -- Add languages to be installed here that you want installed for treesitter - ensure_installed = { - "bash", - "c", - "cpp", - "go", - "lua", - "markdown", - "markdown_inline", - "python", - "regex", - "rust", - "sql", - "tsx", - "javascript", - "typescript", - "vim", - "vimdoc", - }, -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) auto_install = true, highlight = { enable = true }, diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/trouble.lua b/config/nvim/lua/aleidk/plugins/trouble.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/trouble.lua rename to config/nvim/lua/aleidk/plugins/trouble.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/ts-node-action.lua b/config/nvim/lua/aleidk/plugins/ts-node-action.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/ts-node-action.lua rename to config/nvim/lua/aleidk/plugins/ts-node-action.lua diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/zen.lua b/config/nvim/lua/aleidk/plugins/zen.lua similarity index 100% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/zen.lua rename to config/nvim/lua/aleidk/plugins/zen.lua diff --git a/chezmoi/dot_config/php-cs-fixer-conf.php b/config/php-cs-fixer-conf.php similarity index 100% rename from chezmoi/dot_config/php-cs-fixer-conf.php rename to config/php-cs-fixer-conf.php diff --git a/chezmoi/dot_config/pycodestyle b/config/pycodestyle similarity index 100% rename from chezmoi/dot_config/pycodestyle rename to config/pycodestyle diff --git a/chezmoi/dot_config/river/executable_init b/config/river/executable_init similarity index 100% rename from chezmoi/dot_config/river/executable_init rename to config/river/executable_init diff --git a/chezmoi/dot_config/river/init.lua b/config/river/init.lua similarity index 100% rename from chezmoi/dot_config/river/init.lua rename to config/river/init.lua diff --git a/chezmoi/dot_config/river/logger.lua b/config/river/logger.lua similarity index 100% rename from chezmoi/dot_config/river/logger.lua rename to config/river/logger.lua diff --git a/chezmoi/dot_config/river/river.lua b/config/river/river.lua similarity index 100% rename from chezmoi/dot_config/river/river.lua rename to config/river/river.lua diff --git a/chezmoi/dot_config/sesh/sesh.toml b/config/sesh/sesh.toml similarity index 100% rename from chezmoi/dot_config/sesh/sesh.toml rename to config/sesh/sesh.toml diff --git a/chezmoi/dot_config/starship.toml b/config/starship.toml similarity index 100% rename from chezmoi/dot_config/starship.toml rename to config/starship.toml diff --git a/chezmoi/dot_config/swappy/config b/config/swappy/config similarity index 100% rename from chezmoi/dot_config/swappy/config rename to config/swappy/config diff --git a/chezmoi/dot_config/sway/config b/config/sway/config similarity index 100% rename from chezmoi/dot_config/sway/config rename to config/sway/config diff --git a/chezmoi/dot_config/sway/executable_autorotate b/config/sway/executable_autorotate similarity index 100% rename from chezmoi/dot_config/sway/executable_autorotate rename to config/sway/executable_autorotate diff --git a/chezmoi/dot_config/sway/executable_lock.sh b/config/sway/executable_lock.sh similarity index 100% rename from chezmoi/dot_config/sway/executable_lock.sh rename to config/sway/executable_lock.sh diff --git a/chezmoi/dot_config/sway/executable_sway-bar.sh b/config/sway/executable_sway-bar.sh similarity index 100% rename from chezmoi/dot_config/sway/executable_sway-bar.sh rename to config/sway/executable_sway-bar.sh diff --git a/chezmoi/dot_config/sway/themes/catppuccin/.keep b/config/sway/themes/catppuccin/.keep similarity index 100% rename from chezmoi/dot_config/sway/themes/catppuccin/.keep rename to config/sway/themes/catppuccin/.keep diff --git a/chezmoi/dot_config/tmux/tmux.conf b/config/tmux/tmux.conf similarity index 100% rename from chezmoi/dot_config/tmux/tmux.conf rename to config/tmux/tmux.conf diff --git a/chezmoi/dot_config/vimiv/keys.conf b/config/vimiv/keys.conf similarity index 100% rename from chezmoi/dot_config/vimiv/keys.conf rename to config/vimiv/keys.conf diff --git a/chezmoi/dot_config/vimiv/styles/default b/config/vimiv/styles/default similarity index 100% rename from chezmoi/dot_config/vimiv/styles/default rename to config/vimiv/styles/default diff --git a/chezmoi/dot_config/vimiv/styles/material-darker b/config/vimiv/styles/material-darker similarity index 100% rename from chezmoi/dot_config/vimiv/styles/material-darker rename to config/vimiv/styles/material-darker diff --git a/chezmoi/dot_config/vimiv/vimiv.conf b/config/vimiv/vimiv.conf similarity index 100% rename from chezmoi/dot_config/vimiv/vimiv.conf rename to config/vimiv/vimiv.conf diff --git a/chezmoi/dot_config/waybar/config b/config/waybar/config similarity index 100% rename from chezmoi/dot_config/waybar/config rename to config/waybar/config diff --git a/chezmoi/dot_config/waybar/style.css b/config/waybar/style.css similarity index 100% rename from chezmoi/dot_config/waybar/style.css rename to config/waybar/style.css diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/LICENSE b/config/waybar/themes/catppuccin/LICENSE similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/LICENSE rename to config/waybar/themes/catppuccin/LICENSE diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/README.md b/config/waybar/themes/catppuccin/README.md similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/README.md rename to config/waybar/themes/catppuccin/README.md diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/empty_dot_gitkeep b/config/waybar/themes/catppuccin/assets/empty_dot_gitkeep similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/assets/empty_dot_gitkeep rename to config/waybar/themes/catppuccin/assets/empty_dot_gitkeep diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/frappe.webp b/config/waybar/themes/catppuccin/assets/frappe.webp similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/assets/frappe.webp rename to config/waybar/themes/catppuccin/assets/frappe.webp diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/latte.webp b/config/waybar/themes/catppuccin/assets/latte.webp similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/assets/latte.webp rename to config/waybar/themes/catppuccin/assets/latte.webp diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/macchiato.webp b/config/waybar/themes/catppuccin/assets/macchiato.webp similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/assets/macchiato.webp rename to config/waybar/themes/catppuccin/assets/macchiato.webp diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/mocha.webp b/config/waybar/themes/catppuccin/assets/mocha.webp similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/assets/mocha.webp rename to config/waybar/themes/catppuccin/assets/mocha.webp diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/preview.webp b/config/waybar/themes/catppuccin/assets/preview.webp similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/assets/preview.webp rename to config/waybar/themes/catppuccin/assets/preview.webp diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/dot_catppuccin.yaml b/config/waybar/themes/catppuccin/dot_catppuccin.yaml similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/dot_catppuccin.yaml rename to config/waybar/themes/catppuccin/dot_catppuccin.yaml diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/dot_editorconfig b/config/waybar/themes/catppuccin/dot_editorconfig similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/dot_editorconfig rename to config/waybar/themes/catppuccin/dot_editorconfig diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/dot_git b/config/waybar/themes/catppuccin/dot_git similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/dot_git rename to config/waybar/themes/catppuccin/dot_git diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/themes/frappe.css b/config/waybar/themes/catppuccin/themes/frappe.css similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/themes/frappe.css rename to config/waybar/themes/catppuccin/themes/frappe.css diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/themes/latte.css b/config/waybar/themes/catppuccin/themes/latte.css similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/themes/latte.css rename to config/waybar/themes/catppuccin/themes/latte.css diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/themes/macchiato.css b/config/waybar/themes/catppuccin/themes/macchiato.css similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/themes/macchiato.css rename to config/waybar/themes/catppuccin/themes/macchiato.css diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/themes/mocha.css b/config/waybar/themes/catppuccin/themes/mocha.css similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/themes/mocha.css rename to config/waybar/themes/catppuccin/themes/mocha.css diff --git a/chezmoi/dot_config/wezterm/wezterm.lua b/config/wezterm/wezterm.lua similarity index 100% rename from chezmoi/dot_config/wezterm/wezterm.lua rename to config/wezterm/wezterm.lua diff --git a/chezmoi/dot_config/yazi/init.lua b/config/yazi/init.lua similarity index 100% rename from chezmoi/dot_config/yazi/init.lua rename to config/yazi/init.lua diff --git a/chezmoi/dot_config/yazi/keymap.toml b/config/yazi/keymap.toml similarity index 100% rename from chezmoi/dot_config/yazi/keymap.toml rename to config/yazi/keymap.toml diff --git a/chezmoi/dot_config/yazi/original_package.toml b/config/yazi/package.toml similarity index 100% rename from chezmoi/dot_config/yazi/original_package.toml rename to config/yazi/package.toml diff --git a/chezmoi/dot_config/yazi/plugins/.keep b/config/yazi/plugins/.keep similarity index 100% rename from chezmoi/dot_config/yazi/plugins/.keep rename to config/yazi/plugins/.keep diff --git a/chezmoi/dot_config/yazi/theme.toml b/config/yazi/theme.toml similarity index 100% rename from chezmoi/dot_config/yazi/theme.toml rename to config/yazi/theme.toml diff --git a/chezmoi/dot_config/yazi/yazi.toml b/config/yazi/yazi.toml similarity index 100% rename from chezmoi/dot_config/yazi/yazi.toml rename to config/yazi/yazi.toml diff --git a/chezmoi/dot_config/zed/keymap.json b/config/zed/keymap.json similarity index 100% rename from chezmoi/dot_config/zed/keymap.json rename to config/zed/keymap.json diff --git a/chezmoi/dot_config/zed/private_settings.json b/config/zed/private_settings.json similarity index 100% rename from chezmoi/dot_config/zed/private_settings.json rename to config/zed/private_settings.json diff --git a/chezmoi/dot_config/zed/themes/.keep b/config/zed/themes/.keep similarity index 100% rename from chezmoi/dot_config/zed/themes/.keep rename to config/zed/themes/.keep diff --git a/chezmoi/dot_config/zellij/config.kdl b/config/zellij/config.kdl similarity index 100% rename from chezmoi/dot_config/zellij/config.kdl rename to config/zellij/config.kdl diff --git a/chezmoi/dot_config/zellij/themes/catppuccin.kdl b/config/zellij/themes/catppuccin.kdl similarity index 100% rename from chezmoi/dot_config/zellij/themes/catppuccin.kdl rename to config/zellij/themes/catppuccin.kdl diff --git a/chezmoi/dot_config/zk/config.toml b/config/zk/config.toml similarity index 100% rename from chezmoi/dot_config/zk/config.toml rename to config/zk/config.toml diff --git a/chezmoi/dot_config/zsh/aliases/aliases.zsh b/config/zsh/aliases/aliases.zsh similarity index 100% rename from chezmoi/dot_config/zsh/aliases/aliases.zsh rename to config/zsh/aliases/aliases.zsh diff --git a/chezmoi/dot_config/zsh/aliases/configs.zsh b/config/zsh/aliases/configs.zsh similarity index 100% rename from chezmoi/dot_config/zsh/aliases/configs.zsh rename to config/zsh/aliases/configs.zsh diff --git a/chezmoi/dot_config/zsh/aliases/fzf.zsh b/config/zsh/aliases/fzf.zsh similarity index 100% rename from chezmoi/dot_config/zsh/aliases/fzf.zsh rename to config/zsh/aliases/fzf.zsh diff --git a/chezmoi/dot_config/zsh/aliases/nvim.zsh b/config/zsh/aliases/nvim.zsh similarity index 100% rename from chezmoi/dot_config/zsh/aliases/nvim.zsh rename to config/zsh/aliases/nvim.zsh diff --git a/chezmoi/dot_config/zsh/aliases/pnpm.zsh b/config/zsh/aliases/pnpm.zsh similarity index 100% rename from chezmoi/dot_config/zsh/aliases/pnpm.zsh rename to config/zsh/aliases/pnpm.zsh diff --git a/chezmoi/dot_config/zsh/completions/_alacritty b/config/zsh/completions/_alacritty similarity index 100% rename from chezmoi/dot_config/zsh/completions/_alacritty rename to config/zsh/completions/_alacritty diff --git a/chezmoi/dot_config/zsh/completions/_cargo b/config/zsh/completions/_cargo similarity index 100% rename from chezmoi/dot_config/zsh/completions/_cargo rename to config/zsh/completions/_cargo diff --git a/chezmoi/dot_config/zsh/completions/_chezmoi b/config/zsh/completions/_chezmoi similarity index 100% rename from chezmoi/dot_config/zsh/completions/_chezmoi rename to config/zsh/completions/_chezmoi diff --git a/chezmoi/dot_config/zsh/completions/_cht b/config/zsh/completions/_cht similarity index 100% rename from chezmoi/dot_config/zsh/completions/_cht rename to config/zsh/completions/_cht diff --git a/chezmoi/dot_config/zsh/completions/_globdots b/config/zsh/completions/_globdots similarity index 100% rename from chezmoi/dot_config/zsh/completions/_globdots rename to config/zsh/completions/_globdots diff --git a/chezmoi/dot_config/zsh/completions/_lsd b/config/zsh/completions/_lsd similarity index 100% rename from chezmoi/dot_config/zsh/completions/_lsd rename to config/zsh/completions/_lsd diff --git a/chezmoi/dot_config/zsh/completions/_rg b/config/zsh/completions/_rg similarity index 100% rename from chezmoi/dot_config/zsh/completions/_rg rename to config/zsh/completions/_rg diff --git a/chezmoi/dot_config/zsh/completions/_rtx b/config/zsh/completions/_rtx similarity index 100% rename from chezmoi/dot_config/zsh/completions/_rtx rename to config/zsh/completions/_rtx diff --git a/chezmoi/dot_config/zsh/completions/_rye b/config/zsh/completions/_rye similarity index 100% rename from chezmoi/dot_config/zsh/completions/_rye rename to config/zsh/completions/_rye diff --git a/chezmoi/dot_config/zsh/completions/_starship b/config/zsh/completions/_starship similarity index 100% rename from chezmoi/dot_config/zsh/completions/_starship rename to config/zsh/completions/_starship diff --git a/chezmoi/dot_config/zsh/completions/_tea b/config/zsh/completions/_tea similarity index 100% rename from chezmoi/dot_config/zsh/completions/_tea rename to config/zsh/completions/_tea diff --git a/chezmoi/dot_config/zsh/completions/_tldr b/config/zsh/completions/_tldr similarity index 100% rename from chezmoi/dot_config/zsh/completions/_tldr rename to config/zsh/completions/_tldr diff --git a/chezmoi/dot_config/zsh/completions/_zellij b/config/zsh/completions/_zellij similarity index 100% rename from chezmoi/dot_config/zsh/completions/_zellij rename to config/zsh/completions/_zellij diff --git a/chezmoi/dot_config/zsh/functions/fedora.zsh b/config/zsh/functions/fedora.zsh similarity index 100% rename from chezmoi/dot_config/zsh/functions/fedora.zsh rename to config/zsh/functions/fedora.zsh diff --git a/chezmoi/dot_config/zsh/functions/flatpak.zsh b/config/zsh/functions/flatpak.zsh similarity index 100% rename from chezmoi/dot_config/zsh/functions/flatpak.zsh rename to config/zsh/functions/flatpak.zsh diff --git a/chezmoi/dot_config/zsh/functions/functions.zsh b/config/zsh/functions/functions.zsh similarity index 100% rename from chezmoi/dot_config/zsh/functions/functions.zsh rename to config/zsh/functions/functions.zsh diff --git a/chezmoi/executable_dot_zprofile.tmpl b/config/zsh/zprofile similarity index 96% rename from chezmoi/executable_dot_zprofile.tmpl rename to config/zsh/zprofile index c4db92a..cf0977d 100644 --- a/chezmoi/executable_dot_zprofile.tmpl +++ b/config/zsh/zprofile @@ -10,7 +10,6 @@ export EDITOR=nvim export VISUAL="$EDITOR" export QT_STYLE_OVERRIDE=kvantum export MOZ_ENABLE_WAYLAND=1 -export OPENAI_API_KEY="{{ .openAIKey }}" # Dev Stuff export NPM_PACKAGES="$HOME/.npm-packages" diff --git a/chezmoi/executable_dot_zshrc b/config/zsh/zshrc similarity index 97% rename from chezmoi/executable_dot_zshrc rename to config/zsh/zshrc index 75a2f88..158a105 100644 --- a/chezmoi/executable_dot_zshrc +++ b/config/zsh/zshrc @@ -9,6 +9,10 @@ # Set the directory we want to store zinit and plugins ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit" +# Auto install zinit +[ ! -d $ZINIT_HOME ] && mkdir -p "$(dirname $ZINIT_HOME)" +[ ! -d $ZINIT_HOME/.git ] && git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" + # Source/Load zinit, installation is handle by chezmoi external script source "${ZINIT_HOME}/zinit.zsh" @@ -139,4 +143,4 @@ done eval "$(fzf --zsh)" eval "$(zoxide init --cmd cd zsh)" eval "$(starship init zsh)" -eval "$(mise activate zsh)" +# eval "$(mise activate zsh)" From 6df1940eb8634c2fe89aa20a1729028d0019115f Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 13 Nov 2024 13:06:15 -0300 Subject: [PATCH 002/152] fix nvim-tmux navigation inside distrobox --- config/nvim/lua/aleidk/plugins/lsp.lua | 3 +- config/nvim/lua/aleidk/plugins/mason.lua | 11 +- config/starship.toml | 193 +++++++---------------- config/tmux/tmux.conf | 2 +- config/zsh/aliases/aliases.zsh | 1 + config/zsh/zprofile | 4 +- 6 files changed, 64 insertions(+), 150 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins/lsp.lua b/config/nvim/lua/aleidk/plugins/lsp.lua index 8512c8d..4a4c40d 100644 --- a/config/nvim/lua/aleidk/plugins/lsp.lua +++ b/config/nvim/lua/aleidk/plugins/lsp.lua @@ -158,7 +158,8 @@ return { mason_lspconfig.setup({ ensure_installed = vim.tbl_keys(servers), - automatic_installation = { exclude = { "astro", "phpactor", "gopls", "rust_analyzer", "sqlls" } }, + -- automatic_installation = { exclude = { "astro", "phpactor", "rust_analyzer", "sqlls" } }, + automatic_installation = false, }) mason_lspconfig.setup_handlers({ diff --git a/config/nvim/lua/aleidk/plugins/mason.lua b/config/nvim/lua/aleidk/plugins/mason.lua index cee4bfd..6353e53 100644 --- a/config/nvim/lua/aleidk/plugins/mason.lua +++ b/config/nvim/lua/aleidk/plugins/mason.lua @@ -4,15 +4,6 @@ return { keys = { { "um", "Mason", desc = "Mason" } }, build = ":MasonUpdate", opts = { - ensure_installed = { - "blue", - "ruff", - "eslint_d", - "markdownlint", - "nimlsp", - "prettierd", - "shellcheck", - "stylua", - }, + ensure_installed = {}, }, } diff --git a/config/starship.toml b/config/starship.toml index 8b3da4d..cf03107 100644 --- a/config/starship.toml +++ b/config/starship.toml @@ -1,149 +1,70 @@ # Get editor completions based on the config schema "$schema" = 'https://starship.rs/config-schema.json' +palette = "catppuccin_macchiato" + +format = "$directory\n$container$character" +right_format = "$all" + # Inserts a blank line between shell prompts -add_newline = true +add_newline = false -# Replace the '❯' symbol in the prompt with '➜' [character] # The name of the module we are configuring is 'character' -success_symbol = '[➜](bold green)' # The 'success_symbol' segment is being set to '➜' with the color 'bold green' +success_symbol = '[➜](bold green)' +error_symbol = '[➜](bold red)' -[aws] -symbol = " " - -[buf] -symbol = " " - -[c] -symbol = " " - -[conda] -symbol = " " - -[dart] -symbol = " " - -[directory] -read_only = " " - -[docker_context] -symbol = " " - -[elixir] -symbol = " " - -[elm] -symbol = " " - -[fossil_branch] -symbol = " " +[container] +symbol = "󰆧" +style = 'mauve' +format = '[$symbol \[$name\]]($style) ' [git_branch] -symbol = " " +symbol = "󰘬 " +format = '[$symbol$branch(:$remote_branch)]($style) ' + +[git_status] +style = '' +format = '([\[${all_status}${ahead_behind}\]]($style))' + +conflicted = ' ' +ahead = ' ' +behind = ' ' +diverged = ' ' +up_to_date = '[ ](green)' +untracked = ' ' +stashed = '󰮄 ' +modified = '[ \($count\)](peach) ' +staged = '[ \($count\)](green) ' +renamed = ' ' +deleted = '[ \($count\)](red) ' [golang] symbol = " " -[guix_shell] -symbol = " " - -[haskell] -symbol = " " - -[haxe] -symbol = "⌘ " - -[hg_branch] -symbol = " " - -[hostname] -ssh_symbol = " " - -[java] -symbol = " " - -[julia] -symbol = " " - -[lua] -symbol = " " - -[memory_usage] -symbol = " " - -[meson] -symbol = "喝 " - -[nim] -symbol = " " - -[nix_shell] -symbol = " " - -[nodejs] -symbol = " " - -[os.symbols] -Alpaquita = " " -Alpine = " " -Amazon = " " -Android = " " -Arch = " " -Artix = " " -CentOS = " " -Debian = " " -DragonFly = " " -Emscripten = " " -EndeavourOS = " " -Fedora = " " -FreeBSD = " " -Garuda = "﯑ " -Gentoo = " " -HardenedBSD = "ﲊ " -Illumos = " " -Linux = " " -Mabox = " " -Macos = " " -Manjaro = " " -Mariner = " " -MidnightBSD = " " -Mint = " " -NetBSD = " " -NixOS = " " -OpenBSD = " " -openSUSE = " " -OracleLinux = " " -Pop = " " -Raspbian = " " -Redhat = " " -RedHatEnterprise = " " -Redox = " " -Solus = "ﴱ " -SUSE = " " -Ubuntu = " " -Unknown = " " -Windows = " " - -[package] -symbol = " " - -[pijul_channel] -symbol = "🪺 " - -[python] -symbol = " " - -[rlang] -symbol = "ﳒ " - -[ruby] -symbol = " " - -[rust] -symbol = " " - -[scala] -symbol = " " - -[spack] -symbol = "🅢 " +[palettes.catppuccin_macchiato] +rosewater = "#f4dbd6" +flamingo = "#f0c6c6" +pink = "#f5bde6" +mauve = "#c6a0f6" +red = "#ed8796" +maroon = "#ee99a0" +peach = "#f5a97f" +yellow = "#eed49f" +green = "#a6da95" +teal = "#8bd5ca" +sky = "#91d7e3" +sapphire = "#7dc4e4" +blue = "#8aadf4" +lavender = "#b7bdf8" +text = "#cad3f5" +subtext1 = "#b8c0e0" +subtext0 = "#a5adcb" +overlay2 = "#939ab7" +overlay1 = "#8087a2" +overlay0 = "#6e738d" +surface2 = "#5b6078" +surface1 = "#494d64" +surface0 = "#363a4f" +base = "#24273a" +mantle = "#1e2030" +crust = "#181926" diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index c24df25..b65e8b1 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -188,7 +188,7 @@ TMUX_FZF_LAUNCH_KEY="w" TMUX_FZF_OPTIONS="-p -w 80% -h 60% -m" # Tmux Management -bind-key "f" run-shell "~/.local/share/chezmoi/scripts/fzf-tmux-sessions" +bind-key "f" run-shell "~/Repos/Private/dots/scripts/fzf-tmux-sessions" bind-key "F" run-shell -b "$HOME/.config/tmux/plugins/tmux-fzf/scripts/session.sh switch" # bind-key "F" run-shell -b "$HOME/.config/tmux/plugins/tmux-fzf/scripts/window.sh switch" diff --git a/config/zsh/aliases/aliases.zsh b/config/zsh/aliases/aliases.zsh index d0b7088..4f0a39a 100644 --- a/config/zsh/aliases/aliases.zsh +++ b/config/zsh/aliases/aliases.zsh @@ -45,6 +45,7 @@ alias \ pps="podman ps --format 'table {{.ID}}\t{{.Names}}\t{{.State}}\t{{.Status}}\t{{.RunningFor}}'" alias tm="fzf-tmux-sessions" +alias tmux="tmux -L $(hostname)" # allow to seamlessly create new servers inside containers # Misc alias \ diff --git a/config/zsh/zprofile b/config/zsh/zprofile index cf0977d..cd1614c 100644 --- a/config/zsh/zprofile +++ b/config/zsh/zprofile @@ -16,8 +16,8 @@ export NPM_PACKAGES="$HOME/.npm-packages" export NODE_PATH="$NPM_PACKAGES/lib/node_modules${NODE_PATH:+:$NODE_PATH}" export PNPM_HOME="$HOME/.local/share/pnpm" export ESLINT_USE_FLAT_CONFIG=true -. "$HOME/.cargo/env" -source "$HOME/.rye/env" +# . "$HOME/.cargo/env" +# source "$HOME/.rye/env" # Unset manpath so we can inherit from /etc/manpath via the `manpath` # command From c93597390077d7f105a8ed74d953863b78fc5e7f Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 13 Nov 2024 13:06:38 -0300 Subject: [PATCH 003/152] remove nushell config --- config/nushell/config.nu | 898 --------------------------------------- config/nushell/env.nu | 101 ----- 2 files changed, 999 deletions(-) delete mode 100644 config/nushell/config.nu delete mode 100644 config/nushell/env.nu diff --git a/config/nushell/config.nu b/config/nushell/config.nu deleted file mode 100644 index 2917e52..0000000 --- a/config/nushell/config.nu +++ /dev/null @@ -1,898 +0,0 @@ -# Nushell Config File -# -# version = "0.99.1" - -# For more information on defining custom themes, see -# https://www.nushell.sh/book/coloring_and_theming.html -# And here is the theme collection -# https://github.com/nushell/nu_scripts/tree/main/themes -let dark_theme = { - # color for nushell primitives - separator: white - leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off - header: green_bold - empty: blue - # Closures can be used to choose colors for specific values. - # The value (in this case, a bool) is piped into the closure. - # eg) {|| if $in { 'light_cyan' } else { 'light_gray' } } - bool: light_cyan - int: white - filesize: cyan - duration: white - date: purple - range: white - float: white - string: white - nothing: white - binary: white - cell-path: white - row_index: green_bold - record: white - list: white - block: white - hints: dark_gray - search_result: { bg: red fg: white } - shape_and: purple_bold - shape_binary: purple_bold - shape_block: blue_bold - shape_bool: light_cyan - shape_closure: green_bold - shape_custom: green - shape_datetime: cyan_bold - shape_directory: cyan - shape_external: cyan - shape_externalarg: green_bold - shape_external_resolved: light_yellow_bold - shape_filepath: cyan - shape_flag: blue_bold - shape_float: purple_bold - # shapes are used to change the cli syntax highlighting - shape_garbage: { fg: white bg: red attr: b } - shape_glob_interpolation: cyan_bold - shape_globpattern: cyan_bold - shape_int: purple_bold - shape_internalcall: cyan_bold - shape_keyword: cyan_bold - shape_list: cyan_bold - shape_literal: blue - shape_match_pattern: green - shape_matching_brackets: { attr: u } - shape_nothing: light_cyan - shape_operator: yellow - shape_or: purple_bold - shape_pipe: purple_bold - shape_range: yellow_bold - shape_record: cyan_bold - shape_redirection: purple_bold - shape_signature: green_bold - shape_string: green - shape_string_interpolation: cyan_bold - shape_table: blue_bold - shape_variable: purple - shape_vardecl: purple - shape_raw_string: light_purple -} - -let light_theme = { - # color for nushell primitives - separator: dark_gray - leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off - header: green_bold - empty: blue - # Closures can be used to choose colors for specific values. - # The value (in this case, a bool) is piped into the closure. - # eg) {|| if $in { 'dark_cyan' } else { 'dark_gray' } } - bool: dark_cyan - int: dark_gray - filesize: cyan_bold - duration: dark_gray - date: purple - range: dark_gray - float: dark_gray - string: dark_gray - nothing: dark_gray - binary: dark_gray - cell-path: dark_gray - row_index: green_bold - record: dark_gray - list: dark_gray - block: dark_gray - hints: dark_gray - search_result: { fg: white bg: red } - shape_and: purple_bold - shape_binary: purple_bold - shape_block: blue_bold - shape_bool: light_cyan - shape_closure: green_bold - shape_custom: green - shape_datetime: cyan_bold - shape_directory: cyan - shape_external: cyan - shape_externalarg: green_bold - shape_external_resolved: light_purple_bold - shape_filepath: cyan - shape_flag: blue_bold - shape_float: purple_bold - # shapes are used to change the cli syntax highlighting - shape_garbage: { fg: white bg: red attr: b } - shape_glob_interpolation: cyan_bold - shape_globpattern: cyan_bold - shape_int: purple_bold - shape_internalcall: cyan_bold - shape_keyword: cyan_bold - shape_list: cyan_bold - shape_literal: blue - shape_match_pattern: green - shape_matching_brackets: { attr: u } - shape_nothing: light_cyan - shape_operator: yellow - shape_or: purple_bold - shape_pipe: purple_bold - shape_range: yellow_bold - shape_record: cyan_bold - shape_redirection: purple_bold - shape_signature: green_bold - shape_string: green - shape_string_interpolation: cyan_bold - shape_table: blue_bold - shape_variable: purple - shape_vardecl: purple - shape_raw_string: light_purple -} - -# External completer example -# let carapace_completer = {|spans| -# carapace $spans.0 nushell ...$spans | from json -# } - -# The default config record. This is where much of your global configuration is setup. -$env.config = { - show_banner: false # true or false to enable or disable the welcome banner at startup - - ls: { - use_ls_colors: true # use the LS_COLORS environment variable to colorize output - clickable_links: true # enable or disable clickable links. Your terminal has to support links. - } - - rm: { - always_trash: true # always act as if -t was given. Can be overridden with -p - } - - table: { - mode: compact # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other - index_mode: auto # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column - show_empty: true # show 'empty list' and 'empty record' placeholders for command output - padding: { left: 1, right: 1 } # a left right padding of each column in a table - trim: { - methodology: wrapping # wrapping or truncating - wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology - truncating_suffix: "..." # A suffix used by the 'truncating' methodology - } - header_on_separator: false # show header text on separator/border line - # abbreviated_row_count: 10 # limit data rows from top and bottom after reaching a set point - } - - error_style: "fancy" # "fancy" or "plain" for screen reader-friendly error messages - - # Whether an error message should be printed if an error of a certain kind is triggered. - display_errors: { - exit_code: false # assume the external command prints an error message - # Core dump errors are always printed, and SIGPIPE never triggers an error. - # The setting below controls message printing for termination by all other signals. - termination_signal: true - } - - # datetime_format determines what a datetime rendered in the shell would look like. - # Behavior without this configuration point will be to "humanize" the datetime display, - # showing something like "a day ago." - datetime_format: { - # normal: '%a, %d %b %Y %H:%M:%S %z' # shows up in displays of variables or other datetime's outside of tables - # table: '%m/%d/%y %I:%M:%S%p' # generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format - } - - explore: { - status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" }, - command_bar_text: { fg: "#C4C9C6" }, - highlight: { fg: "black", bg: "yellow" }, - status: { - error: { fg: "white", bg: "red" }, - warn: {} - info: {} - }, - selected_cell: { bg: light_blue }, - } - - history: { - max_size: 100_000 # Session has to be reloaded for this to take effect - sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file - file_format: "sqlite" # "sqlite" or "plaintext" - isolation: true # only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions. - } - - completions: { - case_sensitive: false # set to true to enable case-sensitive completions - quick: true # set this to false to prevent auto-selecting completions when only one remains - partial: true # set this to false to prevent partial filling of the prompt - algorithm: "prefix" # prefix or fuzzy - sort: "smart" # "smart" (alphabetical for prefix matching, fuzzy score for fuzzy matching) or "alphabetical" - external: { - enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow - max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options - completer: null # check 'carapace_completer' above as an example - } - use_ls_colors: true # set this to true to enable file/path/directory completions using LS_COLORS - } - - filesize: { - metric: true # true => KB, MB, GB (ISO standard), false => KiB, MiB, GiB (Windows standard) - format: "auto" # b, kb, kib, mb, mib, gb, gib, tb, tib, pb, pib, eb, eib, auto - } - - cursor_shape: { - emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default) - vi_insert: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default) - vi_normal: block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default) - } - - color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record - footer_mode: 25 # always, never, number_of_rows, auto - float_precision: 2 # the precision for displaying floats in tables - buffer_editor: null # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL - use_ansi_coloring: true - bracketed_paste: true # enable bracketed paste, currently useless on windows - edit_mode: vi # emacs, vi - shell_integration: { - # osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title - osc2: true - # osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory - osc7: true - # osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8 - osc8: true - # osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal - osc9_9: false - # osc133 is several escapes invented by Final Term which include the supported ones below. - # 133;A - Mark prompt start - # 133;B - Mark prompt end - # 133;C - Mark pre-execution - # 133;D;exit - Mark execution finished with exit code - # This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is - osc133: true - # osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features - # 633;A - Mark prompt start - # 633;B - Mark prompt end - # 633;C - Mark pre-execution - # 633;D;exit - Mark execution finished with exit code - # 633;E - Explicitly set the command line with an optional nonce - # 633;P;Cwd= - Mark the current working directory and communicate it to the terminal - # and also helps with the run recent menu in vscode - osc633: true - # reset_application_mode is escape \x1b[?1l and was added to help ssh work better - reset_application_mode: true - } - render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt. - use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this. - highlight_resolved_externals: true # true enables highlighting of external commands in the repl resolved by which. - recursion_limit: 50 # the maximum number of times nushell allows recursion before stopping it - - plugins: {} # Per-plugin configuration. See https://www.nushell.sh/contributor-book/plugins.html#configuration. - - plugin_gc: { - # Configuration for plugin garbage collection - default: { - enabled: true # true to enable stopping of inactive plugins - stop_after: 10sec # how long to wait after a plugin is inactive to stop it - } - plugins: { - # alternate configuration for specific plugins, by name, for example: - # - # gstat: { - # enabled: false - # } - } - } - - hooks: { - pre_prompt: [{ null }] # run before the prompt is shown - pre_execution: [{ null }] # run before the repl input is run - env_change: { - PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input - } - display_output: "if (term size).columns >= 100 { table -e } else { table }" # run to display the output of a pipeline - command_not_found: { null } # return an error message when a command is not found - } - - menus: [ - # Configuration for default nushell menus - # Note the lack of source parameter - { - name: completion_menu - only_buffer_difference: false - marker: "| " - type: { - layout: columnar - columns: 4 - col_width: 20 # Optional value. If missing all the screen width is used to calculate column width - col_padding: 2 - } - style: { - text: green - selected_text: { attr: r } - description_text: yellow - match_text: { attr: u } - selected_match_text: { attr: ur } - } - } - { - name: ide_completion_menu - only_buffer_difference: false - marker: "| " - type: { - layout: ide - min_completion_width: 0, - max_completion_width: 50, - max_completion_height: 10, # will be limited by the available lines in the terminal - padding: 0, - border: true, - cursor_offset: 0, - description_mode: "prefer_right" - min_description_width: 0 - max_description_width: 50 - max_description_height: 10 - description_offset: 1 - # If true, the cursor pos will be corrected, so the suggestions match up with the typed text - # - # C:\> str - # str join - # str trim - # str split - correct_cursor_pos: false - } - style: { - text: green - selected_text: { attr: r } - description_text: yellow - match_text: { attr: u } - selected_match_text: { attr: ur } - } - } - { - name: history_menu - only_buffer_difference: true - marker: "? " - type: { - layout: list - page_size: 10 - } - style: { - text: green - selected_text: green_reverse - description_text: yellow - } - } - { - name: help_menu - only_buffer_difference: true - marker: "? " - type: { - layout: description - columns: 4 - col_width: 20 # Optional value. If missing all the screen width is used to calculate column width - col_padding: 2 - selection_rows: 4 - description_rows: 10 - } - style: { - text: green - selected_text: green_reverse - description_text: yellow - } - } - ] - - keybindings: [ - { - name: completion_menu - modifier: none - keycode: tab - mode: [emacs vi_normal vi_insert] - event: { - until: [ - { send: menu name: completion_menu } - { send: menunext } - { edit: complete } - ] - } - } - { - name: completion_previous_menu - modifier: shift - keycode: backtab - mode: [emacs, vi_normal, vi_insert] - event: { send: menuprevious } - } - { - name: ide_completion_menu - modifier: control - keycode: space - mode: [emacs vi_normal vi_insert] - event: { - until: [ - { send: menu name: ide_completion_menu } - { send: menunext } - { edit: complete } - ] - } - } - { - name: history_menu - modifier: control - keycode: char_r - mode: [emacs, vi_insert, vi_normal] - event: { send: menu name: history_menu } - } - { - name: help_menu - modifier: none - keycode: f1 - mode: [emacs, vi_insert, vi_normal] - event: { send: menu name: help_menu } - } - { - name: next_page_menu - modifier: control - keycode: char_x - mode: emacs - event: { send: menupagenext } - } - { - name: undo_or_previous_page_menu - modifier: control - keycode: char_z - mode: emacs - event: { - until: [ - { send: menupageprevious } - { edit: undo } - ] - } - } - { - name: escape - modifier: none - keycode: escape - mode: [emacs, vi_normal, vi_insert] - event: { send: esc } # NOTE: does not appear to work - } - { - name: cancel_command - modifier: control - keycode: char_c - mode: [emacs, vi_normal, vi_insert] - event: { send: ctrlc } - } - { - name: quit_shell - modifier: control - keycode: char_d - mode: [emacs, vi_normal, vi_insert] - event: { send: ctrld } - } - { - name: clear_screen - modifier: control - keycode: char_l - mode: [emacs, vi_normal, vi_insert] - event: { send: clearscreen } - } - { - name: search_history - modifier: control - keycode: char_q - mode: [emacs, vi_normal, vi_insert] - event: { send: searchhistory } - } - { - name: open_command_editor - modifier: control - keycode: char_o - mode: [emacs, vi_normal, vi_insert] - event: { send: openeditor } - } - { - name: move_up - modifier: none - keycode: up - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: menuup } - { send: up } - ] - } - } - { - name: move_down - modifier: none - keycode: down - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: menudown } - { send: down } - ] - } - } - { - name: move_left - modifier: none - keycode: left - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: menuleft } - { send: left } - ] - } - } - { - name: move_right_or_take_history_hint - modifier: none - keycode: right - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: historyhintcomplete } - { send: menuright } - { send: right } - ] - } - } - { - name: move_one_word_left - modifier: control - keycode: left - mode: [emacs, vi_normal, vi_insert] - event: { edit: movewordleft } - } - { - name: move_one_word_right_or_take_history_hint - modifier: control - keycode: right - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: historyhintwordcomplete } - { edit: movewordright } - ] - } - } - { - name: move_to_line_start - modifier: none - keycode: home - mode: [emacs, vi_normal, vi_insert] - event: { edit: movetolinestart } - } - { - name: move_to_line_start - modifier: control - keycode: char_a - mode: [emacs, vi_normal, vi_insert] - event: { edit: movetolinestart } - } - { - name: move_to_line_end_or_take_history_hint - modifier: none - keycode: end - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: historyhintcomplete } - { edit: movetolineend } - ] - } - } - { - name: move_to_line_end_or_take_history_hint - modifier: control - keycode: char_e - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: historyhintcomplete } - { edit: movetolineend } - ] - } - } - { - name: move_to_line_start - modifier: control - keycode: home - mode: [emacs, vi_normal, vi_insert] - event: { edit: movetolinestart } - } - { - name: move_to_line_end - modifier: control - keycode: end - mode: [emacs, vi_normal, vi_insert] - event: { edit: movetolineend } - } - { - name: move_down - modifier: control - keycode: char_n - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: menudown } - { send: down } - ] - } - } - { - name: move_up - modifier: control - keycode: char_p - mode: [emacs, vi_normal, vi_insert] - event: { - until: [ - { send: menuup } - { send: up } - ] - } - } - { - name: delete_one_character_backward - modifier: none - keycode: backspace - mode: [emacs, vi_insert] - event: { edit: backspace } - } - { - name: delete_one_word_backward - modifier: control - keycode: backspace - mode: [emacs, vi_insert] - event: { edit: backspaceword } - } - { - name: delete_one_character_forward - modifier: none - keycode: delete - mode: [emacs, vi_insert] - event: { edit: delete } - } - { - name: delete_one_character_forward - modifier: control - keycode: delete - mode: [emacs, vi_insert] - event: { edit: delete } - } - { - name: delete_one_character_backward - modifier: control - keycode: char_h - mode: [emacs, vi_insert] - event: { edit: backspace } - } - { - name: delete_one_word_backward - modifier: control - keycode: char_w - mode: [emacs, vi_insert] - event: { edit: backspaceword } - } - { - name: move_left - modifier: none - keycode: backspace - mode: vi_normal - event: { edit: moveleft } - } - { - name: newline_or_run_command - modifier: none - keycode: enter - mode: emacs - event: { send: enter } - } - { - name: move_left - modifier: control - keycode: char_b - mode: emacs - event: { - until: [ - { send: menuleft } - { send: left } - ] - } - } - { - name: move_right_or_take_history_hint - modifier: control - keycode: char_f - mode: emacs - event: { - until: [ - { send: historyhintcomplete } - { send: menuright } - { send: right } - ] - } - } - { - name: redo_change - modifier: control - keycode: char_g - mode: emacs - event: { edit: redo } - } - { - name: undo_change - modifier: control - keycode: char_z - mode: emacs - event: { edit: undo } - } - { - name: paste_before - modifier: control - keycode: char_y - mode: emacs - event: { edit: pastecutbufferbefore } - } - { - name: cut_word_left - modifier: control - keycode: char_w - mode: emacs - event: { edit: cutwordleft } - } - { - name: cut_line_to_end - modifier: control - keycode: char_k - mode: emacs - event: { edit: cuttolineend } - } - { - name: cut_line_from_start - modifier: control - keycode: char_u - mode: emacs - event: { edit: cutfromstart } - } - { - name: swap_graphemes - modifier: control - keycode: char_t - mode: emacs - event: { edit: swapgraphemes } - } - { - name: move_one_word_left - modifier: alt - keycode: left - mode: emacs - event: { edit: movewordleft } - } - { - name: move_one_word_right_or_take_history_hint - modifier: alt - keycode: right - mode: emacs - event: { - until: [ - { send: historyhintwordcomplete } - { edit: movewordright } - ] - } - } - { - name: move_one_word_left - modifier: alt - keycode: char_b - mode: emacs - event: { edit: movewordleft } - } - { - name: move_one_word_right_or_take_history_hint - modifier: alt - keycode: char_f - mode: emacs - event: { - until: [ - { send: historyhintwordcomplete } - { edit: movewordright } - ] - } - } - { - name: delete_one_word_forward - modifier: alt - keycode: delete - mode: emacs - event: { edit: deleteword } - } - { - name: delete_one_word_backward - modifier: alt - keycode: backspace - mode: emacs - event: { edit: backspaceword } - } - { - name: delete_one_word_backward - modifier: alt - keycode: char_m - mode: emacs - event: { edit: backspaceword } - } - { - name: cut_word_to_right - modifier: alt - keycode: char_d - mode: emacs - event: { edit: cutwordright } - } - { - name: upper_case_word - modifier: alt - keycode: char_u - mode: emacs - event: { edit: uppercaseword } - } - { - name: lower_case_word - modifier: alt - keycode: char_l - mode: emacs - event: { edit: lowercaseword } - } - { - name: capitalize_char - modifier: alt - keycode: char_c - mode: emacs - event: { edit: capitalizechar } - } - # The following bindings with `*system` events require that Nushell has - # been compiled with the `system-clipboard` feature. - # If you want to use the system clipboard for visual selection or to - # paste directly, uncomment the respective lines and replace the version - # using the internal clipboard. - { - name: copy_selection - modifier: control_shift - keycode: char_c - mode: emacs - event: { edit: copyselection } - # event: { edit: copyselectionsystem } - } - { - name: cut_selection - modifier: control_shift - keycode: char_x - mode: emacs - event: { edit: cutselection } - # event: { edit: cutselectionsystem } - } - # { - # name: paste_system - # modifier: control_shift - # keycode: char_v - # mode: emacs - # event: { edit: pastesystem } - # } - { - name: select_all - modifier: control_shift - keycode: char_a - mode: emacs - event: { edit: selectall } - } - ] -} diff --git a/config/nushell/env.nu b/config/nushell/env.nu deleted file mode 100644 index 0ed67b1..0000000 --- a/config/nushell/env.nu +++ /dev/null @@ -1,101 +0,0 @@ -# Nushell Environment Config File -# -# version = "0.99.1" - -def create_left_prompt [] { - let dir = match (do --ignore-shell-errors { $env.PWD | path relative-to $nu.home-path }) { - null => $env.PWD - '' => '~' - $relative_pwd => ([~ $relative_pwd] | path join) - } - - let path_color = (if (is-admin) { ansi red_bold } else { ansi green_bold }) - let separator_color = (if (is-admin) { ansi light_red_bold } else { ansi light_green_bold }) - let path_segment = $"($path_color)($dir)(ansi reset)" - - $path_segment | str replace --all (char path_sep) $"($separator_color)(char path_sep)($path_color)" -} - -def create_right_prompt [] { - # create a right prompt in magenta with green separators and am/pm underlined - let time_segment = ([ - (ansi reset) - (ansi magenta) - (date now | format date '%x %X') # try to respect user's locale - ] | str join | str replace --regex --all "([/:])" $"(ansi green)${1}(ansi magenta)" | - str replace --regex --all "([AP]M)" $"(ansi magenta_underline)${1}") - - let last_exit_code = if ($env.LAST_EXIT_CODE != 0) {([ - (ansi rb) - ($env.LAST_EXIT_CODE) - ] | str join) - } else { "" } - - ([$last_exit_code, (char space), $time_segment] | str join) -} - -# Use nushell functions to define your right and left prompt -$env.PROMPT_COMMAND = {|| create_left_prompt } -# FIXME: This default is not implemented in rust code as of 2023-09-08. -$env.PROMPT_COMMAND_RIGHT = {|| create_right_prompt } - -# The prompt indicators are environmental variables that represent -# the state of the prompt -$env.PROMPT_INDICATOR = {|| "> " } -$env.PROMPT_INDICATOR_VI_INSERT = {|| ": " } -$env.PROMPT_INDICATOR_VI_NORMAL = {|| "> " } -$env.PROMPT_MULTILINE_INDICATOR = {|| "::: " } - -# If you want previously entered commands to have a different prompt from the usual one, -# you can uncomment one or more of the following lines. -# This can be useful if you have a 2-line prompt and it's taking up a lot of space -# because every command entered takes up 2 lines instead of 1. You can then uncomment -# the line below so that previously entered commands show with a single `🚀`. -# $env.TRANSIENT_PROMPT_COMMAND = {|| "🚀 " } -# $env.TRANSIENT_PROMPT_INDICATOR = {|| "" } -# $env.TRANSIENT_PROMPT_INDICATOR_VI_INSERT = {|| "" } -# $env.TRANSIENT_PROMPT_INDICATOR_VI_NORMAL = {|| "" } -# $env.TRANSIENT_PROMPT_MULTILINE_INDICATOR = {|| "" } -# $env.TRANSIENT_PROMPT_COMMAND_RIGHT = {|| "" } - -# Specifies how environment variables are: -# - converted from a string to a value on Nushell startup (from_string) -# - converted from a value back to a string when running external commands (to_string) -# Note: The conversions happen *after* config.nu is loaded -$env.ENV_CONVERSIONS = { - "PATH": { - from_string: { |s| $s | split row (char esep) | path expand --no-symlink } - to_string: { |v| $v | path expand --no-symlink | str join (char esep) } - } - "Path": { - from_string: { |s| $s | split row (char esep) | path expand --no-symlink } - to_string: { |v| $v | path expand --no-symlink | str join (char esep) } - } -} - -# Directories to search for scripts when calling source or use -# The default for this is $nu.default-config-dir/scripts -$env.NU_LIB_DIRS = [ - ($nu.default-config-dir | path join 'scripts') # add /scripts - ($nu.data-dir | path join 'completions') # default home for nushell completions -] - -# Directories to search for plugin binaries when calling register -# The default for this is $nu.default-config-dir/plugins -$env.NU_PLUGIN_DIRS = [ - ($nu.default-config-dir | path join 'plugins') # add /plugins -] - -# To add entries to PATH (on Windows you might use Path), you can use the following pattern: -# $env.PATH = ($env.PATH | split row (char esep) | prepend '/some/path') -# An alternate way to add entries to $env.PATH is to use the custom command `path add` -# which is built into the nushell stdlib: -# use std "path add" -# $env.PATH = ($env.PATH | split row (char esep)) -# path add /some/path -# path add ($env.CARGO_HOME | path join "bin") -# path add ($env.HOME | path join ".local" "bin") -# $env.PATH = ($env.PATH | uniq) - -# To load from a custom file you can use: -# source ($nu.default-config-dir | path join 'custom.nu') \ No newline at end of file From 00e3f8f8e9b5313fe5545164f7b780a3d6df8ce5 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 15 Nov 2024 09:20:57 -0300 Subject: [PATCH 004/152] add work-laptop config --- .dotter/global.toml | 9 +++++---- .dotter/work-laptop.toml | 6 ++++++ config/nvim/lazy-lock.json | 3 +-- config/nvim/lua/aleidk/plugins/ai.lua | 8 +++++++- config/nvim/lua/aleidk/plugins/treesitter.lua | 1 - 5 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 .dotter/work-laptop.toml diff --git a/.dotter/global.toml b/.dotter/global.toml index d929b92..909555a 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -14,14 +14,15 @@ scripts = "" # CLI package [cli] -depends = ["nvim", "nushell", "zsh"] +depends = ["nvim", "zsh"] [cli.files] -"config/yazi" = "~/.config/yazi" -"config/tmux" = "~/.config/tmux" +"config/bat" = "~/.config/bat" "config/sesh" = "~/.config/sesh" -"config/zellij" = "~/.config/zellij" "config/starship.toml" = "~/.config/starship.toml" +"config/tmux" = "~/.config/tmux" +"config/yazi" = "~/.config/yazi" +"config/zellij" = "~/.config/zellij" [dev.files] "config/git" = "~/.config/git" diff --git a/.dotter/work-laptop.toml b/.dotter/work-laptop.toml new file mode 100644 index 0000000..7709e32 --- /dev/null +++ b/.dotter/work-laptop.toml @@ -0,0 +1,6 @@ +includes = [] +packages = ["default", "cli", "dev"] + +[files] + +[variables] diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 8b6a601..f1e16b6 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -27,7 +27,7 @@ "grapple.nvim": { "branch": "main", "commit": "7aedc261b05a6c030397c4bc26416efbe746ebf1" }, "hurl.nvim": { "branch": "main", "commit": "d708158dda9a175c0f83cd106ea232301f4317cb" }, "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, - "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" }, + "lazy.nvim": { "branch": "main", "commit": "b02c9eae6a250f98908c146d1dc1a891f5019f0a" }, "lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, @@ -63,7 +63,6 @@ "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "tfm.nvim": { "branch": "main", "commit": "fb0de2c96bf303216ac5d91ce9bdb7f430030f8b" }, "todo-comments.nvim": { "branch": "main", "commit": "d61567557e2ff5c548c74e96b2d9f8d33e5fcb34" }, - "tree-sitter-nu": { "branch": "main", "commit": "7e0f16f608a9e804fae61430ade734f9f849fb80" }, "treesj": { "branch": "main", "commit": "6e8bd008bacd5ad001c3953017c1dca20709e915" }, "trouble.nvim": { "branch": "main", "commit": "03c1fbf518bef683422a3be9643c3da190903488" }, "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, diff --git a/config/nvim/lua/aleidk/plugins/ai.lua b/config/nvim/lua/aleidk/plugins/ai.lua index 9969c9c..28abb89 100644 --- a/config/nvim/lua/aleidk/plugins/ai.lua +++ b/config/nvim/lua/aleidk/plugins/ai.lua @@ -31,6 +31,13 @@ return { display = { action_palette = { prompt = " " + }, + chat = { + window = { + layout = "float", + height = 0.8, + width = 0.8, + }, } } }, @@ -75,4 +82,3 @@ return { }, } } - diff --git a/config/nvim/lua/aleidk/plugins/treesitter.lua b/config/nvim/lua/aleidk/plugins/treesitter.lua index 73616e1..1d1111d 100644 --- a/config/nvim/lua/aleidk/plugins/treesitter.lua +++ b/config/nvim/lua/aleidk/plugins/treesitter.lua @@ -7,7 +7,6 @@ return { "JoosepAlviste/nvim-ts-context-commentstring", "nvim-treesitter/nvim-treesitter-context", { "windwp/nvim-ts-autotag", opts = {} }, - { "nushell/tree-sitter-nu", build = ":TSUpdate nu" }, }, build = ":TSUpdate", config = function() From c7b411f60f601d8ef9c4fb11475223c988ba802a Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 18 Nov 2024 10:12:46 -0300 Subject: [PATCH 005/152] update nvim plugins - remove unused plugins - change file explorer plugin closes #3 --- config/mise/config.toml | 2 +- config/nvim/lazy-lock.json | 5 +- config/nvim/lua/aleidk/plugins/dashboard.lua | 35 ------ config/nvim/lua/aleidk/plugins/debugprint.lua | 7 -- .../nvim/lua/aleidk/plugins/file-browser.lua | 100 ------------------ .../nvim/lua/aleidk/plugins/file-explorer.lua | 90 ++++++---------- config/nvim/lua/aleidk/plugins/http.lua | 38 ------- config/yazi/package.toml | 4 +- config/yazi/yazi.toml | 2 +- config/zsh/zshrc | 2 +- 10 files changed, 40 insertions(+), 245 deletions(-) delete mode 100644 config/nvim/lua/aleidk/plugins/dashboard.lua delete mode 100644 config/nvim/lua/aleidk/plugins/debugprint.lua delete mode 100644 config/nvim/lua/aleidk/plugins/file-browser.lua delete mode 100644 config/nvim/lua/aleidk/plugins/http.lua diff --git a/config/mise/config.toml b/config/mise/config.toml index 981db02..33a93e4 100644 --- a/config/mise/config.toml +++ b/config/mise/config.toml @@ -2,7 +2,7 @@ node = 'lts' # python = {version='3', virtualenv='.venv'} python = {version='3'} # setting virtualenv adds a virtualenv in every directory -php = "8.2" +# php = "8.2" go = "latest" [settings] diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index f1e16b6..9e59165 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,6 +1,5 @@ { "LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" }, - "alpha-nvim": { "branch": "main", "commit": "41283fb402713fc8b327e60907f74e46166f4cfd" }, "auto-session": { "branch": "main", "commit": "4b0728715e674ad9c18f1519127dcaed59f9981b" }, "ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" }, "chezmoi.nvim": { "branch": "main", "commit": "faf61465718424696269b2647077331b3e4605f1" }, @@ -18,14 +17,12 @@ "copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" }, "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, "copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" }, - "debugprint.nvim": { "branch": "main", "commit": "8f2a335fb0e6ebf0291a3551e0198363437e3a38" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" }, "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, "gopher.nvim": { "branch": "main", "commit": "f55c15ada8e02398000c04a96ef44d986cd01051" }, "grapple.nvim": { "branch": "main", "commit": "7aedc261b05a6c030397c4bc26416efbe746ebf1" }, - "hurl.nvim": { "branch": "main", "commit": "d708158dda9a175c0f83cd106ea232301f4317cb" }, "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, "lazy.nvim": { "branch": "main", "commit": "b02c9eae6a250f98908c146d1dc1a891f5019f0a" }, "lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" }, @@ -61,7 +58,6 @@ "smart-splits.nvim": { "branch": "master", "commit": "95833675cd92538bf9cded1d2d58d1fc271c5428" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "tfm.nvim": { "branch": "main", "commit": "fb0de2c96bf303216ac5d91ce9bdb7f430030f8b" }, "todo-comments.nvim": { "branch": "main", "commit": "d61567557e2ff5c548c74e96b2d9f8d33e5fcb34" }, "treesj": { "branch": "main", "commit": "6e8bd008bacd5ad001c3953017c1dca20709e915" }, "trouble.nvim": { "branch": "main", "commit": "03c1fbf518bef683422a3be9643c3da190903488" }, @@ -74,6 +70,7 @@ "vim-dadbod-ui": { "branch": "master", "commit": "f74a31e8c6c5a9dccc63450a09d5cd64a9294330" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, + "yazi.nvim": { "branch": "main", "commit": "faa03e9acb894533b91c811d0dafd816b995088f" }, "zen-mode.nvim": { "branch": "main", "commit": "2694c5a2bc4dc26c7a9e74b9e2b812920c90a830" }, "zk-nvim": { "branch": "main", "commit": "dbf4eeab55b08856c9d6b6722dbff39630bb35eb" } } diff --git a/config/nvim/lua/aleidk/plugins/dashboard.lua b/config/nvim/lua/aleidk/plugins/dashboard.lua deleted file mode 100644 index db755d4..0000000 --- a/config/nvim/lua/aleidk/plugins/dashboard.lua +++ /dev/null @@ -1,35 +0,0 @@ -return { - "goolord/alpha-nvim", - lazy = false, - opts = function() - local dashboard = require("alpha.themes.dashboard") - - dashboard.section.header.val = { - " ████ ███ █████ █████ ", - " ░░███ ░░░ ░░███ ░░███ ", - " ██████ ░███ ██████ ████ ███████ ░███ █████", - " ░░░░░███ ░███ ███░░███░░███ ███░░███ ░███░░███ ", - " ███████ ░███ ░███████ ░███ ░███ ░███ ░██████░ ", - " ███░░███ ░███ ░███░░░ ░███ ░███ ░███ ░███░░███ ", - "░░████████ █████░░██████ █████░░████████ ████ █████", - " ░░░░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░░░ ░░░░ ░░░░░ ", - } - dashboard.section.header.opts.hl = "DashboardHeader" - - dashboard.section.buttons.val = { - dashboard.button("LDR f f", " Find File ", "ff"), - dashboard.button("LDR LDR t", " Bookmars", "t"), - dashboard.button("LDR g g", " Git ", "gg"), - } - - dashboard.section.footer.val = - { " ", " ", " ", "Nvim loaded " .. require("lazy").stats().count .. " plugins " } - dashboard.section.footer.opts.hl = "DashboardFooter" - - dashboard.config.layout[1].val = vim.fn.max({ 2, vim.fn.floor(vim.fn.winheight(0) * 0.2) }) - dashboard.config.layout[3].val = 5 - dashboard.config.opts.noautocmd = true - - return dashboard.opts - end, -} diff --git a/config/nvim/lua/aleidk/plugins/debugprint.lua b/config/nvim/lua/aleidk/plugins/debugprint.lua deleted file mode 100644 index 757dbb1..0000000 --- a/config/nvim/lua/aleidk/plugins/debugprint.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - "andrewferrier/debugprint.nvim", - opts = {}, - -- Remove the following line to use development versions, - -- not just the formal releases - version = "*", -} diff --git a/config/nvim/lua/aleidk/plugins/file-browser.lua b/config/nvim/lua/aleidk/plugins/file-browser.lua deleted file mode 100644 index f90f761..0000000 --- a/config/nvim/lua/aleidk/plugins/file-browser.lua +++ /dev/null @@ -1,100 +0,0 @@ -return { - { - "nvim-tree/nvim-tree.lua", - enabled = false, - version = "*", - dependencies = { - "nvim-tree/nvim-web-devicons", - }, - keys = { - { "e", "NvimTreeToggle", desc = "Open file explorer" }, - }, - cmd = { "NvimTreeToggle", "Tree" }, - config = function() - local tree = require("nvim-tree") - local api = require("nvim-tree.api") - - tree.setup({ - hijack_unnamed_buffer_when_opening = true, - disable_netrw = false, - hijack_netrw = false, -- handle by telescope browser - hijack_cursor = true, -- cursor at the start of filename - sync_root_with_cwd = true, - respect_buf_cwd = true, - update_focused_file = { - enable = true, -- focus curren file - update_root = true, - }, - actions = { open_file = { quit_on_open = true } }, - renderer = { - full_name = true, -- show remaining name in floating text - group_empty = true, -- group empty folders - add_trailing = true, -- Trailing slash to folders - highlight_opened_files = "all", - highlight_git = true, - }, - view = { - centralize_selection = true, -- center current file on enter - width = 30, -- N° of columns or % - }, - on_attach = function(bufnr) - local function opts(desc) - return { - desc = "nvim-tree: " .. desc, - buffer = bufnr, - noremap = true, - silent = true, - nowait = true, - } - end - - -- Check defaults here: https://github.com/nvim-tree/nvim-tree.lua/wiki/Migrating-To-on_attach - api.config.mappings.default_on_attach(bufnr) - - vim.keymap.set("n", "l", api.node.open.edit, opts("Open")) - vim.keymap.set("n", "o", api.node.open.edit, opts("Open")) - vim.keymap.set("n", "", api.node.open.edit, opts("Open")) - vim.keymap.set("n", "<2-LeftMouse>", api.node.open.edit, opts("Open")) - vim.keymap.set("n", "s", api.node.open.vertical, opts("Open in vsplit")) - vim.keymap.set("n", "v", api.node.open.horizontal, opts("Open in hsplit")) - vim.keymap.set("n", "t", api.node.open.tab, opts("Open in tab")) - vim.keymap.set("n", "h", api.node.navigate.parent_close, opts("Close dir")) - vim.keymap.set("n", "", api.node.navigate.parent_close, opts("Close dir")) - vim.keymap.set("n", "i", api.tree.toggle_hidden_filter, opts("Toggle Dotfiles")) - vim.keymap.set("n", "I", api.tree.toggle_gitignore_filter, opts("Toggle Git Ignore")) - end, - }) - - -- Auto open when a dir is opened - - local function open_nvim_tree(data) - -- buffer is a directory - local directory = vim.fn.isdirectory(data.file) == 1 - - if not directory then - return - end - - -- create a new, empty buffer - vim.cmd.enew() - - -- wipe the directory buffer - vim.cmd.bw(data.buf) - - -- change to the directory - vim.cmd.cd(data.file) - - -- open the tree - require("nvim-tree.api").tree.open() - end - - vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) - vim.api.nvim_create_user_command("Tree", "NvimTreeToggle", {}) - - -- bindings - -- disabled to discourage the use of this plugin without disabling it - -- vim.keymap.set("n", "e", ":NvimTreeToggle", { desc = "Toggle file tree", silent = true }) - -- vim.keymap.set("n", "", ":NvimTreeToggle", { desc = "Toggle file tree", silent = true }) - end, - }, -} diff --git a/config/nvim/lua/aleidk/plugins/file-explorer.lua b/config/nvim/lua/aleidk/plugins/file-explorer.lua index 2fe15eb..e7b6eaa 100644 --- a/config/nvim/lua/aleidk/plugins/file-explorer.lua +++ b/config/nvim/lua/aleidk/plugins/file-explorer.lua @@ -1,66 +1,44 @@ +---@type LazySpec return { - "rolv-apneseth/tfm.nvim", - lazy = false, - opts = { - -- TFM to use - -- Possible choices: "ranger" | "nnn" | "lf" | "vifm" | "yazi" (default) - file_manager = "yazi", - -- Replace netrw entirely - -- Default: false - replace_netrw = true, - -- Enable creation of commands - -- Default: false - -- Commands: - -- Tfm: selected file(s) will be opened in the current window - -- TfmSplit: selected file(s) will be opened in a horizontal split - -- TfmVsplit: selected file(s) will be opened in a vertical split - -- TfmTabedit: selected file(s) will be opened in a new tab page - enable_cmds = true, - -- Custom keybindings only applied within the TFM buffer - -- Default: {} - keybindings = { - [""] = "q", - }, - -- Customise UI. The below options are the default - ui = { - border = "rounded", - height = 1, - width = 1, - x = 0.5, - y = 0.5, - }, - }, + "mikavilpas/yazi.nvim", + event = "VeryLazy", keys = { + -- 👇 in this section, choose your own keymappings! { "e", - function() - require("tfm").open() - end, - desc = "TFM", + "Yazi", + desc = "Open yazi at the current file", }, { - "mh", - function() - local tfm = require("tfm") - tfm.open(nil, tfm.OPEN_MODE.split) - end, - desc = "TFM - horizontal split", + -- Open in the current working directory + "-", + "Yazi cwd", + desc = "Open the file manager in nvim's working directory", }, - { - "mv", - function() - local tfm = require("tfm") - tfm.open(nil, tfm.OPEN_MODE.vsplit) - end, - desc = "TFM - vertical split", - }, - { - "mt", - function() - local tfm = require("tfm") - tfm.open(nil, tfm.OPEN_MODE.tabedit) - end, - desc = "TFM - new tab", + -- { + -- -- NOTE: this requires a version of yazi that includes + -- -- https://github.com/sxyazi/yazi/pull/1305 from 2024-07-18 + -- '', + -- "Yazi toggle", + -- desc = "Resume the last yazi session", + -- }, + }, + ---@type YaziConfig + opts = { + -- if you want to open yazi instead of netrw, see below for more info + open_for_directories = true, + open_multiple_tabs = true, + floating_window_scaling_factor = 1, + keymaps = { + show_help = '', + open_file_in_vertical_split = '', + open_file_in_horizontal_split = '', + open_file_in_tab = '', + grep_in_directory = '', + cycle_open_buffers = '', + copy_relative_path_to_selected_files = '', + send_to_quickfix_list = '', + change_working_directory = "", }, }, } diff --git a/config/nvim/lua/aleidk/plugins/http.lua b/config/nvim/lua/aleidk/plugins/http.lua deleted file mode 100644 index 7c7516e..0000000 --- a/config/nvim/lua/aleidk/plugins/http.lua +++ /dev/null @@ -1,38 +0,0 @@ -return { - "jellydn/hurl.nvim", - dependencies = { - "MunifTanjim/nui.nvim", - "nvim-lua/plenary.nvim", - "nvim-treesitter/nvim-treesitter" - }, - ft = "hurl", - opts = { - -- Show debugging info - debug = false, - -- Show notification on run - show_notification = false, - -- Show response in popup or split - mode = "popup", - -- Default formatter - formatters = { - json = { 'jq' }, -- Make sure you have install jq in your system, e.g: brew install jq - html = { - 'prettierd', -- Make sure you have install prettier in your system, e.g: npm install -g prettier - '--parser', - 'html', - }, - }, - env_file = { - 'hurl.env', - '.env', - '.env.local', - }, - }, - keys = { - -- Run API request - { "ph", "HurlRunnerAt", desc = "Run HTTP request" }, - { "pH", "HurlRunner", desc = "Run all HTTP requests" }, - -- Run Hurl request in visual mode - { "ph", ":HurlRunner", desc = "Run HTTP requests", mode = "v" }, - }, -} diff --git a/config/yazi/package.toml b/config/yazi/package.toml index cecdf3a..eae27af 100644 --- a/config/yazi/package.toml +++ b/config/yazi/package.toml @@ -1,5 +1,5 @@ [plugin] -deps = [{ use = "yazi-rs/plugins:full-border", rev = "39f2753" }] +deps = [{ use = "yazi-rs/plugins:full-border", rev = "4a6edc3" }] [flavor] -deps = [{ use = "yazi-rs/flavors:catppuccin-macchiato", rev = "2d7dd2a" }] +deps = [{ use = "yazi-rs/flavors:catppuccin-macchiato", rev = "4a3082f" }] diff --git a/config/yazi/yazi.toml b/config/yazi/yazi.toml index 8eb7d53..e59bd36 100644 --- a/config/yazi/yazi.toml +++ b/config/yazi/yazi.toml @@ -139,7 +139,7 @@ cd_origin = "top-center" cd_offset = [ 0, 2, 50, 3 ] # create -create_title = "Create:" +create_title = ["Create:", "Create (dir):"] create_origin = "hovered" create_offset = [ 0, 1, 50, 3 ] diff --git a/config/zsh/zshrc b/config/zsh/zshrc index 158a105..9854a77 100644 --- a/config/zsh/zshrc +++ b/config/zsh/zshrc @@ -143,4 +143,4 @@ done eval "$(fzf --zsh)" eval "$(zoxide init --cmd cd zsh)" eval "$(starship init zsh)" -# eval "$(mise activate zsh)" +eval "$(mise activate zsh)" From 808cdb320122be1d598c3c4f84c7fbf9b1551df6 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 18 Nov 2024 22:33:24 -0300 Subject: [PATCH 006/152] add pre_deploy.sh --- .dotter/global.toml | 2 -- .dotter/pre_deploy.sh | 1 + .dotter/thinkpad.toml | 7 +++++++ 3 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 .dotter/pre_deploy.sh create mode 100644 .dotter/thinkpad.toml diff --git a/.dotter/global.toml b/.dotter/global.toml index 909555a..748bd20 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -1,5 +1,3 @@ -[helpers] - [default] depends = ["nvim"] diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh new file mode 100644 index 0000000..bbb0008 --- /dev/null +++ b/.dotter/pre_deploy.sh @@ -0,0 +1 @@ +sudo dnf install -y {{# each packages }} {{ this }} {{/each}} diff --git a/.dotter/thinkpad.toml b/.dotter/thinkpad.toml new file mode 100644 index 0000000..ec4087d --- /dev/null +++ b/.dotter/thinkpad.toml @@ -0,0 +1,7 @@ +includes = [] +packages = ["default", "cli", "dev"] + +[files] + +[variables] +packages = ["neovim", "fzf"] From d93bf44ae057a3f6cf5ec78d8c0f1c351fd2fefc Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 19 Nov 2024 15:48:29 -0300 Subject: [PATCH 007/152] add pre_deploy.sh script for dotter --- .dotter/global.toml | 24 ++++----- .dotter/handlebars_helpers/flatten_table.rhai | 30 +++++++++++ .dotter/handlebars_helpers/header.rhai | 48 +++++++++++++++++ .dotter/machines/fedora.toml | 54 +++++++++++++++++++ .dotter/pre_deploy.sh | 44 ++++++++++++++- .dotter/work-laptop.toml | 4 +- config/git/config | 4 ++ 7 files changed, 192 insertions(+), 16 deletions(-) create mode 100644 .dotter/handlebars_helpers/flatten_table.rhai create mode 100644 .dotter/handlebars_helpers/header.rhai create mode 100644 .dotter/machines/fedora.toml diff --git a/.dotter/global.toml b/.dotter/global.toml index 748bd20..42caea7 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -1,14 +1,9 @@ -[default] -depends = ["nvim"] +[settings] +default_target_type = "automatic" -[default.files] -"README.md" = "" -chezmoi = "" -config = "" -exports = "" -scripts = "" - -[default.variables] +[helpers] +flatten_table = ".dotter/handlebars_helpers/flatten_table.rhai" +header = ".dotter/handlebars_helpers/header.rhai" # CLI package [cli] @@ -22,6 +17,9 @@ depends = ["nvim", "zsh"] "config/yazi" = "~/.config/yazi" "config/zellij" = "~/.config/zellij" +[dev] +depends = ["rust"] + [dev.files] "config/git" = "~/.config/git" "config/lazygit" = { target = "~/.config/lazygit", type = "symbolic"} @@ -38,8 +36,8 @@ depends = ["nvim", "zsh"] [nushell.files] "config/nushell" = "~/.config/nushell" -[settings] -default_target_type = "automatic" - [nvim.files] "config/nvim" = "~/.config/nvim" + +[rust.variables] +cargo.packages = [] diff --git a/.dotter/handlebars_helpers/flatten_table.rhai b/.dotter/handlebars_helpers/flatten_table.rhai new file mode 100644 index 0000000..30ee4f9 --- /dev/null +++ b/.dotter/handlebars_helpers/flatten_table.rhai @@ -0,0 +1,30 @@ +/* +* Flatten a table into a list of values. +* The table has to be in the form of +* ```toml +* [table.subtable] +* variable1 = ["value1", "value2"] +* +* [table.subtable] +* variable2 = ["value3", "value4"] +* +* then we use it in handlerbars like this: +* +* {{ flatten_table table.subtable }} +* +* and it will return an array with all the arrays of subtable +*/ + +if type_of(params[0]) != "map" { + return; +} + +let table = params[0]; + +let result = []; + +for value in table.values() { + result.append(value); +} + +result diff --git a/.dotter/handlebars_helpers/header.rhai b/.dotter/handlebars_helpers/header.rhai new file mode 100644 index 0000000..1a35fc7 --- /dev/null +++ b/.dotter/handlebars_helpers/header.rhai @@ -0,0 +1,48 @@ +let x_padding = hash["padding"] ?? 50; + +let header = #{ + x_padding: x_padding, + out: "", + append: |suffix| { + this.out += suffix + "\n"; + }, + append_center: |suffix| { + + let suffix_len = suffix.len(); + let padding = this.x_padding - suffix_len / 2; + let fill = ""; + fill.pad(padding, " "); + + this.out += fill + suffix.to_upper() + fill + "\n"; + }, + append_divider: || { + let divider = ""; + divider.pad(this.x_padding * 2, "─"); + + this.append(divider); + }, + open_echo: || { + this.out += "echo -e '\n"; + }, + close_echo: || { + this.out += "'"; + }, + to_string: || { + return this.out; + } +}; + +header.open_echo(); + +header.append_divider(); + + +params.for_each(|idx| { + header.append_center(this); +}); + +header.append_divider(); +header.close_echo(); + +return header.to_string(); + diff --git a/.dotter/machines/fedora.toml b/.dotter/machines/fedora.toml new file mode 100644 index 0000000..63e5773 --- /dev/null +++ b/.dotter/machines/fedora.toml @@ -0,0 +1,54 @@ +# Dotter only support merging tables, and put the key-values into the global scope of the tables +# If we try to use the same variable name in a package, it will throw an error +# if we try to use the same key in a nested table, it will be overriden with the last value +# +# the fix to this is to have a table with unique keys, this is supported by handlerbars {{#each}} directive +# but will give us an array as value, so we need to flatten it + +[utils.variables] +pkg-install = "sudo dnf install -y" + +[cli.variables.copr] +cli = [ + "atim/lazygit", + "atim/starship" +] + +[cli.variables.packages] +cli = [ + "bat", + "dnf-plugin-system-upgrade", + "duf", + "eza", + "fd-find", + "firefox-dev", + "flatpak", + "fzf", + "git", + "lazygit", + "neovim", + "remove-retired-packages", + "ripgrep", + "sd", + "starship", + "tealdeer", + "zoxide", + "zsh", +] + +[dev.variables.packages] +dev = [ + "gcc", + "gcc-c++", + "nodejs", + "openssl", + "openssl-devel", + "tmux", + "tree-sitter-cli", +] + +[rust.variables] +cargo.packages = [ + "yazi-fm", + "yazi-cli", +] diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh index bbb0008..2cddc64 100644 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -1 +1,43 @@ -sudo dnf install -y {{# each packages }} {{ this }} {{/each}} +#!/usr/bin/env bash +# shellcheck disable=all +# This is a handlerbars template, so ignore issues + +{{!~ Detect the distribution ~}} +{{~ assign "distro" (trim (command_output "awk -F= '/^ID=/ {print $2}' /etc/os-release | tr -d '\"'")) ~}} + +{{ header "Running pre deploy script for distro" (to_title_case distro) }} + +{{#if (eq distro "fedora") ~}} + +{{! extract the copr repositories variable }} +{{~ assign "copr" (flatten_table copr) ~}} + +{{#if (ne (len copr) 0) ~}} +{{ header "Enabling copr repositories" }} + +{{# each copr }} +sudo -B dnf copr enable -y '{{ this }}' +{{ /each }} + +{{~ /if }} + +{{ header "Installing dnf packages" }} +sudo -B dnf install -y {{~# each (flatten_table packages) }} '{{ this }}' {{~ /each }} + +{{~ /if }} + +{{#if (and dotter.packages.rust (not (is_executable "cargo"))) }} + +{{ header "Installing rust" }} +curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain stable + +{{ /if }} + +{{#if (and dotter.packages.rust (ne (len cargo.packages) 0)) }} + +{{ header "Installing crates" }} +cargo install --locked {{# each cargo.packages }} "{{ this }}" {{ /each }} + +{{ /if }} + +{{ header "Done :3" }} diff --git a/.dotter/work-laptop.toml b/.dotter/work-laptop.toml index 7709e32..8e15648 100644 --- a/.dotter/work-laptop.toml +++ b/.dotter/work-laptop.toml @@ -1,5 +1,5 @@ -includes = [] -packages = ["default", "cli", "dev"] +includes = [".dotter/machines/fedora.toml"] +packages = ["cli", "dev"] [files] diff --git a/config/git/config b/config/git/config index 0c713a8..65fa801 100644 --- a/config/git/config +++ b/config/git/config @@ -8,3 +8,7 @@ [includeIf "gitdir:~/Repos/Work/"] path = ~/.config/git/config-work +[merge] + autoStash = true +[rebase] + autoStash = true From 76e89bf33c5a46bc2d35b74b568cfa38c600126a Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 19 Nov 2024 15:48:45 -0300 Subject: [PATCH 008/152] minor_updates --- .../nvim/lua/aleidk/plugins/file-explorer.lua | 2 +- config/nvim/lua/aleidk/plugins/init.lua | 43 ------------------- config/nvim/lua/aleidk/plugins/lsp.lua | 3 ++ config/yazi/keymap.toml | 16 +++---- config/yazi/yazi.toml | 2 +- 5 files changed, 13 insertions(+), 53 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins/file-explorer.lua b/config/nvim/lua/aleidk/plugins/file-explorer.lua index e7b6eaa..ab03cca 100644 --- a/config/nvim/lua/aleidk/plugins/file-explorer.lua +++ b/config/nvim/lua/aleidk/plugins/file-explorer.lua @@ -1,7 +1,7 @@ ---@type LazySpec return { "mikavilpas/yazi.nvim", - event = "VeryLazy", + -- event = "VeryLazy", keys = { -- 👇 in this section, choose your own keymappings! { diff --git a/config/nvim/lua/aleidk/plugins/init.lua b/config/nvim/lua/aleidk/plugins/init.lua index 8dbb557..4c6fcb8 100644 --- a/config/nvim/lua/aleidk/plugins/init.lua +++ b/config/nvim/lua/aleidk/plugins/init.lua @@ -35,41 +35,6 @@ return { { "uC", "CccHighlighterToggle", desc = "Toggle Color highlight" }, }, }, - -- Dotfiles management - { - "xvzc/chezmoi.nvim", - dependencies = { "nvim-lua/plenary.nvim", "alker0/chezmoi.vim" }, - config = function() - require("chezmoi").setup({ - { - edit = { - watch = false, - force = false, - }, - notification = { - on_open = true, - on_apply = true, - on_watch = false, - }, - telescope = { - select = { "" }, - }, - }, - }) - - vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, { - -- INFO: this should be the same as $(chezmoi source-path) - pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/chezmoi/*" }, - callback = function() - vim.schedule(require("chezmoi.commands.__edit").watch) - end, - }) - local telescope = require("telescope") - - telescope.load_extension("chezmoi") - vim.keymap.set("n", "fz", telescope.extensions.chezmoi.find_files, { desc = "Find dotfile" }) - end, - }, { "pmizio/typescript-tools.nvim", dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, @@ -88,12 +53,4 @@ return { }, }, }, - - { - "olexsmir/gopher.nvim", - ft = "go", - build = function() - vim.cmd([[silent! GoInstallDeps]]) - end, - }, } diff --git a/config/nvim/lua/aleidk/plugins/lsp.lua b/config/nvim/lua/aleidk/plugins/lsp.lua index 4a4c40d..ab2f1aa 100644 --- a/config/nvim/lua/aleidk/plugins/lsp.lua +++ b/config/nvim/lua/aleidk/plugins/lsp.lua @@ -175,6 +175,9 @@ return { }), ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = _border, + max_width = 200, + max_height = 200, + focus = true, }), }, } diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml index 6e42a49..4c37eb5 100644 --- a/config/yazi/keymap.toml +++ b/config/yazi/keymap.toml @@ -45,11 +45,11 @@ keymap = [ { on = ["J"], run = "seek 5", desc = "Seek down 5 units in the preview" }, # Selection - { on = [ "" ], run = [ "select --state=none", "arrow 1" ], desc = "Toggle the current selection state" }, + { on = [ "" ], run = [ "toggle", "arrow 1" ], desc = "Toggle the current selection state" }, { on = [ "v" ], run = "visual_mode", desc = "Enter visual mode (selection mode)" }, { on = [ "V" ], run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" }, - { on = [ "" ], run = "select_all --state=true", desc = "Select all files" }, - { on = [ "" ], run = "select_all --state=none", desc = "Inverse selection of all files" }, + { on = [ "" ], run = "toggle_all", desc = "Select all files" }, + { on = [ "" ], run = "toggle_all on", desc = "Inverse selection of all files" }, # Operation { on = [ "o" ], run = "open", desc = "Open the selected files" }, @@ -98,10 +98,10 @@ keymap = [ { on = [ "N" ], run = "find_arrow --previous", desc = "Go to previous found file" }, # Sorting - { on = [ ",", "m" ], run = "sort modified --reverse=no", desc = "Sort by modified time" }, - { on = [ ",", "M" ], run = "sort modified --reverse", desc = "Sort by modified time (reverse)" }, - { on = [ ",", "c" ], run = "sort created --reverse=no", desc = "Sort by created time" }, - { on = [ ",", "C" ], run = "sort created --reverse", desc = "Sort by created time (reverse)" }, + { on = [ ",", "m" ], run = "sort mtime --reverse=no", desc = "Sort by modified time" }, + { on = [ ",", "M" ], run = "sort mtime --reverse", desc = "Sort by modified time (reverse)" }, + { on = [ ",", "c" ], run = "sort btime --reverse=no", desc = "Sort by created time" }, + { on = [ ",", "C" ], run = "sort btime --reverse", desc = "Sort by created time (reverse)" }, { on = [ ",", "e" ], run = "sort extension --reverse=no", desc = "Sort by extension" }, { on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" }, { on = [ ",", "a" ], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" }, @@ -162,7 +162,7 @@ keymap = [ { on = [ "~" ], run = "help", desc = "Open help" } ] -[select] +[pick] keymap = [ { on = [ "" ], run = "close", desc = "Cancel selection" }, diff --git a/config/yazi/yazi.toml b/config/yazi/yazi.toml index e59bd36..9c93301 100644 --- a/config/yazi/yazi.toml +++ b/config/yazi/yazi.toml @@ -188,7 +188,7 @@ quit_title = "{n} task{s} running, sure to quit? (y/N)" quit_origin = "center" quit_offset = [ 0, 2, 50, 3 ] -[select] +[pick] open_title = "Open with:" open_origin = "hovered" open_offset = [ 0, 1, 50, 7 ] From 82f734ad0c4efe2febd6e2c885b2a0f706b59b14 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 19 Nov 2024 16:47:12 -0300 Subject: [PATCH 009/152] add font and sudo config --- .dotter/global.toml | 3 +++ .dotter/pre_deploy.sh | 24 ++++++++++++++++++++++++ config/yazi/yazi.toml | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/.dotter/global.toml b/.dotter/global.toml index 42caea7..3ea2fed 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -9,6 +9,9 @@ header = ".dotter/handlebars_helpers/header.rhai" [cli] depends = ["nvim", "zsh"] +[cli.variables] +nerd_font = "JetBrainsMono" + [cli.files] "config/bat" = "~/.config/bat" "config/sesh" = "~/.config/sesh" diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh index 2cddc64..f767eb5 100644 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -7,6 +7,15 @@ {{ header "Running pre deploy script for distro" (to_title_case distro) }} +{{ #if (and dotter.packages.cli (is_executable "sudo")) }} +{{ header "Configuring sudo" }} + +echo "Defaults pwfeedback" | sudo -B tee /etc/sudoers.d/01-user +echo "Defaults timestamp_timeout=10" | sudo -B tee -a /etc/sudoers.d/01-user +echo "Defaults timestamp_type=global" | sudo -B tee -a /etc/sudoers.d/01-user + +{{ /if }} + {{#if (eq distro "fedora") ~}} {{! extract the copr repositories variable }} @@ -40,4 +49,19 @@ cargo install --locked {{# each cargo.packages }} "{{ this }}" {{ /each }} {{ /if }} +{{ #if dotter.packages.cli }} + +{{ header "Configuring Nerd Fonts" }} + +FONT_DIR="$HOME/.local/share/fonts" +mkdir -p "$FONT_DIR" +tmp_dir=$(mktemp -d) + +curl -L https://github.com/ryanoasis/nerd-fonts/releases/latest/download/{{ nerd_font }}.zip -o "$tmp_dir/{{ nerd_font}}.zip" +unzip -o "$tmp_dir/{{nerd_font}}.zip" -d ${FONT_DIR}/{{ nerd_font }} + +rm -rf "$tmp_dir" + +{{ /if }} + {{ header "Done :3" }} diff --git a/config/yazi/yazi.toml b/config/yazi/yazi.toml index 9c93301..e80d3fe 100644 --- a/config/yazi/yazi.toml +++ b/config/yazi/yazi.toml @@ -139,7 +139,7 @@ cd_origin = "top-center" cd_offset = [ 0, 2, 50, 3 ] # create -create_title = ["Create:", "Create (dir):"] +create_title = "Create:" create_origin = "hovered" create_offset = [ 0, 1, 50, 3 ] From f33c57f1a4064d7f9bc33242f29619c0c330bfc1 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 20 Nov 2024 10:36:16 -0300 Subject: [PATCH 010/152] update fzf completion for zsh --- config/zsh/zshrc | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/config/zsh/zshrc b/config/zsh/zshrc index 9854a77..c0cdda6 100644 --- a/config/zsh/zshrc +++ b/config/zsh/zshrc @@ -116,9 +116,42 @@ setopt hist_find_no_dups zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*' menu no -zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath' -zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath' +zstyle ':fzf-tab:*' show-group full +zstyle ':fzf-tab:*' continuous-trigger '/' +zstyle ':fzf-tab:*' fzf-flags --height=10% --layout=reverse --info=inline --ansi -i --preview-window=right:60%:wrap +# ── Previewers ─────────────────────────────────────────────────────── + +# Directories +zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview \ + 'eza -lha --color=always --icons --git --no-permissions --tree --level 3 --group-directories-first --total-size $realpath' +zstyle ':fzf-tab:complete:cd:*' fzf-preview \ + 'eza -lha --color=always --icons --git --no-permissions --tree --level 3 --group-directories-first --total-size $realpath' + +# systemctl +zstyle ':fzf-tab:complete:systemctl-*:*' fzf-preview 'SYSTEMD_COLORS=1 systemctl status $word' + +# git +zstyle ':fzf-tab:complete:git-(add|diff|restore):*' fzf-preview \ + 'git diff $word | bat -plman --color=always' +zstyle ':fzf-tab:complete:git-log:*' fzf-preview \ + 'git log --decorate --graph --color=always $word' +zstyle ':fzf-tab:complete:git-help:*' fzf-preview \ + 'git help $word | bat -plman --color=always' +zstyle ':fzf-tab:complete:git-show:*' fzf-preview \ + 'case "$group" in + "commit tag") git show --color=always $word ;; + *) git show --color=always $word | bat -plman --color=always ;; + esac' +zstyle ':fzf-tab:complete:git-checkout:*' fzf-preview \ + 'case "$group" in + "modified file") git diff $word | bat -plman --color=always ;; + "recent commit object name") git show --color=always $word | bat -plman --color=always ;; + *) git log --decorate --graph --color=always $word ;; + esac' + +# TLDR + zstyle ':fzf-tab:complete:tldr:argument-1' fzf-preview 'tldr --color always $word' # ╭──────────────────────────────────────────────────────────╮ # │ ZSH Options │ From 8ccda618116e9c7bac6569d8d3a2938dbc6255eb Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 20 Nov 2024 11:29:46 -0300 Subject: [PATCH 011/152] prevent unecesary pre_deploy script executions --- .dotter/global.toml | 11 +++++++++-- .dotter/post_deploy.sh | 3 +++ .dotter/pre_deploy.sh | 9 +++++++++ .dotter/work-laptop.toml | 2 +- config/zsh/zshrc | 20 ++++++++++++++++++++ 5 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 .dotter/post_deploy.sh diff --git a/.dotter/global.toml b/.dotter/global.toml index 3ea2fed..6fcfa77 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -7,7 +7,7 @@ header = ".dotter/handlebars_helpers/header.rhai" # CLI package [cli] -depends = ["nvim", "zsh"] +depends = ["nvim", "zsh", "fzf", "starship"] [cli.variables] nerd_font = "JetBrainsMono" @@ -15,7 +15,6 @@ nerd_font = "JetBrainsMono" [cli.files] "config/bat" = "~/.config/bat" "config/sesh" = "~/.config/sesh" -"config/starship.toml" = "~/.config/starship.toml" "config/tmux" = "~/.config/tmux" "config/yazi" = "~/.config/yazi" "config/zellij" = "~/.config/zellij" @@ -34,8 +33,13 @@ depends = ["rust"] "config/zsh/aliases" = {target = "~/.config/zsh/aliases", type="symbolic"} "config/zsh/completions" = {target = "~/.config/zsh/completions", type = "symbolic"} "config/zsh/functions" = "~/.config/zsh/functions" + +[fzf.files] "config/fzf" = "~/.config/fzf" +[starship.files] +"config/starship.toml" = "~/.config/starship.toml" + [nushell.files] "config/nushell" = "~/.config/nushell" @@ -44,3 +48,6 @@ depends = ["rust"] [rust.variables] cargo.packages = [] + +[mise.files] +"config/mise" = "~/.config/mise" diff --git a/.dotter/post_deploy.sh b/.dotter/post_deploy.sh new file mode 100644 index 0000000..db1b97d --- /dev/null +++ b/.dotter/post_deploy.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +sha256sum .dotter/cache/.dotter/pre_deploy.sh >.dotter/cache/pre_deploy.checksum diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh index f767eb5..9b30d7a 100644 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -2,6 +2,15 @@ # shellcheck disable=all # This is a handlerbars template, so ignore issues + +checksum_file=".dotter/cache/pre_deploy.checksum" + +if [[ -e "$checksum_file" ]] && sha256sum --check "$checksum_file" >/dev/null 2>&1; then + echo "Pre deploy script has not changed, skiping script execution" + echo "To override this, remove the checksum file: $checksum_file" + exit 0 +fi + {{!~ Detect the distribution ~}} {{~ assign "distro" (trim (command_output "awk -F= '/^ID=/ {print $2}' /etc/os-release | tr -d '\"'")) ~}} diff --git a/.dotter/work-laptop.toml b/.dotter/work-laptop.toml index 8e15648..9b0a673 100644 --- a/.dotter/work-laptop.toml +++ b/.dotter/work-laptop.toml @@ -1,5 +1,5 @@ includes = [".dotter/machines/fedora.toml"] -packages = ["cli", "dev"] +packages = ["cli", "dev", "mise"] [files] diff --git a/config/zsh/zshrc b/config/zsh/zshrc index c0cdda6..21c40f2 100644 --- a/config/zsh/zshrc +++ b/config/zsh/zshrc @@ -115,6 +115,9 @@ setopt hist_find_no_dups # case insensitive completion zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" + +{{ #if dotter.packages.fzf }} + zstyle ':completion:*' menu no zstyle ':fzf-tab:*' show-group full zstyle ':fzf-tab:*' continuous-trigger '/' @@ -153,6 +156,8 @@ zstyle ':fzf-tab:complete:git-checkout:*' fzf-preview \ # TLDR zstyle ':fzf-tab:complete:tldr:argument-1' fzf-preview 'tldr --color always $word' +{{ /if }} + # ╭──────────────────────────────────────────────────────────╮ # │ ZSH Options │ # ╰──────────────────────────────────────────────────────────╯ @@ -163,7 +168,10 @@ setopt GLOB_DOTS # ╭──────────────────────────────────────────────────────────╮ # │ Source other files │ # ╰──────────────────────────────────────────────────────────╯ + +{{ #if dotter.packages.fzf }} source $HOME/.config/fzf/fzfrc +{{ /if }} # this prevents errors and not loading some files for file in $HOME/.config/zsh/**/*.zsh; do @@ -173,7 +181,19 @@ done # ╭──────────────────────────────────────────────────────────╮ # │ Init external programs │ # ╰──────────────────────────────────────────────────────────╯ + +{{ #if dotter.packages.fzf }} eval "$(fzf --zsh)" +{{ /if ~}} + +{{ #if (is_executable "zoxide") }} eval "$(zoxide init --cmd cd zsh)" +{{ /if ~}} + +{{ #if dotter.packages.starship }} eval "$(starship init zsh)" +{{ /if ~}} + +{{ #if dotter.packages.mise }} eval "$(mise activate zsh)" +{{ /if ~}} From ea5957f6d445bbea741202dbf48fccf704cffedd Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 20 Nov 2024 12:12:03 -0300 Subject: [PATCH 012/152] transform zsh files into templates --- config/zsh/zprofile | 45 +++++++++++++++++++++++++++------------------ config/zsh/zshrc | 3 +++ 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/config/zsh/zprofile b/config/zsh/zprofile index cd1614c..ebeea46 100644 --- a/config/zsh/zprofile +++ b/config/zsh/zprofile @@ -5,37 +5,46 @@ update_path() { } # Set manually -export DOTS="$HOME/.local/share/chezmoi" +export REPOS="$HOME/.local/share/chezmoi" +export DOTS="$REPOS/Private/dots" export EDITOR=nvim export VISUAL="$EDITOR" export QT_STYLE_OVERRIDE=kvantum export MOZ_ENABLE_WAYLAND=1 +update_path "$DOTS/scripts" +update_path "$HOME/.local/bin" +update_path "$HOME/bin" +update_path "/usr/local/bin" + # Dev Stuff +{{ #if (is_executable "npm") }} export NPM_PACKAGES="$HOME/.npm-packages" export NODE_PATH="$NPM_PACKAGES/lib/node_modules${NODE_PATH:+:$NODE_PATH}" -export PNPM_HOME="$HOME/.local/share/pnpm" -export ESLINT_USE_FLAT_CONFIG=true -# . "$HOME/.cargo/env" -# source "$HOME/.rye/env" # Unset manpath so we can inherit from /etc/manpath via the `manpath` # command unset MANPATH # delete if you already modified MANPATH elsewhere in your config export MANPATH="$NPM_PACKAGES/share/man:$(manpath)" -# PATH -update_path "/usr/local/bin" -update_path "$HOME/.local/bin" -update_path "$HOME/.cargo/bin/" -update_path "$HOME/.spicetify" -update_path "$DOTS/scripts" -update_path "$HOME/bin" update_path "$NPM_PACKAGES/bin" -update_path "$PNPM_HOME" -update_path "$HOME/.local/share/rtx/shims" -update_path "$HOME/.spicetify" +{{ /if }} -if [[ $OSTYPE =~ 'darwin' ]]; then - eval "$(/opt/homebrew/bin/brew shellenv)" -fi +{{ #if (is_executable "pnpm") }} +export PNPM_HOME="$HOME/.local/share/pnpm" +export ESLINT_USE_FLAT_CONFIG=true +update_path "$PNPM_HOME" +{{ /if }} + +{{ #if (is_executable "rye") }} +source "$HOME/.rye/env" +{{ /if }} + +{{ #if (is_executable "cargo") }} +. "$HOME/.cargo/env" +update_path "$HOME/.cargo/bin/" +{{ /if }} + +{{~ #if (eq (env_var "OS") "macos") }} +eval "$(/opt/homebrew/bin/brew shellenv)" +{{ /if ~}} diff --git a/config/zsh/zshrc b/config/zsh/zshrc index 21c40f2..33e96a1 100644 --- a/config/zsh/zshrc +++ b/config/zsh/zshrc @@ -26,7 +26,10 @@ zinit snippet "https://raw.githubusercontent.com/catppuccin/zsh-syntax-highlight zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-completions zinit light zsh-users/zsh-autosuggestions + +{{ #if dotter.packages.fzf }} zinit light Aloxaf/fzf-tab +{{ /if }} # ╭──────────────────────────────────────────────────────────╮ # │ Oh My Zsh snippets │ From 071be15dc147f90f51dd461c0b06d173f2ea2ee4 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 20 Nov 2024 15:11:55 -0300 Subject: [PATCH 013/152] re-structure neovim plugins also delete unused ones --- .dotter/global.toml | 18 +++++ .dotter/work-laptop.toml | 3 + config/nvim/.luarc.json | 5 ++ config/nvim/init.lua | 21 +---- config/nvim/lazy-lock.json | 14 +--- config/nvim/lua/aleidk/lazy.lua | 35 ++++++++ .../{plugins => plugins-base}/auto-pairs.lua | 0 .../{plugins => plugins-base}/bookmarks.lua | 0 .../{plugins => plugins-base}/comments.lua | 15 ---- .../{plugins => plugins-base}/dressing.lua | 0 .../file-explorer.lua | 2 +- .../indent-blankline.lua | 0 .../{plugins => plugins-base}/noice.lua | 0 .../{plugins => plugins-base}/quickfix.lua | 0 .../{plugins => plugins-base}/treesitter.lua | 0 .../lua/aleidk/plugins-base/undo-tree.lua | 13 +++ .../{plugins => plugins-core}/colorscheme.lua | 0 config/nvim/lua/aleidk/plugins-core/init.lua | 14 ++++ .../{plugins => plugins-core}/key-help.lua | 0 .../{plugins => plugins-core}/lualine.lua | 0 .../{plugins => plugins-core}/markdown.lua | 0 .../smart-splits.lua | 0 .../{plugins => plugins-core}/surround.lua | 0 .../{plugins => plugins-core}/telescope.lua | 0 .../todo-comments.lua | 0 .../aleidk/{plugins => plugins-ide}/ai.lua | 0 .../lua/aleidk/plugins-ide/color-picker.lua | 15 ++++ .../{plugins => plugins-ide}/completion.lua | 0 .../{plugins => plugins-ide}/database.lua | 2 +- .../nvim/lua/aleidk/plugins-ide/doc-gen.lua | 15 ++++ .../{plugins => plugins-ide}/formatter.lua | 0 .../aleidk/{plugins => plugins-ide}/git.lua | 23 +----- .../{plugins => plugins-ide}/linters.lua | 0 .../aleidk/{plugins => plugins-ide}/lsp.lua | 0 .../{plugins => plugins-ide}/luasnip.lua | 0 .../aleidk/{plugins => plugins-ide}/mason.lua | 0 .../{plugins => plugins-ide}/remote-sshfs.lua | 0 .../{plugins => plugins-ide}/task-runner.lua | 0 .../{plugins => plugins-ide}/trouble.lua | 0 .../ts-node-action.lua | 0 .../aleidk/plugins-ide/typescript-tools.lua | 18 +++++ config/nvim/lua/aleidk/plugins/init.lua | 56 ------------- .../nvim/lua/aleidk/plugins/pretty-fold.lua | 43 ---------- config/nvim/lua/aleidk/plugins/sessions.lua | 23 ------ config/nvim/lua/aleidk/plugins/zen.lua | 81 ------------------- config/nvim/lua/aleidk/utils.lua | 7 ++ config/yazi/keymap.toml | 6 +- 47 files changed, 155 insertions(+), 274 deletions(-) create mode 100644 config/nvim/.luarc.json create mode 100644 config/nvim/lua/aleidk/lazy.lua rename config/nvim/lua/aleidk/{plugins => plugins-base}/auto-pairs.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-base}/bookmarks.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-base}/comments.lua (72%) rename config/nvim/lua/aleidk/{plugins => plugins-base}/dressing.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-base}/file-explorer.lua (98%) rename config/nvim/lua/aleidk/{plugins => plugins-base}/indent-blankline.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-base}/noice.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-base}/quickfix.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-base}/treesitter.lua (100%) create mode 100644 config/nvim/lua/aleidk/plugins-base/undo-tree.lua rename config/nvim/lua/aleidk/{plugins => plugins-core}/colorscheme.lua (100%) create mode 100644 config/nvim/lua/aleidk/plugins-core/init.lua rename config/nvim/lua/aleidk/{plugins => plugins-core}/key-help.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-core}/lualine.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-core}/markdown.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-core}/smart-splits.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-core}/surround.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-core}/telescope.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-core}/todo-comments.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/ai.lua (100%) create mode 100644 config/nvim/lua/aleidk/plugins-ide/color-picker.lua rename config/nvim/lua/aleidk/{plugins => plugins-ide}/completion.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/database.lua (94%) create mode 100644 config/nvim/lua/aleidk/plugins-ide/doc-gen.lua rename config/nvim/lua/aleidk/{plugins => plugins-ide}/formatter.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/git.lua (82%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/linters.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/lsp.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/luasnip.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/mason.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/remote-sshfs.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/task-runner.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/trouble.lua (100%) rename config/nvim/lua/aleidk/{plugins => plugins-ide}/ts-node-action.lua (100%) create mode 100644 config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua delete mode 100644 config/nvim/lua/aleidk/plugins/init.lua delete mode 100644 config/nvim/lua/aleidk/plugins/pretty-fold.lua delete mode 100644 config/nvim/lua/aleidk/plugins/sessions.lua delete mode 100644 config/nvim/lua/aleidk/plugins/zen.lua create mode 100644 config/nvim/lua/aleidk/utils.lua diff --git a/.dotter/global.toml b/.dotter/global.toml index 6fcfa77..7770d4f 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -45,6 +45,24 @@ depends = ["rust"] [nvim.files] "config/nvim" = "~/.config/nvim" +[nvim.files."config/nvim/lua/aleidk/lazy.lua"] +target = "~/.config/nvim/lua/aleidk/lazy.lua" +type = "template" +prepend = """ +local enabled_plugins = { + nvim_core = {{ nvim-core }}, + nvim_base = {{ nvim-base }}, + nvim_ide = {{ nvim-ide }}, +} + +""" + +# Handle package activation from Lazy instead of dotter +# This will prevent conflics in lazy-lock.json for having different plugins +[nvim.variables] +nvim-core = true +nvim-base = false +nvim-ide = false [rust.variables] cargo.packages = [] diff --git a/.dotter/work-laptop.toml b/.dotter/work-laptop.toml index 9b0a673..d990e6b 100644 --- a/.dotter/work-laptop.toml +++ b/.dotter/work-laptop.toml @@ -4,3 +4,6 @@ packages = ["cli", "dev", "mise"] [files] [variables] +nvim-core = true +nvim-base = true +nvim-ide = true diff --git a/config/nvim/.luarc.json b/config/nvim/.luarc.json new file mode 100644 index 0000000..1aa7674 --- /dev/null +++ b/config/nvim/.luarc.json @@ -0,0 +1,5 @@ +{ + "diagnostics.globals": [ + "enabled_plugins" + ] +} \ No newline at end of file diff --git a/config/nvim/init.lua b/config/nvim/init.lua index a9b3bcc..2925f22 100644 --- a/config/nvim/init.lua +++ b/config/nvim/init.lua @@ -1,26 +1,7 @@ -- Loadnoptions before anything require("aleidk.options") --- Init PLugins - --- Install package manager https://github.com/folke/lazy.nvim -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not vim.loop.fs_stat(lazypath) then - vim.fn.system({ - "git", - "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", -- latest stable release - lazypath, - }) -end -vim.opt.rtp:prepend(lazypath) - --- Load plugins -require("lazy").setup("aleidk.plugins") - --- Rest of configuratin +require("aleidk.lazy") require("aleidk.keymaps") require("aleidk.autocmds") diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 9e59165..7bafe03 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,9 +1,6 @@ { "LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" }, - "auto-session": { "branch": "main", "commit": "4b0728715e674ad9c18f1519127dcaed59f9981b" }, "ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" }, - "chezmoi.nvim": { "branch": "main", "commit": "faf61465718424696269b2647077331b3e4605f1" }, - "chezmoi.vim": { "branch": "main", "commit": "10f2692791b5e512a2c1bb4dc560b42ca5bf71fd" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, "cmp-conventionalcommits": { "branch": "master", "commit": "a4dfacf0601130b7f8afa7c948d735c27802fb7f" }, @@ -21,10 +18,9 @@ "dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" }, "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, - "gopher.nvim": { "branch": "main", "commit": "f55c15ada8e02398000c04a96ef44d986cd01051" }, "grapple.nvim": { "branch": "main", "commit": "7aedc261b05a6c030397c4bc26416efbe746ebf1" }, "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, - "lazy.nvim": { "branch": "main", "commit": "b02c9eae6a250f98908c146d1dc1a891f5019f0a" }, + "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, "lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, @@ -49,10 +45,8 @@ "nvim-ts-autotag": { "branch": "main", "commit": "323a3e16ed603e2e17b26b1c836d1e86c279f726" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "6b5f95aa4d24f2c629a74f2c935c702b08dbde62" }, "nvim-web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" }, - "octo.nvim": { "branch": "master", "commit": "aa5dfa573220a0a511a25ee14ce1570b6c23e56a" }, "overseer.nvim": { "branch": "master", "commit": "15b6249eaf71ebbc8bf0ed279e045f2bc1f28007" }, "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" }, - "pretty-fold.nvim": { "branch": "master", "commit": "a7d8b424abe0eedf50116c460fbe6dfd5783b1d5" }, "remote-sshfs.nvim": { "branch": "main", "commit": "8f05563150fbd713027471eed56f391b053ba8b8" }, "render-markdown": { "branch": "main", "commit": "123048b428eb85618780fcef9ea9f4d68b5d2508" }, "smart-splits.nvim": { "branch": "master", "commit": "95833675cd92538bf9cded1d2d58d1fc271c5428" }, @@ -62,15 +56,13 @@ "treesj": { "branch": "main", "commit": "6e8bd008bacd5ad001c3953017c1dca20709e915" }, "trouble.nvim": { "branch": "main", "commit": "03c1fbf518bef683422a3be9643c3da190903488" }, "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, - "twilight.nvim": { "branch": "main", "commit": "2b632c169a4b51b1eba5be90fde22a80c51c990e" }, "typescript-tools.nvim": { "branch": "master", "commit": "5da4d695d66f676eb6ea766b946e86f93baaafe7" }, "undotree": { "branch": "master", "commit": "56c684a805fe948936cda0d1b19505b84ad7e065" }, - "vim-dadbod": { "branch": "master", "commit": "7888cb7164d69783d3dce4e0283decd26b82538b" }, - "vim-dadbod-completion": { "branch": "master", "commit": "8c9051c1cfc73fcf5bfe9a84db7097e4f7c0180d" }, + "vim-dadbod": { "branch": "master", "commit": "fe5a55e92b2dded7c404006147ef97fb073d8b1b" }, + "vim-dadbod-completion": { "branch": "master", "commit": "da0e75c09c27a82aad078d993bb1b2f4afd43427" }, "vim-dadbod-ui": { "branch": "master", "commit": "f74a31e8c6c5a9dccc63450a09d5cd64a9294330" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, "yazi.nvim": { "branch": "main", "commit": "faa03e9acb894533b91c811d0dafd816b995088f" }, - "zen-mode.nvim": { "branch": "main", "commit": "2694c5a2bc4dc26c7a9e74b9e2b812920c90a830" }, "zk-nvim": { "branch": "main", "commit": "dbf4eeab55b08856c9d6b6722dbff39630bb35eb" } } diff --git a/config/nvim/lua/aleidk/lazy.lua b/config/nvim/lua/aleidk/lazy.lua new file mode 100644 index 0000000..31c475e --- /dev/null +++ b/config/nvim/lua/aleidk/lazy.lua @@ -0,0 +1,35 @@ +-- Bootstrap lazy.nvim +-- Load this file after options has been set + +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) + +-- enabled_plugins is injected as a local variable in the top of the file by the dotfile manager +-- See: .dotter/global.toml inside [nvim.files] & [nvim.variables] table +require("lazy").setup({ + spec = { + { import = "aleidk.plugins-core", enabled = enabled_plugins.nvim_core }, + { import = "aleidk.plugins-base", enabled = enabled_plugins.nvim_base }, + { import = "aleidk.plugins-ide", enabled = enabled_plugins.nvim_ide }, + }, + + install = { colorscheme = { "catppuccin" } }, + checker = { enabled = true }, +}) + +return { + enabled_plugins +} diff --git a/config/nvim/lua/aleidk/plugins/auto-pairs.lua b/config/nvim/lua/aleidk/plugins-base/auto-pairs.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/auto-pairs.lua rename to config/nvim/lua/aleidk/plugins-base/auto-pairs.lua diff --git a/config/nvim/lua/aleidk/plugins/bookmarks.lua b/config/nvim/lua/aleidk/plugins-base/bookmarks.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/bookmarks.lua rename to config/nvim/lua/aleidk/plugins-base/bookmarks.lua diff --git a/config/nvim/lua/aleidk/plugins/comments.lua b/config/nvim/lua/aleidk/plugins-base/comments.lua similarity index 72% rename from config/nvim/lua/aleidk/plugins/comments.lua rename to config/nvim/lua/aleidk/plugins-base/comments.lua index e9e3be9..083aaff 100644 --- a/config/nvim/lua/aleidk/plugins/comments.lua +++ b/config/nvim/lua/aleidk/plugins-base/comments.lua @@ -31,19 +31,4 @@ return { MAP({ "n", "v" }, "gcl", cb.llline, "Create a comment line") end, }, - { - "danymat/neogen", - opts = { snippet_engine = "luasnip" }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - version = "*", -- stable releases - keys = { - { - "gcd", - function() - require("neogen").generate() - end, - desc = "Generate comment docstring", - }, - }, - }, } diff --git a/config/nvim/lua/aleidk/plugins/dressing.lua b/config/nvim/lua/aleidk/plugins-base/dressing.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/dressing.lua rename to config/nvim/lua/aleidk/plugins-base/dressing.lua diff --git a/config/nvim/lua/aleidk/plugins/file-explorer.lua b/config/nvim/lua/aleidk/plugins-base/file-explorer.lua similarity index 98% rename from config/nvim/lua/aleidk/plugins/file-explorer.lua rename to config/nvim/lua/aleidk/plugins-base/file-explorer.lua index ab03cca..b0dfa3e 100644 --- a/config/nvim/lua/aleidk/plugins/file-explorer.lua +++ b/config/nvim/lua/aleidk/plugins-base/file-explorer.lua @@ -11,7 +11,7 @@ return { }, { -- Open in the current working directory - "-", + "E", "Yazi cwd", desc = "Open the file manager in nvim's working directory", }, diff --git a/config/nvim/lua/aleidk/plugins/indent-blankline.lua b/config/nvim/lua/aleidk/plugins-base/indent-blankline.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/indent-blankline.lua rename to config/nvim/lua/aleidk/plugins-base/indent-blankline.lua diff --git a/config/nvim/lua/aleidk/plugins/noice.lua b/config/nvim/lua/aleidk/plugins-base/noice.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/noice.lua rename to config/nvim/lua/aleidk/plugins-base/noice.lua diff --git a/config/nvim/lua/aleidk/plugins/quickfix.lua b/config/nvim/lua/aleidk/plugins-base/quickfix.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/quickfix.lua rename to config/nvim/lua/aleidk/plugins-base/quickfix.lua diff --git a/config/nvim/lua/aleidk/plugins/treesitter.lua b/config/nvim/lua/aleidk/plugins-base/treesitter.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/treesitter.lua rename to config/nvim/lua/aleidk/plugins-base/treesitter.lua diff --git a/config/nvim/lua/aleidk/plugins-base/undo-tree.lua b/config/nvim/lua/aleidk/plugins-base/undo-tree.lua new file mode 100644 index 0000000..ba5adb4 --- /dev/null +++ b/config/nvim/lua/aleidk/plugins-base/undo-tree.lua @@ -0,0 +1,13 @@ +return { + { + "mbbill/undotree", + config = function() + vim.g.undotree_WindowLayout = 2 + vim.g.undotree_ShortIndicators = 1 + vim.g.undotree_SetFocusWhenToggle = 1 + end, + keys = { + { "fu", vim.cmd.UndotreeToggle, desc = "Undo tree" }, + }, + }, +} diff --git a/config/nvim/lua/aleidk/plugins/colorscheme.lua b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/colorscheme.lua rename to config/nvim/lua/aleidk/plugins-core/colorscheme.lua diff --git a/config/nvim/lua/aleidk/plugins-core/init.lua b/config/nvim/lua/aleidk/plugins-core/init.lua new file mode 100644 index 0000000..3499f7d --- /dev/null +++ b/config/nvim/lua/aleidk/plugins-core/init.lua @@ -0,0 +1,14 @@ +return { + -- Detect tabstop and shiftwidth automatically + "tpope/vim-sleuth", + { "nvim-tree/nvim-web-devicons", lazy = true }, + { + -- Highlight word under cursor + "RRethy/vim-illuminate", + event = { "BufReadPost", "BufNewFile" }, + opts = { delay = 200 }, + config = function(_, opts) + require("illuminate").configure(opts) + end, + }, +} diff --git a/config/nvim/lua/aleidk/plugins/key-help.lua b/config/nvim/lua/aleidk/plugins-core/key-help.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/key-help.lua rename to config/nvim/lua/aleidk/plugins-core/key-help.lua diff --git a/config/nvim/lua/aleidk/plugins/lualine.lua b/config/nvim/lua/aleidk/plugins-core/lualine.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/lualine.lua rename to config/nvim/lua/aleidk/plugins-core/lualine.lua diff --git a/config/nvim/lua/aleidk/plugins/markdown.lua b/config/nvim/lua/aleidk/plugins-core/markdown.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/markdown.lua rename to config/nvim/lua/aleidk/plugins-core/markdown.lua diff --git a/config/nvim/lua/aleidk/plugins/smart-splits.lua b/config/nvim/lua/aleidk/plugins-core/smart-splits.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/smart-splits.lua rename to config/nvim/lua/aleidk/plugins-core/smart-splits.lua diff --git a/config/nvim/lua/aleidk/plugins/surround.lua b/config/nvim/lua/aleidk/plugins-core/surround.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/surround.lua rename to config/nvim/lua/aleidk/plugins-core/surround.lua diff --git a/config/nvim/lua/aleidk/plugins/telescope.lua b/config/nvim/lua/aleidk/plugins-core/telescope.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/telescope.lua rename to config/nvim/lua/aleidk/plugins-core/telescope.lua diff --git a/config/nvim/lua/aleidk/plugins/todo-comments.lua b/config/nvim/lua/aleidk/plugins-core/todo-comments.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/todo-comments.lua rename to config/nvim/lua/aleidk/plugins-core/todo-comments.lua diff --git a/config/nvim/lua/aleidk/plugins/ai.lua b/config/nvim/lua/aleidk/plugins-ide/ai.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/ai.lua rename to config/nvim/lua/aleidk/plugins-ide/ai.lua diff --git a/config/nvim/lua/aleidk/plugins-ide/color-picker.lua b/config/nvim/lua/aleidk/plugins-ide/color-picker.lua new file mode 100644 index 0000000..221ed52 --- /dev/null +++ b/config/nvim/lua/aleidk/plugins-ide/color-picker.lua @@ -0,0 +1,15 @@ +return { + { + -- Color Picker + "uga-rosa/ccc.nvim", + event = "VeryLazy", + opts = { + auto_enable = true, + lsp = true, + }, + keys = { + { "uc", "CccPick", desc = "Open Color picker" }, + { "uC", "CccHighlighterToggle", desc = "Toggle Color highlight" }, + }, + }, +} diff --git a/config/nvim/lua/aleidk/plugins/completion.lua b/config/nvim/lua/aleidk/plugins-ide/completion.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/completion.lua rename to config/nvim/lua/aleidk/plugins-ide/completion.lua diff --git a/config/nvim/lua/aleidk/plugins/database.lua b/config/nvim/lua/aleidk/plugins-ide/database.lua similarity index 94% rename from config/nvim/lua/aleidk/plugins/database.lua rename to config/nvim/lua/aleidk/plugins-ide/database.lua index 941e717..175697b 100644 --- a/config/nvim/lua/aleidk/plugins/database.lua +++ b/config/nvim/lua/aleidk/plugins-ide/database.lua @@ -1,7 +1,7 @@ return { "kristijanhusak/vim-dadbod-ui", dependencies = { - { "tpope/vim-dadbod", lazy = true }, + { "tpope/vim-dadbod", lazy = true }, { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, }, cmd = { diff --git a/config/nvim/lua/aleidk/plugins-ide/doc-gen.lua b/config/nvim/lua/aleidk/plugins-ide/doc-gen.lua new file mode 100644 index 0000000..199ce62 --- /dev/null +++ b/config/nvim/lua/aleidk/plugins-ide/doc-gen.lua @@ -0,0 +1,15 @@ +return { + "danymat/neogen", + opts = { snippet_engine = "luasnip" }, + dependencies = { "nvim-treesitter/nvim-treesitter" }, + version = "*", -- stable releases + keys = { + { + "gcd", + function() + require("neogen").generate() + end, + desc = "Generate comment docstring", + }, + }, +} diff --git a/config/nvim/lua/aleidk/plugins/formatter.lua b/config/nvim/lua/aleidk/plugins-ide/formatter.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/formatter.lua rename to config/nvim/lua/aleidk/plugins-ide/formatter.lua diff --git a/config/nvim/lua/aleidk/plugins/git.lua b/config/nvim/lua/aleidk/plugins-ide/git.lua similarity index 82% rename from config/nvim/lua/aleidk/plugins/git.lua rename to config/nvim/lua/aleidk/plugins-ide/git.lua index db22509..a248abf 100644 --- a/config/nvim/lua/aleidk/plugins/git.lua +++ b/config/nvim/lua/aleidk/plugins-ide/git.lua @@ -27,7 +27,7 @@ return { map("n", "u", gs.undo_stage_hunk, "Undo Stage Hunk") map("n", "R", gs.reset_buffer, "Reset Buffer") map("n", "", gs.preview_hunk, "Preview Hunk") - map("n", "l", function() gs.blame_line({full = true}) end, "Blame Line") + map("n", "l", function() gs.blame_line({ full = true }) end, "Blame Line") map("n", "d", gs.diffthis, "Diff This") end, }, @@ -45,9 +45,9 @@ return { { "NeogitOrg/neogit", dependencies = { - "nvim-lua/plenary.nvim", -- required + "nvim-lua/plenary.nvim", -- required "nvim-telescope/telescope.nvim", -- optional - "sindrets/diffview.nvim", -- optional + "sindrets/diffview.nvim", -- optional }, config = true, opts = { @@ -94,21 +94,4 @@ return { }, }, }, - - { - "pwntester/octo.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-telescope/telescope.nvim", - "nvim-tree/nvim-web-devicons", - }, - opts = { enable_builtin = true }, - keys = { - { - "go", - "Octo", - desc = "Octo.nvim", - }, - }, - }, } diff --git a/config/nvim/lua/aleidk/plugins/linters.lua b/config/nvim/lua/aleidk/plugins-ide/linters.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/linters.lua rename to config/nvim/lua/aleidk/plugins-ide/linters.lua diff --git a/config/nvim/lua/aleidk/plugins/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/lsp.lua rename to config/nvim/lua/aleidk/plugins-ide/lsp.lua diff --git a/config/nvim/lua/aleidk/plugins/luasnip.lua b/config/nvim/lua/aleidk/plugins-ide/luasnip.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/luasnip.lua rename to config/nvim/lua/aleidk/plugins-ide/luasnip.lua diff --git a/config/nvim/lua/aleidk/plugins/mason.lua b/config/nvim/lua/aleidk/plugins-ide/mason.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/mason.lua rename to config/nvim/lua/aleidk/plugins-ide/mason.lua diff --git a/config/nvim/lua/aleidk/plugins/remote-sshfs.lua b/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/remote-sshfs.lua rename to config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua diff --git a/config/nvim/lua/aleidk/plugins/task-runner.lua b/config/nvim/lua/aleidk/plugins-ide/task-runner.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/task-runner.lua rename to config/nvim/lua/aleidk/plugins-ide/task-runner.lua diff --git a/config/nvim/lua/aleidk/plugins/trouble.lua b/config/nvim/lua/aleidk/plugins-ide/trouble.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/trouble.lua rename to config/nvim/lua/aleidk/plugins-ide/trouble.lua diff --git a/config/nvim/lua/aleidk/plugins/ts-node-action.lua b/config/nvim/lua/aleidk/plugins-ide/ts-node-action.lua similarity index 100% rename from config/nvim/lua/aleidk/plugins/ts-node-action.lua rename to config/nvim/lua/aleidk/plugins-ide/ts-node-action.lua diff --git a/config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua b/config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua new file mode 100644 index 0000000..7f106b0 --- /dev/null +++ b/config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua @@ -0,0 +1,18 @@ +return { + "pmizio/typescript-tools.nvim", + dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, + opts = { + init_options = { + preferences = { + disableSuggestions = true, + }, + }, + settings = { + -- array of strings("fix_all"|"add_missing_imports"|"remove_unused"| + -- "remove_unused_imports"|"organize_imports") -- or string "all" + -- to include all supported code actions + -- specify commands exposed as code_actions + expose_as_code_action = "all", + }, + }, +} diff --git a/config/nvim/lua/aleidk/plugins/init.lua b/config/nvim/lua/aleidk/plugins/init.lua deleted file mode 100644 index 4c6fcb8..0000000 --- a/config/nvim/lua/aleidk/plugins/init.lua +++ /dev/null @@ -1,56 +0,0 @@ -return { - -- Detect tabstop and shiftwidth automatically - "tpope/vim-sleuth", - { "nvim-tree/nvim-web-devicons", lazy = true }, - { - "mbbill/undotree", - config = function() - vim.g.undotree_WindowLayout = 2 - vim.g.undotree_ShortIndicators = 1 - vim.g.undotree_SetFocusWhenToggle = 1 - end, - keys = { - { "fu", vim.cmd.UndotreeToggle, desc = "Undo tree" }, - }, - }, - { - -- Highlight word under cursor - "RRethy/vim-illuminate", - event = { "BufReadPost", "BufNewFile" }, - opts = { delay = 200 }, - config = function(_, opts) - require("illuminate").configure(opts) - end, - }, - { - -- Color Picker - "uga-rosa/ccc.nvim", - event = "VeryLazy", - opts = { - auto_enable = true, - lsp = true, - }, - keys = { - { "uc", "CccPick", desc = "Open Color picker" }, - { "uC", "CccHighlighterToggle", desc = "Toggle Color highlight" }, - }, - }, - { - "pmizio/typescript-tools.nvim", - dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, - opts = { - init_options = { - preferences = { - disableSuggestions = true, - }, - }, - settings = { - -- array of strings("fix_all"|"add_missing_imports"|"remove_unused"| - -- "remove_unused_imports"|"organize_imports") -- or string "all" - -- to include all supported code actions - -- specify commands exposed as code_actions - expose_as_code_action = "all", - }, - }, - }, -} diff --git a/config/nvim/lua/aleidk/plugins/pretty-fold.lua b/config/nvim/lua/aleidk/plugins/pretty-fold.lua deleted file mode 100644 index 665525c..0000000 --- a/config/nvim/lua/aleidk/plugins/pretty-fold.lua +++ /dev/null @@ -1,43 +0,0 @@ -return { - enabled = false, - "anuvyklack/pretty-fold.nvim", - opts = { - sections = { - left = { - "+", - function() - return string.rep("-", vim.v.foldlevel) - end, - " ", - "content", - " ", - "number_of_folded_lines", - " ", - function() - return string.rep("-", vim.v.foldlevel) - end, - "+", - }, - }, - fill_char = " ", - - -- Possible values: - -- "delete" : Delete all comment signs from the fold string. - -- "spaces" : Replace all comment signs with equal number of spaces. - -- false : Do nothing with comment signs. - process_comment_signs = "delete", - - -- List of patterns that will be removed from content foldtext section. - stop_words = { - "@brief%s*", -- (for C++) Remove '@brief' and all spaces after. - }, - - matchup_patterns = { - { "{", "}" }, - { "%(", ")" }, -- % to escape lua pattern char - { "%[", "]" }, -- % to escape lua pattern char - }, - - ft_ignore = { "neorg" }, - }, -} diff --git a/config/nvim/lua/aleidk/plugins/sessions.lua b/config/nvim/lua/aleidk/plugins/sessions.lua deleted file mode 100644 index d6e19a8..0000000 --- a/config/nvim/lua/aleidk/plugins/sessions.lua +++ /dev/null @@ -1,23 +0,0 @@ -return { - -- sessions - "rmagatti/auto-session", - config = function() - ---@diagnostic disable-next-line: missing-fields - require("auto-session").setup({ - log_level = "error", - auto_session_suppress_dirs = { - "/", - "~/", - "~/.config/**", - "~/.local/share/chezmoi/", - "~/.local/share/db_ui", - "~/.local/share/db_ui/**", - "~/Downloads", - }, - bypass_session_save_file_types = { - "NeogitStatus", - "Lazy", - }, - }) - end, -} diff --git a/config/nvim/lua/aleidk/plugins/zen.lua b/config/nvim/lua/aleidk/plugins/zen.lua deleted file mode 100644 index 14374e5..0000000 --- a/config/nvim/lua/aleidk/plugins/zen.lua +++ /dev/null @@ -1,81 +0,0 @@ -return { - "folke/zen-mode.nvim", - dependencies = { - { - "folke/twilight.nvim", - opts = { - -- your configuration comes here - -- or leave it empty to use the default settings - -- refer to the configuration section below - }, - }, - }, - keys = { - { - "uz", - function() - require("zen-mode").toggle({}) - end, - desc = "Toggle zen mode", - }, - }, - opts = { - window = { - backdrop = 0.95, -- shade the backdrop of the Zen window. Set to 1 to keep the same as Normal - -- height and width can be: - -- * an absolute number of cells when > 1 - -- * a percentage of the width / height of the editor when <= 1 - -- * a function that returns the width or the height - width = 0.8, -- width of the Zen window - height = 1, -- height of the Zen window - -- by default, no options are changed for the Zen window - -- uncomment any of the options below, or add other vim.wo options you want to apply - options = { - -- signcolumn = "no", -- disable signcolumn - -- number = false, -- disable number column - -- relativenumber = false, -- disable relative numbers - cursorline = false, -- disable cursorline - -- cursorcolumn = false, -- disable cursor column - -- foldcolumn = "0", -- disable fold column - list = false, -- disable whitespace characters - }, - }, - plugins = { - -- disable some global vim options (vim.o...) - -- comment the lines to not apply the options - options = { - enabled = true, - ruler = true, -- disables the ruler text in the cmd line area - showcmd = false, -- disables the command in the last line of the screen - -- you may turn on/off statusline in zen mode by setting 'laststatus' - -- statusline will be shown only if 'laststatus' == 3 - laststatus = 0, -- turn off the statusline in zen mode - }, - twilight = { enabled = true }, -- enable to start Twilight when zen mode opens - gitsigns = { enabled = false }, -- disables git signs - tmux = { enabled = true }, -- disables the tmux statusline - -- this will change the font size on kitty when in zen mode - -- to make this work, you need to set the following kitty options: - -- - allow_remote_control socket-only - -- - listen_on unix:/tmp/kitty - kitty = { - enabled = true, - font = "+8", -- font size increment - }, - -- this will change the font size on alacritty when in zen mode - -- requires Alacritty Version 0.10.0 or higher - -- uses `alacritty msg` subcommand to change font size - alacritty = { - enabled = true, - font = "14", -- font size - }, - -- this will change the font size on wezterm when in zen mode - -- See else also the Plugins/Wezterm section in this projects README - wezterm = { - enabled = true, - -- can be either an absolute font size or the number of incremental steps - font = "+4", -- (10% increase per step) - }, - }, - }, -} diff --git a/config/nvim/lua/aleidk/utils.lua b/config/nvim/lua/aleidk/utils.lua new file mode 100644 index 0000000..96d3f8f --- /dev/null +++ b/config/nvim/lua/aleidk/utils.lua @@ -0,0 +1,7 @@ +local M = {} + +function M.plugin_should_be_enabled() + print("Plugin should be enabled") +end + +return M diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml index 4c37eb5..8b24d00 100644 --- a/config/yazi/keymap.toml +++ b/config/yazi/keymap.toml @@ -45,11 +45,11 @@ keymap = [ { on = ["J"], run = "seek 5", desc = "Seek down 5 units in the preview" }, # Selection - { on = [ "" ], run = [ "toggle", "arrow 1" ], desc = "Toggle the current selection state" }, + { on = [ "" ], run = [ "select", "arrow 1" ], desc = "Toggle the current selection state" }, { on = [ "v" ], run = "visual_mode", desc = "Enter visual mode (selection mode)" }, { on = [ "V" ], run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" }, - { on = [ "" ], run = "toggle_all", desc = "Select all files" }, - { on = [ "" ], run = "toggle_all on", desc = "Inverse selection of all files" }, + { on = [ "" ], run = "select_all --state=true", desc = "Select all files" }, + { on = [ "" ], run = "select_all --state=none", desc = "Inverse selection of all files" }, # Operation { on = [ "o" ], run = "open", desc = "Open the selected files" }, From a4e06120d299fdd7d48f4492ca61df572987a043 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 20 Nov 2024 16:56:06 -0300 Subject: [PATCH 014/152] update UI plugins --- config/nvim/lazy-lock.json | 3 +- .../nvim/lua/aleidk/plugins-base/dressing.lua | 10 - config/nvim/lua/aleidk/plugins-base/noice.lua | 123 ------------ config/nvim/lua/aleidk/plugins-base/ui.lua | 177 ++++++++++++++++++ 4 files changed, 179 insertions(+), 134 deletions(-) delete mode 100644 config/nvim/lua/aleidk/plugins-base/dressing.lua delete mode 100644 config/nvim/lua/aleidk/plugins-base/noice.lua create mode 100644 config/nvim/lua/aleidk/plugins-base/ui.lua diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 7bafe03..67d20b9 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -15,7 +15,7 @@ "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, "copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, - "dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" }, + "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, "grapple.nvim": { "branch": "main", "commit": "7aedc261b05a6c030397c4bc26416efbe746ebf1" }, @@ -39,6 +39,7 @@ "nvim-cmp": { "branch": "main", "commit": "a110e12d0b58eefcf5b771f533fc2cf3050680ac" }, "nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" }, "nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" }, + "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, "nvim-treesitter": { "branch": "master", "commit": "7f4ac678770175cdf0d42c015f4a5b6e18b6cb33" }, "nvim-treesitter-context": { "branch": "master", "commit": "f56a1430f21334868a86eb980b12e0af55690e98" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" }, diff --git a/config/nvim/lua/aleidk/plugins-base/dressing.lua b/config/nvim/lua/aleidk/plugins-base/dressing.lua deleted file mode 100644 index 9d2a5e4..0000000 --- a/config/nvim/lua/aleidk/plugins-base/dressing.lua +++ /dev/null @@ -1,10 +0,0 @@ -return { - -- better imputs - "stevearc/dressing.nvim", - opts = { - input = { - -- handle by noice - enabled = false, - }, - }, -} diff --git a/config/nvim/lua/aleidk/plugins-base/noice.lua b/config/nvim/lua/aleidk/plugins-base/noice.lua deleted file mode 100644 index 0ab9d7c..0000000 --- a/config/nvim/lua/aleidk/plugins-base/noice.lua +++ /dev/null @@ -1,123 +0,0 @@ -return { - "folke/noice.nvim", - event = "VeryLazy", - dependencies = { - -- if you lazy-load any plugin below, make sure to add proper `module="..."` entries - "MunifTanjim/nui.nvim", - }, - opts = { - presets = { - bottom_search = true, - -- command_palette = true, - long_message_to_split = true, - inc_rename = true, - }, - lsp = { - override = { - ["vim.lsp.util.convert_input_to_markdown_lines"] = true, - ["vim.lsp.util.stylize_markdown"] = true, - ["cmp.entry.get_documentation"] = true, - }, - }, - routes = { - { - filter = { - event = "msg_show", - any = { - { find = "%d+L, %d+B" }, - { find = "; after #%d+" }, - { find = "; before #%d+" }, - }, - }, - view = "mini", - }, - { - filter = { - event = "msg_show", - kind = "search_count", - }, - opts = { skip = true }, - }, - }, - views = { - cmdline_popup = { - position = { - row = 5, - col = "50%", - }, - size = { - width = 60, - height = "auto", - }, - }, - popupmenu = { - relative = "editor", - position = { - row = 8, - col = "50%", - }, - size = { - width = 60, - height = 10, - }, - border = { - style = "rounded", - padding = { 0, 1 }, - }, - win_options = { - winhighlight = { Normal = "Normal", FloatBorder = "DiagnosticInfo" }, - }, - }, - notify = { - enabled = false, - }, - messages = { - enabled = false, - }, - }, - }, - -- stylua: ignore - keys = { - { - "", - function() require("noice").redirect(vim.fn.getcmdline()) end, - mode = "c", - desc = - "Redirect Cmdline" - }, - { - "unl", - function() require("noice").cmd("last") end, - desc = - "Noice Last Message" - }, - { - "unh", - function() require("noice").cmd("history") end, - desc = - "Noice History" - }, - { "una", function() require("noice").cmd("all") end, desc = "Noice All" }, - { "und", function() require("noice").cmd("dismiss") end, desc = "Dismiss All" }, - { - "", - function() if not require("noice.lsp").scroll(4) then return "" end end, - silent = true, - expr = true, - desc = - "Scroll forward", - mode = { - "i", "n", "s" } - }, - { - "", - function() if not require("noice.lsp").scroll(-4) then return "" end end, - silent = true, - expr = true, - desc = - "Scroll backward", - mode = { - "i", "n", "s" } - }, - }, -} diff --git a/config/nvim/lua/aleidk/plugins-base/ui.lua b/config/nvim/lua/aleidk/plugins-base/ui.lua new file mode 100644 index 0000000..811a01a --- /dev/null +++ b/config/nvim/lua/aleidk/plugins-base/ui.lua @@ -0,0 +1,177 @@ +return { + { + -- better imputs + "stevearc/dressing.nvim", + opts = { + input = { + -- handle by noice + enabled = false, + }, + }, + }, + { + "folke/noice.nvim", + event = "VeryLazy", + dependencies = { + "MunifTanjim/nui.nvim", + "rcarriga/nvim-notify", + }, + opts = { + presets = { + bottom_search = true, + long_message_to_split = true, + inc_rename = true, + lsp_doc_border = true, + }, + lsp = { + override = { + -- override the default lsp markdown formatter with Noice + ["vim.lsp.util.convert_input_to_markdown_lines"] = true, + -- override the lsp markdown formatter with Noice + ["vim.lsp.util.stylize_markdown"] = true, + -- override cmp documentation with Noice (needs the other options to work) + ["cmp.entry.get_documentation"] = true, + }, + message = { + view = "mini", + }, + progress = { + view = "mini_left" + } + }, + routes = { + { + filter = { + event = "msg_show", + kind = "", + find = "written", + }, + opts = { skip = true }, + }, + { + filter = { + event = "notify", + min_height = 15 + }, + view = 'popup' + }, + { + filter = { + event = "notify", + kind = "info" + }, + view = 'mini' + }, + }, + views = { + notify = { + merge = true + }, + cmdline_popup = { + position = { + row = 5, + col = "50%", + }, + size = { + width = 60, + height = "auto", + }, + }, + popupmenu = { + relative = "editor", + position = { + row = 8, + col = "50%", + }, + size = { + width = 60, + height = 10, + }, + border = { + style = "rounded", + padding = { 0, 1 }, + }, + win_options = { + winhighlight = { Normal = "Normal", FloatBorder = "DiagnosticInfo" }, + }, + }, + mini_left = { + backend = "mini", + relative = "editor", + align = "left", + timeout = 2000, + reverse = true, + focusable = false, + position = { + row = -1, + col = 0, + }, + size = { + width = "auto", + height = "auto", + max_height = 10, + }, + border = { + style = "none", + }, + zindex = 60, + win_options = { + winbar = "", + foldenable = false, + winblend = 30, + winhighlight = { + Normal = "NoiceMini", + IncSearch = "", + CurSearch = "", + Search = "", + }, + }, + }, + }, + }, + -- stylua: ignore + keys = { + { + "", + function() require("noice").redirect(vim.fn.getcmdline()) end, + mode = "c", + desc = + "Redirect Cmdline" + }, + { + "unl", + function() require("noice").cmd("last") end, + desc = + "Noice Last Message" + }, + { + "unh", + function() require("noice").cmd("history") end, + desc = + "Noice History" + }, + { "una", function() require("noice").cmd("all") end, desc = "Noice All" }, + { "und", function() require("noice").cmd("dismiss") end, desc = "Dismiss All" }, + { + "", + function() if not require("noice.lsp").scroll(4) then return "" end end, + silent = true, + expr = true, + desc = + "Scroll forward", + mode = { + "i", "n", "s" } + }, + { + "", + function() if not require("noice.lsp").scroll(-4) then return "" end end, + silent = true, + expr = true, + desc = + "Scroll backward", + mode = { + "i", "n", "s" } + }, + }, + } +} From 9d3fa8e91086c0b2aff47a59846633917c10e98d Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 20 Nov 2024 19:04:08 -0300 Subject: [PATCH 015/152] minor updates --- .dotter/global.toml | 1 + .dotter/machines/fedora.toml | 8 +++++++- .dotter/pre_deploy.sh | 32 ++++++++++++++++++++++++++++---- .dotter/thinkpad.toml | 8 +++++--- config/nvim/lazy-lock.json | 8 ++++---- config/sesh/sesh.toml | 2 +- 6 files changed, 46 insertions(+), 13 deletions(-) diff --git a/.dotter/global.toml b/.dotter/global.toml index 7770d4f..0920439 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -14,6 +14,7 @@ nerd_font = "JetBrainsMono" [cli.files] "config/bat" = "~/.config/bat" +"config/kitty" = {target = "~/.config/kitty", type = "symbolic" } "config/sesh" = "~/.config/sesh" "config/tmux" = "~/.config/tmux" "config/yazi" = "~/.config/yazi" diff --git a/.dotter/machines/fedora.toml b/.dotter/machines/fedora.toml index 63e5773..368f1da 100644 --- a/.dotter/machines/fedora.toml +++ b/.dotter/machines/fedora.toml @@ -21,10 +21,11 @@ cli = [ "duf", "eza", "fd-find", - "firefox-dev", + # "firefox-dev", "flatpak", "fzf", "git", + "kitty", "lazygit", "neovim", "remove-retired-packages", @@ -47,6 +48,11 @@ dev = [ "tree-sitter-cli", ] +[zsh.variables.packages] +zssh = [ + "zsh" +] + [rust.variables] cargo.packages = [ "yazi-fm", diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh index 9b30d7a..0778ecf 100644 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -2,6 +2,7 @@ # shellcheck disable=all # This is a handlerbars template, so ignore issues +set -euo pipefail checksum_file=".dotter/cache/pre_deploy.checksum" @@ -16,12 +17,23 @@ fi {{ header "Running pre deploy script for distro" (to_title_case distro) }} -{{ #if (and dotter.packages.cli (is_executable "sudo")) }} +{{ #if (is_executable "sudo") }} {{ header "Configuring sudo" }} -echo "Defaults pwfeedback" | sudo -B tee /etc/sudoers.d/01-user -echo "Defaults timestamp_timeout=10" | sudo -B tee -a /etc/sudoers.d/01-user -echo "Defaults timestamp_type=global" | sudo -B tee -a /etc/sudoers.d/01-user +SUDOERS_FILE="/etc/sudoers.d/01-user" + +if [[ -e "${SUDOERS_FILE}" ]]; then + echo "Sudo configuration already exists, to override it remove the file: ${SUDOERS_FILE}" + exit 0 +else + sudo -B tee "${SUDOERS_FILE}" < Date: Thu, 21 Nov 2024 12:30:12 -0300 Subject: [PATCH 016/152] add code outline navigator to nvim --- config/nvim/lazy-lock.json | 13 +++---- config/nvim/lua/aleidk/options.lua | 2 +- config/nvim/lua/aleidk/plugins-base/ui.lua | 20 +++++------ .../lua/aleidk/plugins-core/colorscheme.lua | 1 + config/nvim/lua/aleidk/plugins-core/init.lua | 10 +++++- .../nvim/lua/aleidk/plugins-core/lualine.lua | 1 + .../lua/aleidk/plugins-core/telescope.lua | 1 + config/nvim/lua/aleidk/plugins-ide/lsp.lua | 36 ++++++++++++++++++- config/nvim/lua/aleidk/plugins-ide/mason.lua | 1 - config/tmux/tmux.conf | 3 +- 10 files changed, 67 insertions(+), 21 deletions(-) diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 5b4d458..962341f 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,5 +1,6 @@ { "LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" }, + "aerial.nvim": { "branch": "master", "commit": "ddd25f57e5205b36bc2e939c486b47818bef9ec3" }, "ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, @@ -15,12 +16,12 @@ "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, "copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" }, "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, - "dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" }, + "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, - "grapple.nvim": { "branch": "main", "commit": "7aedc261b05a6c030397c4bc26416efbe746ebf1" }, + "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, - "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" }, + "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, "lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, @@ -40,7 +41,7 @@ "nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" }, "nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" }, "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, - "nvim-treesitter": { "branch": "master", "commit": "7f4ac678770175cdf0d42c015f4a5b6e18b6cb33" }, + "nvim-treesitter": { "branch": "master", "commit": "cd2acc803b9e2f9377fb31fbeb993f6e363466f5" }, "nvim-treesitter-context": { "branch": "master", "commit": "f56a1430f21334868a86eb980b12e0af55690e98" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" }, "nvim-ts-autotag": { "branch": "main", "commit": "323a3e16ed603e2e17b26b1c836d1e86c279f726" }, @@ -59,8 +60,8 @@ "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, "typescript-tools.nvim": { "branch": "master", "commit": "5da4d695d66f676eb6ea766b946e86f93baaafe7" }, "undotree": { "branch": "master", "commit": "56c684a805fe948936cda0d1b19505b84ad7e065" }, - "vim-dadbod": { "branch": "master", "commit": "7888cb7164d69783d3dce4e0283decd26b82538b" }, - "vim-dadbod-completion": { "branch": "master", "commit": "8c9051c1cfc73fcf5bfe9a84db7097e4f7c0180d" }, + "vim-dadbod": { "branch": "master", "commit": "fe5a55e92b2dded7c404006147ef97fb073d8b1b" }, + "vim-dadbod-completion": { "branch": "master", "commit": "da0e75c09c27a82aad078d993bb1b2f4afd43427" }, "vim-dadbod-ui": { "branch": "master", "commit": "f74a31e8c6c5a9dccc63450a09d5cd64a9294330" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, diff --git a/config/nvim/lua/aleidk/options.lua b/config/nvim/lua/aleidk/options.lua index cd81c12..aa543e9 100644 --- a/config/nvim/lua/aleidk/options.lua +++ b/config/nvim/lua/aleidk/options.lua @@ -31,7 +31,7 @@ opt.scrolloff = 15 -- Lines of context opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } opt.shiftround = true -- Round indent opt.shiftwidth = 2 -- Size of an indent -opt.shortmess:append({ W = true, I = true, c = true }) +-- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages opt.showmode = false -- Dont show mode since we have a statusline opt.sidescrolloff = 8 -- Columns of context opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time diff --git a/config/nvim/lua/aleidk/plugins-base/ui.lua b/config/nvim/lua/aleidk/plugins-base/ui.lua index 811a01a..0fd279f 100644 --- a/config/nvim/lua/aleidk/plugins-base/ui.lua +++ b/config/nvim/lua/aleidk/plugins-base/ui.lua @@ -34,6 +34,7 @@ return { }, message = { view = "mini", + view_search = false, }, progress = { view = "mini_left" @@ -139,22 +140,21 @@ return { "Redirect Cmdline" }, { - "unl", + "um", function() require("noice").cmd("last") end, desc = - "Noice Last Message" + "Messages last" }, { - "unh", + "uM", function() require("noice").cmd("history") end, desc = - "Noice History" + "Messages all" }, - { "una", function() require("noice").cmd("all") end, desc = "Noice All" }, - { "und", function() require("noice").cmd("dismiss") end, desc = "Dismiss All" }, + { "uX", function() require("noice").cmd("dismiss") end, desc = "Message dismiss all" }, { - "", - function() if not require("noice.lsp").scroll(4) then return "" end end, + "", + function() if not require("noice.lsp").scroll(4) then return "" end end, silent = true, expr = true, desc = @@ -163,8 +163,8 @@ return { "i", "n", "s" } }, { - "", - function() if not require("noice.lsp").scroll(-4) then return "" end end, + "", + function() if not require("noice.lsp").scroll(-4) then return "" end end, silent = true, expr = true, desc = diff --git a/config/nvim/lua/aleidk/plugins-core/colorscheme.lua b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua index 5f126e9..643a053 100644 --- a/config/nvim/lua/aleidk/plugins-core/colorscheme.lua +++ b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua @@ -6,6 +6,7 @@ return { -- Change colors.none if not using a transparent background flavour = "macchiato", transparent_background = true, integrations = { + aerial = true, cmp = true, notify = true, harpoon = false, diff --git a/config/nvim/lua/aleidk/plugins-core/init.lua b/config/nvim/lua/aleidk/plugins-core/init.lua index 3499f7d..3501757 100644 --- a/config/nvim/lua/aleidk/plugins-core/init.lua +++ b/config/nvim/lua/aleidk/plugins-core/init.lua @@ -6,7 +6,15 @@ return { -- Highlight word under cursor "RRethy/vim-illuminate", event = { "BufReadPost", "BufNewFile" }, - opts = { delay = 200 }, + opts = { + delay = 200, + filetypes_denylist = { + 'dirbuf', + 'dirvish', + 'fugitive', + 'aerial', + }, + }, config = function(_, opts) require("illuminate").configure(opts) end, diff --git a/config/nvim/lua/aleidk/plugins-core/lualine.lua b/config/nvim/lua/aleidk/plugins-core/lualine.lua index 0e79c78..391e50f 100644 --- a/config/nvim/lua/aleidk/plugins-core/lualine.lua +++ b/config/nvim/lua/aleidk/plugins-core/lualine.lua @@ -115,6 +115,7 @@ return { }, }, { codecompanion_status }, + { "aerial" }, { "overseer", }, diff --git a/config/nvim/lua/aleidk/plugins-core/telescope.lua b/config/nvim/lua/aleidk/plugins-core/telescope.lua index f6bb853..5574cdd 100644 --- a/config/nvim/lua/aleidk/plugins-core/telescope.lua +++ b/config/nvim/lua/aleidk/plugins-core/telescope.lua @@ -50,6 +50,7 @@ return { -- Enable telescope fzf native, if installed pcall(telescope.load_extension, "fzf") + pcall(telescope.load_extension, "aerial") -- Find files vim.keymap.set( diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index ab2f1aa..70d875f 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -1,4 +1,4 @@ -return { +return { { -- LSP Configuration & Plugins "neovim/nvim-lspconfig", event = { "BufReadPost", "BufNewFile", "BufWritePre" }, @@ -216,4 +216,38 @@ return { vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) end end, +}, + + { + 'stevearc/aerial.nvim', + -- Optional dependencies + dependencies = { + "nvim-treesitter/nvim-treesitter", + "nvim-tree/nvim-web-devicons" + }, + opts = { + close_on_select = false, + show_guides = true, + autojump = true, + highlight_on_hover = true, + layout = { + default_direction = "float", + }, + float = { + relative = "editor", + }, + nav = { + preview = true, + keymaps = { + ["q"] = "actions.close", + }, + }, + }, + + keys = { + { "lt", function() require("aerial").toggle() end, desc = "Open syntax tree" }, + { "lT", function() require("aerial").nav_toggle() end, desc = "Open syntax tree navigation" }, + { "fl", "Telescope aerial", desc = "Find in syntax tree" }, + } + } } diff --git a/config/nvim/lua/aleidk/plugins-ide/mason.lua b/config/nvim/lua/aleidk/plugins-ide/mason.lua index 6353e53..181d119 100644 --- a/config/nvim/lua/aleidk/plugins-ide/mason.lua +++ b/config/nvim/lua/aleidk/plugins-ide/mason.lua @@ -1,7 +1,6 @@ return { "williamboman/mason.nvim", cmd = "Mason", - keys = { { "um", "Mason", desc = "Mason" } }, build = ":MasonUpdate", opts = { ensure_installed = {}, diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index b65e8b1..deca653 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -174,7 +174,8 @@ set -g @popup-id-format '#{b:socket_path}/#{session_name}/#{b:pane_current_path} # Use this to open specific programs in floating panes bind C-p run "#{@popup-toggle}" -bind C-o run "#{@popup-toggle} -Ed'#{pane_current_path}' -w90% -h90% --name=tool fzf-tmux-tools-popup" +bind C-g run "#{@popup-toggle} -Ed'#{pane_current_path}' -w90% -h90% --name=lazygit lazygit" +bind C-o run "#{@popup-toggle} -Ed'#{pane_current_path}' -w90% -h90% --name=tool $HOME/Repos/Private/dots/scripts/fzf-tmux-tools-popup" bind C-w run "#{@popup-toggle} -Ed'#{pane_current_path}' -w90% -h90% --name=wiki fzf-wikis" bind C-z run "#{@popup-toggle} -Ed'#{pane_current_path}' -w90% -h90% --name=wiki fzf-wikis void" From ec617fabc22c5ed7082629519da7ef94746acd2c Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 22 Nov 2024 12:52:48 -0300 Subject: [PATCH 017/152] update some plugin configuration --- config/nvim/lazy-lock.json | 4 +- .../aleidk/plugins-base/indent-blankline.lua | 2 +- .../lua/aleidk/plugins-base/treesitter.lua | 43 ++++++++++++------- config/nvim/lua/aleidk/plugins-base/ui.lua | 24 ++++++++--- .../lua/aleidk/plugins-core/colorscheme.lua | 6 +-- config/nvim/lua/aleidk/plugins-ide/lsp.lua | 4 +- 6 files changed, 54 insertions(+), 29 deletions(-) diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 962341f..08b5f87 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,6 +1,7 @@ { "LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" }, "aerial.nvim": { "branch": "master", "commit": "ddd25f57e5205b36bc2e939c486b47818bef9ec3" }, + "catppuccin": { "branch": "main", "commit": "637d99e638bc6f1efedac582f6ccab08badac0c6" }, "ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, @@ -20,7 +21,7 @@ "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, - "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, + "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, "lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, @@ -34,7 +35,6 @@ "neogit": { "branch": "master", "commit": "a20031fb5d7d12148764764059243135085e5c9b" }, "noice.nvim": { "branch": "main", "commit": "6263b6696811f0b11c88d8d2371134b1cc1762fc" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, - "nvim": { "branch": "main", "commit": "7946d1a195c66fed38b3e34f9fa8e0c5a2da0700" }, "nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" }, "nvim-bqf": { "branch": "main", "commit": "1b24dc6050c34e8cd377b6b4cd6abe40509e0187" }, "nvim-cmp": { "branch": "main", "commit": "a110e12d0b58eefcf5b771f533fc2cf3050680ac" }, diff --git a/config/nvim/lua/aleidk/plugins-base/indent-blankline.lua b/config/nvim/lua/aleidk/plugins-base/indent-blankline.lua index 95b4c4f..f529305 100644 --- a/config/nvim/lua/aleidk/plugins-base/indent-blankline.lua +++ b/config/nvim/lua/aleidk/plugins-base/indent-blankline.lua @@ -1,7 +1,7 @@ return { -- Add indentation guides even on blank lines "lukas-reineke/indent-blankline.nvim", - event = { "BufReadPost", "BufNewFile" }, + dependencies = { "nvim-treesitter/nvim-treesitter" }, main = "ibl", opts = { -- char = "▏", diff --git a/config/nvim/lua/aleidk/plugins-base/treesitter.lua b/config/nvim/lua/aleidk/plugins-base/treesitter.lua index 1d1111d..870f442 100644 --- a/config/nvim/lua/aleidk/plugins-base/treesitter.lua +++ b/config/nvim/lua/aleidk/plugins-base/treesitter.lua @@ -36,30 +36,24 @@ return { move = { enable = true, set_jumps = true, -- whether to set jumps in the jumplist - goto_next_start = { - ["]m"] = "@function.outer", - ["]]"] = "@class.outer", + goto_previous = { -- current or last start of object + ["[["] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, + ["[f"] = "@function.outer", + ["[c"] = "@class.outer", }, - goto_next_end = { - ["]M"] = "@function.outer", - ["]["] = "@class.outer", - }, - goto_previous_start = { - ["[m"] = "@function.outer", - ["[["] = "@class.outer", - }, - goto_previous_end = { - ["[M"] = "@function.outer", - ["[]"] = "@class.outer", + goto_next = { -- next object end + ["]]"] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, + ["]f"] = "@function.outer", -- current function end + ["]c"] = "@class.outer", }, }, swap = { enable = true, swap_next = { - ["a"] = "@parameter.inner", + ["ln"] = "@parameter.inner", }, swap_previous = { - ["A"] = "@parameter.inner", + ["lN"] = "@parameter.inner", }, }, }, @@ -70,6 +64,23 @@ return { enable_autocmd = false, } + local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move" + + -- Repeat movement with ; and , + -- ensure , goes forward and ; goes backward regardless of the last direction + vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_next) + vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_previous) + + -- Optionally, make builtin f, F, t, T also repeatable with ; and , + vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T_expr, { expr = true }) + + vim.keymap.set("n", "[u", function() + require("treesitter-context").go_to_context() + end, { silent = true, noremap = true, desc = "Go up when context is out of view" }) + vim.opt.foldmethod = "expr" vim.opt.foldexpr = "nvim_treesitter#foldexpr()" diff --git a/config/nvim/lua/aleidk/plugins-base/ui.lua b/config/nvim/lua/aleidk/plugins-base/ui.lua index 0fd279f..1ef7277 100644 --- a/config/nvim/lua/aleidk/plugins-base/ui.lua +++ b/config/nvim/lua/aleidk/plugins-base/ui.lua @@ -42,12 +42,26 @@ return { }, routes = { { - filter = { - event = "msg_show", - kind = "", - find = "written", - }, + -- Don't show these messages opts = { skip = true }, + filter = { + any = { + { + event = "msg_show", + kind = "search_count", + }, + { + event = "msg_show", + kind = "", + find = "written", + }, + { + event = "msg_show", + kind = "", + find = "yazi.nvim", + }, + } + }, }, { filter = { diff --git a/config/nvim/lua/aleidk/plugins-core/colorscheme.lua b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua index 643a053..ff0bf3f 100644 --- a/config/nvim/lua/aleidk/plugins-core/colorscheme.lua +++ b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua @@ -1,7 +1,7 @@ return { -- Change colors.none if not using a transparent background "catppuccin/nvim", + name = "catppuccin", priority = 1000, - lazy = false, opts = { flavour = "macchiato", transparent_background = true, @@ -13,10 +13,10 @@ return { -- Change colors.none if not using a transparent background mason = true, neogit = true, noice = true, - hop = true, lsp_trouble = true, indent_blankline = { enabled = true, + scope_color = "text", }, }, custom_highlights = function(colors) @@ -35,6 +35,6 @@ return { -- Change colors.none if not using a transparent background config = function(_, opts) require("catppuccin").setup(opts) - vim.cmd.colorscheme("catppuccin") + vim.cmd.colorscheme("catppuccin-macchiato") end, } diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index 70d875f..553b256 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -245,8 +245,8 @@ return { { }, keys = { - { "lt", function() require("aerial").toggle() end, desc = "Open syntax tree" }, - { "lT", function() require("aerial").nav_toggle() end, desc = "Open syntax tree navigation" }, + { "ll", function() require("aerial").toggle() end, desc = "Open syntax tree" }, + { "lL", function() require("aerial").nav_toggle() end, desc = "Open syntax tree navigation" }, { "fl", "Telescope aerial", desc = "Find in syntax tree" }, } } From 4a5a878a7fcd70ff3e0976a299bacd5376a4245f Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 22 Nov 2024 13:29:05 -0300 Subject: [PATCH 018/152] neovim plugin cleanup --- config/nvim/lua/aleidk/options.lua | 56 ++++++++++++ .../lua/aleidk/plugins-base/auto-pairs.lua | 1 + .../nvim/lua/aleidk/plugins-base/comments.lua | 20 ++--- .../lua/aleidk/plugins-base/file-explorer.lua | 11 --- .../nvim/lua/aleidk/plugins-base/quickfix.lua | 89 ------------------- .../lua/aleidk/plugins-base/treesitter.lua | 12 --- .../nvim/lua/aleidk/plugins-core/markdown.lua | 29 ------ .../lua/aleidk/plugins-core/telescope.lua | 3 +- .../lua/aleidk/plugins-core/todo-comments.lua | 9 +- 9 files changed, 69 insertions(+), 161 deletions(-) delete mode 100644 config/nvim/lua/aleidk/plugins-base/quickfix.lua diff --git a/config/nvim/lua/aleidk/options.lua b/config/nvim/lua/aleidk/options.lua index aa543e9..d1fe584 100644 --- a/config/nvim/lua/aleidk/options.lua +++ b/config/nvim/lua/aleidk/options.lua @@ -52,6 +52,62 @@ opt.wrap = false -- Disable line wrap vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" +local fn = vim.fn + +-- Quickfix customization +function _G.qftf(info) + local items + local ret = {} + -- The name of item in list is based on the directory of quickfix window. + -- Change the directory for quickfix window make the name of item shorter. + -- It's a good opportunity to change current directory in quickfixtextfunc :) + -- + -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window + -- local root = getRootByAlterBufnr(alterBufnr) + -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) + -- + if info.quickfix == 1 then + items = fn.getqflist({ id = info.id, items = 0 }).items + else + items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items + end + local limit = 31 + local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" + local validFmt = "%s │%5d:%-3d│%s %s" + for i = info.start_idx, info.end_idx do + local e = items[i] + local fname = "" + local str + if e.valid == 1 then + if e.bufnr > 0 then + fname = fn.bufname(e.bufnr) + if fname == "" then + fname = "[No Name]" + else + fname = fname:gsub("^" .. vim.env.HOME, "~") + end + -- char in fname may occur more than 1 width, ignore this issue in order to keep performance + if #fname <= limit then + fname = fnameFmt1:format(fname) + else + fname = fnameFmt2:format(fname:sub(1 - limit)) + end + end + local lnum = e.lnum > 99999 and -1 or e.lnum + local col = e.col > 999 and -1 or e.col + local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() + str = validFmt:format(fname, lnum, col, qtype, e.text) + else + str = e.text + end + table.insert(ret, str) + end + return ret +end + +-- TODO: how to customize? +vim.o.qftf = "{info -> v:lua._G.qftf(info)}" + vim.filetype.add({ -- Detect and assign filetype based on the extension of the filename extension = { diff --git a/config/nvim/lua/aleidk/plugins-base/auto-pairs.lua b/config/nvim/lua/aleidk/plugins-base/auto-pairs.lua index 2355082..883891d 100644 --- a/config/nvim/lua/aleidk/plugins-base/auto-pairs.lua +++ b/config/nvim/lua/aleidk/plugins-base/auto-pairs.lua @@ -1,5 +1,6 @@ return { "windwp/nvim-autopairs", event = "InsertEnter", + config = true, opts = {}, -- this is equalent to setup({}) function } diff --git a/config/nvim/lua/aleidk/plugins-base/comments.lua b/config/nvim/lua/aleidk/plugins-base/comments.lua index 083aaff..edd3413 100644 --- a/config/nvim/lua/aleidk/plugins-base/comments.lua +++ b/config/nvim/lua/aleidk/plugins-base/comments.lua @@ -17,18 +17,12 @@ return { }, { "LudoPinelli/comment-box.nvim", - event = "VeryLazy", - config = function() - require("comment-box").setup({ - outer_blank_lines = true, - }) - - local cb = require("comment-box") - - -- left aligned fixed size box with left aligned text - MAP({ "n", "v" }, "gcb", cb.lcbox, "Create a comment box") - -- centered adapted box with centered text - MAP({ "n", "v" }, "gcl", cb.llline, "Create a comment line") - end, + opts = { + outer_blank_lines = true, + }, + keys = { + { "gcb", function() require("comment-box").lcbox() end, { desc = "Create a comment box", mode = { "n", "v" }, } }, + { "gcl", function() require("comment-box").llline() end, { desc = "Create a comment line", mode = { "n", "v" }, } }, + }, }, } diff --git a/config/nvim/lua/aleidk/plugins-base/file-explorer.lua b/config/nvim/lua/aleidk/plugins-base/file-explorer.lua index b0dfa3e..2f76b72 100644 --- a/config/nvim/lua/aleidk/plugins-base/file-explorer.lua +++ b/config/nvim/lua/aleidk/plugins-base/file-explorer.lua @@ -1,9 +1,6 @@ ----@type LazySpec return { "mikavilpas/yazi.nvim", - -- event = "VeryLazy", keys = { - -- 👇 in this section, choose your own keymappings! { "e", "Yazi", @@ -15,15 +12,7 @@ return { "Yazi cwd", desc = "Open the file manager in nvim's working directory", }, - -- { - -- -- NOTE: this requires a version of yazi that includes - -- -- https://github.com/sxyazi/yazi/pull/1305 from 2024-07-18 - -- '', - -- "Yazi toggle", - -- desc = "Resume the last yazi session", - -- }, }, - ---@type YaziConfig opts = { -- if you want to open yazi instead of netrw, see below for more info open_for_directories = true, diff --git a/config/nvim/lua/aleidk/plugins-base/quickfix.lua b/config/nvim/lua/aleidk/plugins-base/quickfix.lua deleted file mode 100644 index 7ce267a..0000000 --- a/config/nvim/lua/aleidk/plugins-base/quickfix.lua +++ /dev/null @@ -1,89 +0,0 @@ -return { - { - "kevinhwang91/nvim-bqf", - event = "VeryLazy", - dependencies = {}, - config = function() - local fn = vim.fn - - function _G.qftf(info) - local items - local ret = {} - -- The name of item in list is based on the directory of quickfix window. - -- Change the directory for quickfix window make the name of item shorter. - -- It's a good opportunity to change current directory in quickfixtextfunc :) - -- - -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window - -- local root = getRootByAlterBufnr(alterBufnr) - -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) - -- - if info.quickfix == 1 then - items = fn.getqflist({ id = info.id, items = 0 }).items - else - items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items - end - local limit = 31 - local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" - local validFmt = "%s │%5d:%-3d│%s %s" - for i = info.start_idx, info.end_idx do - local e = items[i] - local fname = "" - local str - if e.valid == 1 then - if e.bufnr > 0 then - fname = fn.bufname(e.bufnr) - if fname == "" then - fname = "[No Name]" - else - fname = fname:gsub("^" .. vim.env.HOME, "~") - end - -- char in fname may occur more than 1 width, ignore this issue in order to keep performance - if #fname <= limit then - fname = fnameFmt1:format(fname) - else - fname = fnameFmt2:format(fname:sub(1 - limit)) - end - end - local lnum = e.lnum > 99999 and -1 or e.lnum - local col = e.col > 999 and -1 or e.col - local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() - str = validFmt:format(fname, lnum, col, qtype, e.text) - else - str = e.text - end - table.insert(ret, str) - end - return ret - end - - vim.o.qftf = "{info -> v:lua._G.qftf(info)}" - - -- Adapt fzf's delimiter in nvim-bqf - require("bqf").setup({ - filter = { - fzf = { - extra_opts = { "--bind", "ctrl-o:toggle-all", "--delimiter", "│" }, - }, - }, - }) - - local toggle_qf = function() - local qf_open = false - for _, win in pairs(vim.fn.getwininfo()) do - if win["quickfix"] == 1 then - qf_open = true - end - end - if qf_open == true then - vim.cmd("cclose") - return - end - if not vim.tbl_isempty(vim.fn.getqflist()) then - vim.cmd("copen") - end - end - - MAP("n", "fQ", toggle_qf, "Toggle quickfix") - end, - }, -} diff --git a/config/nvim/lua/aleidk/plugins-base/treesitter.lua b/config/nvim/lua/aleidk/plugins-base/treesitter.lua index 870f442..c0077f4 100644 --- a/config/nvim/lua/aleidk/plugins-base/treesitter.lua +++ b/config/nvim/lua/aleidk/plugins-base/treesitter.lua @@ -86,17 +86,5 @@ return { -- Uncoment this line to disable auto folding on file open vim.cmd("set nofoldenable") - - -- TODO: remove this when blade treesitter is added to nvim-treesitter repo - -- Also remove the "config/nvim/after/queries/blade" folder. - local parser_config = require("nvim-treesitter.parsers").get_parser_configs() - parser_config.blade = { - install_info = { - url = "https://github.com/EmranMR/tree-sitter-blade", - files = { "src/parser.c" }, - branch = "main", - }, - filetype = "blade", - } end, } diff --git a/config/nvim/lua/aleidk/plugins-core/markdown.lua b/config/nvim/lua/aleidk/plugins-core/markdown.lua index 8a53320..3fc9cbb 100644 --- a/config/nvim/lua/aleidk/plugins-core/markdown.lua +++ b/config/nvim/lua/aleidk/plugins-core/markdown.lua @@ -12,33 +12,4 @@ return { }, }, }, - { - "zk-org/zk-nvim", - config = function() - require("zk").setup({ - picker = "select", - }) - - function MAP(mode, l, r, desc) - vim.keymap.set(mode, l, r, { desc = desc, silent = true }) - end - - MAP("n", "", "lua vim.lsp.buf.definition()", "Open the link under cursor") - - MAP("n", "zn", "ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }", - "Create new note") - MAP("v", "zN", - ":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }", - "Create new note using selection as content") - - MAP("n", "zl", "ZkInsertLink", "Insert Link into cursor position") - MAP("v", "zl", ":'<,'>ZkInsertLinkAtSelection", "Insert Link into selection") - - MAP("n", "zb", "ZkBacklinks", "Backlinks") - MAP("n", "zo", "ZkLinks", "Outlinks") - - MAP("n", "zf", "ZkNotes", "Find note") - MAP("n", "zt", "ZkTags", "Find tags") - end - } } diff --git a/config/nvim/lua/aleidk/plugins-core/telescope.lua b/config/nvim/lua/aleidk/plugins-core/telescope.lua index 5574cdd..48441dc 100644 --- a/config/nvim/lua/aleidk/plugins-core/telescope.lua +++ b/config/nvim/lua/aleidk/plugins-core/telescope.lua @@ -1,8 +1,7 @@ -- Fuzzy Finder (files, lsp, etc) return { "nvim-telescope/telescope.nvim", - version = "*", - event = "VeryLazy", + branch = "0.1.x", dependencies = { { "nvim-lua/plenary.nvim" }, { diff --git a/config/nvim/lua/aleidk/plugins-core/todo-comments.lua b/config/nvim/lua/aleidk/plugins-core/todo-comments.lua index 33f2372..d9044cd 100644 --- a/config/nvim/lua/aleidk/plugins-core/todo-comments.lua +++ b/config/nvim/lua/aleidk/plugins-core/todo-comments.lua @@ -1,9 +1,8 @@ return { - "folke/todo-comments.nvim", - cmd = { "TodoTrouble", "TodoTelescope" }, - event = { "BufReadPost", "BufNewFile" }, - config = true, - -- stylua: ignore + "folke/todo-comments.nvim", + cmd = { "TodoTrouble", "TodoTelescope" }, + event = { "BufReadPost", "BufNewFile" }, + config = true, keys = { { "]t", function() require("todo-comments").jump_next() end, desc = "Next todo comment" }, { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous todo comment" }, From 7c0c670e297d3c4536a2549b246cfe1247fe2f3c Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 22 Nov 2024 16:54:43 -0300 Subject: [PATCH 019/152] neovim plugin cleanup --- config/nvim/lazy-lock.json | 12 +- .../nvim/lua/aleidk/plugins-core/lualine.lua | 33 +- .../lua/aleidk/plugins-core/telescope.lua | 8 +- .../lua/aleidk/plugins-ide/color-picker.lua | 1 - .../nvim/lua/aleidk/plugins-ide/formatter.lua | 17 +- config/nvim/lua/aleidk/plugins-ide/git.lua | 62 --- .../{ts-node-action.lua => init.lua} | 10 +- .../nvim/lua/aleidk/plugins-ide/linters.lua | 8 +- config/nvim/lua/aleidk/plugins-ide/lsp.lua | 405 ++++++++---------- config/nvim/lua/aleidk/plugins-ide/mason.lua | 8 - .../lua/aleidk/plugins-ide/remote-sshfs.lua | 1 + .../lua/aleidk/plugins-ide/task-runner.lua | 22 +- .../nvim/lua/aleidk/plugins-ide/trouble.lua | 84 +++- 13 files changed, 311 insertions(+), 360 deletions(-) rename config/nvim/lua/aleidk/plugins-ide/{ts-node-action.lua => init.lua} (62%) delete mode 100644 config/nvim/lua/aleidk/plugins-ide/mason.lua diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 08b5f87..7171664 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -16,27 +16,24 @@ "copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" }, "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, "copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" }, - "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, - "lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" }, + "lazydev.nvim": { "branch": "main", "commit": "d5800897d9180cea800023f2429bce0a94ed6064" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, + "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, "mason.nvim": { "branch": "main", "commit": "f96a31855fa8aea55599cea412fe611b85a874ed" }, "mini.clue": { "branch": "main", "commit": "08f792869781b4bfdfcaa55eb905b9635c0a243f" }, "mini.comment": { "branch": "main", "commit": "c8406379987c321ecdef9f53e1ca741a55002104" }, "mini.surround": { "branch": "main", "commit": "3cb5b509ad34f2402df4b977be607a614c8c7524" }, - "neodev.nvim": { "branch": "main", "commit": "46aa467dca16cf3dfe27098042402066d2ae242d" }, "neogen": { "branch": "main", "commit": "0daffcec249bf42275e322361fe55b89a05ff278" }, - "neogit": { "branch": "master", "commit": "a20031fb5d7d12148764764059243135085e5c9b" }, "noice.nvim": { "branch": "main", "commit": "6263b6696811f0b11c88d8d2371134b1cc1762fc" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, "nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" }, - "nvim-bqf": { "branch": "main", "commit": "1b24dc6050c34e8cd377b6b4cd6abe40509e0187" }, "nvim-cmp": { "branch": "main", "commit": "a110e12d0b58eefcf5b771f533fc2cf3050680ac" }, "nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" }, "nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" }, @@ -53,7 +50,7 @@ "render-markdown": { "branch": "main", "commit": "123048b428eb85618780fcef9ea9f4d68b5d2508" }, "smart-splits.nvim": { "branch": "master", "commit": "95833675cd92538bf9cded1d2d58d1fc271c5428" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, - "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, + "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "todo-comments.nvim": { "branch": "main", "commit": "d61567557e2ff5c548c74e96b2d9f8d33e5fcb34" }, "treesj": { "branch": "main", "commit": "6e8bd008bacd5ad001c3953017c1dca20709e915" }, "trouble.nvim": { "branch": "main", "commit": "03c1fbf518bef683422a3be9643c3da190903488" }, @@ -65,6 +62,5 @@ "vim-dadbod-ui": { "branch": "master", "commit": "f74a31e8c6c5a9dccc63450a09d5cd64a9294330" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, - "yazi.nvim": { "branch": "main", "commit": "faa03e9acb894533b91c811d0dafd816b995088f" }, - "zk-nvim": { "branch": "main", "commit": "dbf4eeab55b08856c9d6b6722dbff39630bb35eb" } + "yazi.nvim": { "branch": "main", "commit": "faa03e9acb894533b91c811d0dafd816b995088f" } } diff --git a/config/nvim/lua/aleidk/plugins-core/lualine.lua b/config/nvim/lua/aleidk/plugins-core/lualine.lua index 391e50f..83aaede 100644 --- a/config/nvim/lua/aleidk/plugins-core/lualine.lua +++ b/config/nvim/lua/aleidk/plugins-core/lualine.lua @@ -66,6 +66,18 @@ return { end end + local trouble = require("trouble") + local symbols = trouble.statusline({ + mode = "lsp_document_symbols", + groups = {}, + title = false, + filter = { range = true }, + format = "{kind_icon}{symbol.name:Normal}", + -- The following line is needed to fix the background color + -- Set it to the lualine section you want to use + hl_group = "lualine_c_normal", + }) + return { options = { theme = "catppuccin", @@ -115,18 +127,12 @@ return { }, }, { codecompanion_status }, - { "aerial" }, { - "overseer", + symbols.get, + cond = symbols.has, }, { - -- Macro recording status - function() - return require("noice").api.status.mode.get() - end, - cond = function() - return package.loaded["noice"] and require("noice").api.status.mode.has() - end, + "overseer", }, }, lualine_x = { @@ -137,6 +143,15 @@ return { }, }, lualine_y = { + { + -- Macro recording status + function() + return require("noice").api.status.mode.get() + end, + cond = function() + return package.loaded["noice"] and require("noice").api.status.mode.has() + end, + }, { "searchcount" }, { "location" }, { diff --git a/config/nvim/lua/aleidk/plugins-core/telescope.lua b/config/nvim/lua/aleidk/plugins-core/telescope.lua index 48441dc..ad89cf6 100644 --- a/config/nvim/lua/aleidk/plugins-core/telescope.lua +++ b/config/nvim/lua/aleidk/plugins-core/telescope.lua @@ -35,12 +35,8 @@ return { [""] = actions.close, [""] = actions.send_to_qflist + actions.open_qflist, [""] = actions.send_selected_to_qflist + actions.open_qflist, - [""] = function(...) - return require("trouble.providers.telescope").open_with_trouble(...) - end, - [""] = function(...) - return require("trouble.providers.telescope").open_selected_with_trouble(...) - end, + [""] = require("trouble.sources.telescope").open, + [""] = require("trouble.sources.telescope").open, }, }, }, diff --git a/config/nvim/lua/aleidk/plugins-ide/color-picker.lua b/config/nvim/lua/aleidk/plugins-ide/color-picker.lua index 221ed52..626f66f 100644 --- a/config/nvim/lua/aleidk/plugins-ide/color-picker.lua +++ b/config/nvim/lua/aleidk/plugins-ide/color-picker.lua @@ -2,7 +2,6 @@ return { { -- Color Picker "uga-rosa/ccc.nvim", - event = "VeryLazy", opts = { auto_enable = true, lsp = true, diff --git a/config/nvim/lua/aleidk/plugins-ide/formatter.lua b/config/nvim/lua/aleidk/plugins-ide/formatter.lua index 2da9aec..2cab30d 100644 --- a/config/nvim/lua/aleidk/plugins-ide/formatter.lua +++ b/config/nvim/lua/aleidk/plugins-ide/formatter.lua @@ -1,6 +1,7 @@ return { "stevearc/conform.nvim", - event = "VeryLazy", + event = { "BufWritePre" }, + cmd = { "ConformInfo" }, opts = { -- log_level = vim.log.levels.DEBUG, @@ -13,13 +14,13 @@ return { -- have other formatters configured. ["_"] = { "trim_whitespace" }, blade = { "blade-formatter" }, - css = { "prettierd", "prettier" }, + css = { "biome" }, go = { "gofumpt", "goimports_reviser", "golines" }, html = { "djlint", "prettierd", stop_after_first = true }, - javascript = { "prettierd", "prettier", stop_after_first = true }, - javascriptreact = { "prettierd", "prettier", stop_after_first = true }, - json = { "prettierd", "prettier", stop_after_first = true }, - jsonc = { "prettierd", "prettier", stop_after_first = true }, + javascript = { "biome" }, + javascriptreact = { "biome" }, + json = { "biome" }, + jsonc = { "biome" }, lua = { "stylua" }, markdown = { "markdownlint" }, nim = { "nimpretty" }, @@ -27,8 +28,8 @@ return { python = { "ruff_format", "ruff_organize_imports" }, scss = { "prettierd", "prettier", stop_after_first = true }, sh = { "shfmt" }, - typescript = { "prettierd", "prettier", stop_after_first = true }, - typescriptreact = { "prettierd", "prettier", stop_after_first = true }, + typescript = { "biome" }, + typescriptreact = { "biome" }, xml = { "lemminx" }, zsh = { "shfmt" } }, diff --git a/config/nvim/lua/aleidk/plugins-ide/git.lua b/config/nvim/lua/aleidk/plugins-ide/git.lua index a248abf..4cc6a38 100644 --- a/config/nvim/lua/aleidk/plugins-ide/git.lua +++ b/config/nvim/lua/aleidk/plugins-ide/git.lua @@ -32,66 +32,4 @@ return { end, }, }, - { - "kdheepak/lazygit.nvim", - event = "VeryLazy", - dependencies = { - "nvim-lua/plenary.nvim", - }, - keys = { - { "gG", ":LazyGit", desc = "Lazygit" }, - }, - }, - { - "NeogitOrg/neogit", - dependencies = { - "nvim-lua/plenary.nvim", -- required - "nvim-telescope/telescope.nvim", -- optional - "sindrets/diffview.nvim", -- optional - }, - config = true, - opts = { - disable_line_numbers = false, - console_timeout = 8000, - graph_style = "unicode", - kind = "tab", - ignored_settings = { - "NeogitPushPopup--force", - "NeogitPullPopup--rebase", - "NeogitCommitPopup--allow-empty", - "NeogitCommitPopup--reuse-message", - "NeogitRevertPopup--no-edit", - }, - }, - keys = { - { - "gg", - function() - require("neogit").open() - end, - desc = "Neogit", - }, - { - "gc", - function() - require("neogit").open({ "commit" }) - end, - desc = "Commit", - }, - { - "gp", - function() - require("neogit").open({ "pull" }) - end, - desc = "Pull", - }, - { - "gP", - function() - require("neogit").open({ "push" }) - end, - desc = "Push", - }, - }, - }, } diff --git a/config/nvim/lua/aleidk/plugins-ide/ts-node-action.lua b/config/nvim/lua/aleidk/plugins-ide/init.lua similarity index 62% rename from config/nvim/lua/aleidk/plugins-ide/ts-node-action.lua rename to config/nvim/lua/aleidk/plugins-ide/init.lua index 1dc970d..286bfc6 100644 --- a/config/nvim/lua/aleidk/plugins-ide/ts-node-action.lua +++ b/config/nvim/lua/aleidk/plugins-ide/init.lua @@ -2,12 +2,10 @@ return { { "ckolkey/ts-node-action", dependencies = { "nvim-treesitter" }, - event = "VeryLazy", - config = function() - require("ts-node-action").setup({}) - - vim.keymap.set({ "n" }, "lA", require("ts-node-action").node_action, { desc = "Node Action" }) - end, + opts = {}, + keys = { + { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } + } }, { "Wansmer/treesj", diff --git a/config/nvim/lua/aleidk/plugins-ide/linters.lua b/config/nvim/lua/aleidk/plugins-ide/linters.lua index 4ab5fdb..424f370 100644 --- a/config/nvim/lua/aleidk/plugins-ide/linters.lua +++ b/config/nvim/lua/aleidk/plugins-ide/linters.lua @@ -8,10 +8,10 @@ return { lint.linters.gitlint.args = { "--contrib", "contrib-title-conventional-commits", "--msg-filename", "-" } lint.linters_by_ft = { - javascript = { "eslint_d" }, - typescript = { "eslint_d" }, - javascriptreact = { "eslint_d" }, - typescriptreact = { "eslint_d" }, + javascript = { "biomejs" }, + typescript = { "biomejs" }, + javascriptreact = { "biomejs" }, + typescriptreact = { "biomejs" }, -- astro = { "eslint_d" }, python = { "ruff" }, sh = { "shellcheck" }, diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index 553b256..2565d96 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -1,253 +1,214 @@ -return { { - -- LSP Configuration & Plugins - "neovim/nvim-lspconfig", - event = { "BufReadPost", "BufNewFile", "BufWritePre" }, - dependencies = { - -- Automatically install LSPs to stdpath for neovim - { "williamboman/mason.nvim" }, - "williamboman/mason-lspconfig.nvim", - -- Additional lua configuration, makes nvim stuff amazing! - { "folke/neodev.nvim", opts = {} }, +return { + -- LSP Plugins + { + -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins + -- used for completion, annotations and signatures of Neovim apis + 'folke/lazydev.nvim', + ft = 'lua', + opts = { + library = { + -- Load luvit types when the `vim.uv` word is found + { path = 'luvit-meta/library', words = { 'vim%.uv' } }, + }, + }, }, + { "Bilal2453/luvit-meta", lazy = true }, -- optional `vim.uv` typings + { + -- LSP Configuration & Plugins + "neovim/nvim-lspconfig", + event = { "BufReadPost", "BufNewFile", "BufWritePre" }, + dependencies = { + -- Automatically install LSPs to stdpath for neovim + { "williamboman/mason.nvim", config = true }, + "williamboman/mason-lspconfig.nvim", + }, - config = function() - -- LSP settings. - local on_attach = function(_, bufnr) - local nmap = function(keys, func, desc) - if desc then - desc = "LSP: " .. desc + config = function() + -- LSP settings. + local on_attach = function(_, bufnr) + local nmap = function(keys, func, desc) + if desc then + desc = "LSP: " .. desc + end + + vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc }) end - vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc }) + nmap("lr", vim.lsp.buf.rename, "Rename") + -- stylua: ignore + vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = bufnr, desc = "Code Action" }) + nmap("ld", vim.lsp.buf.type_definition, "Go to type definition") + nmap("lf", function() + vim.lsp.buf.format() + end, "Format") + + nmap("gd", vim.lsp.buf.definition, "Go to definition") + nmap("gr", require("telescope.builtin").lsp_references, "Goto References") + nmap("gI", vim.lsp.buf.implementation, "Go to Implementation") + + -- See `:help K` for why this keymap + nmap("K", vim.lsp.buf.hover, "Hover Documentation") + -- nmap("", vim.lsp.buf.signature_help, "Signature Documentation") + + -- Lesser used LSP functionality + nmap("gD", vim.lsp.buf.declaration, "Goto Declaration") + + nmap("lj", vim.diagnostic.goto_next, "Go to next diagnostic") + nmap("lk", vim.diagnostic.goto_prev, "Go to prev diagnostic") + nmap("lK", function() + -- execute twice to enter the float inmediatly + vim.diagnostic.open_float() + vim.diagnostic.open_float() + end, "Hover current diagnostic") + + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_) + vim.lsp.buf.format() + end, { desc = "Format current buffer with LSP" }) end - nmap("lr", vim.lsp.buf.rename, "Rename") - -- stylua: ignore - vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = bufnr, desc = "Code Action" }) - nmap("ld", vim.lsp.buf.type_definition, "Go to type definition") - nmap("lf", function() - vim.lsp.buf.format() - end, "Format") - - nmap("gd", vim.lsp.buf.definition, "Go to definition") - nmap("gr", require("telescope.builtin").lsp_references, "Goto References") - nmap("gI", vim.lsp.buf.implementation, "Go to Implementation") - - -- See `:help K` for why this keymap - nmap("K", vim.lsp.buf.hover, "Hover Documentation") - -- nmap("", vim.lsp.buf.signature_help, "Signature Documentation") - - -- Lesser used LSP functionality - nmap("gD", vim.lsp.buf.declaration, "Goto Declaration") - - nmap("lj", vim.diagnostic.goto_next, "Go to next diagnostic") - nmap("lk", vim.diagnostic.goto_prev, "Go to prev diagnostic") - nmap("lK", function() - -- execute twice to enter the float inmediatly - vim.diagnostic.open_float() - vim.diagnostic.open_float() - end, "Hover current diagnostic") - - -- Create a command `:Format` local to the LSP buffer - vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_) - vim.lsp.buf.format() - end, { desc = "Format current buffer with LSP" }) - end - - -- Enable the following language servers - -- To see options and cofigurations: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - local servers = { - astro = {}, - bashls = {}, - cssls = {}, - dockerls = {}, - emmet_ls = { - filetypes = { - "astro", - "css", - "eruby", - "html", - "htmldjango", - "javascriptreact", - "less", - "pug", - "sass", - "scss", - "svelte", - "typescriptreact", - "vue", - "htmlangular", - "php", - "blade" + -- Enable the following language servers + -- To see options and cofigurations: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md + local servers = { + astro = {}, + bashls = {}, + cssls = {}, + dockerls = {}, + emmet_ls = { + filetypes = { + "astro", + "css", + "eruby", + "html", + "htmldjango", + "javascriptreact", + "less", + "pug", + "sass", + "scss", + "svelte", + "typescriptreact", + "vue", + "htmlangular", + "php", + "blade" + }, }, - }, - html = {}, - ["nil_ls"] = {}, - marksman = {}, - pyright = {}, - phpactor = {}, - gopls = { - settings = { - gopls = { - completeUnimported = true, - usePlaceholders = true, - analyses = { - unusedparams = true, + html = {}, + marksman = {}, + pyright = {}, + phpactor = {}, + gopls = { + settings = { + gopls = { + completeUnimported = true, + usePlaceholders = true, + analyses = { + unusedparams = true, + }, }, }, }, - }, - ruff = {}, - rust_analyzer = { - settings = { - ["rust-analyzer"] = { - imports = { - granularity = { - group = "module", + ruff = {}, + rust_analyzer = { + settings = { + ["rust-analyzer"] = { + imports = { + granularity = { + group = "module", + }, + prefix = "self", }, - prefix = "self", - }, - cargo = { - buildScripts = { + cargo = { + buildScripts = { + enable = true, + }, + }, + procMacro = { enable = true, }, }, - procMacro = { - enable = true, - }, }, }, - }, - sqlls = {}, - yamlls = {}, - tsserver = { - init_options = { - preferences = { - disableSuggestions = true, - }, - }, - }, - lua_ls = { - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using - -- (most likely LuaJIT in the case of Neovim) - version = "LuaJIT", - }, - -- Make the server aware of Neovim runtime files - workspace = { - checkThirdParty = false, - library = { - vim.env.VIMRUNTIME, - -- "${3rd}/luv/library" - -- "${3rd}/busted/library", + sqlls = {}, + yamlls = {}, + lua_ls = { + settings = { + Lua = { + completion = { + callSnippet = 'Replace', }, + diagnostics = { disable = { 'missing-fields' } }, }, }, }, - }, - } + } - -- nvim-cmp supports additional completion capabilities, so broadcast that to servers - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) + -- nvim-cmp supports additional completion capabilities, so broadcast that to servers + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) - -- Ensure the servers above are installed - local mason_lspconfig = require("mason-lspconfig") + -- Ensure the servers above are installed + local mason_lspconfig = require("mason-lspconfig") - mason_lspconfig.setup({ - ensure_installed = vim.tbl_keys(servers), - -- automatic_installation = { exclude = { "astro", "phpactor", "rust_analyzer", "sqlls" } }, - automatic_installation = false, - }) + mason_lspconfig.setup({ + ensure_installed = vim.tbl_keys(servers), + automatic_installation = false, + }) - mason_lspconfig.setup_handlers({ - function(server_name) - local _border = "single" + mason_lspconfig.setup_handlers({ + function(server_name) + local _border = "single" - local default_config = { - capabilities = capabilities, - on_attach = on_attach, - handlers = { - ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - border = _border, - }), - ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { - border = _border, - max_width = 200, - max_height = 200, - focus = true, - }), - }, - } + local default_config = { + capabilities = capabilities, + on_attach = on_attach, + handlers = { + ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { + border = _border, + }), + ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { + border = _border, + max_width = 200, + max_height = 200, + focus = true, + }), + }, + } - require("lspconfig")[server_name].setup( - vim.tbl_deep_extend("force", default_config, servers[server_name] or {}) - ) - end, - }) - - vim.diagnostic.config({ - update_in_insert = false, - underline = true, - float = { - source = true - }, - virtual_text = { - severity = vim.diagnostic.severity.ERROR, - source = true, - spacing = -1, - prefix = nil, - format = function(diagnostic) - -- show small error code instead of whole error that probably won't fit in the screen - -- to see the whole error use other keybindings - return tostring(diagnostic.code) + require("lspconfig")[server_name].setup( + vim.tbl_deep_extend("force", default_config, servers[server_name] or {}) + ) end, - virt_text_hide = true - }, - severity_sort = true, - }) + }) - -- Customize gutter icons - local signs = require("aleidk.constants").icons.diagnostics - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) - end - end, -}, - - { - 'stevearc/aerial.nvim', - -- Optional dependencies - dependencies = { - "nvim-treesitter/nvim-treesitter", - "nvim-tree/nvim-web-devicons" - }, - opts = { - close_on_select = false, - show_guides = true, - autojump = true, - highlight_on_hover = true, - layout = { - default_direction = "float", - }, - float = { - relative = "editor", - }, - nav = { - preview = true, - keymaps = { - ["q"] = "actions.close", + vim.diagnostic.config({ + update_in_insert = false, + underline = true, + float = { + source = true }, - }, - }, + virtual_text = { + severity = vim.diagnostic.severity.ERROR, + source = true, + spacing = -1, + prefix = nil, + format = function(diagnostic) + -- show small error code instead of whole error that probably won't fit in the screen + -- to see the whole error use other keybindings + return tostring(diagnostic.code) + end, + virt_text_hide = true + }, + severity_sort = true, + }) - keys = { - { "ll", function() require("aerial").toggle() end, desc = "Open syntax tree" }, - { "lL", function() require("aerial").nav_toggle() end, desc = "Open syntax tree navigation" }, - { "fl", "Telescope aerial", desc = "Find in syntax tree" }, - } - } + -- Customize gutter icons + local signs = require("aleidk.constants").icons.diagnostics + for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) + end + end, + }, } diff --git a/config/nvim/lua/aleidk/plugins-ide/mason.lua b/config/nvim/lua/aleidk/plugins-ide/mason.lua deleted file mode 100644 index 181d119..0000000 --- a/config/nvim/lua/aleidk/plugins-ide/mason.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "williamboman/mason.nvim", - cmd = "Mason", - build = ":MasonUpdate", - opts = { - ensure_installed = {}, - }, -} diff --git a/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua b/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua index d4975cb..f62134c 100644 --- a/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua +++ b/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua @@ -1,6 +1,7 @@ return { "nosduco/remote-sshfs.nvim", dependencies = { "nvim-telescope/telescope.nvim" }, + cmd = { "RemoteSSHFSConnec" }, config = function() require("remote-sshfs").setup({}) require("telescope").load_extension("remote-sshfs") diff --git a/config/nvim/lua/aleidk/plugins-ide/task-runner.lua b/config/nvim/lua/aleidk/plugins-ide/task-runner.lua index 97b9d26..3af9f6d 100644 --- a/config/nvim/lua/aleidk/plugins-ide/task-runner.lua +++ b/config/nvim/lua/aleidk/plugins-ide/task-runner.lua @@ -19,13 +19,11 @@ local scroll_to_end = function(winid) winid = winid or 0 local bufnr = vim.api.nvim_win_get_buf(winid) local lnum = vim.api.nvim_buf_line_count(bufnr) - local last_line = vim.api.nvim_buf_get_lines(bufnr, -2, -1, true)[1] -- Hack: terminal buffers add a bunch of empty lines at the end. We need to ignore them so that -- we don't end up scrolling off the end of the useful output. local not_much_output = lnum < vim.o.lines + 6 if vim.bo[bufnr].buftype == "terminal" and not_much_output then lnum = term_get_effective_line_count(bufnr) - last_line = vim.api.nvim_buf_get_lines(bufnr, lnum - 1, lnum, true)[1] end local scrolloff = vim.api.nvim_get_option_value("scrolloff", { scope = "local", win = winid }) vim.api.nvim_set_option_value("scrolloff", 0, { scope = "local", win = winid }) @@ -57,22 +55,22 @@ end return { "stevearc/overseer.nvim", keys = { - { "pO", "OverseerQuickAction hsplit", desc = "Open task in a hsplit" }, + { "pO", "OverseerQuickAction hsplit", desc = "Open task in a hsplit" }, { "pQ", "OverseerQuickAction close winOverseerQuickAction dispose", desc = "Close and dispose task's windows", }, - { "pW", "OverseerQuickAction unwatch", desc = "Unwatch task" }, + { "pW", "OverseerQuickAction unwatch", desc = "Unwatch task" }, { "pf", "OverseerQuickAction open float", desc = "Open task in a float window" }, - { "pl", "OverseerLoadBundle", desc = "Load tasks" }, - { "pm", "OverseerTaskAction", desc = "Manage task" }, - { "po", "OverseerQuickAction vsplit", desc = "Open task in a vsplit" }, - { "pp", "OverseerRun", desc = "Run task" }, - { "pq", "OverseerQuickAction close win", desc = "Close task's windows" }, - { "ps", "OverseerSaveBundle", desc = "Save tasks" }, - { "pt", "OverseerToggle", desc = "Toggle tasks list" }, - { "pw", "OverseerQuickAction watch", desc = "Watch task" }, + { "pl", "OverseerLoadBundle", desc = "Load tasks" }, + { "pm", "OverseerTaskAction", desc = "Manage task" }, + { "po", "OverseerQuickAction vsplit", desc = "Open task in a vsplit" }, + { "pp", "OverseerRun", desc = "Run task" }, + { "pq", "OverseerQuickAction close win", desc = "Close task's windows" }, + { "ps", "OverseerSaveBundle", desc = "Save tasks" }, + { "pt", "OverseerToggle", desc = "Toggle tasks list" }, + { "pw", "OverseerQuickAction watch", desc = "Watch task" }, }, opts = { actions = { diff --git a/config/nvim/lua/aleidk/plugins-ide/trouble.lua b/config/nvim/lua/aleidk/plugins-ide/trouble.lua index 86b58a9..8b31a1c 100644 --- a/config/nvim/lua/aleidk/plugins-ide/trouble.lua +++ b/config/nvim/lua/aleidk/plugins-ide/trouble.lua @@ -1,24 +1,80 @@ return { "folke/trouble.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, - cmd = { "TroubleToggle", "Trouble" }, + cmd = { "Trouble" }, keys = { - { "fq", "TroubleToggle", desc = "Toggle trouble" }, - { "fd", "TroubleToggle workspace_diagnostics", desc = "Find diagnostics" }, { "fD", - "TroubleToggle document_diagnostics", - desc = "Find diagnostics in workspace", + "Trouble diagnostics open", + desc = "Find diagnostics (Trouble)", + }, + { + "fd", + "Trouble diagnostics open filter.buf=0", + desc = "Find buffer diagnostics (Trouble)", + }, + { + "ll", + "Trouble symbols open", + desc = "Symbols (Trouble)", + }, + { + "li", + "Trouble lsp open", + desc = "LSP info of node (Trouble)", + }, + { + "fq", + "Trouble qflist open", + desc = "Quickfix List (Trouble)", }, }, - config = function() - require("trouble").setup({ - mode = "document_diagnostics", - action_keys = { - open_split = "s", - open_vsplit = "v", - open_tab = "t", + opts = function() + ---@type trouble.Window.opts + local win_opts = { + -- size = { width = 30, height = 0.5 }, + minimal = true, + border = "rounded", + position = "bottom", + } + + ---@type trouble.Config + return { + focus = false, + + ---@type trouble.Window.opts + preview = { + type = "split", + relative = "win", + position = "top", }, - }) - end, + + ---@type table + keys = { + [""] = "jump_close", + ["<2-leftmouse>"] = "jump_close", + [""] = "jump_split_close", + [""] = "jump_vsplit_close", + ["v"] = "jump_split_close", + ["s"] = "jump_vsplit_close", + [""] = "cancel", -- hack to fool myself into thinking I move to the avobe window + }, + win = win_opts, + ---@type table + modes = { + symbols = { + focus = true, + win = win_opts + }, + lsp_references = { + focus = true, + win = win_opts + }, + lsp = { + focus = true, + win = win_opts + }, + } + } + end } From 1366b1d7b0a8a72fd13555067ec026c3cc5b01d1 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 22 Nov 2024 18:07:38 -0300 Subject: [PATCH 020/152] update thinkpad config --- .dotter/machines/fedora.toml | 12 +++++++++--- .dotter/pre_deploy.sh | 2 +- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.dotter/machines/fedora.toml b/.dotter/machines/fedora.toml index 368f1da..291e7c8 100644 --- a/.dotter/machines/fedora.toml +++ b/.dotter/machines/fedora.toml @@ -41,20 +41,26 @@ cli = [ dev = [ "gcc", "gcc-c++", + "just" "nodejs", "openssl", "openssl-devel", "tmux", "tree-sitter-cli", ] +[dev.variables.cargo.packages] +dev = [ + "cocogitto" +] + [zsh.variables.packages] -zssh = [ +zsh = [ "zsh" ] -[rust.variables] -cargo.packages = [ +[rust.variables.cargo.packages] +rust = [ "yazi-fm", "yazi-cli", ] diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh index 0778ecf..92715f8 100644 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -72,7 +72,7 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-mod {{#if (and dotter.packages.rust (ne (len cargo.packages) 0)) }} {{ header "Installing crates" }} -cargo install --locked {{# each cargo.packages }} "{{ this }}" {{ /each }} +cargo install --locked {{# each (flatten_table cargo.packages) }} "{{ this }}" {{ /each }} {{ /if }} From ec750a0e89924770b2a509c4f2ef0e262e439ceb Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 25 Nov 2024 10:46:43 -0300 Subject: [PATCH 021/152] change ai plugin to CopilotChat.nvim --- config/nvim/lazy-lock.json | 3 +- .../nvim/lua/aleidk/plugins-core/markdown.lua | 2 +- config/nvim/lua/aleidk/plugins-ide/ai.lua | 118 +++++++++++------- 3 files changed, 73 insertions(+), 50 deletions(-) diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 7171664..f9a1db0 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,6 +1,6 @@ { + "CopilotChat.nvim": { "branch": "canary", "commit": "df19e7ab15537436a26f59fa991f2fa81d847a0d" }, "LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" }, - "aerial.nvim": { "branch": "master", "commit": "ddd25f57e5205b36bc2e939c486b47818bef9ec3" }, "catppuccin": { "branch": "main", "commit": "637d99e638bc6f1efedac582f6ccab08badac0c6" }, "ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, @@ -10,7 +10,6 @@ "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, - "codecompanion.nvim": { "branch": "main", "commit": "ade8d29c94f6ad3c5b4ccf38517cec13126a6f0d" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, "conform.nvim": { "branch": "master", "commit": "0ebe875d9c306f5fc829db38492ffff2a70d8e9d" }, "copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" }, diff --git a/config/nvim/lua/aleidk/plugins-core/markdown.lua b/config/nvim/lua/aleidk/plugins-core/markdown.lua index 3fc9cbb..19e36a2 100644 --- a/config/nvim/lua/aleidk/plugins-core/markdown.lua +++ b/config/nvim/lua/aleidk/plugins-core/markdown.lua @@ -6,7 +6,7 @@ return { -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" }, -- if you prefer nvim-web-devicons opts = { - file_types = { 'markdown', 'codecompanion' }, + file_types = { 'markdown', 'copilot-chat' }, sign = { enabled = false, }, diff --git a/config/nvim/lua/aleidk/plugins-ide/ai.lua b/config/nvim/lua/aleidk/plugins-ide/ai.lua index 28abb89..f6e9df7 100644 --- a/config/nvim/lua/aleidk/plugins-ide/ai.lua +++ b/config/nvim/lua/aleidk/plugins-ide/ai.lua @@ -1,8 +1,10 @@ return { - "olimorris/codecompanion.nvim", + "CopilotC-Nvim/CopilotChat.nvim", + branch = "canary", + build = "make tiktoken", + cmd = "CopilotChat", dependencies = { "nvim-lua/plenary.nvim", - "nvim-treesitter/nvim-treesitter", { "zbirenbaum/copilot.lua", cmd = "Copilot", @@ -14,71 +16,93 @@ return { }) end, }, - "hrsh7th/nvim-cmp", -- Optional: For using slash commands and variables in the chat buffer - "nvim-telescope/telescope.nvim", -- Optional: For using slash commands - { "stevearc/dressing.nvim", opts = {} }, -- Optional: Improves `vim.ui.select` }, - opts = { - strategies = { - chat = { - adapter = "copilot", - }, - inline = { - adapter = "copilot", - }, - agent = { adapter = "copilot" }, - }, - display = { - action_palette = { - prompt = " " - }, - chat = { - window = { - layout = "float", - height = 0.8, - width = 0.8, + opts = function() + local user = vim.env.USER or "User" + user = user:sub(1, 1):upper() .. user:sub(2) + + return { + prompts = { + Explain = { + prompt = '> /COPILOT_EXPLAIN\n\nWrite an explanation for the selected code as paragraphs of text.', }, - } + Review = { + prompt = '> /COPILOT_REVIEW\n\nReview the selected code.', + -- see config.lua for implementation + }, + Fix = { + prompt = + '> /COPILOT_GENERATE\n\nThere is a problem in this code. Rewrite the code to show it with the bug fixed.', + }, + Optimize = { + prompt = '> /COPILOT_GENERATE\n\nOptimize the selected code to improve performance and readability.', + }, + Docs = { + prompt = '> /COPILOT_GENERATE\n\nPlease add documentation comments to the selected code.', + }, + Tests = { + prompt = '> /COPILOT_GENERATE\n\nPlease generate tests for my code.', + }, + Commit = { + prompt = + '> #git:staged\n\nWrite commit message for the change with commitizen convention. Make sure the title has maximum 50 characters and message is wrapped at 72 characters. Wrap the whole message in code block with language gitcommit.', + }, + }, + question_header = " " .. user .. " ", + answer_header = " Copilot ", + window = { + layout = 'float', -- 'vertical', 'horizontal', 'float', 'replace' + width = 0.8, -- fractional width of parent, or absolute width in columns when > 1 + height = 0.8, -- fractional height of parent, or absolute height in rows when > 1 + -- Options below only apply to floating windows + relative = 'editor', -- 'editor', 'win', 'cursor', 'mouse' + border = 'rounded', -- 'none', single', 'double', 'rounded', 'solid', 'shadow' + title = ' ', -- title of chat window + zindex = 1, -- determines if window is on top or below other floating windows + }, } - }, + end, keys = { { "at", function() - require("codecompanion").toggle() + require("CopilotChat").toggle() end, - desc = "Toggle AI chat", - mode = { "n", "v" } + desc = "Toggle window", + mode = { "n", "v" }, }, { "aa", - "CodeCompanion", - desc = "Run an inline prompt", - mode = { "n", "v" } + function() + local input = vim.fn.input("Quick Chat: ") + if input ~= "" then + require("CopilotChat").ask(input) + end + end, + desc = "Quick chat", + mode = { "n", "v" }, }, { "aA", function() - require("codecompanion").actions() + -- Pick a prompt using vim.ui.select + local actions = require("CopilotChat.actions") + + -- Pick prompt actions + actions.pick(actions.prompt_actions({ + selection = require("CopilotChat.select").visual, + })) end, - desc = "Open AI actions", - mode = { "n", "v" } + desc = "Select action", + mode = { "n", "v" }, }, { - "av", + "ax", function() - require("codecompanion").add() + return require("CopilotChat").reset() end, - desc = "Add visual selection to chat", - mode = "v" - }, - { - "ae", - function() - require("codecompanion").prompt("explain") - end, - desc = "Explain code", - mode = "v" + desc = "Clear chat", + mode = { "n", "v" }, }, } } From 6e2a88508c0d63cef5da2e2e53f01cd6bceb1fb7 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 25 Nov 2024 13:19:52 -0300 Subject: [PATCH 022/152] change completion plugin this was done to support dynamically enabling AI autosuggestion and is disabled by default --- .dotter/machines/fedora.toml | 2 +- config/nvim/lazy-lock.json | 12 +- config/nvim/lua/aleidk/constants.lua | 2 +- .../lua/aleidk/plugins-core/colorscheme.lua | 10 +- config/nvim/lua/aleidk/plugins-ide/ai.lua | 10 +- .../lua/aleidk/plugins-ide/completion.lua | 201 ++++++++---------- config/nvim/lua/aleidk/plugins-ide/lsp.lua | 3 +- 7 files changed, 114 insertions(+), 126 deletions(-) diff --git a/.dotter/machines/fedora.toml b/.dotter/machines/fedora.toml index 291e7c8..ee05f71 100644 --- a/.dotter/machines/fedora.toml +++ b/.dotter/machines/fedora.toml @@ -41,7 +41,7 @@ cli = [ dev = [ "gcc", "gcc-c++", - "just" + "just", "nodejs", "openssl", "openssl-devel", diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index f9a1db0..fb0acf6 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,18 +1,13 @@ { "CopilotChat.nvim": { "branch": "canary", "commit": "df19e7ab15537436a26f59fa991f2fa81d847a0d" }, "LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" }, + "blink-cmp-copilot": { "branch": "main", "commit": "e3eedf36ceda1932e296ec894de4ceea8ddeacb6" }, + "blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" }, + "blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" }, "catppuccin": { "branch": "main", "commit": "637d99e638bc6f1efedac582f6ccab08badac0c6" }, "ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, - "cmp-conventionalcommits": { "branch": "master", "commit": "a4dfacf0601130b7f8afa7c948d735c27802fb7f" }, - "cmp-git": { "branch": "main", "commit": "22116bdffbe68bfc6ca05d52e9f217587cbfea8b" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, "conform.nvim": { "branch": "master", "commit": "0ebe875d9c306f5fc829db38492ffff2a70d8e9d" }, - "copilot-cmp": { "branch": "master", "commit": "b6e5286b3d74b04256d0a7e3bd2908eabec34b44" }, "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, "copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" }, "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, @@ -33,7 +28,6 @@ "noice.nvim": { "branch": "main", "commit": "6263b6696811f0b11c88d8d2371134b1cc1762fc" }, "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, "nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" }, - "nvim-cmp": { "branch": "main", "commit": "a110e12d0b58eefcf5b771f533fc2cf3050680ac" }, "nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" }, "nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" }, "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, diff --git a/config/nvim/lua/aleidk/constants.lua b/config/nvim/lua/aleidk/constants.lua index 0d9495c..52cdd9f 100644 --- a/config/nvim/lua/aleidk/constants.lua +++ b/config/nvim/lua/aleidk/constants.lua @@ -29,7 +29,7 @@ return { Color = " ", Constant = " ", Constructor = " ", - Copilot = " ", + Copilot = " ", Enum = " ", EnumMember = " ", Event = " ", diff --git a/config/nvim/lua/aleidk/plugins-core/colorscheme.lua b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua index ff0bf3f..92a58d4 100644 --- a/config/nvim/lua/aleidk/plugins-core/colorscheme.lua +++ b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua @@ -7,17 +7,15 @@ return { -- Change colors.none if not using a transparent background transparent_background = true, integrations = { aerial = true, + blink_cmp = true, cmp = true, - notify = true, harpoon = false, + indent_blankline = { enabled = true, scope_color = "text", }, + lsp_trouble = true, mason = true, neogit = true, noice = true, - lsp_trouble = true, - indent_blankline = { - enabled = true, - scope_color = "text", - }, + notify = true, }, custom_highlights = function(colors) return { diff --git a/config/nvim/lua/aleidk/plugins-ide/ai.lua b/config/nvim/lua/aleidk/plugins-ide/ai.lua index f6e9df7..aa9a4c1 100644 --- a/config/nvim/lua/aleidk/plugins-ide/ai.lua +++ b/config/nvim/lua/aleidk/plugins-ide/ai.lua @@ -12,8 +12,15 @@ return { config = function() require("copilot").setup({ suggestion = { enabled = false }, - panel = { enabled = true, auto_refresh = true }, + panel = { enabled = false }, }) + + vim.g.copilot_autocomplete_enabled = false + + vim.api.nvim_create_user_command("CopilotToggleAutocomplete", function() + vim.g.copilot_autocomplete_enabled = not vim.g.copilot_autocomplete_enabled + print("Copilot autocompletion: " .. tostring(vim.g.copilot_autocomplete_enabled)) + end, { desc = "Toggle Copilot autocompletion" }) end, }, }, @@ -62,6 +69,7 @@ return { }, } end, + keys = { { "at", diff --git a/config/nvim/lua/aleidk/plugins-ide/completion.lua b/config/nvim/lua/aleidk/plugins-ide/completion.lua index a267bfd..d46396b 100644 --- a/config/nvim/lua/aleidk/plugins-ide/completion.lua +++ b/config/nvim/lua/aleidk/plugins-ide/completion.lua @@ -1,120 +1,107 @@ ----@diagnostic disable: missing-fields return { - "hrsh7th/nvim-cmp", - version = false, -- last release is way too old - event = "InsertEnter", + "saghen/blink.cmp", + lazy = false, + version = "*", dependencies = { - "L3MON4D3/LuaSnip", - "davidsierradz/cmp-conventionalcommits", - "hrsh7th/cmp-buffer", - "hrsh7th/cmp-cmdline", - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-path", - "petertriho/cmp-git", - "saadparwaiz1/cmp_luasnip", - "windwp/nvim-autopairs", - { - "zbirenbaum/copilot-cmp", - config = function() - require("copilot_cmp").setup() - end - }, + "rafamadriz/friendly-snippets", + "giuxtaposition/blink-cmp-copilot", + "folke/lazydev.nvim", + { "saghen/blink.compat", version = "*", }, }, - config = function() - vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true }) - local cmp = require("cmp") - - local cmp_autopairs = require("nvim-autopairs.completion.cmp") - cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) - - local defaults = require("cmp.config.default")() - local window_opts = { + opts = function() + local window_options = { border = "rounded", - side_padding = 1, - -- fix colors for catppuccin colorscheme - winhighlight = "Normal:Pmenu,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None", + winblend = vim.o.pumblend, } - local opts = { - visible_docs = false, - completion = { - completeopt = "menu,menuone,noinsert", + + ---@module 'blink.cmp' + ---@type blink.cmp.Config + return { + sources = { + providers = { + dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" }, + lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, + copilot = { + name = "copilot", + module = "blink-cmp-copilot", + score_offset = 5, + enabled = function() + if vim.g.copilot_autocomplete_enabled == nil then + return false + end + return vim.g.copilot_autocomplete_enabled + end, + }, + luasnip = { + name = 'luasnip', + module = 'blink.compat.source', + score_offset = -3, + opts = { + use_show_condition = false, + show_autosnippets = true, + }, + }, + }, + -- nvim-cmp sources + compat = {}, + completion = { + enabled_providers = { + "copilot", + "lsp", + "path", + "snippets", + "buffer", + "dadbod", + "lazydev", + }, + }, }, - snippet = { - expand = function(args) - require("luasnip").lsp_expand(args.body) - end, + accept = { + auto_brackets = { enabled = true }, + expand_snippet = function(snippet) require('luasnip').lsp_expand(snippet) end, }, - mapping = cmp.mapping.preset.insert({ - [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), - [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), - [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), - [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = function() - if cmp.visible_docs() then - cmp.close_docs() - else - cmp.open_docs() - end - end, - [""] = cmp.mapping.complete(), - [""] = cmp.mapping.abort(), - ["
"] = cmp.mapping.abort(), - [""] = cmp.mapping.confirm({ select = false }), -- Confirm only if selected an item - [""] = cmp.mapping.confirm({ - -- Auto confirms first item - behavior = cmp.ConfirmBehavior.Replace, - select = true, + trigger = { signature_help = { enabled = true } }, + keymap = { + preset = "enter", + [""] = { 'scroll_documentation_up', 'fallback' }, + [""] = { 'scroll_documentation_down', 'fallback' }, + }, + highlight = { + -- sets the fallback highlight groups to nvim-cmp's highlight groups + -- useful for when your theme doesn't support blink.cmp + -- will be removed in a future release, assuming themes add support + use_nvim_cmp_as_default = false, + }, + -- set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font' + -- adjusts spacing to ensure icons are aligned + nerd_font_variant = "mono", + windows = { + autocomplete = vim.tbl_extend("force", window_options, { + selection = "manual", + ---@type blink.cmp.Draw + draw = { + components = { + kind_icon = { + text = function(ctx) + if ctx.item.source_name == "copilot" then + ctx.kind_icon = require("aleidk.constants").icons.kinds.Copilot + end + + return ctx.kind_icon .. ctx.icon_gap + end, + } + } + } + }), + documentation = vim.tbl_extend("force", window_options, { + auto_show = true, + winblend = 0, }), - }), - sources = cmp.config.sources({ - { name = "conventionalcommits" }, - { name = "copilot" }, - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "buffer" }, - { name = "path" }, - }), - formatting = { - fields = { "kind", "abbr", "menu" }, - format = function(_, item) - local icons = require("aleidk.constants").icons.kinds - if icons[item.kind] then - item.kind = icons[item.kind] .. item.kind - end - return item - end, - }, - window = { - completion = cmp.config.window.bordered(window_opts), - documentation = cmp.config.window.bordered(window_opts), - }, - experimental = { ghost_text = { - hl_group = "CmpGhostText", - }, - }, - sorting = { - priority_weight = 2, - comparators = { - require("copilot_cmp.comparators").prioritize, - - -- Below is the default comparitor list and order for nvim-cmp - cmp.config.compare.offset, - -- cmp.config.compare.scopes, --this is commented in nvim-cmp too - cmp.config.compare.exact, - cmp.config.compare.score, - cmp.config.compare.recently_used, - cmp.config.compare.locality, - cmp.config.compare.kind, - cmp.config.compare.sort_text, - cmp.config.compare.length, - cmp.config.compare.order, + enabled = true, }, }, + kind_icons = require("aleidk.constants").icons.kinds, } - - cmp.setup(opts) - end, + end } diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index 2565d96..fd35eea 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -21,6 +21,7 @@ return { -- Automatically install LSPs to stdpath for neovim { "williamboman/mason.nvim", config = true }, "williamboman/mason-lspconfig.nvim", + { 'saghen/blink.cmp' } -- autocompletion }, config = function() @@ -146,7 +147,7 @@ return { -- nvim-cmp supports additional completion capabilities, so broadcast that to servers local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) + capabilities = require("blink.cmp").get_lsp_capabilities(capabilities) -- Ensure the servers above are installed local mason_lspconfig = require("mason-lspconfig") From 75cfaf54a4b5468555603ba2bc8a7e823683806d Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 25 Nov 2024 16:23:52 -0300 Subject: [PATCH 023/152] create custom prompt for AI chat --- config/nvim/lua/aleidk/plugins-ide/ai.lua | 149 ++++++++++++++-------- 1 file changed, 99 insertions(+), 50 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins-ide/ai.lua b/config/nvim/lua/aleidk/plugins-ide/ai.lua index aa9a4c1..a4f2f00 100644 --- a/config/nvim/lua/aleidk/plugins-ide/ai.lua +++ b/config/nvim/lua/aleidk/plugins-ide/ai.lua @@ -24,52 +24,76 @@ return { end, }, }, - opts = function() - local user = vim.env.USER or "User" - user = user:sub(1, 1):upper() .. user:sub(2) + opts = + ---@type CopilotChat.config + { + ---@type table + prompts = { + HowDoI = { + system_prompt = [[ + > /COPILOT_EXPLAIN - return { - prompts = { - Explain = { - prompt = '> /COPILOT_EXPLAIN\n\nWrite an explanation for the selected code as paragraphs of text.', - }, - Review = { - prompt = '> /COPILOT_REVIEW\n\nReview the selected code.', - -- see config.lua for implementation - }, - Fix = { - prompt = - '> /COPILOT_GENERATE\n\nThere is a problem in this code. Rewrite the code to show it with the bug fixed.', - }, - Optimize = { - prompt = '> /COPILOT_GENERATE\n\nOptimize the selected code to improve performance and readability.', - }, - Docs = { - prompt = '> /COPILOT_GENERATE\n\nPlease add documentation comments to the selected code.', - }, - Tests = { - prompt = '> /COPILOT_GENERATE\n\nPlease generate tests for my code.', - }, - Commit = { - prompt = - '> #git:staged\n\nWrite commit message for the change with commitizen convention. Make sure the title has maximum 50 characters and message is wrapped at 72 characters. Wrap the whole message in code block with language gitcommit.', - }, - }, - question_header = " " .. user .. " ", - answer_header = " Copilot ", - window = { - layout = 'float', -- 'vertical', 'horizontal', 'float', 'replace' - width = 0.8, -- fractional width of parent, or absolute width in columns when > 1 - height = 0.8, -- fractional height of parent, or absolute height in rows when > 1 - -- Options below only apply to floating windows - relative = 'editor', -- 'editor', 'win', 'cursor', 'mouse' - border = 'rounded', -- 'none', single', 'double', 'rounded', 'solid', 'shadow' - title = ' ', -- title of chat window - zindex = 1, -- determines if window is on top or below other floating windows - }, - } - end, + You are gonna be asked for guidance about how to solve a problem or archeive a goal. For that your answers need to follow these rules: + 1. Provide brief, consice and unambiguos responses. + 2. You need to response with an step by step list of actions needed to complete the task. + 3. **You never have to give an explicit answer**, instead provide a high level overview of how to complete the task. + 4. Unless explicity asked by the user, **you never have to provide code snippets** in your responses. Only provide code snippets when the user says so in each question. + 5. If the user ask for a code snippet, **prefer to respond in pseudo code**, unless the user explicity asked for a concrete language. + 6. You need to have into consideration good and clean code practices, code performance and other standards, comunicate in your response this considerations and common pitfalls to avoid. + 7. If possible, include how the user can test the task is completed successfully with the title "## Testing". + 8. Use markdawn syntax highlighting when possible. + 9. You are allowed to reference the following elements but without giving examples of usage (unless the user ask for it): + - Elements from the language syntaxis. + - Standard library of the lenguage. + - External libraries and/or frameworks. + - The idiomatic way of acomplish something in the language. + - Data structures and algorithms that could help complete the task. + + If you have multiple aproaches of how the task can be solved, insert the title "## Options", then generate separate list of task, each in the form of "### Option A", "### Option B", etc so he/her can have it into consideration. + The numbering of each list needs to be independen of each other, also provide only 1 list per aproach. + + The user can ask follow up question, which needs to follow the same rules. + ]] + }, + Explain = { + prompt = '> /COPILOT_EXPLAIN\n\nWrite an explanation for the selected code as paragraphs of text.', + }, + Review = { + prompt = '> /COPILOT_REVIEW\n\nReview the selected code.', + -- see config.lua for implementation + }, + Fix = { + prompt = + '> /COPILOT_GENERATE\n\nThere is a problem in this code. Rewrite the code to show it with the bug fixed.', + }, + Optimize = { + prompt = '> /COPILOT_GENERATE\n\nOptimize the selected code to improve performance and readability.', + }, + Docs = { + prompt = '> /COPILOT_GENERATE\n\nPlease add documentation comments to the selected code.', + }, + Tests = { + prompt = '> /COPILOT_GENERATE\n\nPlease generate tests for my code.', + }, + Commit = { + prompt = + '> #git:staged\n\nWrite commit message for the change with commitizen convention. Make sure the title has maximum 50 characters and message is wrapped at 72 characters. Wrap the whole message in code block with language gitcommit.', + }, + }, + question_header = " " .. vim.env.USER or "User" .. " ", + answer_header = " Copilot ", + window = { + layout = 'float', -- 'vertical', 'horizontal', 'float', 'replace' + width = 0.8, -- fractional width of parent, or absolute width in columns when > 1 + height = 0.8, -- fractional height of parent, or absolute height in rows when > 1 + -- Options below only apply to floating windows + relative = 'editor', -- 'editor', 'win', 'cursor', 'mouse' + border = 'rounded', -- 'none', single', 'double', 'rounded', 'solid', 'shadow' + title = ' ', -- title of chat window + zindex = 1, -- determines if window is on top or below other floating windows + }, + }, keys = { { "at", @@ -82,14 +106,31 @@ return { { "aa", function() - local input = vim.fn.input("Quick Chat: ") - if input ~= "" then - require("CopilotChat").ask(input) + local input = vim.fn.input(" Quick Chat: ") + if input == "" then + return end + require("CopilotChat").ask(input) end, desc = "Quick chat", mode = { "n", "v" }, }, + { + "ah", + function() + local input = vim.fn.input(" How do I...") + if input == "" then + return + end + + local chat = require("CopilotChat") + + local promptConfig = chat.prompts()["HowDoI"] + chat.ask(input, promptConfig) + end, + desc = "How do I...", + mode = { "n", "v" }, + }, { "aA", function() @@ -97,9 +138,10 @@ return { local actions = require("CopilotChat.actions") -- Pick prompt actions - actions.pick(actions.prompt_actions({ - selection = require("CopilotChat.select").visual, - })) + actions.pick(actions.prompt_actions({}), { + prompt = " Prompts:", + } + ) end, desc = "Select action", mode = { "n", "v" }, @@ -112,5 +154,12 @@ return { desc = "Clear chat", mode = { "n", "v" }, }, + { + "al", + function() + return require("CopilotChat").log_level("debug") + end, + desc = "Set debug level", + }, } } From 29574b6e365bc17f4bdfafa8ae81eec7e7e69ba6 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 25 Nov 2024 17:47:34 -0300 Subject: [PATCH 024/152] fix compat issues with vim-dadbod-completion --- config/nvim/lazy-lock.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index fb0acf6..2d93562 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -10,12 +10,12 @@ "conform.nvim": { "branch": "master", "commit": "0ebe875d9c306f5fc829db38492ffff2a70d8e9d" }, "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, "copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" }, - "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, + "dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" }, "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, - "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, - "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, - "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, + "grapple.nvim": { "branch": "main", "commit": "7aedc261b05a6c030397c4bc26416efbe746ebf1" }, + "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, + "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" }, "lazydev.nvim": { "branch": "main", "commit": "d5800897d9180cea800023f2429bce0a94ed6064" }, "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, @@ -31,7 +31,7 @@ "nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" }, "nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" }, "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, - "nvim-treesitter": { "branch": "master", "commit": "cd2acc803b9e2f9377fb31fbeb993f6e363466f5" }, + "nvim-treesitter": { "branch": "master", "commit": "7f4ac678770175cdf0d42c015f4a5b6e18b6cb33" }, "nvim-treesitter-context": { "branch": "master", "commit": "f56a1430f21334868a86eb980b12e0af55690e98" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" }, "nvim-ts-autotag": { "branch": "main", "commit": "323a3e16ed603e2e17b26b1c836d1e86c279f726" }, @@ -45,12 +45,12 @@ "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "todo-comments.nvim": { "branch": "main", "commit": "d61567557e2ff5c548c74e96b2d9f8d33e5fcb34" }, - "treesj": { "branch": "main", "commit": "6e8bd008bacd5ad001c3953017c1dca20709e915" }, + "treesj": { "branch": "main", "commit": "0d81326b5afd36babe7dd480aabbb0b05f33e688" }, "trouble.nvim": { "branch": "main", "commit": "03c1fbf518bef683422a3be9643c3da190903488" }, "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, "typescript-tools.nvim": { "branch": "master", "commit": "5da4d695d66f676eb6ea766b946e86f93baaafe7" }, "undotree": { "branch": "master", "commit": "56c684a805fe948936cda0d1b19505b84ad7e065" }, - "vim-dadbod": { "branch": "master", "commit": "fe5a55e92b2dded7c404006147ef97fb073d8b1b" }, + "vim-dadbod": { "branch": "master", "commit": "7888cb7164d69783d3dce4e0283decd26b82538b" }, "vim-dadbod-completion": { "branch": "master", "commit": "da0e75c09c27a82aad078d993bb1b2f4afd43427" }, "vim-dadbod-ui": { "branch": "master", "commit": "f74a31e8c6c5a9dccc63450a09d5cd64a9294330" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, From d2fbfc551e2f5c999ae4ccf8eb8c4ccabff76fac Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 27 Nov 2024 10:17:09 -0300 Subject: [PATCH 025/152] update notifications plugins --- config/nvim/lua/aleidk/lazy.lua | 2 +- config/nvim/lua/aleidk/plugins-base/ui.lua | 30 ++++++++++++++++++++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/config/nvim/lua/aleidk/lazy.lua b/config/nvim/lua/aleidk/lazy.lua index 31c475e..9327f45 100644 --- a/config/nvim/lua/aleidk/lazy.lua +++ b/config/nvim/lua/aleidk/lazy.lua @@ -27,7 +27,7 @@ require("lazy").setup({ }, install = { colorscheme = { "catppuccin" } }, - checker = { enabled = true }, + -- checker = { enabled = true }, }) return { diff --git a/config/nvim/lua/aleidk/plugins-base/ui.lua b/config/nvim/lua/aleidk/plugins-base/ui.lua index 1ef7277..b587ebb 100644 --- a/config/nvim/lua/aleidk/plugins-base/ui.lua +++ b/config/nvim/lua/aleidk/plugins-base/ui.lua @@ -1,4 +1,22 @@ +local icons = require("aleidk.constants").icons + return { + { + "rcarriga/nvim-notify", + opts = { + render = "compact", + fps = "60", + timeout = 2000, + stages = "slide", + icons = { + DEBUG = "", + TRACE = "✎", + ERROR = icons.diagnostics.Error, + INFO = icons.diagnostics.Info, + WARN = icons.diagnostics.Warn, + } + } + }, { -- better imputs "stevearc/dressing.nvim", @@ -16,6 +34,7 @@ return { "MunifTanjim/nui.nvim", "rcarriga/nvim-notify", }, + ---@type NoiceConfig opts = { presets = { bottom_search = true, @@ -40,6 +59,7 @@ return { view = "mini_left" } }, + ---@type NoiceRouteConfig[] routes = { { -- Don't show these messages @@ -53,13 +73,18 @@ return { { event = "msg_show", kind = "", - find = "written", + find = "written", -- file saved msg }, { event = "msg_show", kind = "", find = "yazi.nvim", }, + { + event = "msg_show", + kind = "", + find = "%d+ (more|fewer) lines", -- undo/redo msg + }, } }, }, @@ -68,7 +93,7 @@ return { event = "notify", min_height = 15 }, - view = 'popup' + view = 'popup', }, { filter = { @@ -78,6 +103,7 @@ return { view = 'mini' }, }, + ---@type NoiceConfigViews views = { notify = { merge = true From 26fafff8e2881b7424654eeeb5b9fc3d142dafca Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 27 Nov 2024 10:17:25 -0300 Subject: [PATCH 026/152] open bookmarks on nvim-enter --- .../lua/aleidk/plugins-base/bookmarks.lua | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/config/nvim/lua/aleidk/plugins-base/bookmarks.lua b/config/nvim/lua/aleidk/plugins-base/bookmarks.lua index fe3a1a2..54b941a 100644 --- a/config/nvim/lua/aleidk/plugins-base/bookmarks.lua +++ b/config/nvim/lua/aleidk/plugins-base/bookmarks.lua @@ -15,6 +15,30 @@ return { }, lazy = false, cmd = "Grapple", + config = function() + -- Open graple window when open without arguments + local g = vim.api.nvim_create_augroup('Grapple-User', { clear = true }) + + vim.api.nvim_create_autocmd('StdinReadPre', { + group = g, + callback = function() + vim.g.read_from_stdin = 1 + end, + }) + + vim.api.nvim_create_autocmd('UIEnter', { + group = g, + callback = function() + if + vim.fn.argc() == 0 + and vim.api.nvim_buf_get_name(0) == '' + and vim.g.read_from_stdin == nil + then + require("grapple").toggle_tags() + end + end, + }) + end, keys = { { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, { "D", "Grapple reset", desc = "Delete all bookmarks" }, From 343b59a5920920533cfdbe39079cf2226b52ed1c Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 27 Nov 2024 14:49:39 -0300 Subject: [PATCH 027/152] update neovim plugins --- config/nvim/lazy-lock.json | 88 +++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 2d93562..aac2ace 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,59 +1,59 @@ { - "CopilotChat.nvim": { "branch": "canary", "commit": "df19e7ab15537436a26f59fa991f2fa81d847a0d" }, - "LuaSnip": { "branch": "master", "commit": "ce0a05ab4e2839e1c48d072c5236cce846a387bc" }, + "CopilotChat.nvim": { "branch": "canary", "commit": "3968c25e9418a544d5faa3c242d577526b0710e7" }, + "LuaSnip": { "branch": "master", "commit": "0f7bbce41ea152a94d12aea286f2ce98e63c0f58" }, "blink-cmp-copilot": { "branch": "main", "commit": "e3eedf36ceda1932e296ec894de4ceea8ddeacb6" }, "blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" }, "blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" }, - "catppuccin": { "branch": "main", "commit": "637d99e638bc6f1efedac582f6ccab08badac0c6" }, - "ccc.nvim": { "branch": "main", "commit": "4fb5abaef2f2e0540fe22d4d74a9841205fff9e4" }, + "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, + "ccc.nvim": { "branch": "main", "commit": "7c639042583c7bdc7ce2e37e5a0e0aa6d0659c6a" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "0ebe875d9c306f5fc829db38492ffff2a70d8e9d" }, + "conform.nvim": { "branch": "master", "commit": "a203480a350b03092e473bf3001733d547160a73" }, "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, "copilot.lua": { "branch": "master", "commit": "f8d8d872bb319f640d5177dad5fbf01f7a16d7d0" }, - "dressing.nvim": { "branch": "master", "commit": "6741f1062d3dc6e4755367a7e9b347b553623f04" }, - "friendly-snippets": { "branch": "main", "commit": "45a1b96e46efe5fce8af325d4bed45feb9d29d0f" }, - "gitsigns.nvim": { "branch": "main", "commit": "e9c4187c3774a46df2d086a66cf3a7e6bea4c432" }, - "grapple.nvim": { "branch": "main", "commit": "7aedc261b05a6c030397c4bc26416efbe746ebf1" }, - "indent-blankline.nvim": { "branch": "master", "commit": "65e20ab94a26d0e14acac5049b8641336819dfc7" }, - "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" }, - "lazydev.nvim": { "branch": "main", "commit": "d5800897d9180cea800023f2429bce0a94ed6064" }, - "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, + "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, + "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, + "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, + "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, + "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, + "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, + "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, + "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "37a336b653f8594df75c827ed589f1c91d91ff6c" }, - "mason.nvim": { "branch": "main", "commit": "f96a31855fa8aea55599cea412fe611b85a874ed" }, - "mini.clue": { "branch": "main", "commit": "08f792869781b4bfdfcaa55eb905b9635c0a243f" }, - "mini.comment": { "branch": "main", "commit": "c8406379987c321ecdef9f53e1ca741a55002104" }, - "mini.surround": { "branch": "main", "commit": "3cb5b509ad34f2402df4b977be607a614c8c7524" }, - "neogen": { "branch": "main", "commit": "0daffcec249bf42275e322361fe55b89a05ff278" }, - "noice.nvim": { "branch": "main", "commit": "6263b6696811f0b11c88d8d2371134b1cc1762fc" }, - "nui.nvim": { "branch": "main", "commit": "61574ce6e60c815b0a0c4b5655b8486ba58089a1" }, - "nvim-autopairs": { "branch": "master", "commit": "78a4507bb9ffc9b00f11ae0ac48243d00cb9194d" }, - "nvim-lint": { "branch": "master", "commit": "efc6fc83f0772283e064c53a8f9fb5645bde0bc0" }, - "nvim-lspconfig": { "branch": "master", "commit": "216deb2d1b5fbf24398919228208649bbf5cbadf" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "43894adcf10bb1190c2184bd7c1750e8ea2b3dce" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "mini.clue": { "branch": "main", "commit": "8e329f586a7cfd06085859066a4b60965fc4ecce" }, + "mini.comment": { "branch": "main", "commit": "03c13e37318bdb18481311c0ac1adc9ed731caf1" }, + "mini.surround": { "branch": "main", "commit": "0e67c4bc147f2a15cee94e7c94dcc0e115b9f55e" }, + "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" }, + "noice.nvim": { "branch": "main", "commit": "c6f6fb178ebe9b4fd90383de743c3399f8c3a37c" }, + "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, + "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, + "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, + "nvim-lspconfig": { "branch": "master", "commit": "4ae9796c4e95ca84ec77946a9f9089b8f1a3eec9" }, "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, - "nvim-treesitter": { "branch": "master", "commit": "7f4ac678770175cdf0d42c015f4a5b6e18b6cb33" }, - "nvim-treesitter-context": { "branch": "master", "commit": "f56a1430f21334868a86eb980b12e0af55690e98" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "34867c69838078df7d6919b130c0541c0b400c47" }, - "nvim-ts-autotag": { "branch": "main", "commit": "323a3e16ed603e2e17b26b1c836d1e86c279f726" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "6b5f95aa4d24f2c629a74f2c935c702b08dbde62" }, - "nvim-web-devicons": { "branch": "master", "commit": "c0cfc1738361b5da1cd0a962dd6f774cc444f856" }, - "overseer.nvim": { "branch": "master", "commit": "15b6249eaf71ebbc8bf0ed279e045f2bc1f28007" }, - "plenary.nvim": { "branch": "master", "commit": "a3e3bc82a3f95c5ed0d7201546d5d2c19b20d683" }, - "remote-sshfs.nvim": { "branch": "main", "commit": "8f05563150fbd713027471eed56f391b053ba8b8" }, - "render-markdown": { "branch": "main", "commit": "123048b428eb85618780fcef9ea9f4d68b5d2508" }, - "smart-splits.nvim": { "branch": "master", "commit": "95833675cd92538bf9cded1d2d58d1fc271c5428" }, + "nvim-treesitter": { "branch": "master", "commit": "8d4fdc5e47e2a4e00179e43f56221250ce365973" }, + "nvim-treesitter-context": { "branch": "master", "commit": "6b081ea63a3711243d11540ce28ccdb6f35ecd33" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, + "nvim-ts-autotag": { "branch": "main", "commit": "e239a560f338be31337e7abc3ee42515daf23f5e" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, + "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, + "overseer.nvim": { "branch": "master", "commit": "10ee48ff96c8d1049efb278ea4c8cf9f3b0e4326" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "remote-sshfs.nvim": { "branch": "main", "commit": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d" }, + "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, + "smart-splits.nvim": { "branch": "master", "commit": "d8b0e772a0244169534b1fd57c1660c9bf323d26" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "todo-comments.nvim": { "branch": "main", "commit": "d61567557e2ff5c548c74e96b2d9f8d33e5fcb34" }, - "treesj": { "branch": "main", "commit": "0d81326b5afd36babe7dd480aabbb0b05f33e688" }, - "trouble.nvim": { "branch": "main", "commit": "03c1fbf518bef683422a3be9643c3da190903488" }, + "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, + "treesj": { "branch": "main", "commit": "03415ac60791d48e120a80d37e080744faf3ac15" }, + "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, - "typescript-tools.nvim": { "branch": "master", "commit": "5da4d695d66f676eb6ea766b946e86f93baaafe7" }, - "undotree": { "branch": "master", "commit": "56c684a805fe948936cda0d1b19505b84ad7e065" }, - "vim-dadbod": { "branch": "master", "commit": "7888cb7164d69783d3dce4e0283decd26b82538b" }, + "typescript-tools.nvim": { "branch": "master", "commit": "346062e8cd06e82776b60785a040dfbbdcb6de77" }, + "undotree": { "branch": "master", "commit": "78b5241191852ffa9bb5da5ff2ee033160798c3b" }, + "vim-dadbod": { "branch": "master", "commit": "fe5a55e92b2dded7c404006147ef97fb073d8b1b" }, "vim-dadbod-completion": { "branch": "master", "commit": "da0e75c09c27a82aad078d993bb1b2f4afd43427" }, - "vim-dadbod-ui": { "branch": "master", "commit": "f74a31e8c6c5a9dccc63450a09d5cd64a9294330" }, + "vim-dadbod-ui": { "branch": "master", "commit": "28a16902cb2134c934b85da5250033ee43b0dee5" }, "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, - "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, - "yazi.nvim": { "branch": "main", "commit": "faa03e9acb894533b91c811d0dafd816b995088f" } + "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, + "yazi.nvim": { "branch": "main", "commit": "053867916a9be3cb46f84b6f095ee731bbddd213" } } From c421ab7b8fc27d2f0e7f761d1a1c7f4b5d8a9832 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 27 Nov 2024 18:23:07 -0300 Subject: [PATCH 028/152] minor update --- config/nvim/lua/aleidk/plugins-ide/completion.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/nvim/lua/aleidk/plugins-ide/completion.lua b/config/nvim/lua/aleidk/plugins-ide/completion.lua index d46396b..de47bb6 100644 --- a/config/nvim/lua/aleidk/plugins-ide/completion.lua +++ b/config/nvim/lua/aleidk/plugins-ide/completion.lua @@ -63,6 +63,8 @@ return { trigger = { signature_help = { enabled = true } }, keymap = { preset = "enter", + [""] = { 'select_next', 'fallback' }, + [""] = { 'select_prev', 'fallback' }, [""] = { 'scroll_documentation_up', 'fallback' }, [""] = { 'scroll_documentation_down', 'fallback' }, }, From f7c229fcf681c017750ee6a33cdf8f248c9434e1 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 27 Nov 2024 19:13:12 -0300 Subject: [PATCH 029/152] add no-ff to global git config --- config/git/config | 2 ++ 1 file changed, 2 insertions(+) diff --git a/config/git/config b/config/git/config index 65fa801..faff1ec 100644 --- a/config/git/config +++ b/config/git/config @@ -10,5 +10,7 @@ path = ~/.config/git/config-work [merge] autoStash = true + edit = no + ff = no [rebase] autoStash = true From e17b1607bf1857e01bae5cac2a3f7abb9abe8aa8 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 28 Nov 2024 10:53:53 -0300 Subject: [PATCH 030/152] minor-update --- config/nvim/lua/aleidk/plugins-base/bookmarks.lua | 5 ++++- config/nvim/lua/aleidk/plugins-core/telescope.lua | 12 ++---------- config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua | 2 +- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins-base/bookmarks.lua b/config/nvim/lua/aleidk/plugins-base/bookmarks.lua index 54b941a..239a03b 100644 --- a/config/nvim/lua/aleidk/plugins-base/bookmarks.lua +++ b/config/nvim/lua/aleidk/plugins-base/bookmarks.lua @@ -16,6 +16,9 @@ return { lazy = false, cmd = "Grapple", config = function() + local telescope = require("telescope") + telescope.load_extension("grapple") + -- Open graple window when open without arguments local g = vim.api.nvim_create_augroup('Grapple-User', { clear = true }) @@ -34,7 +37,7 @@ return { and vim.api.nvim_buf_get_name(0) == '' and vim.g.read_from_stdin == nil then - require("grapple").toggle_tags() + telescope.extensions.grapple.tags() end end, }) diff --git a/config/nvim/lua/aleidk/plugins-core/telescope.lua b/config/nvim/lua/aleidk/plugins-core/telescope.lua index ad89cf6..a520cf0 100644 --- a/config/nvim/lua/aleidk/plugins-core/telescope.lua +++ b/config/nvim/lua/aleidk/plugins-core/telescope.lua @@ -22,8 +22,7 @@ return { defaults = { prompt_prefix = " ", selection_caret = " ", - layout_strategy = "vertical", - layout_config = { vertical = { height = 0.99, mirror = true, prompt_position = "top" } }, + layout_strategy = "flex", mappings = { i = { [""] = actions.preview_scrolling_up, @@ -37,6 +36,7 @@ return { [""] = actions.send_selected_to_qflist + actions.open_qflist, [""] = require("trouble.sources.telescope").open, [""] = require("trouble.sources.telescope").open, + [""] = actions.which_key, }, }, }, @@ -45,15 +45,7 @@ return { -- Enable telescope fzf native, if installed pcall(telescope.load_extension, "fzf") - pcall(telescope.load_extension, "aerial") - -- Find files - vim.keymap.set( - "n", - "fe", - ":Telescope file_browser path=%:p:h select_buffer=true", - { desc = "File Explorer" } - ) vim.keymap.set("n", "fb", builtin.buffers, { desc = "Find buffers" }) vim.keymap.set("n", "ff", builtin.find_files, { desc = "Find files" }) vim.keymap.set("n", "fF", function() diff --git a/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua b/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua index f62134c..c5727cc 100644 --- a/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua +++ b/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua @@ -1,7 +1,7 @@ return { "nosduco/remote-sshfs.nvim", dependencies = { "nvim-telescope/telescope.nvim" }, - cmd = { "RemoteSSHFSConnec" }, + cmd = { "RemoteSSHFSConnect" }, config = function() require("remote-sshfs").setup({}) require("telescope").load_extension("remote-sshfs") From 658808b8209cfcac5fc11259be18c9506fa06e1f Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 28 Nov 2024 10:59:26 -0300 Subject: [PATCH 031/152] remove oudated configuration and files --- .gitmodules | 0 chezmoi/.chezmoi.toml.tmpl | 10 - chezmoi/.chezmoiexternal.toml | 32 -- chezmoi/.chezmoiignore | 5 - .../run_once_after_setup_wol.sh.tmpl | 23 -- .../run_once_setup_gtk_theme.sh.tmpl | 19 -- .../run_onchange_bootstrap.tmpl | 46 --- config/hypr/executable_gdm-wrapper.sh | 39 --- config/hypr/hyprland.conf | 158 ---------- config/hypr/hyprpaper.conf | 4 - config/mako/config | 11 - config/php-cs-fixer-conf.php | 5 - config/pycodestyle | 2 - config/river/executable_init | 10 - config/river/init.lua | 40 --- config/river/logger.lua | 49 --- config/river/river.lua | 80 ----- config/swappy/config | 10 - config/sway/config | 283 ------------------ config/sway/executable_autorotate | 61 ---- config/sway/executable_lock.sh | 16 - config/sway/executable_sway-bar.sh | 13 - config/sway/themes/catppuccin/.keep | 0 config/waybar/config | 160 ---------- config/waybar/style.css | 179 ----------- config/waybar/themes/catppuccin/LICENSE | 21 -- config/waybar/themes/catppuccin/README.md | 79 ----- .../catppuccin/assets/empty_dot_gitkeep | 0 .../themes/catppuccin/assets/frappe.webp | Bin 3218 -> 0 bytes .../themes/catppuccin/assets/latte.webp | Bin 3502 -> 0 bytes .../themes/catppuccin/assets/macchiato.webp | Bin 3196 -> 0 bytes .../themes/catppuccin/assets/mocha.webp | Bin 3210 -> 0 bytes .../themes/catppuccin/assets/preview.webp | Bin 22584 -> 0 bytes .../themes/catppuccin/dot_catppuccin.yaml | 26 -- .../waybar/themes/catppuccin/dot_editorconfig | 34 --- config/waybar/themes/catppuccin/dot_git | 1 - .../themes/catppuccin/themes/frappe.css | 37 --- .../waybar/themes/catppuccin/themes/latte.css | 37 --- .../themes/catppuccin/themes/macchiato.css | 37 --- .../waybar/themes/catppuccin/themes/mocha.css | 37 --- config/zk/config.toml | 205 ------------- exports/Gnome Extensions | 1 - exports/flatpak-apps.txt | 19 -- exports/gnome-minimal.json | 1 - 44 files changed, 1790 deletions(-) delete mode 100644 .gitmodules delete mode 100644 chezmoi/.chezmoi.toml.tmpl delete mode 100644 chezmoi/.chezmoiexternal.toml delete mode 100644 chezmoi/.chezmoiignore delete mode 100644 chezmoi/.chezmoiscripts/run_once_after_setup_wol.sh.tmpl delete mode 100644 chezmoi/.chezmoiscripts/run_once_setup_gtk_theme.sh.tmpl delete mode 100644 chezmoi/.chezmoiscripts/run_onchange_bootstrap.tmpl delete mode 100644 config/hypr/executable_gdm-wrapper.sh delete mode 100644 config/hypr/hyprland.conf delete mode 100644 config/hypr/hyprpaper.conf delete mode 100644 config/mako/config delete mode 100644 config/php-cs-fixer-conf.php delete mode 100644 config/pycodestyle delete mode 100644 config/river/executable_init delete mode 100644 config/river/init.lua delete mode 100644 config/river/logger.lua delete mode 100644 config/river/river.lua delete mode 100644 config/swappy/config delete mode 100644 config/sway/config delete mode 100644 config/sway/executable_autorotate delete mode 100644 config/sway/executable_lock.sh delete mode 100644 config/sway/executable_sway-bar.sh delete mode 100644 config/sway/themes/catppuccin/.keep delete mode 100644 config/waybar/config delete mode 100644 config/waybar/style.css delete mode 100644 config/waybar/themes/catppuccin/LICENSE delete mode 100644 config/waybar/themes/catppuccin/README.md delete mode 100644 config/waybar/themes/catppuccin/assets/empty_dot_gitkeep delete mode 100644 config/waybar/themes/catppuccin/assets/frappe.webp delete mode 100644 config/waybar/themes/catppuccin/assets/latte.webp delete mode 100644 config/waybar/themes/catppuccin/assets/macchiato.webp delete mode 100644 config/waybar/themes/catppuccin/assets/mocha.webp delete mode 100644 config/waybar/themes/catppuccin/assets/preview.webp delete mode 100644 config/waybar/themes/catppuccin/dot_catppuccin.yaml delete mode 100644 config/waybar/themes/catppuccin/dot_editorconfig delete mode 100644 config/waybar/themes/catppuccin/dot_git delete mode 100644 config/waybar/themes/catppuccin/themes/frappe.css delete mode 100644 config/waybar/themes/catppuccin/themes/latte.css delete mode 100644 config/waybar/themes/catppuccin/themes/macchiato.css delete mode 100644 config/waybar/themes/catppuccin/themes/mocha.css delete mode 100644 config/zk/config.toml delete mode 100644 exports/Gnome Extensions delete mode 100644 exports/flatpak-apps.txt delete mode 100644 exports/gnome-minimal.json diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index e69de29..0000000 diff --git a/chezmoi/.chezmoi.toml.tmpl b/chezmoi/.chezmoi.toml.tmpl deleted file mode 100644 index bc7f2a9..0000000 --- a/chezmoi/.chezmoi.toml.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -{{- $osid := .chezmoi.os -}} -{{- if hasKey .chezmoi.osRelease "id" -}} -{{- $osid = printf "%s-%s" .chezmoi.os .chezmoi.osRelease.id -}} -{{- end -}} - -[data] - osid = {{ $osid | quote }} - hasGui = {{ promptBoolOnce . "hasGui" "Does this machine needs gui configs/apps?" }} - hasWOL = {{ promptBoolOnce . "hasWOL" "Does this machine WOL?" }} - openAIKey = {{ promptStringOnce . "openAIKey" "Enter Open AI key for chatGPT integration (or leave blank)" | quote }} diff --git a/chezmoi/.chezmoiexternal.toml b/chezmoi/.chezmoiexternal.toml deleted file mode 100644 index 7067d6a..0000000 --- a/chezmoi/.chezmoiexternal.toml +++ /dev/null @@ -1,32 +0,0 @@ -[".local/share/zinit"] - type = "git-repo" - url = "https://github.com/zdharma-continuum/zinit.git" - refreshPeriod = "168h" - -[".config/alacritty/themes/catppuccin/catppuccin-macchiato.toml"] - type = "file" - url = "https://raw.githubusercontent.com/catppuccin/alacritty/main/catppuccin-macchiato.toml" - refreshPeriod = "168h" - -[".config/bat/themes/Catppuccin-macchiato.tmTheme"] - # Run "bat cache --build" to make the theme available - type = "file" - url = "https://github.com/catppuccin/bat/raw/main/themes/Catppuccin%20Macchiato.tmTheme" - refreshPeriod = "168h" - -["Repos/Source/xdg-ninja"] - type = "git-repo" - url = "https://github.com/b3nj5m1n/xdg-ninja.git" - refreshPeriod = "168h" - -[".local/bin/sesh"] - type = "archive-file" - url = "https://github.com/joshmedeski/sesh/releases/latest/download/sesh_Linux_x86_64.tar.gz" - path = "sesh" - refreshPeriod = "168h" - -[".local/bin/zk"] - type = "archive-file" - url = "https://github.com/zk-org/zk/releases/latest/download/zk-v0.14.1-linux-amd64.tar.gz" - path = "zk" - refreshPeriod = "168h" diff --git a/chezmoi/.chezmoiignore b/chezmoi/.chezmoiignore deleted file mode 100644 index 18fae4d..0000000 --- a/chezmoi/.chezmoiignore +++ /dev/null @@ -1,5 +0,0 @@ -**/original_* -.config/lazygit/state.yml - -config/tmux/plugins/* -!config/tmux/plugins/.gitkeep diff --git a/chezmoi/.chezmoiscripts/run_once_after_setup_wol.sh.tmpl b/chezmoi/.chezmoiscripts/run_once_after_setup_wol.sh.tmpl deleted file mode 100644 index e543e79..0000000 --- a/chezmoi/.chezmoiscripts/run_once_after_setup_wol.sh.tmpl +++ /dev/null @@ -1,23 +0,0 @@ -{{- if eq .hasWOL true -}} -#!/usr/bin/env bash - -set -e - -# run as sudo so it ask for the password here and not inside FZF -sudo echo -e "\nSetting up wol...\n" - -interface="$( - nmcli --fields name --terse con show | - fzf \ - --height 10 \ - --header 'Select network interface' \ - --preview 'nmcli c show {} | grep 802-3-ethernet.wake-on-lan' -)" - -if [[ -z "$interface" ]]; then - echo "no interface selected" - exit -fi -nmcli c modify "$interface" 802-3-ethernet.wake-on-lan magic -nmcli c modify "$interface" 802-3-ethernet.auto-negotiate yes -{{ end }} diff --git a/chezmoi/.chezmoiscripts/run_once_setup_gtk_theme.sh.tmpl b/chezmoi/.chezmoiscripts/run_once_setup_gtk_theme.sh.tmpl deleted file mode 100644 index b138e5f..0000000 --- a/chezmoi/.chezmoiscripts/run_once_setup_gtk_theme.sh.tmpl +++ /dev/null @@ -1,19 +0,0 @@ -{{- if eq .hasGui true -}} -#!/usr/bin/env bash - -# ╭──────────────────────────────────────────────────────────╮ -# │ Setup Catppuccin GTK theme │ -# ╰──────────────────────────────────────────────────────────╯ - -set -e - -tmp_dir="$(mktemp -d)" - -cd "$tmp_dir" - -curl -LsS "https://raw.githubusercontent.com/catppuccin/gtk/main/install.py" -o install.py - -python3 install.py macchiato teal - -rm -rf "$tmp_dir" -{{ end }} diff --git a/chezmoi/.chezmoiscripts/run_onchange_bootstrap.tmpl b/chezmoi/.chezmoiscripts/run_onchange_bootstrap.tmpl deleted file mode 100644 index df9d632..0000000 --- a/chezmoi/.chezmoiscripts/run_onchange_bootstrap.tmpl +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash - -set -e - -NO_FORMAT="\033[0m" -C_DODGERBLUE1="\033[38;5;33m" -echo -e "${C_DODGERBLUE1}Installing packages...${NO_FORMAT}" - -{{- if eq .osid "darwin" }} -# macOS-specific code -{{- else if eq .osid "linux-debian" }} -# Debian-specific code -{{- else if eq .osid "linux-fedora" }} - - # ╭──────────────────────────────────────────────────────────╮ - # │ Add COPR repos │ - # ╰──────────────────────────────────────────────────────────╯ - - sudo dnf install -yq 'dnf-command(copr)' - - {{ range .packages.dnf.copr -}} - sudo dnf copr enable -y {{ . | quote }} &> /dev/null - {{ end -}} - - # ╭──────────────────────────────────────────────────────────╮ - # │ Install DNF packages │ - # ╰──────────────────────────────────────────────────────────╯ - - sudo dnf install -y {{ range .packages.dnf.packages }} {{ . | quote }} {{- end -}} - -{{ end }} - -# ╭──────────────────────────────────────────────────────────╮ -# │ Install Rust │ -# ╰──────────────────────────────────────────────────────────╯ - -curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-modify-path --default-toolchain stable - -rustup update - -# ╭──────────────────────────────────────────────────────────╮ -# │ Install Cargo Packages │ -# ╰──────────────────────────────────────────────────────────╯ - -cargo install {{ range .packages.cargo }} {{ . | quote }} {{- end -}} - diff --git a/config/hypr/executable_gdm-wrapper.sh b/config/hypr/executable_gdm-wrapper.sh deleted file mode 100644 index 3b0982d..0000000 --- a/config/hypr/executable_gdm-wrapper.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/sh - -if [ "x$XDG_SESSION_TYPE" = "xwayland" ] && - [ "x$XDG_SESSION_CLASS" != "xgreeter" ] && - [ -n "$SHELL" ] && - grep -q "$SHELL" /etc/shells && - ! (echo "$SHELL" | grep -q "false") && - ! (echo "$SHELL" | grep -q "nologin"); then - if [ "$1" != '-l' ]; then - exec bash -c "exec -l '$SHELL' -c '$0 -l $*'" - else - shift - fi -fi - -SETTING=$(G_MESSAGES_DEBUG='' gsettings get org.gnome.system.locale region) -REGION=${SETTING#\'} -REGION=${REGION%\'} - -if [ -n "$REGION" ]; then - unset LC_TIME LC_NUMERIC LC_MONETARY LC_MEASUREMENT LC_PAPER - - if [ "$LANG" != "$REGION" ]; then - # LC_CTYPE - export LC_NUMERIC=$REGION - export LC_TIME=$REGION - # LC_COLLATE - export LC_MONETARY=$REGION - # LC_MESSAGES - export LC_PAPER=$REGION - # LC_NAME - export LC_ADDRESS=$REGION - export LC_TELEPHONE=$REGION - export LC_MEASUREMENT=$REGION - # LC_IDENTIFICATION - fi -fi - -exec Hyprland diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf deleted file mode 100644 index b484ab6..0000000 --- a/config/hypr/hyprland.conf +++ /dev/null @@ -1,158 +0,0 @@ -# -# Please note not all available settings / options are set here. -# For a full list, see the wiki -# - -# See https://wiki.hyprland.org/Configuring/Monitors/ -monitor=,highrr,auto,1 - -# Execute your favorite apps at launch -exec-once = waybar & hyprpaper - -# Source a file (multi-file configs) -# source = ~/.config/hypr/myColors.conf - -# Some default env vars. -env = XCURSOR_SIZE,24 - -# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ -input { - kb_layout = latam - kb_variant = - kb_model = - kb_options = caps:escape - kb_rules = - - follow_mouse = 1 - - touchpad { - natural_scroll = true - } - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - -general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - gaps_in = 5 - gaps_out = 10 - border_size = 2 - col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg - col.inactive_border = rgba(595959aa) - - layout = dwindle -} - -decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - rounding = 10 - drop_shadow = true - shadow_range = 4 - shadow_render_power = 3 - col.shadow = rgba(1a1a1aee) - - blur { - enabled = true - size = 3 - passes = 1 - new_optimizations = true - } -} - -animations { - enabled = true - - # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more - - bezier = myBezier, 0.05, 0.9, 0.1, 1.05 - - animation = windows, 1, 7, myBezier - animation = windowsOut, 1, 7, default, popin 80% - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = workspaces, 1, 6, default -} - -dwindle { - # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = true # you probably want this -} - -master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - new_is_master = true -} - -gestures { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - workspace_swipe = true - workspace_swipe_invert = false -} - -# Example per-device config -# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more -device:epic-mouse-v1 { - sensitivity = -0.5 -} - -# Example windowrule v1 -# windowrule = float, ^(kitty)$ -# Example windowrule v2 -# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ -# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more - - -# See https://wiki.hyprland.org/Configuring/Keywords/ for more -$mainMod = SUPER - -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, Q, exec, alacritty -bind = $mainMod, C, killactive, -bind = $mainMod, M, exit, -bind = $mainMod, E, exec, dolphin -bind = $mainMod, V, togglefloating, -bind = $mainMod, D, exec, wofi --show drun -bind = $mainMod, P, pseudo, # dwindle -bind = $mainMod, J, togglesplit, # dwindle - -# Move focus with mainMod + arrow keys -bind = $mainMod, h, movefocus, l -bind = $mainMod, j, movefocus, d -bind = $mainMod, k, movefocus, u -bind = $mainMod, l, movefocus, r - -# Switch workspaces with mainMod + [0-9] -bind = $mainMod, 1, workspace, 1 -bind = $mainMod, 2, workspace, 2 -bind = $mainMod, 3, workspace, 3 -bind = $mainMod, 4, workspace, 4 -bind = $mainMod, 5, workspace, 5 -bind = $mainMod, 6, workspace, 6 -bind = $mainMod, 7, workspace, 7 -bind = $mainMod, 8, workspace, 8 -bind = $mainMod, 9, workspace, 9 -bind = $mainMod, 0, workspace, 10 - -# Move active window to a workspace with mainMod + SHIFT + [0-9] -bind = $mainMod SHIFT, 1, movetoworkspace, 1 -bind = $mainMod SHIFT, 2, movetoworkspace, 2 -bind = $mainMod SHIFT, 3, movetoworkspace, 3 -bind = $mainMod SHIFT, 4, movetoworkspace, 4 -bind = $mainMod SHIFT, 5, movetoworkspace, 5 -bind = $mainMod SHIFT, 6, movetoworkspace, 6 -bind = $mainMod SHIFT, 7, movetoworkspace, 7 -bind = $mainMod SHIFT, 8, movetoworkspace, 8 -bind = $mainMod SHIFT, 9, movetoworkspace, 9 -bind = $mainMod SHIFT, 0, movetoworkspace, 10 - -# Scroll through existing workspaces with mainMod + scroll -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow - diff --git a/config/hypr/hyprpaper.conf b/config/hypr/hyprpaper.conf deleted file mode 100644 index e71274d..0000000 --- a/config/hypr/hyprpaper.conf +++ /dev/null @@ -1,4 +0,0 @@ -preload = ~/Pictures/wallpaper.jpg - -#set the default wallpaper(s) seen on inital workspace(s) --depending on the number of monitors used -wallpaper = ,~/Pictures/wallpaper.jpg diff --git a/config/mako/config b/config/mako/config deleted file mode 100644 index 1b7531f..0000000 --- a/config/mako/config +++ /dev/null @@ -1,11 +0,0 @@ -default-timeout=5000 - -# Colors - -background-color=#24273a -text-color=#cad3f5 -border-color=#8aadf4 -progress-color=over #363a4f - -[urgency=high] -border-color=#f5a97f diff --git a/config/php-cs-fixer-conf.php b/config/php-cs-fixer-conf.php deleted file mode 100644 index d9bed33..0000000 --- a/config/php-cs-fixer-conf.php +++ /dev/null @@ -1,5 +0,0 @@ -setIndent(" "); diff --git a/config/pycodestyle b/config/pycodestyle deleted file mode 100644 index 62e7381..0000000 --- a/config/pycodestyle +++ /dev/null @@ -1,2 +0,0 @@ -[pycodestyle] -max-line-length = 100 diff --git a/config/river/executable_init b/config/river/executable_init deleted file mode 100644 index 4f28cd0..0000000 --- a/config/river/executable_init +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -# Wrapper for launching the configuration from lua. This will add the river -# directory to the LUA_PATH global variable so the configuration can be -# splitted into multiple files - -config_dir="${XDG_CONFIG_HOME:-$HOME/.config}/river" -export LUA_PATH="$config_dir/?.lua;$config_dir/?/init.lua;$LUA_PATH" - -lua "$config_dir"/init.lua diff --git a/config/river/init.lua b/config/river/init.lua deleted file mode 100644 index cd73a7c..0000000 --- a/config/river/init.lua +++ /dev/null @@ -1,40 +0,0 @@ -local River = require('river') -local Logger = require('logger') - -local logger = Logger:new() -logger:log( - [[ - +---------------------------------------------------------+ - | Initializing River... | - +---------------------------------------------------------+ - ]] -) - -local config = { - -} - -local river = River:new() -print(type(river)) - -river:set_bg("$HOME/Pictures/Minimalist__cron.png") - --- ╭─────────────────────────────────────────────────────────╮ --- │ Keymaps │ --- ╰─────────────────────────────────────────────────────────╯ - -local mods = river.keys.modifiers -river:map { mods.super, "Return", "spawn kitty" } -river:map { mods.super_shift, "q", "exit" } - --- river:exec("rivertile -view-padding 2 -outer-padding 2 -main-ratio 0.5 -main-count 1 &") - -local cmds = { - "waybar", -} - -for _, cmd in ipairs(cmds) do - river:spawn(cmd) -end - -logger:close() diff --git a/config/river/logger.lua b/config/river/logger.lua deleted file mode 100644 index 4f43c93..0000000 --- a/config/river/logger.lua +++ /dev/null @@ -1,49 +0,0 @@ ---- Logger interface ----@class Logger ----@field available_outputs table Available outputs to use in the logger ----@field output file* The open file to write to -local Logger = { - available_outputs = { - stdout = io.stdout - }, - output = io.stdout -} - -Logger.__index = Logger - ---- Create a new logger instance ----@param output? file* io.stdout by default, [see Logger.available_outputs](lua://Logger.available_outputs) for possible values ----@return Logger -function Logger:new(output) - local obj = { - output = output or Logger.available_outputs.stdout - } - - setmetatable(obj, self) - self.__index = self - - self:open() - - return obj -end - -function Logger:open() - self:log("\n\n") - self:log("Opening logger...\n") -end - -function Logger:close() - self:log("Closing logger...") - self:log("\n\n") - self.output:close() -end - ---- Write data to ouput, it passes the arguments directly to file:write(...) ----@param ... string|number the data to write -function Logger:log(...) - self.output:write(...) - self.output:write("\n") - self.output:flush() -end - -return Logger diff --git a/config/river/river.lua b/config/river/river.lua deleted file mode 100644 index 5cbc9e4..0000000 --- a/config/river/river.lua +++ /dev/null @@ -1,80 +0,0 @@ ----@enum Modifiers -local modifiers = { - super = "Super ", - ctrl = "Control ", - shift = "Shift ", - alt = "Alt ", - - super_shift = "Super+Shift ", - super_ctrl = "Super+Control ", - super_ctrl_shift = "Super+Control+Shift ", - - ctrl_shift = "Control+Shift ", - - none = "None ", -} - - ---- Wrapper around the riverctl cmd ----@class River -local River = { - cmds = { - background = "swaybg -i %s" - }, - keys = { - modifiers = modifiers - } -} - -River.__index = River - ---- River class constructor ----@param new? River to override properties ----@return River -function River:new(new) - local obj = new or {} - - setmetatable(obj, self) - self.__index = self - - return obj -end - ---- Exec an arbitrary system command ----@param cmd string the command to execute ----@private ----@return string? -function River:exec(cmd) - os.execute(cmd) -end - ---- Execute the given command with riverctl spawn ----@param cmd string the command to execute -function River:spawn(cmd) - self:exec(string.format([[riverctl spawn "%s"]], cmd)) -end - ---- Set a new wallpaper with the default cmds.background ----@param path string The path to the image -function River:set_bg(path) - self:spawn(string.format(self.cmds.background, path)) -end - ----@class MapArgs ----@field [1] Modifiers The modifier to use ----@field [2] string ----@field [3] string ----@field mode? ("normal"|"locked")[], } - ---- Create a new mapping ---- @param args MapArgs -function River:map(args) - local modes = args.mode or { "normal" } - - for _, mode in ipairs(modes) do - local map = string.format([[riverctl map %s %s %s %s]], mode, args[1], args[2], args[3]) - self:exec(map) - end -end - -return River diff --git a/config/swappy/config b/config/swappy/config deleted file mode 100644 index d0fa954..0000000 --- a/config/swappy/config +++ /dev/null @@ -1,10 +0,0 @@ -[Default] -save_dir=$HOME/Pictures -save_filename_format=screenshot-%Y%m%d-%H%M%S.png -show_panel=true -line_size=5 -text_size=20 -text_font=sans-serif -paint_mode=arrow -early_exit=true -fill_shape=false diff --git a/config/sway/config b/config/sway/config deleted file mode 100644 index 8e7d066..0000000 --- a/config/sway/config +++ /dev/null @@ -1,283 +0,0 @@ - -### Variables -# -# Logo key. Use Mod1 for Alt. -set $mod Mod4 - -# Home row direction keys, like vim -set $left h -set $down j -set $up k -set $right l - -# Your preferred terminal emulator -set $term alacritty - -# Your preferred application launcher -# Note: pass the final command to swaymsg so that the resulting window can be opened -# on the original workspace that the command was run on. -set $menu bemenu-run -iw -l 20 -P '>' -p 'Open:' \ ---fn "JetBrainsMono 13" \ ---ab "#24273add" \ ---af "#f4dbd6" \ ---fb "#24273add" \ ---ff "#8bd5ca" \ ---hb "#24273add" \ ---hf "#a6da95" \ ---nb "#24273add" \ ---nf "#f4dbd6" \ ---nf "#f4dbd6" \ ---tb "#24273add" \ ---tf "#c6a0f6dd" \ ---scb "#24273add" \ ---scf "#c6a0f6" - -### Output configuration -# -# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/) -output * bg ~/Pictures/wallpaper.png fill -# -# Example configuration: -# -# output HDMI-A-1 resolution 1920x1080 position 1920,0 -# -# You can get the names of your outputs by running: swaymsg -t get_outputs - -### Idle configuration -# -# Example configuration: -# -exec swayidle -w \ - timeout 300 'systemctl suspend' \ - before-sleep '~/.config/sway/lock.sh' - -# This will lock your screen after 300 seconds of inactivity, then turn off -# your displays after another 300 seconds, and turn your screens back on when -# resumed. It will also lock your screen before your computer goes to sleep. - -### Input configuration -# -# Example configuration: -# -input "type:touchpad" { - dwt enabled - tap enabled - natural_scroll enabled - middle_emulation enabled -} - -input "type:keyboard" { - xkb_layout latam - xkb_options caps:escape -} -# -# You can get the names of your inputs by running: swaymsg -t get_inputs -# Read `man 5 sway-input` for more information about this section. - -### Key bindings -# -# Basics: -# - # Start a terminal - bindsym $mod+Return exec $term - - # Kill focused window - bindsym $mod+Shift+q kill - - # Start your launcher - bindsym $mod+d exec $menu - - # 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 - - # Exit sway (logs you out of your Wayland session) - bindsym $mod+Shift+e 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+r reload -# -# 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+bar workspace back_and_forth - 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. -# -# Layout stuff: -# - - # Switch the current container between different layout styles - bindsym $mod+s layout stacking - bindsym $mod+w layout tabbed - bindsym $mod+v layout toggle split - - # Make the current focus fullscreen - bindsym $mod+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 - -# -# System: -# - # screenshot current window - bindsym print exec grim -g "$(swaymsg -t get_tree | jq -j '.. | select(.type?) | select(.focused).rect | "\(.x),\(.y) \(.width)x\(.height)"')" - | wl-copy - # screenshot area - bindsym print+shift exec grim -g "$(slurp)" - | wl-copy - # screenshot area and edit it - bindsym print+ctrl exec grim -g "$(slurp)" - | swappy -f - - - bindsym XF86AudioRaiseVolume exec wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ - bindsym XF86AudioLowerVolume exec wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- - bindsym XF86AudioMute exec wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle - bindsym XF86AudioMicMute exec wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle - bindsym XF86AudioPlay exec playerctl play-pause - bindsym XF86AudioNext exec playerctl next - bindsym XF86AudioPrev exec playerctl previous - bindsym XF86MonBrightnessUp exec brightnessctl set +5% - bindsym XF86MonBrightnessDown exec brightnessctl set 5%- - - -# -# 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" - -# -# Status Bar: -# -# Read `man 5 sway-bar` for more information about this section. -bar { - position top - - swaybar_command waybar - - colors { - statusline #ffffff - background #323232 - inactive_workspace #32323200 #32323200 #5c5c5c - } -} - -# Start Stuff - -# create a master stack layout -exec_always autotiling -l 2 -exec dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY SWAYSOCK -exec mako - -# Auto rotate screen -# 1 option uses accelerometer (requires iio-sensors-proxy) -# 2 option uses tablet events - -# exec monitor-sensor | bash $DOTS/config/sway/autorotate &> /tmp/autorotate.log -bindswitch tablet:toggle output "eDP-1" transform 180 clockwise ; input "type:touch" map_to_output "eDP-1" ; input "type:tablet_tool" map_to_output "eDP-1" -# bindswitch tablet:on busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b true -# bindswitch tablet:off busctl call --user sm.puri.OSK0 /sm/puri/OSK0 sm.puri.OSK0 SetVisible b false - -bindgesture swipe:left workspace prev -bindgesture swipe:right workspace next -bindgesture swipe:up scratchpad show - -gaps inner 10 -gaps outer 2 -default_border pixel 2 -smart_borders on -default_floating_border pixel 2 - -xwayland enable - -include ./themes/catppuccin/themes/catppuccin-macchiato - -# target title bg text indicator border -client.focused $teal $base $text $teal $teal -client.focused_inactive $base $base $text $base $base -client.unfocused $base $base $text $base $base -client.urgent $peach $base $peach $peach $peach -client.placeholder $overlay0 $base $text $overlay0 $overlay0 -client.background $base diff --git a/config/sway/executable_autorotate b/config/sway/executable_autorotate deleted file mode 100644 index b734d9c..0000000 --- a/config/sway/executable_autorotate +++ /dev/null @@ -1,61 +0,0 @@ - -#!/bin/bash - -# This script handles rotation of the screen and related input devices automatically -# using the output of the monitor-sensor command (part of the iio-sensor-proxy package) -# for sway. -# The target screen and input device names should be configured in the below variables. -# Note: input devices using the libinput driver (e.g. touchscreens) should be included -# in the WAYLANDINPUT array. -# -# You can get a list of input devices with the `swaymsg -t output` command. -# -# This scritp was frok from https://gitlab.com/snippets/1793649 by Fishonadish - - -SCREEN="eDP-1" -WAYLANDINPUT=( - "type:mouse" - "type:touchpad" - "type:tablet_tool" - "type:touch" -) - - -function rotate_ms { - case $1 in - "normal") - rotate 0 - ;; - "right-up") - rotate 90 - ;; - "bottom-up") - rotate 180 - ;; - "left-up") - rotate 270 - ;; - esac -} - -function rotate { - - TARGET_ORIENTATION=$1 - - echo "Rotating to" $TARGET_ORIENTATION - - swaymsg output $SCREEN transform $TARGET_ORIENTATION - - for i in "${WAYLANDINPUT[@]}" - do - swaymsg input "$i" map_to_output "$SCREEN" - done - -} - -while IFS='$\n' read -r line; do - rotation="$(echo $line | sed -En "s/^.*orientation changed: (.*)/\1/p")" - [[ ! -z $rotation ]] && rotate_ms $rotation -done < <(stdbuf -oL monitor-sensor) - diff --git a/config/sway/executable_lock.sh b/config/sway/executable_lock.sh deleted file mode 100644 index 2cef125..0000000 --- a/config/sway/executable_lock.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env bash - -swaylock \ - --screenshots \ - --clock \ - --indicator \ - --indicator-radius 100 \ - --indicator-thickness 7 \ - --effect-blur 7x5 \ - --effect-vignette 0.5:0.5 \ - --ring-color 3b4252 \ - --key-hl-color 880033 \ - --line-color 00000000 \ - --inside-color 00000088 \ - --separator-color 00000000 \ - --grace 2 diff --git a/config/sway/executable_sway-bar.sh b/config/sway/executable_sway-bar.sh deleted file mode 100644 index ffc6ce1..0000000 --- a/config/sway/executable_sway-bar.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -# Date -date=$(date "+%a %F %R") - -# Battery -battery=$(cat /sys/class/power_supply/BAT*/capacity) - -# Alsa master volume -volume=$(amixer get Master | grep "Right:" | cut -f 7,8 -d " ") - -# Status bar -echo "Vol: $volume | Bat: ${battery}% | $date" diff --git a/config/sway/themes/catppuccin/.keep b/config/sway/themes/catppuccin/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/config/waybar/config b/config/waybar/config deleted file mode 100644 index ef406f2..0000000 --- a/config/waybar/config +++ /dev/null @@ -1,160 +0,0 @@ -{ - // "layer": "top", // Waybar at top layer - // "height": 30, // Waybar height (to be removed for auto height) - "spacing": 4, // Gaps between modules (4px) - // Choose the order of the modules - "modules-left": [ - "hyprland/workspaces", - "custom/media" - ], - "modules-center": [ - "tray" - ], - "modules-right": [ - "idle_inhibitor", - "pulseaudio", - "network", - "battery", - "clock" - ], - // Modules configuration - "hyprland/workspaces": { - "disable-scroll": true, - "warp-on-scroll": true, - "format": "{icon}", - "format-icons": { - "1": "", - "2": "", - "3": "", - "9": "", - "10": "󰌳", - "default": "" - } - }, - "keyboard-state": { - "numlock": true, - "capslock": true, - "format": "{name} {icon}", - "format-icons": { - "locked": "", - "unlocked": "" - } - }, - "mpd": { - "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", - "format-disconnected": "Disconnected ", - "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", - "unknown-tag": "N/A", - "interval": 2, - "consume-icons": { - "on": " " - }, - "random-icons": { - "off": " ", - "on": " " - }, - "repeat-icons": { - "on": " " - }, - "single-icons": { - "on": "1 " - }, - "state-icons": { - "paused": "", - "playing": "" - }, - "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)" - }, - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "󰅶", - "deactivated": "󰾪" - } - }, - "tray": { - // "icon-size": 21, - "spacing": 10 - }, - "clock": { - // "timezone": "America/New_York", - "format": "{:%I:%M}", - "tooltip-format": "{:%Y %B}\n{calendar}", - "format-alt": "{:%Y-%m-%d}" - }, - "cpu": { - "format": "{usage}% ", - "tooltip": false - }, - "memory": { - "format": "{}% " - }, - "temperature": { - // "thermal-zone": 2, - // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", - "critical-threshold": 80, - // "format-critical": "{temperatureC}°C {icon}", - "format": "{temperatureC}°C {icon}", - "format-icons": ["", "", ""] - }, - "backlight": { - // "device": "acpi_video1", - "format": "{percent}% {icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] - }, - "battery": { - "states": { - // "good": 95, - "warning": 30, - "critical": 15 - }, - "format": "{capacity}% {icon}", - "format-charging": "{capacity}% ", - "format-plugged": "{capacity}% ", - "format-alt": "{time} {icon}", - // "format-good": "", // An empty format will hide the module - // "format-full": "", - "format-icons": ["", "", "", "", ""] - }, - "network": { - // "interface": "wlp2*", // (Optional) To force the use of this interface - "format-wifi": "{essid} ({signalStrength}%) ", - "format-ethernet": "{ipaddr}/{cidr} ", - "tooltip-format": "{ifname} via {gwaddr} ", - "format-linked": "{ifname} (No IP) ", - "format-disconnected": "Disconnected ⚠", - "format-alt": "{ifname}: {ipaddr}/{cidr}" - }, - "pulseaudio": { - // "scroll-step": 1, // %, can be a float - "format": "{volume}% {icon} {format_source}", - "format-bluetooth": "{volume}% {icon} {format_source}", - "format-bluetooth-muted": " {icon} {format_source}", - "format-muted": " {format_source}", - "format-source": "{volume}% ", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "", - "default": ["", "", ""] - }, - "on-click": "pavucontrol" - }, - "custom/media": { - "format": "{icon} {}", - "return-type": "json", - "max-length": 40, - "format-icons": { - "spotify": "", - "default": "🎜" - }, - "escape": true, - "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder - // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name - } -} diff --git a/config/waybar/style.css b/config/waybar/style.css deleted file mode 100644 index 0781fd4..0000000 --- a/config/waybar/style.css +++ /dev/null @@ -1,179 +0,0 @@ -@import "./themes/catppuccin/themes/macchiato.css"; - -@keyframes blink_red { - to { - background-color: @red; - color: @base; - } -} - -* { - /* `otf-font-awesome` is required to be installed for icons */ - font-family: JetBrainsMono Roboto, Helvetica, Arial, sans-serif; - font-size: 1rem; -} - -box.modules-left, -box.modules-center, -box.modules-right { - border-radius: 1rem; - background-color: @base; -} - -.warning, -.critical, -.urgent { - animation-name: blink_red; - animation-duration: 800ms; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; -} - -#mode, -#clock, -#memory, -#temperature, -#cpu, -#custom-weather, -#mpd, -#idle_inhibitor, -#backlight, -#pulseaudio, -#network, -#battery, -#custom-powermenu, -#custom-cava-internal, -#custom-launcher, -#tray, -#disk, -#custom-pacman, -#custom-scratchpad-indicator { - padding: 0 0.6rem; - background-color: @red; -} - -/* Bar */ -window#waybar { - background-color: transparent; -} - -window > box { - background-color: transparent; - margin: 5px 11px; - margin-bottom: 0; -} - -window#waybar button:not(:first-child), -window#waybar button:not(:last-child) { - border-radius: 0; -} - -window#waybar button:first-child { - border-radius: 1rem 0 0 1rem; -} - -window#waybar button:last-child { - border-radius: 0 1rem 1rem 0; -} - -/* Workspaces */ -#workspaces button { - padding: 0.2rem 0.75rem; - color: @text; -} - -#workspaces button label { - background-color: transparent; - font-size: 1.2rem; -} - -#workspaces button:not(:first-child) label { - /* Fix fontawesome miss alignment, depends of the padding above and font size */ - margin-right: 0.45rem; -} - -#workspaces button.focused { - color: @teal; - background-color: alpha(@teal, 0.15); -} - -#workspaces button:hover { - /* border: .2px solid transparent; */ - background: alpha(@blue, 0.15); - color: @blue; - border-color: transparent; - box-shadow: inherit; - text-shadow: inherit; -} - -/* Tooltip */ -tooltip { - background-color: @base; -} - -tooltip label { - color: @rosewater; -} - -/* battery */ -#battery { - color: @mauve; - padding-right: 1.15rem; -} -#battery.full { - color: @green; -} -#battery.charging { - color: @teal; -} -#battery.discharging { - color: @peach; -} -#battery.critical:not(.charging) { - color: @pink; -} -#custom-powermenu { - color: @red; -} - -#memory { - color: @peach; -} -#cpu { - color: @blue; -} -#clock { - color: @rosewater; -} -#idle_inhibitor { - color: @green; - padding-right: 0.9rem; -} -#temperature { - color: @sapphire; -} -#backlight { - color: @green; -} -#pulseaudio { - color: @mauve; /* not active */ -} -#network { - color: @pink; /* not active */ -} -#network.disconnected { - color: @foreground; /* not active */ -} -#disk { - color: @maroon; -} -#custom-pacman { - color: @sky; -} -#custom-scratchpad-indicator { - color: @yellow; -} -#custom-weather { - color: @red; -} diff --git a/config/waybar/themes/catppuccin/LICENSE b/config/waybar/themes/catppuccin/LICENSE deleted file mode 100644 index 006383b..0000000 --- a/config/waybar/themes/catppuccin/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Catppuccin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/config/waybar/themes/catppuccin/README.md b/config/waybar/themes/catppuccin/README.md deleted file mode 100644 index 8144e63..0000000 --- a/config/waybar/themes/catppuccin/README.md +++ /dev/null @@ -1,79 +0,0 @@ -

- Logo
- - Catppuccin for Waybar - -

- -

- - - -

- -

- -

- -## Previews - -
-🌻 Latte - -
-
-🪴 Frappé - -
-
-🌺 Macchiato - -
-
-🌿 Mocha - -
- -## Usage - -1. Download the file with your desired flavor e.g. `mocha.css` (to be found in the [release](https://github.com/catppuccin/waybar/releases/latest) or after cloning the repository) -2. Copy it into your waybar config e.g. `~/.config/waybar/` -3. Include the file at the top of your `style.css` - ```css - @import ".css"; - ``` -4. Use the colors in your Waybar `style.css`. Waybar uses [GTK3 CSS](https://docs.gtk.org/gtk3/css-overview.html#colors). - ```css - * { - /* reference the color by using @color-name */ - color: @text; - } - - window#waybar { - /* you can also GTK3 CSS functions! */ - background-color: shade(@base, 0.9); - border: 2px solid alpha(@crust, 0.3); - } - ``` - -## 🙋 FAQ - -- Q: **_"Waybar doesn't work with the colors"_**\ - A: Make sure you included the file in the right place and you are using `@COLOR` -## 💝 Thanks to - -- [rubyowo](https://github.com/rubyowo) - -  - -

- -

- -

- Copyright © 2021-present Catppuccin Org -

- -

- -

diff --git a/config/waybar/themes/catppuccin/assets/empty_dot_gitkeep b/config/waybar/themes/catppuccin/assets/empty_dot_gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/config/waybar/themes/catppuccin/assets/frappe.webp b/config/waybar/themes/catppuccin/assets/frappe.webp deleted file mode 100644 index 7c7fea9edfee20e6b7b065d70495e45fb79a940e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3218 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 diff --git a/config/waybar/themes/catppuccin/assets/macchiato.webp b/config/waybar/themes/catppuccin/assets/macchiato.webp deleted file mode 100644 index 53d7fa7a89da74ee1e8cac322beef5d4f65b5288..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3196 zcmV-?41@DhNk&F=3;+OEMM6+kP&goH3;+O7P5_+&Du4$n06vjOo=l~rBBCL%*qE>q z32AQpe3_2mfe{#(S?&bqw$pOnX#ZJ~ujfzmJ+l9`=*{-zn9eKtAKza(dC}h=$h|R;UdQ1u_|Kd=Yt_oV;ud=|YA*aP{e_|N;k%pcwO>-v+}8>3I| z=d{RRd>6=GJskzORHSMnsTexzhqZ~LjC9qex_ndVt4(zHr_)wm_p@gpqF+1d40?)s z??*vy6)7BJ0EjNK;b+A@nzYwXihJpQ%e&A*FoKiwdJjzgWSy9p6(F5&NSHZO(vW1u)wG|k7mOo-&~dYfgikOF_8FKwQ}v5yL4 zrmZ#8;-5`gYp2CNnzYwXia~O;5ZdDMj`prEEX7#`7_3!s58LbuhcE$xtXCeHkYv<$ zhnVrOgzH5k)m68rHE`&GE!oa!3)9elgM#^TV3ahv!(y?#j$w^IE3x4ruQh3|pA`CP z(*t3pKD?@m&ToCDm zB>lL5j7TW4@Z^m?L|99_ZU&zCh7Tpor(k#JdP2cwz}4jV&Ta4`2?&!w@6T4VIIbN^ zUqUo-j+(UBPl|mtX|A6X`fAZ%sgX|oOBUdbO#q=Big8)gM3H*4y%fhyT5G4pK9|av zxe!L&3{ehGOwdRsXdP#d0UHkVKwX;CgH!!1Xdd=Q($8$U;a~v%|7Prd<7bGiY^QxO zejPzc3saCT8H^!rbbYBNn!pTI$lOq?w;%uj09lsGE~H}6lYT!MFb$As2(Rgy6D>?# z#GJ2Dq#^S&N*rQ~tjlBoSRCv0+wQJ6X@N&DJMw^9ld~?{h^*lt%J4|bt@lHv!cZ-2 zDS_?Nd2hh|F%KSXBPzW=3hUz#k!SBj^)||~8l><8$?@beCAZ(uTs}d%UH0Zrn z;DA>m1K(1-rG0HMdSNP~9CFjn=B0y@l(Ev{>YOrN;~%vJ59bNE1e2;l270bF%}9}$ zy21)LqNx4Dau)cC0e>mVZQFSH@OCo|#7^c?kZtr!ZWou zFf^gB!k-4f_}zHqAts3?v}=#l&zOa__KXHHc?4Xy37lAVwiKX-;eho7HN{BNLIjw- zDD(L7n{zQaJ1NGxE`Tl*S_kOm(RqXb0000nV8SRAQ?4B+u$Rx;Ey3ehuzh;AFX(k7 zu7@6kR;CLX8JF32Nl#f9r-b5T;;Brm_x{cU%jreKSAhU+8tD=x-*_dQ;~S4^Ws)Fx zsxJmu<(Wir8pI!8HrRMk%>hZ1@f2flk&$pztLJ3TSaU|2=q1y}!>nsjLPGlY404}? ztZ(!Y7#?kMgvT+bcvFTRD9Bkk~N;yz9<81b7P9GG$dKc zs3p_J!>nsjLPGlSVRF~;(?~hJkZs+RmyxBY*eB_8cr@k-ETP_CQ=%Y)*w}-Qj^+u! z5Hksk6`m*xiczz%xIheoM_a8`EB)rf`;6a~IHc=-f13N{L0_&C2-o+_^aY7}a#wkj zN(>84anO$Ys4q(Z7@#ye>LExVELHz)WDy=nlTA@bkd5~DxGJqzv>6Me3@y`~$F9Dz zYkM6D`T52(T4yQsw0zjqh$x#gx7ZB8d74;K{m~UvW!~%UdB6Vs8NPZ^+j~-8O0W=Q z!B08u0;8qhPP0FCjqSo>QjBH;Q(Ck#%=RZ#^ zQ*fd;nf73J!IF=kmKa__v{Bd?a_{?5z=mXApf*;)!_Ia?S-2VEvu{tF0Y+;GPRW!rDl zXtMxt{v;y7-q0?uLTldP2LrtD>9UHNfZQK#9L7ZBmRE8k)_yG~e}bg%$c9mV+9Ez= z2t{}-1EvECQ)=qAu0FiAaU)mvyb)R<(G(E04B+q#8mXFX1~HV)C`9(isXw5mj|arz zuv)M_(Gp-QZ6u)IS{P}!ly?nk}JFlDpNfF=F?>G78)co;NAY!}Kol3iJ z@5jQR09LZZ>`8j7HF+q-wtL?T&ycdv`m$>9snVp7Sn__PYiq9NwI9L~a)`AGxw15}c9?`KLt|%1_BUu)_5<=^2<2;W zZ$f2r(Yky>PBIZ-KCr9+Hz*W=r1lnM<-rblD|N{AWgE2W(TXI};8k%k;y2t>I|4!l z20g@lQ^)pVyleTmG1RZVadYOwx8S;*;Pa7y6w4o0DYUyczl`fy_4oDCa%qH+yG|vc zT*TTtlI6BzVIW*h)oU1G`yN4r6m_Prk?U52IN>ccOReXX$RPWtB5J+45XqeEw{Rv_ zEEsXOhJBx$AtTl9d5JlRLg%-l7{ zZAA$Drkpz>U&Jam@Fnx@#X2j?*hzaHMQMtpB$Mb|;-58lo$u=mGhpW@qG(wpO~c$? zj{7lQImdWV-8!$Cp#dhIl{;F3@?lnK3mAhkmwMV6wU!%!ix^!1pM}Dd+%Bj$8Pktd zPxnKl8P=ST8{@!tVs+R!tPR++RvjUb(yv*}+8|&#$1OlrgM;GRzJ3oE9I1TR0htjG z#p`0XW=p&kfDa_VADeI`HHG7LhPZa=NPq2Ly(k8TDPJXFiz#Q_A)gpMwgrjVNoxW; zWBhm=K&LW1pLPA+GDl761_ODm0W*S zxftSMB7O52EKC-=H1cfm9&Gf9IA&s?E`Zc{{fYf9$zU^i<6F9C8P=0A z@gGh++5}nF--j}XUh^ENdKjJNJM&f%E&-?pvHkp5r#yxHb>7jFu^){9%;5G4-^Bo~ zicUlYPvFD9We)Tu8BBuPYDBJ7jo zIguU<@RreZ8gjFB2#s^$vPeT=uT42>OIVzzH9Z|OXWvQ4Y2MrMCd3-R*AJw)sK<+j z=)<>Xw^Q$r^dz?N5)FV4==s9?EIsiJ3l7y8`Ih~lOUq^ll2jK99TL%`eW-l|~h zOdICx__zwfWmfdHXIJpUjvkBXcSg23lH{?Ms5Xcm^0?mSoa9FF zYgIQ`JM(?``1ry%C~aQevkwoBF|b4o7XR7LX!VzIob7u#rz?*66Ltpw{i;sPS3F@1 z4Q~+V>d{;ZqwvlL%+Y;Yc;>7f^b{1rXQcjodU`+|>-n~oAN(%ooVBCGuspCUEM|Tf zqOzXQZx*=f?5o2h|Hv-&t?m+n$}GvRo9T@o12Q-orbso{_u?$c(Ie(nGF+5I%dfXH z){M~)BAP1qt#H7jcb@Id(E(m$jnRy6);2DMEnSq z&gOov96;Ap0fz~egJ*}G00p@8CO)+B_(HMRm%+<*F9o$fQp_#!)iF-Zbn)lM_du}K iT6#1l-ho{AUycM!mj8sBBCL%=%BC? z32AQOb3o;tbB#f3(MI6jeC;?6ivL$n_4zJ-asM~lcl$1ezi;PFm3vA4LHEn|UP^bP z@^?@#T6hZVOwv5WeP#M*{IBl*9sk|>3-$}x1Nl!0Pu#!JdjWqo{{R0=*>n4U9ABY- zpY{g*gX+=yyX`g@%y2Xeq};sXF{ok4%ozx6wzs8kjd&hfYryh%_NvE`gV4|GxFpm`bE+h^eo^Hf)1m_B zCuy3%o@S>E0CPGTY@L^roUUGR+&%6l)KFW^xOs0mu25VT{_l|mK%9PxJu4nH)1Wv( zgbHqkybmok;CX4U1ItZ#9$IU_^3xmy&N=~hIas{N=n{f8H?+Gxwr5|5QEwjMWzI8> z*c*xbZks4Xy8wTxC*&?A0Vg=~OCvPE|KO>sCG7%+`&#`^s|0tH(`ocL~PpY4Y}mq+%o-k1i+#N2x{*1IKLQ{k@#7&#LLrwV)m);)@}W2y^^A_AWEs zh*mOjoK|~t#sr8+H!E^}D8U3HV*wiEEHVe%M#C;hozZ##eLs_7zl=_Qc>0@=x2l3- zyFJynpXQ@hn(#cd*Ma4xybmok;CX4U1H_bammfV`RdTBllnEA{S=2^r;;VdX!1B{x z2bP*pOKl{LC+%9vy>U<4Bs+tG3zIB5m}I(}>b0RH~(-0%6SD5!L|X}}c; z4FkDl+ZraUGReOX9vvaw)=d-%AS3_)08BcUS1dBkKU|&^kL>dBV?zmjWrdi2!!W`i z1Lkb?7>Wdt5&&|ioK>3kjZhau>!I+J}z>fl)s5thH;RxrGsA-kYY0o|^MMng3fE_z|%UfV4FtM^BIyFpf~ zJLq`yugxqIOPjvD2zIDfz*wz-k`{^(oG zYz^35rk<)W=2a5vGtPyxloa?;VqCF|Z{}z(+jZcm=WLJtq2e`OwAt(EoY}i7CBox6 z@&hRDcXPPenT@yV#>-N2C-n5Y3yb%g;e;5-0FLa|_hO>S&Zvli$1`wqmAF>rg9FO| z>{yry!*bxnR$nf2kjbHj)^(!e&h1gi(!ph4;lkt@dDqwkf}|XT)?(C zS{`aKvf7ofr2mw@m=sdV(0;w$$L+CB!WtQ}i@Ja*WYUN8Tw!BIb#{-^pTFaikYVuq zl!YQGx4lu}9t@Vs^%k}Tp7ygGQ+cUA?f66_jioZjks50Td^2=`@vZi0D52hIeK%HJ z#V<_-d%(KhTYR;la(-9)@ZSGxgV>YJ;tGiz&%6rWTVOi8&qO`GQoqF`ay$G8IkB94 zX60~nDC|-gjPc>cvPC*>gf7;6fZ9ueLV(?EoxKn#3BmDpB#CFh1&mtqQb1T&U$glJ zp+PT?^D?9)$6269gx6QKC!GZjmL36B995d*2l)=uyPJ_R;K<%WbHpz*Pj~dK zDZ5819RUtiJQiSi5btG9{=zZb!e`Am@9ALRvH#>@$s60iQ1em4HB0l$3Ifm%N73DW zubX*-HSH#1|EwLB2^@ z%z^TFtTJc^YquLpnGB5TUiFo#PfRShj&K#x^9Fpw!UA*KMt0xNsjVH!V)9HF-`62i z#39}vwnc{6xY)8N@80xLH1U&c`Y4{2{cwULjqnt@xf$X*0}%I+j3kwYa(57dontQt z&9mxz0dQA2dP-OKm6>#)flQ3kE~-7jtk2c$N#t#ThGPl(G^EA{Fc}N4VTa}-scYaC z)3Vh$*{gau)x{GiEN4_{Tb8OUrLIFrurKqw78@dYC5Wa#(;C<$v<^WLzt-|w6Xde(puQ{7wFWl{kL6t0>E zkSHg4#>_lR^P_!7Hk-Ny#jGW2e(`~lMXfQFY4H7OOc}47fHO|%0QBa0D~mmt-iU-2{;E9>u9oLi&GfvZmbsOsm(H4lalZ4v;Fz`% zAo$X!wH0>Yz#}_TiML&aJilTEidZCVUpRYMHq>7M3jQn{QKJ7#`^OHOrtR#$fWqV1 zPJ%>+NlygMqIypgkmycTMKIw^qD|0Ze zkSWBz&3pGzyxrhRzHh|19I(CM5_z-wJb%Q2i@e&QoQ9wUx>W2jCF~(hpe0WhKFCFgPVGr2qT^Li#r00Potap{GDH zhHZ3eV&fzkwy@+4L_{sz}N>N*~iqw(+`<9?sn0e2Ty$P+4C z950KhS_7Zz?`e{-x}7RnZ}>*jc5x(_vFu@*N0VMSO1R9hZ*R*80zznFs3)_k+Vh8` ze<5q$BVwPCz}`)&SE&Q173&?XN+e{iKG-p6KP{EGBLc%XL<{We{JjnhQ&#+zyYi6g z#JBhT4f!^znv?l~(ign%fL}QJz^ZYKg{&mggj=G%;IyfC3prx=yTzN`*MU+cyv~lC zm1Sjz-d2aMm#Sl336HwXrTh_J`Kq^C8<G(8 z>#Bg`1BvUma2n@v7WF~2+BSz$MHzL*O{!R}P1>p%nb?1#ig+v>W0hUNNkqZrZSs6_ z&(G2CwkB?4+g6qJ|Hne@zZOb(1t6z{8{)A;3OBZGSIx%X`E!GfCt?mxQus?y|5YgT zrUW>VBssS7F?iX&S&Bpz%Xp z3^Bu|Fk#?zv4MX=68tA(jEjXAZjFKf9!gwcnu~uthw}DhvMC^4NY}?EQC~l#5s@YU z=74|QDvaAUawMt$u6Orx_(sG8@a|6ZTDnP(@*ok=fhgkI?L3T%Dq2zss*Ez`rHt)| z$vTz+DvN)PS+;G*jU?Us0IJm0T5C1a!yalm>M!Wu>bd+Um8C`M5ETpn?^+R0xH}n< zXtdE{H)()7m)+^S+;%LnKsZW>ueI=22w!BLmAY0-J>Uo=#>aL|{fN za`8+cZvcopz`p~3fV%+nN`M{U4+1n1pnxn`Vj~eUnA>7AqO+=v5CN3*xt`V0CMXnC zU`8A-JO?O1Eflb^2#ZB5fps!&umPZpnG(y0kK0C(3LpVs2N8OajO*{u#Brf(jUz?$ zJL~`p04*X^1(K8@>X}9ciT$Aq3bIlWBc}>Gr~P;{{`t_J!GE`=|L11^FN_4&#GnN}pfb;O#!LzniAV>;16kr*U&YW3;Cd ziZ4lw5|>wEOvUp7>5xRpikTTPc)1in6fA&bZTiRih?`cR!`!QTsyp`Qx)-K3J9Yz% z`f0i|K(A;e)R4H^lC=ni9v=8mw)hH$pnZ;J2`-FKgj`%;aFK8KQB4Q6^gIi?NdRzTn$(=>rJOBGHlK4F zv8aRvKqB-I4j?v26mDy?^)?WJl*zrMq*22->TeREAew(NzCIn(M%ieDhh97ikHO=I zg*O2B4>+^bVsspdqp*K8mc>TkGG&L-NwzXTEMi2F0M$S?k? z(pdrwdLdGnlE4a47WC3ewnTd#0@NKJzDyHCbjN^(Lr`#P$#SWr+1~+JkjQf(XiBhz zfv!r(j>h3%!&5_hFK8XW6`WZH$6d>d(2FW| z!RiPXy+q*O0ov9EJBV0f0iZB%9VEhUm1GG@!wecKmysGHX_0_#MA)%P*cKo~fC?`0 zTLHF`kN+cVP(6K!u#r>Nr7&*~S%h<6XHv$U=J+3CNyZD8Rq_BbNTfX#^8)J`sY;GM z0Pvv&7uDnFi&1h+!A)LQggr?XEz&6zV2iA-dys)_M4Hw~R*iEl#b?)W|CuOTq3@9* zoxVS3DT^<@<3phj_M;uyK*>{fG%=i;js%|Z8GR4XSEi?eQ8xi7i9dn}7S&!(Kwho~ z=BA?1MUx=>5O)N_g47s_wm0RFAPYsZys`5FR0b5pB5}6U=G*NZSteoOCGp#`0X7B0 zWzBNu#SD9x;SHsABpAe!I&7YuxFRmBRo1AB05^s^R(awe!UZvBRhNK>d_h}oFYVk> zT$~TgoJb(Wro!Sg*#Mv(W$7E0Fae0Aw~7FRN*2c=23NAUr;(tF)`V0$0)Sqe&SmbN z-U20kFBNH!E3jLva=o)<#P@wwubA&euPFT5BdNg zZxU#+IilaXP1Mh=SsFj#PtB|}8SArmh$k}v}SzwjAzk8;Ey+<3u z374Mt=vgXZ;+BXlevsam+4%f2a};O+(XnI|U{|5uCQ-PzqPY~qloX;oNQ?GDDt#Qp z(YrwUTuFGT$dsg8YM6?;jiK;t>Naq=n2@m=!ILBXpu&b8UCE$19UDO2(*t8tGaO?B zD3$UoN)MEy{BR)(;1-#H3hhLMC4*=OnYeq0ZeU}&Krif!AWjMD$!fQf z6VVvjXgPot<|yi*u-HXB09E^qs#RX!V1t>+OFRVZk6x4w>*KbV=kg{S|Ci{fSwSNG zHWu1f>ty}Trb<4bqOVLKJ1jtoOT03`gAlAm514^EPW?9Fb%3s%RT?>?dWg#QEw=$n zZlQqOn3}#UF8ag4P#rFgVFbM+R2Ubh5qD4-6@c6$IXv8Q{2>ca#8$N;7~L2{j6)Dg zn+)nJ@FEF1^|5fV3P)EZ7*EHmWK$5*U3+bXEdTtIrG3NbIM5#eGum~AX3~myP8N)$ zNC!D9B7{(^T7Xr`Z}4yAfMQWx_;pLpNC;TyMagLC^@JIJJvUyQvjA@R%&Ys}PhmAF z$|dkDpAN?0c6kryqDP{ zVIiV4Lg;1Y0(!vB%;a6*(O|paeN?@NFEpxR8U=OBR#XYPtGj^EDj4dt~pqH7S;WDd&p-r%t;tIguAtLc_(dHLf z-XI4cI~Bt+Tu3YNC8R~A#7P%{y9^T6UA$hE(&$WsvSG$s>``R=WayQ|F-df(a=i$E z%|PYhdB%qARPBDhNn!{DN>r4D@c#(`5FrgNGZKL+y~1KK8|31{h^q3q0-CYABsIK? zNyWRE8BwnwDG0z0_TE5+$>x5pRAA~qJD~r{d1tZABx8G5nX7xit4CA{u&Z>sOG;mv ztCd{^*vVBc^UiV~b0yD#JdfJPd}Q4YpxU|xmLqEqvpX1&{N>+0Rc*|s6@n%a;H`4U z0$I|EIhsl-#r6PTAiyDe*ccJKq6Zy>2!bG=&Lx;5@`3tm<7dD_^@}J}f4q*@sBNgM^IjjG^IwIIEi5drGV@*NeN(n`vMeyWn_w10|%U_D9 ze(tYwxwsha!=^;hRW28b-R+`pZ|{x-LXniY%1q@Vp$CXaVTvST6)~w50D?dfM$p3SSq70?hDC$dxygD;O2qd-Ai}I9NJz!oA7PRhv$=<|Y33@`z}`=hDlyhV z(yly11Q8~coqmyxP++s8opksqYNZ1-;9Vp?)e5afw|wQI#znbO?wOGc8M+y|$k2_w z=@lFqsxL<*!$95Cu%{+;ID#>{<62d*5L)S;B{%nz;tcdN>MM_mx5%HVNhA@d9U{C` zEvnA@pRc+{A%j8P;`T%glR=zE+hASz1+)8l{}xkkDszB zFTzk^=0bVb zAP+!edoPy-^yZ7j3Ia3lEhbP!P=cAk@RM^M2zm?4K+9Y$!fTnyDIgSap*>KpGFC&I z06?@W)jU20R1oLONYY@!1Qd~7B>}T>kYd+PAT*OeU`ByJ1W}Q;;d{wqoM6LL>|-4A zx#~eKa9H3&w5Ej&W=jTxqsSA86!QuSjuclq}Y`hMAcuXd`l~wWvf^ zzqUgoR;$z%78`gVM$F*e$9U9Ub*@So2hl*ZlRZd5D{Hh^#0ZxvqQjF$B2lMFE(Qa- zcLOGk-3%kf29Mw&?0%77;TO3~RhXL=;4Fst1$6DiY_$};GQ;71n8InYs0LRdcs0J{A3)?t_4J|iQEmj(cnHgvdFc!UgsX`^9R2ip$7RLg?ss{GKRZN2# zTQJo}uD+7ni4=7}nxrb13l4Tws})47KmfM50vIJd?E)(d0*#ZnbRO+eRJ;Ly>ev_VN^~3r zIdv^I_A>LZ`+UORwy9c>rH(-pcg@-j%hs2R_!5roA!iZR`Y{Dv3p9c_rij@_Uqrdf z4_157!XAO;RsZ%Q`3=Xv@kh%yzLFvOy6Qiz;Aaf^^h3P6la5zAmuoKo z>HFVvyY;su&UsQhA*cwVa8>p}&bv;jLyey8+fnOCT=4yL=SrccU@dJE8?-Fv-bw^- z4XtuM#VLy~qQ78O;{ho}RElM!dcaT_4R6O4IP8v?Y;Wk_iBIGnERSZsX**l?h|oB5StoFJsoI=@Z!t&}#G1j7?;^n6I8J zjbfZLuSw2em*&nNj6QcF(j+xcy?+x~9uqy?0-ZN;0sTd20Id9?>eTfWygB#skRaAep1v@bhlKwE8khy(c$?(^ z#d@cnu_)PZjT&|a9x~=>@eFFF^D5R;;DP&Pbte){==*S~&@0l0O>j|h{-d^5 zrD%XahNjD@eEM-S90oBlINBzK}eS|9)!sXk;iMP8I-^hXC>!^kc} zpXyH6R_F2Om(fxZ3j<3N+TuVf0+s>eW!&oBPZRsNk;CpQ@FiMugIdg>?_=sbN3+cN z;e(&7EHy}_&$7^iixSQPAA_wsm7xV4I8Jkn#3V*GEVzI!k>fzp5^`E{wqqg~!=RnV z?)4?ydHAv*QC`~P3;=4i1c28Z?~s)YlE>B8@4qJtvQ)b6!P5?PxW%6iNFo;DW&M_ehw~1G% zL4}E6Ne{0eGD5Bp2!=gXY7r1E(H<7U2%5;2++c$rNOp0&K60D1Blv#*^W*cf@S`EK)!(#%-hW)9- zUhxOVf6L1Re$e9=y+a5n@?5alcvF7ENRRZ;E?@&?Scb5Eu9BlIH(nR~SZ3@a^d_B8 z1JokTWMP_!w0y{Awc5?^83WUs4ZE%yT;W_a?87=V92jjo>5@_M6m!5UZ}}kku5OJs zeGb9LuQ?BrA0=s(CnC z={ap5r7m0FBfDT4yO|a{ONGlm?cZ3*A+$PIt$}vu^o(}rYgx8FYUu3Ry6(iGb6gqk zQSZkyINFxVHQ3g6BIg!25Ouv2ot$DO* z%T=apaeQpGMomtM4}uN!UFloqAAZNDelOPn%~_-65cT}rY5uvq8R95JO3z2dQn~f=ZO7Hr~B_OC01wXyT!G`F<*D{b%*Q&a-4IA%Y^et=yf~G&FIrg2zKK zxKvspT(syJleqIR${EJtV=+Y$fX89cLywoEKBZ-;>>A((P(#&XfB2N{PqSD_DVe8oIQcuhds+!#4z8}5)p0hcxjG3G6 zl0n(-=>+WY%T5}!-R}SM#6R?=ziR#Cio-#?-)miqJl}{l8rS9Qnn{sOXtL z8*->nt4?@j`(kKmgGlsSgN*}rF=J9lPBu!RBchuCDVK6e6=h)|kRCMQ83!tIh(LQ$ z7i^G193U_YMUON^MGjWNlV28+gP=MPa$};6Sp|~4R?IBcP2PG8+MY>@j5uwNgSNH(hwxtMxK*GHjtdPioOzUHp4LGm7jcesOsIxd%erYP4 zQe56381RrM46dcTX^E5o8SWf0yTI+m+^gU@0U}TY*oO@o4FIzk$|#o~Ox{b^f+Z{G z)%15~O#;uSu(Y%=jS!b|jVY4t5JV*lT#z!q)XU6*X678x!_%5V;D?MbWx^Vz5ep?` z044Vcx?EI((l|G=*)#hUufPh8*n}O(F&pzQqF1m1nwAC2Q?D=iejW95_lSD1 zU)s~Hx|It6djV3Gy+%8^;q5vyYT5L&+tvpxQ)%&Y#zuD9=OzA63%Zljl=RBBk4%33*94&-in*l+oi#s?dEIN)Pt20RD{bJd8~ zI1kW~IX~SO|H#pgWj;&Z1)$D)Hn_-e4P3lBb^Q~Vf$x}5nbJGmI#hMtKJNMWNekkW z9CqoW`j0q$vj6{D`Z4p`Hop4pt+z9_{b&apG#Q{|_#g??3Ft$MGOh)*oq;g$0pEL6D`K({-)RIKrBXAZh1qY8} z9Gff0dTsyDW%}pq>T!?eg`@ZI+?s1yt_Vw}fi8KbqKea^ZzIH5r(B~;nSDAv$4F

tXG!qiOzQ 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 z zJfron@yO7Z*HwO>G)-HNB;7@ph2>#C=~&R55V;G2#AV3v3qT8`6AcANCisAWTsw4m zwoENzqonVqN#z+zbCc3^xxbWbxGZQi9FHnMV<6YP#KMqMO9+x=<{ibL(Q+mLyaG@Y zTA-ZfmCA)N77ZrFXAT=ovg00j&w{qk?X$oCxdFPBz3%W2zelZnk{MC-XJdhylF$!RMTTLsz=DDR84+#) z=`q&@24+TJL6}tB%LGiJ=MvE9pG5!!L*}GzD@TP|)Lu*%NnHxb^(~0dm2A8#6v`;_katmT!@(WUruW z8Kf0=z`HBF69l^7{j*g`mrGuA0c0$BEJ{bfB9V^3n3>Ckd;{-RYCpHlG6H^ZBd@v19KeMT&c@ zM^AwmLEy3H^Y^`7oyZr#8bR&^u>&CMP<`+^^e*lC4z2tM=O!2siwKYI?u!pJn0;o^|u}`Fr`yh4btCuksA-?~96bAV@Exo3&GSZl8ks zPTZC{x>$V|*5Y&i({#adal5swOSi2jx01MRUfVV)=6tAEA{h@?-9`%Pl-aw?w`{Y4 zsE}pYo*SK1OT@SJ1$T5=pJnEnUhdyX^MdreEGM znXU(Z+pf0gF8g&cCnm~roIiE$!cSf3*Mw&%l1OK|^1aIhXM1k+W0xKhy_hvXmtHR? zKgwo=p-9@!mwI#^(RABj3-v^Geael{rR&a(`lX%IiF%jtruL27-8SzPR|X`V*`6o0 zg-e7IYRuA?yknh-+(bNPavA4P7m1e%%ivAi!PNn&vVNDQ15(axGh06IxzUV`j=-%U zxtY7Q6Lu060$a|RPM}LI5Zh|LO-iIOPWw~#%(Jf}m+kpcTlAHwzDDckCi1QXevz1@ f{_Q!_)sjOrHZadfiha@.css\";` to include the file in your style.css" diff --git a/config/waybar/themes/catppuccin/dot_editorconfig b/config/waybar/themes/catppuccin/dot_editorconfig deleted file mode 100644 index d86ac02..0000000 --- a/config/waybar/themes/catppuccin/dot_editorconfig +++ /dev/null @@ -1,34 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# EditorConfig is awesome: https://EditorConfig.org - -root = true - -[*] -charset = utf-8 -indent_size = 2 -indent_style = space -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -# go -[*.go] -indent_style = tab -indent_size = 4 - -# python -[*.{ini,py,py.tpl,rst}] -indent_size = 4 - -# rust -[*.rs] -indent_size = 4 - -# documentation, utils -[*.{md,mdx,diff}] -trim_trailing_whitespace = false - -# windows shell scripts -[*.{cmd,bat,ps1}] -end_of_line = crlf diff --git a/config/waybar/themes/catppuccin/dot_git b/config/waybar/themes/catppuccin/dot_git deleted file mode 100644 index b8f00b3..0000000 --- a/config/waybar/themes/catppuccin/dot_git +++ /dev/null @@ -1 +0,0 @@ -gitdir: ../../../../.git/modules/Waybar Catppuccin Theme diff --git a/config/waybar/themes/catppuccin/themes/frappe.css b/config/waybar/themes/catppuccin/themes/frappe.css deleted file mode 100644 index 18520fb..0000000 --- a/config/waybar/themes/catppuccin/themes/frappe.css +++ /dev/null @@ -1,37 +0,0 @@ -/* -* -* Catppuccin Frappe palette -* Maintainer: rubyowo -* -*/ - -@define-color base #303446; -@define-color mantle #292c3c; -@define-color crust #232634; - -@define-color text #c6d0f5; -@define-color subtext0 #a5adce; -@define-color subtext1 #b5bfe2; - -@define-color surface0 #414559; -@define-color surface1 #51576d; -@define-color surface2 #626880; - -@define-color overlay0 #737994; -@define-color overlay1 #838ba7; -@define-color overlay2 #949cbb; - -@define-color blue #8caaee; -@define-color lavender #babbf1; -@define-color sapphire #85c1dc; -@define-color sky #99d1db; -@define-color teal #81c8be; -@define-color green #a6d189; -@define-color yellow #e5c890; -@define-color peach #ef9f76; -@define-color maroon #ea999c; -@define-color red #e78284; -@define-color mauve #ca9ee6; -@define-color pink #f4b8e4; -@define-color flamingo #eebebe; -@define-color rosewater #f2d5cf; diff --git a/config/waybar/themes/catppuccin/themes/latte.css b/config/waybar/themes/catppuccin/themes/latte.css deleted file mode 100644 index 085cc3e..0000000 --- a/config/waybar/themes/catppuccin/themes/latte.css +++ /dev/null @@ -1,37 +0,0 @@ -/* -* -* Catppuccin Latte palette -* Maintainer: rubyowo -* -*/ - -@define-color base #eff1f5; -@define-color mantle #e6e9ef; -@define-color crust #dce0e8; - -@define-color text #4c4f69; -@define-color subtext0 #6c6f85; -@define-color subtext1 #5c5f77; - -@define-color surface0 #ccd0da; -@define-color surface1 #bcc0cc; -@define-color surface2 #acb0be; - -@define-color overlay0 #9ca0b0; -@define-color overlay1 #8c8fa1; -@define-color overlay2 #7c7f93; - -@define-color blue #1e66f5; -@define-color lavender #7287fd; -@define-color sapphire #209fb5; -@define-color sky #04a5e5; -@define-color teal #179299; -@define-color green #40a02b; -@define-color yellow #df8e1d; -@define-color peach #fe640b; -@define-color maroon #e64553; -@define-color red #d20f39; -@define-color mauve #8839ef; -@define-color pink #ea76cb; -@define-color flamingo #dd7878; -@define-color rosewater #dc8a78; diff --git a/config/waybar/themes/catppuccin/themes/macchiato.css b/config/waybar/themes/catppuccin/themes/macchiato.css deleted file mode 100644 index 6880473..0000000 --- a/config/waybar/themes/catppuccin/themes/macchiato.css +++ /dev/null @@ -1,37 +0,0 @@ -/* -* -* Catppuccin Macchiato palette -* Maintainer: rubyowo -* -*/ - -@define-color base #24273a; -@define-color mantle #1e2030; -@define-color crust #181926; - -@define-color text #cad3f5; -@define-color subtext0 #a5adcb; -@define-color subtext1 #b8c0e0; - -@define-color surface0 #363a4f; -@define-color surface1 #494d64; -@define-color surface2 #5b6078; - -@define-color overlay0 #6e738d; -@define-color overlay1 #8087a2; -@define-color overlay2 #939ab7; - -@define-color blue #8aadf4; -@define-color lavender #b7bdf8; -@define-color sapphire #7dc4e4; -@define-color sky #91d7e3; -@define-color teal #8bd5ca; -@define-color green #a6da95; -@define-color yellow #eed49f; -@define-color peach #f5a97f; -@define-color maroon #ee99a0; -@define-color red #ed8796; -@define-color mauve #c6a0f6; -@define-color pink #f5bde6; -@define-color flamingo #f0c6c6; -@define-color rosewater #f4dbd6; diff --git a/config/waybar/themes/catppuccin/themes/mocha.css b/config/waybar/themes/catppuccin/themes/mocha.css deleted file mode 100644 index 98e218a..0000000 --- a/config/waybar/themes/catppuccin/themes/mocha.css +++ /dev/null @@ -1,37 +0,0 @@ -/* -* -* Catppuccin Mocha palette -* Maintainer: rubyowo -* -*/ - -@define-color base #1e1e2e; -@define-color mantle #181825; -@define-color crust #11111b; - -@define-color text #cdd6f4; -@define-color subtext0 #a6adc8; -@define-color subtext1 #bac2de; - -@define-color surface0 #313244; -@define-color surface1 #45475a; -@define-color surface2 #585b70; - -@define-color overlay0 #6c7086; -@define-color overlay1 #7f849c; -@define-color overlay2 #9399b2; - -@define-color blue #89b4fa; -@define-color lavender #b4befe; -@define-color sapphire #74c7ec; -@define-color sky #89dceb; -@define-color teal #94e2d5; -@define-color green #a6e3a1; -@define-color yellow #f9e2af; -@define-color peach #fab387; -@define-color maroon #eba0ac; -@define-color red #f38ba8; -@define-color mauve #cba6f7; -@define-color pink #f5c2e7; -@define-color flamingo #f2cdcd; -@define-color rosewater #f5e0dc; diff --git a/config/zk/config.toml b/config/zk/config.toml deleted file mode 100644 index e97936f..0000000 --- a/config/zk/config.toml +++ /dev/null @@ -1,205 +0,0 @@ -# zk configuration file -# -# Uncomment the properties you want to customize. - -# NOTE SETTINGS -# -# Defines the default options used when generating new notes. -[note] - -# Language used when writing notes. -# This is used to generate slugs or with date formats. -#language = "en" - -# The default title used for new note, if no `--title` flag is provided. -#default-title = "Untitled" - -# Template used to generate a note's filename, without extension. -filename = "{{slug title}}" - -# The file extension used for the notes. -#extension = "md" - -# Template used to generate a note's content. -# If not an absolute path, it is relative to .zk/templates/ -template = "default.md" - -# Path globs ignored while indexing existing notes. -#ignore = [ -# "drafts/*", -# "log.md" -#] - -# Configure random ID generation. - -# The charset used for random IDs. You can use: -# * letters: only letters from a to z. -# * numbers: 0 to 9 -# * alphanum: letters + numbers -# * hex: hexadecimal, from a to f and 0 to 9 -# * custom string: will use any character from the provided value -#id-charset = "alphanum" - -# Length of the generated IDs. -id-length = 8 - -# Letter case for the random IDs, among lower, upper or mixed. -#id-case = "lower" - - -# EXTRA VARIABLES -# -# A dictionary of variables you can use for any custom values when generating -# new notes. They are accessible in templates with {{extra.}} -[extra] - -#key = "value" - - -# GROUP OVERRIDES -# -# You can override global settings from [note] and [extra] for a particular -# group of notes by declaring a [group.""] section. -# -# Specify the list of directories which will automatically belong to the group -# with the optional `paths` property. -# -# Omitting `paths` is equivalent to providing a single path equal to the name of -# the group. This can be useful to quickly declare a group by the name of the -# directory it applies to. - -#[group.""] -#paths = ["", ""] -#[group."".note] -#filename = "{{format-date now}}" -#[group."".extra] -#key = "value" - - -# MARKDOWN SETTINGS -[format.markdown] - -# Format used to generate links between notes. -# Either "wiki", "markdown" or a custom template. Default is "markdown". -link-format = "wiki" -# Indicates whether a link's path will be percent-encoded. -# Defaults to true for "markdown" format and false for "wiki" format. -#link-encode-path = true -# Indicates whether a link's path file extension will be removed. -# Defaults to true. -#link-drop-extension = true - -# Enable support for #hashtags. -hashtags = true -# Enable support for :colon:separated:tags:. -colon-tags = false -# Enable support for Bear's #multi-word tags# -# Hashtags must be enabled for multi-word tags to work. -multiword-tags = false - - -# EXTERNAL TOOLS -[tool] - -# Default editor used to open notes. When not set, the EDITOR or VISUAL -# environment variables are used. -#editor = "vim" - -# Pager used to scroll through long output. If you want to disable paging -# altogether, set it to an empty string "". -#pager = "less -FIRX" - -fzf-line = "{{style 'title' title}}{{#each tags}} #{{this}}{{/each}}" -fzf-preview = "bat -p --color always --style header,grid {-1}" -fzf-bind-new = "" -fzf-options = """ - --layout reverse - --height 100% - --no-hscroll - --preview-window down,wrap,border-none,70% - --header "C-A: New note in root with query as slug\nC-N: New note respecting query path" - --bind "ctrl-n:abort+execute(mkdir -p $(dirname '{q}') && zk new $(dirname '{q}') --title $(basename '{q}'))" - --bind "ctrl-a:abort+execute(mkdir -p $(dirname '{q}') && zk new $(dirname '{q}') --title $(basename '{q}'))" -""" - - -# LSP -# -# Configure basic editor integration for LSP-compatible editors. -# See https://github.com/zk-org/zk/blob/main/docs/editors-integration.md -# -[lsp] - -[lsp.diagnostics] -# Each diagnostic can have for value: none, hint, info, warning, error - -# Report titles of wiki-links as hints. -# wiki-title = "hint" -# Warn for dead links between notes. -dead-link = "error" - -[lsp.completion] -# Customize the completion pop-up of your LSP client. - -# Show the note title in the completion pop-up, or fallback on its path if empty. -#note-label = "" -# Filter out the completion pop-up using the note title or its path. -#note-filter-text = " " -# Show the note filename without extension as detail. -#note-detail = "" - - -# NAMED FILTERS -# -# A named filter is a set of note filtering options used frequently together. -# -[filter] - -# Matches the notes created the last two weeks. For example: -# $ zk list recents --limit 15 -# $ zk edit recents --interactive -#recents = "--sort created- --created-after 'last two weeks'" - - -# COMMAND ALIASES -# -# Aliases are user commands called with `zk [] []`. -# -# The alias will be executed with `$SHELL -c`, please refer to your shell's -# man page to see the available syntax. In most shells: -# * $@ can be used to expand all the provided flags and arguments -# * you can pipe commands together with the usual | character -# -[alias] -# Here are a few aliases to get you started. - -# Shortcut to a command. -ls = "zk list --interactive --sort path+ $@" - -e = "zk edit --interactive --sort path+ $@" - -# Default flags for an existing command. -#list = "zk list --quiet $@" - -# Edit the last modified note. -#editlast = "zk edit --limit 1 --sort modified- $@" - -# Edit the notes selected interactively among the notes created the last two weeks. -# This alias doesn't take any argument, so we don't use $@. -#recent = "zk edit --sort created- --created-after 'last two weeks' --interactive" - -# Print paths separated with colons for the notes found with the given -# arguments. This can be useful to expand a complex search query into a flag -# taking only paths. For example: -# zk list --link-to "`zk path -m potatoe`" -#path = "zk list --quiet --format {{path}} --delimiter , $@" - -# Show a random note. -#lucky = "zk list --quiet --format full --sort random --limit 1" - -# Returns the Git history for the notes found with the given arguments. -# Note the use of a pipe and the location of $@. -#hist = "zk list --format path --delimiter0 --quiet $@ | xargs -t -0 git log --patch --" - -# Edit this configuration file. -#conf = '$EDITOR "$ZK_NOTEBOOK_DIR/.zk/config.toml"' diff --git a/exports/Gnome Extensions b/exports/Gnome Extensions deleted file mode 100644 index 26b4723..0000000 --- a/exports/Gnome Extensions +++ /dev/null @@ -1 +0,0 @@ -{"extensions":{"vertical-workspaces@G-dH.github.com":{"/org/gnome/shell/extensions/vertical-workspaces/":"[/]\ncenter-app-grid=true\ncenter-dash-to-ws=false\ncenter-search=true\ndash-position=0\nfix-ubuntu-dock=true\noverview-bg-blur-sigma=20\noverview-mode=0\nshow-bg-in-overview=false\nshow-search-entry=true\nshow-ws-preview-bg=true\nshow-ws-switcher-bg=false\nshow-wst-labels=0\nstartup-state=1\nworkspace-animation=0\nws-thumbnails-position=2"},"easy_docker_containers@red.software.systems":{"/red/software/systems/easy_docker_containers/":""},"user-theme@gnome-shell-extensions.gcampax.github.com":{"/org/gnome/shell/extensions/user-theme/":"[/]\nname='Catppuccin-Macchiato-Standard-Teal-Dark'"},"gnome-shell-go-to-last-workspace@github.com":{"/org/gnome/shell/extensions/go-to-last-workspace/":"[/]\nshortcut-key=['bar']"},"widgets@aylur":{"/org/gnome/shell/extensions/aylurs-widgets/":"[/]\nbackground-clock=false\nbattery-bar=false\ndash-app-icon-size=46\ndash-apps-cols=5\ndash-apps-rows=5\ndash-board=true\ndash-button-enable=true\ndash-button-label=''\ndash-button-show-icon=false\ndash-hide-activities=true\ndash-layout=0\ndash-levels-show-battery=false\ndash-levels-show-storage=false\ndash-link-names=['reddit', 'youtube', 'gmail', 'twitter', 'github']\ndash-link-urls=['https://www.reddit.com/', 'https://www.youtube.com/', 'https://www.gmail.com/', 'https://twitter.com/', 'https://www.github.com/']\ndash-shortcut=['Escape']\ndate-menu-date-format='%I:%M - %d de %b'\ndate-menu-hide-notifications=true\ndate-menu-hide-stock-mpris=true\ndate-menu-indicator-position=2\ndate-menu-mirror=false\ndate-menu-offset=0\ndate-menu-position=1\ndate-menu-remove-padding=true\ndate-menu-show-clocks=false\ndate-menu-show-media=false\ndate-menu-show-system-levels=false\ndate-menu-show-user=false\ndate-menu-show-weather=false\ndate-menu-tweaks=true\nmedia-player-cover-height=70\nmedia-player-cover-width=70\nmedia-player-enable-controls=false\nmedia-player-enable-track=true\nmedia-player-offset=1\nmedia-player-position=1\nmedia-player-show-volume=false\nmedia-player-style=2\nnotification-indicator=false\npower-menu=false\nquick-settings-adjust-roundness=true\nquick-settings-show-media=false\nquick-settings-show-notifications=true\nquick-settings-show-system-levels=false\nquick-settings-style=2\nworkspace-indicator-offset=2\nworkspace-indicator-show-names=false"},"floating-panel@aylur":{}},"keybindings":{"/org/gnome/mutter/keybindings/":"","/org/gnome/mutter/wayland/keybindings/":"","/org/gnome/shell/keybindings/":"","/org/gnome/desktop/wm/keybindings/":"[/]\nalways-on-top=['t']\nclose=['F4', 'q']\nminimize=['z']\nmove-to-workspace-1=['1']\nmove-to-workspace-10=['0']\nmove-to-workspace-11=@as []\nmove-to-workspace-2=['2']\nmove-to-workspace-3=['3']\nmove-to-workspace-4=['4']\nmove-to-workspace-5=['5']\nmove-to-workspace-6=['6']\nmove-to-workspace-7=['7']\nmove-to-workspace-8=['8']\nmove-to-workspace-9=['9']\nswitch-applications=@as []\nswitch-applications-backward=@as []\nswitch-group=@as []\nswitch-group-backward=@as []\nswitch-to-workspace-1=['1']\nswitch-to-workspace-10=['0']\nswitch-to-workspace-2=['2']\nswitch-to-workspace-3=['3']\nswitch-to-workspace-4=['4']\nswitch-to-workspace-5=['5']\nswitch-to-workspace-6=['6']\nswitch-to-workspace-7=['7']\nswitch-to-workspace-8=['8']\nswitch-to-workspace-9=['9']\nswitch-to-workspace-down=['Down', 'KP_Down', 'u']\nswitch-to-workspace-up=['Up', 'KP_Up', 'i']\nswitch-windows=['Tab']\nswitch-windows-backward=['Tab']\ntoggle-on-all-workspaces=['p']","/org/gnome/settings-daemon/plugins/media-keys/":"[/]\ncustom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']\nemail=@as []\nhelp=@as []\nhome=@as []\nwww=@as []\n\n[custom-keybindings/custom0]\nbinding='Return'\ncommand='gnome-terminal'\nname='Launch Terminal'"},"tweaks":{"/org/gnome/desktop/background/":"","/org/gnome/desktop/calendar/":"","/org/gnome/desktop/input-sources/":"[/]\nshow-all-sources=false\nsources=[('xkb', 'latam')]\nxkb-options=@as []","/org/gnome/desktop/interface/":"[/]\ncolor-scheme='prefer-dark'\ncursor-size=32\ncursor-theme='Catppuccin-Macchiato-Teal-Cursors'\nenable-animations=true\nfont-antialiasing='grayscale'\nfont-hinting='slight'\ngtk-theme='Catppuccin-Macchiato-Standard-Teal-Dark'\nicon-theme='Papirus-Dark'\ntoolkit-accessibility=false","/org/gnome/desktop/peripherals/":"[keyboard]\nnumlock-state=true\nremember-numlock-state=true\n\n[mouse]\nspeed=0.68141592920353977\n\n[touchpad]\ntwo-finger-scrolling-enabled=true","/org/gnome/desktop/screensaver/":"[/]\npicture-uri='file:///usr/share/backgrounds/gnome/drool-l.svg'","/org/gnome/desktop/sound/":"[/]\nallow-volume-above-100-percent=true\nevent-sounds=true\ntheme-name='__custom'","/org/gnome/desktop/wm/preferences/":"[/]\nnum-workspaces=10\nresize-with-right-button=true\nworkspace-names=@as []","/org/gnome/mutter/":"[/]\ndynamic-workspaces=false\nedge-tiling=true\nexperimental-features=['scale-monitor-framebuffer', 'x11-randr-fractional-scaling']\noverlay-key='Super_L'","/org/gnome/settings-daemon/plugins/xsettings/":""}} \ No newline at end of file diff --git a/exports/flatpak-apps.txt b/exports/flatpak-apps.txt deleted file mode 100644 index ddde01c..0000000 --- a/exports/flatpak-apps.txt +++ /dev/null @@ -1,19 +0,0 @@ -com.brave.Browser -com.github.iwalton3.jellyfin-media-player -com.github.qarmin.czkawka -com.github.tchx84.Flatseal -com.hunterwittenborn.Celeste -com.neatdecisions.Detwinner -com.slack.Slack -com.spotify.Client -in.srev.guiscrcpy -io.bassi.Amberol -io.beekeeperstudio.Studio -io.github.realmazharhussain.GdmSettings -io.gitlab.librewolf-community -me.kozec.syncthingtk -nz.mega.MEGAsync -org.gnome.World.PikaBackup -org.kde.kid3 -org.signal.Signal -re.sonny.Junction diff --git a/exports/gnome-minimal.json b/exports/gnome-minimal.json deleted file mode 100644 index d0a36a0..0000000 --- a/exports/gnome-minimal.json +++ /dev/null @@ -1 +0,0 @@ -{"extensions":{"just-perfection-desktop@just-perfection":{"/org/gnome/shell/extensions/just-perfection/":""},"dash-to-dock@micxgx.gmail.com":{"/org/gnome/shell/extensions/dash-to-dock/":"[/]\napply-custom-theme=true\nbackground-opacity=0.80000000000000004\ncustom-theme-shrink=false\ndash-max-icon-size=48\ndisable-overview-on-startup=true\ndock-position='RIGHT'\nheight-fraction=0.90000000000000002\nhot-keys=false\npreferred-monitor=-2\npreferred-monitor-by-connector='eDP-1'"},"caffeine@patapon.info":{"/org/gnome/shell/extensions/caffeine/":"[/]\nindicator-position-max=1"},"arcmenu@arcmenu.com":{"/org/gnome/shell/extensions/arcmenu/":"[/]\ncontext-menu-shortcuts=[['', '', 'org.gnome.Extensions.desktop'], ['ArcMenu Settings', '/home/aleidk/.local/share/gnome-shell/extensions/arcmenu@arcmenu.com/icons/arcmenu-logo-symbolic.svg', 'ArcMenu_Settings'], ['Panel Extension Settings', 'application-x-addon-symbolic', 'ArcMenu_PanelExtensionSettings'], ['Separator', 'list-remove-symbolic', 'ArcMenu_Separator'], ['Power Options', 'system-shutdown-symbolic', 'ArcMenu_PowerOptions'], ['Activities Overview', 'view-fullscreen-symbolic', 'ArcMenu_ActivitiesOverview'], ['Show Desktop', 'computer-symbolic', 'ArcMenu_ShowDesktop']]\nenable-menu-hotkey=false\nenable-standlone-runner-menu=true\nhide-overview-on-startup=true\nmenu-background-color='rgba(48,48,49,0.98)'\nmenu-border-color='rgb(60,60,60)'\nmenu-button-appearance='Icon'\nmenu-foreground-color='rgb(223,223,223)'\nmenu-item-active-bg-color='rgb(25,98,163)'\nmenu-item-active-fg-color='rgb(255,255,255)'\nmenu-item-hover-bg-color='rgb(21,83,158)'\nmenu-item-hover-fg-color='rgb(255,255,255)'\nmenu-layout='Elementary'\nmenu-separator-color='rgba(255,255,255,0.1)'\nprefs-visible-page=0\nrunner-menu-custom-hotkey=['d']\nrunner-position='Centered'\nrunner-search-display-style='List'\nrunner-show-frequent-apps=true\nsearch-entry-border-radius=(true, 25)"},"appindicatorsupport@rgcjonas.gmail.com":{"/org/gnome/shell/extensions/appindicator/":""},"gnome-shell-go-to-last-workspace@github.com":{"/org/gnome/shell/extensions/go-to-last-workspace/":"[/]\nshortcut-key=['bar']"},"easy_docker_containers@red.software.systems":{"/red/software/systems/easy_docker_containers/":""}},"keybindings":{"/org/gnome/mutter/keybindings/":"[/]\ntoggle-tiled-left=['h']\ntoggle-tiled-right=['l']","/org/gnome/mutter/wayland/keybindings/":"","/org/gnome/shell/keybindings/":"[/]\nfocus-active-notification=@as []\nscreenshot=['Print']\nswitch-to-application-1=@as []\nswitch-to-application-2=@as []\nswitch-to-application-3=@as []\nswitch-to-application-4=@as []\nswitch-to-application-5=@as []\nswitch-to-application-6=@as []\nswitch-to-application-7=@as []\nswitch-to-application-8=@as []\nswitch-to-application-9=@as []\ntoggle-message-tray=@as []","/org/gnome/desktop/wm/keybindings/":"[/]\nclose=['q']\nmaximize=@as []\nminimize=['n']\nmove-to-workspace-1=['1']\nmove-to-workspace-10=['0']\nmove-to-workspace-2=['2']\nmove-to-workspace-3=['3']\nmove-to-workspace-4=['4']\nmove-to-workspace-5=['5']\nmove-to-workspace-6=['6']\nmove-to-workspace-7=['7']\nmove-to-workspace-8=['8']\nmove-to-workspace-9=['9']\nswitch-applications=@as []\nswitch-applications-backward=@as []\nswitch-group=@as []\nswitch-to-workspace-1=['1']\nswitch-to-workspace-10=['0']\nswitch-to-workspace-2=['2']\nswitch-to-workspace-3=['3']\nswitch-to-workspace-4=['4']\nswitch-to-workspace-5=['5']\nswitch-to-workspace-6=['6']\nswitch-to-workspace-7=['7']\nswitch-to-workspace-8=['8']\nswitch-to-workspace-9=['9']\nswitch-windows=['Tab', 'Tab']\nswitch-windows-backward=['Tab', 'Tab']\ntoggle-fullscreen=['f']\ntoggle-maximized=['m']\ntoggle-on-all-workspaces=['p']","/org/gnome/settings-daemon/plugins/media-keys/":"[/]\ncustom-keybindings=['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']\non-screen-keyboard=['F11']\nscreensaver=@as []\n\n[custom-keybindings/custom0]\nbinding='Return'\ncommand='alacritty'\nname='Terminal'"},"tweaks":{"/org/gnome/desktop/background/":"[/]\npicture-options='zoom'\npicture-uri='/home/aleidk/.config/background'\npicture-uri-dark='/home/aleidk/.config/background'","/org/gnome/desktop/calendar/":"","/org/gnome/desktop/input-sources/":"[/]\ncurrent=uint32 0\nsources=[('xkb', 'latam')]\nxkb-options=['terminate:ctrl_alt_bksp', 'caps:escape']","/org/gnome/desktop/interface/":"[/]\ncolor-scheme='prefer-dark'\ncursor-theme='Catppuccin-Macchiato-Teal-Cursors'\nenable-animations=true\nfont-antialiasing='grayscale'\nfont-hinting='slight'\ngtk-theme='Catppuccin-Macchiato-Teal-Dark'\nlocate-pointer=false\nshow-battery-percentage=true\ntoolkit-accessibility=false","/org/gnome/desktop/peripherals/":"[stylus/9f0f8ae3]\neraser-pressure-curve=[0, 0, 100, 100]\npressure-curve=[0, 0, 100, 100]\n\n[touchpad]\ntap-to-click=true\ntwo-finger-scrolling-enabled=true","/org/gnome/desktop/screensaver/":"","/org/gnome/desktop/sound/":"","/org/gnome/desktop/wm/preferences/":"[/]\nnum-workspaces=6","/org/gnome/mutter/":"[/]\noverlay-key='Super_L'\n\n[keybindings]\ntoggle-tiled-left=['h']\ntoggle-tiled-right=['l']","/org/gnome/settings-daemon/plugins/xsettings/":""}} \ No newline at end of file From baa1a6e0532da2f70cb7197ff0355867f8cdb98b Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 11 Dec 2024 09:03:31 -0300 Subject: [PATCH 032/152] add support for ansible yaml syntax --- config/nvim/lua/aleidk/plugins-ide/ai.lua | 1 + config/nvim/lua/aleidk/plugins-ide/lsp.lua | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins-ide/ai.lua b/config/nvim/lua/aleidk/plugins-ide/ai.lua index a4f2f00..fefdb2d 100644 --- a/config/nvim/lua/aleidk/plugins-ide/ai.lua +++ b/config/nvim/lua/aleidk/plugins-ide/ai.lua @@ -83,6 +83,7 @@ return { }, question_header = " " .. vim.env.USER or "User" .. " ", answer_header = " Copilot ", + auto_follow_cursor = false, window = { layout = 'float', -- 'vertical', 'horizontal', 'float', 'replace' width = 0.8, -- fractional width of parent, or absolute width in columns when > 1 diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index fd35eea..0569701 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -69,7 +69,7 @@ return { end -- Enable the following language servers - -- To see options and cofigurations: https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md + -- To see options and cofigurations `:help lspconfig-all` local servers = { astro = {}, bashls = {}, @@ -132,7 +132,16 @@ return { }, }, sqlls = {}, - yamlls = {}, + yamlls = { + settings = { + yaml = { + schemas = {}, + customTags = { + "!vault" -- ansible encrypted vars support + } + } + }, + }, lua_ls = { settings = { Lua = { From 4b4f219ebd623ac2380e9fbb94344dd2538c6ea2 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 17 Dec 2024 12:07:00 -0300 Subject: [PATCH 033/152] minor updates --- .../lua/aleidk/plugins-ide/completion.lua | 2 +- config/nvim/lua/aleidk/plugins-ide/lsp.lua | 1 - .../lua/aleidk/plugins-ide/task-runner.lua | 36 ++++++++++++++++--- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins-ide/completion.lua b/config/nvim/lua/aleidk/plugins-ide/completion.lua index de47bb6..c91e890 100644 --- a/config/nvim/lua/aleidk/plugins-ide/completion.lua +++ b/config/nvim/lua/aleidk/plugins-ide/completion.lua @@ -60,7 +60,7 @@ return { auto_brackets = { enabled = true }, expand_snippet = function(snippet) require('luasnip').lsp_expand(snippet) end, }, - trigger = { signature_help = { enabled = true } }, + -- trigger = { signature_help = { enabled = true } }, keymap = { preset = "enter", [""] = { 'select_next', 'fallback' }, diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index 0569701..5adc81a 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -97,7 +97,6 @@ return { }, html = {}, marksman = {}, - pyright = {}, phpactor = {}, gopls = { settings = { diff --git a/config/nvim/lua/aleidk/plugins-ide/task-runner.lua b/config/nvim/lua/aleidk/plugins-ide/task-runner.lua index 3af9f6d..d91d74e 100644 --- a/config/nvim/lua/aleidk/plugins-ide/task-runner.lua +++ b/config/nvim/lua/aleidk/plugins-ide/task-runner.lua @@ -67,12 +67,40 @@ return { { "pm", "OverseerTaskAction", desc = "Manage task" }, { "po", "OverseerQuickAction vsplit", desc = "Open task in a vsplit" }, { "pp", "OverseerRun", desc = "Run task" }, - { "pq", "OverseerQuickAction close win", desc = "Close task's windows" }, - { "ps", "OverseerSaveBundle", desc = "Save tasks" }, - { "pt", "OverseerToggle", desc = "Toggle tasks list" }, - { "pw", "OverseerQuickAction watch", desc = "Watch task" }, + { + "pP", + function() + local overseer = require('overseer') + overseer.run_template({}, function(task) + if task then + task:add_components({ "restart_on_save" }) + overseer.run_action(task, "hsplit") + end + end) + end, + desc = "Run task and watch it" + }, + { "pq", "OverseerQuickAction close win", desc = "Close task's windows" }, + { "ps", "OverseerSaveBundle", desc = "Save tasks" }, + { "pt", "OverseerToggle", desc = "Toggle tasks list" }, + { "pw", "OverseerQuickAction watch", desc = "Watch task" }, }, opts = { + templates = { + "cargo", + "cargo-make", + "composer", + "deno", + "just", + "mage", + "make", + "mix", + "npm", + "rake", + "task", + "tox", + "vscode", + }, actions = { ["hsplit"] = { desc = "open terminal in a horizontal split", From c36ae930782ab70d2dce4362429c9935258f96c2 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 19 Dec 2024 18:06:35 -0300 Subject: [PATCH 034/152] minor updates --- config/zsh/zprofile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/config/zsh/zprofile b/config/zsh/zprofile index ebeea46..2990987 100644 --- a/config/zsh/zprofile +++ b/config/zsh/zprofile @@ -36,6 +36,11 @@ export ESLINT_USE_FLAT_CONFIG=true update_path "$PNPM_HOME" {{ /if }} +{{ #if (command_success "[ -d $HOME/.bun ]") }} + export BUN_INSTALL="$HOME/.bun" + update_path "$BUN_INSTALL/bin" +{{ /if }} + {{ #if (is_executable "rye") }} source "$HOME/.rye/env" {{ /if }} From 1907cbfdf05a258fe0c5d2a9d5d9395b7cf5c36b Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 23 Dec 2024 09:30:20 -0300 Subject: [PATCH 035/152] update tmux & nvim status lines fixes #14 --- .../nvim/lua/aleidk/plugins-core/lualine.lua | 137 +++++------------- config/tmux/tmux.conf | 101 +++++++++---- 2 files changed, 109 insertions(+), 129 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins-core/lualine.lua b/config/nvim/lua/aleidk/plugins-core/lualine.lua index 83aaede..34e872e 100644 --- a/config/nvim/lua/aleidk/plugins-core/lualine.lua +++ b/config/nvim/lua/aleidk/plugins-core/lualine.lua @@ -66,18 +66,6 @@ return { end end - local trouble = require("trouble") - local symbols = trouble.statusline({ - mode = "lsp_document_symbols", - groups = {}, - title = false, - filter = { range = true }, - format = "{kind_icon}{symbol.name:Normal}", - -- The following line is needed to fix the background color - -- Set it to the lualine section you want to use - hl_group = "lualine_c_normal", - }) - return { options = { theme = "catppuccin", @@ -99,6 +87,45 @@ return { lualine_b = {}, lualine_c = { { "branch", icon = icons.git.branch }, + { + "diff", + symbols = { + added = icons.git.added, + modified = icons.git.modified, + removed = icons.git.removed, + }, + source = diff_source, + }, + { codecompanion_status }, + { + "diagnostics", + symbols = { + error = icons.diagnostics.Error, + warn = icons.diagnostics.Warn, + info = icons.diagnostics.Info, + hint = icons.diagnostics.Hint, + }, + }, + "filetype", + { + "filename", + path = 1, + symbols = { + modified = "●", -- Text to show when the buffer is modified + alternate_file = "#", -- Text to show to identify the alternate file + directory = "", -- Text to show when the buffer is a directory + }, + }, + }, + lualine_x = { + { + "overseer", + }, + { + function() + return require("grapple").statusline() + end, + }, { "copilot", cond = function() @@ -126,21 +153,6 @@ return { spinner_color = palete.mauve }, }, - { codecompanion_status }, - { - symbols.get, - cond = symbols.has, - }, - { - "overseer", - }, - }, - lualine_x = { - { - function() - return require("grapple").statusline() - end, - }, }, lualine_y = { { @@ -163,83 +175,14 @@ return { }, lualine_z = {}, }, - winbar = { - lualine_b = { - { - "filename", - path = 1, - symbols = { - modified = " ●", -- Text to show when the buffer is modified - alternate_file = "#", -- Text to show to identify the alternate file - directory = "", -- Text to show when the buffer is a directory - }, - }, - }, - lualine_y = { - { - "diff", - symbols = { - added = icons.git.added, - modified = icons.git.modified, - removed = icons.git.removed, - }, - source = diff_source, - }, - { - "diagnostics", - symbols = { - error = icons.diagnostics.Error, - warn = icons.diagnostics.Warn, - info = icons.diagnostics.Info, - hint = icons.diagnostics.Hint, - }, - }, - }, - }, - inactive_winbar = { - lualine_b = { - { - "filename", - path = 1, - symbols = { - modified = " ●", -- Text to show when the buffer is modified - alternate_file = "#", -- Text to show to identify the alternate file - directory = "", -- Text to show when the buffer is a directory - }, - }, - }, - lualine_y = { - { - "diff", - symbols = { - added = icons.git.added, - modified = icons.git.modified, - removed = icons.git.removed, - }, - source = diff_source, - }, - { - "diagnostics", - symbols = { - error = icons.diagnostics.Error, - warn = icons.diagnostics.Warn, - info = icons.diagnostics.Info, - hint = icons.diagnostics.Hint, - }, - }, - }, - }, extensions = { - "neo-tree", "lazy", - "fugitive", "fzf", "man", "mason", - "nvim-tree", "quickfix", - "symbols-outline", "trouble", + "toggleterm", }, } end, diff --git a/config/tmux/tmux.conf b/config/tmux/tmux.conf index deca653..8e62cd1 100644 --- a/config/tmux/tmux.conf +++ b/config/tmux/tmux.conf @@ -15,7 +15,6 @@ bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "wl-copy" set -sg escape-time 0 set-option -g focus-events on set-option -g renumber-windows on -set -g detach-on-destroy off # don't exit from tmux when closing a session # Yazi need this config to show image preview set -g allow-passthrough on @@ -63,8 +62,6 @@ bind n new-window -c "#{pane_current_path}" bind h previous-window bind l next-window -# set -g status-right '#(bartib current | sed -n 3p | awk \'{print $NF}\')' - # ╭──────────────────────────────────────────────────────────╮ # │ Plugins │ # ╰──────────────────────────────────────────────────────────╯ @@ -83,6 +80,7 @@ set -g @plugin 'tmux-plugins/tpm' set -g @plugin 'tmux-plugins/tmux-copycat'` set -g @plugin 'laktak/extrakto' set -g @plugin 'christoomey/vim-tmux-navigator' +set -g @plugin 'soyuka/tmux-current-pane-hostname' # ╭──────────────────────────────────────────────────────────╮ # │ Session Management │ @@ -101,30 +99,79 @@ set -g @resurrect-processes 'vi vim nvim man "~pnpm dev->pnpm dev *"' set -g @plugin 'catppuccin/tmux' set -g @catppuccin_flavor 'macchiato' -set -g @catppuccin_status_default "on" -set -g @catppuccin_status_background "default" +# set -g @catppuccin_status_default "on" +# set -g @catppuccin_status_background "default" +# +# set -g @catppuccin_window_right_separator "█ " +# set -g @catppuccin_window_number_position "right" +# set -g @catppuccin_window_middle_separator " | " +# set -g @catppuccin_window_flags "no" +# +# set -g @catppuccin_window_default_fill "none" +# set -g @catppuccin_window_current_fill "all" +# +# set -g @catppuccin_window_default_text "#{?window_zoomed_flag, ,}#W" +# set -g @catppuccin_window_current_text "#{?window_zoomed_flag, ,}#W" +# set -g @catppuccin_window_current_text_color "#{thm_blue}" # text color +# +# set -g @catppuccin_status_modules_right "directory session" +# set -g @catppuccin_status_left_separator "" +# set -g @catppuccin_status_right_separator "" +# set -g @catppuccin_status_fill "all" +# set -g @catppuccin_status_connect_separator "yes" +# +# set -g @catppuccin_session_color "#{thm_red}" +# set -g @catppuccin_directory_color "#{thm_magenta}" +# set -g @catppuccin_directory_text "#{pane_current_path}" -set -g @catppuccin_window_right_separator "█ " -set -g @catppuccin_window_number_position "right" -set -g @catppuccin_window_middle_separator " | " -set -g @catppuccin_window_status "no" +# new -set -g @catppuccin_window_default_fill "none" -set -g @catppuccin_window_current_fill "all" +set -g @catppuccin_status_background "none" +set -g @catppuccin_window_status_style "none" +set -g @catppuccin_pane_status_enabled "off" +set -g @catppuccin_pane_border_status "off" -set -g @catppuccin_window_default_text "#{?window_zoomed_flag, ,}#W" -set -g @catppuccin_window_current_text "#{?window_zoomed_flag, ,}#W" -set -g @catppuccin_window_current_color "#{thm_blue}" # text color +# status left look and feel +set -g status-left-length 100 +set -g status-left "" +set -ga status-left "#{?client_prefix,#{#[bg=#{@thm_teal},fg=#{@thm_bg},bold]  #S },#{#[bg=#{@thm_bg},fg=#{@thm_teal}]  #S }}" # session +set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_overlay_0},none]│" +set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_blue}]  #{=/-32/...:#{s|$USER|~|:#{b:pane_current_path}}} " # path +set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_overlay_0},none]│" +set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_maroon}]  #{pane_current_command} " +set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_overlay_0},none]#{?window_zoomed_flag,│,}" +set -ga status-left "#[bg=#{@thm_bg},fg=#{@thm_flamingo}]#{?window_zoomed_flag,  zoom ,}" -set -g @catppuccin_status_modules_right "directory session" -set -g @catppuccin_status_left_separator "" -set -g @catppuccin_status_right_separator "" -set -g @catppuccin_status_fill "all" -set -g @catppuccin_status_connect_separator "yes" +# status right look and feel +set -g status-right-length 100 +set -g status-right "" +set -ga status-right "#{?#{pane_ssh_connected},#{#[bg=#{@thm_mauve},fg=#{@thm_bg},bold]  #U@#H },#{#[bg=#{@thm_bg},fg=#{@thm_text}]  #U@#H }}" # SSH connection -set -g @catppuccin_session_color "#{thm_red}" -set -g @catppuccin_directory_color "#{thm_magenta}" -set -g @catppuccin_directory_text "#{pane_current_path}" +# Configure Tmux +set -g status-position top +set -g status-style "bg=#{@thm_bg}" +set -g status-justify "absolute-centre" + +# pane border look and feel +setw -g pane-border-status top +setw -g pane-border-format "" +setw -g pane-active-border-style "bg=#{@thm_bg},fg=#{@thm_overlay_0}" +setw -g pane-border-style "bg=#{@thm_bg},fg=#{@thm_surface_0}" +setw -g pane-border-lines single + +# window look and feel +set -wg automatic-rename on +set -g automatic-rename-format "Window" + +set -g window-status-format " #I#{?#{!=:#{window_name},Window},: #W,} " +set -g window-status-style "bg=#{@thm_bg},fg=#{@thm_mauve}" +set -g window-status-last-style "bg=#{@thm_bg},fg=#{@thm_mauve}" +set -g window-status-activity-style "bg=#{@thm_red},fg=#{@thm_bg}" +set -g window-status-bell-style "bg=#{@thm_red},fg=#{@thm_bg},bold" +set -gF window-status-separator "#[bg=#{@thm_bg},fg=#{@thm_overlay_0}]│" + +set -g window-status-current-format " #I#{?#{!=:#{window_name},Window},: #W,} " +set -g window-status-current-style "bg=#{@thm_mauve},fg=#{@thm_bg},bold" # ╭──────────────────────────────────────────────────────────╮ # │ Scratch FLating Pane │ @@ -193,13 +240,3 @@ bind-key "f" run-shell "~/Repos/Private/dots/scripts/fzf-tmux-sessions" bind-key "F" run-shell -b "$HOME/.config/tmux/plugins/tmux-fzf/scripts/session.sh switch" # bind-key "F" run-shell -b "$HOME/.config/tmux/plugins/tmux-fzf/scripts/window.sh switch" - -# ╭──────────────────────────────────────────────────────────╮ -# │ Select stuff on screen │ -# ╰──────────────────────────────────────────────────────────╯ - -set -g @plugin 'fcsonline/tmux-thumbs' -set -g @thumbs-key g -set -g @thumbs-contrast 1 - -run-shell ~/.config/tmux/plugins/tmux-thumbs/tmux-thumbs.tmux From 502d0dc78a2775cbf19e7116292cb8a9775706f7 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 24 Dec 2024 08:32:31 -0300 Subject: [PATCH 036/152] update lazygit config --- config/lazygit/config.yml | 27 +++++++++++++++++--- config/nvim/lua/aleidk/plugins-ide/ai.lua | 30 +++++------------------ 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/config/lazygit/config.yml b/config/lazygit/config.yml index 422844f..c731239 100644 --- a/config/lazygit/config.yml +++ b/config/lazygit/config.yml @@ -282,12 +282,12 @@ git: disableForcePushing: false # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix - commitPrefix: + # commitPrefix: # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" - pattern: "" + # pattern: "" # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " - replace: "" + # replace: "" # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix branchPrefix: "" @@ -573,3 +573,24 @@ keybinding: bulkMenu: b commitMessage: commitMenu: + +customCommands: + - key: "C" + command: 'cog commit "{{ .Form.Type }} {{ .Form.Description }}" {{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}' + description: "Commit with cocogitto" + context: "files" + prompts: + - type: "menuFromCommand" + title: "Select the commit type" + key: "Type" + command: > + bash -c "cog commit --help | sed -n 's/.*\\[possible values: \\(.*\\)\\].*/\\1/p' | tr ', ' '\\n' | sed '/^$/d' | sort" + - type: "input" + title: "Enter the scope(s) of this change" + key: "Scopes" + - type: "input" + title: "Enter a short description of the change" + key: "Description" + - type: "confirm" + title: "Is the commit message correct?" + body: "{{ .Form.Type }}{{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}: {{ .Form.Description }}" diff --git a/config/nvim/lua/aleidk/plugins-ide/ai.lua b/config/nvim/lua/aleidk/plugins-ide/ai.lua index fefdb2d..463cb7c 100644 --- a/config/nvim/lua/aleidk/plugins-ide/ai.lua +++ b/config/nvim/lua/aleidk/plugins-ide/ai.lua @@ -56,30 +56,6 @@ return { The user can ask follow up question, which needs to follow the same rules. ]] }, - Explain = { - prompt = '> /COPILOT_EXPLAIN\n\nWrite an explanation for the selected code as paragraphs of text.', - }, - Review = { - prompt = '> /COPILOT_REVIEW\n\nReview the selected code.', - -- see config.lua for implementation - }, - Fix = { - prompt = - '> /COPILOT_GENERATE\n\nThere is a problem in this code. Rewrite the code to show it with the bug fixed.', - }, - Optimize = { - prompt = '> /COPILOT_GENERATE\n\nOptimize the selected code to improve performance and readability.', - }, - Docs = { - prompt = '> /COPILOT_GENERATE\n\nPlease add documentation comments to the selected code.', - }, - Tests = { - prompt = '> /COPILOT_GENERATE\n\nPlease generate tests for my code.', - }, - Commit = { - prompt = - '> #git:staged\n\nWrite commit message for the change with commitizen convention. Make sure the title has maximum 50 characters and message is wrapped at 72 characters. Wrap the whole message in code block with language gitcommit.', - }, }, question_header = " " .. vim.env.USER or "User" .. " ", answer_header = " Copilot ", @@ -162,5 +138,11 @@ return { end, desc = "Set debug level", }, + { + "ad", + "CopilotChatDocs", + desc = "Generate documentation", + mode = { "n", "v" }, + }, } } From d5f7a05b1a013a4191715d048ed39d9b3fc73bb6 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 16 Jan 2025 08:29:57 -0300 Subject: [PATCH 037/152] remove open bookmarks on start neovim --- .../lua/aleidk/plugins-base/bookmarks.lua | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins-base/bookmarks.lua b/config/nvim/lua/aleidk/plugins-base/bookmarks.lua index 239a03b..a68f973 100644 --- a/config/nvim/lua/aleidk/plugins-base/bookmarks.lua +++ b/config/nvim/lua/aleidk/plugins-base/bookmarks.lua @@ -18,29 +18,6 @@ return { config = function() local telescope = require("telescope") telescope.load_extension("grapple") - - -- Open graple window when open without arguments - local g = vim.api.nvim_create_augroup('Grapple-User', { clear = true }) - - vim.api.nvim_create_autocmd('StdinReadPre', { - group = g, - callback = function() - vim.g.read_from_stdin = 1 - end, - }) - - vim.api.nvim_create_autocmd('UIEnter', { - group = g, - callback = function() - if - vim.fn.argc() == 0 - and vim.api.nvim_buf_get_name(0) == '' - and vim.g.read_from_stdin == nil - then - telescope.extensions.grapple.tags() - end - end, - }) end, keys = { { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, From ca1ebd24fa94e88610d4af5612087f358ee4f91d Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 16 Jan 2025 08:30:21 -0300 Subject: [PATCH 038/152] update biome setup --- config/nvim/lua/aleidk/plugins-ide/linters.lua | 4 ---- config/nvim/lua/aleidk/plugins-ide/lsp.lua | 3 +++ 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/config/nvim/lua/aleidk/plugins-ide/linters.lua b/config/nvim/lua/aleidk/plugins-ide/linters.lua index 424f370..06aec9f 100644 --- a/config/nvim/lua/aleidk/plugins-ide/linters.lua +++ b/config/nvim/lua/aleidk/plugins-ide/linters.lua @@ -8,10 +8,6 @@ return { lint.linters.gitlint.args = { "--contrib", "contrib-title-conventional-commits", "--msg-filename", "-" } lint.linters_by_ft = { - javascript = { "biomejs" }, - typescript = { "biomejs" }, - javascriptreact = { "biomejs" }, - typescriptreact = { "biomejs" }, -- astro = { "eslint_d" }, python = { "ruff" }, sh = { "shellcheck" }, diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index 5adc81a..32fed8d 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -73,6 +73,9 @@ return { local servers = { astro = {}, bashls = {}, + biome = { + single_file_support = true, + }, cssls = {}, dockerls = {}, emmet_ls = { From 72c914e1ef2e2d363af7da09b2e2d1a794cbdfd1 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 16 Jan 2025 08:30:32 -0300 Subject: [PATCH 039/152] add remote.nvim plugin --- config/nvim/lazy-lock.json | 1 + .../lua/aleidk/plugins-ide/remote-sshfs.lua | 64 +++++++++++++++++-- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index aac2ace..8a2cc47 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -39,6 +39,7 @@ "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, "overseer.nvim": { "branch": "master", "commit": "10ee48ff96c8d1049efb278ea4c8cf9f3b0e4326" }, "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" }, "remote-sshfs.nvim": { "branch": "main", "commit": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d" }, "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, "smart-splits.nvim": { "branch": "master", "commit": "d8b0e772a0244169534b1fd57c1660c9bf323d26" }, diff --git a/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua b/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua index c5727cc..30f9134 100644 --- a/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua +++ b/config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua @@ -1,9 +1,59 @@ return { - "nosduco/remote-sshfs.nvim", - dependencies = { "nvim-telescope/telescope.nvim" }, - cmd = { "RemoteSSHFSConnect" }, - config = function() - require("remote-sshfs").setup({}) - require("telescope").load_extension("remote-sshfs") - end, + { + "nosduco/remote-sshfs.nvim", + dependencies = { "nvim-telescope/telescope.nvim" }, + cmd = { "RemoteSSHFSConnect" }, + config = function() + require("remote-sshfs").setup({}) + require("telescope").load_extension("remote-sshfs") + end, + }, + { + "amitds1997/remote-nvim.nvim", + version = "*", -- Pin to GitHub releases + dependencies = { + "nvim-lua/plenary.nvim", -- For standard functions + "MunifTanjim/nui.nvim", -- To build the plugin UI + "nvim-telescope/telescope.nvim", -- For picking b/w different remote methods + }, + opts = { + remote = { + copy_dirs = { + data = { + base = vim.fn.stdpath("data"), -- Path from where data has to be copied. You can choose to copy entire path or subdirectories inside using `dirs` + dirs = { "lazy" }, -- Directories inside `base` to copy over. If this is set to string "*"; it means entire `base` should be copied over + compression = { + enabled = true, -- Should data be compressed before uploading + additional_opts = { "--exclude-vcs" }, -- Any arguments that can be passed to `tar` for compression can be specified here to improve your compression + }, + }, + -- cache = { + -- base = vim.fn.stdpath("cache"), + -- dirs = {}, + -- compression = { + -- enabled = true, + -- }, + -- }, + state = { + base = vim.fn.stdpath("state"), + dirs = {}, + compression = { + enabled = true, + }, + }, + }, + }, + client_callback = function(port, workspace_config) + local cmd = ("tmux new-window 'nvim --server localhost:%s --remote-ui' && tmux select-window -t:$"):format(port) + vim.fn.jobstart(cmd, { + detach = true, + on_exit = function(job_id, exit_code, event_type) + -- This function will be called when the job exits + print("Client", job_id, "exited with code", exit_code, "Event type:", event_type) + end, + }) + end, + }, + config = true, + } } From ca6a15812d55859cf4ea5415a3002cd0105cd29e Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 16 Jan 2025 08:30:42 -0300 Subject: [PATCH 040/152] minor updates --- config/zsh/aliases/aliases.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/zsh/aliases/aliases.zsh b/config/zsh/aliases/aliases.zsh index 4f0a39a..983382d 100644 --- a/config/zsh/aliases/aliases.zsh +++ b/config/zsh/aliases/aliases.zsh @@ -21,7 +21,7 @@ alias \ mkexec='chmod +x' # Search and Query Files -alias grep="rg --sort path --context 3" +alias grep="rg --sort path --pretty --context 3" # Quicly update Stuff alias vi-ssh="vi ~/.ssh/config" From 6a7b800f8c9639eb7ac675de9dd18b9649a43b4e Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 21 Jan 2025 10:31:01 -0300 Subject: [PATCH 041/152] update lsp setup for rust, toml and trouble plugin --- config/nvim/.luarc.json | 5 ----- .../nvim/lua/aleidk/plugins-ide/formatter.lua | 1 + config/nvim/lua/aleidk/plugins-ide/lsp.lua | 2 ++ .../nvim/lua/aleidk/plugins-ide/trouble.lua | 19 ++++++++++++++++--- 4 files changed, 19 insertions(+), 8 deletions(-) delete mode 100644 config/nvim/.luarc.json diff --git a/config/nvim/.luarc.json b/config/nvim/.luarc.json deleted file mode 100644 index 1aa7674..0000000 --- a/config/nvim/.luarc.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "diagnostics.globals": [ - "enabled_plugins" - ] -} \ No newline at end of file diff --git a/config/nvim/lua/aleidk/plugins-ide/formatter.lua b/config/nvim/lua/aleidk/plugins-ide/formatter.lua index 2cab30d..45a73fa 100644 --- a/config/nvim/lua/aleidk/plugins-ide/formatter.lua +++ b/config/nvim/lua/aleidk/plugins-ide/formatter.lua @@ -28,6 +28,7 @@ return { python = { "ruff_format", "ruff_organize_imports" }, scss = { "prettierd", "prettier", stop_after_first = true }, sh = { "shfmt" }, + toml = { "taplo" }, typescript = { "biome" }, typescriptreact = { "biome" }, xml = { "lemminx" }, diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index 32fed8d..de3a8b4 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -98,6 +98,7 @@ return { "blade" }, }, + harper_ls = {}, html = {}, marksman = {}, phpactor = {}, @@ -134,6 +135,7 @@ return { }, }, sqlls = {}, + taplo = {}, yamlls = { settings = { yaml = { diff --git a/config/nvim/lua/aleidk/plugins-ide/trouble.lua b/config/nvim/lua/aleidk/plugins-ide/trouble.lua index 8b31a1c..b7a17bf 100644 --- a/config/nvim/lua/aleidk/plugins-ide/trouble.lua +++ b/config/nvim/lua/aleidk/plugins-ide/trouble.lua @@ -1,3 +1,5 @@ +---@module 'trouble' + return { "folke/trouble.nvim", dependencies = { "nvim-tree/nvim-web-devicons" }, @@ -40,7 +42,7 @@ return { ---@type trouble.Config return { - focus = false, + focus = true, ---@type trouble.Window.opts preview = { @@ -51,13 +53,24 @@ return { ---@type table keys = { - [""] = "jump_close", - ["<2-leftmouse>"] = "jump_close", + [""] = "jump_close", + [""] = "jump", + ["<2-leftmouse>"] = "jump", [""] = "jump_split_close", [""] = "jump_vsplit_close", ["v"] = "jump_split_close", ["s"] = "jump_vsplit_close", [""] = "cancel", -- hack to fool myself into thinking I move to the avobe window + ["a"] = function(view, ctx) + -- TODO: this is not possible until this issue is solved + -- https://github.com/neovim/neovim/issues/31206 + local trouble = require("trouble") + view:action("jump_only") + + vim.lsp.buf.code_action() + + trouble.focus(view, ctx) + end, }, win = win_opts, ---@type table From e67f758e35976a99ae94704750d6cb585fc44d40 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 28 Jan 2025 12:27:22 -0300 Subject: [PATCH 042/152] add ghostty config --- .dotter/global.toml | 9 +++-- config/ghostty/config | 92 +++++++++++++++++++++++++++++++++++++++++++ config/zsh/zprofile | 12 +++++- 3 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 config/ghostty/config diff --git a/.dotter/global.toml b/.dotter/global.toml index 0920439..86800d3 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -14,7 +14,8 @@ nerd_font = "JetBrainsMono" [cli.files] "config/bat" = "~/.config/bat" -"config/kitty" = {target = "~/.config/kitty", type = "symbolic" } +"config/ghostty" = "~/.config/ghostty" +"config/kitty" = { target = "~/.config/kitty", type = "symbolic" } "config/sesh" = "~/.config/sesh" "config/tmux" = "~/.config/tmux" "config/yazi" = "~/.config/yazi" @@ -25,14 +26,14 @@ depends = ["rust"] [dev.files] "config/git" = "~/.config/git" -"config/lazygit" = { target = "~/.config/lazygit", type = "symbolic"} +"config/lazygit" = { target = "~/.config/lazygit", type = "symbolic" } "config/zed" = "~/.config/zed" [zsh.files] "config/zsh/zshrc" = "~/.zshrc" "config/zsh/zprofile" = "~/.zprofile" -"config/zsh/aliases" = {target = "~/.config/zsh/aliases", type="symbolic"} -"config/zsh/completions" = {target = "~/.config/zsh/completions", type = "symbolic"} +"config/zsh/aliases" = { target = "~/.config/zsh/aliases", type = "symbolic" } +"config/zsh/completions" = { target = "~/.config/zsh/completions", type = "symbolic" } "config/zsh/functions" = "~/.config/zsh/functions" [fzf.files] diff --git a/config/ghostty/config b/config/ghostty/config new file mode 100644 index 0000000..4d1ff59 --- /dev/null +++ b/config/ghostty/config @@ -0,0 +1,92 @@ +theme = catppuccin-macchiato + +# Common + +keybind = ctrl+space>o=write_selection_file:open +keybind = ctrl+space>shift+o=write_selection_file:paste + +keybind = ctrl+space>alt+o=write_scrollback_file:open +keybind = ctrl+space>alt+shift+o=write_scrollback_file:paste + +keybind = ctrl+comma=open_config +keybind = ctrl+space>shift+r=reload_config + +keybind = ctrl+shift+c=copy_to_clipboard +keybind = ctrl+shift+i=inspector:toggle +keybind = ctrl+shift+v=paste_from_clipboard +keybind = shift+insert=paste_from_selection + +# Navigation +keybind = alt+f4=close_window +keybind = ctrl+shift+w=close_surface +keybind = ctrl+space>shift+t=close_surface +keybind = ctrl+shift+n=new_window +keybind = ctrl+shift+q=quit + +keybind = ctrl+space>shift+f=toggle_fullscreen + +keybind = ctrl+alt+j=jump_to_prompt:1 +keybind = ctrl+alt+k=jump_to_prompt:-1 + +keybind = ctrl+shift+a=select_all +keybind = shift+right=adjust_selection:right +keybind = shift+down=adjust_selection:down +keybind = shift+up=adjust_selection:up +keybind = shift+left=adjust_selection:left + +keybind = shift+end=scroll_to_bottom +keybind = shift+home=scroll_to_top +keybind = shift+page_up=scroll_page_up +keybind = shift+page_down=scroll_page_down + +# Config +keybind = ctrl+equal=increase_font_size:1 +keybind = ctrl+minus=decrease_font_size:1 +keybind = ctrl+plus=increase_font_size:1 +keybind = ctrl+zero=reset_font_size + +# Splits +keybind = ctrl+space>s=new_split:right +keybind = ctrl+space>v=new_split:down + +keybind = ctrl+space>h=goto_split:left +keybind = ctrl+space>j=goto_split:bottom +keybind = ctrl+space>k=goto_split:top +keybind = ctrl+space>l=goto_split:right + +keybind = ctrl+space>left=goto_split:left +keybind = ctrl+space>down=goto_split:bottom +keybind = ctrl+space>up=goto_split:top +keybind = ctrl+space>right=goto_split:right + +keybind = ctrl+space>m=toggle_split_zoom + +keybind = super+ctrl+left_bracket=goto_split:previous +keybind = super+ctrl+right_bracket=goto_split:next + +keybind = super+ctrl+shift+right=resize_split:right,10 +keybind = super+ctrl+shift+down=resize_split:down,10 +keybind = super+ctrl+shift+up=resize_split:up,10 +keybind = super+ctrl+shift+left=resize_split:left,10 +keybind = ctrl+space>ctrl+zero=equalize_splits + +# Tabs +keybind = ctrl+space>one=goto_tab:1 +keybind = ctrl+space>two=goto_tab:2 +keybind = ctrl+space>three=goto_tab:3 +keybind = ctrl+space>four=goto_tab:4 +keybind = ctrl+space>five=goto_tab:5 +keybind = ctrl+space>six=goto_tab:6 +keybind = ctrl+space>seven=goto_tab:7 +keybind = ctrl+space>eight=goto_tab:8 +keybind = ctrl+space>nine=last_tab + +keybind = ctrl+page_up=previous_tab +keybind = ctrl+page_down=next_tab +keybind = ctrl+shift+left=previous_tab +keybind = ctrl+shift+right=next_tab +keybind = ctrl+space>shift+tab=previous_tab +keybind = ctrl+space>tab=next_tab + +keybind = ctrl+space>t=new_tab + diff --git a/config/zsh/zprofile b/config/zsh/zprofile index 2990987..e57de87 100644 --- a/config/zsh/zprofile +++ b/config/zsh/zprofile @@ -37,8 +37,12 @@ update_path "$PNPM_HOME" {{ /if }} {{ #if (command_success "[ -d $HOME/.bun ]") }} - export BUN_INSTALL="$HOME/.bun" - update_path "$BUN_INSTALL/bin" +export BUN_INSTALL="$HOME/.bun" +update_path "$BUN_INSTALL/bin" + +# bun completions +[ -s "/home/aleidk/.bun/_bun" ] && source "/home/aleidk/.bun/_bun" + {{ /if }} {{ #if (is_executable "rye") }} @@ -50,6 +54,10 @@ source "$HOME/.rye/env" update_path "$HOME/.cargo/bin/" {{ /if }} +{{ #if (is_executable "tofu") }} +complete -o nospace -C /usr/bin/tofu tofu +{{ /if }} + {{~ #if (eq (env_var "OS") "macos") }} eval "$(/opt/homebrew/bin/brew shellenv)" {{ /if ~}} From 42735952be61a2b08be5ad134bd3d4c470cb13e2 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 28 Jan 2025 14:43:51 -0300 Subject: [PATCH 043/152] update yazi config --- .taplo.toml | 3 + config/yazi/keymap.toml | 419 +++++++++++++---------------- config/yazi/package.toml | 2 +- config/yazi/yazi.toml | 238 ++++++++-------- config/zsh/functions/functions.zsh | 6 +- 5 files changed, 304 insertions(+), 364 deletions(-) create mode 100644 .taplo.toml diff --git a/.taplo.toml b/.taplo.toml new file mode 100644 index 0000000..19cac95 --- /dev/null +++ b/.taplo.toml @@ -0,0 +1,3 @@ +[formatting] +inline_table_expand = false +array_auto_expand = false diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml index 8b24d00..b537398 100644 --- a/config/yazi/keymap.toml +++ b/config/yazi/keymap.toml @@ -5,289 +5,246 @@ [manager] keymap = [ - { on = [ "" ], run = "escape --all", desc = "Exit visual mode, clear selected, or cancel search" }, - { on = [ "q" ], run = "quit", desc = "Exit the process" }, - { on = [ "Q" ], run = "quit --no-cwd-file", desc = "Exit the process without writing cwd-file" }, - { on = [ "" ], run = "close", desc = "Close the current tab, or quit if it is last tab" }, - { on = [ "" ], run = "suspend", desc = "Suspend the process" }, + { on = [""], run = "escape --all", desc = "Exit visual mode, clear selected, or cancel search" }, + { on = ["q"], run = "quit", desc = "Exit the process" }, + { on = ["Q"], run = "quit --no-cwd-file", desc = "Exit the process without writing cwd-file" }, + { on = [""], run = "close", desc = "Close the current tab, or quit if it is last tab" }, + { on = [""], run = "suspend", desc = "Suspend the process" }, - # Hopping - { on = [ "k" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "j" ], run = "arrow 1", desc = "Move cursor down" }, - { on = [ "" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "" ], run = "arrow 1", desc = "Move cursor down" }, + # Hopping + { on = ["k"], run = "arrow -1", desc = "Move cursor up" }, + { on = ["j"], run = "arrow 1", desc = "Move cursor down" }, + { on = [""], run = "arrow -1", desc = "Move cursor up" }, + { on = [""], run = "arrow 1", desc = "Move cursor down" }, - { on = [ "" ], run = "arrow -50%", desc = "Move cursor up half page" }, - { on = [ "" ], run = "arrow 50%", desc = "Move cursor down half page" }, - { on = [ "" ], run = "arrow -100%", desc = "Move cursor up one page" }, - { on = [ "" ], run = "arrow 100%", desc = "Move cursor down one page" }, + { on = [""], run = "arrow -50%", desc = "Move cursor up half page" }, + { on = [""], run = "arrow 50%", desc = "Move cursor down half page" }, + { on = [""], run = "arrow -100%", desc = "Move cursor up one page" }, + { on = [""], run = "arrow 100%", desc = "Move cursor down one page" }, - { on = [ "" ], run = "arrow -50%", desc = "Move cursor up half page" }, - { on = [ "" ], run = "arrow 50%", desc = "Move cursor down half page" }, - { on = [ "" ], run = "arrow -100%", desc = "Move cursor up one page" }, - { on = [ "" ], run = "arrow 100%", desc = "Move cursor down one page" }, + { on = [""], run = "arrow -50%", desc = "Move cursor up half page" }, + { on = [""], run = "arrow 50%", desc = "Move cursor down half page" }, + { on = [""], run = "arrow -100%", desc = "Move cursor up one page" }, + { on = [""], run = "arrow 100%", desc = "Move cursor down one page" }, - { on = [ "g", "g" ], run = "arrow -99999999", desc = "Move cursor to the top" }, - { on = [ "G" ], run = "arrow 99999999", desc = "Move cursor to the bottom" }, + { on = ["g", "g"], run = "arrow -99999999", desc = "Move cursor to the top" }, + { on = ["G"], run = "arrow 99999999", desc = "Move cursor to the bottom" }, - # Navigation - { on = [ "h" ], run = [ "leave", "escape --visual --select" ], desc = "Go back to the parent directory" }, - { on = [ "l" ], run = [ "enter", "escape --visual --select" ], desc = "Enter the child directory" }, + # Navigation + { on = ["h"], run = ["leave", "escape --visual --select"], desc = "Go back to the parent directory" }, + { on = ["l"], run = ["enter", "escape --visual --select"], desc = "Enter the child directory" }, - { on = [ "" ], run = [ "leave", "escape --visual --select" ], desc = "Go back to the parent directory" }, - { on = [ "" ], run = [ "enter", "escape --visual --select" ], desc = "Enter the child directory" }, + { on = [""], run = ["leave", "escape --visual --select"], desc = "Go back to the parent directory" }, + { on = [""], run = ["enter", "escape --visual --select"], desc = "Enter the child directory" }, - { on = [ "H" ], run = "back", desc = "Go back to the previous directory" }, - { on = [ "L" ], run = "forward", desc = "Go forward to the next directory" }, + { on = ["H"], run = "back", desc = "Go back to the previous directory" }, + { on = ["L"], run = "forward", desc = "Go forward to the next directory" }, - # Seeking - { on = ["K"], run = "seek -5", desc = "Seek up 5 units in the preview" }, - { on = ["J"], run = "seek 5", desc = "Seek down 5 units in the preview" }, + # Seeking + { on = ["K"], run = "seek -5", desc = "Seek up 5 units in the preview" }, + { on = ["J"], run = "seek 5", desc = "Seek down 5 units in the preview" }, - # Selection - { on = [ "" ], run = [ "select", "arrow 1" ], desc = "Toggle the current selection state" }, - { on = [ "v" ], run = "visual_mode", desc = "Enter visual mode (selection mode)" }, - { on = [ "V" ], run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" }, - { on = [ "" ], run = "select_all --state=true", desc = "Select all files" }, - { on = [ "" ], run = "select_all --state=none", desc = "Inverse selection of all files" }, + # Selection + { on = [""], run = ["select", "arrow 1"], desc = "Toggle the current selection state" }, + { on = ["v"], run = "visual_mode", desc = "Enter visual mode (selection mode)" }, + { on = ["V"], run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" }, + { on = [""], run = "select_all --state=true", desc = "Select all files" }, + { on = [""], run = "select_all --state=none", desc = "Inverse selection of all files" }, - # Operation - { on = [ "o" ], run = "open", desc = "Open the selected files" }, - { on = [ "O" ], run = "open --interactive", desc = "Open the selected files interactively" }, - { on = [ "" ], run = "open", desc = "Open the selected files" }, - { on = [ "" ], run = "open --interactive", desc = "Open the selected files interactively" }, - { on = [ "y" ], run = [ "yank", "escape --visual --select" ], desc = "Copy the selected files" }, - { on = [ "Y" ], run = [ "unyank", "escape --visual --select" ], desc = "Cancel the yank status of files" }, - { on = [ "x" ], run = [ "yank --cut", "escape --visual --select" ], desc = "Cut the selected files" }, - { on = [ "p" ], run = "paste", desc = "Paste the files" }, - { on = [ "P" ], run = "paste --force", desc = "Paste the files (overwrite if the destination exists)" }, - { on = [ "-" ], run = "link", desc = "Symlink the absolute path of files" }, - { on = [ "_" ], run = "link --relative", desc = "Symlink the relative path of files" }, - { on = [ "d" ], run = [ "remove", "escape --visual --select" ], desc = "Move the files to the trash" }, - { on = [ "D" ], run = [ "remove --permanently", "escape --visual --select" ], desc = "Permanently delete the files" }, - { on = [ "a" ], run = "create", desc = "Create a file or directory (ends with / for directories)" }, - { on = [ "r" ], run = "rename --cursor=before_ext", desc = "Rename a file or directory" }, - { on = [ ";" ], run = "shell --interactive", desc = "Run a shell command" }, - { on = [ ":" ], run = "shell --interactive --block", desc = "Run a shell command (block the UI until the command finishes)" }, - { on = [ "." ], run = "hidden toggle", desc = "Toggle the visibility of hidden files" }, - { on = [ "s" ], run = "search fd", desc = "Search files by name using fd" }, - { on = [ "S" ], run = "search rg", desc = "Search files by content using ripgrep" }, - { on = [ "" ], run = "search none", desc = "Cancel the ongoing search" }, - { on = [ "z" ], run = "plugin zoxide", desc = "Jump to a directory using zoxide" }, - { on = [ "Z" ], run = "plugin fzf", desc = "Jump to a directory, or reveal a file using fzf" }, + # Operation + { on = ["o"], run = "open", desc = "Open the selected files" }, + { on = ["O"], run = "open --interactive", desc = "Open the selected files interactively" }, + { on = [""], run = "open", desc = "Open the selected files" }, + { on = [""], run = "open --interactive", desc = "Open the selected files interactively" }, + { on = ["y"], run = ["yank", "escape --visual --select"], desc = "Copy the selected files" }, + { on = ["Y"], run = ["unyank", "escape --visual --select"], desc = "Cancel the yank status of files" }, + { on = ["x"], run = ["yank --cut", "escape --visual --select"], desc = "Cut the selected files" }, + { on = ["p"], run = "paste", desc = "Paste the files" }, + { on = ["P"], run = "paste --force", desc = "Paste the files (overwrite if the destination exists)" }, + { on = ["-"], run = "link", desc = "Symlink the absolute path of files" }, + { on = ["_"], run = "link --relative", desc = "Symlink the relative path of files" }, + { on = ["d"], run = ["remove", "escape --visual --select"], desc = "Move the files to the trash" }, + { on = ["D"], run = ["remove --permanently", "escape --visual --select"], desc = "Permanently delete the files" }, + { on = ["a"], run = "create", desc = "Create a file or directory (ends with / for directories)" }, + { on = ["R"], run = "plugin rsync", desc = "Copy files using rsync" }, + { on = ["r"], run = "rename --cursor=before_ext", desc = "Rename a file or directory" }, + { on = [";"], run = "shell --interactive", desc = "Run a shell command" }, + { on = [":"], run = "shell --interactive --block", desc = "Run a shell command (block the UI until the command finishes)" }, + { on = ["."], run = "hidden toggle", desc = "Toggle the visibility of hidden files" }, + { on = ["s"], run = "search fd", desc = "Search files by name using fd" }, + { on = ["S"], run = "search rg", desc = "Search files by content using ripgrep" }, + { on = [""], run = "search none", desc = "Cancel the ongoing search" }, + { on = ["z"], run = "plugin zoxide", desc = "Jump to a directory using zoxide" }, + { on = ["Z"], run = "plugin fzf", desc = "Jump to a directory, or reveal a file using fzf" }, - # Linemode - { on = [ "m", "s" ], run = "linemode size", desc = "Set linemode to size" }, - { on = [ "m", "p" ], run = "linemode permissions", desc = "Set linemode to permissions" }, - { on = [ "m", "m" ], run = "linemode mtime", desc = "Set linemode to mtime" }, - { on = [ "m", "n" ], run = "linemode none", desc = "Set linemode to none" }, + # Linemode + { on = ["m", "s"], run = "linemode size", desc = "Set linemode to size" }, + { on = ["m", "p"], run = "linemode permissions", desc = "Set linemode to permissions" }, + { on = ["m", "m"], run = "linemode mtime", desc = "Set linemode to mtime" }, + { on = ["m", "n"], run = "linemode none", desc = "Set linemode to none" }, - # Copy - { on = [ "c", "c" ], run = "copy path", desc = "Copy the absolute path" }, - { on = [ "c", "d" ], run = "copy dirname", desc = "Copy the path of the parent directory" }, - { on = [ "c", "f" ], run = "copy filename", desc = "Copy the name of the file" }, - { on = [ "c", "n" ], run = "copy name_without_ext", desc = "Copy the name of the file without the extension" }, + # Copy + { on = ["c", "c"], run = "copy path", desc = "Copy the absolute path" }, + { on = ["c", "d"], run = "copy dirname", desc = "Copy the path of the parent directory" }, + { on = ["c", "f"], run = "copy filename", desc = "Copy the name of the file" }, + { on = ["c", "n"], run = "copy name_without_ext", desc = "Copy the name of the file without the extension" }, - # Filter - { on = [ "f" ], run = "filter --smart", desc = "Filter the files" }, + # Filter + { on = ["f"], run = "filter --smart", desc = "Filter the files" }, - # Find - { on = [ "/" ], run = "find --smart", desc = "Find next file" }, - { on = [ "?" ], run = "find --previous --smart", desc = "Find previous file" }, - { on = [ "n" ], run = "find_arrow", desc = "Go to next found file" }, - { on = [ "N" ], run = "find_arrow --previous", desc = "Go to previous found file" }, + # Find + { on = ["/"], run = "find --smart", desc = "Find next file" }, + { on = ["?"], run = "find --previous --smart", desc = "Find previous file" }, + { on = ["n"], run = "find_arrow", desc = "Go to next found file" }, + { on = ["N"], run = "find_arrow --previous", desc = "Go to previous found file" }, - # Sorting - { on = [ ",", "m" ], run = "sort mtime --reverse=no", desc = "Sort by modified time" }, - { on = [ ",", "M" ], run = "sort mtime --reverse", desc = "Sort by modified time (reverse)" }, - { on = [ ",", "c" ], run = "sort btime --reverse=no", desc = "Sort by created time" }, - { on = [ ",", "C" ], run = "sort btime --reverse", desc = "Sort by created time (reverse)" }, - { on = [ ",", "e" ], run = "sort extension --reverse=no", desc = "Sort by extension" }, - { on = [ ",", "E" ], run = "sort extension --reverse", desc = "Sort by extension (reverse)" }, - { on = [ ",", "a" ], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" }, - { on = [ ",", "A" ], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" }, - { on = [ ",", "n" ], run = "sort natural --reverse=no", desc = "Sort naturally" }, - { on = [ ",", "N" ], run = "sort natural --reverse", desc = "Sort naturally (reverse)" }, - { on = [ ",", "s" ], run = "sort size --reverse=no", desc = "Sort by size" }, - { on = [ ",", "S" ], run = "sort size --reverse", desc = "Sort by size (reverse)" }, - # Tabs - { on = [ "t" ], run = "tab_create --current", desc = "Create a new tab using the current path" }, + # Sorting + { on = [",", "m"], run = "sort mtime --reverse=no", desc = "Sort by modified time" }, + { on = [",", "M"], run = "sort mtime --reverse", desc = "Sort by modified time (reverse)" }, + { on = [",", "c"], run = "sort btime --reverse=no", desc = "Sort by created time" }, + { on = [",", "C"], run = "sort btime --reverse", desc = "Sort by created time (reverse)" }, + { on = [",", "e"], run = "sort extension --reverse=no", desc = "Sort by extension" }, + { on = [",", "E"], run = "sort extension --reverse", desc = "Sort by extension (reverse)" }, + { on = [",", "a"], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" }, + { on = [",", "A"], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" }, + { on = [",", "n"], run = "sort natural --reverse=no", desc = "Sort naturally" }, + { on = [",", "N"], run = "sort natural --reverse", desc = "Sort naturally (reverse)" }, + { on = [",", "s"], run = "sort size --reverse=no", desc = "Sort by size" }, + { on = [",", "S"], run = "sort size --reverse", desc = "Sort by size (reverse)" }, + # Tabs + { on = ["t"], run = "tab_create --current", desc = "Create a new tab using the current path" }, - { on = [ "1" ], run = "tab_switch 0", desc = "Switch to the first tab" }, - { on = [ "2" ], run = "tab_switch 1", desc = "Switch to the second tab" }, - { on = [ "3" ], run = "tab_switch 2", desc = "Switch to the third tab" }, - { on = [ "4" ], run = "tab_switch 3", desc = "Switch to the fourth tab" }, - { on = [ "5" ], run = "tab_switch 4", desc = "Switch to the fifth tab" }, - { on = [ "6" ], run = "tab_switch 5", desc = "Switch to the sixth tab" }, - { on = [ "7" ], run = "tab_switch 6", desc = "Switch to the seventh tab" }, - { on = [ "8" ], run = "tab_switch 7", desc = "Switch to the eighth tab" }, - { on = [ "9" ], run = "tab_switch 8", desc = "Switch to the ninth tab" }, + { on = ["1"], run = "tab_switch 0", desc = "Switch to the first tab" }, + { on = ["2"], run = "tab_switch 1", desc = "Switch to the second tab" }, + { on = ["3"], run = "tab_switch 2", desc = "Switch to the third tab" }, + { on = ["4"], run = "tab_switch 3", desc = "Switch to the fourth tab" }, + { on = ["5"], run = "tab_switch 4", desc = "Switch to the fifth tab" }, + { on = ["6"], run = "tab_switch 5", desc = "Switch to the sixth tab" }, + { on = ["7"], run = "tab_switch 6", desc = "Switch to the seventh tab" }, + { on = ["8"], run = "tab_switch 7", desc = "Switch to the eighth tab" }, + { on = ["9"], run = "tab_switch 8", desc = "Switch to the ninth tab" }, - { on = [ "[" ], run = "tab_switch -1 --relative", desc = "Switch to the previous tab" }, - { on = [ "]" ], run = "tab_switch 1 --relative", desc = "Switch to the next tab" }, + { on = ["["], run = "tab_switch -1 --relative", desc = "Switch to the previous tab" }, + { on = ["]"], run = "tab_switch 1 --relative", desc = "Switch to the next tab" }, - { on = [ "{" ], run = "tab_swap -1", desc = "Swap the current tab with the previous tab" }, - { on = [ "}" ], run = "tab_swap 1", desc = "Swap the current tab with the next tab" }, + { on = ["{"], run = "tab_swap -1", desc = "Swap the current tab with the previous tab" }, + { on = ["}"], run = "tab_swap 1", desc = "Swap the current tab with the next tab" }, - # Tasks - { on = [ "w" ], run = "tasks_show", desc = "Show the tasks manager" }, + # Tasks + { on = ["w"], run = "tasks_show", desc = "Show the tasks manager" }, - # Goto - { on = [ "g", "h" ], run = "cd ~", desc = "Go to the home directory" }, - { on = [ "g", "c" ], run = "cd ~/.config", desc = "Go to the config directory" }, - { on = [ "g", "d" ], run = "cd ~/Downloads", desc = "Go to the downloads directory" }, - { on = [ "g", "t" ], run = "cd /tmp", desc = "Go to the temporary directory" }, - { on = [ "g", "" ], run = "cd --interactive", desc = "Go to a directory interactively" }, + # Goto + { on = ["g", "h"], run = "cd ~", desc = "Go to the home directory" }, + { on = ["g", "c"], run = "cd ~/.config", desc = "Go to the config directory" }, + { on = ["g", "d"], run = "cd ~/Downloads", desc = "Go to the downloads directory" }, + { on = ["g", "t"], run = "cd /tmp", desc = "Go to the temporary directory" }, + { on = ["g", "r"], run = "shell 'ya emit cd \"$(git rev-parse --show-toplevel)\"'", desc = "Go to git root" }, + { on = ["g", ""], run = "cd --interactive", desc = "Go to a directory interactively" }, - # Help - { on = [ "~" ], run = "help", desc = "Open help" }, + # Help + { on = ["~"], run = "help", desc = "Open help" }, ] [tasks] -keymap = [ - { on = [ "" ], run = "close", desc = "Hide the task manager" }, - { on = [ "" ], run = "close", desc = "Hide the task manager" }, - { on = [ "w" ], run = "close", desc = "Hide the task manager" }, - - { on = [ "k" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "j" ], run = "arrow 1", desc = "Move cursor down" }, - - { on = [ "" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "" ], run = "arrow 1", desc = "Move cursor down" }, - - { on = [ "" ], run = "inspect", desc = "Inspect the task" }, - { on = [ "x" ], run = "cancel", desc = "Cancel the task" }, - - { on = [ "~" ], run = "help", desc = "Open help" } -] +keymap = [{ on = [""], run = "close", desc = "Hide the task manager" }, { on = [""], run = "close", desc = "Hide the task manager" }, { on = ["w"], run = "close", desc = "Hide the task manager" }, { on = ["k"], run = "arrow -1", desc = "Move cursor up" }, { on = ["j"], run = "arrow 1", desc = "Move cursor down" }, { on = [""], run = "arrow -1", desc = "Move cursor up" }, { on = [""], run = "arrow 1", desc = "Move cursor down" }, { on = [""], run = "inspect", desc = "Inspect the task" }, { on = ["x"], run = "cancel", desc = "Cancel the task" }, { on = ["~"], run = "help", desc = "Open help" }] [pick] -keymap = [ - { on = [ "" ], run = "close", desc = "Cancel selection" }, - { on = [ "" ], run = "close", desc = "Cancel selection" }, - { on = [ "" ], run = "close --submit", desc = "Submit the selection" }, - - { on = [ "k" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "j" ], run = "arrow 1", desc = "Move cursor down" }, - - { on = [ "K" ], run = "arrow -5", desc = "Move cursor up 5 lines" }, - { on = [ "J" ], run = "arrow 5", desc = "Move cursor down 5 lines" }, - - { on = [ "" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "" ], run = "arrow 1", desc = "Move cursor down" }, - - { on = [ "" ], run = "arrow -5", desc = "Move cursor up 5 lines" }, - { on = [ "" ], run = "arrow 5", desc = "Move cursor down 5 lines" }, - - { on = [ "~" ], run = "help", desc = "Open help" } -] +keymap = [{ on = [""], run = "close", desc = "Cancel selection" }, { on = [""], run = "close", desc = "Cancel selection" }, { on = [""], run = "close --submit", desc = "Submit the selection" }, { on = ["k"], run = "arrow -1", desc = "Move cursor up" }, { on = ["j"], run = "arrow 1", desc = "Move cursor down" }, { on = ["K"], run = "arrow -5", desc = "Move cursor up 5 lines" }, { on = ["J"], run = "arrow 5", desc = "Move cursor down 5 lines" }, { on = [""], run = "arrow -1", desc = "Move cursor up" }, { on = [""], run = "arrow 1", desc = "Move cursor down" }, { on = [""], run = "arrow -5", desc = "Move cursor up 5 lines" }, { on = [""], run = "arrow 5", desc = "Move cursor down 5 lines" }, { on = ["~"], run = "help", desc = "Open help" }] [input] keymap = [ - { on = [ "" ], run = "close", desc = "Cancel input" }, - { on = [ "" ], run = "close --submit", desc = "Submit the input" }, - { on = [ "" ], run = "close", desc = "Go back the normal mode, or cancel input" }, + { on = [""], run = "close", desc = "Cancel input" }, + { on = [""], run = "close --submit", desc = "Submit the input" }, + { on = [""], run = "close", desc = "Go back the normal mode, or cancel input" }, - # Mode - { on = [ "i" ], run = "insert", desc = "Enter insert mode" }, - { on = [ "a" ], run = "insert --append", desc = "Enter append mode" }, - { on = [ "I" ], run = [ "move -999", "insert" ], desc = "Move to the BOL, and enter insert mode" }, - { on = [ "A" ], run = [ "move 999", "insert --append" ], desc = "Move to the EOL, and enter append mode" }, - { on = [ "v" ], run = "visual", desc = "Enter visual mode" }, - { on = [ "V" ], run = [ "move -999", "visual", "move 999" ], desc = "Enter visual mode and select all" }, + # Mode + { on = ["i"], run = "insert", desc = "Enter insert mode" }, + { on = ["a"], run = "insert --append", desc = "Enter append mode" }, + { on = ["I"], run = ["move -999", "insert"], desc = "Move to the BOL, and enter insert mode" }, + { on = ["A"], run = ["move 999", "insert --append"], desc = "Move to the EOL, and enter append mode" }, + { on = ["v"], run = "visual", desc = "Enter visual mode" }, + { on = ["V"], run = ["move -999", "visual", "move 999"], desc = "Enter visual mode and select all" }, - # Character-wise movement - { on = [ "h" ], run = "move -1", desc = "Move back a character" }, - { on = [ "l" ], run = "move 1", desc = "Move forward a character" }, - { on = [ "" ], run = "move -1", desc = "Move back a character" }, - { on = [ "" ], run = "move 1", desc = "Move forward a character" }, - { on = [ "" ], run = "move -1", desc = "Move back a character" }, - { on = [ "" ], run = "move 1", desc = "Move forward a character" }, + # Character-wise movement + { on = ["h"], run = "move -1", desc = "Move back a character" }, + { on = ["l"], run = "move 1", desc = "Move forward a character" }, + { on = [""], run = "move -1", desc = "Move back a character" }, + { on = [""], run = "move 1", desc = "Move forward a character" }, + { on = [""], run = "move -1", desc = "Move back a character" }, + { on = [""], run = "move 1", desc = "Move forward a character" }, - # Word-wise movement - { on = [ "b" ], run = "backward", desc = "Move back to the start of the current or previous word" }, - { on = [ "w" ], run = "forward", desc = "Move forward to the start of the next word" }, - { on = [ "e" ], run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" }, - { on = [ "" ], run = "backward", desc = "Move back to the start of the current or previous word" }, - { on = [ "" ], run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" }, + # Word-wise movement + { on = ["b"], run = "backward", desc = "Move back to the start of the current or previous word" }, + { on = ["w"], run = "forward", desc = "Move forward to the start of the next word" }, + { on = ["e"], run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" }, + { on = [""], run = "backward", desc = "Move back to the start of the current or previous word" }, + { on = [""], run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" }, - # Line-wise movement - { on = [ "0" ], run = "move -999", desc = "Move to the BOL" }, - { on = [ "$" ], run = "move 999", desc = "Move to the EOL" }, - { on = [ "" ], run = "move -999", desc = "Move to the BOL" }, - { on = [ "" ], run = "move 999", desc = "Move to the EOL" }, - { on = [ "" ], run = "move -999", desc = "Move to the BOL" }, - { on = [ "" ], run = "move 999", desc = "Move to the EOL" }, + # Line-wise movement + { on = ["0"], run = "move -999", desc = "Move to the BOL" }, + { on = ["$"], run = "move 999", desc = "Move to the EOL" }, + { on = [""], run = "move -999", desc = "Move to the BOL" }, + { on = [""], run = "move 999", desc = "Move to the EOL" }, + { on = [""], run = "move -999", desc = "Move to the BOL" }, + { on = [""], run = "move 999", desc = "Move to the EOL" }, - # Delete - { on = [ "" ], run = "backspace", desc = "Delete the character before the cursor" }, - { on = [ "" ], run = "backspace --under", desc = "Delete the character under the cursor" }, - { on = [ "" ], run = "backspace", desc = "Delete the character before the cursor" }, - { on = [ "" ], run = "backspace --under", desc = "Delete the character under the cursor" }, + # Delete + { on = [""], run = "backspace", desc = "Delete the character before the cursor" }, + { on = [""], run = "backspace --under", desc = "Delete the character under the cursor" }, + { on = [""], run = "backspace", desc = "Delete the character before the cursor" }, + { on = [""], run = "backspace --under", desc = "Delete the character under the cursor" }, - # Kill - { on = [ "" ], run = "kill bol", desc = "Kill backwards to the BOL" }, - { on = [ "" ], run = "kill eol", desc = "Kill forwards to the EOL" }, - { on = [ "" ], run = "kill backward", desc = "Kill backwards to the start of the current word" }, - { on = [ "" ], run = "kill forward", desc = "Kill forwards to the end of the current word" }, + # Kill + { on = [""], run = "kill bol", desc = "Kill backwards to the BOL" }, + { on = [""], run = "kill eol", desc = "Kill forwards to the EOL" }, + { on = [""], run = "kill backward", desc = "Kill backwards to the start of the current word" }, + { on = [""], run = "kill forward", desc = "Kill forwards to the end of the current word" }, - # Cut/Yank/Paste - { on = [ "d" ], run = "delete --cut", desc = "Cut the selected characters" }, - { on = [ "D" ], run = [ "delete --cut", "move 999" ], desc = "Cut until the EOL" }, - { on = [ "c" ], run = "delete --cut --insert", desc = "Cut the selected characters, and enter insert mode" }, - { on = [ "C" ], run = [ "delete --cut --insert", "move 999" ], desc = "Cut until the EOL, and enter insert mode" }, - { on = [ "x" ], run = [ "delete --cut", "move 1 --in-operating" ], desc = "Cut the current character" }, - { on = [ "y" ], run = "yank", desc = "Copy the selected characters" }, - { on = [ "p" ], run = "paste", desc = "Paste the copied characters after the cursor" }, - { on = [ "P" ], run = "paste --before", desc = "Paste the copied characters before the cursor" }, + # Cut/Yank/Paste + { on = ["d"], run = "delete --cut", desc = "Cut the selected characters" }, + { on = ["D"], run = ["delete --cut", "move 999"], desc = "Cut until the EOL" }, + { on = ["c"], run = "delete --cut --insert", desc = "Cut the selected characters, and enter insert mode" }, + { on = ["C"], run = ["delete --cut --insert", "move 999"], desc = "Cut until the EOL, and enter insert mode" }, + { on = ["x"], run = ["delete --cut", "move 1 --in-operating"], desc = "Cut the current character" }, + { on = ["y"], run = "yank", desc = "Copy the selected characters" }, + { on = ["p"], run = "paste", desc = "Paste the copied characters after the cursor" }, + { on = ["P"], run = "paste --before", desc = "Paste the copied characters before the cursor" }, - # Undo/Redo - { on = [ "u" ], run = "undo", desc = "Undo the last operation" }, - { on = [ "" ], run = "redo", desc = "Redo the last operation" }, + # Undo/Redo + { on = ["u"], run = "undo", desc = "Undo the last operation" }, + { on = [""], run = "redo", desc = "Redo the last operation" }, - # Help - { on = [ "~" ], run = "help", desc = "Open help" } + # Help + { on = ["~"], run = "help", desc = "Open help" }, ] [completion] -keymap = [ - { on = [ "" ], run = "close", desc = "Cancel completion" }, - { on = [ "" ], run = "close --submit", desc = "Submit the completion" }, - { on = [ "" ], run = [ "close --submit", "close_input --submit" ], desc = "Submit the completion and input" }, - - { on = [ "" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "" ], run = "arrow 1", desc = "Move cursor down" }, - - { on = [ "" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "" ], run = "arrow 1", desc = "Move cursor down" }, - - { on = [ "~" ], run = "help", desc = "Open help" } -] +keymap = [{ on = [""], run = "close", desc = "Cancel completion" }, { on = [""], run = "close --submit", desc = "Submit the completion" }, { on = [""], run = ["close --submit", "close_input --submit"], desc = "Submit the completion and input" }, { on = [""], run = "arrow -1", desc = "Move cursor up" }, { on = [""], run = "arrow 1", desc = "Move cursor down" }, { on = [""], run = "arrow -1", desc = "Move cursor up" }, { on = [""], run = "arrow 1", desc = "Move cursor down" }, { on = ["~"], run = "help", desc = "Open help" }] [help] keymap = [ - { on = [ "" ], run = "escape", desc = "Clear the filter, or hide the help" }, - { on = [ "q" ], run = "close", desc = "Exit the process" }, - { on = [ "" ], run = "close", desc = "Hide the help" }, + { on = [""], run = "escape", desc = "Clear the filter, or hide the help" }, + { on = ["q"], run = "close", desc = "Exit the process" }, + { on = [""], run = "close", desc = "Hide the help" }, - # Navigation - { on = [ "k" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "j" ], run = "arrow 1", desc = "Move cursor down" }, + # Navigation + { on = ["k"], run = "arrow -1", desc = "Move cursor up" }, + { on = ["j"], run = "arrow 1", desc = "Move cursor down" }, - { on = [ "K" ], run = "arrow -5", desc = "Move cursor up 5 lines" }, - { on = [ "J" ], run = "arrow 5", desc = "Move cursor down 5 lines" }, + { on = ["K"], run = "arrow -5", desc = "Move cursor up 5 lines" }, + { on = ["J"], run = "arrow 5", desc = "Move cursor down 5 lines" }, - { on = [ "" ], run = "arrow -1", desc = "Move cursor up" }, - { on = [ "" ], run = "arrow 1", desc = "Move cursor down" }, + { on = [""], run = "arrow -1", desc = "Move cursor up" }, + { on = [""], run = "arrow 1", desc = "Move cursor down" }, - { on = [ "" ], run = "arrow -5", desc = "Move cursor up 5 lines" }, - { on = [ "" ], run = "arrow 5", desc = "Move cursor down 5 lines" }, + { on = [""], run = "arrow -5", desc = "Move cursor up 5 lines" }, + { on = [""], run = "arrow 5", desc = "Move cursor down 5 lines" }, - # Filtering - { on = [ "/" ], run = "filter", desc = "Apply a filter for the help items" }, + # Filtering + { on = ["/"], run = "filter", desc = "Apply a filter for the help items" }, ] diff --git a/config/yazi/package.toml b/config/yazi/package.toml index eae27af..ad75a40 100644 --- a/config/yazi/package.toml +++ b/config/yazi/package.toml @@ -1,5 +1,5 @@ [plugin] -deps = [{ use = "yazi-rs/plugins:full-border", rev = "4a6edc3" }] +deps = [{ use = "yazi-rs/plugins:full-border", rev = "4a6edc3" }, { use = "GianniBYoung/rsync", rev = "3f431aa" }, { use = "Ape/simple-status", rev = "3ef1447" }] [flavor] deps = [{ use = "yazi-rs/flavors:catppuccin-macchiato", rev = "4a3082f" }] diff --git a/config/yazi/yazi.toml b/config/yazi/yazi.toml index e80d3fe..c5152a1 100644 --- a/config/yazi/yazi.toml +++ b/config/yazi/yazi.toml @@ -3,201 +3,181 @@ "$schema" = "https://yazi-rs.github.io/schemas/yazi.json" [manager] -ratio = [ 1, 3, 4 ] -sort_by = "alphabetical" +ratio = [1, 3, 4] +sort_by = "alphabetical" sort_sensitive = false -sort_reverse = false +sort_reverse = false sort_dir_first = true -linemode = "mtime" -show_hidden = true -show_symlink = true -scrolloff = 5 -mouse_events = [ "click", "scroll" ] -title_format = "Yazi: {cwd}" +linemode = "mtime" +show_hidden = true +show_symlink = true +scrolloff = 5 +mouse_events = ["click", "scroll"] +title_format = "Yazi: {cwd}" [preview] -tab_size = 2 -max_width = 1920 -max_height = 1080 -cache_dir = "" -image_filter = "triangle" -image_quality = 75 -sixel_fraction = 15 -ueberzug_scale = 1 -ueberzug_offset = [ 0, 0, 0, 0 ] +cache_dir = "" +image_delay = 0 +image_filter = "triangle" +image_quality = 75 +max_height = 900 +max_width = 600 +sixel_fraction = 15 +tab_size = 2 +wrap = "no" [opener] -edit = [ - { run = '[ -n "$EDITOR" ] && $EDITOR "$@"', desc = "$EDITOR", block = true, for = "unix" }, - { run = 'code "%*"', orphan = true, for = "windows" }, -] -open = [ - { run = 'xdg-open "$@"', desc = "Open", for = "linux" }, - { run = 'open "$@"', desc = "Open", for = "macos" }, - { run = 'start "" "%1"', orphan = true, desc = "Open", for = "windows" } -] -reveal = [ - { run = 'open -R "$1"', desc = "Reveal", for = "macos" }, - { run = 'explorer /select, "%1"', orphan = true, desc = "Reveal", for = "windows" }, - { run = '''exiftool "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show EXIF", for = "unix" }, -] -extract = [ - { run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" }, - { run = 'ya pub extract --list %*', desc = "Extract here", for = "windows" },] -play = [ - { run = 'mpv "$@"', orphan = true, for = "unix" }, - { run = 'mpv "%1"', orphan = true, for = "windows" }, - { run = '''mediainfo "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show media info", for = "unix" }, -] +edit = [{ run = '[ -n "$EDITOR" ] && $EDITOR "$@"', desc = "$EDITOR", block = true, for = "unix" }, { run = 'code "%*"', orphan = true, for = "windows" }] +open = [{ run = 'xdg-open "$@"', desc = "Open", for = "linux" }, { run = 'open "$@"', desc = "Open", for = "macos" }, { run = 'start "" "%1"', orphan = true, desc = "Open", for = "windows" }] +reveal = [{ run = 'open -R "$1"', desc = "Reveal", for = "macos" }, { run = 'explorer /select, "%1"', orphan = true, desc = "Reveal", for = "windows" }, { run = '''exiftool "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show EXIF", for = "unix" }] +extract = [{ run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" }, { run = 'ya pub extract --list %*', desc = "Extract here", for = "windows" }] +play = [{ run = 'mpv "$@"', orphan = true, for = "unix" }, { run = 'mpv "%1"', orphan = true, for = "windows" }, { run = '''mediainfo "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show media info", for = "unix" }] [open] rules = [ - # Folder - { name = "*/", use = [ "edit", "open", "reveal" ] }, + # Folder + { name = "*/", use = ["edit", "open", "reveal"] }, - # Text - { mime = "text/*", use = [ "edit", "reveal" ] }, + # Text + { mime = "text/*", use = ["edit", "reveal"] }, - # Archive - { mime = "application/{,g}zip", use = [ "extract", "reveal" ] }, - { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", use = [ "extract", "reveal" ] }, + # Archive + { mime = "application/{,g}zip", use = ["extract", "reveal"] }, + { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", use = ["extract", "reveal"] }, - # Image - { mime = "image/*", use = [ "open", "reveal" ] }, + # Image + { mime = "image/*", use = ["open", "reveal"] }, - # Media - { mime = "{audio,video}/*", use = [ "play", "reveal" ] }, - { mime = "inode/x-empty", use = [ "edit", "reveal" ] }, + # Media + { mime = "{audio,video}/*", use = ["play", "reveal"] }, + { mime = "inode/x-empty", use = ["edit", "reveal"] }, - # JSON - { mime = "application/json", use = [ "edit", "reveal" ] }, - { mime = "*/javascript", use = [ "edit", "reveal" ] }, + # JSON + { mime = "application/json", use = ["edit", "reveal"] }, + { mime = "*/javascript", use = ["edit", "reveal"] }, - # Empty file - { mime = "inode/x-empty", use = [ "edit", "reveal" ] }, + # Empty file + { mime = "inode/x-empty", use = ["edit", "reveal"] }, - # Fallback - { mime = "*", use = [ "open", "reveal" ] }, + # Fallback + { mime = "*", use = ["open", "reveal"] }, ] [tasks] -micro_workers = 10 -macro_workers = 25 -bizarre_retry = 5 -image_alloc = 536870912 # 512MB -image_bound = [ 0, 0 ] +micro_workers = 10 +macro_workers = 25 +bizarre_retry = 5 +image_alloc = 536870912 # 512MB +image_bound = [0, 0] suppress_preload = false [plugin] fetchers = [ - # Mimetype - { id = "mime", name = "*", run = "mime", if = "!mime", prio = "high" }, + # Mimetype + { id = "mime", name = "*", run = "mime", if = "!mime", prio = "high" }, ] preloaders = [ - # example - { mime = "image/{avif,heic,jxl,svg+xml}", run = "magick" }, - { mime = "image/*", run = "image" }, - # Video - { mime = "video/*", run = "video" }, - # PDF - { mime = "application/pdf", run = "pdf" }, - # Font - { mime = "font/*", run = "font" }, - { mime = "application/vnd.ms-opentype", run = "font" }, + # example + { mime = "image/{avif,heic,jxl,svg+xml}", run = "magick" }, + { mime = "image/*", run = "image" }, + # Video + { mime = "video/*", run = "video" }, + # PDF + { mime = "application/pdf", run = "pdf" }, + # Font + { mime = "font/*", run = "font" }, + { mime = "application/vnd.ms-opentype", run = "font" }, ] previewers = [ - { name = "*/", run = "folder", sync = true }, - # Code - { mime = "text/*", run = "code" }, - { mime = "*/{xml,javascript,x-wine-extension-ini}", run = "code" }, - # JSON - { mime = "application/{json,x-ndjson}", run = "json" }, - # Image - { mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" }, - { mime = "image/*", run = "image" }, - # Video - { mime = "video/*", run = "video" }, - # PDF - { mime = "application/pdf", run = "pdf" }, - # Archive - { mime = "application/{,g}zip", run = "archive" }, - { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar,iso9660-image}", run = "archive" }, - # Font - { mime = "font/*", run = "font" }, - { mime = "application/vnd.ms-opentype", run = "font" }, - # Fallback - { name = "*", run = "file" }, + { name = "*/", run = "folder", sync = true }, + # Code + { mime = "text/*", run = "code" }, + { mime = "*/{xml,javascript,x-wine-extension-ini}", run = "code" }, + # JSON + { mime = "application/{json,x-ndjson}", run = "json" }, + # Image + { mime = "image/{avif,hei?,jxl,svg+xml}", run = "magick" }, + { mime = "image/*", run = "image" }, + # Video + { mime = "video/*", run = "video" }, + # PDF + { mime = "application/pdf", run = "pdf" }, + # Archive + { mime = "application/{,g}zip", run = "archive" }, + { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar,iso9660-image}", run = "archive" }, + # Font + { mime = "font/*", run = "font" }, + { mime = "application/vnd.ms-opentype", run = "font" }, + # Fallback + { name = "*", run = "file" }, ] [input] cursor_blink = false # cd -cd_title = "Change directory:" +cd_title = "Change directory:" cd_origin = "top-center" -cd_offset = [ 0, 2, 50, 3 ] +cd_offset = [0, 2, 50, 3] # create -create_title = "Create:" +create_title = ["Create:", "Create (dir):"] create_origin = "hovered" -create_offset = [ 0, 1, 50, 3 ] +create_offset = [0, 1, 50, 3] # rename -rename_title = "Rename:" +rename_title = "Rename:" rename_origin = "hovered" -rename_offset = [ 0, 1, 50, 3 ] +rename_offset = [0, 1, 50, 3] # trash -trash_title = "Move {n} selected file{s} to trash? (y/N)" -trash_origin = "hovered" -trash_offset = [ 0, 2, 50, 3 ] +trash_title = "Move {n} selected file{s} to trash? (y/N)" +trash_origin = "hovered" +trash_offset = [0, 2, 50, 3] # delete -delete_title = "Delete {n} selected file{s} permanently? (y/N)" -delete_origin = "hovered" -delete_offset = [ 0, 2, 50, 3 ] +delete_title = "Delete {n} selected file{s} permanently? (y/N)" +delete_origin = "hovered" +delete_offset = [0, 2, 50, 3] # filter -filter_title = "Filter:" +filter_title = "Filter:" filter_origin = "hovered" -filter_offset = [ 0, 2, 50, 3 ] +filter_offset = [0, 2, 50, 3] # find -find_title = [ "Find next:", "Find previous:" ] +find_title = ["Find next:", "Find previous:"] find_origin = "hovered" -find_offset = [ 0, 2, 50, 3 ] +find_offset = [0, 2, 50, 3] # search -search_title = "Search via {n}:" +search_title = "Search via {n}:" search_origin = "hovered" -search_offset = [ 0, 2, 50, 3 ] +search_offset = [0, 2, 50, 3] # shell -shell_title = [ "Shell:", "Shell (block):" ] +shell_title = ["Shell:", "Shell (block):"] shell_origin = "center" -shell_offset = [ 0, 2, 50, 3 ] +shell_offset = [0, 2, 50, 3] # overwrite -overwrite_title = "Overwrite an existing file? (y/N)" +overwrite_title = "Overwrite an existing file? (y/N)" overwrite_origin = "center" -overwrite_offset = [ 0, 2, 50, 3 ] +overwrite_offset = [0, 2, 50, 3] # quit -quit_title = "{n} task{s} running, sure to quit? (y/N)" +quit_title = "{n} task{s} running, sure to quit? (y/N)" quit_origin = "center" -quit_offset = [ 0, 2, 50, 3 ] +quit_offset = [0, 2, 50, 3] [pick] -open_title = "Open with:" +open_title = "Open with:" open_origin = "hovered" -open_offset = [ 0, 1, 50, 7 ] +open_offset = [0, 1, 50, 7] [which] -sort_by = "none" +sort_by = "none" sort_sensitive = false -sort_reverse = false -sort_translit = false - -[log] -enabled = false +sort_reverse = false +sort_translit = false diff --git a/config/zsh/functions/functions.zsh b/config/zsh/functions/functions.zsh index 425aa0c..9e03b70 100644 --- a/config/zsh/functions/functions.zsh +++ b/config/zsh/functions/functions.zsh @@ -42,10 +42,10 @@ fzf-jq() { } function yy() { - local tmp="$(mktemp -t "yazi-cwd.XXXXX")" + local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd yazi "$@" --cwd-file="$tmp" - if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then - \cd -- "$cwd" + if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then + builtin cd -- "$cwd" fi rm -f -- "$tmp" } From f64e1297166118a535af8c85358308bf7c4b6e74 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 29 Jan 2025 14:55:38 -0300 Subject: [PATCH 044/152] recover and update hyprland config --- .dotter/global.toml | 11 ++ .dotter/work-laptop.toml | 2 +- config/hypr/executable_gdm-wrapper.sh | 39 +++++ config/hypr/hyprland.conf | 197 ++++++++++++++++++++++++++ config/hypr/hyprpaper.conf | 4 + 5 files changed, 252 insertions(+), 1 deletion(-) create mode 100644 config/hypr/executable_gdm-wrapper.sh create mode 100644 config/hypr/hyprland.conf create mode 100644 config/hypr/hyprpaper.conf diff --git a/.dotter/global.toml b/.dotter/global.toml index 86800d3..16cade7 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -71,3 +71,14 @@ cargo.packages = [] [mise.files] "config/mise" = "~/.config/mise" + +[wm.files] +"config/mako" = "~/.config/mako" +"config/swappy" = "~/.config/swappy" +"config/waybar" = "~/.config/waybar/" + +[hyprland] +depends = ["wm"] + +[hyprland.files] +"config/hypr" = "~/.config/hypr" diff --git a/.dotter/work-laptop.toml b/.dotter/work-laptop.toml index d990e6b..200612e 100644 --- a/.dotter/work-laptop.toml +++ b/.dotter/work-laptop.toml @@ -1,5 +1,5 @@ includes = [".dotter/machines/fedora.toml"] -packages = ["cli", "dev", "mise"] +packages = ["cli", "dev", "mise", "hyprland"] [files] diff --git a/config/hypr/executable_gdm-wrapper.sh b/config/hypr/executable_gdm-wrapper.sh new file mode 100644 index 0000000..3b0982d --- /dev/null +++ b/config/hypr/executable_gdm-wrapper.sh @@ -0,0 +1,39 @@ +#!/usr/bin/sh + +if [ "x$XDG_SESSION_TYPE" = "xwayland" ] && + [ "x$XDG_SESSION_CLASS" != "xgreeter" ] && + [ -n "$SHELL" ] && + grep -q "$SHELL" /etc/shells && + ! (echo "$SHELL" | grep -q "false") && + ! (echo "$SHELL" | grep -q "nologin"); then + if [ "$1" != '-l' ]; then + exec bash -c "exec -l '$SHELL' -c '$0 -l $*'" + else + shift + fi +fi + +SETTING=$(G_MESSAGES_DEBUG='' gsettings get org.gnome.system.locale region) +REGION=${SETTING#\'} +REGION=${REGION%\'} + +if [ -n "$REGION" ]; then + unset LC_TIME LC_NUMERIC LC_MONETARY LC_MEASUREMENT LC_PAPER + + if [ "$LANG" != "$REGION" ]; then + # LC_CTYPE + export LC_NUMERIC=$REGION + export LC_TIME=$REGION + # LC_COLLATE + export LC_MONETARY=$REGION + # LC_MESSAGES + export LC_PAPER=$REGION + # LC_NAME + export LC_ADDRESS=$REGION + export LC_TELEPHONE=$REGION + export LC_MEASUREMENT=$REGION + # LC_IDENTIFICATION + fi +fi + +exec Hyprland diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf new file mode 100644 index 0000000..ffaa3fb --- /dev/null +++ b/config/hypr/hyprland.conf @@ -0,0 +1,197 @@ + +# ╭────────────────────────────────────────────────────────────────────╮ +# _ _ _ _ +# | | | |_ _ _ __ _ __| | __ _ _ __ __| | +# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` | +# | _ | |_| | |_) | | | | (_| | | | | (_| | +# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_| +# |___/|_| +# +# ╰────────────────────────────────────────────────────────────────────╯ + + +# ╭──────────────────────────────────────────────────────────╮ +# │ Autostart apps │ +# ╰──────────────────────────────────────────────────────────╯ + +# Execute your favorite apps at launch +exec-once = waybar & hyprpaper & mako + +# ╭──────────────────────────────────────────────────────────╮ +# │ Config │ +# ╰──────────────────────────────────────────────────────────╯ + +# Source a file (multi-file configs) +# source = ~/.config/hypr/myColors.conf + +# ── Monitors ────────────────────────────────────────────────────────── +monitor = , preferred, auto, 1 +monitor = WAYLAND-1, disable # hack for when running manually + +# Some default env vars. +env = XCURSOR_SIZE,24 + +# ── Input devides ───────────────────────────────────────────────────── +input { + kb_layout = latam + kb_variant = + kb_model = + kb_options = caps:escape + kb_rules = + + follow_mouse = 2 + + touchpad { + natural_scroll = true + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +# ── General config ──────────────────────────────────────────────────── +general { + gaps_in = 5 + gaps_out = 10 + border_size = 2 + + # snap { + # enabled = true + # } + + layout = master +} + +decoration { + rounding = 2 + drop_shadow = true + shadow_range = 4 + shadow_render_power = 3 + col.shadow = rgba(1a1a1aee) +} + +animations { + enabled = true + + animation = windows, 1, 5, default, slide + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default + animation = specialWorkspace, 1, 8, default, fade +} + +gestures { + workspace_swipe = true + workspace_swipe_invert = false +} + +# ── Layouts ─────────────────────────────────────────────────────────── +master { + new_status = slave + mfact = 0.5 + # slave_count_for_center_master = 4 +} + +# ╭──────────────────────────────────────────────────────────╮ +# │ Windows rules │ +# ╰──────────────────────────────────────────────────────────╯ + + +# ╭──────────────────────────────────────────────────────────╮ +# │ Keybindings │ +# ╰──────────────────────────────────────────────────────────╯ + +$mainMod = SUPER + +$menu = bemenu-run -iw -l 20 -P '>' -p 'Open:' --fn 'JetBrainsMono 13' --ab '##24273add' --af '##f4dbd6' --fb '##24273add' --ff '##8bd5ca' --hb '##24273add' --hf '##a6da95' --nb '##24273add' --nf '##f4dbd6' --nf '##f4dbd6' --tb '##24273add' --tf '##c6a0f6dd' --scb '##24273add' --scf '##c6a0f6' + +# ── Spawn ───────────────────────────────────────────────────────────── +bind = $mainMod SHIFT, E, exit, +bind = $mainMod, return, exec, kitty +bind = $mainMod SHIFT, q, killactive, +bind = $mainMod, D, exec, $menu + +# screenshot current window +bind = $mainMod, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy +# screenshot area +bind = $mainMod SHIFT, Print, exec, grim -g "$(slurp -d)" - | wl-copy +# screenshot area and edit it +bind = $mainMod CTRL, Print, exec, grim -g "$(slurp -d)" - | swappy -f - + +bind = $mainMod, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ +bind = $mainMod, XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- +bind = $mainMod, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bind = $mainMod, XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bind = $mainMod, XF86AudioPlay, exec, playerctl play-pause +bind = $mainMod, XF86AudioNext, exec, playerctl next +bind = $mainMod, XF86AudioPrev, exec, playerctl previous +bind = $mainMod, XF86MonBrightnessUp, exec, brightnessctl set +5% +bind = $mainMod, XF86MonBrightnessDown, exec, brightnessctl set 5%- + +# ── Window Options ──────────────────────────────────────────────────── +bind = $mainMod SHIFT, space, togglefloating, +bind = $mainMod, f, fullscreen, 1 # preserve gaps and bar +bind = $mainMod SHIFT, f, fullscreen, 0 # use whole screen + +# ── Focus ───────────────────────────────────────────────────────────── +bind = $mainMod, h, movefocus, l +bind = $mainMod, j, movefocus, d +bind = $mainMod, k, movefocus, u +bind = $mainMod, l, movefocus, r + +bind = $mainMod + SHIFT, h, movewindow, l +bind = $mainMod + SHIFT, j, movewindow, d +bind = $mainMod + SHIFT, k, movewindow, u +bind = $mainMod + SHIFT, l, movewindow, r + +bind = $mainMod, bar, workspace, previous +bind = $mainMod CTRL, bar, focusmonitor, +1 +bind = $mainMod, space, focusurgentorlast +bind = $mainMod, tab, cyclenext, visible +bind = $mainMod SHIFT, tab, cyclenext, visible prev + +# ── Layout ────────────────────────────────────────────────────────────── + +bind = $mainMod, plus, layoutmsg, mfact +0.1 +bind = $mainMod, minus, layoutmsg, mfact -0.1 +bind = $mainMod CTRL, 0, layoutmsg, mfact exact 0.5 +bind = $mainMod, n, layoutmsg, addmaster +bind = $mainMod SHIFT, n, layoutmsg, removemaster +bind = $mainMod, m, layoutmsg, rollprev +bind = $mainMod SHIFT, m, layoutmsg, rollnext +bind = $mainMod, s, layoutmsg, orientationcycle + + +# ── Workspaces ──────────────────────────────────────────────────────── +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 + +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 + +bind = $mainMod, 0, togglespecialworkspace, scratchpad +bind = $mainMod SHIFT, 0, movetoworkspace, special:scratchpad + +# ── Mouse ───────────────────────────────────────────────────────────── +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + diff --git a/config/hypr/hyprpaper.conf b/config/hypr/hyprpaper.conf new file mode 100644 index 0000000..e71274d --- /dev/null +++ b/config/hypr/hyprpaper.conf @@ -0,0 +1,4 @@ +preload = ~/Pictures/wallpaper.jpg + +#set the default wallpaper(s) seen on inital workspace(s) --depending on the number of monitors used +wallpaper = ,~/Pictures/wallpaper.jpg From 42fbf2143678df80928bb2608fd6d9274312ea22 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 29 Jan 2025 16:08:51 -0300 Subject: [PATCH 045/152] update menu and color config --- config/hypr/hyprland.conf | 9 +++-- config/hypr/theme.conf | 77 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 config/hypr/theme.conf diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index ffaa3fb..5ffe76d 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -22,7 +22,7 @@ exec-once = waybar & hyprpaper & mako # ╰──────────────────────────────────────────────────────────╯ # Source a file (multi-file configs) -# source = ~/.config/hypr/myColors.conf +source = ~/.config/hypr/theme.conf # ── Monitors ────────────────────────────────────────────────────────── monitor = , preferred, auto, 1 @@ -54,6 +54,9 @@ general { gaps_out = 10 border_size = 2 + col.active_border = $teal $teal + col.inactive_border = $surface1 $surface1 + # snap { # enabled = true # } @@ -66,7 +69,7 @@ decoration { drop_shadow = true shadow_range = 4 shadow_render_power = 3 - col.shadow = rgba(1a1a1aee) + col.shadow = rgba($baseAlphaee) } animations { @@ -103,7 +106,7 @@ master { $mainMod = SUPER -$menu = bemenu-run -iw -l 20 -P '>' -p 'Open:' --fn 'JetBrainsMono 13' --ab '##24273add' --af '##f4dbd6' --fb '##24273add' --ff '##8bd5ca' --hb '##24273add' --hf '##a6da95' --nb '##24273add' --nf '##f4dbd6' --nf '##f4dbd6' --tb '##24273add' --tf '##c6a0f6dd' --scb '##24273add' --scf '##c6a0f6' +$menu = bemenu-run -iwn --binding vim --vim-esc-exits --scrollbar autohide --fixed-height --counter always -l 20 -P '>' -p 'Open:' -B 2 -R 5 --cw '5x' --fn 'JetBrainsMono 13' --bdr '##$tealAlpha' --ab '##$baseAlpha' --af '##$textAlpha' --fb '##$baseAlpha' --ff '##$textAlpha' --cf '##$mauveAlpha' --hb '##$surface0Alpha' --hf '##$tealAlpha' --nb '##$baseAlpha' --nf '##$textAlpha' --tb '##$mauveAlpha' --tf '##$baseAlpha' --scb '##$surface0Alpha' --scf '##$mauveAlpha' # ── Spawn ───────────────────────────────────────────────────────────── bind = $mainMod SHIFT, E, exit, diff --git a/config/hypr/theme.conf b/config/hypr/theme.conf new file mode 100644 index 0000000..a179511 --- /dev/null +++ b/config/hypr/theme.conf @@ -0,0 +1,77 @@ +$rosewater = rgb(f4dbd6) +$rosewaterAlpha = f4dbd6 + +$flamingo = rgb(f0c6c6) +$flamingoAlpha = f0c6c6 + +$pink = rgb(f5bde6) +$pinkAlpha = f5bde6 + +$mauve = rgb(c6a0f6) +$mauveAlpha = c6a0f6 + +$red = rgb(ed8796) +$redAlpha = ed8796 + +$maroon = rgb(ee99a0) +$maroonAlpha = ee99a0 + +$peach = rgb(f5a97f) +$peachAlpha = f5a97f + +$yellow = rgb(eed49f) +$yellowAlpha = eed49f + +$green = rgb(a6da95) +$greenAlpha = a6da95 + +$teal = rgb(8bd5ca) +$tealAlpha = 8bd5ca + +$sky = rgb(91d7e3) +$skyAlpha = 91d7e3 + +$sapphire = rgb(7dc4e4) +$sapphireAlpha = 7dc4e4 + +$blue = rgb(8aadf4) +$blueAlpha = 8aadf4 + +$lavender = rgb(b7bdf8) +$lavenderAlpha = b7bdf8 + +$text = rgb(cad3f5) +$textAlpha = cad3f5 + +$subtext1 = rgb(b8c0e0) +$subtext1Alpha = b8c0e0 + +$subtext0 = rgb(a5adcb) +$subtext0Alpha = a5adcb + +$overlay2 = rgb(939ab7) +$overlay2Alpha = 939ab7 + +$overlay1 = rgb(8087a2) +$overlay1Alpha = 8087a2 + +$overlay0 = rgb(6e738d) +$overlay0Alpha = 6e738d + +$surface2 = rgb(5b6078) +$surface2Alpha = 5b6078 + +$surface1 = rgb(494d64) +$surface1Alpha = 494d64 + +$surface0 = rgb(363a4f) +$surface0Alpha = 363a4f + +$base = rgb(24273a) +$baseAlpha = 24273a + +$mantle = rgb(1e2030) +$mantleAlpha = 1e2030 + +$crust = rgb(181926) +$crustAlpha = 181926 From 1088826254e3ef32f558736519892c8c18a7d7ab Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 29 Jan 2025 16:19:07 -0300 Subject: [PATCH 046/152] add support for hyprland config syntax in nvim --- config/nvim/lua/aleidk/options.lua | 1 + config/nvim/lua/aleidk/plugins-ide/lsp.lua | 1 + 2 files changed, 2 insertions(+) diff --git a/config/nvim/lua/aleidk/options.lua b/config/nvim/lua/aleidk/options.lua index d1fe584..d8d6d1e 100644 --- a/config/nvim/lua/aleidk/options.lua +++ b/config/nvim/lua/aleidk/options.lua @@ -128,5 +128,6 @@ vim.filetype.add({ ["%.env%.[%w_.-]+"] = "dotenv", [".*%.blade%.php"] = "blade", [".*%.hurl.*"] = "hurl", + [".*/hypr/.*%.conf"] = "hyprlang", }, }) diff --git a/config/nvim/lua/aleidk/plugins-ide/lsp.lua b/config/nvim/lua/aleidk/plugins-ide/lsp.lua index de3a8b4..9f3e308 100644 --- a/config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ b/config/nvim/lua/aleidk/plugins-ide/lsp.lua @@ -100,6 +100,7 @@ return { }, harper_ls = {}, html = {}, + hyprls = {}, marksman = {}, phpactor = {}, gopls = { From 2ceae5e29300d2470137c0f0a11c244804e4fb84 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 29 Jan 2025 16:19:45 -0300 Subject: [PATCH 047/152] add missing configs for wayland wm --- config/mako/config | 11 ++ config/swappy/config | 10 + config/waybar/config | 147 ++++++++++++++ config/waybar/style.css | 179 ++++++++++++++++++ config/waybar/sway-bar.sh | 13 ++ config/waybar/themes/catppuccin-macchiato.css | 26 +++ 6 files changed, 386 insertions(+) create mode 100644 config/mako/config create mode 100644 config/swappy/config create mode 100644 config/waybar/config create mode 100644 config/waybar/style.css create mode 100644 config/waybar/sway-bar.sh create mode 100644 config/waybar/themes/catppuccin-macchiato.css diff --git a/config/mako/config b/config/mako/config new file mode 100644 index 0000000..1b7531f --- /dev/null +++ b/config/mako/config @@ -0,0 +1,11 @@ +default-timeout=5000 + +# Colors + +background-color=#24273a +text-color=#cad3f5 +border-color=#8aadf4 +progress-color=over #363a4f + +[urgency=high] +border-color=#f5a97f diff --git a/config/swappy/config b/config/swappy/config new file mode 100644 index 0000000..d0fa954 --- /dev/null +++ b/config/swappy/config @@ -0,0 +1,10 @@ +[Default] +save_dir=$HOME/Pictures +save_filename_format=screenshot-%Y%m%d-%H%M%S.png +show_panel=true +line_size=5 +text_size=20 +text_font=sans-serif +paint_mode=arrow +early_exit=true +fill_shape=false diff --git a/config/waybar/config b/config/waybar/config new file mode 100644 index 0000000..ab5596c --- /dev/null +++ b/config/waybar/config @@ -0,0 +1,147 @@ +{ + // "layer": "top", // Waybar at top layer + // "height": 30, // Waybar height (to be removed for auto height) + "spacing": 4, // Gaps between modules (4px) + // Choose the order of the modules + "modules-left": [ + "hyprland/workspaces", + ], + "modules-center": [ + "tray" + ], + "modules-right": [ + "idle_inhibitor", + "pulseaudio", + "network", + "battery", + "clock" + ], + // Modules configuration + "hyprland/workspaces": { + "disable-scroll": true, + "warp-on-scroll": true, + "format": "{icon}", + "format-icons": { + "1": "", + "2": "", + "3": "", + "9": "", + "10": "󰌳", + "default": "" + } + }, + "keyboard-state": { + "numlock": true, + "capslock": true, + "format": "{name} {icon}", + "format-icons": { + "locked": "", + "unlocked": "" + } + }, + "mpd": { + "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format-disconnected": "Disconnected ", + "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", + "unknown-tag": "N/A", + "interval": 2, + "consume-icons": { + "on": " " + }, + "random-icons": { + "off": " ", + "on": " " + }, + "repeat-icons": { + "on": " " + }, + "single-icons": { + "on": "1 " + }, + "state-icons": { + "paused": "", + "playing": "" + }, + "tooltip-format": "MPD (connected)", + "tooltip-format-disconnected": "MPD (disconnected)" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "󰅶", + "deactivated": "󰾪" + } + }, + "tray": { + // "icon-size": 21, + "spacing": 10 + }, + "clock": { + // "timezone": "America/New_York", + "format": "{:%I:%M}", + "tooltip-format": "{:%Y %B}\n{calendar}", + "format-alt": "{:%Y-%m-%d}" + }, + "cpu": { + "format": "{usage}% ", + "tooltip": false + }, + "memory": { + "format": "{}% " + }, + "temperature": { + // "thermal-zone": 2, + // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "critical-threshold": 80, + // "format-critical": "{temperatureC}°C {icon}", + "format": "{temperatureC}°C {icon}", + "format-icons": ["", "", ""] + }, + "backlight": { + // "device": "acpi_video1", + "format": "{percent}% {icon}", + "format-icons": ["", "", "", "", "", "", "", "", ""] + }, + "battery": { + "states": { + // "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{capacity}% {icon}", + "format-charging": "{capacity}% ", + "format-plugged": "{capacity}% ", + "format-alt": "{time} {icon}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", + "format-icons": ["", "", "", "", ""] + }, + "network": { + // "interface": "wlp2*", // (Optional) To force the use of this interface + "format-wifi": "{essid} ({signalStrength}%) ", + "format-ethernet": "{ipaddr}/{cidr} ", + "tooltip-format": "{ifname} via {gwaddr} ", + "format-linked": "{ifname} (No IP) ", + "format-disconnected": "Disconnected ⚠", + "format-alt": "{ifname}: {ipaddr}/{cidr}" + }, + "pulseaudio": { + // "scroll-step": 1, // %, can be a float + "format": "{volume}% {icon} {format_source}", + "format-bluetooth": "{volume}% {icon} {format_source}", + "format-bluetooth-muted": " {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": "{volume}% ", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": ["", "", ""] + }, + "on-click": "pavucontrol" + } +} diff --git a/config/waybar/style.css b/config/waybar/style.css new file mode 100644 index 0000000..c6f1913 --- /dev/null +++ b/config/waybar/style.css @@ -0,0 +1,179 @@ +@import "./themes/catppuccin-macchiato.css"; + +@keyframes blink_red { + to { + background-color: @red; + color: @base; + } +} + +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: JetBrainsMono Roboto, Helvetica, Arial, sans-serif; + font-size: 1rem; +} + +box.modules-left, +box.modules-center, +box.modules-right { + border-radius: 1rem; + background-color: @base; +} + +.warning, +.critical, +.urgent { + animation-name: blink_red; + animation-duration: 800ms; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#mode, +#clock, +#memory, +#temperature, +#cpu, +#custom-weather, +#mpd, +#idle_inhibitor, +#backlight, +#pulseaudio, +#network, +#battery, +#custom-powermenu, +#custom-cava-internal, +#custom-launcher, +#tray, +#disk, +#custom-pacman, +#custom-scratchpad-indicator { + padding: 0 0.6rem; + background-color: @red; +} + +/* Bar */ +window#waybar { + background-color: transparent; +} + +window > box { + background-color: transparent; + margin: 5px 11px; + margin-bottom: 0; +} + +window#waybar button:not(:first-child), +window#waybar button:not(:last-child) { + border-radius: 0; +} + +window#waybar button:first-child { + border-radius: 1rem 0 0 1rem; +} + +window#waybar button:last-child { + border-radius: 0 1rem 1rem 0; +} + +/* Workspaces */ +#workspaces button { + padding: 0.2rem 0.75rem; + color: @text; +} + +#workspaces button label { + background-color: transparent; + font-size: 1.2rem; +} + +#workspaces button:not(:first-child) label { + /* Fix fontawesome miss alignment, depends of the padding above and font size */ + margin-right: 0.45rem; +} + +#workspaces button.focused { + color: @teal; + background-color: alpha(@teal, 0.15); +} + +#workspaces button:hover { + /* border: .2px solid transparent; */ + background: alpha(@blue, 0.15); + color: @blue; + border-color: transparent; + box-shadow: inherit; + text-shadow: inherit; +} + +/* Tooltip */ +tooltip { + background-color: @base; +} + +tooltip label { + color: @rosewater; +} + +/* battery */ +#battery { + color: @mauve; + padding-right: 1.15rem; +} +#battery.full { + color: @green; +} +#battery.charging { + color: @teal; +} +#battery.discharging { + color: @peach; +} +#battery.critical:not(.charging) { + color: @pink; +} +#custom-powermenu { + color: @red; +} + +#memory { + color: @peach; +} +#cpu { + color: @blue; +} +#clock { + color: @rosewater; +} +#idle_inhibitor { + color: @green; + padding-right: 0.9rem; +} +#temperature { + color: @sapphire; +} +#backlight { + color: @green; +} +#pulseaudio { + color: @mauve; /* not active */ +} +#network { + color: @pink; /* not active */ +} +#network.disconnected { + color: @foreground; /* not active */ +} +#disk { + color: @maroon; +} +#custom-pacman { + color: @sky; +} +#custom-scratchpad-indicator { + color: @yellow; +} +#custom-weather { + color: @red; +} diff --git a/config/waybar/sway-bar.sh b/config/waybar/sway-bar.sh new file mode 100644 index 0000000..ffc6ce1 --- /dev/null +++ b/config/waybar/sway-bar.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +# Date +date=$(date "+%a %F %R") + +# Battery +battery=$(cat /sys/class/power_supply/BAT*/capacity) + +# Alsa master volume +volume=$(amixer get Master | grep "Right:" | cut -f 7,8 -d " ") + +# Status bar +echo "Vol: $volume | Bat: ${battery}% | $date" diff --git a/config/waybar/themes/catppuccin-macchiato.css b/config/waybar/themes/catppuccin-macchiato.css new file mode 100644 index 0000000..112ee32 --- /dev/null +++ b/config/waybar/themes/catppuccin-macchiato.css @@ -0,0 +1,26 @@ +@define-color rosewater #f4dbd6; +@define-color flamingo #f0c6c6; +@define-color pink #f5bde6; +@define-color mauve #c6a0f6; +@define-color red #ed8796; +@define-color maroon #ee99a0; +@define-color peach #f5a97f; +@define-color yellow #eed49f; +@define-color green #a6da95; +@define-color teal #8bd5ca; +@define-color sky #91d7e3; +@define-color sapphire #7dc4e4; +@define-color blue #8aadf4; +@define-color lavender #b7bdf8; +@define-color text #cad3f5; +@define-color subtext1 #b8c0e0; +@define-color subtext0 #a5adcb; +@define-color overlay2 #939ab7; +@define-color overlay1 #8087a2; +@define-color overlay0 #6e738d; +@define-color surface2 #5b6078; +@define-color surface1 #494d64; +@define-color surface0 #363a4f; +@define-color base #24273a; +@define-color mantle #1e2030; +@define-color crust #181926; From 5a3ec56f818ee98c084e965a3a70f3fed0cbfbae Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 29 Jan 2025 22:17:49 -0300 Subject: [PATCH 048/152] Add almighty machine --- .dotter/almighty.toml | 8 ++++++++ .dotter/global.toml | 1 + .dotter/pre_deploy.sh | 2 +- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 .dotter/almighty.toml mode change 100644 => 100755 .dotter/pre_deploy.sh diff --git a/.dotter/almighty.toml b/.dotter/almighty.toml new file mode 100644 index 0000000..5d48e73 --- /dev/null +++ b/.dotter/almighty.toml @@ -0,0 +1,8 @@ +packages = ["cli", "dev", "mise", "hyprland"] + +[files] + +[variables] +nvim-core = true +nvim-base = true +nvim-ide = true diff --git a/.dotter/global.toml b/.dotter/global.toml index 16cade7..449e52c 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -76,6 +76,7 @@ cargo.packages = [] "config/mako" = "~/.config/mako" "config/swappy" = "~/.config/swappy" "config/waybar" = "~/.config/waybar/" +"config/ironbar" = { target = "~/.config/ironbar/", type = "symbolic" } [hyprland] depends = ["wm"] diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh old mode 100644 new mode 100755 index 92715f8..42bf8d6 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -2,7 +2,7 @@ # shellcheck disable=all # This is a handlerbars template, so ignore issues -set -euo pipefail +set -xeuo pipefail checksum_file=".dotter/cache/pre_deploy.checksum" From add1b86ba77ac9b1b74ef7367a939ae8c3e48437 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 29 Jan 2025 22:18:15 -0300 Subject: [PATCH 049/152] update hyprland config --- config/hypr/hyprland.conf | 30 ++--- config/waybar/config | 247 +++++++++++++++++------------------- config/waybar/style-bkp.css | 179 ++++++++++++++++++++++++++ config/waybar/style.css | 202 +++++++---------------------- 4 files changed, 354 insertions(+), 304 deletions(-) create mode 100644 config/waybar/style-bkp.css diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 5ffe76d..ae7e58c 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -1,7 +1,3 @@ - -# ╭────────────────────────────────────────────────────────────────────╮ -# _ _ _ _ -# | | | |_ _ _ __ _ __| | __ _ _ __ __| | # | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` | # | _ | |_| | |_) | | | | (_| | | | | (_| | # |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_| @@ -15,7 +11,10 @@ # ╰──────────────────────────────────────────────────────────╯ # Execute your favorite apps at launch -exec-once = waybar & hyprpaper & mako +exec-once = pipewire +exec-once = waybar +exec-once = hyprpaper +exec-once = mako # ╭──────────────────────────────────────────────────────────╮ # │ Config │ @@ -106,7 +105,8 @@ master { $mainMod = SUPER -$menu = bemenu-run -iwn --binding vim --vim-esc-exits --scrollbar autohide --fixed-height --counter always -l 20 -P '>' -p 'Open:' -B 2 -R 5 --cw '5x' --fn 'JetBrainsMono 13' --bdr '##$tealAlpha' --ab '##$baseAlpha' --af '##$textAlpha' --fb '##$baseAlpha' --ff '##$textAlpha' --cf '##$mauveAlpha' --hb '##$surface0Alpha' --hf '##$tealAlpha' --nb '##$baseAlpha' --nf '##$textAlpha' --tb '##$mauveAlpha' --tf '##$baseAlpha' --scb '##$surface0Alpha' --scf '##$mauveAlpha' +# $menu = bemenu-run -iwn --binding vim --vim-esc-exits --scrollbar autohide --fixed-height --counter always -l 20 -P '>' -p 'Open:' -B 2 -R 5 --cw '5x' --fn 'JetBrainsMono 13' --bdr '##$tealAlpha' --ab '##$baseAlpha' --af '##$textAlpha' --fb '##$baseAlpha' --ff '##$textAlpha' --cf '##$mauveAlpha' --hb '##$surface0Alpha' --hf '##$tealAlpha' --nb '##$baseAlpha' --nf '##$textAlpha' --tb '##$mauveAlpha' --tf '##$baseAlpha' --scb '##$surface0Alpha' --scf '##$mauveAlpha' +$menu = rofi -show drun # ── Spawn ───────────────────────────────────────────────────────────── bind = $mainMod SHIFT, E, exit, @@ -121,15 +121,15 @@ bind = $mainMod SHIFT, Print, exec, grim -g "$(slurp -d)" - | wl-copy # screenshot area and edit it bind = $mainMod CTRL, Print, exec, grim -g "$(slurp -d)" - | swappy -f - -bind = $mainMod, XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ -bind = $mainMod, XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- -bind = $mainMod, XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle -bind = $mainMod, XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle -bind = $mainMod, XF86AudioPlay, exec, playerctl play-pause -bind = $mainMod, XF86AudioNext, exec, playerctl next -bind = $mainMod, XF86AudioPrev, exec, playerctl previous -bind = $mainMod, XF86MonBrightnessUp, exec, brightnessctl set +5% -bind = $mainMod, XF86MonBrightnessDown, exec, brightnessctl set 5%- +bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ +bind = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- +bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bind = , XF86AudioPlay, exec, playerctl play-pause +bind = , XF86AudioNext, exec, playerctl next +bind = , XF86AudioPrev, exec, playerctl previous +bind = , XF86MonBrightnessUp, exec, brightnessctl set +5% +bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%- # ── Window Options ──────────────────────────────────────────────────── bind = $mainMod SHIFT, space, togglefloating, diff --git a/config/waybar/config b/config/waybar/config index ab5596c..700eac6 100644 --- a/config/waybar/config +++ b/config/waybar/config @@ -1,147 +1,128 @@ { - // "layer": "top", // Waybar at top layer - // "height": 30, // Waybar height (to be removed for auto height) - "spacing": 4, // Gaps between modules (4px) - // Choose the order of the modules - "modules-left": [ - "hyprland/workspaces", - ], - "modules-center": [ - "tray" - ], - "modules-right": [ - "idle_inhibitor", - "pulseaudio", - "network", - "battery", - "clock" - ], - // Modules configuration - "hyprland/workspaces": { - "disable-scroll": true, - "warp-on-scroll": true, + "layer":"top", + "position":"top", + "reload_style_on_change":true, + + "height":20, + "margin-bottom":5, + "margin-left": 5, + "margin-right":5, + + "modules-left":["hyprland/workspaces"], + "modules-center":["clock"], + "modules-right":[ + "custom/notification", + "idle_inhibitor", + "network", + "bluetooth", + "backlight", + "wireplumber", + "clock#time", + "battery", + "custom/power" + ], + + "hyprland/workspaces": { + "all-outputs": true, + "format": "{icon}", + "format-icons": { + "1": "✨", + "2": "🌈", + "3": "💕", + "4": "🎄", + "5": "🌊", + "6": "🌷", + "7": "🪷", + "8": "😽", + "9": "🌙", + "10": "🦋", + }, + "on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null", + "on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null", + "sort-by-number": true, + "active-only": false, + }, + "backlight":{ + "format": "󱩖 {percent}% ", + "device": "intel_backlight", + "on-scroll-down": "brightnessctl s 5%-", + "on-scroll-up": "brightnessctl s +5%" + }, + + "idle_inhibitor": { "format": "{icon}", "format-icons": { - "1": "", - "2": "", - "3": "", - "9": "", - "10": "󰌳", - "default": "" - } + "activated": "", + "deactivated": "" + }, + "tooltip": "true" }, - "keyboard-state": { - "numlock": true, - "capslock": true, - "format": "{name} {icon}", - "format-icons": { - "locked": "", - "unlocked": "" - } + + "wireplumber": { + "on-click": "pavucontrol", + "on-click-right": "amixer sset Master toggle 1>/dev/null", + "format": "{icon} {volume}%", + "format-muted": " Muted", + "format-icons": { + "headphone": " ", + "hands-free": " ", + "headset": " ", + "phone": " ", + "portable": " ", + "car": " ", + "default": [" ", " ", " "] + }, + }, + + "network": { + "format-wifi": " {essid} ", + "format-ethernet": " {ifname}", + "format-linked": " {ifname} (No IP)", + "format": " Connected", + "format-disconnected": " Disconnected", + "interval": 60, + "on-click":"~/.config/rofi/rofi-wifi-menu.sh" }, - "mpd": { - "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", - "format-disconnected": "Disconnected ", - "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", - "unknown-tag": "N/A", + "clock": { + "format": " {:%A %e %B}" + }, + "clock#time": { + "format": " {:%H:%M}" + }, + "battery": { "interval": 2, - "consume-icons": { - "on": " " - }, - "random-icons": { - "off": " ", - "on": " " - }, - "repeat-icons": { - "on": " " - }, - "single-icons": { - "on": "1 " - }, - "state-icons": { - "paused": "", - "playing": "" - }, - "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)" - }, - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "󰅶", - "deactivated": "󰾪" - } - }, - "tray": { - // "icon-size": 21, - "spacing": 10 - }, - "clock": { - // "timezone": "America/New_York", - "format": "{:%I:%M}", - "tooltip-format": "{:%Y %B}\n{calendar}", - "format-alt": "{:%Y-%m-%d}" - }, - "cpu": { - "format": "{usage}% ", - "tooltip": false - }, - "memory": { - "format": "{}% " - }, - "temperature": { - // "thermal-zone": 2, - // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", - "critical-threshold": 80, - // "format-critical": "{temperatureC}°C {icon}", - "format": "{temperatureC}°C {icon}", - "format-icons": ["", "", ""] - }, - "backlight": { - // "device": "acpi_video1", - "format": "{percent}% {icon}", - "format-icons": ["", "", "", "", "", "", "", "", ""] - }, - "battery": { "states": { - // "good": 95, + "good": 95, "warning": 30, "critical": 15 }, - "format": "{capacity}% {icon}", - "format-charging": "{capacity}% ", - "format-plugged": "{capacity}% ", - "format-alt": "{time} {icon}", - // "format-good": "", // An empty format will hide the module - // "format-full": "", - "format-icons": ["", "", "", "", ""] + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-icons": [ + "", + "", + "", + "", + "" + ] }, - "network": { - // "interface": "wlp2*", // (Optional) To force the use of this interface - "format-wifi": "{essid} ({signalStrength}%) ", - "format-ethernet": "{ipaddr}/{cidr} ", - "tooltip-format": "{ifname} via {gwaddr} ", - "format-linked": "{ifname} (No IP) ", - "format-disconnected": "Disconnected ⚠", - "format-alt": "{ifname}: {ipaddr}/{cidr}" + "bluetooth":{ + "format-on": " Turned On", + "format-off": " Turned Off", + "format-disabled": " Disabled", + "format-connected": " Connected", + "format": " Disabled", + "on-click":"blueman-manager &" }, - "pulseaudio": { - // "scroll-step": 1, // %, can be a float - "format": "{volume}% {icon} {format_source}", - "format-bluetooth": "{volume}% {icon} {format_source}", - "format-bluetooth-muted": " {icon} {format_source}", - "format-muted": " {format_source}", - "format-source": "{volume}% ", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "", - "default": ["", "", ""] - }, - "on-click": "pavucontrol" + + "custom/power":{ + "format":"", + "on-click":"~/.config/rofi/powermenu/type-4/powermenu.sh" + }, + "custom/notification":{ + "format": "󱅫", + "on-click": "swaync-client -t -sw" } + } diff --git a/config/waybar/style-bkp.css b/config/waybar/style-bkp.css new file mode 100644 index 0000000..c6f1913 --- /dev/null +++ b/config/waybar/style-bkp.css @@ -0,0 +1,179 @@ +@import "./themes/catppuccin-macchiato.css"; + +@keyframes blink_red { + to { + background-color: @red; + color: @base; + } +} + +* { + /* `otf-font-awesome` is required to be installed for icons */ + font-family: JetBrainsMono Roboto, Helvetica, Arial, sans-serif; + font-size: 1rem; +} + +box.modules-left, +box.modules-center, +box.modules-right { + border-radius: 1rem; + background-color: @base; +} + +.warning, +.critical, +.urgent { + animation-name: blink_red; + animation-duration: 800ms; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#mode, +#clock, +#memory, +#temperature, +#cpu, +#custom-weather, +#mpd, +#idle_inhibitor, +#backlight, +#pulseaudio, +#network, +#battery, +#custom-powermenu, +#custom-cava-internal, +#custom-launcher, +#tray, +#disk, +#custom-pacman, +#custom-scratchpad-indicator { + padding: 0 0.6rem; + background-color: @red; +} + +/* Bar */ +window#waybar { + background-color: transparent; +} + +window > box { + background-color: transparent; + margin: 5px 11px; + margin-bottom: 0; +} + +window#waybar button:not(:first-child), +window#waybar button:not(:last-child) { + border-radius: 0; +} + +window#waybar button:first-child { + border-radius: 1rem 0 0 1rem; +} + +window#waybar button:last-child { + border-radius: 0 1rem 1rem 0; +} + +/* Workspaces */ +#workspaces button { + padding: 0.2rem 0.75rem; + color: @text; +} + +#workspaces button label { + background-color: transparent; + font-size: 1.2rem; +} + +#workspaces button:not(:first-child) label { + /* Fix fontawesome miss alignment, depends of the padding above and font size */ + margin-right: 0.45rem; +} + +#workspaces button.focused { + color: @teal; + background-color: alpha(@teal, 0.15); +} + +#workspaces button:hover { + /* border: .2px solid transparent; */ + background: alpha(@blue, 0.15); + color: @blue; + border-color: transparent; + box-shadow: inherit; + text-shadow: inherit; +} + +/* Tooltip */ +tooltip { + background-color: @base; +} + +tooltip label { + color: @rosewater; +} + +/* battery */ +#battery { + color: @mauve; + padding-right: 1.15rem; +} +#battery.full { + color: @green; +} +#battery.charging { + color: @teal; +} +#battery.discharging { + color: @peach; +} +#battery.critical:not(.charging) { + color: @pink; +} +#custom-powermenu { + color: @red; +} + +#memory { + color: @peach; +} +#cpu { + color: @blue; +} +#clock { + color: @rosewater; +} +#idle_inhibitor { + color: @green; + padding-right: 0.9rem; +} +#temperature { + color: @sapphire; +} +#backlight { + color: @green; +} +#pulseaudio { + color: @mauve; /* not active */ +} +#network { + color: @pink; /* not active */ +} +#network.disconnected { + color: @foreground; /* not active */ +} +#disk { + color: @maroon; +} +#custom-pacman { + color: @sky; +} +#custom-scratchpad-indicator { + color: @yellow; +} +#custom-weather { + color: @red; +} diff --git a/config/waybar/style.css b/config/waybar/style.css index c6f1913..7b6d2ac 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -1,179 +1,69 @@ @import "./themes/catppuccin-macchiato.css"; -@keyframes blink_red { - to { - background-color: @red; - color: @base; - } -} - -* { - /* `otf-font-awesome` is required to be installed for icons */ +*{ + font-size: 13px; font-family: JetBrainsMono Roboto, Helvetica, Arial, sans-serif; - font-size: 1rem; + color: @text; +} +#waybar { + background: transparent; + border-radius: 5px; +} +#workspaces{ + border-radius:5px; + box-shadow:0px 0px black; } box.modules-left, box.modules-center, box.modules-right { - border-radius: 1rem; + border-radius: 6px; background-color: @base; } -.warning, -.critical, -.urgent { - animation-name: blink_red; - animation-duration: 800ms; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; -} - -#mode, -#clock, -#memory, -#temperature, -#cpu, -#custom-weather, -#mpd, -#idle_inhibitor, -#backlight, -#pulseaudio, +#workspaces, #network, +#backlight, +#wireplumber, +#clock, #battery, -#custom-powermenu, -#custom-cava-internal, -#custom-launcher, -#tray, -#disk, -#custom-pacman, -#custom-scratchpad-indicator { +#idle_inhibitor, +#bluetooth, +#custom-power, +#custom-notification{ padding: 0 0.6rem; - background-color: @red; } -/* Bar */ -window#waybar { - background-color: transparent; +#network, +#wireplumber, +#backlight, +#bluetooth{ + margin:0px; +} +#backlight, +#bluetooth{ + border-radius:0px; +} +#wireplumber{ + border-radius: 0px 5px 5px 0px; } -window > box { - background-color: transparent; - margin: 5px 11px; - margin-bottom: 0; +#idle_inhibitor, +#clock, +#workspaces, +#custom-lizzy, +#custom-power, +#battery, +#custom-notification{ + border-radius: 5px; } -window#waybar button:not(:first-child), -window#waybar button:not(:last-child) { - border-radius: 0; +#idle_inhibitor.activated{ + color:#e57474; } -window#waybar button:first-child { - border-radius: 1rem 0 0 1rem; -} - -window#waybar button:last-child { - border-radius: 0 1rem 1rem 0; -} - -/* Workspaces */ -#workspaces button { - padding: 0.2rem 0.75rem; - color: @text; -} - -#workspaces button label { - background-color: transparent; - font-size: 1.2rem; -} - -#workspaces button:not(:first-child) label { - /* Fix fontawesome miss alignment, depends of the padding above and font size */ - margin-right: 0.45rem; -} - -#workspaces button.focused { - color: @teal; - background-color: alpha(@teal, 0.15); -} - -#workspaces button:hover { - /* border: .2px solid transparent; */ - background: alpha(@blue, 0.15); - color: @blue; - border-color: transparent; - box-shadow: inherit; - text-shadow: inherit; -} - -/* Tooltip */ -tooltip { - background-color: @base; -} - -tooltip label { - color: @rosewater; -} - -/* battery */ -#battery { - color: @mauve; - padding-right: 1.15rem; -} -#battery.full { - color: @green; -} -#battery.charging { - color: @teal; -} -#battery.discharging { - color: @peach; -} -#battery.critical:not(.charging) { - color: @pink; -} -#custom-powermenu { - color: @red; -} - -#memory { - color: @peach; -} -#cpu { - color: @blue; -} -#clock { - color: @rosewater; -} -#idle_inhibitor { - color: @green; - padding-right: 0.9rem; -} -#temperature { - color: @sapphire; -} -#backlight { - color: @green; -} -#pulseaudio { - color: @mauve; /* not active */ -} -#network { - color: @pink; /* not active */ -} -#network.disconnected { - color: @foreground; /* not active */ -} -#disk { - color: @maroon; -} -#custom-pacman { - color: @sky; -} -#custom-scratchpad-indicator { - color: @yellow; -} -#custom-weather { - color: @red; +#custom-power{ +color:#c47fd5; +margin-right:10px; +padding-right:14px; } From 5d3110f589b9b19f9d7ded27d70e9f7f4b60c39c Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 30 Jan 2025 13:27:35 -0300 Subject: [PATCH 050/152] update waybar config --- .dotter/global.toml | 1 - .dotter/pre_deploy.sh | 2 +- config/hypr/hyprland.conf | 22 +++++++ config/waybar/config | 128 ------------------------------------ config/waybar/config.jsonc | 130 +++++++++++++++++++++++++++++++++++++ config/waybar/style.css | 32 ++++++++- 6 files changed, 182 insertions(+), 133 deletions(-) delete mode 100644 config/waybar/config create mode 100644 config/waybar/config.jsonc diff --git a/.dotter/global.toml b/.dotter/global.toml index 449e52c..16cade7 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -76,7 +76,6 @@ cargo.packages = [] "config/mako" = "~/.config/mako" "config/swappy" = "~/.config/swappy" "config/waybar" = "~/.config/waybar/" -"config/ironbar" = { target = "~/.config/ironbar/", type = "symbolic" } [hyprland] depends = ["wm"] diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh index 42bf8d6..92715f8 100755 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -2,7 +2,7 @@ # shellcheck disable=all # This is a handlerbars template, so ignore issues -set -xeuo pipefail +set -euo pipefail checksum_file=".dotter/cache/pre_deploy.checksum" diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index ae7e58c..dcbbe12 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -87,6 +87,14 @@ gestures { workspace_swipe_invert = false } +misc { + enable_swallow = true + # swallow_regex = "" + # swallow_exception_regex = "" + + mouse_move_focuses_monitor = false +} + # ── Layouts ─────────────────────────────────────────────────────────── master { new_status = slave @@ -98,6 +106,20 @@ master { # │ Windows rules │ # ╰──────────────────────────────────────────────────────────╯ +# ╭───────────────────────────────────────────────────────────╮ +# │ Workspaces rules │ +# ╰───────────────────────────────────────────────────────────╯ + +workspace = 1, monitor:HDMI-A-1, persistent:true +workspace = 2, monitor:HDMI-A-1, persistent:true +workspace = 3, monitor:HDMI-A-1, persistent:true +workspace = 4, monitor:HDMI-A-1, persistent:true +workspace = 5, monitor:HDMI-A-1, persistent:true + +workspace = 6, monitor:eDP-1, persistent:true +workspace = 7, monitor:eDP-1, persistent:true +workspace = 8, monitor:eDP-1, persistent:true +workspace = 9, monitor:eDP-1, persistent:true # ╭──────────────────────────────────────────────────────────╮ # │ Keybindings │ diff --git a/config/waybar/config b/config/waybar/config deleted file mode 100644 index 700eac6..0000000 --- a/config/waybar/config +++ /dev/null @@ -1,128 +0,0 @@ -{ - "layer":"top", - "position":"top", - "reload_style_on_change":true, - - "height":20, - "margin-bottom":5, - "margin-left": 5, - "margin-right":5, - - "modules-left":["hyprland/workspaces"], - "modules-center":["clock"], - "modules-right":[ - "custom/notification", - "idle_inhibitor", - "network", - "bluetooth", - "backlight", - "wireplumber", - "clock#time", - "battery", - "custom/power" - ], - - "hyprland/workspaces": { - "all-outputs": true, - "format": "{icon}", - "format-icons": { - "1": "✨", - "2": "🌈", - "3": "💕", - "4": "🎄", - "5": "🌊", - "6": "🌷", - "7": "🪷", - "8": "😽", - "9": "🌙", - "10": "🦋", - }, - "on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null", - "on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null", - "sort-by-number": true, - "active-only": false, - }, - "backlight":{ - "format": "󱩖 {percent}% ", - "device": "intel_backlight", - "on-scroll-down": "brightnessctl s 5%-", - "on-scroll-up": "brightnessctl s +5%" - }, - - "idle_inhibitor": { - "format": "{icon}", - "format-icons": { - "activated": "", - "deactivated": "" - }, - "tooltip": "true" - }, - - "wireplumber": { - "on-click": "pavucontrol", - "on-click-right": "amixer sset Master toggle 1>/dev/null", - "format": "{icon} {volume}%", - "format-muted": " Muted", - "format-icons": { - "headphone": " ", - "hands-free": " ", - "headset": " ", - "phone": " ", - "portable": " ", - "car": " ", - "default": [" ", " ", " "] - }, - }, - - "network": { - "format-wifi": " {essid} ", - "format-ethernet": " {ifname}", - "format-linked": " {ifname} (No IP)", - "format": " Connected", - "format-disconnected": " Disconnected", - "interval": 60, - "on-click":"~/.config/rofi/rofi-wifi-menu.sh" - }, - "clock": { - "format": " {:%A %e %B}" - }, - "clock#time": { - "format": " {:%H:%M}" - }, - "battery": { - "interval": 2, - "states": { - "good": 95, - "warning": 30, - "critical": 15 - }, - "format": "{icon} {capacity}%", - "format-charging": " {capacity}%", - "format-plugged": " {capacity}%", - "format-icons": [ - "", - "", - "", - "", - "" - ] - }, - "bluetooth":{ - "format-on": " Turned On", - "format-off": " Turned Off", - "format-disabled": " Disabled", - "format-connected": " Connected", - "format": " Disabled", - "on-click":"blueman-manager &" - }, - - "custom/power":{ - "format":"", - "on-click":"~/.config/rofi/powermenu/type-4/powermenu.sh" - }, - "custom/notification":{ - "format": "󱅫", - "on-click": "swaync-client -t -sw" - } - -} diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc new file mode 100644 index 0000000..14ea8c9 --- /dev/null +++ b/config/waybar/config.jsonc @@ -0,0 +1,130 @@ +{ + "layer": "top", + "position": "top", + "reload_style_on_change": true, + + "height": 20, + "margin-top": 5, + "margin-bottom": 0, + "margin-left": 10, + "margin-right": 10, + + "modules-left": ["hyprland/workspaces"], + "modules-center": ["clock"], + "modules-right": [ + "idle_inhibitor", + "network", + "bluetooth", + "backlight", + "wireplumber", + "battery", + "custom/power" + ], + + "hyprland/workspaces": { + "all-outputs": false, + "format": "{icon}", + "format-icons": { + "1": "", + "2": "", + "3": "", + "9": "", + "10": "󰌳", + "default": "" + }, + "on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null", + "on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null", + "sort-by-number": true, + "active-only": false + }, + "backlight": { + "format": "󱩖 {percent}% ", + "device": "intel_backlight", + "on-scroll-down": "brightnessctl s 5%-", + "on-scroll-up": "brightnessctl s +5%" + }, + + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "󰅶", + "deactivated": "󰾪" + }, + "tooltip": "true" + }, + + "wireplumber": { + "on-click": "pavucontrol", + "on-click-right": "amixer sset Master toggle 1>/dev/null", + "format": "{icon} {volume}%", + "format-muted": " Muted", + "format-icons": { + "headphone": " ", + "hands-free": " ", + "headset": " ", + "phone": " ", + "portable": " ", + "car": " ", + "default": [" ", " ", " "] + } + }, + + "network": { + "format-wifi": " {essid} ", + "format-ethernet": " {ifname}", + "format-linked": " {ifname} (No IP)", + "format": " Connected", + "format-disconnected": " Disconnected", + "interval": 60, + "on-click": "~/.config/rofi/rofi-wifi-menu.sh" + }, + "clock": { + "format": "{:%R}", + "locale": "es_CL.UTF-8", + "format-alt": "{:%a %d, %B %Y}", + "tooltip-format": "{calendar}", + "calendar": { + "mode": "year", + "mode-mon-col": 3, + "weeks-pos": "left", + "on-scroll": 1, + "format": { + "months": "{}", + "days": "{}", + "weeks": "W{}", + "weekdays": "{}", + "today": "{}" + } + }, + "actions": { + "on-click-right": "mode", + "on-scroll-up": "shift_up", + "on-scroll-down": "shift_down" + } + }, + "battery": { + "interval": 2, + "states": { + "good": 95, + "warning": 30, + "critical": 15 + }, + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-icons": ["", "", "", "", ""] + }, + "bluetooth": { + "format-on": " Turned On", + "format-off": " Turned Off", + "format-disabled": " Disabled", + "format-connected": " Connected", + "format": " Disabled", + "on-click": "blueman-manager &" + }, + + "custom/power": { + "format": "", + "on-click": "~/.config/rofi/powermenu/type-4/powermenu.sh" + } +} diff --git a/config/waybar/style.css b/config/waybar/style.css index 7b6d2ac..43618ce 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -1,7 +1,7 @@ @import "./themes/catppuccin-macchiato.css"; *{ - font-size: 13px; + font-size: 0.9rem; font-family: JetBrainsMono Roboto, Helvetica, Arial, sans-serif; color: @text; } @@ -11,7 +11,34 @@ } #workspaces{ border-radius:5px; - box-shadow:0px 0px black; +} + +#workspaces button{ + padding: .25rem .5rem; + margin-right: .5rem; +} + +#workspaces button:last-child{ + margin-right: 0; +} + +#workspaces button.active { + color: @teal; + background-color: alpha(@teal, 0.15); +} + +#workspaces button.urgent { + color: @red; + background-color: alpha(@red, 0.15); +} + +#workspaces button:hover { + /* border: .2px solid transparent; */ + background: alpha(@blue, 0.15); + color: @blue; + border-color: transparent; + box-shadow: inherit; + text-shadow: inherit; } box.modules-left, @@ -21,7 +48,6 @@ box.modules-right { background-color: @base; } -#workspaces, #network, #backlight, #wireplumber, From a73923eb7b71bc5ce930f4d6e65559a6ee8029fb Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 30 Jan 2025 16:46:49 -0300 Subject: [PATCH 051/152] add rofi config --- .dotter/global.toml | 1 + config/rofi/config.rasi | 159 ++++++++++++++++++++++++++++++++++++++++ config/rofi/theme.rasi | 151 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 311 insertions(+) create mode 100644 config/rofi/config.rasi create mode 100644 config/rofi/theme.rasi diff --git a/.dotter/global.toml b/.dotter/global.toml index 16cade7..2439142 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -76,6 +76,7 @@ cargo.packages = [] "config/mako" = "~/.config/mako" "config/swappy" = "~/.config/swappy" "config/waybar" = "~/.config/waybar/" +"config/rofi" = "~/.config/rofi" [hyprland] depends = ["wm"] diff --git a/config/rofi/config.rasi b/config/rofi/config.rasi new file mode 100644 index 0000000..a3bf301 --- /dev/null +++ b/config/rofi/config.rasi @@ -0,0 +1,159 @@ +configuration { +/* modes: "window,drun,run,ssh";*/ +/* font: "mono 12";*/ +/* location: 0;*/ +/* yoffset: 0;*/ +/* xoffset: 0;*/ +/* fixed-num-lines: true;*/ + show-icons: true; +/* preview-cmd: ;*/ +/* terminal: "rofi-sensible-terminal";*/ +/* ssh-client: "ssh";*/ +/* ssh-command: "{terminal} -e {ssh-client} {host} [-p {port}]";*/ +/* run-command: "{cmd}";*/ +/* run-list-command: "";*/ +/* run-shell-command: "{terminal} -e {cmd}";*/ +/* window-command: "wmctrl -i -R {window}";*/ +/* window-match-fields: "all";*/ + icon-theme: "Oranchelo"; +/* drun-match-fields: "name,generic,exec,categories,keywords";*/ +/* drun-categories: ;*/ +/* drun-show-actions: false;*/ +/* drun-display-format: "{name} [({generic})]";*/ +/* drun-url-launcher: "xdg-open";*/ +/* disable-history: false;*/ +/* ignored-prefixes: "";*/ +/* sort: false;*/ +/* sorting-method: "normal";*/ +/* case-sensitive: false;*/ +/* cycle: true;*/ +/* sidebar-mode: false;*/ +/* hover-select: false;*/ +/* eh: 1;*/ +/* auto-select: false;*/ +/* parse-hosts: false;*/ +/* parse-known-hosts: true;*/ +/* combi-modes: "window,run";*/ +/* matching: "normal";*/ +/* tokenize: true;*/ +/* m: "-5";*/ +/* filter: ;*/ +/* dpi: -1;*/ +/* threads: 0;*/ +/* scroll-method: 0;*/ +/* window-format: "{w} {c} {t}";*/ +/* click-to-exit: true;*/ +/* global-kb: false;*/ +/* max-history-size: 25;*/ +/* combi-hide-mode-prefix: false;*/ +/* combi-display-format: "{mode} {text}";*/ +/* matching-negate-char: '-' /* unsupported */;*/ +/* cache-dir: ;*/ +/* window-thumbnail: false;*/ +/* drun-use-desktop-cache: false;*/ +/* drun-reload-desktop-cache: false;*/ +/* normalize-match: false;*/ +/* steal-focus: false;*/ +/* application-fallback-icon: ;*/ +/* refilter-timeout-limit: 300;*/ +/* xserver-i300-workaround: false;*/ +/* completer-mode: "filebrowser";*/ +/* pid: "/run/user/1000/rofi.pid";*/ +/* display-window: ;*/ +/* display-run: ;*/ +/* display-ssh: ;*/ +/* display-drun: ;*/ +/* display-combi: ;*/ +/* display-keys: ;*/ +/* display-filebrowser: ;*/ +/* display-recursivebrowser: ;*/ +/* kb-primary-paste: "Control+V,Shift+Insert";*/ +/* kb-secondary-paste: "Control+v,Insert";*/ +/* kb-secondary-copy: "Control+c";*/ +/* kb-clear-line: "Control+w";*/ +/* kb-move-front: "Control+a";*/ +/* kb-move-end: "Control+e";*/ +/* kb-move-word-back: "Alt+b,Control+Left";*/ +/* kb-move-word-forward: "Alt+f,Control+Right";*/ +/* kb-move-char-back: "Left,Control+b";*/ +/* kb-move-char-forward: "Right,Control+f";*/ +/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/ +/* kb-remove-word-forward: "Control+Alt+d";*/ +/* kb-remove-char-forward: "Delete,Control+d";*/ +/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/ +/* kb-remove-to-eol: "Control+k";*/ +/* kb-remove-to-sol: "Control+u";*/ +/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/ +/* kb-accept-custom: "Control+Return";*/ +/* kb-accept-custom-alt: "Control+Shift+Return";*/ +/* kb-accept-alt: "Shift+Return";*/ +/* kb-delete-entry: "Shift+Delete";*/ +/* kb-mode-next: "Shift+Right,Control+Tab";*/ +/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/ +/* kb-mode-complete: "Control+l";*/ +/* kb-row-left: "Control+Page_Up";*/ +/* kb-row-right: "Control+Page_Down";*/ +/* kb-row-up: "Up,Control+p";*/ +/* kb-row-down: "Down,Control+n";*/ +/* kb-row-tab: "";*/ +/* kb-element-next: "Tab";*/ +/* kb-element-prev: "ISO_Left_Tab";*/ +/* kb-page-prev: "Page_Up";*/ +/* kb-page-next: "Page_Down";*/ +/* kb-row-first: "Home,KP_Home";*/ +/* kb-row-last: "End,KP_End";*/ +/* kb-row-select: "Control+space";*/ +/* kb-screenshot: "Alt+S";*/ +/* kb-ellipsize: "Alt+period";*/ +/* kb-toggle-case-sensitivity: "grave,dead_grave";*/ +/* kb-toggle-sort: "Alt+grave";*/ +/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/ +/* kb-custom-1: "Alt+1";*/ +/* kb-custom-2: "Alt+2";*/ +/* kb-custom-3: "Alt+3";*/ +/* kb-custom-4: "Alt+4";*/ +/* kb-custom-5: "Alt+5";*/ +/* kb-custom-6: "Alt+6";*/ +/* kb-custom-7: "Alt+7";*/ +/* kb-custom-8: "Alt+8";*/ +/* kb-custom-9: "Alt+9";*/ +/* kb-custom-10: "Alt+0";*/ +/* kb-custom-11: "Alt+exclam";*/ +/* kb-custom-12: "Alt+at";*/ +/* kb-custom-13: "Alt+numbersign";*/ +/* kb-custom-14: "Alt+dollar";*/ +/* kb-custom-15: "Alt+percent";*/ +/* kb-custom-16: "Alt+dead_circumflex";*/ +/* kb-custom-17: "Alt+ampersand";*/ +/* kb-custom-18: "Alt+asterisk";*/ +/* kb-custom-19: "Alt+parenleft";*/ +/* kb-select-1: "Super+1";*/ +/* kb-select-2: "Super+2";*/ +/* kb-select-3: "Super+3";*/ +/* kb-select-4: "Super+4";*/ +/* kb-select-5: "Super+5";*/ +/* kb-select-6: "Super+6";*/ +/* kb-select-7: "Super+7";*/ +/* kb-select-8: "Super+8";*/ +/* kb-select-9: "Super+9";*/ +/* kb-select-10: "Super+0";*/ +/* kb-entry-history-up: "Control+Up";*/ +/* kb-entry-history-down: "Control+Down";*/ +/* ml-row-left: "ScrollLeft";*/ +/* ml-row-right: "ScrollRight";*/ +/* ml-row-up: "ScrollUp";*/ +/* ml-row-down: "ScrollDown";*/ +/* me-select-entry: "MousePrimary";*/ +/* me-accept-entry: "MouseDPrimary";*/ +/* me-accept-custom: "Control+MouseDPrimary";*/ + timeout { + action: "kb-cancel"; + delay: 0; + } + filebrowser { + directories-first: true; + sorting-method: "name"; + } +} + +@import "theme.rasi" diff --git a/config/rofi/theme.rasi b/config/rofi/theme.rasi new file mode 100644 index 0000000..4e0263b --- /dev/null +++ b/config/rofi/theme.rasi @@ -0,0 +1,151 @@ +/* Catppuccin macciato */ + +* { + rosewater: #f4dbd6; + flamingo: #f0c6c6; + pink: #f5bde6; + mauve: #c6a0f6; + red: #ed8796; + maroon: #ee99a0; + peach: #f5a97f; + yellow: #eed49f; + green: #a6da95; + teal: #8bd5ca; + sky: #91d7e3; + sapphire: #7dc4e4; + blue: #8aadf4; + lavender: #b7bdf8; + text: #cad3f5; + subtext1: #b8c0e0; + subtext0: #a5adcb; + overlay2: #939ab7; + overlay1: #8087a2; + overlay0: #6e738d; + surface2: #5b6078; + surface1: #494d64; + surface0: #363a4f; + base: #24273a; + mantle: #1e2030; + crust: #181926; + + bg-col: @base; + bg-col-light: @base; + border-col: @teal; + selected-col: @teal; + blue: #8aadf4; + fg-col: @text; + fg-col2: #ed8796; + grey: #6e738d; + + + border-rad: 3px; + + width: 600; + font: "JetBrainsMono Nerd Font 14"; +} + +window { + height: 360px; + border: 3px; + border-color: @border-col; + background-color: @bg-col; +} + +mainbox { + background-color: @bg-col; +} + +inputbar { + children: [prompt,entry]; + spacing: 10px; + background-color: @bg-col; + margin: 20px 20px 0px 20px; + border-radius: @border-rad; +} + +prompt { + background-color: @mauve; + padding: 6px; + text-color: @bg-col; + border-radius: @border-rad; +} + +entry { + padding: 6px; + text-color: @fg-col; + background-color: @surface0; + border-radius: @border-rad; +} + +listview { + border: 0; + margin: 10px 0px 0px 20px; + columns: 1; + lines: 5; + background-color: @bg-col; + spacing: 10px; + scrollbar: true; +} + +scrollbar { + background-color: @surface0; + handle-color: @mauve; + handle-width: 10px; + margin: 0 0 11px; + border-radius: @border-rad; +} + +element { + padding: 5px; + border-radius: @border-rad; +} + +element-icon, element-index,element-text { + background-color: inherit; + text-color: inherit; +} + +element-icon { + size: 25px; +} + +element normal.normal, element alternate.normal { + background-color: @surface1; + text-color: @text; +} + +element selected.normal { + background-color: @teal; + text-color: @bg-col; +} + +mode-switcher { + spacing: 0; + } + +button { + padding: 10px; + background-color: @surface0; + text-color: @grey; + vertical-align: 0.5; + horizontal-align: 0.5; +} + +button selected { + background-color: @bg-col; + text-color: @blue; +} + +message { + background-color: @surface0; + margin: 2px; + padding: 2px; + border-radius: 5px; +} + +textbox { + padding: 6px; + margin: 20px 0px 0px 20px; + text-color: @blue; + background-color: #fff; +} From f3d1ad65dd786bbfff1dd01fab4072df7649c2f9 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 30 Jan 2025 21:47:31 -0300 Subject: [PATCH 052/152] update hyprland setup --- config/hypr/hyprland.conf | 8 +++++++- config/zsh/zshrc | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index dcbbe12..26d4308 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -10,8 +10,12 @@ # │ Autostart apps │ # ╰──────────────────────────────────────────────────────────╯ -# Execute your favorite apps at launch +# ── System apps ───────────────────────────────────────────────────────── exec-once = pipewire +exec-once = udieskie +exec-once =/ usr/libexec/polkit-gnome-authentication-agent-1 + +# ── Utils ─────────────────────────────────────────────────────────────── exec-once = waybar exec-once = hyprpaper exec-once = mako @@ -106,6 +110,8 @@ master { # │ Windows rules │ # ╰──────────────────────────────────────────────────────────╯ +windowrulev2 = float, class:org.gnome.Nautilus + # ╭───────────────────────────────────────────────────────────╮ # │ Workspaces rules │ # ╰───────────────────────────────────────────────────────────╯ diff --git a/config/zsh/zshrc b/config/zsh/zshrc index 33e96a1..97253dc 100644 --- a/config/zsh/zshrc +++ b/config/zsh/zshrc @@ -6,6 +6,8 @@ # ╭──────────────────────────────────────────────────────────╮ # │ Preoload stuff │ # ╰──────────────────────────────────────────────────────────╯ + +export $HOME/.zprofile # Set the directory we want to store zinit and plugins ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit" @@ -197,6 +199,6 @@ eval "$(zoxide init --cmd cd zsh)" eval "$(starship init zsh)" {{ /if ~}} -{{ #if dotter.packages.mise }} +{{ #if (is_executable "mise") }} eval "$(mise activate zsh)" {{ /if ~}} From 3a6168c843244c64a32068d447dcaa18ae7870e1 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 31 Jan 2025 14:48:44 -0300 Subject: [PATCH 053/152] add wallpaper daemon to hyprland --- .dotter/global.toml | 1 + config/hypr/hyprland.conf | 1 + config/waybar/config.jsonc | 5 ++++- config/wpaperd/config.toml | 7 +++++++ config/zsh/zshrc | 2 +- 5 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 config/wpaperd/config.toml diff --git a/.dotter/global.toml b/.dotter/global.toml index 2439142..8f8a370 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -77,6 +77,7 @@ cargo.packages = [] "config/swappy" = "~/.config/swappy" "config/waybar" = "~/.config/waybar/" "config/rofi" = "~/.config/rofi" +"config/wpaperd" = "~/.config/wpaperd" [hyprland] depends = ["wm"] diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 26d4308..3ffbb3c 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -11,6 +11,7 @@ # ╰──────────────────────────────────────────────────────────╯ # ── System apps ───────────────────────────────────────────────────────── +exec-once = wpaperd exec-once = pipewire exec-once = udieskie exec-once =/ usr/libexec/polkit-gnome-authentication-agent-1 diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 14ea8c9..f08595e 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -12,6 +12,7 @@ "modules-left": ["hyprland/workspaces"], "modules-center": ["clock"], "modules-right": [ + "tray", "idle_inhibitor", "network", "bluetooth", @@ -122,9 +123,11 @@ "format": " Disabled", "on-click": "blueman-manager &" }, - "custom/power": { "format": "", "on-click": "~/.config/rofi/powermenu/type-4/powermenu.sh" + }, + "tray": { + "show-passive-items": true } } diff --git a/config/wpaperd/config.toml b/config/wpaperd/config.toml new file mode 100644 index 0000000..18fdef4 --- /dev/null +++ b/config/wpaperd/config.toml @@ -0,0 +1,7 @@ +[default] +duration = "1m" +mode = "center" +sorting = "ascending" + +[any] +path = "~/Pictures/Wallpapers/" diff --git a/config/zsh/zshrc b/config/zsh/zshrc index 97253dc..e4aadc3 100644 --- a/config/zsh/zshrc +++ b/config/zsh/zshrc @@ -7,7 +7,7 @@ # │ Preoload stuff │ # ╰──────────────────────────────────────────────────────────╯ -export $HOME/.zprofile +source $HOME/.zprofile # Set the directory we want to store zinit and plugins ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit" From 4d6b8d1fda5f4ad2605fc54d38765b1842a3055d Mon Sep 17 00:00:00 2001 From: aleidk Date: Sun, 2 Feb 2025 23:46:25 -0300 Subject: [PATCH 054/152] update hyprland configs --- .dotter/global.toml | 1 + config/hypr/hyprland.conf | 9 +++-- config/waybar/config.jsonc | 2 +- config/wlogout/icons/hibernate.svg | 7 ++++ config/wlogout/icons/lock.svg | 7 ++++ config/wlogout/icons/logout.svg | 7 ++++ config/wlogout/icons/reboot.svg | 7 ++++ config/wlogout/icons/shutdown.svg | 7 ++++ config/wlogout/icons/suspend.svg | 7 ++++ config/wlogout/layout | 36 ++++++++++++++++++++ config/wlogout/style.css | 53 ++++++++++++++++++++++++++++++ config/wpaperd/config.toml | 2 +- 12 files changed, 140 insertions(+), 5 deletions(-) create mode 100644 config/wlogout/icons/hibernate.svg create mode 100644 config/wlogout/icons/lock.svg create mode 100644 config/wlogout/icons/logout.svg create mode 100644 config/wlogout/icons/reboot.svg create mode 100644 config/wlogout/icons/shutdown.svg create mode 100644 config/wlogout/icons/suspend.svg create mode 100644 config/wlogout/layout create mode 100644 config/wlogout/style.css diff --git a/.dotter/global.toml b/.dotter/global.toml index 8f8a370..f13e66e 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -78,6 +78,7 @@ cargo.packages = [] "config/waybar" = "~/.config/waybar/" "config/rofi" = "~/.config/rofi" "config/wpaperd" = "~/.config/wpaperd" +"config/wlogout" = "~/.config/wlogout" [hyprland] depends = ["wm"] diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 3ffbb3c..8d66b6b 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -11,12 +11,13 @@ # ╰──────────────────────────────────────────────────────────╯ # ── System apps ───────────────────────────────────────────────────────── -exec-once = wpaperd exec-once = pipewire exec-once = udieskie -exec-once =/ usr/libexec/polkit-gnome-authentication-agent-1 +exec-once = /usr/libexec/polkit-gnome-authentication-agent-1 +exec-once = hyprctl setcursor catppuccin-macchiato-lavender-cursors 24 # ── Utils ─────────────────────────────────────────────────────────────── +exec-once = ~/.cargo/bin/wpaperd -d exec-once = waybar exec-once = hyprpaper exec-once = mako @@ -34,6 +35,7 @@ monitor = WAYLAND-1, disable # hack for when running manually # Some default env vars. env = XCURSOR_SIZE,24 +env = QT_STYLE_OVERRIDE,kvantum # ── Input devides ───────────────────────────────────────────────────── input { @@ -93,7 +95,7 @@ gestures { } misc { - enable_swallow = true + enable_swallow = false # swallow_regex = "" # swallow_exception_regex = "" @@ -112,6 +114,7 @@ master { # ╰──────────────────────────────────────────────────────────╯ windowrulev2 = float, class:org.gnome.Nautilus +windowrulev2 = float, class:xdg-desktop-portal-gtk # ╭───────────────────────────────────────────────────────────╮ # │ Workspaces rules │ diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index f08595e..c2b5320 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -125,7 +125,7 @@ }, "custom/power": { "format": "", - "on-click": "~/.config/rofi/powermenu/type-4/powermenu.sh" + "on-click": "wlogout" }, "tray": { "show-passive-items": true diff --git a/config/wlogout/icons/hibernate.svg b/config/wlogout/icons/hibernate.svg new file mode 100644 index 0000000..efd5a33 --- /dev/null +++ b/config/wlogout/icons/hibernate.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/config/wlogout/icons/lock.svg b/config/wlogout/icons/lock.svg new file mode 100644 index 0000000..94d0705 --- /dev/null +++ b/config/wlogout/icons/lock.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/config/wlogout/icons/logout.svg b/config/wlogout/icons/logout.svg new file mode 100644 index 0000000..2eb4984 --- /dev/null +++ b/config/wlogout/icons/logout.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/config/wlogout/icons/reboot.svg b/config/wlogout/icons/reboot.svg new file mode 100644 index 0000000..de9fdc2 --- /dev/null +++ b/config/wlogout/icons/reboot.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/config/wlogout/icons/shutdown.svg b/config/wlogout/icons/shutdown.svg new file mode 100644 index 0000000..1579c48 --- /dev/null +++ b/config/wlogout/icons/shutdown.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/config/wlogout/icons/suspend.svg b/config/wlogout/icons/suspend.svg new file mode 100644 index 0000000..ae26ba2 --- /dev/null +++ b/config/wlogout/icons/suspend.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/config/wlogout/layout b/config/wlogout/layout new file mode 100644 index 0000000..26b8bf4 --- /dev/null +++ b/config/wlogout/layout @@ -0,0 +1,36 @@ +{ + "label" : "lock", + "action" : "loginctl lock-session", + "text" : "Lock", + "keybind" : "l" +} +{ + "label" : "hibernate", + "action" : "loginctl hibernate", + "text" : "Hibernate", + "keybind" : "h" +} +{ + "label" : "logout", + "action" : "loginctl terminate-user $USER", + "text" : "Logout", + "keybind" : "e" +} +{ + "label" : "shutdown", + "action" : "loginctl poweroff", + "text" : "Shutdown", + "keybind" : "s" +} +{ + "label" : "suspend", + "action" : "loginctl suspend", + "text" : "Suspend", + "keybind" : "u" +} +{ + "label" : "reboot", + "action" : "loginctl reboot", + "text" : "Reboot", + "keybind" : "r" +} diff --git a/config/wlogout/style.css b/config/wlogout/style.css new file mode 100644 index 0000000..c0cb003 --- /dev/null +++ b/config/wlogout/style.css @@ -0,0 +1,53 @@ +* { + background-image: none; + box-shadow: none; +} + +window { + background-color: rgba(36, 39, 58, 0.9); +} + +button { + border-radius: 0; + border-color: #8bd5ca; + text-decoration-color: #cad3f5; + color: #cad3f5; + background-color: #1e2030; + border-style: solid; + border-width: 1px; + background-repeat: no-repeat; + background-position: center; + background-size: 25%; +} + +button:focus, +button:active, +button:hover { + /* 20% Overlay 2, 80% mantle */ + background-color: rgb(53, 57, 75); + outline-style: none; +} + +#lock { + background-image: url("/home/aleidk/.config/wlogout/icons/lock.svg"); +} + +#logout { + background-image: url("/home/aleidk/.config/wlogout/icons/logout.svg"); +} + +#suspend { + background-image: url("/home/aleidk/.config/wlogout/icons/suspend.svg"); +} + +#hibernate { + background-image: url("/home/aleidk/.config/wlogout/icons/hibernate.svg"); +} + +#shutdown { + background-image: url("/home/aleidk/.config/wlogout/icons/shutdown.svg"); +} + +#reboot { + background-image: url("/home/aleidk/.config/wlogout/icons/reboot.svg"); +} diff --git a/config/wpaperd/config.toml b/config/wpaperd/config.toml index 18fdef4..92febf9 100644 --- a/config/wpaperd/config.toml +++ b/config/wpaperd/config.toml @@ -1,5 +1,5 @@ [default] -duration = "1m" +duration = "10m" mode = "center" sorting = "ascending" From d03df4ba26b13a367df4c7b2b911649da41ddee0 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 3 Feb 2025 12:16:19 -0300 Subject: [PATCH 055/152] update kitty config --- config/kitty/kitty.conf | 77 +++++++++++++++---- config/nvim/lazy-lock.json | 2 +- .../lua/aleidk/plugins-core/smart-splits.lua | 2 + 3 files changed, 64 insertions(+), 17 deletions(-) diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf index a40a1bf..465bebf 100644 --- a/config/kitty/kitty.conf +++ b/config/kitty/kitty.conf @@ -737,7 +737,7 @@ font_size 12.0 #: Request window attention on bell. Makes the dock icon bounce on #: macOS or the taskbar flash on linux. -# bell_on_tab "🔔 " +bell_on_tab " " #: Some text or a Unicode symbol to show on the tab if a window in the #: tab that does not have focus has a bell. If you want to use leading @@ -784,7 +784,7 @@ font_size 12.0 #: suffix of "c" on the width/height values to have them interpreted #: as number of cells instead of pixels. -# enabled_layouts * +enabled_layouts fat:bias=70,tall:bias=55,stack #: The enabled window layouts. A comma separated list of layout names. #: The special value all means all layouts. The first listed layout @@ -954,7 +954,7 @@ confirm_os_window_close 0 #: Tab bar {{{ -# tab_bar_edge bottom +tab_bar_edge top #: The edge to show the tab bar on, top or bottom. @@ -969,7 +969,7 @@ confirm_os_window_close 0 #: The second number is the margin between the tab bar and the #: contents of the current tab. -# tab_bar_style fade +tab_bar_style separator #: The tab bar style, can be one of: @@ -995,12 +995,12 @@ confirm_os_window_close 0 #: a mapping for the select_tab action which presents you with a list of #: tabs and allows for easy switching to a tab. -# tab_bar_align left +tab_bar_align center #: The horizontal alignment of the tab bar, can be one of: left, #: center, right. -# tab_bar_min_tabs 2 +tab_bar_min_tabs 1 #: The minimum number of tabs that must exist before the tab bar is #: shown. @@ -1022,7 +1022,7 @@ confirm_os_window_close 0 #: can change the number of cells used by adding/removing entries to #: this list. -# tab_separator " ┇" +tab_separator " │ " #: The separator between tabs in the tab bar when using separator as #: the tab_bar_style. @@ -1033,7 +1033,7 @@ confirm_os_window_close 0 #: using powerline as the tab_bar_style, can be one of: angled, #: slanted, round. -# tab_activity_symbol none +tab_activity_symbol " " #: Some text or a Unicode symbol to show on the tab if a window in the #: tab that does not have focus has some activity. If you want to use @@ -1045,7 +1045,7 @@ confirm_os_window_close 0 #: The maximum number of cells that can be used to render the text in #: a tab. A value of zero means that no limit is applied. -# tab_title_template "{fmt.fg.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{title}" +tab_title_template "{fmt.fg.orange}{bell_symbol}{activity_symbol}{fmt.fg.tab}{'' if layout_name == 'stack' else '' if layout_name == 'fat' else '' if layout_name == 'tall' else ' '} {index}:{title}" #: A template to render the tab title. The default just renders the #: title with optional symbols for bell and activity. If you wish to @@ -1355,7 +1355,7 @@ confirm_os_window_close 0 #: See rc_custom_auth for details. -allow_remote_control socket-only +allow_remote_control yes #: Allow other programs to control kitty. If you turn this on, other #: programs can control all aspects of kitty, including sending text @@ -1384,7 +1384,7 @@ allow_remote_control socket-only #: yes #: Remote control requests are always accepted. -listen_on unix:/tmp/kitty +listen_on unix:@mykitty #: Listen to the specified socket for remote control connections. Note #: that this will apply to all kitty instances. It can be overridden @@ -1778,6 +1778,8 @@ wayland_titlebar_color background #: E.g. action_alias launch_tab launch --type=tab --cwd=current +action_alias zoom combine : toggle_layout stack : scroll_prompt_to_bottom + #: Define action aliases to avoid repeating the same options in #: multiple mappings. Aliases can be defined for any action and will #: be expanded recursively. For example, the above alias allows you to @@ -1939,9 +1941,37 @@ wayland_titlebar_color background #: Window management {{{ #: New window +# +# + +map ctrl+j neighboring_window down +map ctrl+k neighboring_window up +map ctrl+h neighboring_window left +map ctrl+l neighboring_window right + +# Unset the mapping to pass the keys to neovim +map --when-focus-on var:IS_NVIM ctrl+j +map --when-focus-on var:IS_NVIM ctrl+k +map --when-focus-on var:IS_NVIM ctrl+h +map --when-focus-on var:IS_NVIM ctrl+l + +# the 3 here is the resize amount, adjust as needed +map alt+j kitten relative_resize.py down 3 +map alt+k kitten relative_resize.py up 3 +map alt+h kitten relative_resize.py left 3 +map alt+l kitten relative_resize.py right 3 + +map --when-focus-on var:IS_NVIM alt+j +map --when-focus-on var:IS_NVIM alt+k +map --when-focus-on var:IS_NVIM alt+h +map --when-focus-on var:IS_NVIM alt+l + # map kitty_mod+enter new_window # map cmd+enter new_window +map ctrl+space>enter new_window +map ctrl+space>s launch --location=vsplit --cwd=current +map ctrl+space>v launch --location=split --cwd=current #:: You can open a new kitty window running an arbitrary program, for #:: example:: @@ -1969,6 +1999,8 @@ wayland_titlebar_color background #:: For more details, see launch #:: . +map ctrl+space>g launch --cwd=current --type=overlay lazygit + #: New OS window # map kitty_mod+n new_os_window @@ -2060,6 +2092,7 @@ wayland_titlebar_color background #: Visually select and focus window # map kitty_mod+f7 focus_visible_window +map ctrl+space>tab focus_visible_window #:: Display overlay numbers and alphabets on the window, and switch #:: the focus to the window when you press the key. When there are @@ -2070,6 +2103,7 @@ wayland_titlebar_color background #: Visually swap window with another # map kitty_mod+f8 swap_with_window +map ctrl+space>ctrl+tab swap_with_window #:: Works like focus_visible_window above, but swaps the window. @@ -2093,6 +2127,7 @@ wayland_titlebar_color background # map kitty_mod+t new_tab # map cmd+t new_tab +map ctrl+space>t new_tab #: Close tab @@ -2115,14 +2150,23 @@ wayland_titlebar_color background # map kitty_mod+alt+t set_tab_title # map shift+cmd+i set_tab_title +map ctrl+space>shift+r set_tab_title #: You can also create shortcuts to go to specific tabs, with 1 being #: the first tab, 2 the second tab and -1 being the previously active #: tab, and any number larger than the last tab being the last tab:: -#: map ctrl+alt+1 goto_tab 1 -#: map ctrl+alt+2 goto_tab 2 +map ctrl+space>1 goto_tab 1 +map ctrl+space>2 goto_tab 2 +map ctrl+space>3 goto_tab 3 +map ctrl+space>4 goto_tab 4 +map ctrl+space>5 goto_tab 5 +map ctrl+space>6 goto_tab 6 +map ctrl+space>7 goto_tab 7 +map ctrl+space>8 goto_tab 8 +map ctrl+space>9 goto_tab 9 +map ctrl+space>0 goto_tab 10 #: Just as with new_window above, you can also pass the name of #: arbitrary commands to run when using new_tab and new_tab_with_cwd. @@ -2137,6 +2181,7 @@ wayland_titlebar_color background #: Next layout # map kitty_mod+l next_layout +map ctrl+space>ctrl+l next_layout #: You can also create shortcuts to switch to specific layouts:: @@ -2154,6 +2199,8 @@ wayland_titlebar_color background #: stack layout:: #: map ctrl+alt+z toggle_layout stack +map ctrl+space>m zoom + #: }}} #: Font sizes {{{ @@ -2375,6 +2422,7 @@ wayland_titlebar_color background # map kitty_mod+f5 load_config_file # map ctrl+cmd+, load_config_file +map ctrl+space>ctrl+r load_config_file #:: Reload kitty.conf, applying any changes since the last time it #:: was loaded. Note that a handful of options cannot be dynamically @@ -2453,6 +2501,3 @@ wayland_titlebar_color background #: }}} #: }}} - - - diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index 8a2cc47..e2d6ca1 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -42,7 +42,7 @@ "remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" }, "remote-sshfs.nvim": { "branch": "main", "commit": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d" }, "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, - "smart-splits.nvim": { "branch": "master", "commit": "d8b0e772a0244169534b1fd57c1660c9bf323d26" }, + "smart-splits.nvim": { "branch": "master", "commit": "fc7bb00fe67ab504356bed4310d23c2e4cb4b06b" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, diff --git a/config/nvim/lua/aleidk/plugins-core/smart-splits.lua b/config/nvim/lua/aleidk/plugins-core/smart-splits.lua index c58890c..a11d29e 100644 --- a/config/nvim/lua/aleidk/plugins-core/smart-splits.lua +++ b/config/nvim/lua/aleidk/plugins-core/smart-splits.lua @@ -3,6 +3,8 @@ -- Tmux aware return { "mrjones2014/smart-splits.nvim", + lazy = false, + build = './kitty/install-kittens.bash', opts = { ignored_filetypes = { "nofile", "quickfix", "qf", "prompt" }, ignored_buftypes = { "nofile" } }, keys = { { From 8bb8895578e6f7edae759f0a11911ca737c00cb1 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 3 Feb 2025 14:01:18 -0300 Subject: [PATCH 056/152] remove slowness of zsh --- config/zsh/zprofile | 4 ---- 1 file changed, 4 deletions(-) diff --git a/config/zsh/zprofile b/config/zsh/zprofile index e57de87..701ed71 100644 --- a/config/zsh/zprofile +++ b/config/zsh/zprofile @@ -54,10 +54,6 @@ source "$HOME/.rye/env" update_path "$HOME/.cargo/bin/" {{ /if }} -{{ #if (is_executable "tofu") }} -complete -o nospace -C /usr/bin/tofu tofu -{{ /if }} - {{~ #if (eq (env_var "OS") "macos") }} eval "$(/opt/homebrew/bin/brew shellenv)" {{ /if ~}} From bc52dafdd7acdc960e010ad03e82b0bc74f79c3e Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 4 Feb 2025 11:18:28 -0300 Subject: [PATCH 057/152] update kitty config --- config/kitty/kitty.conf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf index 465bebf..8176d83 100644 --- a/config/kitty/kitty.conf +++ b/config/kitty/kitty.conf @@ -2107,6 +2107,8 @@ map ctrl+space>ctrl+tab swap_with_window #:: Works like focus_visible_window above, but swaps the window. +map ctrl+space>ctrl+shift+tab detach_window ask + #: }}} #: Tab management {{{ @@ -2127,7 +2129,8 @@ map ctrl+space>ctrl+tab swap_with_window # map kitty_mod+t new_tab # map cmd+t new_tab -map ctrl+space>t new_tab +map ctrl+space>t new_tab_with_cwd +map ctrl+space>n new_tab_with_cwd #: Close tab From d84e0d646ef5c83cf45b39d61dae020260246375 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 6 Feb 2025 18:54:55 -0300 Subject: [PATCH 058/152] minor updates --- .dotter/pre_deploy.sh | 11 +- config/lazygit/config.yml | 1025 ++++++++--------- config/nvim/lazy-lock.json | 2 +- .../nvim/lua/aleidk/plugins-ide/formatter.lua | 3 +- config/zsh/aliases/aliases.zsh | 3 - config/zsh/zshrc | 1 - 6 files changed, 468 insertions(+), 577 deletions(-) diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh index 92715f8..a82f89f 100755 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -78,6 +78,8 @@ cargo install --locked {{# each (flatten_table cargo.packages) }} "{{ this }}" { {{ #if dotter.packages.cli }} +{{ #if not( command_success "fc-list | grep JetBrains")}} + {{ header "Configuring Nerd Fonts" }} FONT_DIR="$HOME/.local/share/fonts" @@ -86,14 +88,7 @@ tmp_dir=$(mktemp -d) curl -L https://github.com/ryanoasis/nerd-fonts/releases/latest/download/{{ nerd_font }}.zip -o "$tmp_dir/{{ nerd_font}}.zip" unzip -o "$tmp_dir/{{nerd_font}}.zip" -d ${FONT_DIR}/{{ nerd_font }} - -curl -L https://github.com/joshmedeski/sesh/releases/latest/download/sesh_Linux_x86_64.tar.gz -o "$tmp_dir/sesh.tar.gz" - -mkdir -p "$HOME/.local/bin" - -tar xvf "$tmp_dir/sesh.tar.gz" --directory="$HOME/.local/bin" sesh - -rm -rf "$tmp_dir" +{{ /if }} {{ /if }} diff --git a/config/lazygit/config.yml b/config/lazygit/config.yml index c731239..55e13ca 100644 --- a/config/lazygit/config.yml +++ b/config/lazygit/config.yml @@ -1,596 +1,495 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/jesseduffield/lazygit/master/schema/config.json - # Config relating to the Lazygit UI gui: - # The number of lines you scroll by when scrolling the main window - scrollHeight: 2 - - # If true, allow scrolling past the bottom of the content in the main window - scrollPastBottom: true - - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin - scrollOffMargin: 2 - - # One of: 'margin' (default) | 'jump' - scrollOffBehavior: margin - - # If true, capture mouse events. - # When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS. - mouseEvents: true - - # If true, do not show a warning when discarding changes in the staging view. - skipDiscardChangeWarning: false - - # If true, do not show warning when applying/popping the stash - skipStashWarning: false - - # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. - skipNoStagedFilesWarning: false - - # If true, do not show a warning when rewording a commit via an external editor - skipRewordInEditorWarning: false - - # Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section. - # Number from 0 to 1.0. - sidePanelWidth: 0.3333 - - # If true, increase the height of the focused side window; creating an accordion effect. - expandFocusedSidePanel: false - - # The weight of the expanded side panel, relative to the other panels. 2 means - # twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true. - expandedSidePanelWeight: 2 - - # Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split. - # Options are: - # - 'horizontal': split the window horizontally - # - 'vertical': split the window vertically - # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically - mainPanelSplitMode: flexible - - # How the window is split when in half screen mode (i.e. after hitting '+' once). - # Possible values: - # - 'left': split the window horizontally (side panel on the left, main view on the right) - # - 'top': split the window vertically (side panel on top, main view below) - enlargedSideViewLocation: left - - # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' - language: auto - - # Format used when displaying time e.g. commit time. - # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format - timeFormat: 02 Jan 06 - - # Format used when displaying time if the time is less than 24 hours ago. - # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format - shortTimeFormat: 3:04PM - - # Config relating to colors and styles. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes - theme: - activeBorderColor: - - '#8bd5ca' - - bold - inactiveBorderColor: - - '#a5adcb' - optionsTextColor: - - '#8aadf4' - selectedLineBgColor: - - '#363a4f' - cherryPickedCommitBgColor: - - '#494d64' - cherryPickedCommitFgColor: - - '#8bd5ca' - unstagedChangesColor: - - '#ed8796' - defaultFgColor: - - '#cad3f5' - searchingActiveBorderColor: - - '#eed49f' - - # Background color of selected line when view doesn't have focus. - inactiveViewSelectedLineBgColor: - - bold - - # Foreground color of marked base commit (for rebase) - markedBaseCommitFgColor: - - blue - - # Background color of marked base commit (for rebase) - markedBaseCommitBgColor: - - yellow - - authorColors: - '*': '#b7bdf8' - - # Config relating to the commit length indicator - commitLength: - # If true, show an indicator of commit message length - show: true - - # If true, show the '5 of 20' footer at the bottom of list views - showListFooter: true - - # If true, display the files in the file views as a tree. If false, display the files as a flat list. - # This can be toggled from within Lazygit with the '~' key, but that will not change the default. - showFileTree: true - - # If true, show a random tip in the command log when Lazygit starts - showRandomTip: true - - # If true, show the command log - showCommandLog: true - - # If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action. - showBottomLine: true - - # If true, show jump-to-window keybindings in window titles. - showPanelJumps: true - - # Deprecated: use nerdFontsVersion instead - showIcons: false - - # Nerd fonts version to use. - # One of: '2' | '3' | empty string (default) - # If empty, do not show icons. - nerdFontsVersion: "3" - - # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. - showFileIcons: true - - # Length of author name in (non-expanded) commits view. 2 means show initials only. - commitAuthorShortLength: 2 - - # Length of author name in expanded commits view. 2 means show initials only. - commitAuthorLongLength: 17 - - # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. - commitHashLength: 8 - - # If true, show commit hashes alongside branch names in the branches view. - showBranchCommitHash: false - - # Whether to show the divergence from the base branch in the branches view. - # One of: 'none' | 'onlyArrow' | 'arrowAndNumber' - showDivergenceFromBaseBranch: none - - # Height of the command log view - commandLogSize: 8 - - # Whether to split the main window when viewing file changes. - # One of: 'auto' | 'always' - # If 'auto', only split the main window when a file has both staged and unstaged changes - splitDiff: auto - - # Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default). - # One of: 'normal' (default) | 'half' | 'full' - windowSize: normal - - # Window border style. - # One of 'rounded' (default) | 'single' | 'double' | 'hidden' - border: rounded - - # If true, show a seriously epic explosion animation when nuking the working tree. - animateExplosion: true - - # Whether to stack UI components on top of each other. - # One of 'auto' (default) | 'always' | 'never' - portraitMode: auto - - # How things are filtered when typing '/'. - # One of 'substring' (default) | 'fuzzy' - filterMode: fuzzy - - # Config relating to the spinner. - spinner: - # The frames of the spinner animation. - frames: - - '|' - - / - - '-' - - \ - - # The "speed" of the spinner in milliseconds. - rate: 50 - - # Status panel view. - # One of 'dashboard' (default) | 'allBranchesLog' - statusPanelView: dashboard - - # If true, jump to the Files panel after popping a stash - switchToFilesAfterStashPop: true - - # If true, jump to the Files panel after applying a stash - switchToFilesAfterStashApply: true - + # The number of lines you scroll by when scrolling the main window + scrollHeight: 2 + # If true, allow scrolling past the bottom of the content in the main window + scrollPastBottom: true + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin + scrollOffMargin: 2 + # One of: 'margin' (default) | 'jump' + scrollOffBehavior: margin + # If true, capture mouse events. + # When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS. + mouseEvents: true + # If true, do not show a warning when discarding changes in the staging view. + skipDiscardChangeWarning: false + # If true, do not show warning when applying/popping the stash + skipStashWarning: false + # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. + skipNoStagedFilesWarning: false + # If true, do not show a warning when rewording a commit via an external editor + skipRewordInEditorWarning: false + # Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section. + # Number from 0 to 1.0. + sidePanelWidth: 0.3333 + # If true, increase the height of the focused side window; creating an accordion effect. + expandFocusedSidePanel: false + # The weight of the expanded side panel, relative to the other panels. 2 means + # twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true. + expandedSidePanelWeight: 2 + # Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split. + # Options are: + # - 'horizontal': split the window horizontally + # - 'vertical': split the window vertically + # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically + mainPanelSplitMode: flexible + # How the window is split when in half screen mode (i.e. after hitting '+' once). + # Possible values: + # - 'left': split the window horizontally (side panel on the left, main view on the right) + # - 'top': split the window vertically (side panel on top, main view below) + enlargedSideViewLocation: left + # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' + language: auto + # Format used when displaying time e.g. commit time. + # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format + timeFormat: 02 Jan 06 + # Format used when displaying time if the time is less than 24 hours ago. + # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format + shortTimeFormat: 3:04PM + # Config relating to colors and styles. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes + theme: + activeBorderColor: + - '#8bd5ca' + - bold + inactiveBorderColor: + - '#a5adcb' + optionsTextColor: + - '#8aadf4' + selectedLineBgColor: + - '#363a4f' + cherryPickedCommitBgColor: + - '#494d64' + cherryPickedCommitFgColor: + - '#8bd5ca' + unstagedChangesColor: + - '#ed8796' + defaultFgColor: + - '#cad3f5' + searchingActiveBorderColor: + - '#eed49f' + # Background color of selected line when view doesn't have focus. + inactiveViewSelectedLineBgColor: + - bold + # Foreground color of marked base commit (for rebase) + markedBaseCommitFgColor: + - blue + # Background color of marked base commit (for rebase) + markedBaseCommitBgColor: + - yellow + authorColors: + '*': '#b7bdf8' + # Config relating to the commit length indicator + commitLength: + # If true, show an indicator of commit message length + show: true + # If true, show the '5 of 20' footer at the bottom of list views + showListFooter: true + # If true, display the files in the file views as a tree. If false, display the files as a flat list. + # This can be toggled from within Lazygit with the '~' key, but that will not change the default. + showFileTree: true + # If true, show a random tip in the command log when Lazygit starts + showRandomTip: true + # If true, show the command log + showCommandLog: true + # If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action. + showBottomLine: true + # If true, show jump-to-window keybindings in window titles. + showPanelJumps: true + # Deprecated: use nerdFontsVersion instead + showIcons: false + # Nerd fonts version to use. + # One of: '2' | '3' | empty string (default) + # If empty, do not show icons. + nerdFontsVersion: "3" + # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. + showFileIcons: true + # Length of author name in (non-expanded) commits view. 2 means show initials only. + commitAuthorShortLength: 2 + # Length of author name in expanded commits view. 2 means show initials only. + commitAuthorLongLength: 17 + # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. + commitHashLength: 8 + # If true, show commit hashes alongside branch names in the branches view. + showBranchCommitHash: false + # Whether to show the divergence from the base branch in the branches view. + # One of: 'none' | 'onlyArrow' | 'arrowAndNumber' + showDivergenceFromBaseBranch: none + # Height of the command log view + commandLogSize: 8 + # Whether to split the main window when viewing file changes. + # One of: 'auto' | 'always' + # If 'auto', only split the main window when a file has both staged and unstaged changes + splitDiff: auto + # Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default). + # One of: 'normal' (default) | 'half' | 'full' + screenMode: normal + # Window border style. + # One of 'rounded' (default) | 'single' | 'double' | 'hidden' + border: rounded + # If true, show a seriously epic explosion animation when nuking the working tree. + animateExplosion: true + # Whether to stack UI components on top of each other. + # One of 'auto' (default) | 'always' | 'never' + portraitMode: auto + # How things are filtered when typing '/'. + # One of 'substring' (default) | 'fuzzy' + filterMode: fuzzy + # Config relating to the spinner. + spinner: + # The frames of the spinner animation. + frames: + - '|' + - / + - '-' + - \ + # The "speed" of the spinner in milliseconds. + rate: 50 + # Status panel view. + # One of 'dashboard' (default) | 'allBranchesLog' + statusPanelView: dashboard + # If true, jump to the Files panel after popping a stash + switchToFilesAfterStashPop: true + # If true, jump to the Files panel after applying a stash + switchToFilesAfterStashApply: true # Config relating to git git: - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md - paging: - # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never' - colorArg: always - - # e.g. - # diff-so-fancy - # delta --dark --paging=never - # ydiff -p cat -s --wrap --width={{columnWidth}} - pager: "" - - # If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager). - useConfig: true - - # e.g. 'difft --color=always' - externalDiffCommand: "" - - # Config relating to committing - commit: - # If true, pass '--signoff' flag when committing - signOff: false - - # Automatic WYSIWYG wrapping of the commit message as you type - autoWrapCommitMessage: true - - # If autoWrapCommitMessage is true, the width to wrap to - autoWrapWidth: 72 - - # Config relating to merging - merging: - # If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang - # Only applicable to unix users. - manualCommit: false - - # Extra args passed to `git merge`, e.g. --no-ff - args: "" - - # The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders. - squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}} - - # list of branches that are considered 'main' branches, used when displaying commits - mainBranches: - - master - - main - - # Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP' - skipHookPrefix: WIP - - # If true, periodically fetch from remote - autoFetch: true - - # If true, periodically refresh files and submodules - autoRefresh: true - - # If true, pass the --all arg to git fetch - fetchAll: true - - # If true, lazygit will automatically stage files that used to have merge - # conflicts but no longer do; and it will also ask you if you want to - # continue a merge or rebase if you've resolved all conflicts. If false, it - # won't do either of these things. - autoStageResolvedConflicts: true - - # Command used when displaying the current branch git log in the main window - branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} -- - - # Command used to display git log of all branches in the main window. - # Deprecated: User `allBranchesLogCmds` instead. - allBranchesLogCmd: git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium - - # If true, do not spawn a separate process when using GPG - overrideGpg: false - - # If true, do not allow force pushes - disableForcePushing: false - - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix - # commitPrefix: + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md + paging: + # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never' + colorArg: always + # e.g. + # diff-so-fancy + # delta --dark --paging=never + # ydiff -p cat -s --wrap --width={{columnWidth}} + pager: "" + # If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager). + useConfig: true + # e.g. 'difft --color=always' + externalDiffCommand: "" + # Config relating to committing + commit: + # If true, pass '--signoff' flag when committing + signOff: false + # Automatic WYSIWYG wrapping of the commit message as you type + autoWrapCommitMessage: true + # If autoWrapCommitMessage is true, the width to wrap to + autoWrapWidth: 72 + # Config relating to merging + merging: + # If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang + # Only applicable to unix users. + manualCommit: false + # Extra args passed to `git merge`, e.g. --no-ff + args: "" + # The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders. + squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}} + # list of branches that are considered 'main' branches, used when displaying commits + mainBranches: + - master + - main + # Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP' + skipHookPrefix: WIP + # If true, periodically fetch from remote + autoFetch: true + # If true, periodically refresh files and submodules + autoRefresh: true + # If true, pass the --all arg to git fetch + fetchAll: true + # If true, lazygit will automatically stage files that used to have merge + # conflicts but no longer do; and it will also ask you if you want to + # continue a merge or rebase if you've resolved all conflicts. If false, it + # won't do either of these things. + autoStageResolvedConflicts: true + # Command used when displaying the current branch git log in the main window + branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} -- + # Command used to display git log of all branches in the main window. + # Deprecated: User `allBranchesLogCmds` instead. + allBranchesLogCmd: git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium + # If true, do not spawn a separate process when using GPG + overrideGpg: false + # If true, do not allow force pushes + disableForcePushing: false + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix + # commitPrefix: # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" # pattern: "" # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " # replace: "" - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix - branchPrefix: "" - - # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 - # (This should really be under 'gui', not 'git') - parseEmoji: true - - # Config for showing the log in the commits view - log: - # One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default' - # 'topo-order' makes it easier to read the git log graph, but commits may not - # appear chronologically. See https://git-scm.com/docs/ - # - # Deprecated: Configure this with `Log menu -> Commit sort order` ( in the commits window by default). - order: topo-order - - # This determines whether the git graph is rendered in the commits panel - # One of 'always' | 'never' | 'when-maximised' - # - # Deprecated: Configure this with `Log menu -> Show git graph` ( in the commits window by default). - showGraph: always - - # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) - showWholeGraph: false - - # When copying commit hashes to the clipboard, truncate them to this - # length. Set to 40 to disable truncation. - truncateCopiedCommitHashesTo: 12 - + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix + branchPrefix: "" + # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 + # (This should really be under 'gui', not 'git') + parseEmoji: true + # Config for showing the log in the commits view + log: + # One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default' + # 'topo-order' makes it easier to read the git log graph, but commits may not + # appear chronologically. See https://git-scm.com/docs/ + # + # Deprecated: Configure this with `Log menu -> Commit sort order` ( in the commits window by default). + order: topo-order + # This determines whether the git graph is rendered in the commits panel + # One of 'always' | 'never' | 'when-maximised' + # + # Deprecated: Configure this with `Log menu -> Show git graph` ( in the commits window by default). + showGraph: always + # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) + showWholeGraph: false + # When copying commit hashes to the clipboard, truncate them to this + # length. Set to 40 to disable truncation. + truncateCopiedCommitHashesTo: 12 # Periodic update checks update: - # One of: 'prompt' (default) | 'background' | 'never' - method: prompt - - # Period in days between update checks - days: 14 - + # One of: 'prompt' (default) | 'background' | 'never' + method: prompt + # Period in days between update checks + days: 14 # Background refreshes refresher: - # File/submodule refresh interval in seconds. - # Auto-refresh can be disabled via option 'git.autoRefresh'. - refreshInterval: 10 - - # Re-fetch interval in seconds. - # Auto-fetch can be disabled via option 'git.autoFetch'. - fetchInterval: 60 - + # File/submodule refresh interval in seconds. + # Auto-refresh can be disabled via option 'git.autoRefresh'. + refreshInterval: 10 + # Re-fetch interval in seconds. + # Auto-fetch can be disabled via option 'git.autoFetch'. + fetchInterval: 60 # If true, show a confirmation popup before quitting Lazygit confirmOnQuit: false - # If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close quitOnTopLevelReturn: true - # Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc os: - # Command for editing a file. Should contain "{{filename}}". - edit: "" - - # Command for editing a file at a given line number. Should contain - # "{{filename}}", and may optionally contain "{{line}}". - editAtLine: "" - - # Same as EditAtLine, except that the command needs to wait until the - # window is closed. - editAtLineAndWait: "" - - # For opening a directory in an editor - openDirInEditor: "" - - # A built-in preset that sets all of the above settings. Supported presets - # are defined in the getPreset function in editor_presets.go. - editPreset: "nvim-remote" - - # Command for opening a file, as if the file is double-clicked. Should - # contain "{{filename}}", but doesn't support "{{line}}". - open: "xdg-open {{filename}} >/dev/null" - - # Command for opening a link. Should contain "{{link}}". - openLink: "" - - # EditCommand is the command for editing a file. - # Deprecated: use Edit instead. Note that semantics are different: - # EditCommand is just the command itself, whereas Edit contains a - # "{{filename}}" variable. - editCommand: "" - - # EditCommandTemplate is the command template for editing a file - # Deprecated: use EditAtLine instead. - editCommandTemplate: "" - - # OpenCommand is the command for opening a file - # Deprecated: use Open instead. - openCommand: "" - - # OpenLinkCommand is the command for opening a link - # Deprecated: use OpenLink instead. - openLinkCommand: "" - - # CopyToClipboardCmd is the command for copying to clipboard. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard - copyToClipboardCmd: "" - - # ReadFromClipboardCmd is the command for reading the clipboard. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard - readFromClipboardCmd: "" - + # Command for editing a file. Should contain "{{filename}}". + edit: "" + # Command for editing a file at a given line number. Should contain + # "{{filename}}", and may optionally contain "{{line}}". + editAtLine: "" + # Same as EditAtLine, except that the command needs to wait until the + # window is closed. + editAtLineAndWait: "" + # For opening a directory in an editor + openDirInEditor: "" + # A built-in preset that sets all of the above settings. Supported presets + # are defined in the getPreset function in editor_presets.go. + editPreset: "nvim-remote" + # Command for opening a file, as if the file is double-clicked. Should + # contain "{{filename}}", but doesn't support "{{line}}". + open: "xdg-open {{filename}} >/dev/null" + # Command for opening a link. Should contain "{{link}}". + openLink: "" + # EditCommand is the command for editing a file. + # Deprecated: use Edit instead. Note that semantics are different: + # EditCommand is just the command itself, whereas Edit contains a + # "{{filename}}" variable. + editCommand: "" + # EditCommandTemplate is the command template for editing a file + # Deprecated: use EditAtLine instead. + editCommandTemplate: "" + # OpenCommand is the command for opening a file + # Deprecated: use Open instead. + openCommand: "" + # OpenLinkCommand is the command for opening a link + # Deprecated: use OpenLink instead. + openLinkCommand: "" + # CopyToClipboardCmd is the command for copying to clipboard. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard + copyToClipboardCmd: "" + # ReadFromClipboardCmd is the command for reading the clipboard. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard + readFromClipboardCmd: "" # If true, don't display introductory popups upon opening Lazygit. disableStartupPopups: false - # What to do when opening Lazygit outside of a git repo. # - 'prompt': (default) ask whether to initialize a new repo or open in the most recent repo # - 'create': initialize a new repo # - 'skip': open most recent repo # - 'quit': exit Lazygit notARepository: quit - # If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit. promptToReturnFromSubprocess: true - # Keybindings keybinding: - universal: - quit: q - quit-alt1: - return: - quitWithoutChangingDirectory: Q - togglePanel: - prevItem: - nextItem: - prevItem-alt: k - nextItem-alt: j - prevPage: ',' - nextPage: . - scrollLeft: H - scrollRight: L - gotoTop: < - gotoBottom: '>' - toggleRangeSelect: v - rangeSelectDown: - rangeSelectUp: - prevBlock: - nextBlock: - prevBlock-alt: h - nextBlock-alt: l - nextBlock-alt2: - prevBlock-alt2: - jumpToBlock: - - "1" - - "2" - - "3" - - "4" - - "5" - nextMatch: "n" - prevMatch: "N" - startSearch: / - optionMenu: - optionMenu-alt1: '?' - select: - goInto: - confirm: - confirmInEditor: - remove: d - new: "n" - edit: e - openFile: o - scrollUpMain: - scrollDownMain: - scrollUpMain-alt1: K - scrollDownMain-alt1: J - 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: _ - undo: z - redo: - 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: i - refreshFiles: r - stashAllChanges: s - viewStashOptions: S - toggleStagedAll: a - viewResetOptions: D - fetch: f - toggleTreeView: '`' - openMergeTool: M - openStatusFilter: - copyFileInfoToClipboard: "y" - branches: - createPullRequest: o - viewPullRequestOptions: O - copyPullRequestURL: - checkoutBranchByName: c - forceCheckoutBranch: F - rebaseBranch: r - renameBranch: R - mergeIntoCurrentBranch: M - viewGitFlowOptions: i - fastForward: f - createTag: T - pushTag: P - setUpstream: u - fetchRemote: f - sortOrder: s - worktrees: - viewWorktreeOptions: w - commits: - squashDown: s - renameCommit: r - renameCommitWithEditor: R - viewResetOptions: g - markCommitAsFixup: f - 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: i - amendAttribute: - resetAuthor: a - setAuthor: A - addCoAuthor: c - stash: - popStash: g - renameStash: r - commitFiles: - checkoutCommitFile: c - main: - toggleSelectHunk: a - pickBothHunks: b - editSelectHunk: E - submodules: - init: i - update: u - bulkMenu: b - commitMessage: - commitMenu: - + universal: + quit: q + quit-alt1: + return: + quitWithoutChangingDirectory: Q + togglePanel: + prevItem: + nextItem: + prevItem-alt: k + nextItem-alt: j + prevPage: ',' + nextPage: . + scrollLeft: H + scrollRight: L + gotoTop: < + gotoBottom: '>' + toggleRangeSelect: v + rangeSelectDown: + rangeSelectUp: + prevBlock: + nextBlock: + prevBlock-alt: h + nextBlock-alt: l + nextBlock-alt2: + prevBlock-alt2: + jumpToBlock: + - "1" + - "2" + - "3" + - "4" + - "5" + nextMatch: "n" + prevMatch: "N" + startSearch: / + optionMenu: + optionMenu-alt1: '?' + select: + goInto: + confirm: + confirmInEditor: + remove: d + new: "n" + edit: e + openFile: o + scrollUpMain: + scrollDownMain: + scrollUpMain-alt1: K + scrollDownMain-alt1: J + 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: _ + undo: z + redo: + 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: i + refreshFiles: r + stashAllChanges: s + viewStashOptions: S + toggleStagedAll: a + viewResetOptions: D + fetch: f + toggleTreeView: '`' + openMergeTool: M + openStatusFilter: + copyFileInfoToClipboard: "y" + branches: + createPullRequest: o + viewPullRequestOptions: O + copyPullRequestURL: + checkoutBranchByName: c + forceCheckoutBranch: F + rebaseBranch: r + renameBranch: R + mergeIntoCurrentBranch: M + viewGitFlowOptions: i + fastForward: f + createTag: T + pushTag: P + setUpstream: u + fetchRemote: f + sortOrder: s + worktrees: + viewWorktreeOptions: w + commits: + squashDown: s + renameCommit: r + renameCommitWithEditor: R + viewResetOptions: g + markCommitAsFixup: f + 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: i + amendAttribute: + resetAuthor: a + setAuthor: A + addCoAuthor: c + stash: + popStash: g + renameStash: r + commitFiles: + checkoutCommitFile: c + main: + toggleSelectHunk: a + pickBothHunks: b + editSelectHunk: E + submodules: + init: i + update: u + bulkMenu: b + commitMessage: + commitMenu: customCommands: - - key: "C" - command: 'cog commit "{{ .Form.Type }} {{ .Form.Description }}" {{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}' - description: "Commit with cocogitto" - context: "files" - prompts: - - type: "menuFromCommand" - title: "Select the commit type" - key: "Type" - command: > - bash -c "cog commit --help | sed -n 's/.*\\[possible values: \\(.*\\)\\].*/\\1/p' | tr ', ' '\\n' | sed '/^$/d' | sort" - - type: "input" - title: "Enter the scope(s) of this change" - key: "Scopes" - - type: "input" - title: "Enter a short description of the change" - key: "Description" - - type: "confirm" - title: "Is the commit message correct?" - body: "{{ .Form.Type }}{{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}: {{ .Form.Description }}" + - key: "C" + command: 'cog commit "{{ .Form.Type }} {{ .Form.Description }}" {{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}' + description: "Commit with cocogitto" + context: "files" + prompts: + - type: "menuFromCommand" + title: "Select the commit type" + key: "Type" + command: > + bash -c "cog commit --help | sed -n 's/.*\\[possible values: \\(.*\\)\\].*/\\1/p' | tr ', ' '\\n' | sed '/^$/d' | sort" + + - type: "input" + title: "Enter the scope(s) of this change" + key: "Scopes" + - type: "input" + title: "Enter a short description of the change" + key: "Description" + - type: "confirm" + title: "Is the commit message correct?" + body: "{{ .Form.Type }}{{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}: {{ .Form.Description }}" diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index e2d6ca1..cf9f95d 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -15,7 +15,7 @@ "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, - "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, + "lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, diff --git a/config/nvim/lua/aleidk/plugins-ide/formatter.lua b/config/nvim/lua/aleidk/plugins-ide/formatter.lua index 45a73fa..23f7e01 100644 --- a/config/nvim/lua/aleidk/plugins-ide/formatter.lua +++ b/config/nvim/lua/aleidk/plugins-ide/formatter.lua @@ -32,7 +32,8 @@ return { typescript = { "biome" }, typescriptreact = { "biome" }, xml = { "lemminx" }, - zsh = { "shfmt" } + zsh = { "shfmt" }, + sql = { "sleek" } }, formatters = { djlint = { diff --git a/config/zsh/aliases/aliases.zsh b/config/zsh/aliases/aliases.zsh index 983382d..3076dc6 100644 --- a/config/zsh/aliases/aliases.zsh +++ b/config/zsh/aliases/aliases.zsh @@ -44,9 +44,6 @@ alias \ pco='podman compose' \ pps="podman ps --format 'table {{.ID}}\t{{.Names}}\t{{.State}}\t{{.Status}}\t{{.RunningFor}}'" -alias tm="fzf-tmux-sessions" -alias tmux="tmux -L $(hostname)" # allow to seamlessly create new servers inside containers - # Misc alias \ reload='exec $SHELL -l' diff --git a/config/zsh/zshrc b/config/zsh/zshrc index e4aadc3..2650df6 100644 --- a/config/zsh/zshrc +++ b/config/zsh/zshrc @@ -7,7 +7,6 @@ # │ Preoload stuff │ # ╰──────────────────────────────────────────────────────────╯ -source $HOME/.zprofile # Set the directory we want to store zinit and plugins ZINIT_HOME="${XDG_DATA_HOME:-${HOME}/.local/share}/zinit" From 83b63027d49c624a220a401cbd31f08ccaa05301 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 7 Feb 2025 10:04:53 -0300 Subject: [PATCH 059/152] minor updates --- config/yazi/keymap.toml | 6 +- config/zsh/completions/_just | 177 +++++++++++++++++++++++++++++++++++ 2 files changed, 180 insertions(+), 3 deletions(-) create mode 100644 config/zsh/completions/_just diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml index b537398..08f3433 100644 --- a/config/yazi/keymap.toml +++ b/config/yazi/keymap.toml @@ -45,11 +45,11 @@ keymap = [ { on = ["J"], run = "seek 5", desc = "Seek down 5 units in the preview" }, # Selection - { on = [""], run = ["select", "arrow 1"], desc = "Toggle the current selection state" }, + { on = [""], run = ["toggle", "arrow 1"], desc = "Toggle the current selection state" }, { on = ["v"], run = "visual_mode", desc = "Enter visual mode (selection mode)" }, { on = ["V"], run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" }, - { on = [""], run = "select_all --state=true", desc = "Select all files" }, - { on = [""], run = "select_all --state=none", desc = "Inverse selection of all files" }, + { on = [""], run = "toggle_all --state=true", desc = "Select all files" }, + { on = [""], run = "toggle_all --state=none", desc = "Inverse selection of all files" }, # Operation { on = ["o"], run = "open", desc = "Open the selected files" }, diff --git a/config/zsh/completions/_just b/config/zsh/completions/_just new file mode 100644 index 0000000..e84d9da --- /dev/null +++ b/config/zsh/completions/_just @@ -0,0 +1,177 @@ +#compdef just + +autoload -U is-at-least + +_just() { + typeset -A opt_args + typeset -a _arguments_options + local ret=1 + + if is-at-least 5.2; then + _arguments_options=(-s -S -C) + else + _arguments_options=(-s -C) + fi + + local context curcontext="$curcontext" state line + local common=( +'(--no-aliases)--alias-style=[Set list command alias display style]: :(left right separate)' \ +'--chooser=[Override binary invoked by \`--choose\`]: :_default' \ +'--color=[Print colorful output]: :(auto always never)' \ +'--command-color=[Echo recipe lines in ]: :(black blue cyan green purple red yellow)' \ +'(-E --dotenv-path)--dotenv-filename=[Search for environment file named instead of \`.env\`]: :_default' \ +'-E+[Load as environment file instead of searching for one]: :_files' \ +'--dotenv-path=[Load as environment file instead of searching for one]: :_files' \ +'--dump-format=[Dump justfile as ]:FORMAT:(json just)' \ +'-f+[Use as justfile]: :_files' \ +'--justfile=[Use as justfile]: :_files' \ +'--list-heading=[Print before list]:TEXT:_default' \ +'--list-prefix=[Print before each list item]:TEXT:_default' \ +'*--set=[Override with ]: :(_just_variables)' \ +'--shell=[Invoke to run recipes]: :_default' \ +'*--shell-arg=[Invoke shell with as an argument]: :_default' \ +'--timestamp-format=[Timestamp format string]: :_default' \ +'-d+[Use as working directory. --justfile must also be set]: :_files' \ +'--working-directory=[Use as working directory. --justfile must also be set]: :_files' \ +'*-c+[Run an arbitrary command with the working directory, \`.env\`, overrides, and exports set]: :_default' \ +'*--command=[Run an arbitrary command with the working directory, \`.env\`, overrides, and exports set]: :_default' \ +'--completions=[Print shell completion script for ]:SHELL:(bash elvish fish nushell powershell zsh)' \ +'()-l+[List available recipes]' \ +'()--list=[List available recipes]' \ +'--request=[Execute . For internal testing purposes only. May be changed or removed at any time.]: :_default' \ +'-s+[Show recipe at ]: :(_just_commands)' \ +'--show=[Show recipe at ]: :(_just_commands)' \ +'--check[Run \`--fmt\` in '\''check'\'' mode. Exits with 0 if justfile is formatted correctly. Exits with 1 and prints a diff if formatting is required.]' \ +'--clear-shell-args[Clear shell arguments]' \ +'(-q --quiet)-n[Print what just would do without doing it]' \ +'(-q --quiet)--dry-run[Print what just would do without doing it]' \ +'--explain[Print recipe doc comment before running it]' \ +'(-f --justfile -d --working-directory)-g[Use global justfile]' \ +'(-f --justfile -d --working-directory)--global-justfile[Use global justfile]' \ +'--highlight[Highlight echoed recipe lines in bold]' \ +'--list-submodules[List recipes in submodules]' \ +'--no-aliases[Don'\''t show aliases in list]' \ +'--no-deps[Don'\''t run recipe dependencies]' \ +'--no-dotenv[Don'\''t load \`.env\` file]' \ +'--no-highlight[Don'\''t highlight echoed recipe lines in bold]' \ +'--one[Forbid multiple recipes from being invoked on the command line]' \ +'(-n --dry-run)-q[Suppress all output]' \ +'(-n --dry-run)--quiet[Suppress all output]' \ +'--allow-missing[Ignore missing recipe and module errors]' \ +'--shell-command[Invoke with the shell used to run recipe lines and backticks]' \ +'--timestamp[Print recipe command timestamps]' \ +'-u[Return list and summary entries in source order]' \ +'--unsorted[Return list and summary entries in source order]' \ +'--unstable[Enable unstable features]' \ +'*-v[Use verbose output]' \ +'*--verbose[Use verbose output]' \ +'--yes[Automatically confirm all recipes.]' \ +'--changelog[Print changelog]' \ +'--choose[Select one or more recipes to run using a binary chooser. If \`--chooser\` is not passed the chooser defaults to the value of \$JUST_CHOOSER, falling back to \`fzf\`]' \ +'--dump[Print justfile]' \ +'-e[Edit justfile with editor given by \$VISUAL or \$EDITOR, falling back to \`vim\`]' \ +'--edit[Edit justfile with editor given by \$VISUAL or \$EDITOR, falling back to \`vim\`]' \ +'--evaluate[Evaluate and print all variables. If a variable name is given as an argument, only print that variable'\''s value.]' \ +'--fmt[Format and overwrite justfile]' \ +'--groups[List recipe groups]' \ +'--init[Initialize new justfile in project root]' \ +'--man[Print man page]' \ +'--summary[List names of available recipes]' \ +'--variables[List names of variables]' \ +'-h[Print help]' \ +'--help[Print help]' \ +'-V[Print version]' \ +'--version[Print version]' \ +) + + _arguments "${_arguments_options[@]}" $common \ + '1: :_just_commands' \ + '*: :->args' \ + && ret=0 + + case $state in + args) + curcontext="${curcontext%:*}-${words[2]}:" + + local lastarg=${words[${#words}]} + local recipe + + local cmds; cmds=( + ${(s: :)$(_call_program commands just --summary)} + ) + + # Find first recipe name + for ((i = 2; i < $#words; i++ )) do + if [[ ${cmds[(I)${words[i]}]} -gt 0 ]]; then + recipe=${words[i]} + break + fi + done + + if [[ $lastarg = */* ]]; then + # Arguments contain slash would be recognised as a file + _arguments -s -S $common '*:: :_files' + elif [[ $lastarg = *=* ]]; then + # Arguments contain equal would be recognised as a variable + _message "value" + elif [[ $recipe ]]; then + # Show usage message + _message "`just --show $recipe`" + # Or complete with other commands + #_arguments -s -S $common '*:: :_just_commands' + else + _arguments -s -S $common '*:: :_just_commands' + fi + ;; + esac + + return ret + +} + +(( $+functions[_just_commands] )) || +_just_commands() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local variables; variables=( + ${(s: :)$(_call_program commands just --variables)} + ) + local commands; commands=( + ${${${(M)"${(f)$(_call_program commands just --list)}":# *}/ ##/}/ ##/:Args: } + ) + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + *) _message 'value' && ret=0 ;; + esac + else + _describe -t variables 'variables' variables -qS "=" && ret=0 + _describe -t commands 'just commands' commands "$@" + fi + +} + +if [ "$funcstack[1]" = "_just" ]; then + (( $+functions[_just_variables] )) || +_just_variables() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + local variables; variables=( + ${(s: :)$(_call_program commands just --variables)} + ) + + if compset -P '*='; then + case "${${words[-1]%=*}#*=}" in + *) _message 'value' && ret=0 ;; + esac + else + _describe -t variables 'variables' variables && ret=0 + fi + + return ret +} + +_just "$@" +else + compdef _just just +fi From 52cc9ae0a937439b0d8eaea288aa9e55b81b42c3 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 10 Feb 2025 11:58:33 -0300 Subject: [PATCH 060/152] minor update --- config/kitty/kitty.conf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf index 8176d83..e77d77e 100644 --- a/config/kitty/kitty.conf +++ b/config/kitty/kitty.conf @@ -773,7 +773,7 @@ bell_on_tab " " #: Window layout {{{ -# remember_window_size yes +remember_window_size yes # initial_window_width 640 # initial_window_height 400 @@ -2131,6 +2131,8 @@ map ctrl+space>ctrl+shift+tab detach_window ask # map cmd+t new_tab map ctrl+space>t new_tab_with_cwd map ctrl+space>n new_tab_with_cwd +map ctrl+space>shift+t new_tab +map ctrl+space>shift+n new_tab #: Close tab From 0648e8a8cfd3dd125766971cca373a4062b27ea7 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 17 Feb 2025 12:46:59 -0300 Subject: [PATCH 061/152] update kitty config --- config/kitty/kitty.conf | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf index e77d77e..ee876ca 100644 --- a/config/kitty/kitty.conf +++ b/config/kitty/kitty.conf @@ -1970,8 +1970,11 @@ map --when-focus-on var:IS_NVIM alt+l # map kitty_mod+enter new_window # map cmd+enter new_window map ctrl+space>enter new_window -map ctrl+space>s launch --location=vsplit --cwd=current -map ctrl+space>v launch --location=split --cwd=current +map ctrl+space>s launch --location=vsplit --cwd=root +map ctrl+space>v launch --location=split --cwd=root +map ctrl+space>ctrl+s launch --location=vsplit +map ctrl+space>ctrl+v launch --location=split + #:: You can open a new kitty window running an arbitrary program, for #:: example:: From 543f604d7f8924a3e5ed9aa048cd470e1a932cd9 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 26 Feb 2025 04:32:11 -0300 Subject: [PATCH 062/152] fix formatter for minijinja templates --- config/nvim/lua/aleidk/plugins-ide/formatter.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/config/nvim/lua/aleidk/plugins-ide/formatter.lua b/config/nvim/lua/aleidk/plugins-ide/formatter.lua index 23f7e01..2406d75 100644 --- a/config/nvim/lua/aleidk/plugins-ide/formatter.lua +++ b/config/nvim/lua/aleidk/plugins-ide/formatter.lua @@ -17,6 +17,7 @@ return { css = { "biome" }, go = { "gofumpt", "goimports_reviser", "golines" }, html = { "djlint", "prettierd", stop_after_first = true }, + htmldjango = { "djlint", stop_after_first = true }, javascript = { "biome" }, javascriptreact = { "biome" }, json = { "biome" }, From 769700b5ec6e6e87dafd13502954549c14d43a19 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 26 Feb 2025 10:14:13 -0300 Subject: [PATCH 063/152] update yazi config change overriding config to prepend to avoid future deprecation warnings --- config/yazi/keymap.toml | 228 +++------------------------------------ config/yazi/package.toml | 27 ++++- 2 files changed, 35 insertions(+), 220 deletions(-) diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml index 08f3433..f2b259c 100644 --- a/config/yazi/keymap.toml +++ b/config/yazi/keymap.toml @@ -4,134 +4,33 @@ [manager] -keymap = [ +prepend_keymap = [ { on = [""], run = "escape --all", desc = "Exit visual mode, clear selected, or cancel search" }, - { on = ["q"], run = "quit", desc = "Exit the process" }, - { on = ["Q"], run = "quit --no-cwd-file", desc = "Exit the process without writing cwd-file" }, - { on = [""], run = "close", desc = "Close the current tab, or quit if it is last tab" }, - { on = [""], run = "suspend", desc = "Suspend the process" }, - - # Hopping - { on = ["k"], run = "arrow -1", desc = "Move cursor up" }, - { on = ["j"], run = "arrow 1", desc = "Move cursor down" }, - { on = [""], run = "arrow -1", desc = "Move cursor up" }, - { on = [""], run = "arrow 1", desc = "Move cursor down" }, - - { on = [""], run = "arrow -50%", desc = "Move cursor up half page" }, - { on = [""], run = "arrow 50%", desc = "Move cursor down half page" }, - { on = [""], run = "arrow -100%", desc = "Move cursor up one page" }, - { on = [""], run = "arrow 100%", desc = "Move cursor down one page" }, - - { on = [""], run = "arrow -50%", desc = "Move cursor up half page" }, - { on = [""], run = "arrow 50%", desc = "Move cursor down half page" }, - { on = [""], run = "arrow -100%", desc = "Move cursor up one page" }, - { on = [""], run = "arrow 100%", desc = "Move cursor down one page" }, - - { on = ["g", "g"], run = "arrow -99999999", desc = "Move cursor to the top" }, - { on = ["G"], run = "arrow 99999999", desc = "Move cursor to the bottom" }, # Navigation { on = ["h"], run = ["leave", "escape --visual --select"], desc = "Go back to the parent directory" }, - { on = ["l"], run = ["enter", "escape --visual --select"], desc = "Enter the child directory" }, + # { on = ["l"], run = ["enter", "escape --visual --select"], desc = "Enter the child directory" }, + { on = ["l"], run = "plugin smart-enter", desc = "Enter the child directory, or open the file" }, { on = [""], run = ["leave", "escape --visual --select"], desc = "Go back to the parent directory" }, { on = [""], run = ["enter", "escape --visual --select"], desc = "Enter the child directory" }, - { on = ["H"], run = "back", desc = "Go back to the previous directory" }, - { on = ["L"], run = "forward", desc = "Go forward to the next directory" }, - - # Seeking - { on = ["K"], run = "seek -5", desc = "Seek up 5 units in the preview" }, - { on = ["J"], run = "seek 5", desc = "Seek down 5 units in the preview" }, - - # Selection - { on = [""], run = ["toggle", "arrow 1"], desc = "Toggle the current selection state" }, - { on = ["v"], run = "visual_mode", desc = "Enter visual mode (selection mode)" }, - { on = ["V"], run = "visual_mode --unset", desc = "Enter visual mode (unset mode)" }, - { on = [""], run = "toggle_all --state=true", desc = "Select all files" }, - { on = [""], run = "toggle_all --state=none", desc = "Inverse selection of all files" }, - # Operation - { on = ["o"], run = "open", desc = "Open the selected files" }, - { on = ["O"], run = "open --interactive", desc = "Open the selected files interactively" }, - { on = [""], run = "open", desc = "Open the selected files" }, - { on = [""], run = "open --interactive", desc = "Open the selected files interactively" }, - { on = ["y"], run = ["yank", "escape --visual --select"], desc = "Copy the selected files" }, - { on = ["Y"], run = ["unyank", "escape --visual --select"], desc = "Cancel the yank status of files" }, - { on = ["x"], run = ["yank --cut", "escape --visual --select"], desc = "Cut the selected files" }, - { on = ["p"], run = "paste", desc = "Paste the files" }, - { on = ["P"], run = "paste --force", desc = "Paste the files (overwrite if the destination exists)" }, - { on = ["-"], run = "link", desc = "Symlink the absolute path of files" }, - { on = ["_"], run = "link --relative", desc = "Symlink the relative path of files" }, - { on = ["d"], run = ["remove", "escape --visual --select"], desc = "Move the files to the trash" }, - { on = ["D"], run = ["remove --permanently", "escape --visual --select"], desc = "Permanently delete the files" }, - { on = ["a"], run = "create", desc = "Create a file or directory (ends with / for directories)" }, - { on = ["R"], run = "plugin rsync", desc = "Copy files using rsync" }, - { on = ["r"], run = "rename --cursor=before_ext", desc = "Rename a file or directory" }, - { on = [";"], run = "shell --interactive", desc = "Run a shell command" }, - { on = [":"], run = "shell --interactive --block", desc = "Run a shell command (block the UI until the command finishes)" }, - { on = ["."], run = "hidden toggle", desc = "Toggle the visibility of hidden files" }, - { on = ["s"], run = "search fd", desc = "Search files by name using fd" }, - { on = ["S"], run = "search rg", desc = "Search files by content using ripgrep" }, - { on = [""], run = "search none", desc = "Cancel the ongoing search" }, - { on = ["z"], run = "plugin zoxide", desc = "Jump to a directory using zoxide" }, - { on = ["Z"], run = "plugin fzf", desc = "Jump to a directory, or reveal a file using fzf" }, - - # Linemode - { on = ["m", "s"], run = "linemode size", desc = "Set linemode to size" }, - { on = ["m", "p"], run = "linemode permissions", desc = "Set linemode to permissions" }, - { on = ["m", "m"], run = "linemode mtime", desc = "Set linemode to mtime" }, - { on = ["m", "n"], run = "linemode none", desc = "Set linemode to none" }, + { on = ["r"], run = "rename --empty=stem --cursor=start", desc = "Rename a file or directory" }, + { on = ["R"], run = "rename --cursor=end", desc = "Rename a file or directory (keeping the current filename)" }, # Copy { on = ["c", "c"], run = "copy path", desc = "Copy the absolute path" }, { on = ["c", "d"], run = "copy dirname", desc = "Copy the path of the parent directory" }, { on = ["c", "f"], run = "copy filename", desc = "Copy the name of the file" }, { on = ["c", "n"], run = "copy name_without_ext", desc = "Copy the name of the file without the extension" }, + { on = ["c", "r"], run = "plugin rsync", desc = "Copy files using rsync" }, - # Filter - { on = ["f"], run = "filter --smart", desc = "Filter the files" }, - - # Find - { on = ["/"], run = "find --smart", desc = "Find next file" }, - { on = ["?"], run = "find --previous --smart", desc = "Find previous file" }, - { on = ["n"], run = "find_arrow", desc = "Go to next found file" }, - { on = ["N"], run = "find_arrow --previous", desc = "Go to previous found file" }, - - # Sorting - { on = [",", "m"], run = "sort mtime --reverse=no", desc = "Sort by modified time" }, - { on = [",", "M"], run = "sort mtime --reverse", desc = "Sort by modified time (reverse)" }, - { on = [",", "c"], run = "sort btime --reverse=no", desc = "Sort by created time" }, - { on = [",", "C"], run = "sort btime --reverse", desc = "Sort by created time (reverse)" }, - { on = [",", "e"], run = "sort extension --reverse=no", desc = "Sort by extension" }, - { on = [",", "E"], run = "sort extension --reverse", desc = "Sort by extension (reverse)" }, - { on = [",", "a"], run = "sort alphabetical --reverse=no", desc = "Sort alphabetically" }, - { on = [",", "A"], run = "sort alphabetical --reverse", desc = "Sort alphabetically (reverse)" }, - { on = [",", "n"], run = "sort natural --reverse=no", desc = "Sort naturally" }, - { on = [",", "N"], run = "sort natural --reverse", desc = "Sort naturally (reverse)" }, - { on = [",", "s"], run = "sort size --reverse=no", desc = "Sort by size" }, - { on = [",", "S"], run = "sort size --reverse", desc = "Sort by size (reverse)" }, - # Tabs - { on = ["t"], run = "tab_create --current", desc = "Create a new tab using the current path" }, - - { on = ["1"], run = "tab_switch 0", desc = "Switch to the first tab" }, - { on = ["2"], run = "tab_switch 1", desc = "Switch to the second tab" }, - { on = ["3"], run = "tab_switch 2", desc = "Switch to the third tab" }, - { on = ["4"], run = "tab_switch 3", desc = "Switch to the fourth tab" }, - { on = ["5"], run = "tab_switch 4", desc = "Switch to the fifth tab" }, - { on = ["6"], run = "tab_switch 5", desc = "Switch to the sixth tab" }, - { on = ["7"], run = "tab_switch 6", desc = "Switch to the seventh tab" }, - { on = ["8"], run = "tab_switch 7", desc = "Switch to the eighth tab" }, - { on = ["9"], run = "tab_switch 8", desc = "Switch to the ninth tab" }, - - { on = ["["], run = "tab_switch -1 --relative", desc = "Switch to the previous tab" }, - { on = ["]"], run = "tab_switch 1 --relative", desc = "Switch to the next tab" }, - - { on = ["{"], run = "tab_swap -1", desc = "Swap the current tab with the previous tab" }, - { on = ["}"], run = "tab_swap 1", desc = "Swap the current tab with the next tab" }, - - # Tasks - { on = ["w"], run = "tasks_show", desc = "Show the tasks manager" }, + # Goto + { on = ["g", "h"], run = "cd ~", desc = "Go home" }, + { on = ["g", "c"], run = "cd ~/.config", desc = "Goto ~/.config" }, + { on = ["g", "d"], run = "cd ~/Downloads", desc = "Goto ~/Downloads" }, + { on = ["g", ""], run = "cd --interactive", desc = "Jump interactively" }, # Goto { on = ["g", "h"], run = "cd ~", desc = "Go to the home directory" }, @@ -140,111 +39,8 @@ keymap = [ { on = ["g", "t"], run = "cd /tmp", desc = "Go to the temporary directory" }, { on = ["g", "r"], run = "shell 'ya emit cd \"$(git rev-parse --show-toplevel)\"'", desc = "Go to git root" }, { on = ["g", ""], run = "cd --interactive", desc = "Go to a directory interactively" }, - - # Help - { on = ["~"], run = "help", desc = "Open help" }, ] -[tasks] - -keymap = [{ on = [""], run = "close", desc = "Hide the task manager" }, { on = [""], run = "close", desc = "Hide the task manager" }, { on = ["w"], run = "close", desc = "Hide the task manager" }, { on = ["k"], run = "arrow -1", desc = "Move cursor up" }, { on = ["j"], run = "arrow 1", desc = "Move cursor down" }, { on = [""], run = "arrow -1", desc = "Move cursor up" }, { on = [""], run = "arrow 1", desc = "Move cursor down" }, { on = [""], run = "inspect", desc = "Inspect the task" }, { on = ["x"], run = "cancel", desc = "Cancel the task" }, { on = ["~"], run = "help", desc = "Open help" }] - -[pick] - -keymap = [{ on = [""], run = "close", desc = "Cancel selection" }, { on = [""], run = "close", desc = "Cancel selection" }, { on = [""], run = "close --submit", desc = "Submit the selection" }, { on = ["k"], run = "arrow -1", desc = "Move cursor up" }, { on = ["j"], run = "arrow 1", desc = "Move cursor down" }, { on = ["K"], run = "arrow -5", desc = "Move cursor up 5 lines" }, { on = ["J"], run = "arrow 5", desc = "Move cursor down 5 lines" }, { on = [""], run = "arrow -1", desc = "Move cursor up" }, { on = [""], run = "arrow 1", desc = "Move cursor down" }, { on = [""], run = "arrow -5", desc = "Move cursor up 5 lines" }, { on = [""], run = "arrow 5", desc = "Move cursor down 5 lines" }, { on = ["~"], run = "help", desc = "Open help" }] - -[input] - -keymap = [ - { on = [""], run = "close", desc = "Cancel input" }, - { on = [""], run = "close --submit", desc = "Submit the input" }, - { on = [""], run = "close", desc = "Go back the normal mode, or cancel input" }, - - # Mode - { on = ["i"], run = "insert", desc = "Enter insert mode" }, - { on = ["a"], run = "insert --append", desc = "Enter append mode" }, - { on = ["I"], run = ["move -999", "insert"], desc = "Move to the BOL, and enter insert mode" }, - { on = ["A"], run = ["move 999", "insert --append"], desc = "Move to the EOL, and enter append mode" }, - { on = ["v"], run = "visual", desc = "Enter visual mode" }, - { on = ["V"], run = ["move -999", "visual", "move 999"], desc = "Enter visual mode and select all" }, - - # Character-wise movement - { on = ["h"], run = "move -1", desc = "Move back a character" }, - { on = ["l"], run = "move 1", desc = "Move forward a character" }, - { on = [""], run = "move -1", desc = "Move back a character" }, - { on = [""], run = "move 1", desc = "Move forward a character" }, - { on = [""], run = "move -1", desc = "Move back a character" }, - { on = [""], run = "move 1", desc = "Move forward a character" }, - - # Word-wise movement - { on = ["b"], run = "backward", desc = "Move back to the start of the current or previous word" }, - { on = ["w"], run = "forward", desc = "Move forward to the start of the next word" }, - { on = ["e"], run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" }, - { on = [""], run = "backward", desc = "Move back to the start of the current or previous word" }, - { on = [""], run = "forward --end-of-word", desc = "Move forward to the end of the current or next word" }, - - # Line-wise movement - { on = ["0"], run = "move -999", desc = "Move to the BOL" }, - { on = ["$"], run = "move 999", desc = "Move to the EOL" }, - { on = [""], run = "move -999", desc = "Move to the BOL" }, - { on = [""], run = "move 999", desc = "Move to the EOL" }, - { on = [""], run = "move -999", desc = "Move to the BOL" }, - { on = [""], run = "move 999", desc = "Move to the EOL" }, - - # Delete - { on = [""], run = "backspace", desc = "Delete the character before the cursor" }, - { on = [""], run = "backspace --under", desc = "Delete the character under the cursor" }, - { on = [""], run = "backspace", desc = "Delete the character before the cursor" }, - { on = [""], run = "backspace --under", desc = "Delete the character under the cursor" }, - - # Kill - { on = [""], run = "kill bol", desc = "Kill backwards to the BOL" }, - { on = [""], run = "kill eol", desc = "Kill forwards to the EOL" }, - { on = [""], run = "kill backward", desc = "Kill backwards to the start of the current word" }, - { on = [""], run = "kill forward", desc = "Kill forwards to the end of the current word" }, - - # Cut/Yank/Paste - { on = ["d"], run = "delete --cut", desc = "Cut the selected characters" }, - { on = ["D"], run = ["delete --cut", "move 999"], desc = "Cut until the EOL" }, - { on = ["c"], run = "delete --cut --insert", desc = "Cut the selected characters, and enter insert mode" }, - { on = ["C"], run = ["delete --cut --insert", "move 999"], desc = "Cut until the EOL, and enter insert mode" }, - { on = ["x"], run = ["delete --cut", "move 1 --in-operating"], desc = "Cut the current character" }, - { on = ["y"], run = "yank", desc = "Copy the selected characters" }, - { on = ["p"], run = "paste", desc = "Paste the copied characters after the cursor" }, - { on = ["P"], run = "paste --before", desc = "Paste the copied characters before the cursor" }, - - # Undo/Redo - { on = ["u"], run = "undo", desc = "Undo the last operation" }, - { on = [""], run = "redo", desc = "Redo the last operation" }, - - # Help - { on = ["~"], run = "help", desc = "Open help" }, -] - -[completion] - -keymap = [{ on = [""], run = "close", desc = "Cancel completion" }, { on = [""], run = "close --submit", desc = "Submit the completion" }, { on = [""], run = ["close --submit", "close_input --submit"], desc = "Submit the completion and input" }, { on = [""], run = "arrow -1", desc = "Move cursor up" }, { on = [""], run = "arrow 1", desc = "Move cursor down" }, { on = [""], run = "arrow -1", desc = "Move cursor up" }, { on = [""], run = "arrow 1", desc = "Move cursor down" }, { on = ["~"], run = "help", desc = "Open help" }] - [help] -keymap = [ - { on = [""], run = "escape", desc = "Clear the filter, or hide the help" }, - { on = ["q"], run = "close", desc = "Exit the process" }, - { on = [""], run = "close", desc = "Hide the help" }, - - # Navigation - { on = ["k"], run = "arrow -1", desc = "Move cursor up" }, - { on = ["j"], run = "arrow 1", desc = "Move cursor down" }, - - { on = ["K"], run = "arrow -5", desc = "Move cursor up 5 lines" }, - { on = ["J"], run = "arrow 5", desc = "Move cursor down 5 lines" }, - - { on = [""], run = "arrow -1", desc = "Move cursor up" }, - { on = [""], run = "arrow 1", desc = "Move cursor down" }, - - { on = [""], run = "arrow -5", desc = "Move cursor up 5 lines" }, - { on = [""], run = "arrow 5", desc = "Move cursor down 5 lines" }, - - # Filtering - { on = ["/"], run = "filter", desc = "Apply a filter for the help items" }, -] +prepend_keymap = [{ on = "q", run = "escape", desc = "Clear the filter, or hide the help" }] diff --git a/config/yazi/package.toml b/config/yazi/package.toml index ad75a40..7629b7a 100644 --- a/config/yazi/package.toml +++ b/config/yazi/package.toml @@ -1,5 +1,24 @@ -[plugin] -deps = [{ use = "yazi-rs/plugins:full-border", rev = "4a6edc3" }, { use = "GianniBYoung/rsync", rev = "3f431aa" }, { use = "Ape/simple-status", rev = "3ef1447" }] +[[plugin.deps]] +use = "yazi-rs/plugins:full-border" +rev = "5186af7" +hash = "ae9e1d0c6bfd68cdebc98cc684c22b45" -[flavor] -deps = [{ use = "yazi-rs/flavors:catppuccin-macchiato", rev = "4a3082f" }] +[[plugin.deps]] +use = "GianniBYoung/rsync" +rev = "3f431aa" +hash = "1854a5a30d23e84bc8df24700f27957b" + +[[plugin.deps]] +use = "Ape/simple-status" +rev = "d0da104" +hash = "68603fdd1dcaf415227e2c77a9317947" + +[[plugin.deps]] +use = "yazi-rs/plugins:smart-enter" +rev = "5186af7" +hash = "aef2b1a805b80cce573bb766f1459d88" + +[[flavor.deps]] +use = "yazi-rs/flavors:catppuccin-macchiato" +rev = "df95930" +hash = "c34feed32d555e79ab9a0c0a7bdda2be" From da229929831c98f202c5c22737a6fc850d604a38 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 27 Feb 2025 11:55:54 -0300 Subject: [PATCH 064/152] update git diff --- config/nvim/lua/aleidk/options.lua | 2 + .../lua/aleidk/plugins-core/colorscheme.lua | 77 ++++++++++++------- config/nvim/lua/aleidk/plugins-ide/git.lua | 33 ++++++-- config/yazi/keymap.toml | 2 + 4 files changed, 77 insertions(+), 37 deletions(-) diff --git a/config/nvim/lua/aleidk/options.lua b/config/nvim/lua/aleidk/options.lua index d8d6d1e..c51504c 100644 --- a/config/nvim/lua/aleidk/options.lua +++ b/config/nvim/lua/aleidk/options.lua @@ -5,6 +5,8 @@ vim.g.mapleader = " " vim.g.maplocalleader = " " +vim.o.diffopt = "vertical,closeoff,filler" + local opt = vim.opt -- stylua: ignore diff --git a/config/nvim/lua/aleidk/plugins-core/colorscheme.lua b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua index 92a58d4..af5c7fc 100644 --- a/config/nvim/lua/aleidk/plugins-core/colorscheme.lua +++ b/config/nvim/lua/aleidk/plugins-core/colorscheme.lua @@ -2,36 +2,55 @@ return { -- Change colors.none if not using a transparent background "catppuccin/nvim", name = "catppuccin", priority = 1000, - opts = { - flavour = "macchiato", - transparent_background = true, - integrations = { - aerial = true, - blink_cmp = true, - cmp = true, - harpoon = false, - indent_blankline = { enabled = true, scope_color = "text", }, - lsp_trouble = true, - mason = true, - neogit = true, - noice = true, - notify = true, - }, - custom_highlights = function(colors) - return { - -- Fix colors for cmp - Pmenu = { bg = colors.none, blend = 0 }, - FloatBorder = { bg = colors.none }, - CmpItemMenu = { fg = colors.text, bg = colors.none }, - -- dadbod-ui - NotificationInfo = { bg = colors.none, fg = colors.text }, - NotificationWarning = { bg = colors.none, fg = colors.yellow }, - NotificationError = { bg = colors.none, fg = colors.red }, - } - end, - }, + config = function() + local utils = require("catppuccin.utils.colors") + + local opts = { + flavour = "macchiato", + transparent_background = true, + integrations = { + aerial = true, + blink_cmp = true, + cmp = true, + gitsigns = true, + indent_blankline = { enabled = true, scope_color = "text", }, + lsp_trouble = true, + mason = true, + noice = true, + notify = true, + }, + custom_highlights = function(colors) + return { + -- Fix colors for cmp + Pmenu = { bg = colors.none, blend = 0 }, + FloatBorder = { bg = colors.none }, + CmpItemMenu = { fg = colors.text, bg = colors.none }, + -- dadbod-ui + NotificationInfo = { bg = colors.none, fg = colors.text }, + NotificationWarning = { bg = colors.none, fg = colors.yellow }, + NotificationError = { bg = colors.none, fg = colors.red }, + + -- for word diff in previews + GitSignsAddInline = { + fg = colors.teal, + bg = utils.darken(colors.teal, 0.4), + style = { "bold" }, + }, + GitSignsDeleteInline = { + fg = colors.red, + bg = utils.darken(colors.red, 0.4), + style = { "bold" }, + }, + GitSignsChangeInline = { + fg = colors.mauve, + bg = utils.darken(colors.mauve, 0.4), + style = { "bold" }, + }, + GitSignsDeleteVirtLn = { bg = colors.none, fg = colors.red }, + } + end, + } - config = function(_, opts) require("catppuccin").setup(opts) vim.cmd.colorscheme("catppuccin-macchiato") end, diff --git a/config/nvim/lua/aleidk/plugins-ide/git.lua b/config/nvim/lua/aleidk/plugins-ide/git.lua index 4cc6a38..f34672f 100644 --- a/config/nvim/lua/aleidk/plugins-ide/git.lua +++ b/config/nvim/lua/aleidk/plugins-ide/git.lua @@ -1,18 +1,32 @@ +local const = require("aleidk.constants") + return { { "lewis6991/gitsigns.nvim", event = { "BufReadPre", "BufNewFile" }, opts = { -- See `:help gitsigns.txt` - signs = { - add = { text = "▎" }, - change = { text = "▎" }, - delete = { text = "" }, - topdelete = { text = "" }, - changedelete = { text = "▎" }, + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = true, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` + signs = { + add = { text = const.icons.git.added }, + change = { text = const.icons.git.modified }, + delete = { text = const.icons.git.removed }, + topdelete = { text = const.icons.git.removed }, + changedelete = { text = const.icons.git.removed }, untracked = { text = "▎" }, }, - on_attach = function(buffer) + signs_staged = { + add = { text = const.icons.git.added }, + change = { text = const.icons.git.modified }, + delete = { text = const.icons.git.removed }, + topdelete = { text = const.icons.git.removed }, + changedelete = { text = const.icons.git.removed }, + untracked = { text = "▎" }, + }, + on_attach = function(buffer) local gs = package.loaded.gitsigns local function map(mode, l, r, desc) @@ -28,7 +42,10 @@ return { map("n", "R", gs.reset_buffer, "Reset Buffer") map("n", "", gs.preview_hunk, "Preview Hunk") map("n", "l", function() gs.blame_line({ full = true }) end, "Blame Line") - map("n", "d", gs.diffthis, "Diff This") + map("n", "L", gs.toggle_current_line_blame, "Toggle current line blame") + map("n", "d", gs.toggle_word_diff, "Toggle word diff") + map("n", "h", "diffget", "Diff This with last commit") + map("n", "l", "diffput", "Diff This with last commit") end, }, }, diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml index f2b259c..6cd54c2 100644 --- a/config/yazi/keymap.toml +++ b/config/yazi/keymap.toml @@ -41,6 +41,8 @@ prepend_keymap = [ { on = ["g", ""], run = "cd --interactive", desc = "Go to a directory interactively" }, ] +[input] +keymap = [{ on = [""], run = "escape --all", desc = "Go back the normal mode, or cancel input" }] [help] prepend_keymap = [{ on = "q", run = "escape", desc = "Clear the filter, or hide the help" }] From 2cbac545097e08832d9087152a4c2f968fd65425 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 27 Feb 2025 11:55:54 -0300 Subject: [PATCH 065/152] update git diff --- config/yazi/keymap.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/config/yazi/keymap.toml b/config/yazi/keymap.toml index 6cd54c2..af6a85d 100644 --- a/config/yazi/keymap.toml +++ b/config/yazi/keymap.toml @@ -42,7 +42,7 @@ prepend_keymap = [ ] [input] -keymap = [{ on = [""], run = "escape --all", desc = "Go back the normal mode, or cancel input" }] -[help] +prepend_keymap = [{ on = [""], run = "close", desc = "Go back the normal mode, or cancel input" }] +[help] prepend_keymap = [{ on = "q", run = "escape", desc = "Clear the filter, or hide the help" }] From 3fffa9d78e8fdf815a6d984a49d2750fead83811 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 11 Mar 2025 10:32:50 -0300 Subject: [PATCH 066/152] remove AI pluging from neovim --- .dotter/pre_deploy.sh | 5 +- config/nvim/lua/aleidk/plugins-ide/ai.lua | 148 ------------------ .../lua/aleidk/plugins-ide/completion.lua | 17 -- 3 files changed, 4 insertions(+), 166 deletions(-) delete mode 100644 config/nvim/lua/aleidk/plugins-ide/ai.lua diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh index a82f89f..ed5fcf7 100755 --- a/.dotter/pre_deploy.sh +++ b/.dotter/pre_deploy.sh @@ -72,7 +72,10 @@ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --no-mod {{#if (and dotter.packages.rust (ne (len cargo.packages) 0)) }} {{ header "Installing crates" }} -cargo install --locked {{# each (flatten_table cargo.packages) }} "{{ this }}" {{ /each }} + +curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash + +cargo binstall --locked {{# each (flatten_table cargo.packages) }} "{{ this }}" {{ /each }} {{ /if }} diff --git a/config/nvim/lua/aleidk/plugins-ide/ai.lua b/config/nvim/lua/aleidk/plugins-ide/ai.lua deleted file mode 100644 index 463cb7c..0000000 --- a/config/nvim/lua/aleidk/plugins-ide/ai.lua +++ /dev/null @@ -1,148 +0,0 @@ -return { - "CopilotC-Nvim/CopilotChat.nvim", - branch = "canary", - build = "make tiktoken", - cmd = "CopilotChat", - dependencies = { - "nvim-lua/plenary.nvim", - { - "zbirenbaum/copilot.lua", - cmd = "Copilot", - event = "InsertEnter", - config = function() - require("copilot").setup({ - suggestion = { enabled = false }, - panel = { enabled = false }, - }) - - vim.g.copilot_autocomplete_enabled = false - - vim.api.nvim_create_user_command("CopilotToggleAutocomplete", function() - vim.g.copilot_autocomplete_enabled = not vim.g.copilot_autocomplete_enabled - print("Copilot autocompletion: " .. tostring(vim.g.copilot_autocomplete_enabled)) - end, { desc = "Toggle Copilot autocompletion" }) - end, - }, - }, - opts = - ---@type CopilotChat.config - { - ---@type table - prompts = { - HowDoI = { - system_prompt = [[ - > /COPILOT_EXPLAIN - - You are gonna be asked for guidance about how to solve a problem or archeive a goal. For that your answers need to follow these rules: - - 1. Provide brief, consice and unambiguos responses. - 2. You need to response with an step by step list of actions needed to complete the task. - 3. **You never have to give an explicit answer**, instead provide a high level overview of how to complete the task. - 4. Unless explicity asked by the user, **you never have to provide code snippets** in your responses. Only provide code snippets when the user says so in each question. - 5. If the user ask for a code snippet, **prefer to respond in pseudo code**, unless the user explicity asked for a concrete language. - 6. You need to have into consideration good and clean code practices, code performance and other standards, comunicate in your response this considerations and common pitfalls to avoid. - 7. If possible, include how the user can test the task is completed successfully with the title "## Testing". - 8. Use markdawn syntax highlighting when possible. - 9. You are allowed to reference the following elements but without giving examples of usage (unless the user ask for it): - - Elements from the language syntaxis. - - Standard library of the lenguage. - - External libraries and/or frameworks. - - The idiomatic way of acomplish something in the language. - - Data structures and algorithms that could help complete the task. - - If you have multiple aproaches of how the task can be solved, insert the title "## Options", then generate separate list of task, each in the form of "### Option A", "### Option B", etc so he/her can have it into consideration. - The numbering of each list needs to be independen of each other, also provide only 1 list per aproach. - - The user can ask follow up question, which needs to follow the same rules. - ]] - }, - }, - question_header = " " .. vim.env.USER or "User" .. " ", - answer_header = " Copilot ", - auto_follow_cursor = false, - window = { - layout = 'float', -- 'vertical', 'horizontal', 'float', 'replace' - width = 0.8, -- fractional width of parent, or absolute width in columns when > 1 - height = 0.8, -- fractional height of parent, or absolute height in rows when > 1 - -- Options below only apply to floating windows - relative = 'editor', -- 'editor', 'win', 'cursor', 'mouse' - border = 'rounded', -- 'none', single', 'double', 'rounded', 'solid', 'shadow' - title = ' ', -- title of chat window - zindex = 1, -- determines if window is on top or below other floating windows - }, - }, - keys = { - { - "at", - function() - require("CopilotChat").toggle() - end, - desc = "Toggle window", - mode = { "n", "v" }, - }, - { - "aa", - function() - local input = vim.fn.input(" Quick Chat: ") - if input == "" then - return - end - require("CopilotChat").ask(input) - end, - desc = "Quick chat", - mode = { "n", "v" }, - }, - { - "ah", - function() - local input = vim.fn.input(" How do I...") - if input == "" then - return - end - - local chat = require("CopilotChat") - - local promptConfig = chat.prompts()["HowDoI"] - chat.ask(input, promptConfig) - end, - desc = "How do I...", - mode = { "n", "v" }, - }, - { - "aA", - function() - -- Pick a prompt using vim.ui.select - local actions = require("CopilotChat.actions") - - -- Pick prompt actions - actions.pick(actions.prompt_actions({}), { - prompt = " Prompts:", - } - ) - end, - desc = "Select action", - mode = { "n", "v" }, - }, - { - "ax", - function() - return require("CopilotChat").reset() - end, - desc = "Clear chat", - mode = { "n", "v" }, - }, - { - "al", - function() - return require("CopilotChat").log_level("debug") - end, - desc = "Set debug level", - }, - { - "ad", - "CopilotChatDocs", - desc = "Generate documentation", - mode = { "n", "v" }, - }, - } -} diff --git a/config/nvim/lua/aleidk/plugins-ide/completion.lua b/config/nvim/lua/aleidk/plugins-ide/completion.lua index c91e890..4153d4d 100644 --- a/config/nvim/lua/aleidk/plugins-ide/completion.lua +++ b/config/nvim/lua/aleidk/plugins-ide/completion.lua @@ -4,7 +4,6 @@ return { version = "*", dependencies = { "rafamadriz/friendly-snippets", - "giuxtaposition/blink-cmp-copilot", "folke/lazydev.nvim", { "saghen/blink.compat", version = "*", }, }, @@ -21,17 +20,6 @@ return { providers = { dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" }, lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, - copilot = { - name = "copilot", - module = "blink-cmp-copilot", - score_offset = 5, - enabled = function() - if vim.g.copilot_autocomplete_enabled == nil then - return false - end - return vim.g.copilot_autocomplete_enabled - end, - }, luasnip = { name = 'luasnip', module = 'blink.compat.source', @@ -46,7 +34,6 @@ return { compat = {}, completion = { enabled_providers = { - "copilot", "lsp", "path", "snippets", @@ -85,10 +72,6 @@ return { components = { kind_icon = { text = function(ctx) - if ctx.item.source_name == "copilot" then - ctx.kind_icon = require("aleidk.constants").icons.kinds.Copilot - end - return ctx.kind_icon .. ctx.icon_gap end, } From 7e4da5dff92bf8686db779d61a2585c1baf07594 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 25 Mar 2025 15:32:48 -0300 Subject: [PATCH 067/152] add helix config --- .dotter/global.toml | 5 +++- config/helix/config.toml | 56 +++++++++++++++++++++++++++++++++++++ config/helix/languages.toml | 3 ++ 3 files changed, 63 insertions(+), 1 deletion(-) create mode 100644 config/helix/config.toml create mode 100644 config/helix/languages.toml diff --git a/.dotter/global.toml b/.dotter/global.toml index f13e66e..1954a53 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -7,7 +7,7 @@ header = ".dotter/handlebars_helpers/header.rhai" # CLI package [cli] -depends = ["nvim", "zsh", "fzf", "starship"] +depends = ["helix", "nvim", "zsh", "fzf", "starship"] [cli.variables] nerd_font = "JetBrainsMono" @@ -45,6 +45,9 @@ depends = ["rust"] [nushell.files] "config/nushell" = "~/.config/nushell" +[helix.files] +"config/helix" = "~/.config/helix" + [nvim.files] "config/nvim" = "~/.config/nvim" [nvim.files."config/nvim/lua/aleidk/lazy.lua"] diff --git a/config/helix/config.toml b/config/helix/config.toml new file mode 100644 index 0000000..a51d166 --- /dev/null +++ b/config/helix/config.toml @@ -0,0 +1,56 @@ +theme = "catppuccin_macchiato" + +[keys.normal.g] +u = "switch_to_lowercase" +U = "switch_to_uppercase" + +# LSP actions +[keys.normal.space.l] +j = "goto_next_diag" +k = "goto_prev_diag" + +# Git +[keys.normal.space.g] +g = [ + ":new", + ":insert-output lazygit", + ":buffer-close!", + ":redraw", + ":reload-all" +] + +[editor] +line-number = "relative" +cursorline = true +color-modes = true +scrolloff = 15 +default-yank-register = "*" +bufferline = "multiple" +popup-border = "all" + + +[editor.cursor-shape] +insert = "bar" +normal = "block" +select = "underline" + +[editor.indent-guides] +render = true + +[editor.statusline] +left = ["mode", "spacer", "version-control", "file-type", "file-name","file-modification-indicator", "read-only-indicator", "spinner"] +center = [] +right = ["diagnostics", "position-percentage"] +mode.normal = "" +mode.insert = "" +mode.select = "" + +[editor.file-picker] +hidden = false + +[editor.lsp] +display-inlay-hints = true + +[editor.inline-diagnostics] +cursor-line = "hint" +other-lines = "error" diff --git a/config/helix/languages.toml b/config/helix/languages.toml new file mode 100644 index 0000000..036911f --- /dev/null +++ b/config/helix/languages.toml @@ -0,0 +1,3 @@ + +[[language]] +name = "rust" From cbf59bea4b5956755984457d77ee471f306081bb Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 26 Mar 2025 16:57:54 -0300 Subject: [PATCH 068/152] add zellij config --- config/ghostty/config | 91 ---- config/helix/config.toml | 9 + config/zellij/config.kdl | 619 ++++++++++++++++++---------- config/zellij/layouts/code.kdl | 21 + config/zellij/themes/catppuccin.kdl | 54 --- 5 files changed, 435 insertions(+), 359 deletions(-) create mode 100644 config/zellij/layouts/code.kdl delete mode 100644 config/zellij/themes/catppuccin.kdl diff --git a/config/ghostty/config b/config/ghostty/config index 4d1ff59..fb3ae5e 100644 --- a/config/ghostty/config +++ b/config/ghostty/config @@ -1,92 +1 @@ theme = catppuccin-macchiato - -# Common - -keybind = ctrl+space>o=write_selection_file:open -keybind = ctrl+space>shift+o=write_selection_file:paste - -keybind = ctrl+space>alt+o=write_scrollback_file:open -keybind = ctrl+space>alt+shift+o=write_scrollback_file:paste - -keybind = ctrl+comma=open_config -keybind = ctrl+space>shift+r=reload_config - -keybind = ctrl+shift+c=copy_to_clipboard -keybind = ctrl+shift+i=inspector:toggle -keybind = ctrl+shift+v=paste_from_clipboard -keybind = shift+insert=paste_from_selection - -# Navigation -keybind = alt+f4=close_window -keybind = ctrl+shift+w=close_surface -keybind = ctrl+space>shift+t=close_surface -keybind = ctrl+shift+n=new_window -keybind = ctrl+shift+q=quit - -keybind = ctrl+space>shift+f=toggle_fullscreen - -keybind = ctrl+alt+j=jump_to_prompt:1 -keybind = ctrl+alt+k=jump_to_prompt:-1 - -keybind = ctrl+shift+a=select_all -keybind = shift+right=adjust_selection:right -keybind = shift+down=adjust_selection:down -keybind = shift+up=adjust_selection:up -keybind = shift+left=adjust_selection:left - -keybind = shift+end=scroll_to_bottom -keybind = shift+home=scroll_to_top -keybind = shift+page_up=scroll_page_up -keybind = shift+page_down=scroll_page_down - -# Config -keybind = ctrl+equal=increase_font_size:1 -keybind = ctrl+minus=decrease_font_size:1 -keybind = ctrl+plus=increase_font_size:1 -keybind = ctrl+zero=reset_font_size - -# Splits -keybind = ctrl+space>s=new_split:right -keybind = ctrl+space>v=new_split:down - -keybind = ctrl+space>h=goto_split:left -keybind = ctrl+space>j=goto_split:bottom -keybind = ctrl+space>k=goto_split:top -keybind = ctrl+space>l=goto_split:right - -keybind = ctrl+space>left=goto_split:left -keybind = ctrl+space>down=goto_split:bottom -keybind = ctrl+space>up=goto_split:top -keybind = ctrl+space>right=goto_split:right - -keybind = ctrl+space>m=toggle_split_zoom - -keybind = super+ctrl+left_bracket=goto_split:previous -keybind = super+ctrl+right_bracket=goto_split:next - -keybind = super+ctrl+shift+right=resize_split:right,10 -keybind = super+ctrl+shift+down=resize_split:down,10 -keybind = super+ctrl+shift+up=resize_split:up,10 -keybind = super+ctrl+shift+left=resize_split:left,10 -keybind = ctrl+space>ctrl+zero=equalize_splits - -# Tabs -keybind = ctrl+space>one=goto_tab:1 -keybind = ctrl+space>two=goto_tab:2 -keybind = ctrl+space>three=goto_tab:3 -keybind = ctrl+space>four=goto_tab:4 -keybind = ctrl+space>five=goto_tab:5 -keybind = ctrl+space>six=goto_tab:6 -keybind = ctrl+space>seven=goto_tab:7 -keybind = ctrl+space>eight=goto_tab:8 -keybind = ctrl+space>nine=last_tab - -keybind = ctrl+page_up=previous_tab -keybind = ctrl+page_down=next_tab -keybind = ctrl+shift+left=previous_tab -keybind = ctrl+shift+right=next_tab -keybind = ctrl+space>shift+tab=previous_tab -keybind = ctrl+space>tab=next_tab - -keybind = ctrl+space>t=new_tab - diff --git a/config/helix/config.toml b/config/helix/config.toml index a51d166..f1a4ddf 100644 --- a/config/helix/config.toml +++ b/config/helix/config.toml @@ -19,6 +19,15 @@ g = [ ":reload-all" ] +[keys.normal.space] +e = [ + ':sh rm -f /tmp/unique-file', + ':insert-output yazi %{buffer_name} --chooser-file=/tmp/unique-file', + ':insert-output echo "\x1b[?1049h\x1b[?2004h" > /dev/tty', + ':open %sh{/bin/cat /tmp/unique-file}', + ':redraw', +] + [editor] line-number = "relative" cursorline = true diff --git a/config/zellij/config.kdl b/config/zellij/config.kdl index 6f6cd13..1d12d77 100644 --- a/config/zellij/config.kdl +++ b/config/zellij/config.kdl @@ -1,234 +1,360 @@ -// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" +// +// THIS FILE WAS AUTOGENERATED BY ZELLIJ, THE PREVIOUS FILE AT THIS LOCATION WAS COPIED TO: /home/aleidk/.config/zellij/config.kdl.bak +// + keybinds clear-defaults=true { normal { - // uncomment this and adjust key if using copy_on_select=false - // bind "Alt c" { Copy; } + bind "g" { + Run "lazygit" { + floating true + close_on_exit true + x "10%" + y "10%" + height "80%" + width "80%" + } + Resize "increase"; + SwitchToMode "locked"; + } } locked { - bind "Ctrl g" { SwitchToMode "Normal"; } - } - resize { - bind "Ctrl n" { SwitchToMode "Normal"; } - bind "h" "Left" { Resize "Increase Left"; } - bind "j" "Down" { Resize "Increase Down"; } - bind "k" "Up" { Resize "Increase Up"; } - bind "l" "Right" { Resize "Increase Right"; } - bind "H" { Resize "Decrease Left"; } - bind "J" { Resize "Decrease Down"; } - bind "K" { Resize "Decrease Up"; } - bind "L" { Resize "Decrease Right"; } - bind "=" "+" { Resize "Increase"; } - bind "-" { Resize "Decrease"; } + bind "Ctrl space" { SwitchToMode "normal"; } } pane { - bind "Ctrl p" { SwitchToMode "Normal"; } - bind "h" "Left" { MoveFocus "Left"; } - bind "l" "Right" { MoveFocus "Right"; } - bind "j" "Down" { MoveFocus "Down"; } - bind "k" "Up" { MoveFocus "Up"; } - bind "p" { SwitchFocus; } - bind "n" { NewPane; SwitchToMode "Normal"; } - bind "d" { NewPane "Down"; SwitchToMode "Normal"; } - bind "r" { NewPane "Right"; SwitchToMode "Normal"; } - bind "x" { CloseFocus; SwitchToMode "Normal"; } - bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; } - bind "z" { TogglePaneFrames; SwitchToMode "Normal"; } - bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; } - bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; } - bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;} - } - move { - bind "Ctrl h" { SwitchToMode "Normal"; } - bind "n" "Tab" { MovePane; } - bind "p" { MovePaneBackwards; } - bind "h" "Left" { MovePane "Left"; } - bind "j" "Down" { MovePane "Down"; } - bind "k" "Up" { MovePane "Up"; } - bind "l" "Right" { MovePane "Right"; } + bind "left" { MoveFocus "left"; } + bind "down" { MoveFocus "down"; } + bind "up" { MoveFocus "up"; } + bind "right" { MoveFocus "right"; } + bind "c" { SwitchToMode "renamepane"; PaneNameInput 0; } + bind "d" { NewPane "down"; SwitchToMode "locked"; } + bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "locked"; } + bind "f" { ToggleFocusFullscreen; SwitchToMode "locked"; } + bind "h" { MoveFocus "left"; } + bind "i" { TogglePanePinned; SwitchToMode "locked"; } + bind "j" { MoveFocus "down"; } + bind "k" { MoveFocus "up"; } + bind "l" { MoveFocus "right"; } + bind "n" { NewPane; SwitchToMode "locked"; } + bind "p" { SwitchToMode "normal"; } + bind "r" { NewPane "right"; SwitchToMode "locked"; } + bind "w" { ToggleFloatingPanes; SwitchToMode "locked"; } + bind "x" { CloseFocus; SwitchToMode "locked"; } + bind "z" { TogglePaneFrames; SwitchToMode "locked"; } + bind "tab" { SwitchFocus; } } tab { - bind "Ctrl t" { SwitchToMode "Normal"; } - bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; } - bind "h" "Left" "Up" "k" { GoToPreviousTab; } - bind "l" "Right" "Down" "j" { GoToNextTab; } - bind "n" { NewTab; SwitchToMode "Normal"; } - bind "x" { CloseTab; SwitchToMode "Normal"; } - bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; } - bind "1" { GoToTab 1; SwitchToMode "Normal"; } - bind "2" { GoToTab 2; SwitchToMode "Normal"; } - bind "3" { GoToTab 3; SwitchToMode "Normal"; } - bind "4" { GoToTab 4; SwitchToMode "Normal"; } - bind "5" { GoToTab 5; SwitchToMode "Normal"; } - bind "6" { GoToTab 6; SwitchToMode "Normal"; } - bind "7" { GoToTab 7; SwitchToMode "Normal"; } - bind "8" { GoToTab 8; SwitchToMode "Normal"; } - bind "9" { GoToTab 9; SwitchToMode "Normal"; } - bind "Tab" { ToggleTab; } + bind "left" { GoToPreviousTab; } + bind "down" { GoToNextTab; } + bind "up" { GoToPreviousTab; } + bind "right" { GoToNextTab; } + bind "1" { GoToTab 1; SwitchToMode "locked"; } + bind "2" { GoToTab 2; SwitchToMode "locked"; } + bind "4" { GoToTab 4; SwitchToMode "locked"; } + bind "5" { GoToTab 5; SwitchToMode "locked"; } + bind "6" { GoToTab 6; SwitchToMode "locked"; } + bind "7" { GoToTab 7; SwitchToMode "locked"; } + bind "8" { GoToTab 8; SwitchToMode "locked"; } + bind "9" { GoToTab 9; SwitchToMode "locked"; } + bind "[" { BreakPaneLeft; SwitchToMode "locked"; } + bind "]" { BreakPaneRight; SwitchToMode "locked"; } + bind "b" { BreakPane; SwitchToMode "locked"; } + bind "h" { GoToPreviousTab; } + bind "j" { GoToNextTab; } + bind "k" { GoToPreviousTab; } + bind "l" { GoToNextTab; } + bind "n" { NewTab; SwitchToMode "locked"; } + bind "r" { SwitchToMode "renametab"; TabNameInput 0; } + bind "s" { ToggleActiveSyncTab; SwitchToMode "locked"; } + bind "t" { SwitchToMode "normal"; } + bind "x" { CloseTab; SwitchToMode "locked"; } + bind "tab" { ToggleTab; } + } + resize { + bind "left" { Resize "Increase left"; } + bind "down" { Resize "Increase down"; } + bind "up" { Resize "Increase up"; } + bind "right" { Resize "Increase right"; } + bind "+" { Resize "Increase"; } + bind "-" { Resize "Decrease"; } + bind "=" { Resize "Increase"; } + bind "H" { Resize "Decrease left"; } + bind "J" { Resize "Decrease down"; } + bind "K" { Resize "Decrease up"; } + bind "L" { Resize "Decrease right"; } + bind "h" { Resize "Increase left"; } + bind "j" { Resize "Increase down"; } + bind "k" { Resize "Increase up"; } + bind "l" { Resize "Increase right"; } + bind "r" { SwitchToMode "normal"; } + } + move { + bind "left" { MovePane "left"; } + bind "down" { MovePane "down"; } + bind "up" { MovePane "up"; } + bind "right" { MovePane "right"; } + bind "h" { MovePane "left"; } + bind "j" { MovePane "down"; } + bind "k" { MovePane "up"; } + bind "l" { MovePane "right"; } + bind "m" { SwitchToMode "normal"; } + bind "n" { MovePane; } + bind "p" { MovePaneBackwards; } + bind "tab" { MovePane; } } scroll { - bind "Ctrl s" { SwitchToMode "Normal"; } - bind "e" { EditScrollback; SwitchToMode "Normal"; } - bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; } - bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } - bind "j" "Down" { ScrollDown; } - bind "k" "Up" { ScrollUp; } - bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } - bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } - bind "d" { HalfPageScrollDown; } - bind "u" { HalfPageScrollUp; } - // uncomment this and adjust key if using copy_on_select=false - // bind "Alt c" { Copy; } + bind "Alt left" { MoveFocusOrTab "left"; SwitchToMode "locked"; } + bind "Alt down" { MoveFocus "down"; SwitchToMode "locked"; } + bind "Alt up" { MoveFocus "up"; SwitchToMode "locked"; } + bind "Alt right" { MoveFocusOrTab "right"; SwitchToMode "locked"; } + bind "e" { EditScrollback; SwitchToMode "locked"; } + bind "f" { SwitchToMode "entersearch"; SearchInput 0; } + bind "Alt h" { MoveFocusOrTab "left"; SwitchToMode "locked"; } + bind "Alt j" { MoveFocus "down"; SwitchToMode "locked"; } + bind "Alt k" { MoveFocus "up"; SwitchToMode "locked"; } + bind "Alt l" { MoveFocusOrTab "right"; SwitchToMode "locked"; } + bind "s" { SwitchToMode "normal"; } } search { - bind "Ctrl s" { SwitchToMode "Normal"; } - bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; } - bind "j" "Down" { ScrollDown; } - bind "k" "Up" { ScrollUp; } - bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; } - bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; } - bind "d" { HalfPageScrollDown; } - bind "u" { HalfPageScrollUp; } - bind "n" { Search "down"; } - bind "p" { Search "up"; } bind "c" { SearchToggleOption "CaseSensitivity"; } - bind "w" { SearchToggleOption "Wrap"; } + bind "n" { Search "down"; } bind "o" { SearchToggleOption "WholeWord"; } - } - entersearch { - bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; } - bind "Enter" { SwitchToMode "Search"; } - } - renametab { - bind "Ctrl c" { SwitchToMode "Normal"; } - bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; } - } - renamepane { - bind "Ctrl c" { SwitchToMode "Normal"; } - bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; } + bind "p" { Search "up"; } + bind "w" { SearchToggleOption "Wrap"; } } session { - bind "Ctrl o" { SwitchToMode "Normal"; } - bind "Ctrl s" { SwitchToMode "Scroll"; } - bind "q" { Quit; } + bind "a" { + LaunchOrFocusPlugin "zellij:about" { + floating true + move_to_focused_tab true + } + SwitchToMode "locked" + } + bind "c" { + LaunchOrFocusPlugin "configuration" { + floating true + move_to_focused_tab true + } + SwitchToMode "locked" + } bind "d" { Detach; } + bind "o" { SwitchToMode "normal"; } + bind "p" { + LaunchOrFocusPlugin "plugin-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "locked" + } + bind "w" { + LaunchOrFocusPlugin "session-manager" { + floating true + move_to_focused_tab true + } + SwitchToMode "locked" + } } - tmux { - bind "[" { SwitchToMode "Scroll"; } - bind "Ctrl b" { Write 2; SwitchToMode "Normal"; } - bind "\"" { NewPane "Down"; SwitchToMode "Normal"; } - bind "%" { NewPane "Right"; SwitchToMode "Normal"; } - bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } - bind "c" { NewTab; SwitchToMode "Normal"; } - bind "," { SwitchToMode "RenameTab"; } - bind "p" { GoToPreviousTab; SwitchToMode "Normal"; } - bind "n" { GoToNextTab; SwitchToMode "Normal"; } - bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; } - bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; } - bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; } - bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; } - bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; } - bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; } - bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; } - bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; } - bind "o" { FocusNextPane; } - bind "d" { Detach; } - bind "Space" { NextSwapLayout; } - bind "x" { CloseFocus; SwitchToMode "Normal"; } - } - shared_except "locked" { - bind "Ctrl g" { SwitchToMode "Locked"; } - bind "Alt n" { NewPane; } - bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; } - bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; } - bind "Alt j" "Alt Down" { MoveFocus "Down"; } - bind "Alt k" "Alt Up" { MoveFocus "Up"; } - bind "Alt =" "Alt +" { Resize "Increase"; } + shared_among "normal" "locked" { + bind "Alt left" { MoveFocusOrTab "left"; } + bind "Alt down" { MoveFocus "down"; } + bind "Alt up" { MoveFocus "up"; } + bind "Alt right" { MoveFocusOrTab "right"; } + bind "Alt +" { Resize "Increase"; } bind "Alt -" { Resize "Decrease"; } - bind "Alt [" { PreviousSwapLayout; } - bind "Alt ]" { NextSwapLayout; } + bind "Alt =" { Resize "Increase"; } + bind "Alt {" { PreviousSwapLayout; } + bind "Alt }" { NextSwapLayout; } + bind "Alt f" { ToggleFloatingPanes; } + bind "Alt h" { MoveFocusOrTab "left"; } + bind "Alt i" { MoveTab "left"; } + bind "Alt j" { MoveFocus "down"; } + bind "Alt k" { MoveFocus "up"; } + bind "Alt l" { MoveFocusOrTab "right"; } + bind "Alt n" { NewPane; } + bind "Alt o" { MoveTab "right"; } } - shared_except "normal" "locked" { - bind "Enter" "Esc" { SwitchToMode "Normal"; } + + shared_except "locked" { + bind "Alt e" { + LaunchPlugin "filepicker" { + floating true // uncomment this to have the filepicker opened in a floating window + close_on_selection true // comment this out to have the filepicker remain open even after selecting a file + }; + } } - shared_except "pane" "locked" { - bind "Ctrl p" { SwitchToMode "Pane"; } + shared_except "locked" "renametab" "renamepane" { + bind "Ctrl q" { Quit; } } - shared_except "resize" "locked" { - bind "Ctrl n" { SwitchToMode "Resize"; } + shared_except "locked" "entersearch" { + bind "enter" { SwitchToMode "locked"; } } - shared_except "scroll" "locked" { - bind "Ctrl s" { SwitchToMode "Scroll"; } + shared_except "locked" "entersearch" "renametab" "renamepane" "prompt" "tmux" { + bind "Ctrl space" { SwitchToMode "locked"; } } - shared_except "session" "locked" { - bind "Ctrl o" { SwitchToMode "Session"; } + shared_except "locked" "entersearch" "renametab" "renamepane" { + bind "esc" { SwitchToMode "locked"; } } - shared_except "tab" "locked" { - bind "Ctrl t" { SwitchToMode "Tab"; } + shared_except "locked" "entersearch" "renametab" "renamepane" "move" { + bind "m" { SwitchToMode "move"; } } - shared_except "move" "locked" { - bind "Ctrl h" { SwitchToMode "Move"; } + shared_except "locked" "entersearch" "search" "renametab" "renamepane" "session" { + bind "o" { SwitchToMode "session"; } } - shared_except "tmux" "locked" { - bind "Ctrl b" { SwitchToMode "Tmux"; } + shared_except "locked" "tab" "entersearch" "renametab" "renamepane" { + bind "t" { SwitchToMode "tab"; } + } + shared_except "locked" "tab" "scroll" "entersearch" "renametab" "renamepane" { + bind "s" { SwitchToMode "scroll"; } + } + shared_among "normal" "resize" "tab" "scroll" "prompt" "tmux" { + bind "p" { SwitchToMode "pane"; } + } + shared_except "locked" "resize" "pane" "tab" "entersearch" "renametab" "renamepane" { + bind "r" { SwitchToMode "resize"; } + } + shared_among "scroll" "search" { + bind "PageDown" { PageScrollDown; } + bind "PageUp" { PageScrollUp; } + bind "left" { PageScrollUp; } + bind "down" { ScrollDown; } + bind "up" { ScrollUp; } + bind "right" { PageScrollDown; } + bind "Ctrl b" { PageScrollUp; } + bind "Ctrl c" { ScrollToBottom; SwitchToMode "locked"; } + bind "d" { HalfPageScrollDown; } + bind "Ctrl f" { PageScrollDown; } + bind "h" { PageScrollUp; } + bind "j" { ScrollDown; } + bind "k" { ScrollUp; } + bind "l" { PageScrollDown; } + bind "u" { HalfPageScrollUp; } + } + entersearch { + bind "Ctrl c" { SwitchToMode "scroll"; } + bind "esc" { SwitchToMode "scroll"; } + bind "enter" { SwitchToMode "search"; } + } + shared_among "entersearch" "prompt" "tmux" { + bind "Ctrl g" { SwitchToMode "locked"; } + } + renametab { + bind "esc" { UndoRenameTab; SwitchToMode "tab"; } + } + shared_among "renametab" "renamepane" { + bind "Ctrl c" { SwitchToMode "locked"; } + } + renamepane { + bind "esc" { UndoRenamePane; SwitchToMode "pane"; } } } +// Plugin aliases - can be used to change the implementation of Zellij +// changing these requires a restart to take effect plugins { - tab-bar { path "tab-bar"; } - status-bar { path "status-bar"; } - strider { path "strider"; } - compact-bar { path "compact-bar"; } + about location="zellij:about" + compact-bar location="zellij:compact-bar" + configuration location="zellij:configuration" + filepicker location="zellij:strider" { + cwd "/home/aleidk" + } + plugin-manager location="zellij:plugin-manager" + session-manager location="zellij:session-manager" + status-bar location="zellij:status-bar" + strider location="zellij:strider" + tab-bar location="zellij:tab-bar" + welcome-screen location="zellij:session-manager" { + welcome_screen true + } } +// Plugins to load in the background when a new session starts +// eg. "file:/path/to/my-plugin.wasm" +// eg. "https://example.com/my-plugin.wasm" +load_plugins { +} + +// Use a simplified UI without special fonts (arrow glyphs) +// Options: +// - true +// - false (Default) +// +simplified_ui true + +// Choose the theme that is specified in the themes section. +// Default: default +// +theme "catppuccin-macchiato" + +// Choose the base input mode of zellij. +// Default: normal +// +default_mode "locked" + +// Choose the path to the default shell that zellij will use for opening new panes +// Default: $SHELL +// +// default_shell "fish" + +// Choose the path to override cwd that zellij will use for opening new panes +// +// default_cwd "/tmp" + +// The name of the default layout to load on startup +// Default: "default" +// +// default_layout "compact" + +// The folder in which Zellij will look for layouts +// (Requires restart) +// +// layout_dir "/tmp" + +// The folder in which Zellij will look for themes +// (Requires restart) +// +// theme_dir "/tmp" + +// Toggle enabling the mouse mode. +// On certain configurations, or terminals this could +// potentially interfere with copying text. +// Options: +// - true (default) +// - false +// +// mouse_mode false + +// Toggle having pane frames around the panes +// Options: +// - true (default, enabled) +// - false +// +// pane_frames false + +// When attaching to an existing session with other users, +// should the session be mirrored (true) +// or should each user have their own cursor (false) +// (Requires restart) +// Default: false +// +// mirror_session true + // Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP // eg. when terminal window with an active zellij session is closed +// (Requires restart) // Options: // - detach (Default) // - quit -// +// // on_force_close "quit" - -// Send a request for a simplified ui (without arrow fonts) to plugins -// Options: -// - true -// - false (Default) -// -simplified_ui true - -// Choose the path to the default shell that zellij will use for opening new panes -// Default: $SHELL -// -// default_shell "fish" - -// Toggle between having pane frames around the panes -// Options: -// - true (default) -// - false -// -pane_frames false - -// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible -// Options: -// - true (default) -// - false -// -// auto_layout true - -// Choose the theme that is specified in the themes section. -// Default: default -// -theme "tokyo-night-storm" - -// The name of the default layout to load on startup -// Default: "default" -// -// default_layout "compact" - -// Choose the mode that zellij uses when starting up. -// Default: normal -// -// default_mode "locked" - + +// Configure the scroll back buffer size +// This is the number of lines zellij stores for each pane in the scroll back +// buffer. Excess number of lines are discarded in a FIFO fashion. +// (Requires restart) +// Valid values: positive integers +// Default value: 10000 +// +// scroll_buffer_size 10000 + // Provide a command to execute when copying text. The text will be piped to // the stdin of the program to perform the copy. This can be used with // terminal emulators which do not support the OSC 52 ANSI control sequence @@ -238,37 +364,102 @@ theme "tokyo-night-storm" // copy_command "xclip -selection clipboard" // x11 // copy_command "wl-copy" // wayland // copy_command "pbcopy" // osx - +// +// copy_command "pbcopy" + // Choose the destination for copied text // Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. // Does not apply when using copy_command. // Options: // - system (default) // - primary -// +// // copy_clipboard "primary" - -// Enable or disable automatic copy (and clear) of selection when releasing mouse + +// Enable automatic copying (and clearing) of selection when releasing mouse // Default: true -// -// copy_on_select false - +// +// copy_on_select true + // Path to the default editor to use to edit pane scrollbuffer // Default: $EDITOR or $VISUAL -// // scrollback_editor "/usr/bin/vim" - -// When attaching to an existing session with other users, -// should the session be mirrored (true) -// or should each user have their own cursor (false) + +// A fixed name to always give the Zellij session. +// Consider also setting `attach_to_session true,` +// otherwise this will error if such a session exists. +// Default: +// +// session_name "My singleton session" + +// When `session_name` is provided, attaches to that session +// if it is already running or creates it otherwise. // Default: false -// -// mirror_session true - -// The folder in which Zellij will look for layouts -// -// layout_dir "/path/to/my/layout_dir" - -// The folder in which Zellij will look for themes -// -// theme_dir "/path/to/my/theme_dir" +// +attach_to_session true + +// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible +// Options: +// - true (default) +// - false +// +// auto_layout false + +// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected +// Options: +// - true (default) +// - false +// +// session_serialization false + +// Whether pane viewports are serialized along with the session, default is false +// Options: +// - true +// - false (default) +// +// serialize_pane_viewport false + +// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 +// defaults to the scrollback size. If this number is higher than the scrollback size, it will +// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. +// +// scrollback_lines_to_serialize 10000 + +// Enable or disable the rendering of styled and colored underlines (undercurl). +// May need to be disabled for certain unsupported terminals +// (Requires restart) +// Default: true +// +// styled_underlines false + +// How often in seconds sessions are serialized +// +// serialization_interval 10000 + +// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know +// metadata info on this session) +// (Requires restart) +// Default: false +// +// disable_session_metadata false + +// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it) +// (Requires restart) +// Default: true (if the host terminal supports it) +// +// support_kitty_keyboard_protocol false + +// Whether to stack panes when resizing beyond a certain size +// Default: true +// +// stacked_resize false + +// Whether to show tips on startup +// Default: true +// +show_startup_tips false + +// Whether to show release notes on first version run +// Default: true +// +// show_release_notes false diff --git a/config/zellij/layouts/code.kdl b/config/zellij/layouts/code.kdl new file mode 100644 index 0000000..827ab05 --- /dev/null +++ b/config/zellij/layouts/code.kdl @@ -0,0 +1,21 @@ +layout { + tab name="Code" focus=true hide_floating_panes=true { + pane size=1 borderless=true { + plugin location="zellij:tab-bar" + } + pane split_direction="vertical" { + pane edit="src/main.rs" size="60%" focus=true + pane size="40%" { + pane command="just" { + args "dev" + start_suspended true + } + pane size="50%" + } + } + pane size=1 borderless=true { + plugin location="zellij:status-bar" + } + } +} + diff --git a/config/zellij/themes/catppuccin.kdl b/config/zellij/themes/catppuccin.kdl deleted file mode 100644 index 7e2ce47..0000000 --- a/config/zellij/themes/catppuccin.kdl +++ /dev/null @@ -1,54 +0,0 @@ -themes { - catppuccin-frappe { - fg 198 208 245 - bg 98 104 128 - black 41 44 60 - red 231 130 132 - green 166 209 137 - yellow 229 200 144 - blue 140 170 238 - magenta 244 184 228 - cyan 153 209 219 - white 198 208 245 - orange 239 159 118 - } - catppuccin-latte { - fg 172 176 190 - bg 172 176 190 - black 76 79 105 - red 210 15 57 - green 64 160 43 - yellow 223 142 29 - blue 30 102 245 - magenta 234 118 203 - cyan 4 165 229 - white 220 224 232 - orange 254 100 11 - } - catppuccin-macchiato { - fg 202 211 245 - bg 91 96 120 - black 30 32 48 - red 237 135 150 - green 166 218 149 - yellow 238 212 159 - blue 138 173 244 - magenta 245 189 230 - cyan 145 215 227 - white 202 211 245 - orange 245 169 127 - } - catppuccin-mocha { - fg 205 214 244 - bg 88 91 112 - black 24 24 37 - red 243 139 168 - green 166 227 161 - yellow 249 226 175 - blue 137 180 250 - magenta 245 194 231 - cyan 137 220 235 - white 205 214 244 - orange 250 179 135 - } -} From 895b404943f895c0d6c64eb88aeeaafc4cec2115 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 31 Mar 2025 10:37:45 -0300 Subject: [PATCH 069/152] start rewrite nvim config for v0.11 from scratch --- .dotter/global.toml | 1 + config/nvim_unstable/init.lua | 31 ++++ config/nvim_unstable/lsp/rust_analyzer.lua | 5 + config/nvim_unstable/lua/aleidk/autocmds.lua | 19 +++ config/nvim_unstable/lua/aleidk/options.lua | 161 ++++++++++++++++++ .../lua/aleidk/plugins/colorscheme.lua | 57 +++++++ .../nvim_unstable/lua/aleidk/plugins/init.lua | 6 + .../lua/aleidk/plugins/treesitter.lua | 84 +++++++++ config/zsh/aliases/nvim.zsh | 1 + 9 files changed, 365 insertions(+) create mode 100644 config/nvim_unstable/init.lua create mode 100644 config/nvim_unstable/lsp/rust_analyzer.lua create mode 100644 config/nvim_unstable/lua/aleidk/autocmds.lua create mode 100644 config/nvim_unstable/lua/aleidk/options.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/init.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/treesitter.lua diff --git a/.dotter/global.toml b/.dotter/global.toml index 1954a53..eeb6499 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -50,6 +50,7 @@ depends = ["rust"] [nvim.files] "config/nvim" = "~/.config/nvim" +"config/nvim_unstable" = "~/.config/nvim-unstable" [nvim.files."config/nvim/lua/aleidk/lazy.lua"] target = "~/.config/nvim/lua/aleidk/lazy.lua" type = "template" diff --git a/config/nvim_unstable/init.lua b/config/nvim_unstable/init.lua new file mode 100644 index 0000000..856c8a0 --- /dev/null +++ b/config/nvim_unstable/init.lua @@ -0,0 +1,31 @@ +-- Bootstrap lazy.nvim +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) + +require("aleidk.options") + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "aleidk/plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/config/nvim_unstable/lsp/rust_analyzer.lua b/config/nvim_unstable/lsp/rust_analyzer.lua new file mode 100644 index 0000000..b2b8a12 --- /dev/null +++ b/config/nvim_unstable/lsp/rust_analyzer.lua @@ -0,0 +1,5 @@ +return { + cmd = { "rust-analyzer" }, + filetypes = { 'rust' }, + root_markers = { "cargo.toml" }, +} diff --git a/config/nvim_unstable/lua/aleidk/autocmds.lua b/config/nvim_unstable/lua/aleidk/autocmds.lua new file mode 100644 index 0000000..54e2c9b --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/autocmds.lua @@ -0,0 +1,19 @@ +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + + if not client then + return + end + + -- Prefer LSP folding if client supports it + if client:supports_method('textDocument/foldingRange') then + local win = vim.api.nvim_get_current_win() + vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' + end + + if client:supports_method 'textDocument/completion' then + vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true }) + end + end, +}) diff --git a/config/nvim_unstable/lua/aleidk/options.lua b/config/nvim_unstable/lua/aleidk/options.lua new file mode 100644 index 0000000..ed7f0bf --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/options.lua @@ -0,0 +1,161 @@ +-- [[ Setting options ]] +-- See `:help vim.o` + +-- Set as the leader key +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +vim.o.diffopt = "vertical,closeoff,filler" + +local opt = vim.opt + +vim.schedule(function() + vim.opt.clipboard = 'unnamedplus' +end) + +vim.o.winborder = 'rounded' +opt.breakindent = true -- Every wrapped line will continue visually indented +opt.autowrite = true -- Enable auto write +-- opt.completeopt = "menu,menuone,noselect" +vim.o.completeopt = 'noselect,menu,menuone,noinsert,popup' +opt.conceallevel = 2 -- Hide * markup for bold and italic +opt.confirm = true -- Confirm to save changes before exiting modified buffer +opt.cursorline = true -- Enable highlighting of the current line +opt.expandtab = true -- Use spaces instead of tabs +opt.formatoptions = "jcroqlnt" -- tcqj +opt.grepformat = "%f:%l:%c:%m" +opt.grepprg = "rg --vimgrep" +opt.ignorecase = true -- Ignore case +opt.inccommand = "nosplit" -- preview incremental substitute +opt.laststatus = 0 +vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. +vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } +opt.mouse = "a" -- Enable mouse mode +opt.number = true -- Print line number +opt.pumblend = 10 -- Popup blend +opt.pumheight = 10 -- Maximum number of entries in a popup +opt.relativenumber = true -- Relative line numbers +opt.scrolloff = 15 -- Lines of context +opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } +opt.shiftround = true -- Round indent +opt.shiftwidth = 2 -- Size of an indent +-- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages +opt.showmode = false -- Don't show mode since we have a statusline +opt.sidescrolloff = 8 -- Columns of context +opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time +opt.smartcase = true -- Don't ignore case with capitals +opt.smartindent = true -- Insert indents automatically +opt.spelllang = { "en" } +opt.splitbelow = true -- Put new windows below current +opt.splitright = true -- Put new windows right of current +opt.tabstop = 2 -- Number of spaces tabs count for +opt.termguicolors = true -- True color support +opt.timeoutlen = 300 +opt.undofile = true +opt.undolevels = 10000 +opt.updatetime = 200 -- Save swap file and trigger CursorHold +opt.wildmode = "longest,list:full" -- Command-line completion mode +opt.winminwidth = 5 -- Minimum window width +opt.wrap = false -- Disable line wrap +vim.opt.inccommand = 'split' -- Preview substitutions live, as you type! + +vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" + +-- Nice and simple folding: +vim.o.foldenable = true +vim.o.foldlevel = 99 +vim.o.foldmethod = "expr" +vim.o.foldexpr = "v:lua.vim.treesitter.foldexpr()" +vim.opt.fillchars:append({ fold = " " }) + +local fn = vim.fn + +-- Quickfix customization +function _G.qftf(info) + local items + local ret = {} + -- The name of item in list is based on the directory of quickfix window. + -- Change the directory for quickfix window make the name of item shorter. + -- It's a good opportunity to change current directory in quickfixtextfunc :) + -- + -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window + -- local root = getRootByAlterBufnr(alterBufnr) + -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) + -- + if info.quickfix == 1 then + items = fn.getqflist({ id = info.id, items = 0 }).items + else + items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items + end + local limit = 31 + local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" + local validFmt = "%s │%5d:%-3d│%s %s" + for i = info.start_idx, info.end_idx do + local e = items[i] + local fname = "" + local str + if e.valid == 1 then + if e.bufnr > 0 then + fname = fn.bufname(e.bufnr) + if fname == "" then + fname = "[No Name]" + else + fname = fname:gsub("^" .. vim.env.HOME, "~") + end + -- char in fname may occur more than 1 width, ignore this issue in order to keep performance + if #fname <= limit then + fname = fnameFmt1:format(fname) + else + fname = fnameFmt2:format(fname:sub(1 - limit)) + end + end + local lnum = e.lnum > 99999 and -1 or e.lnum + local col = e.col > 999 and -1 or e.col + local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() + str = validFmt:format(fname, lnum, col, qtype, e.text) + else + str = e.text + end + table.insert(ret, str) + end + return ret +end + +-- TODO: how to customize? +vim.o.qftf = "{info -> v:lua._G.qftf(info)}" + +vim.filetype.add({ + -- Detect and assign filetype based on the extension of the filename + extension = { + mdx = "mdx", + log = "log", + conf = "conf", + env = "dotenv", + }, + -- Detect and apply filetypes based on the entire filename + filename = { + [".env"] = "dotenv", + ["env"] = "dotenv", + ["tsconfig.json"] = "jsonc", + }, + -- Detect and apply filetypes based on certain patterns of the filenames + pattern = { + -- INFO: Match filenames like - ".env.example", ".env.local" and so on + ["%.env%.[%w_.-]+"] = "dotenv", + [".*%.blade%.php"] = "blade", + [".*%.hurl.*"] = "hurl", + [".*/hypr/.*%.conf"] = "hyprlang", + }, +}) + +-- ╭─────────────────────────────────────────────────────────╮ +-- │ LSP │ +-- ╰─────────────────────────────────────────────────────────╯ + +vim.lsp.enable({ + "rust_analyzer" +}) + +vim.diagnostic.config({ + virtual_lines = { current_line = true } +}) diff --git a/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua b/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua new file mode 100644 index 0000000..af5c7fc --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua @@ -0,0 +1,57 @@ +return { -- Change colors.none if not using a transparent background + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + config = function() + local utils = require("catppuccin.utils.colors") + + local opts = { + flavour = "macchiato", + transparent_background = true, + integrations = { + aerial = true, + blink_cmp = true, + cmp = true, + gitsigns = true, + indent_blankline = { enabled = true, scope_color = "text", }, + lsp_trouble = true, + mason = true, + noice = true, + notify = true, + }, + custom_highlights = function(colors) + return { + -- Fix colors for cmp + Pmenu = { bg = colors.none, blend = 0 }, + FloatBorder = { bg = colors.none }, + CmpItemMenu = { fg = colors.text, bg = colors.none }, + -- dadbod-ui + NotificationInfo = { bg = colors.none, fg = colors.text }, + NotificationWarning = { bg = colors.none, fg = colors.yellow }, + NotificationError = { bg = colors.none, fg = colors.red }, + + -- for word diff in previews + GitSignsAddInline = { + fg = colors.teal, + bg = utils.darken(colors.teal, 0.4), + style = { "bold" }, + }, + GitSignsDeleteInline = { + fg = colors.red, + bg = utils.darken(colors.red, 0.4), + style = { "bold" }, + }, + GitSignsChangeInline = { + fg = colors.mauve, + bg = utils.darken(colors.mauve, 0.4), + style = { "bold" }, + }, + GitSignsDeleteVirtLn = { bg = colors.none, fg = colors.red }, + } + end, + } + + require("catppuccin").setup(opts) + vim.cmd.colorscheme("catppuccin-macchiato") + end, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/init.lua b/config/nvim_unstable/lua/aleidk/plugins/init.lua new file mode 100644 index 0000000..546a909 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/init.lua @@ -0,0 +1,6 @@ +return { + 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically + + + +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/treesitter.lua b/config/nvim_unstable/lua/aleidk/plugins/treesitter.lua new file mode 100644 index 0000000..e281176 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/treesitter.lua @@ -0,0 +1,84 @@ +return { + -- Highlight, edit, and navigate code + "nvim-treesitter/nvim-treesitter", + event = { "BufReadPost", "BufNewFile", "BufWritePre", "VeryLazy" }, + dependencies = { + "nvim-treesitter/nvim-treesitter-textobjects", + "JoosepAlviste/nvim-ts-context-commentstring", + "nvim-treesitter/nvim-treesitter-context", + { "windwp/nvim-ts-autotag", opts = {} }, + }, + build = ":TSUpdate", + config = function() + ---@diagnostic disable-next-line: missing-fields + require("nvim-treesitter.configs").setup({ + -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) + auto_install = true, + highlight = { enable = true }, + indent = { enable = true }, + incremental_selection = { + enable = true, + }, + textobjects = { + select = { + enable = true, + lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["aa"] = "@parameter.outer", + ["ia"] = "@parameter.inner", + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_previous = { -- current or last start of object + ["[["] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, + ["[f"] = "@function.outer", + ["[c"] = "@class.outer", + }, + goto_next = { -- next object end + ["]]"] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, + ["]f"] = "@function.outer", -- current function end + ["]c"] = "@class.outer", + }, + }, + swap = { + enable = true, + swap_next = { + ["ln"] = "@parameter.inner", + }, + swap_previous = { + ["lN"] = "@parameter.inner", + }, + }, + }, + -- autotag = { enable = true }, + }) + + require('ts_context_commentstring').setup { + enable_autocmd = false, + } + + local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move" + + -- Repeat movement with ; and , + -- ensure , goes forward and ; goes backward regardless of the last direction + vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_next) + vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_previous) + + -- Optionally, make builtin f, F, t, T also repeatable with ; and , + vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t_expr, { expr = true }) + vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T_expr, { expr = true }) + + vim.keymap.set("n", "[u", function() + require("treesitter-context").go_to_context() + end, { silent = true, noremap = true, desc = "Go up when context is out of view" }) + end, +} diff --git a/config/zsh/aliases/nvim.zsh b/config/zsh/aliases/nvim.zsh index 5259ff9..4dc86ec 100644 --- a/config/zsh/aliases/nvim.zsh +++ b/config/zsh/aliases/nvim.zsh @@ -1,5 +1,6 @@ alias \ vi='nvim' \ + vi-unstable='NVIM_APPNAME=nvim-unstable nvim' \ vi-astro='NVIM_APPNAME=Distro-AstroNvim nvim' \ vi-lazy='NVIM_APPNAME=LazyVim nvim' From a3a262c5768392b2af953436d8eb44713422456a Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 1 Apr 2025 10:26:07 -0300 Subject: [PATCH 070/152] restore ghostty config --- config/ghostty/config | 91 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/config/ghostty/config b/config/ghostty/config index fb3ae5e..4d1ff59 100644 --- a/config/ghostty/config +++ b/config/ghostty/config @@ -1 +1,92 @@ theme = catppuccin-macchiato + +# Common + +keybind = ctrl+space>o=write_selection_file:open +keybind = ctrl+space>shift+o=write_selection_file:paste + +keybind = ctrl+space>alt+o=write_scrollback_file:open +keybind = ctrl+space>alt+shift+o=write_scrollback_file:paste + +keybind = ctrl+comma=open_config +keybind = ctrl+space>shift+r=reload_config + +keybind = ctrl+shift+c=copy_to_clipboard +keybind = ctrl+shift+i=inspector:toggle +keybind = ctrl+shift+v=paste_from_clipboard +keybind = shift+insert=paste_from_selection + +# Navigation +keybind = alt+f4=close_window +keybind = ctrl+shift+w=close_surface +keybind = ctrl+space>shift+t=close_surface +keybind = ctrl+shift+n=new_window +keybind = ctrl+shift+q=quit + +keybind = ctrl+space>shift+f=toggle_fullscreen + +keybind = ctrl+alt+j=jump_to_prompt:1 +keybind = ctrl+alt+k=jump_to_prompt:-1 + +keybind = ctrl+shift+a=select_all +keybind = shift+right=adjust_selection:right +keybind = shift+down=adjust_selection:down +keybind = shift+up=adjust_selection:up +keybind = shift+left=adjust_selection:left + +keybind = shift+end=scroll_to_bottom +keybind = shift+home=scroll_to_top +keybind = shift+page_up=scroll_page_up +keybind = shift+page_down=scroll_page_down + +# Config +keybind = ctrl+equal=increase_font_size:1 +keybind = ctrl+minus=decrease_font_size:1 +keybind = ctrl+plus=increase_font_size:1 +keybind = ctrl+zero=reset_font_size + +# Splits +keybind = ctrl+space>s=new_split:right +keybind = ctrl+space>v=new_split:down + +keybind = ctrl+space>h=goto_split:left +keybind = ctrl+space>j=goto_split:bottom +keybind = ctrl+space>k=goto_split:top +keybind = ctrl+space>l=goto_split:right + +keybind = ctrl+space>left=goto_split:left +keybind = ctrl+space>down=goto_split:bottom +keybind = ctrl+space>up=goto_split:top +keybind = ctrl+space>right=goto_split:right + +keybind = ctrl+space>m=toggle_split_zoom + +keybind = super+ctrl+left_bracket=goto_split:previous +keybind = super+ctrl+right_bracket=goto_split:next + +keybind = super+ctrl+shift+right=resize_split:right,10 +keybind = super+ctrl+shift+down=resize_split:down,10 +keybind = super+ctrl+shift+up=resize_split:up,10 +keybind = super+ctrl+shift+left=resize_split:left,10 +keybind = ctrl+space>ctrl+zero=equalize_splits + +# Tabs +keybind = ctrl+space>one=goto_tab:1 +keybind = ctrl+space>two=goto_tab:2 +keybind = ctrl+space>three=goto_tab:3 +keybind = ctrl+space>four=goto_tab:4 +keybind = ctrl+space>five=goto_tab:5 +keybind = ctrl+space>six=goto_tab:6 +keybind = ctrl+space>seven=goto_tab:7 +keybind = ctrl+space>eight=goto_tab:8 +keybind = ctrl+space>nine=last_tab + +keybind = ctrl+page_up=previous_tab +keybind = ctrl+page_down=next_tab +keybind = ctrl+shift+left=previous_tab +keybind = ctrl+shift+right=next_tab +keybind = ctrl+space>shift+tab=previous_tab +keybind = ctrl+space>tab=next_tab + +keybind = ctrl+space>t=new_tab + From 41327778ea246346fca6d9058c76ebdb62a951e6 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 1 Apr 2025 11:36:39 -0300 Subject: [PATCH 071/152] add keymaps to vim unstable --- .stylua.toml | 12 +++++++ config/nvim_unstable/init.lua | 1 + config/nvim_unstable/lua/aleidk/keymaps.lua | 36 +++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 .stylua.toml create mode 100644 config/nvim_unstable/lua/aleidk/keymaps.lua diff --git a/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..f0f7a59 --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,12 @@ +syntax = "All" +column_width = 120 +line_endings = "Unix" +indent_type = "indent_type" +indent_width = 2 +quote_style = "AutoPreferDouble" +call_parentheses = "Always" +collapse_simple_statement = "ConditionalOnly" +space_after_function_names = "Never" + +[sort_requires] +enabled = true diff --git a/config/nvim_unstable/init.lua b/config/nvim_unstable/init.lua index 856c8a0..329586b 100644 --- a/config/nvim_unstable/init.lua +++ b/config/nvim_unstable/init.lua @@ -16,6 +16,7 @@ end vim.opt.rtp:prepend(lazypath) require("aleidk.options") +require("aleidk.keymaps") -- Setup lazy.nvim require("lazy").setup({ diff --git a/config/nvim_unstable/lua/aleidk/keymaps.lua b/config/nvim_unstable/lua/aleidk/keymaps.lua new file mode 100644 index 0000000..8d23432 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/keymaps.lua @@ -0,0 +1,36 @@ +-- stylua: ignore start +-- QoL normalization's +vim.keymap.set("n", "Q", "", {}) +vim.keymap.set({ "n", "v" }, "", "", { desc = "Prevent cursor movement", silent = true }) +vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", + { desc = "Move cursor regardless of word wrap", expr = true, silent = true }) +vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", + { desc = "Move cursor regardless of word wrap", expr = true, silent = true }) +vim.keymap.set("n", "J", "mzJ`z", { desc = "Keep cursor in column while joining lines", silent = true }) + +vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) +vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) +vim.keymap.set("n", "n", "nzzzv", { desc = "Keep cursor centered while searching", silent = true }) +vim.keymap.set("n", "N", "Nzzzv", { desc = "Keep cursor centered while searching", silent = true }) + +-- Utils +vim.keymap.set("n", "|", ":vs", { desc = "Create vsplit", silent = true }) +vim.keymap.set("n", "°", ":sp", { desc = "Create split", silent = true }) + +vim.keymap.set("v", "p", [["_dP]], { desc = "Paste without lossing yanked text", silent = true }) +vim.keymap.set("v", "J", ":m '>+1gv=gv", { desc = "Move selection down", silent = true }) +vim.keymap.set("v", "K", ":m '<-2gv=gv", { desc = "Move selection up", silent = true }) +vim.keymap.set("n", "uh", ":nohl", { desc = "Remove search highlight", silent = true }) + +-- Buffer manipulation +vim.keymap.set("n", "bc", "bd", { desc = "Close buffer", silent = true }) +vim.keymap.set("n", "bh", "bp", { desc = "Prev buffer", silent = true }) +vim.keymap.set("n", "bl", "bn", { desc = "Next buffer", silent = true }) +vim.keymap.set("n", "bA", "bufdo bd", { desc = "Close all buffers", silent = true }) + +vim.keymap.set("n", "", "h", { desc = "Move to left window", silent = true }) +vim.keymap.set("n", "", "j", { desc = "Move to bottom window", silent = true }) +vim.keymap.set("n", "", "k", { desc = "Move to top window", silent = true }) +vim.keymap.set("n", "", "l", { desc = "Move to right window", silent = true }) + +-- stylua: ignore end From 93027a59a2196df125d2d08f13d17b574469272e Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 1 Apr 2025 14:44:36 -0300 Subject: [PATCH 072/152] add rest of plugins from previous config --- config/nvim_unstable/lua/aleidk/constants.lua | 63 +++++++++ .../lua/aleidk/plugins/bookmarks.lua | 38 ++++++ .../lua/aleidk/plugins/comments.lua | 24 ++++ .../lua/aleidk/plugins/database.lua | 44 +++++++ .../lua/aleidk/plugins/doc-gen.lua | 15 +++ .../lua/aleidk/plugins/file-explorer.lua | 33 +++++ .../lua/aleidk/plugins/formatter.lua | 124 ++++++++++++++++++ .../nvim_unstable/lua/aleidk/plugins/git.lua | 52 ++++++++ .../lua/aleidk/plugins/indent-blankline.lua | 30 +++++ .../nvim_unstable/lua/aleidk/plugins/init.lua | 38 +++++- .../lua/aleidk/plugins/linters.lua | 25 ++++ .../lua/aleidk/plugins/luasnip.lua | 27 ++++ .../lua/aleidk/plugins/markdown.lua | 15 +++ .../lua/aleidk/plugins/remote-sshfs.lua | 59 +++++++++ .../lua/aleidk/plugins/trouble.lua | 93 +++++++++++++ .../lua/aleidk/plugins/typescript-tools.lua | 18 +++ 16 files changed, 697 insertions(+), 1 deletion(-) create mode 100644 config/nvim_unstable/lua/aleidk/constants.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/comments.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/database.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/doc-gen.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/formatter.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/git.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/linters.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/luasnip.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/markdown.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/trouble.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua diff --git a/config/nvim_unstable/lua/aleidk/constants.lua b/config/nvim_unstable/lua/aleidk/constants.lua new file mode 100644 index 0000000..52cdd9f --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/constants.lua @@ -0,0 +1,63 @@ +return { + icons = { + misc = { + pint = " ", + }, + dap = { + Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" }, + Breakpoint = " ", + BreakpointCondition = " ", + BreakpointRejected = { " ", "DiagnosticError" }, + LogPoint = ".>", + }, + diagnostics = { + Error = " ", + Warn = " ", + Hint = " ", + Info = " ", + }, + git = { + added = " ", + modified = " ", + removed = " ", + branch = "", + }, + kinds = { + Array = " ", + Boolean = " ", + Class = " ", + Color = " ", + Constant = " ", + Constructor = " ", + Copilot = " ", + Enum = " ", + EnumMember = " ", + Event = " ", + Field = " ", + File = " ", + Folder = " ", + Function = " ", + Interface = " ", + Key = " ", + Keyword = " ", + Method = " ", + Module = " ", + Namespace = " ", + Null = " ", + Number = " ", + Object = " ", + Operator = " ", + Package = " ", + Property = " ", + Reference = " ", + Snippet = " ", + String = " ", + Struct = " ", + Text = " ", + TypeParameter = " ", + Unit = " ", + Value = " ", + Variable = " ", + }, + }, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua b/config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua new file mode 100644 index 0000000..a68f973 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua @@ -0,0 +1,38 @@ +local function select_or_create(search) + local grapple = require("grapple") + + if grapple.exists(search) then + grapple.select(search) + else + grapple.tag() + end +end + +return { + "cbochs/grapple.nvim", + dependencies = { + { "nvim-tree/nvim-web-devicons", lazy = true }, + }, + lazy = false, + cmd = "Grapple", + config = function() + local telescope = require("telescope") + telescope.load_extension("grapple") + end, + keys = { + { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, + { "D", "Grapple reset", desc = "Delete all bookmarks" }, + { "t", "Grapple toggle_tags", desc = "Toggle bookmarks window" }, + { "T", "Grapple toggle_scopes", desc = "Toggle scopes window" }, + { "n", "Grapple cycle forward", desc = "Next bookmark" }, + { "N", "Grapple cycle backward", desc = "Prev bookmark" }, + { "j", function() select_or_create({ index = 1 }) end, desc = "Go or create bookmark 1" }, + { "k", function() select_or_create({ index = 2 }) end, desc = "Go or create bookmark 2" }, + { "l", function() select_or_create({ index = 3 }) end, desc = "Go or create bookmark 3" }, + { "ñ", function() select_or_create({ index = 4 }) end, desc = "Go or create bookmark 4" }, + { "J", "Grapple tag index=1", desc = "Override bookmark 1" }, + { "K", "Grapple tag index=2", desc = "Override bookmark 2" }, + { "L", "Grapple tag index=3", desc = "Override bookmark 3" }, + { "Ñ", "Grapple tag index=4", desc = "Override bookmark 4" }, + }, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/comments.lua b/config/nvim_unstable/lua/aleidk/plugins/comments.lua new file mode 100644 index 0000000..876a4ed --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/comments.lua @@ -0,0 +1,24 @@ +return { + { + "LudoPinelli/comment-box.nvim", + opts = { + outer_blank_lines = true, + }, + keys = { + { "gcb", function() require("comment-box").lcbox() end, { desc = "Create a comment box", mode = { "n", "v" }, } }, + { "gcl", function() require("comment-box").llline() end, { desc = "Create a comment line", mode = { "n", "v" }, } }, + }, + }, + { + "folke/todo-comments.nvim", + cmd = { "TodoTrouble", "TodoTelescope" }, + event = { "BufReadPost", "BufNewFile" }, + config = true, + keys = { + { "]t", function() require("todo-comments").jump_next() end, desc = "Next todo comment" }, + { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous todo comment" }, + { "ft", "TodoTrouble", desc = "Find todos (Trouble)" }, + { "fT", "TodoTelescope", desc = "Find todos (Telescope)" }, + }, + } +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/database.lua b/config/nvim_unstable/lua/aleidk/plugins/database.lua new file mode 100644 index 0000000..175697b --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/database.lua @@ -0,0 +1,44 @@ +return { + "kristijanhusak/vim-dadbod-ui", + dependencies = { + { "tpope/vim-dadbod", lazy = true }, + { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, + }, + cmd = { + "DBUI", + "DBUIToggle", + "DBUIAddConnection", + "DBUIFindBuffer", + }, + keys = { + { "ud", "DBUIToggle", desc = "Toggle DB UI" }, + }, + init = function() + -- Your DBUI configuration + vim.g.db_ui_use_nerd_fonts = 1 + vim.g.db_ui_force_echo_notifications = 1 + + vim.api.nvim_create_autocmd("FileType", { + pattern = { + "sql", + "mysql", + "plsql", + }, + command = [[setlocal omnifunc=vim_dadbod_completion#omni]], + }) + + vim.api.nvim_create_autocmd("FileType", { + pattern = { + "sql", + "mysql", + "plsql", + }, + callback = function() + ---@diagnostic disable-next-line: missing-fields + require("cmp").setup.buffer({ + sources = { { name = "vim-dadbod-completion" }, { name = "buffer" } }, + }) + end, + }) + end, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/doc-gen.lua b/config/nvim_unstable/lua/aleidk/plugins/doc-gen.lua new file mode 100644 index 0000000..199ce62 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/doc-gen.lua @@ -0,0 +1,15 @@ +return { + "danymat/neogen", + opts = { snippet_engine = "luasnip" }, + dependencies = { "nvim-treesitter/nvim-treesitter" }, + version = "*", -- stable releases + keys = { + { + "gcd", + function() + require("neogen").generate() + end, + desc = "Generate comment docstring", + }, + }, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua b/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua new file mode 100644 index 0000000..2f76b72 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua @@ -0,0 +1,33 @@ +return { + "mikavilpas/yazi.nvim", + keys = { + { + "e", + "Yazi", + desc = "Open yazi at the current file", + }, + { + -- Open in the current working directory + "E", + "Yazi cwd", + desc = "Open the file manager in nvim's working directory", + }, + }, + opts = { + -- if you want to open yazi instead of netrw, see below for more info + open_for_directories = true, + open_multiple_tabs = true, + floating_window_scaling_factor = 1, + keymaps = { + show_help = '', + open_file_in_vertical_split = '', + open_file_in_horizontal_split = '', + open_file_in_tab = '', + grep_in_directory = '', + cycle_open_buffers = '', + copy_relative_path_to_selected_files = '', + send_to_quickfix_list = '', + change_working_directory = "", + }, + }, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/formatter.lua b/config/nvim_unstable/lua/aleidk/plugins/formatter.lua new file mode 100644 index 0000000..2406d75 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/formatter.lua @@ -0,0 +1,124 @@ +return { + "stevearc/conform.nvim", + event = { "BufWritePre" }, + cmd = { "ConformInfo" }, + opts = { + -- log_level = vim.log.levels.DEBUG, + + -- See aviable formatters in: https://github.com/stevearc/conform.nvim#formatters + -- Formatters can be installed by mason + formatters_by_ft = { + -- Conform will run multiple formatters sequentially + -- Use a stop_after_first = true to run only the first available formatter + -- Use the "_" filetype to run formatters on filetypes that don't + -- have other formatters configured. + ["_"] = { "trim_whitespace" }, + blade = { "blade-formatter" }, + css = { "biome" }, + go = { "gofumpt", "goimports_reviser", "golines" }, + html = { "djlint", "prettierd", stop_after_first = true }, + htmldjango = { "djlint", stop_after_first = true }, + javascript = { "biome" }, + javascriptreact = { "biome" }, + json = { "biome" }, + jsonc = { "biome" }, + lua = { "stylua" }, + markdown = { "markdownlint" }, + nim = { "nimpretty" }, + php = { "pint" }, + python = { "ruff_format", "ruff_organize_imports" }, + scss = { "prettierd", "prettier", stop_after_first = true }, + sh = { "shfmt" }, + toml = { "taplo" }, + typescript = { "biome" }, + typescriptreact = { "biome" }, + xml = { "lemminx" }, + zsh = { "shfmt" }, + sql = { "sleek" } + }, + formatters = { + djlint = { + prepend_args = { + "--format-css", + "--indent-css", + "2", + "--format-js", + "--indent-js", + "2", + "--indent", + "2", + "--preserve-blank-lines", + "--quiet" + } + } + }, + format_on_save = function(bufnr) + -- Disable with a global or buffer-local variable + if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then + return + end + + return { timeout_ms = 2000, lsp_fallback = true } + end, + }, + config = function(_, opts) + require("conform").setup(opts) + + local function toggleAutoFormat() + -- to make this global, change b to g + if vim.b.disable_autoformat == nil then + vim.b.disable_autoformat = true + print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) + return + end + + vim.b.disable_autoformat = not vim.b.disable_autoformat + print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) + end + + MAP("n", "uf", toggleAutoFormat, "Toggle auto format") + + vim.api.nvim_create_user_command("Fmt", function(args) + local range = nil + if args.count ~= -1 then + local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] + range = { + start = { args.line1, 0 }, + ["end"] = { args.line2, end_line:len() }, + } + end + + local function callback(err, did_edit) + if not did_edit then + vim.notify("The file was not formatted:\n" .. tostring(err), vim.log.levels.ERROR) + return + end + + if args.bang then + vim.cmd("w") + end + end + + require("conform").format( + { + async = true, + lsp_format = "fallback", + range = range, + formatters = args.fargs + }, + callback + ) + end, { + range = true, + bang = true, + force = true, + desc = "Format the document", + nargs = '*', + -- complete = function() + -- local formatters = require('conform').formatters_by_ft + -- + -- return vim.tbl_keys(formatters) + -- end + }) + end, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/git.lua b/config/nvim_unstable/lua/aleidk/plugins/git.lua new file mode 100644 index 0000000..f34672f --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/git.lua @@ -0,0 +1,52 @@ +local const = require("aleidk.constants") + +return { + { + "lewis6991/gitsigns.nvim", + event = { "BufReadPre", "BufNewFile" }, + opts = { + -- See `:help gitsigns.txt` + signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` + numhl = true, -- Toggle with `:Gitsigns toggle_numhl` + linehl = false, -- Toggle with `:Gitsigns toggle_linehl` + word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` + signs = { + add = { text = const.icons.git.added }, + change = { text = const.icons.git.modified }, + delete = { text = const.icons.git.removed }, + topdelete = { text = const.icons.git.removed }, + changedelete = { text = const.icons.git.removed }, + untracked = { text = "▎" }, + }, + signs_staged = { + add = { text = const.icons.git.added }, + change = { text = const.icons.git.modified }, + delete = { text = const.icons.git.removed }, + topdelete = { text = const.icons.git.removed }, + changedelete = { text = const.icons.git.removed }, + untracked = { text = "▎" }, + }, + on_attach = function(buffer) + local gs = package.loaded.gitsigns + + local function map(mode, l, r, desc) + vim.keymap.set(mode, "g" .. l, r, { buffer = buffer, desc = desc }) + end + + -- stylua: ignore start + map("n", "j", gs.next_hunk, "Next Hunk") + map("n", "k", gs.prev_hunk, "Prev Hunk") + map({ "n", "v" }, "s", ":Gitsigns stage_hunk", "Stage Hunk") + map({ "n", "v" }, "r", ":Gitsigns reset_hunk", "Reset Hunk") + map("n", "u", gs.undo_stage_hunk, "Undo Stage Hunk") + map("n", "R", gs.reset_buffer, "Reset Buffer") + map("n", "", gs.preview_hunk, "Preview Hunk") + map("n", "l", function() gs.blame_line({ full = true }) end, "Blame Line") + map("n", "L", gs.toggle_current_line_blame, "Toggle current line blame") + map("n", "d", gs.toggle_word_diff, "Toggle word diff") + map("n", "h", "diffget", "Diff This with last commit") + map("n", "l", "diffput", "Diff This with last commit") + end, + }, + }, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua b/config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua new file mode 100644 index 0000000..f529305 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua @@ -0,0 +1,30 @@ +return { + -- Add indentation guides even on blank lines + "lukas-reineke/indent-blankline.nvim", + dependencies = { "nvim-treesitter/nvim-treesitter" }, + main = "ibl", + opts = { + -- char = "▏", + indent = { + char = "│", + tab_char = "│", + }, + scope = { + enabled = true, + }, + exclude = { + filetypes = { + "help", + "alpha", + "dashboard", + "neo-tree", + "Trouble", + "lazy", + "mason", + "notify", + "toggleterm", + "lazyterm", + }, + }, + }, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/init.lua b/config/nvim_unstable/lua/aleidk/plugins/init.lua index 546a909..f9b3cf8 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/init.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/init.lua @@ -1,6 +1,42 @@ return { 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically - + { "nvim-tree/nvim-web-devicons", lazy = true }, + { + -- Highlight word under cursor + "RRethy/vim-illuminate", + event = { "BufReadPost", "BufNewFile" }, + opts = { + delay = 200, + filetypes_denylist = { + 'dirbuf', + 'dirvish', + 'fugitive', + 'aerial', + }, + }, + config = function(_, opts) + require("illuminate").configure(opts) + end, + }, + { + "ckolkey/ts-node-action", + dependencies = { "nvim-treesitter" }, + opts = {}, + keys = { + { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } + } + }, + { + "Wansmer/treesj", + cmd = { "TSJToggle" }, + keys = { + { "lm", "TSJToggle", desc = "Toggle treesitter join" }, + }, + dependencies = { "nvim-treesitter/nvim-treesitter" }, + opts = { + use_default_keymaps = true, + }, + }, } diff --git a/config/nvim_unstable/lua/aleidk/plugins/linters.lua b/config/nvim_unstable/lua/aleidk/plugins/linters.lua new file mode 100644 index 0000000..06aec9f --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/linters.lua @@ -0,0 +1,25 @@ +return { + "mfussenegger/nvim-lint", + event = "VeryLazy", + config = function() + local lint = require("lint") + + lint.linters.gitlint.stdin = true + lint.linters.gitlint.args = { "--contrib", "contrib-title-conventional-commits", "--msg-filename", "-" } + + lint.linters_by_ft = { + -- astro = { "eslint_d" }, + python = { "ruff" }, + sh = { "shellcheck" }, + NeogitCommitMessage = { "gitlint" }, + gitcommit = { "gitlint" }, + markdown = { "markdownlint" }, + } + + vim.api.nvim_create_autocmd({ "BufWritePost" }, { + callback = function() + require("lint").try_lint() + end, + }) + end, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua b/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua new file mode 100644 index 0000000..5f4e132 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua @@ -0,0 +1,27 @@ +return { + "L3MON4D3/LuaSnip", + dependencies = { + "rafamadriz/friendly-snippets", + config = function() + require("luasnip.loaders.from_vscode").lazy_load() + end, + }, + opts = { + history = true, + delete_check_events = "TextChanged", + }, + -- stylua: ignore + keys = { + { + "", + function() + return require("luasnip").jumpable(1) and "luasnip-jump-next" or "" + end, + expr = true, + silent = true, + mode = "i", + }, + { "", function() require("luasnip").jump(1) end, mode = "s" }, + { "", function() require("luasnip").jump(-1) end, mode = { "i", "s" } }, + }, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/markdown.lua b/config/nvim_unstable/lua/aleidk/plugins/markdown.lua new file mode 100644 index 0000000..19e36a2 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/markdown.lua @@ -0,0 +1,15 @@ +return { + { + "MeanderingProgrammer/markdown.nvim", + name = "render-markdown", -- Only needed if you have another plugin named markdown.nvim + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins + dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" }, -- if you prefer nvim-web-devicons + opts = { + file_types = { 'markdown', 'copilot-chat' }, + sign = { + enabled = false, + }, + }, + }, +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua b/config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua new file mode 100644 index 0000000..30f9134 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua @@ -0,0 +1,59 @@ +return { + { + "nosduco/remote-sshfs.nvim", + dependencies = { "nvim-telescope/telescope.nvim" }, + cmd = { "RemoteSSHFSConnect" }, + config = function() + require("remote-sshfs").setup({}) + require("telescope").load_extension("remote-sshfs") + end, + }, + { + "amitds1997/remote-nvim.nvim", + version = "*", -- Pin to GitHub releases + dependencies = { + "nvim-lua/plenary.nvim", -- For standard functions + "MunifTanjim/nui.nvim", -- To build the plugin UI + "nvim-telescope/telescope.nvim", -- For picking b/w different remote methods + }, + opts = { + remote = { + copy_dirs = { + data = { + base = vim.fn.stdpath("data"), -- Path from where data has to be copied. You can choose to copy entire path or subdirectories inside using `dirs` + dirs = { "lazy" }, -- Directories inside `base` to copy over. If this is set to string "*"; it means entire `base` should be copied over + compression = { + enabled = true, -- Should data be compressed before uploading + additional_opts = { "--exclude-vcs" }, -- Any arguments that can be passed to `tar` for compression can be specified here to improve your compression + }, + }, + -- cache = { + -- base = vim.fn.stdpath("cache"), + -- dirs = {}, + -- compression = { + -- enabled = true, + -- }, + -- }, + state = { + base = vim.fn.stdpath("state"), + dirs = {}, + compression = { + enabled = true, + }, + }, + }, + }, + client_callback = function(port, workspace_config) + local cmd = ("tmux new-window 'nvim --server localhost:%s --remote-ui' && tmux select-window -t:$"):format(port) + vim.fn.jobstart(cmd, { + detach = true, + on_exit = function(job_id, exit_code, event_type) + -- This function will be called when the job exits + print("Client", job_id, "exited with code", exit_code, "Event type:", event_type) + end, + }) + end, + }, + config = true, + } +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/trouble.lua b/config/nvim_unstable/lua/aleidk/plugins/trouble.lua new file mode 100644 index 0000000..b7a17bf --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/trouble.lua @@ -0,0 +1,93 @@ +---@module 'trouble' + +return { + "folke/trouble.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, + cmd = { "Trouble" }, + keys = { + { + "fD", + "Trouble diagnostics open", + desc = "Find diagnostics (Trouble)", + }, + { + "fd", + "Trouble diagnostics open filter.buf=0", + desc = "Find buffer diagnostics (Trouble)", + }, + { + "ll", + "Trouble symbols open", + desc = "Symbols (Trouble)", + }, + { + "li", + "Trouble lsp open", + desc = "LSP info of node (Trouble)", + }, + { + "fq", + "Trouble qflist open", + desc = "Quickfix List (Trouble)", + }, + }, + opts = function() + ---@type trouble.Window.opts + local win_opts = { + -- size = { width = 30, height = 0.5 }, + minimal = true, + border = "rounded", + position = "bottom", + } + + ---@type trouble.Config + return { + focus = true, + + ---@type trouble.Window.opts + preview = { + type = "split", + relative = "win", + position = "top", + }, + + ---@type table + keys = { + [""] = "jump_close", + [""] = "jump", + ["<2-leftmouse>"] = "jump", + [""] = "jump_split_close", + [""] = "jump_vsplit_close", + ["v"] = "jump_split_close", + ["s"] = "jump_vsplit_close", + [""] = "cancel", -- hack to fool myself into thinking I move to the avobe window + ["a"] = function(view, ctx) + -- TODO: this is not possible until this issue is solved + -- https://github.com/neovim/neovim/issues/31206 + local trouble = require("trouble") + view:action("jump_only") + + vim.lsp.buf.code_action() + + trouble.focus(view, ctx) + end, + }, + win = win_opts, + ---@type table + modes = { + symbols = { + focus = true, + win = win_opts + }, + lsp_references = { + focus = true, + win = win_opts + }, + lsp = { + focus = true, + win = win_opts + }, + } + } + end +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua b/config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua new file mode 100644 index 0000000..7f106b0 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua @@ -0,0 +1,18 @@ +return { + "pmizio/typescript-tools.nvim", + dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, + opts = { + init_options = { + preferences = { + disableSuggestions = true, + }, + }, + settings = { + -- array of strings("fix_all"|"add_missing_imports"|"remove_unused"| + -- "remove_unused_imports"|"organize_imports") -- or string "all" + -- to include all supported code actions + -- specify commands exposed as code_actions + expose_as_code_action = "all", + }, + }, +} From c6759c5c3782abccba77ed3e338636dc47369a35 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 1 Apr 2025 16:48:48 -0300 Subject: [PATCH 073/152] add mini.nvim plugins --- config/nvim_unstable/lua/aleidk/keymaps.lua | 10 +- .../lua/aleidk/plugins/colorscheme.lua | 4 + .../lua/aleidk/plugins/comments.lua | 12 -- .../lua/aleidk/plugins/file-explorer.lua | 14 +- .../nvim_unstable/lua/aleidk/plugins/git.lua | 52 ----- .../nvim_unstable/lua/aleidk/plugins/init.lua | 30 --- .../lua/aleidk/plugins/luasnip.lua | 27 --- .../nvim_unstable/lua/aleidk/plugins/mini.lua | 194 ++++++++++++++++++ config/nvim_unstable/snippets/global.json | 11 + 9 files changed, 220 insertions(+), 134 deletions(-) delete mode 100644 config/nvim_unstable/lua/aleidk/plugins/git.lua delete mode 100644 config/nvim_unstable/lua/aleidk/plugins/luasnip.lua create mode 100644 config/nvim_unstable/lua/aleidk/plugins/mini.lua create mode 100644 config/nvim_unstable/snippets/global.json diff --git a/config/nvim_unstable/lua/aleidk/keymaps.lua b/config/nvim_unstable/lua/aleidk/keymaps.lua index 8d23432..f7a3019 100644 --- a/config/nvim_unstable/lua/aleidk/keymaps.lua +++ b/config/nvim_unstable/lua/aleidk/keymaps.lua @@ -8,18 +8,16 @@ vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { desc = "Move cursor regardless of word wrap", expr = true, silent = true }) vim.keymap.set("n", "J", "mzJ`z", { desc = "Keep cursor in column while joining lines", silent = true }) -vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) -vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) -vim.keymap.set("n", "n", "nzzzv", { desc = "Keep cursor centered while searching", silent = true }) -vim.keymap.set("n", "N", "Nzzzv", { desc = "Keep cursor centered while searching", silent = true }) +-- vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) +-- vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) +-- vim.keymap.set("n", "n", "nzzzv", { desc = "Keep cursor centered while searching", silent = true }) +-- vim.keymap.set("n", "N", "Nzzzv", { desc = "Keep cursor centered while searching", silent = true }) -- Utils vim.keymap.set("n", "|", ":vs", { desc = "Create vsplit", silent = true }) vim.keymap.set("n", "°", ":sp", { desc = "Create split", silent = true }) vim.keymap.set("v", "p", [["_dP]], { desc = "Paste without lossing yanked text", silent = true }) -vim.keymap.set("v", "J", ":m '>+1gv=gv", { desc = "Move selection down", silent = true }) -vim.keymap.set("v", "K", ":m '<-2gv=gv", { desc = "Move selection up", silent = true }) vim.keymap.set("n", "uh", ":nohl", { desc = "Remove search highlight", silent = true }) -- Buffer manipulation diff --git a/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua b/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua index af5c7fc..2eef16c 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua @@ -18,6 +18,10 @@ return { -- Change colors.none if not using a transparent background mason = true, noice = true, notify = true, + mini = { + enabled = true, + indentscope_color = "", + }, }, custom_highlights = function(colors) return { diff --git a/config/nvim_unstable/lua/aleidk/plugins/comments.lua b/config/nvim_unstable/lua/aleidk/plugins/comments.lua index 876a4ed..de06eda 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/comments.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/comments.lua @@ -9,16 +9,4 @@ return { { "gcl", function() require("comment-box").llline() end, { desc = "Create a comment line", mode = { "n", "v" }, } }, }, }, - { - "folke/todo-comments.nvim", - cmd = { "TodoTrouble", "TodoTelescope" }, - event = { "BufReadPost", "BufNewFile" }, - config = true, - keys = { - { "]t", function() require("todo-comments").jump_next() end, desc = "Next todo comment" }, - { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous todo comment" }, - { "ft", "TodoTrouble", desc = "Find todos (Trouble)" }, - { "fT", "TodoTelescope", desc = "Find todos (Telescope)" }, - }, - } } diff --git a/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua b/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua index 2f76b72..6499ad7 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua @@ -2,16 +2,16 @@ return { "mikavilpas/yazi.nvim", keys = { { - "e", + "E", "Yazi", desc = "Open yazi at the current file", }, - { - -- Open in the current working directory - "E", - "Yazi cwd", - desc = "Open the file manager in nvim's working directory", - }, + -- { + -- -- Open in the current working directory + -- "E", + -- "Yazi cwd", + -- desc = "Open the file manager in nvim's working directory", + -- }, }, opts = { -- if you want to open yazi instead of netrw, see below for more info diff --git a/config/nvim_unstable/lua/aleidk/plugins/git.lua b/config/nvim_unstable/lua/aleidk/plugins/git.lua deleted file mode 100644 index f34672f..0000000 --- a/config/nvim_unstable/lua/aleidk/plugins/git.lua +++ /dev/null @@ -1,52 +0,0 @@ -local const = require("aleidk.constants") - -return { - { - "lewis6991/gitsigns.nvim", - event = { "BufReadPre", "BufNewFile" }, - opts = { - -- See `:help gitsigns.txt` - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = true, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - signs = { - add = { text = const.icons.git.added }, - change = { text = const.icons.git.modified }, - delete = { text = const.icons.git.removed }, - topdelete = { text = const.icons.git.removed }, - changedelete = { text = const.icons.git.removed }, - untracked = { text = "▎" }, - }, - signs_staged = { - add = { text = const.icons.git.added }, - change = { text = const.icons.git.modified }, - delete = { text = const.icons.git.removed }, - topdelete = { text = const.icons.git.removed }, - changedelete = { text = const.icons.git.removed }, - untracked = { text = "▎" }, - }, - on_attach = function(buffer) - local gs = package.loaded.gitsigns - - local function map(mode, l, r, desc) - vim.keymap.set(mode, "g" .. l, r, { buffer = buffer, desc = desc }) - end - - -- stylua: ignore start - map("n", "j", gs.next_hunk, "Next Hunk") - map("n", "k", gs.prev_hunk, "Prev Hunk") - map({ "n", "v" }, "s", ":Gitsigns stage_hunk", "Stage Hunk") - map({ "n", "v" }, "r", ":Gitsigns reset_hunk", "Reset Hunk") - map("n", "u", gs.undo_stage_hunk, "Undo Stage Hunk") - map("n", "R", gs.reset_buffer, "Reset Buffer") - map("n", "", gs.preview_hunk, "Preview Hunk") - map("n", "l", function() gs.blame_line({ full = true }) end, "Blame Line") - map("n", "L", gs.toggle_current_line_blame, "Toggle current line blame") - map("n", "d", gs.toggle_word_diff, "Toggle word diff") - map("n", "h", "diffget", "Diff This with last commit") - map("n", "l", "diffput", "Diff This with last commit") - end, - }, - }, -} diff --git a/config/nvim_unstable/lua/aleidk/plugins/init.lua b/config/nvim_unstable/lua/aleidk/plugins/init.lua index f9b3cf8..1745f23 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/init.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/init.lua @@ -1,23 +1,6 @@ return { 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically { "nvim-tree/nvim-web-devicons", lazy = true }, - { - -- Highlight word under cursor - "RRethy/vim-illuminate", - event = { "BufReadPost", "BufNewFile" }, - opts = { - delay = 200, - filetypes_denylist = { - 'dirbuf', - 'dirvish', - 'fugitive', - 'aerial', - }, - }, - config = function(_, opts) - require("illuminate").configure(opts) - end, - }, { "ckolkey/ts-node-action", dependencies = { "nvim-treesitter" }, @@ -26,17 +9,4 @@ return { { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } } }, - { - "Wansmer/treesj", - cmd = { "TSJToggle" }, - keys = { - { "lm", "TSJToggle", desc = "Toggle treesitter join" }, - }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - opts = { - use_default_keymaps = true, - }, - }, - - } diff --git a/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua b/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua deleted file mode 100644 index 5f4e132..0000000 --- a/config/nvim_unstable/lua/aleidk/plugins/luasnip.lua +++ /dev/null @@ -1,27 +0,0 @@ -return { - "L3MON4D3/LuaSnip", - dependencies = { - "rafamadriz/friendly-snippets", - config = function() - require("luasnip.loaders.from_vscode").lazy_load() - end, - }, - opts = { - history = true, - delete_check_events = "TextChanged", - }, - -- stylua: ignore - keys = { - { - "", - function() - return require("luasnip").jumpable(1) and "luasnip-jump-next" or "" - end, - expr = true, - silent = true, - mode = "i", - }, - { "", function() require("luasnip").jump(1) end, mode = "s" }, - { "", function() require("luasnip").jump(-1) end, mode = { "i", "s" } }, - }, -} diff --git a/config/nvim_unstable/lua/aleidk/plugins/mini.lua b/config/nvim_unstable/lua/aleidk/plugins/mini.lua new file mode 100644 index 0000000..17aad31 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/mini.lua @@ -0,0 +1,194 @@ +return { + 'echasnovski/mini.nvim', + version = '*', + dependencies = { + "rafamadriz/friendly-snippets", + }, + config = function() + require('mini.icons').setup() + require('mini.bracketed').setup() -- [] movement for various stuff + require("mini.ai").setup({}) + require('mini.cursorword').setup() -- Highlight word under cursor + require('mini.extra').setup() + require('mini.jump').setup() -- Extend f, F, t, T + require('mini.surround').setup() + require('mini.operators').setup() + require('mini.pairs').setup() + require('mini.splitjoin').setup() + require("mini.align").setup({}) + require('mini.animate').setup() + require('mini.notify').setup() + require('mini.starter').setup() + require('mini.statusline').setup({}) + require('mini.diff').setup({ view = { style = 'sign' } }) + + require('mini.git').setup({}) + + local rhs = 'lua MiniGit.show_at_cursor()' + vim.keymap.set({ 'n', 'x' }, 'gs', rhs, { desc = 'Show at cursor', silent = true }) + + local starter = require('mini.starter') + starter.setup({ + footer = '', + evaluate_single = true, + items = { + starter.sections.recent_files(10, true), + starter.sections.pick(), + starter.sections.builtin_actions(), + }, + content_hooks = { + starter.gen_hook.adding_bullet(), + starter.gen_hook.indexing('all', { 'Builtin actions' }), + starter.gen_hook.aligning("center", "center"), + }, + }) + + require('mini.indentscope').setup({ + draw = { + animation = require('mini.indentscope').gen_animation.none(), + }, + }) + + require('mini.files').setup({ + mappings = { + go_in = 'L', + go_in_plus = 'l', + }, + windows = { + preview = true, + width_preview = 75, + } + }) + vim.keymap.set('n', 'e', ":lua MiniFiles.open(vim.api.nvim_buf_get_name(0))", + { desc = 'Show at cursor', silent = true }) + + require('mini.move').setup({ + mappings = { + -- Move visual selection in Visual mode + left = 'H', + right = 'L', + down = 'J', + up = 'K', + + -- Move current line in Normal mode + line_left = '', + line_right = '', + line_down = '', + line_up = '', + }, + }) + require('mini.comment').setup({ + options = { + -- Whether to ignore blank lines when commenting + ignore_blank_line = true, + -- Whether to ignore blank lines in actions and textobject + start_of_line = true, + }, + }) + + local gen_loader = require('mini.snippets').gen_loader + require('mini.snippets').setup({ + snippets = { + -- Load custom file with global snippets first (adjust for Windows) + gen_loader.from_file('~/.config/nvim-unstable/snippets/global.json'), + + -- Load snippets based on current language by reading files from + -- "snippets/" subdirectories from 'runtimepath' directories. + gen_loader.from_lang(), + }, + }) + + local miniclue = require("mini.clue") + miniclue.setup({ + triggers = { + -- Leader triggers + { mode = "n", keys = "" }, + { mode = "v", keys = "" }, + { mode = "x", keys = "" }, + + -- Built-in completion + { mode = "i", keys = "" }, + + -- `g` key + { mode = "n", keys = "g" }, + { mode = "x", keys = "g" }, + + -- Marks + { mode = "n", keys = "'" }, + { mode = "n", keys = "`" }, + { mode = "x", keys = "'" }, + { mode = "x", keys = "`" }, + + -- Registers + { mode = "n", keys = '"' }, + { mode = "x", keys = '"' }, + { mode = "i", keys = "" }, + { mode = "c", keys = "" }, + + -- Window commands + { mode = "n", keys = "" }, + + -- `z` key + { mode = "n", keys = "z" }, + { mode = "x", keys = "z" }, + }, + + -- Add a "postkeys" value to activate those keys after others + clues = { + miniclue.gen_clues.builtin_completion(), + miniclue.gen_clues.g(), + miniclue.gen_clues.marks(), + miniclue.gen_clues.registers(), + miniclue.gen_clues.windows(), + miniclue.gen_clues.z(), + + { mode = "n", keys = "", desc = "+Bookmarks" }, + { mode = "n", keys = "n", postkeys = "" }, + { mode = "n", keys = "N", postkeys = "" }, + { mode = "n", keys = "b", desc = "+Buffers" }, + { mode = "n", keys = "bh", postkeys = "b" }, + { mode = "n", keys = "bl", postkeys = "b" }, + { mode = "n", keys = "f", desc = "+Find" }, + { mode = "n", keys = "g", desc = "+Git" }, + { mode = "n", keys = "l", desc = "+LSP" }, + { mode = "n", keys = "r", desc = "+Replace" }, + { mode = "n", keys = "u", desc = "+UI & Config" }, + { mode = "n", keys = "un", desc = "+Noice" }, + { mode = "n", keys = "w", desc = "+Workspace" }, + { mode = "n", keys = "p", desc = "+Run stuff" }, + { mode = "n", keys = "z", desc = "+ZK" }, + { mode = "v", keys = "z", desc = "+ZK" }, + { mode = "v", keys = "a", desc = "+AI" }, + { mode = "n", keys = "a", desc = "+AI" }, + { mode = "n", keys = "g?", desc = "+Print Debug" }, + }, + + -- Clue window settings + window = { + -- Floating window config + config = { + width = "auto", + }, + -- Delay before showing clue window + delay = 200, + -- Keys to scroll inside the clue window + scroll_down = "", + scroll_up = "", + }, + }) + + local hipatterns = require('mini.hipatterns') + hipatterns.setup({ + highlighters = { + -- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE' + fixme = { pattern = '%f[%w]()FIXME()%f[%W]', group = 'MiniHipatternsFixme' }, + hack = { pattern = '%f[%w]()HACK()%f[%W]', group = 'MiniHipatternsHack' }, + todo = { pattern = '%f[%w]()TODO()%f[%W]', group = 'MiniHipatternsTodo' }, + note = { pattern = '%f[%w]()NOTE()%f[%W]', group = 'MiniHipatternsNote' }, + + -- Highlight hex color strings (`#rrggbb`) using that color + hex_color = hipatterns.gen_highlighter.hex_color(), + }, + }) + end +} diff --git a/config/nvim_unstable/snippets/global.json b/config/nvim_unstable/snippets/global.json new file mode 100644 index 0000000..7f89b11 --- /dev/null +++ b/config/nvim_unstable/snippets/global.json @@ -0,0 +1,11 @@ +{ + "Basic": { "prefix": "ba", "body": "T1=$1 T2=$2 T0=$0" }, + "Placeholders": { "prefix": "pl", "body": "T1=${1:aa}\nT2=${2:<$1>}" }, + "Choices": { "prefix": "ch", "body": "T1=${1|a,b|} T2=${2|c,d|}" }, + "Linked": { "prefix": "li", "body": "T1=$1\n\tT1=$1" }, + "Variables": { "prefix": "va", "body": "Runtime: $VIMRUNTIME\n" }, + "Complex": { + "prefix": "co", + "body": ["T1=${1:$RANDOM}", "T3=${3:$1_${2:$1}}", "T2=$2"] + } +} From 1c1b6365ef6e898571b30a96cb8292813e43ef5f Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 4 Apr 2025 10:42:49 -0300 Subject: [PATCH 074/152] add fzf-lua to unstable nvim --- .../nvim_unstable/lua/aleidk/plugins/fzf.lua | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 config/nvim_unstable/lua/aleidk/plugins/fzf.lua diff --git a/config/nvim_unstable/lua/aleidk/plugins/fzf.lua b/config/nvim_unstable/lua/aleidk/plugins/fzf.lua new file mode 100644 index 0000000..991d804 --- /dev/null +++ b/config/nvim_unstable/lua/aleidk/plugins/fzf.lua @@ -0,0 +1,21 @@ +return { + "ibhagwan/fzf-lua", + dependencies = { "echasnovski/mini.nvim" }, + opts = {}, + keys = { + { "ff", function() require("fzf-lua").files() end, desc = "Find files" }, + { "fb", function() require("fzf-lua").buffers() end, desc = "Find buffers" }, + { "fw", function() require("fzf-lua").grep_cword() end, desc = "Find word under cursor" }, + { "fW", function() require("fzf-lua").live_grep_native() end, desc = "Find word (live grep)" }, + { "fw", function() require("fzf-lua").grep_visual() end, desc = "Find selection", mode = { "v" } }, + { "fw", function() require("fzf-lua").grep_cword() end, desc = "Find word under cursor" }, + + { "fg", function() require("fzf-lua").git_bcommits() end, desc = "Find commit log for current buffer" }, + + { "fl", function() require("fzf-lua").lsp_document_symbols() end, desc = "Find LSP Symbols" }, + + { "fr", function() require("fzf-lua").registers() end, desc = "Find registers" }, + { "fk", function() require("fzf-lua").keymaps() end, desc = "Find keymaps" }, + { "fh", function() require("fzf-lua").helptags() end, desc = "Find help tags" }, + } +} From 1766e84f5d4e3e0353da12bdb95088b6132ff63b Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 7 Apr 2025 09:18:03 -0400 Subject: [PATCH 075/152] update formatters --- config/nvim_unstable/lua/aleidk/plugins/formatter.lua | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/config/nvim_unstable/lua/aleidk/plugins/formatter.lua b/config/nvim_unstable/lua/aleidk/plugins/formatter.lua index 2406d75..2cb4e71 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/formatter.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/formatter.lua @@ -3,13 +3,11 @@ return { event = { "BufWritePre" }, cmd = { "ConformInfo" }, opts = { - -- log_level = vim.log.levels.DEBUG, - - -- See aviable formatters in: https://github.com/stevearc/conform.nvim#formatters + -- See available formatters in: https://github.com/stevearc/conform.nvim#formatters -- Formatters can be installed by mason formatters_by_ft = { -- Conform will run multiple formatters sequentially - -- Use a stop_after_first = true to run only the first available formatter + -- Use a stop_after_first = true to run only the first available formatters -- Use the "_" filetype to run formatters on filetypes that don't -- have other formatters configured. ["_"] = { "trim_whitespace" }, @@ -24,10 +22,9 @@ return { jsonc = { "biome" }, lua = { "stylua" }, markdown = { "markdownlint" }, - nim = { "nimpretty" }, php = { "pint" }, python = { "ruff_format", "ruff_organize_imports" }, - scss = { "prettierd", "prettier", stop_after_first = true }, + scss = { "biome", "prettierd", "prettier", stop_after_first = true }, sh = { "shfmt" }, toml = { "taplo" }, typescript = { "biome" }, From 9a07d9c43d1fa336e8241fc765b21db9bf260771 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 7 Apr 2025 09:52:02 -0400 Subject: [PATCH 076/152] update treesitter plugin --- .../lua/aleidk/plugins/treesitter.lua | 89 +++---------------- 1 file changed, 12 insertions(+), 77 deletions(-) diff --git a/config/nvim_unstable/lua/aleidk/plugins/treesitter.lua b/config/nvim_unstable/lua/aleidk/plugins/treesitter.lua index e281176..c677f4f 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/treesitter.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/treesitter.lua @@ -1,84 +1,19 @@ return { - -- Highlight, edit, and navigate code "nvim-treesitter/nvim-treesitter", event = { "BufReadPost", "BufNewFile", "BufWritePre", "VeryLazy" }, dependencies = { - "nvim-treesitter/nvim-treesitter-textobjects", - "JoosepAlviste/nvim-ts-context-commentstring", - "nvim-treesitter/nvim-treesitter-context", - { "windwp/nvim-ts-autotag", opts = {} }, + { + "JoosepAlviste/nvim-ts-context-commentstring", + opts = { + enable_autocmd = false, + }, + }, + { "nvim-treesitter/nvim-treesitter-context" }, }, build = ":TSUpdate", - config = function() - ---@diagnostic disable-next-line: missing-fields - require("nvim-treesitter.configs").setup({ - -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) - auto_install = true, - highlight = { enable = true }, - indent = { enable = true }, - incremental_selection = { - enable = true, - }, - textobjects = { - select = { - enable = true, - lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ["aa"] = "@parameter.outer", - ["ia"] = "@parameter.inner", - ["af"] = "@function.outer", - ["if"] = "@function.inner", - ["ac"] = "@class.outer", - ["ic"] = "@class.inner", - }, - }, - move = { - enable = true, - set_jumps = true, -- whether to set jumps in the jumplist - goto_previous = { -- current or last start of object - ["[["] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, - ["[f"] = "@function.outer", - ["[c"] = "@class.outer", - }, - goto_next = { -- next object end - ["]]"] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, - ["]f"] = "@function.outer", -- current function end - ["]c"] = "@class.outer", - }, - }, - swap = { - enable = true, - swap_next = { - ["ln"] = "@parameter.inner", - }, - swap_previous = { - ["lN"] = "@parameter.inner", - }, - }, - }, - -- autotag = { enable = true }, - }) - - require('ts_context_commentstring').setup { - enable_autocmd = false, - } - - local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move" - - -- Repeat movement with ; and , - -- ensure , goes forward and ; goes backward regardless of the last direction - vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_next) - vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_previous) - - -- Optionally, make builtin f, F, t, T also repeatable with ; and , - vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T_expr, { expr = true }) - - vim.keymap.set("n", "[u", function() - require("treesitter-context").go_to_context() - end, { silent = true, noremap = true, desc = "Go up when context is out of view" }) - end, + opts = { + auto_install = true, + highlight = { enable = true }, + indent = { enable = true }, + }, } From 9661cea5d4a2e0f08dcc2715a09d5cfe914aee38 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 7 Apr 2025 09:52:21 -0400 Subject: [PATCH 077/152] minor plugin updates --- .../nvim_unstable/lua/aleidk/plugins/comments.lua | 15 +++++++++++++++ .../nvim_unstable/lua/aleidk/plugins/doc-gen.lua | 15 --------------- config/nvim_unstable/lua/aleidk/plugins/init.lua | 12 ++++++++++++ config/nvim_unstable/lua/aleidk/plugins/mini.lua | 9 ++++++++- 4 files changed, 35 insertions(+), 16 deletions(-) delete mode 100644 config/nvim_unstable/lua/aleidk/plugins/doc-gen.lua diff --git a/config/nvim_unstable/lua/aleidk/plugins/comments.lua b/config/nvim_unstable/lua/aleidk/plugins/comments.lua index de06eda..9137253 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/comments.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/comments.lua @@ -9,4 +9,19 @@ return { { "gcl", function() require("comment-box").llline() end, { desc = "Create a comment line", mode = { "n", "v" }, } }, }, }, + { + "danymat/neogen", + opts = { snippet_engine = "nvim" }, + dependencies = { "nvim-treesitter/nvim-treesitter" }, + version = "*", -- stable releases + keys = { + { + "gcd", + function() + require("neogen").generate() + end, + desc = "Generate comment docstring", + }, + }, + } } diff --git a/config/nvim_unstable/lua/aleidk/plugins/doc-gen.lua b/config/nvim_unstable/lua/aleidk/plugins/doc-gen.lua deleted file mode 100644 index 199ce62..0000000 --- a/config/nvim_unstable/lua/aleidk/plugins/doc-gen.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - "danymat/neogen", - opts = { snippet_engine = "luasnip" }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - version = "*", -- stable releases - keys = { - { - "gcd", - function() - require("neogen").generate() - end, - desc = "Generate comment docstring", - }, - }, -} diff --git a/config/nvim_unstable/lua/aleidk/plugins/init.lua b/config/nvim_unstable/lua/aleidk/plugins/init.lua index 1745f23..b0448ff 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/init.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/init.lua @@ -9,4 +9,16 @@ return { { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } } }, + { + -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins + -- used for completion, annotations and signatures of Neovim apis + 'folke/lazydev.nvim', + ft = 'lua', + opts = { + library = { + -- Load luvit types when the `vim.uv` word is found + { path = 'luvit-meta/library', words = { 'vim%.uv' } }, + }, + }, + }, } diff --git a/config/nvim_unstable/lua/aleidk/plugins/mini.lua b/config/nvim_unstable/lua/aleidk/plugins/mini.lua index 17aad31..88f6bbe 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/mini.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/mini.lua @@ -17,7 +17,14 @@ return { require('mini.splitjoin').setup() require("mini.align").setup({}) require('mini.animate').setup() - require('mini.notify').setup() + require('mini.notify').setup({ + -- Notifications about LSP progress + lsp_progress = { + -- Whether to enable showing + enable = false, + } + }) + vim.notify = require('mini.notify').make_notify() require('mini.starter').setup() require('mini.statusline').setup({}) require('mini.diff').setup({ view = { style = 'sign' } }) From 5efa1c4ce5b52db13b997379d188b3fca376083c Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 7 Apr 2025 10:24:09 -0400 Subject: [PATCH 078/152] final updates of plugins in nvim_unstable --- config/nvim_unstable/lazy-lock.json | 35 +++++++++++++ .../nvim_unstable/lua/aleidk/plugins/init.lua | 2 +- .../lua/aleidk/plugins/markdown.lua | 7 ++- .../lua/aleidk/plugins/remote-sshfs.lua | 52 ------------------- .../lua/aleidk/plugins/trouble.lua | 6 ++- 5 files changed, 44 insertions(+), 58 deletions(-) create mode 100644 config/nvim_unstable/lazy-lock.json diff --git a/config/nvim_unstable/lazy-lock.json b/config/nvim_unstable/lazy-lock.json new file mode 100644 index 0000000..7a2038a --- /dev/null +++ b/config/nvim_unstable/lazy-lock.json @@ -0,0 +1,35 @@ +{ + "catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" }, + "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, + "conform.nvim": { "branch": "master", "commit": "b1a75324ddf96b7bb84963a297b1ed334db087c0" }, + "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, + "fzf-lua": { "branch": "main", "commit": "6488ada2f376e47789391dc353b6d91a3f9de6f6" }, + "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, + "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" }, + "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, + "nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" }, + "nvim-lint": { "branch": "master", "commit": "93b8040115c9114dac1047311763bef275e752dc" }, + "nvim-lspconfig": { "branch": "master", "commit": "ff6471d4f837354d8257dfa326b031dd8858b16e" }, + "nvim-treesitter": { "branch": "master", "commit": "9be6836ebeb88a536055bf1ce0961eef68da4bc6" }, + "nvim-treesitter-context": { "branch": "master", "commit": "93b29a32d5f4be10e39226c6b796f28d68a8b483" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "9937e5e356e5b227ec56d83d0a9d0a0f6bc9cad4" }, + "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, + "nvim-web-devicons": { "branch": "master", "commit": "4c3a5848ee0b09ecdea73adcd2a689190aeb728c" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" }, + "remote-sshfs.nvim": { "branch": "main", "commit": "1ae5784bf0729c8b03cb7fe6561508a673c9adc8" }, + "render-markdown": { "branch": "main", "commit": "92256e02db70c474f97fc461b6b6bc4aff7a499a" }, + "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" }, + "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, + "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, + "typescript-tools.nvim": { "branch": "master", "commit": "e0887c1e336edbb01243e9f1e60d74b0bc0a2bed" }, + "vim-dadbod": { "branch": "master", "commit": "9f0ca8bcef704659820a95c3bbd2c262583a66a1" }, + "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, + "vim-dadbod-ui": { "branch": "master", "commit": "685e75b34ee0e12f92ec4507ea8bb7f1aaa936e5" }, + "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, + "yazi.nvim": { "branch": "main", "commit": "aae26f6794c2afe2054a0782fb0ff07b2cd2876c" } +} diff --git a/config/nvim_unstable/lua/aleidk/plugins/init.lua b/config/nvim_unstable/lua/aleidk/plugins/init.lua index b0448ff..1f62383 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/init.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/init.lua @@ -17,7 +17,7 @@ return { opts = { library = { -- Load luvit types when the `vim.uv` word is found - { path = 'luvit-meta/library', words = { 'vim%.uv' } }, + { path = "${3rd}/luv/library", words = { "vim%.uv" } } }, }, }, diff --git a/config/nvim_unstable/lua/aleidk/plugins/markdown.lua b/config/nvim_unstable/lua/aleidk/plugins/markdown.lua index 19e36a2..9f9ea53 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/markdown.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/markdown.lua @@ -1,12 +1,11 @@ return { { "MeanderingProgrammer/markdown.nvim", - name = "render-markdown", -- Only needed if you have another plugin named markdown.nvim - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite + name = "render-markdown", -- Only needed if you have another plugin named markdown.nvim + dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins - dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" }, -- if you prefer nvim-web-devicons opts = { - file_types = { 'markdown', 'copilot-chat' }, + file_types = { 'markdown' }, sign = { enabled = false, }, diff --git a/config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua b/config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua index 30f9134..8c11bc1 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua @@ -3,57 +3,5 @@ return { "nosduco/remote-sshfs.nvim", dependencies = { "nvim-telescope/telescope.nvim" }, cmd = { "RemoteSSHFSConnect" }, - config = function() - require("remote-sshfs").setup({}) - require("telescope").load_extension("remote-sshfs") - end, }, - { - "amitds1997/remote-nvim.nvim", - version = "*", -- Pin to GitHub releases - dependencies = { - "nvim-lua/plenary.nvim", -- For standard functions - "MunifTanjim/nui.nvim", -- To build the plugin UI - "nvim-telescope/telescope.nvim", -- For picking b/w different remote methods - }, - opts = { - remote = { - copy_dirs = { - data = { - base = vim.fn.stdpath("data"), -- Path from where data has to be copied. You can choose to copy entire path or subdirectories inside using `dirs` - dirs = { "lazy" }, -- Directories inside `base` to copy over. If this is set to string "*"; it means entire `base` should be copied over - compression = { - enabled = true, -- Should data be compressed before uploading - additional_opts = { "--exclude-vcs" }, -- Any arguments that can be passed to `tar` for compression can be specified here to improve your compression - }, - }, - -- cache = { - -- base = vim.fn.stdpath("cache"), - -- dirs = {}, - -- compression = { - -- enabled = true, - -- }, - -- }, - state = { - base = vim.fn.stdpath("state"), - dirs = {}, - compression = { - enabled = true, - }, - }, - }, - }, - client_callback = function(port, workspace_config) - local cmd = ("tmux new-window 'nvim --server localhost:%s --remote-ui' && tmux select-window -t:$"):format(port) - vim.fn.jobstart(cmd, { - detach = true, - on_exit = function(job_id, exit_code, event_type) - -- This function will be called when the job exits - print("Client", job_id, "exited with code", exit_code, "Event type:", event_type) - end, - }) - end, - }, - config = true, - } } diff --git a/config/nvim_unstable/lua/aleidk/plugins/trouble.lua b/config/nvim_unstable/lua/aleidk/plugins/trouble.lua index b7a17bf..dbcb527 100644 --- a/config/nvim_unstable/lua/aleidk/plugins/trouble.lua +++ b/config/nvim_unstable/lua/aleidk/plugins/trouble.lua @@ -2,7 +2,7 @@ return { "folke/trouble.nvim", - dependencies = { "nvim-tree/nvim-web-devicons" }, + dependencies = { "echasnovski/mini.nvim", "ibhagwan/fzf-lua" }, cmd = { "Trouble" }, keys = { { @@ -32,6 +32,10 @@ return { }, }, opts = function() + local config = require("fzf-lua.config") + local actions = require("trouble.sources.fzf").actions + config.defaults.actions.files["ctrl-t"] = actions.open + ---@type trouble.Window.opts local win_opts = { -- size = { width = 30, height = 0.5 }, From f181cd388a7ea669accca9e77fd49582f5794273 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 7 Apr 2025 13:04:13 -0400 Subject: [PATCH 079/152] change dotfile manager to tuckr --- .dotter/almighty.toml | 8 - .dotter/devbox.toml | 6 - .dotter/global.toml | 91 --------- .dotter/handlebars_helpers/flatten_table.rhai | 30 --- .dotter/handlebars_helpers/header.rhai | 48 ----- .dotter/machines/fedora.toml | 66 ------- .dotter/post_deploy.sh | 3 - .dotter/pre_deploy.sh | 98 ---------- .dotter/thinkpad.toml | 9 - .dotter/work-laptop.toml | 9 - .../.config}/alacritty/alacritty.toml | 0 .../.config}/alacritty/alacritty.yml | 0 .../alacritty/.config/alacritty}/themes/.keep | 0 {config => Configs/bat/.config}/bat/config | 0 .../foot/.config}/foot/foot.ini | 0 .../.config}/foot/themes/catppuccin/LICENSE | 0 .../.config}/foot/themes/catppuccin/README.md | 0 .../catppuccin/assets/empty_dot_gitkeep | 0 .../foot/themes/catppuccin/assets/foot.png | Bin .../themes/catppuccin/catppuccin-frappe.conf | 0 .../themes/catppuccin/catppuccin-latte.conf | 0 .../catppuccin/catppuccin-macchiato.conf | 0 .../themes/catppuccin/catppuccin-mocha.conf | 0 .../foot/themes/catppuccin/dot_editorconfig | 0 .../.config}/foot/themes/catppuccin/dot_git | 0 {config => Configs/fzf/.config}/fzf/forgitrc | 0 {config => Configs/fzf/.config}/fzf/fzfrc | 0 .../fzf/.config}/fzf/widgets/alias_widget.zsh | 0 .../fzf/widgets/atuin-history_widget.zsh | 0 .../fzf/widgets/cd-recent-dir_widget.zsh | 0 .../fzf/.config}/fzf/widgets/cd_widget.zsh | 0 .../fzf/widgets/dictionary_widget.zsh | 0 .../.config}/fzf/widgets/fzf-rg-launcher.zsh | 0 .../.config}/fzf/widgets/locate_widget.zsh | 0 .../fzf/.config}/fzf/widgets/man_widget.zsh | 0 .../ghostty/.config}/ghostty/config | 0 {config => Configs/git/.config}/git/config | 0 {config => Configs/git/.config}/git/ignore | 0 .../helix/.config}/helix/config.toml | 0 .../helix/.config}/helix/languages.toml | 0 .../.config}/hypr/executable_gdm-wrapper.sh | 0 .../hypr/.config}/hypr/hyprland.conf | 0 .../hypr/.config}/hypr/hyprpaper.conf | 0 .../hypr/.config}/hypr/theme.conf | 0 .../kitty/.config}/kitty/current-theme.conf | 0 .../kitty/.config}/kitty/kitty.conf | 0 .../.config}/kitty/private_kitty.conf.bak | 0 .../lazygit/.config}/lazygit/config.yml | 0 {config => Configs/mako/.config}/mako/config | 0 .../mise/.config}/mise/config.toml | 0 .../mpv/.config}/mpv/encoding.rst | 0 .../mpv/.config}/mpv/input.conf | 0 .../mpv/.config}/mpv/mplayer-input.conf | 0 {config => Configs/mpv/.config}/mpv/mpv.conf | 0 .../.config}/mpv/restore-old-bindings.conf | 0 .../mpv/script-opts/mpv_thumbnail_script.conf | 0 .../mpv/scripts/mpv-i3-floating-centered.lua | 0 .../mpv_thumbnail_script_client_osc.lua | 0 .../scripts/mpv_thumbnail_script_server-1.lua | 0 .../scripts/mpv_thumbnail_script_server-2.lua | 0 .../scripts/mpv_thumbnail_script_server.lua | 0 .../.config}/mpv/scripts/pause-indicator.lua | 0 .../mpv/.config}/mpv/tech-overview.txt | 0 .../nvim/after/queries/blade/highlights.scm | 0 .../nvim/after/queries/blade/injections.scm | 0 .../nvim/.config}/nvim/init.lua | 0 .../nvim/.config}/nvim/lazy-lock.json | 5 +- .../.config}/nvim/lua/aleidk/autocmds.lua | 0 .../.config/nvim}/lua/aleidk/constants.lua | 0 .../nvim/.config}/nvim/lua/aleidk/keymaps.lua | 0 .../nvim/.config}/nvim/lua/aleidk/lazy.lua | 6 +- .../nvim/.config}/nvim/lua/aleidk/options.lua | 0 .../lua/aleidk/plugins-base/auto-pairs.lua | 0 .../lua/aleidk/plugins-base}/bookmarks.lua | 0 .../nvim/lua/aleidk/plugins-base/comments.lua | 0 .../lua/aleidk/plugins-base/file-explorer.lua | 0 .../aleidk/plugins-base}/indent-blankline.lua | 0 .../lua/aleidk/plugins-base/treesitter.lua | 0 .../nvim/lua/aleidk/plugins-base/ui.lua | 0 .../lua/aleidk/plugins-base/undo-tree.lua | 0 .../lua/aleidk/plugins-core/colorscheme.lua | 0 .../nvim/lua/aleidk/plugins-core/init.lua | 0 .../nvim/lua/aleidk/plugins-core/key-help.lua | 0 .../nvim/lua/aleidk/plugins-core/lualine.lua | 0 .../nvim/lua/aleidk/plugins-core/markdown.lua | 0 .../lua/aleidk/plugins-core/smart-splits.lua | 0 .../nvim/lua/aleidk/plugins-core/surround.lua | 0 .../lua/aleidk/plugins-core/telescope.lua | 5 + .../lua/aleidk/plugins-core/todo-comments.lua | 0 .../lua/aleidk/plugins-ide/color-picker.lua | 0 .../lua/aleidk/plugins-ide/completion.lua | 0 .../nvim/lua/aleidk/plugins-ide}/database.lua | 0 .../nvim/lua/aleidk/plugins-ide/doc-gen.lua | 0 .../nvim/lua/aleidk/plugins-ide/formatter.lua | 0 .../nvim/lua/aleidk/plugins-ide/git.lua | 0 .../nvim/lua/aleidk/plugins-ide/init.lua | 0 .../nvim/lua/aleidk/plugins-ide}/linters.lua | 0 .../nvim/lua/aleidk/plugins-ide/lsp.lua | 0 .../nvim/lua/aleidk/plugins-ide/luasnip.lua | 0 .../lua/aleidk/plugins-ide/remote-sshfs.lua | 0 .../lua/aleidk/plugins-ide/task-runner.lua | 0 .../nvim/lua/aleidk/plugins-ide/trouble.lua | 0 .../aleidk/plugins-ide}/typescript-tools.lua | 0 .../nvim/.config}/nvim/lua/aleidk/utils.lua | 0 .../.config}/nvim_unstable/init.lua | 0 .../.config}/nvim_unstable/lazy-lock.json | 4 - .../nvim_unstable/lsp/rust_analyzer.lua | 0 .../nvim_unstable/lua/aleidk/autocmds.lua | 0 .../nvim_unstable}/lua/aleidk/constants.lua | 0 .../nvim_unstable/lua/aleidk/keymaps.lua | 0 .../nvim_unstable/lua/aleidk/options.lua | 0 .../lua/aleidk/plugins}/bookmarks.lua | 0 .../lua/aleidk/plugins/colorscheme.lua | 0 .../lua/aleidk/plugins/comments.lua | 0 .../lua/aleidk/plugins}/database.lua | 0 .../lua/aleidk/plugins/file-explorer.lua | 0 .../lua/aleidk/plugins/formatter.lua | 0 .../nvim_unstable/lua/aleidk/plugins/fzf.lua | 0 .../lua/aleidk/plugins}/indent-blankline.lua | 0 .../nvim_unstable/lua/aleidk/plugins/init.lua | 0 .../lua/aleidk/plugins}/linters.lua | 0 .../lua/aleidk/plugins/markdown.lua | 0 .../nvim_unstable/lua/aleidk/plugins/mini.lua | 0 .../lua/aleidk/plugins/remote-sshfs.lua | 0 .../lua/aleidk/plugins/treesitter.lua | 0 .../lua/aleidk/plugins/trouble.lua | 0 .../lua/aleidk/plugins}/typescript-tools.lua | 0 .../nvim_unstable/snippets/global.json | 0 .../rofi/.config}/rofi/config.rasi | 0 .../rofi/.config}/rofi/theme.rasi | 0 .../sesh/.config}/sesh/sesh.toml | 0 .../starship/.config}/starship.toml | 0 .../swappy/.config}/swappy/config | 0 .../tmux => Configs/tmux/.config}/tmux.conf | 0 .../vimiv/.config}/vimiv/keys.conf | 0 .../vimiv/.config}/vimiv/styles/default | 0 .../.config}/vimiv/styles/material-darker | 0 .../vimiv/.config}/vimiv/vimiv.conf | 0 .../waybar/.config}/waybar/config.jsonc | 0 .../waybar/.config}/waybar/style-bkp.css | 0 .../waybar/.config}/waybar/style.css | 0 .../waybar/.config}/waybar/sway-bar.sh | 0 .../waybar/themes/catppuccin-macchiato.css | 0 .../wezterm/.config}/wezterm/wezterm.lua | 0 .../.config}/wlogout/icons/hibernate.svg | 0 .../wlogout/.config}/wlogout/icons/lock.svg | 0 .../wlogout/.config}/wlogout/icons/logout.svg | 0 .../wlogout/.config}/wlogout/icons/reboot.svg | 0 .../.config}/wlogout/icons/shutdown.svg | 0 .../.config}/wlogout/icons/suspend.svg | 0 .../wlogout/.config}/wlogout/layout | 0 .../wlogout/.config}/wlogout/style.css | 0 .../wpaperd/.config}/wpaperd/config.toml | 0 .../yazi/.config}/yazi/init.lua | 0 .../yazi/.config}/yazi/keymap.toml | 0 .../yazi/.config}/yazi/package.toml | 0 .../yazi/.config}/yazi/plugins/.keep | 0 .../yazi/.config}/yazi/theme.toml | 0 .../yazi/.config}/yazi/yazi.toml | 0 .../zed/.config}/zed/keymap.json | 0 .../zed/.config}/zed/private_settings.json | 0 .../zed/.config/zed}/themes/.keep | 0 .../zellij/.config}/zellij/config.kdl | 0 .../zellij/.config}/zellij/layouts/code.kdl | 0 .../zsh/.config}/zsh/aliases/aliases.zsh | 0 .../zsh/.config}/zsh/aliases/configs.zsh | 0 .../zsh/.config}/zsh/aliases/fzf.zsh | 0 .../zsh/.config}/zsh/aliases/nvim.zsh | 0 .../zsh/.config}/zsh/aliases/pnpm.zsh | 0 .../zsh/.config}/zsh/completions/_alacritty | 0 .../zsh/.config}/zsh/completions/_cargo | 0 .../zsh/.config}/zsh/completions/_chezmoi | 0 .../zsh/.config}/zsh/completions/_cht | 0 .../zsh/.config}/zsh/completions/_globdots | 0 .../zsh/.config}/zsh/completions/_just | 0 .../zsh/.config}/zsh/completions/_lsd | 0 .../zsh/.config}/zsh/completions/_rg | 0 .../zsh/.config}/zsh/completions/_rtx | 0 .../zsh/.config}/zsh/completions/_rye | 0 .../zsh/.config}/zsh/completions/_starship | 0 .../zsh/.config}/zsh/completions/_tea | 0 .../zsh/.config}/zsh/completions/_tldr | 0 .../zsh/.config}/zsh/completions/_zellij | 0 .../zsh/.config}/zsh/functions/fedora.zsh | 0 .../zsh/.config}/zsh/functions/flatpak.zsh | 0 .../zsh/.config}/zsh/functions/functions.zsh | 0 {config => Configs}/zsh/zprofile | 4 + {config => Configs}/zsh/zshrc | 0 README.md | 6 +- scripts/backup | 150 --------------- scripts/check-dependencies | 12 -- scripts/check-tools | 49 ----- scripts/cloud_sync | 28 --- scripts/download-mega-extract | 44 ----- scripts/fzf-dnf | 90 --------- scripts/fzf-fj | 20 -- scripts/fzf-flatpak | 175 ------------------ scripts/fzf-nf-icon | 30 --- scripts/fzf-nf-install | 68 ------- scripts/fzf-player | 33 ---- scripts/fzf-tea | 18 -- scripts/fzf-tmux-sessions | 17 -- scripts/fzf-tmux-tools-popup | 17 -- scripts/fzf-wikis | 38 ---- scripts/set-random-wallpaper | 98 ---------- scripts/sort-wallpapers | 62 ------- 206 files changed, 18 insertions(+), 1329 deletions(-) delete mode 100644 .dotter/almighty.toml delete mode 100644 .dotter/devbox.toml delete mode 100644 .dotter/global.toml delete mode 100644 .dotter/handlebars_helpers/flatten_table.rhai delete mode 100644 .dotter/handlebars_helpers/header.rhai delete mode 100644 .dotter/machines/fedora.toml delete mode 100644 .dotter/post_deploy.sh delete mode 100755 .dotter/pre_deploy.sh delete mode 100644 .dotter/thinkpad.toml delete mode 100644 .dotter/work-laptop.toml rename {config => Configs/alacritty/.config}/alacritty/alacritty.toml (100%) rename {config => Configs/alacritty/.config}/alacritty/alacritty.yml (100%) rename {config/zed => Configs/alacritty/.config/alacritty}/themes/.keep (100%) rename {config => Configs/bat/.config}/bat/config (100%) rename {config => Configs/foot/.config}/foot/foot.ini (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/LICENSE (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/README.md (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/assets/empty_dot_gitkeep (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/assets/foot.png (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/catppuccin-frappe.conf (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/catppuccin-latte.conf (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/catppuccin-macchiato.conf (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/catppuccin-mocha.conf (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/dot_editorconfig (100%) rename {config => Configs/foot/.config}/foot/themes/catppuccin/dot_git (100%) rename {config => Configs/fzf/.config}/fzf/forgitrc (100%) rename {config => Configs/fzf/.config}/fzf/fzfrc (100%) rename {config => Configs/fzf/.config}/fzf/widgets/alias_widget.zsh (100%) rename {config => Configs/fzf/.config}/fzf/widgets/atuin-history_widget.zsh (100%) rename {config => Configs/fzf/.config}/fzf/widgets/cd-recent-dir_widget.zsh (100%) rename {config => Configs/fzf/.config}/fzf/widgets/cd_widget.zsh (100%) rename {config => Configs/fzf/.config}/fzf/widgets/dictionary_widget.zsh (100%) rename {config => Configs/fzf/.config}/fzf/widgets/fzf-rg-launcher.zsh (100%) rename {config => Configs/fzf/.config}/fzf/widgets/locate_widget.zsh (100%) rename {config => Configs/fzf/.config}/fzf/widgets/man_widget.zsh (100%) rename {config => Configs/ghostty/.config}/ghostty/config (100%) rename {config => Configs/git/.config}/git/config (100%) rename {config => Configs/git/.config}/git/ignore (100%) rename {config => Configs/helix/.config}/helix/config.toml (100%) rename {config => Configs/helix/.config}/helix/languages.toml (100%) rename {config => Configs/hypr/.config}/hypr/executable_gdm-wrapper.sh (100%) rename {config => Configs/hypr/.config}/hypr/hyprland.conf (100%) rename {config => Configs/hypr/.config}/hypr/hyprpaper.conf (100%) rename {config => Configs/hypr/.config}/hypr/theme.conf (100%) rename {config => Configs/kitty/.config}/kitty/current-theme.conf (100%) rename {config => Configs/kitty/.config}/kitty/kitty.conf (100%) rename {config => Configs/kitty/.config}/kitty/private_kitty.conf.bak (100%) rename {config => Configs/lazygit/.config}/lazygit/config.yml (100%) rename {config => Configs/mako/.config}/mako/config (100%) rename {config => Configs/mise/.config}/mise/config.toml (100%) rename {config => Configs/mpv/.config}/mpv/encoding.rst (100%) rename {config => Configs/mpv/.config}/mpv/input.conf (100%) rename {config => Configs/mpv/.config}/mpv/mplayer-input.conf (100%) rename {config => Configs/mpv/.config}/mpv/mpv.conf (100%) rename {config => Configs/mpv/.config}/mpv/restore-old-bindings.conf (100%) rename {config => Configs/mpv/.config}/mpv/script-opts/mpv_thumbnail_script.conf (100%) rename {config => Configs/mpv/.config}/mpv/scripts/mpv-i3-floating-centered.lua (100%) rename {config => Configs/mpv/.config}/mpv/scripts/mpv_thumbnail_script_client_osc.lua (100%) rename {config => Configs/mpv/.config}/mpv/scripts/mpv_thumbnail_script_server-1.lua (100%) rename {config => Configs/mpv/.config}/mpv/scripts/mpv_thumbnail_script_server-2.lua (100%) rename {config => Configs/mpv/.config}/mpv/scripts/mpv_thumbnail_script_server.lua (100%) rename {config => Configs/mpv/.config}/mpv/scripts/pause-indicator.lua (100%) rename {config => Configs/mpv/.config}/mpv/tech-overview.txt (100%) rename {config => Configs/nvim/.config}/nvim/after/queries/blade/highlights.scm (100%) rename {config => Configs/nvim/.config}/nvim/after/queries/blade/injections.scm (100%) rename {config => Configs/nvim/.config}/nvim/init.lua (100%) rename {config => Configs/nvim/.config}/nvim/lazy-lock.json (93%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/autocmds.lua (100%) rename {config/nvim_unstable => Configs/nvim/.config/nvim}/lua/aleidk/constants.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/keymaps.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/lazy.lua (80%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/options.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-base/auto-pairs.lua (100%) rename {config/nvim_unstable/lua/aleidk/plugins => Configs/nvim/.config/nvim/lua/aleidk/plugins-base}/bookmarks.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-base/comments.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-base/file-explorer.lua (100%) rename {config/nvim_unstable/lua/aleidk/plugins => Configs/nvim/.config/nvim/lua/aleidk/plugins-base}/indent-blankline.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-base/treesitter.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-base/ui.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-base/undo-tree.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/colorscheme.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/init.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/key-help.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/lualine.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/markdown.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/smart-splits.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/surround.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/telescope.lua (97%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-core/todo-comments.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/color-picker.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/completion.lua (100%) rename {config/nvim_unstable/lua/aleidk/plugins => Configs/nvim/.config/nvim/lua/aleidk/plugins-ide}/database.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/doc-gen.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/formatter.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/git.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/init.lua (100%) rename {config/nvim_unstable/lua/aleidk/plugins => Configs/nvim/.config/nvim/lua/aleidk/plugins-ide}/linters.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/lsp.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/luasnip.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/task-runner.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/plugins-ide/trouble.lua (100%) rename {config/nvim_unstable/lua/aleidk/plugins => Configs/nvim/.config/nvim/lua/aleidk/plugins-ide}/typescript-tools.lua (100%) rename {config => Configs/nvim/.config}/nvim/lua/aleidk/utils.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/init.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lazy-lock.json (87%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lsp/rust_analyzer.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/autocmds.lua (100%) rename {config/nvim => Configs/nvim_unstable/.config/nvim_unstable}/lua/aleidk/constants.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/keymaps.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/options.lua (100%) rename {config/nvim/lua/aleidk/plugins-base => Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins}/bookmarks.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/colorscheme.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/comments.lua (100%) rename {config/nvim/lua/aleidk/plugins-ide => Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins}/database.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/file-explorer.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/formatter.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/fzf.lua (100%) rename {config/nvim/lua/aleidk/plugins-base => Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins}/indent-blankline.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/init.lua (100%) rename {config/nvim/lua/aleidk/plugins-ide => Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins}/linters.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/markdown.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/mini.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/treesitter.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/lua/aleidk/plugins/trouble.lua (100%) rename {config/nvim/lua/aleidk/plugins-ide => Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins}/typescript-tools.lua (100%) rename {config => Configs/nvim_unstable/.config}/nvim_unstable/snippets/global.json (100%) rename {config => Configs/rofi/.config}/rofi/config.rasi (100%) rename {config => Configs/rofi/.config}/rofi/theme.rasi (100%) rename {config => Configs/sesh/.config}/sesh/sesh.toml (100%) rename {config => Configs/starship/.config}/starship.toml (100%) rename {config => Configs/swappy/.config}/swappy/config (100%) rename {config/tmux => Configs/tmux/.config}/tmux.conf (100%) rename {config => Configs/vimiv/.config}/vimiv/keys.conf (100%) rename {config => Configs/vimiv/.config}/vimiv/styles/default (100%) rename {config => Configs/vimiv/.config}/vimiv/styles/material-darker (100%) rename {config => Configs/vimiv/.config}/vimiv/vimiv.conf (100%) rename {config => Configs/waybar/.config}/waybar/config.jsonc (100%) rename {config => Configs/waybar/.config}/waybar/style-bkp.css (100%) rename {config => Configs/waybar/.config}/waybar/style.css (100%) rename {config => Configs/waybar/.config}/waybar/sway-bar.sh (100%) rename {config => Configs/waybar/.config}/waybar/themes/catppuccin-macchiato.css (100%) rename {config => Configs/wezterm/.config}/wezterm/wezterm.lua (100%) rename {config => Configs/wlogout/.config}/wlogout/icons/hibernate.svg (100%) rename {config => Configs/wlogout/.config}/wlogout/icons/lock.svg (100%) rename {config => Configs/wlogout/.config}/wlogout/icons/logout.svg (100%) rename {config => Configs/wlogout/.config}/wlogout/icons/reboot.svg (100%) rename {config => Configs/wlogout/.config}/wlogout/icons/shutdown.svg (100%) rename {config => Configs/wlogout/.config}/wlogout/icons/suspend.svg (100%) rename {config => Configs/wlogout/.config}/wlogout/layout (100%) rename {config => Configs/wlogout/.config}/wlogout/style.css (100%) rename {config => Configs/wpaperd/.config}/wpaperd/config.toml (100%) rename {config => Configs/yazi/.config}/yazi/init.lua (100%) rename {config => Configs/yazi/.config}/yazi/keymap.toml (100%) rename {config => Configs/yazi/.config}/yazi/package.toml (100%) rename {config => Configs/yazi/.config}/yazi/plugins/.keep (100%) rename {config => Configs/yazi/.config}/yazi/theme.toml (100%) rename {config => Configs/yazi/.config}/yazi/yazi.toml (100%) rename {config => Configs/zed/.config}/zed/keymap.json (100%) rename {config => Configs/zed/.config}/zed/private_settings.json (100%) rename {config/alacritty => Configs/zed/.config/zed}/themes/.keep (100%) rename {config => Configs/zellij/.config}/zellij/config.kdl (100%) rename {config => Configs/zellij/.config}/zellij/layouts/code.kdl (100%) rename {config => Configs/zsh/.config}/zsh/aliases/aliases.zsh (100%) rename {config => Configs/zsh/.config}/zsh/aliases/configs.zsh (100%) rename {config => Configs/zsh/.config}/zsh/aliases/fzf.zsh (100%) rename {config => Configs/zsh/.config}/zsh/aliases/nvim.zsh (100%) rename {config => Configs/zsh/.config}/zsh/aliases/pnpm.zsh (100%) rename {config => Configs/zsh/.config}/zsh/completions/_alacritty (100%) rename {config => Configs/zsh/.config}/zsh/completions/_cargo (100%) rename {config => Configs/zsh/.config}/zsh/completions/_chezmoi (100%) rename {config => Configs/zsh/.config}/zsh/completions/_cht (100%) rename {config => Configs/zsh/.config}/zsh/completions/_globdots (100%) rename {config => Configs/zsh/.config}/zsh/completions/_just (100%) rename {config => Configs/zsh/.config}/zsh/completions/_lsd (100%) rename {config => Configs/zsh/.config}/zsh/completions/_rg (100%) rename {config => Configs/zsh/.config}/zsh/completions/_rtx (100%) rename {config => Configs/zsh/.config}/zsh/completions/_rye (100%) rename {config => Configs/zsh/.config}/zsh/completions/_starship (100%) rename {config => Configs/zsh/.config}/zsh/completions/_tea (100%) rename {config => Configs/zsh/.config}/zsh/completions/_tldr (100%) rename {config => Configs/zsh/.config}/zsh/completions/_zellij (100%) rename {config => Configs/zsh/.config}/zsh/functions/fedora.zsh (100%) rename {config => Configs/zsh/.config}/zsh/functions/flatpak.zsh (100%) rename {config => Configs/zsh/.config}/zsh/functions/functions.zsh (100%) rename {config => Configs}/zsh/zprofile (90%) rename {config => Configs}/zsh/zshrc (100%) delete mode 100755 scripts/backup delete mode 100755 scripts/check-dependencies delete mode 100755 scripts/check-tools delete mode 100755 scripts/cloud_sync delete mode 100755 scripts/download-mega-extract delete mode 100755 scripts/fzf-dnf delete mode 100755 scripts/fzf-fj delete mode 100755 scripts/fzf-flatpak delete mode 100755 scripts/fzf-nf-icon delete mode 100755 scripts/fzf-nf-install delete mode 100755 scripts/fzf-player delete mode 100755 scripts/fzf-tea delete mode 100755 scripts/fzf-tmux-sessions delete mode 100755 scripts/fzf-tmux-tools-popup delete mode 100755 scripts/fzf-wikis delete mode 100755 scripts/set-random-wallpaper delete mode 100755 scripts/sort-wallpapers diff --git a/.dotter/almighty.toml b/.dotter/almighty.toml deleted file mode 100644 index 5d48e73..0000000 --- a/.dotter/almighty.toml +++ /dev/null @@ -1,8 +0,0 @@ -packages = ["cli", "dev", "mise", "hyprland"] - -[files] - -[variables] -nvim-core = true -nvim-base = true -nvim-ide = true diff --git a/.dotter/devbox.toml b/.dotter/devbox.toml deleted file mode 100644 index 7709e32..0000000 --- a/.dotter/devbox.toml +++ /dev/null @@ -1,6 +0,0 @@ -includes = [] -packages = ["default", "cli", "dev"] - -[files] - -[variables] diff --git a/.dotter/global.toml b/.dotter/global.toml deleted file mode 100644 index eeb6499..0000000 --- a/.dotter/global.toml +++ /dev/null @@ -1,91 +0,0 @@ -[settings] -default_target_type = "automatic" - -[helpers] -flatten_table = ".dotter/handlebars_helpers/flatten_table.rhai" -header = ".dotter/handlebars_helpers/header.rhai" - -# CLI package -[cli] -depends = ["helix", "nvim", "zsh", "fzf", "starship"] - -[cli.variables] -nerd_font = "JetBrainsMono" - -[cli.files] -"config/bat" = "~/.config/bat" -"config/ghostty" = "~/.config/ghostty" -"config/kitty" = { target = "~/.config/kitty", type = "symbolic" } -"config/sesh" = "~/.config/sesh" -"config/tmux" = "~/.config/tmux" -"config/yazi" = "~/.config/yazi" -"config/zellij" = "~/.config/zellij" - -[dev] -depends = ["rust"] - -[dev.files] -"config/git" = "~/.config/git" -"config/lazygit" = { target = "~/.config/lazygit", type = "symbolic" } -"config/zed" = "~/.config/zed" - -[zsh.files] -"config/zsh/zshrc" = "~/.zshrc" -"config/zsh/zprofile" = "~/.zprofile" -"config/zsh/aliases" = { target = "~/.config/zsh/aliases", type = "symbolic" } -"config/zsh/completions" = { target = "~/.config/zsh/completions", type = "symbolic" } -"config/zsh/functions" = "~/.config/zsh/functions" - -[fzf.files] -"config/fzf" = "~/.config/fzf" - -[starship.files] -"config/starship.toml" = "~/.config/starship.toml" - -[nushell.files] -"config/nushell" = "~/.config/nushell" - -[helix.files] -"config/helix" = "~/.config/helix" - -[nvim.files] -"config/nvim" = "~/.config/nvim" -"config/nvim_unstable" = "~/.config/nvim-unstable" -[nvim.files."config/nvim/lua/aleidk/lazy.lua"] -target = "~/.config/nvim/lua/aleidk/lazy.lua" -type = "template" -prepend = """ -local enabled_plugins = { - nvim_core = {{ nvim-core }}, - nvim_base = {{ nvim-base }}, - nvim_ide = {{ nvim-ide }}, -} - -""" - -# Handle package activation from Lazy instead of dotter -# This will prevent conflics in lazy-lock.json for having different plugins -[nvim.variables] -nvim-core = true -nvim-base = false -nvim-ide = false - -[rust.variables] -cargo.packages = [] - -[mise.files] -"config/mise" = "~/.config/mise" - -[wm.files] -"config/mako" = "~/.config/mako" -"config/swappy" = "~/.config/swappy" -"config/waybar" = "~/.config/waybar/" -"config/rofi" = "~/.config/rofi" -"config/wpaperd" = "~/.config/wpaperd" -"config/wlogout" = "~/.config/wlogout" - -[hyprland] -depends = ["wm"] - -[hyprland.files] -"config/hypr" = "~/.config/hypr" diff --git a/.dotter/handlebars_helpers/flatten_table.rhai b/.dotter/handlebars_helpers/flatten_table.rhai deleted file mode 100644 index 30ee4f9..0000000 --- a/.dotter/handlebars_helpers/flatten_table.rhai +++ /dev/null @@ -1,30 +0,0 @@ -/* -* Flatten a table into a list of values. -* The table has to be in the form of -* ```toml -* [table.subtable] -* variable1 = ["value1", "value2"] -* -* [table.subtable] -* variable2 = ["value3", "value4"] -* -* then we use it in handlerbars like this: -* -* {{ flatten_table table.subtable }} -* -* and it will return an array with all the arrays of subtable -*/ - -if type_of(params[0]) != "map" { - return; -} - -let table = params[0]; - -let result = []; - -for value in table.values() { - result.append(value); -} - -result diff --git a/.dotter/handlebars_helpers/header.rhai b/.dotter/handlebars_helpers/header.rhai deleted file mode 100644 index 1a35fc7..0000000 --- a/.dotter/handlebars_helpers/header.rhai +++ /dev/null @@ -1,48 +0,0 @@ -let x_padding = hash["padding"] ?? 50; - -let header = #{ - x_padding: x_padding, - out: "", - append: |suffix| { - this.out += suffix + "\n"; - }, - append_center: |suffix| { - - let suffix_len = suffix.len(); - let padding = this.x_padding - suffix_len / 2; - let fill = ""; - fill.pad(padding, " "); - - this.out += fill + suffix.to_upper() + fill + "\n"; - }, - append_divider: || { - let divider = ""; - divider.pad(this.x_padding * 2, "─"); - - this.append(divider); - }, - open_echo: || { - this.out += "echo -e '\n"; - }, - close_echo: || { - this.out += "'"; - }, - to_string: || { - return this.out; - } -}; - -header.open_echo(); - -header.append_divider(); - - -params.for_each(|idx| { - header.append_center(this); -}); - -header.append_divider(); -header.close_echo(); - -return header.to_string(); - diff --git a/.dotter/machines/fedora.toml b/.dotter/machines/fedora.toml deleted file mode 100644 index ee05f71..0000000 --- a/.dotter/machines/fedora.toml +++ /dev/null @@ -1,66 +0,0 @@ -# Dotter only support merging tables, and put the key-values into the global scope of the tables -# If we try to use the same variable name in a package, it will throw an error -# if we try to use the same key in a nested table, it will be overriden with the last value -# -# the fix to this is to have a table with unique keys, this is supported by handlerbars {{#each}} directive -# but will give us an array as value, so we need to flatten it - -[utils.variables] -pkg-install = "sudo dnf install -y" - -[cli.variables.copr] -cli = [ - "atim/lazygit", - "atim/starship" -] - -[cli.variables.packages] -cli = [ - "bat", - "dnf-plugin-system-upgrade", - "duf", - "eza", - "fd-find", - # "firefox-dev", - "flatpak", - "fzf", - "git", - "kitty", - "lazygit", - "neovim", - "remove-retired-packages", - "ripgrep", - "sd", - "starship", - "tealdeer", - "zoxide", - "zsh", -] - -[dev.variables.packages] -dev = [ - "gcc", - "gcc-c++", - "just", - "nodejs", - "openssl", - "openssl-devel", - "tmux", - "tree-sitter-cli", -] -[dev.variables.cargo.packages] -dev = [ - "cocogitto" -] - - -[zsh.variables.packages] -zsh = [ - "zsh" -] - -[rust.variables.cargo.packages] -rust = [ - "yazi-fm", - "yazi-cli", -] diff --git a/.dotter/post_deploy.sh b/.dotter/post_deploy.sh deleted file mode 100644 index db1b97d..0000000 --- a/.dotter/post_deploy.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash - -sha256sum .dotter/cache/.dotter/pre_deploy.sh >.dotter/cache/pre_deploy.checksum diff --git a/.dotter/pre_deploy.sh b/.dotter/pre_deploy.sh deleted file mode 100755 index ed5fcf7..0000000 --- a/.dotter/pre_deploy.sh +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/env bash -# shellcheck disable=all -# This is a handlerbars template, so ignore issues - -set -euo pipefail - -checksum_file=".dotter/cache/pre_deploy.checksum" - -if [[ -e "$checksum_file" ]] && sha256sum --check "$checksum_file" >/dev/null 2>&1; then - echo "Pre deploy script has not changed, skiping script execution" - echo "To override this, remove the checksum file: $checksum_file" - exit 0 -fi - -{{!~ Detect the distribution ~}} -{{~ assign "distro" (trim (command_output "awk -F= '/^ID=/ {print $2}' /etc/os-release | tr -d '\"'")) ~}} - -{{ header "Running pre deploy script for distro" (to_title_case distro) }} - -{{ #if (is_executable "sudo") }} -{{ header "Configuring sudo" }} - -SUDOERS_FILE="/etc/sudoers.d/01-user" - -if [[ -e "${SUDOERS_FILE}" ]]; then - echo "Sudo configuration already exists, to override it remove the file: ${SUDOERS_FILE}" - exit 0 -else - sudo -B tee "${SUDOERS_FILE}" <

.*
' | - sed -e 's/
\(.*\)<\/div>
\(.*\)<\/div>/\\u\2\tnf-\1/' - )" -} - -update_nf-ls_cache() { - get_nf_cheat_sheets >"$NF_LS_DIR"/nf-ls-cheat.sh -} -export -f update_nf-ls_cache - -if [ ! -d "$NF_LS_DIR" ]; then - mkdir -p "$NF_LS_DIR" - update_nf-ls_cache -fi - -awk '{print $1 " -- " $2}' "$NF_LS_DIR"/nf-ls-cheat.sh | column -t | -fzf -m \ - --header "Nerd Font Cheat.sh" \ - --bind "enter:execute(wl-copy {+1}; notify-send 'Nerd Font Cheat.sh' '{+1} {+3} - icon has been copied')" \ - --bind "alt-u:execute(bash -c update_nf-ls_cache)" diff --git a/scripts/fzf-nf-install b/scripts/fzf-nf-install deleted file mode 100755 index e961886..0000000 --- a/scripts/fzf-nf-install +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env bash - -if [ "$(uname -s)" == "Linux" ]; then - FONT_DIR="$HOME/.local/share/fonts" - NF_DL_DIR="$HOME/.cache/fzf/nf-dl" -elif [ "$(uname -s)" == "Darwin" ]; then - FONT_DIR="/Applications/Fonts" - NF_DL_DIR="/Library/Caches/fzf/nf-dl" -fi - -blu=$(tput setaf 4) cyn=$(tput setaf 6) bld=$(tput bold) rst=$(tput sgr0) - -get_nf_links() { - curl --silent https://www.nerdfonts.com/font-downloads | grep '/download/' | cut -d'"' -f 2 | sort -u -} - -set_nf_name() { - get_nf_links | \ - awk -v blu="${blu}" -v cyn="${cyn}" -v bld="${bld}" -v rst="${rst}" \ - -F'/' ' - { - print blu bld $9 rst "&& - " cyn $0 - }' \ - | sed 's/\.zip//' | column -ts '&&' -} - -if [ ! -d "$NF_DL_DIR" ]; then - mkdir -p "$NF_DL_DIR" - set_nf_name > "$NF_DL_DIR"/nf-dl_url -fi - -declare tmp_file ls_installed_font -tmp_file="$(mktemp)"; echo 'install' > "$tmp_file"; trap 'rm -f $tmp_file' EXIT -ls_installed_font="find \"${FONT_DIR}\" -mindepth 1 -type d -printf \"${bld}${blu}%f\n\"" - -cat < "$NF_DL_DIR/nf-dl_url" | \ - fzf --ansi +x \ - --tiebreak=begin \ - --layout=reverse \ - --prompt=" nf-dl > " \ - --preview-window=hidden \ - --header=':nstall | :ninstall | :ete cache ' \ - --bind="alt-u:reload($ls_installed_font)+execute-silent(echo 'remove' > $tmp_file)" \ - --bind="alt-i:reload(cat < \"$NF_DL_DIR/nf-dl_url\")+execute-silent(echo 'install' > $tmp_file)" \ - --bind="del:execute(rm -rf $NF_DL_DIR;)" \ - --bind="enter:execute( - if grep -q 'install' $tmp_file ; then - echo -e '${bld}${blu}Downloading ${cyn}{1} Nerd Font...${rst}\n';wget {3} - [ -d ${FONT_DIR} ] || mkdir -p ${FONT_DIR}/{1} - unzip {1} -d ${FONT_DIR}/{1} - fc-cache -f ${FONT_DIR} && [ -e ${FONT_DIR}/{1} ] && echo \"\n${bld}${cyn}Nerd Font: ${blu}{1} ${rst}has been installed\n\" - echo -e \"${bld}${cyn}Would you like to delete or keep ${blu}{1}.zip${rst} (y/n):\" && rm -i {1}.zip - echo -e '\n${blu}${bld}Press any key to continue...${rst}' && read -rsk1 - else - echo -e \"${bld}${blu}Uninstall/Remove ${cyn}Nerd Font: {1} ${rst}(y/n):\" - [ -d ${FONT_DIR}/{1} ] && rm -IR ${FONT_DIR}/{1}; echo 'remove' > $tmp_file - fc-cache -f -v && echo \"\n${bld}${cyn}Nerd Font: ${blu}{1} ${rst}has been uninstalled\" - echo -e '\n${blu}${bld}Press any key to continue...${rst}' && read -rsk1 - fi - )+reload( - if grep -q 'remove' $tmp_file; then - $ls_installed_font - else cat < \"$NF_DL_DIR/nf-dl_url\" - fi)" -# to add if possible or if i can -# - preview? -# - indicator ([x] [ ] installed or not) #maybe not -# - windows? idk this shit diff --git a/scripts/fzf-player b/scripts/fzf-player deleted file mode 100755 index 1dfdf71..0000000 --- a/scripts/fzf-player +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env bash - -# ╭──────────────────────────────────────────────────────────╮ -# │ Music Streams │ -# ╰──────────────────────────────────────────────────────────╯ - -# ──────────────────────────────────────────────────────────── -# Saved streams -declare -A streams - -streams[lofi]="https://youtu.be/jfKfPfyJRdk" -streams[nintendo]="https://www.youtube.com/c/Henriko/live" -streams[synthwave]="https://www.youtube.com/live/4xDzrJKXOOY?si=3WUrIe4TWLO-fw9m" - -# ──────────────────────────────────────────────────────────── - -# play passed url if provided -url="$1" -shift - -# defaults to celluloid, fallback to mpv -if command -v celluloid &>/dev/null; then - player="celluloid --mpv-profile=low-latency,music-stream" -else - player="mpv --player-operation-mode=pseudo-gui --profile=low-latency,music-stream" -fi - -if [[ -z "$url" ]]; then - url="$(printf "%s\n" "${!streams[@]}" | fzf)" - url="${streams[$url]}" -fi - -$player "$url" &>/dev/null & diff --git a/scripts/fzf-tea b/scripts/fzf-tea deleted file mode 100755 index 3393148..0000000 --- a/scripts/fzf-tea +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash - -# ╭──────────────────────────────────────────────────────────╮ -# │ Interactivie Issue management of tea │ -# ╰──────────────────────────────────────────────────────────╯ - -# ──────────────────────────────────────────────────────────── - -tea_cache="$(mktemp --directory)" - -# TODO: Add more keybindings to interact with issues -tea i -o simple | - fzf \ - --preview "[[ -e $tea_cache/{1}.md ]] && bat -l md $tea_cache/{1}.md || tea issue --comments {1} | tee $tea_cache/{1}.md" \ - --bind "ctrl-r:execute-silent(rm -f $tea_cache/{1})+refresh-preview" \ - --bind "ctrl-o:execute-silent(tea open {1})" - -rm -rf "$tea_cache" diff --git a/scripts/fzf-tmux-sessions b/scripts/fzf-tmux-sessions deleted file mode 100755 index ebd8231..0000000 --- a/scripts/fzf-tmux-sessions +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -exclude="(scratch)" # exclude this entries, use regex: /(name1|name2)/ - -sesh connect "$( - sesh list --hide-attached --icons | - rg --invert-match "$exclude" | fzf-tmux -p 55%,60% \ - --no-sort --border-label ' sesh ' --prompt '⚡ ' \ - --header ' ^a all ^t tmux ^g configs ^x zoxide ^d tmux kill ^f find' \ - --bind "tab:down,btab:up" \ - --bind "ctrl-a:change-prompt(⚡ )+reload(sesh list --hide-attached --icons | rg --invert-match '$exclude')" \ - --bind "ctrl-t:change-prompt(🪟 )+reload(sesh list -t --hide-attached --icons | rg --invert-match '$exclude')" \ - --bind "ctrl-g:change-prompt(⚙️ )+reload(sesh list -c --hide-attached --icons | rg --invert-match '$exclude')" \ - --bind "ctrl-x:change-prompt(📁 )+reload(sesh list -z --hide-attached --icons | rg --invert-match '$exclude')" \ - --bind "ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)" \ - --bind "ctrl-d:execute(tmux kill-session -t {2})+change-prompt(⚡ )+reload(sesh list --hide-attached --icons | rg --invert-match '$exclude')" -)" diff --git a/scripts/fzf-tmux-tools-popup b/scripts/fzf-tmux-tools-popup deleted file mode 100755 index 3d2d7d1..0000000 --- a/scripts/fzf-tmux-tools-popup +++ /dev/null @@ -1,17 +0,0 @@ -#! /usr/bin/env bash - -set -e - -declare -A tools - -tools[Lazygit]="lazygit" -tools[Databases]="cd ~/.local/share/db_ui; nvim -c 'DBUI'" - -cli="$(printf "%s\n" "${!tools[@]}" | fzf)" -cli="${tools[$cli]}" - -if [[ -z "$cli" ]]; then - exit -fi - -eval "$cli" diff --git a/scripts/fzf-wikis b/scripts/fzf-wikis deleted file mode 100755 index 1f1cf92..0000000 --- a/scripts/fzf-wikis +++ /dev/null @@ -1,38 +0,0 @@ -#! /usr/bin/env bash - -set -e - -wikis_path="$HOME/Repos/wikis" -initial_path=$PWD - -if [[ -n $1 ]]; then - current_repo_name="$1" - shift -elif git rev-parse --git-dir &>/dev/null; then - current_repo_name=$(git remote get-url origin | rev | cut -d '/' -f -1 | rev | cut -d '.' -f 1) - current_repo_name="$current_repo_name.wiki" -else - echo "The command was not executed in a git repository and a repo name was not provided" - read -rn 1 -p "Press any key to exit..." - exit -fi - -path="$wikis_path/$current_repo_name" - -if [[ ! -e "$path" ]]; then - echo "The wiki for $current_repo_name doesn't exit, please clone it first to $wikis_path" - read -rn 1 -p "Press any key to exit..." - exit -fi - -cd "$path" || exit - -if [[ ! -e .zk/config.toml ]]; then - echo "ZK is not initialized in $path" - read -rn 1 -p "Press any key to exit..." - exit -fi - -zk e - -cd "$initial_path" || exit diff --git a/scripts/set-random-wallpaper b/scripts/set-random-wallpaper deleted file mode 100755 index 552aac6..0000000 --- a/scripts/set-random-wallpaper +++ /dev/null @@ -1,98 +0,0 @@ -#!/usr/bin/env bash - -# Original script steal from (specific commit): -# https://github.com/lime-desu/dootsfile/blob/58abca63dfd596d4812fcf95567cc3ad63ffbb6f/scripts/set-random-wallpaper.sh - -WALLPAPER_DIR="${HOME}/Drives/Stuff/Pictures/Wallpapers/Landscape/" -WALLPAPER_PREFIX="" -RANDOM_PICTURE=$(fd -apt f "$WALLPAPER_PREFIX" "$WALLPAPER_DIR" | shuf -n 1) -CURRENT_DESKTOP="$(echo "$XDG_CURRENT_DESKTOP" | awk '{for (i=1;i<=NF;i++) { $i=toupper(substr($i,1,1)) tolower(substr($i,2)) }}1')" - -# Extra actions -declare -A CONFIG -CONFIG["delete_current"]=false - -show_help() { - echo -e "${BLD}Usage: ${GRN}set-random-wallpaper${RST}${YLW} [OPTION]${RST}" - echo -e "" - echo -e "${BLD} Options:${RST}" - echo -e "${YLW} -d, delete ${RST}delete current wallpaper" - echo -e "${YLW} -h, --help ${RST}Show this help" -} - -case "$1" in -delete | -d) - CONFIG["delete_current"]=true - ;; -help | -h) - show_help - ;; -*) ;; -esac - -shift - -case "$CURRENT_DESKTOP" in -Gnome) - - if [[ "${CONFIG[delete_current]}" == true ]]; then - file_path="$(gsettings get org.gnome.desktop.background picture-uri)" - file_path="${file_path:8:-1}" - - rm -iv "$file_path" - fi - - gsettings set org.gnome.desktop.background picture-uri "file://$RANDOM_PICTURE" - gsettings set org.gnome.desktop.background picture-uri-dark "file://$RANDOM_PICTURE" - ;; -Xfce) - backdrop=$(xfconf-query --channel xfce4-desktop --property /backdrop --list | grep -E -e "screen.*/monitor.*image-path$" -e "screen.*/monitor.*/last-image$") - for i in ${backdrop}; do - xfconf-query --channel xfce4-desktop --property "$i" --create --type string --set "$RANDOM_PICTURE" - xfconf-query --channel xfce4-desktop --property "$i" --set "$RANDOM_PICTURE" - done - ;; -KDE) - export DISPLAY=:0 - kwriteconfig5 --file kdeglobals --group Wallpaper --key Picture "$RANDOM_PICTURE" - qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript ' - var allDesktops = desktops(); - print (allDesktops); - for (i=0;i/dev/null; then - feh --bg-scale "$RANDOM_PICTURE" - elif command -v nitrogen >/dev/null; then - nitrogen --set-scaled "$RANDOM_PICTURE" - fi - ;; -*) - notify-send "Error: $(basename "$0")" "This script does not support $CURRENT_DESKTOP." - exit 1 - ;; -esac - -if [[ "$CURRENT_DESKTOP" =~ ^(Gnome|Xfce|KDE|Sway|i3)$ ]]; then - display_path="$(echo "$RANDOM_PICTURE" | awk -F '/' '{print "(...)/"$(NF-1)"/"$NF}')" - notify-send 'Wallpaper changed:' "$display_path" -fi diff --git a/scripts/sort-wallpapers b/scripts/sort-wallpapers deleted file mode 100755 index 62d5763..0000000 --- a/scripts/sort-wallpapers +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env bash - -set -euo pipefail - -SCAN_DIR=${HOME}/Drives/Stuff/Pictures/Waifus -OUPUT_DIR=${HOME}/Drives/Stuff/Pictures/Wallpapers -# SCAN_DIR=${HOME}/Pictures/Screenshots - -franchises=( - Mario - Zelda - Persona -) - -orientations=( - Portrait - Landscape -) - -# TODO: give option to exit script while inside fzf -get_fzf() { - # run inside subshell because fzf exit with 1 when no mach has been selected - output="$( - printf "%s\n" "$@" | fzf \ - --reverse \ - --height '10' \ - --print-query \ - --cycle \ - --bind \ - "alt-1:pos(1)+accept,alt-2:pos(2)+accept,alt-3:pos(3)+accept,alt-4:pos(4)+accept,alt-5:pos(5)+accept,alt-6:pos(6)+accept,alt-7:pos(7)+accept,alt-8:pos(8)+accept,alt-9:pos(9)+accept,alt-0:pos(10)+accept" - )" - echo "$output" -} - -readarray -td '' wallpapers < <( - fd -ap -e jpg -e jpeg -e png -e webp \ - --max-depth 2 \ - --print0 \ - --base-directory "$SCAN_DIR" -) - -# open all images in imv -imv "${wallpapers[@]}" & -pid=$! - -sleep 1 - -for dir in "${orientations[@]}"; do - mkdir -p "$OUPUT_DIR/$dir" -done - -for img in "${wallpapers[@]}"; do - orientation=$(get_fzf "${orientations[@]}") - franchise=$(get_fzf "${franchises[@]}") - - cp "$img" "$OUPUT_DIR/$orientation" - - echo "$img $orientation $franchise" - imv-msg "$pid" next -done - -imv-msg "$pid" close all From 742388c3ca09d35b8a4b59a4dc8f0aeaee938513 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 15 Apr 2025 11:43:00 -0400 Subject: [PATCH 080/152] add podman systemd files for database --- .../.config/containers/systemd/dev-databases.pod | 4 ++++ .../.config/containers/systemd/dev-dbui.container | 14 ++++++++++++++ .../containers/systemd/dev-postgres.container | 7 +++++++ Configs/nvim/.config/nvim/lua/aleidk/options.lua | 11 ++++++++++- Configs/zsh/.config/zsh/aliases/aliases.zsh | 7 ++++++- Hooks/containers/post_reload_daemons.sh | 3 +++ 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 Configs/containers/.config/containers/systemd/dev-databases.pod create mode 100644 Configs/containers/.config/containers/systemd/dev-dbui.container create mode 100644 Configs/containers/.config/containers/systemd/dev-postgres.container create mode 100755 Hooks/containers/post_reload_daemons.sh diff --git a/Configs/containers/.config/containers/systemd/dev-databases.pod b/Configs/containers/.config/containers/systemd/dev-databases.pod new file mode 100644 index 0000000..c11ff1b --- /dev/null +++ b/Configs/containers/.config/containers/systemd/dev-databases.pod @@ -0,0 +1,4 @@ +[Pod] +PodName=databases +PublishPort=9090:3000 +PublishPort=5432:5432 diff --git a/Configs/containers/.config/containers/systemd/dev-dbui.container b/Configs/containers/.config/containers/systemd/dev-dbui.container new file mode 100644 index 0000000..6a8b0f1 --- /dev/null +++ b/Configs/containers/.config/containers/systemd/dev-dbui.container @@ -0,0 +1,14 @@ +[Container] +Image=docker.io/dbgate/dbgate +AutoUpdate=registry +Pod=dev-databases.pod +Environment=CONNECTIONS=POSTGRES +Environment=LABEL_POSTGRES="Localhost Postgres" +Environment=ENGINE_POSTGRES=postgres@dbgate-plugin-postgres +Environment=SERVER_POSTGRES=localhost +Environment=PORT_POSTGRES=5432 +Environment=USER_POSTGRES=postgres +Environment=PASSWORD_POSTGRES=1234 + +[Service] +ExecStartPost=/usr/bin/xdg-open http://localhost:9090 diff --git a/Configs/containers/.config/containers/systemd/dev-postgres.container b/Configs/containers/.config/containers/systemd/dev-postgres.container new file mode 100644 index 0000000..cd54380 --- /dev/null +++ b/Configs/containers/.config/containers/systemd/dev-postgres.container @@ -0,0 +1,7 @@ +[Container] +Image=docker.io/postgres:17 +AutoUpdate=registry +Environment=POSTGRES_USER=postgres +Environment=POSTGRES_PASSWORD=1234 +Pod=dev-databases.pod +Volume=dev-postgres-data:/var/lib/postgresql/data diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index c51504c..6378dc5 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -116,7 +116,7 @@ vim.filetype.add({ mdx = "mdx", log = "log", conf = "conf", - env = "dotenv", + env = "dotenv" }, -- Detect and apply filetypes based on the entire filename filename = { @@ -131,5 +131,14 @@ vim.filetype.add({ [".*%.blade%.php"] = "blade", [".*%.hurl.*"] = "hurl", [".*/hypr/.*%.conf"] = "hyprlang", + ['.*/systemd/.*%.(%a+)'] = function(path, bufnr, ext) + vim.print(ext) + local allowed = { "container", "volume", "network", "build", "pod", "kube" } + for _, v in ipairs(allowed) do + if v == ext then + return "ini" + end + end + end, }, }) diff --git a/Configs/zsh/.config/zsh/aliases/aliases.zsh b/Configs/zsh/.config/zsh/aliases/aliases.zsh index 3076dc6..b3fa6e1 100644 --- a/Configs/zsh/.config/zsh/aliases/aliases.zsh +++ b/Configs/zsh/.config/zsh/aliases/aliases.zsh @@ -42,7 +42,12 @@ alias \ alias \ pco='podman compose' \ - pps="podman ps --format 'table {{.ID}}\t{{.Names}}\t{{.State}}\t{{.Status}}\t{{.RunningFor}}'" + pps="podman ps --format 'table {{.ID}}\t{{.Names}}\t{{.State}}\t{{.Status}}\t{{.RunningFor}}'" \ + psd="/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun | bat -l ini" + +alias \ + sysctl='sudo systemctl' \ + sysctl-user='systemctl --user' # Misc alias \ diff --git a/Hooks/containers/post_reload_daemons.sh b/Hooks/containers/post_reload_daemons.sh new file mode 100755 index 0000000..ff88b1b --- /dev/null +++ b/Hooks/containers/post_reload_daemons.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +systemctl --user daemon-reload From 4751ecc2ef431cebcc88898d74d01df5b5fcda81 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 17 Apr 2025 12:03:21 -0400 Subject: [PATCH 081/152] fix some config in nvim_unstable --- Configs/git/.config/git/ignore | 3 + .../.config/nvim_unstable/lazy-lock.json | 3 +- .../lua/aleidk/plugins/formatter.lua | 2 +- .../nvim_unstable/lua/aleidk/plugins/fzf.lua | 6 +- .../nvim_unstable/lua/aleidk/plugins/mini.lua | 30 ++++++++- .../lua/aleidk/plugins/smart-splits.lua | 64 +++++++++++++++++++ Configs/zsh/.config/zsh/aliases/nvim.zsh | 4 +- 7 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/smart-splits.lua diff --git a/Configs/git/.config/git/ignore b/Configs/git/.config/git/ignore index 6417329..df7b329 100644 --- a/Configs/git/.config/git/ignore +++ b/Configs/git/.config/git/ignore @@ -4,3 +4,6 @@ # PHP Stuff vendor .php-cs-fixer.cache + +# Neovim +Session.vim diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json index ddcd7d2..78fc60e 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json +++ b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json @@ -1,7 +1,7 @@ { "catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "b1a75324ddf96b7bb84963a297b1ed334db087c0" }, + "conform.nvim": { "branch": "master", "commit": "6632e7d788a85bf8405ea0c812d343fc308b7b8c" }, "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, "fzf-lua": { "branch": "main", "commit": "6488ada2f376e47789391dc353b6d91a3f9de6f6" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, @@ -19,6 +19,7 @@ "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "remote-sshfs.nvim": { "branch": "main", "commit": "1ae5784bf0729c8b03cb7fe6561508a673c9adc8" }, "render-markdown": { "branch": "main", "commit": "92256e02db70c474f97fc461b6b6bc4aff7a499a" }, + "smart-splits.nvim": { "branch": "master", "commit": "ddb23c1a1cf1507bda487cda7f6e4690965ef9f5" }, "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" }, "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua index 2cb4e71..66311e9 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua @@ -73,7 +73,7 @@ return { print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) end - MAP("n", "uf", toggleAutoFormat, "Toggle auto format") + vim.keymap.set("n", "uf", toggleAutoFormat, { desc = "Toggle auto format", silent = true }) vim.api.nvim_create_user_command("Fmt", function(args) local range = nil diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua index 991d804..a5d3db3 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua @@ -1,7 +1,11 @@ return { "ibhagwan/fzf-lua", + lazy = false, -- Required to register vim.ui.select() wrapper dependencies = { "echasnovski/mini.nvim" }, - opts = {}, + config = function() + require("fzf-lua").setup() + require("fzf-lua").register_ui_select() + end, keys = { { "ff", function() require("fzf-lua").files() end, desc = "Find files" }, { "fb", function() require("fzf-lua").buffers() end, desc = "Find buffers" }, diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua index 88f6bbe..3cf4c42 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua @@ -25,14 +25,13 @@ return { } }) vim.notify = require('mini.notify').make_notify() - require('mini.starter').setup() require('mini.statusline').setup({}) require('mini.diff').setup({ view = { style = 'sign' } }) require('mini.git').setup({}) - local rhs = 'lua MiniGit.show_at_cursor()' - vim.keymap.set({ 'n', 'x' }, 'gs', rhs, { desc = 'Show at cursor', silent = true }) + vim.keymap.set({ 'n', 'x' }, 'gs', 'lua MiniGit.show_at_cursor()', + { desc = 'Show at cursor', silent = true }) local starter = require('mini.starter') starter.setup({ @@ -40,6 +39,7 @@ return { evaluate_single = true, items = { starter.sections.recent_files(10, true), + starter.sections.sessions(5, true), starter.sections.pick(), starter.sections.builtin_actions(), }, @@ -197,5 +197,29 @@ return { hex_color = hipatterns.gen_highlighter.hex_color(), }, }) + + require('mini.sessions').setup({ + autowrite = false + }) + vim.keymap.set('n', 'us', function() + local default_name = require('mini.sessions').get_latest() or "Session.vim" + vim.ui.input({ prompt = "Session name: ", default = default_name }, function(input) + if input == nil then + return + end + require('mini.sessions').write(input) + end) + end, + { desc = 'Save session', silent = true }) + vim.keymap.set('n', 'uS', function() require('mini.sessions').read() end, + { desc = 'Load session (latest)', silent = true }) + + vim.api.nvim_create_user_command("SessionSelect", function() + require('mini.sessions').select('read') + end, {}) + + vim.api.nvim_create_user_command("SessionDelete", function() + require('mini.sessions').select('delete') + end, {}) end } diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/smart-splits.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/smart-splits.lua new file mode 100644 index 0000000..c619888 --- /dev/null +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/smart-splits.lua @@ -0,0 +1,64 @@ +return { + "mrjones2014/smart-splits.nvim", + lazy = false, + build = './kitty/install-kittens.bash', + opts = { ignored_filetypes = { "nofile", "quickfix", "qf", "prompt" }, ignored_buftypes = { "nofile" } }, + keys = { + { + "", + function() + require("smart-splits").move_cursor_left() + end, + desc = "Move to left window", + }, + { + "", + function() + require("smart-splits").move_cursor_down() + end, + desc = "Move to bottom window", + }, + { + "", + function() + require("smart-splits").move_cursor_up() + end, + desc = "Move to upper window", + }, + { + "", + function() + require("smart-splits").move_cursor_right() + end, + desc = "Move to right window", + }, + { + "", + function() + require("smart-splits").resize_left() + end, + desc = "Move to left window", + }, + { + "", + function() + require("smart-splits").resize_down() + end, + desc = "Move to bottom window", + }, + { + "", + function() + require("smart-splits").resize_up() + end, + desc = "Move to upper window", + }, + { + "", + function() + require("smart-splits").resize_right() + end, + desc = "Move to right window", + }, + }, +} diff --git a/Configs/zsh/.config/zsh/aliases/nvim.zsh b/Configs/zsh/.config/zsh/aliases/nvim.zsh index 4dc86ec..9cdb4b1 100644 --- a/Configs/zsh/.config/zsh/aliases/nvim.zsh +++ b/Configs/zsh/.config/zsh/aliases/nvim.zsh @@ -1,8 +1,6 @@ alias \ vi='nvim' \ - vi-unstable='NVIM_APPNAME=nvim-unstable nvim' \ - vi-astro='NVIM_APPNAME=Distro-AstroNvim nvim' \ - vi-lazy='NVIM_APPNAME=LazyVim nvim' + vi-unstable='NVIM_APPNAME=nvim_unstable nvim' vis() { items=( From 2bd9b3d5189710ad7f7a355abd0a854fe1f2064f Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 17 Apr 2025 13:30:34 -0400 Subject: [PATCH 082/152] update lsp config in neovim_unstable --- .../nvim_unstable/lua/aleidk/options.lua | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua index ed7f0bf..428672e 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua @@ -50,7 +50,6 @@ opt.splitbelow = true -- Put new windows below current opt.splitright = true -- Put new windows right of current opt.tabstop = 2 -- Number of spaces tabs count for opt.termguicolors = true -- True color support -opt.timeoutlen = 300 opt.undofile = true opt.undolevels = 10000 opt.updatetime = 200 -- Save swap file and trigger CursorHold @@ -157,5 +156,23 @@ vim.lsp.enable({ }) vim.diagnostic.config({ - virtual_lines = { current_line = true } + virtual_lines = { current_line = true }, + on_attach = function(_, bufnr) + vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = bufnr, desc = "Code Action" }) + vim.keymap.set({ "n", "x", "v" }, "ld", vim.diagnostic.open_float, { desc = "Show diagnostic under cursor" }) + vim.keymap.set({ "n", "x", "v" }, "lc", function() + local curpos = vim.fn.getcurpos() + local diagnostics = vim.diagnostic.get(0, { lnum = curpos[2] - 1 }) + + if #diagnostics == 0 then + vim.notify("No diagnostic under cursor") + return + end + + local diagnostic = diagnostics[1] + local msg = string.format("%s [%s]: %s", diagnostic.source, diagnostic.code, diagnostic.message) + vim.fn.setreg("+", msg) + vim.notify("Diagnostic saved to clipboard:\n\n" .. msg) + end, { buffer = bufnr, desc = "Copy diagnostic to clipboard" }) + end, }) From a8771d5166be5c5533f839f908d3ab64c8507cf4 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 17 Apr 2025 16:18:37 -0400 Subject: [PATCH 083/152] use blink.cmp in neovim_unstable --- .../.config/nvim_unstable/init.lua | 1 + .../.config/nvim_unstable/lazy-lock.json | 4 +- .../nvim_unstable/lsp/rust_analyzer.lua | 5 -- .../nvim_unstable/lua/aleidk/autocmds.lua | 21 ++++++- .../nvim_unstable/lua/aleidk/options.lua | 18 ------ .../lua/aleidk/plugins/completion.lua | 63 +++++++++++++++++++ .../nvim_unstable/lua/aleidk/plugins/init.lua | 1 + .../lua/aleidk/plugins/linters.lua | 4 ++ .../nvim_unstable/lua/aleidk/plugins/mini.lua | 14 ++--- 9 files changed, 95 insertions(+), 36 deletions(-) delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lsp/rust_analyzer.lua create mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/completion.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/init.lua b/Configs/nvim_unstable/.config/nvim_unstable/init.lua index 329586b..5b8bbcd 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/init.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/init.lua @@ -16,6 +16,7 @@ end vim.opt.rtp:prepend(lazypath) require("aleidk.options") +require("aleidk.autocmds") require("aleidk.keymaps") -- Setup lazy.nvim diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json index 78fc60e..38cc8e4 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json +++ b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json @@ -1,4 +1,6 @@ { + "blink.cmp": { "branch": "main", "commit": "cb5e346d9e0efa7a3eee7fd4da0b690c48d2a98e" }, + "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, "catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, "conform.nvim": { "branch": "master", "commit": "6632e7d788a85bf8405ea0c812d343fc308b7b8c" }, @@ -11,7 +13,7 @@ "mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" }, "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, "nvim-lint": { "branch": "master", "commit": "93b8040115c9114dac1047311763bef275e752dc" }, - "nvim-lspconfig": { "branch": "master", "commit": "ff6471d4f837354d8257dfa326b031dd8858b16e" }, + "nvim-lspconfig": { "branch": "master", "commit": "a56f4b9dde5daf3d4c7bb50cf78ab609537f2259" }, "nvim-treesitter": { "branch": "master", "commit": "9be6836ebeb88a536055bf1ce0961eef68da4bc6" }, "nvim-treesitter-context": { "branch": "master", "commit": "93b29a32d5f4be10e39226c6b796f28d68a8b483" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lsp/rust_analyzer.lua b/Configs/nvim_unstable/.config/nvim_unstable/lsp/rust_analyzer.lua deleted file mode 100644 index b2b8a12..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lsp/rust_analyzer.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - cmd = { "rust-analyzer" }, - filetypes = { 'rust' }, - root_markers = { "cargo.toml" }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua index 54e2c9b..9e7e188 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua @@ -6,14 +6,29 @@ vim.api.nvim_create_autocmd('LspAttach', { return end + vim.bo[args.buf].omnifunc = 'v:lua.MiniCompletion.completefunc_lsp' + -- Prefer LSP folding if client supports it if client:supports_method('textDocument/foldingRange') then local win = vim.api.nvim_get_current_win() vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' end - if client:supports_method 'textDocument/completion' then - vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true }) - end + vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = args.buf, desc = "Code Action" }) + vim.keymap.set({ "n", "x", "v" }, "ld", vim.diagnostic.open_float, { desc = "Show diagnostic under cursor" }) + vim.keymap.set({ "n", "x", "v" }, "lc", function() + local curpos = vim.fn.getcurpos() + local diagnostics = vim.diagnostic.get(0, { lnum = curpos[2] - 1 }) + + if #diagnostics == 0 then + vim.notify("No diagnostic under cursor") + return + end + + local diagnostic = diagnostics[1] + local msg = string.format("%s [%s]: %s", diagnostic.source, diagnostic.code, diagnostic.message) + vim.fn.setreg("+", msg) + vim.notify("Diagnostic saved to clipboard:\n\n" .. msg) + end, { buffer = args.buf, desc = "Copy diagnostic to clipboard" }) end, }) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua index 428672e..96f4643 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua @@ -157,22 +157,4 @@ vim.lsp.enable({ vim.diagnostic.config({ virtual_lines = { current_line = true }, - on_attach = function(_, bufnr) - vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = bufnr, desc = "Code Action" }) - vim.keymap.set({ "n", "x", "v" }, "ld", vim.diagnostic.open_float, { desc = "Show diagnostic under cursor" }) - vim.keymap.set({ "n", "x", "v" }, "lc", function() - local curpos = vim.fn.getcurpos() - local diagnostics = vim.diagnostic.get(0, { lnum = curpos[2] - 1 }) - - if #diagnostics == 0 then - vim.notify("No diagnostic under cursor") - return - end - - local diagnostic = diagnostics[1] - local msg = string.format("%s [%s]: %s", diagnostic.source, diagnostic.code, diagnostic.message) - vim.fn.setreg("+", msg) - vim.notify("Diagnostic saved to clipboard:\n\n" .. msg) - end, { buffer = bufnr, desc = "Copy diagnostic to clipboard" }) - end, }) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/completion.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/completion.lua new file mode 100644 index 0000000..1101f70 --- /dev/null +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/completion.lua @@ -0,0 +1,63 @@ +return { + "saghen/blink.cmp", + lazy = false, + version = "*", + dependencies = { + "neovim/nvim-lspconfig", + "echasnovski/mini.nvim", + "folke/lazydev.nvim", + { "saghen/blink.compat", version = "*", }, + }, + opts = function() + local window_options = { + border = "rounded", + winblend = vim.o.pumblend, + } + + ---@module 'blink.cmp' + ---@type blink.cmp.Config + return { + appearance = { + nerd_font_variant = 'mono' + }, + completion = { + accept = { auto_brackets = { enabled = true }, }, + -- Show documentation when selecting a completion item + documentation = { auto_show = true, auto_show_delay_ms = 500 }, + + -- Display a preview of the selected item on the current line + ghost_text = { enabled = true }, + }, + keymap = { + preset = "enter", + [""] = { 'select_next', 'fallback' }, + [""] = { 'select_prev', 'fallback' }, + [""] = { 'scroll_documentation_up', 'fallback' }, + [""] = { 'scroll_documentation_down', 'fallback' }, + }, + sources = { + providers = { + dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" }, + lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, + luasnip = { + name = 'luasnip', + module = 'blink.compat.source', + score_offset = -3, + opts = { + use_show_condition = false, + show_autosnippets = true, + }, + }, + }, + default = { + "lsp", + "path", + "snippets", + "buffer", + "dadbod", + "lazydev", + }, + }, + } + end +} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua index 1f62383..3d74e7f 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua @@ -1,4 +1,5 @@ return { + 'neovim/nvim-lspconfig', 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically { "nvim-tree/nvim-web-devicons", lazy = true }, { diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua index 06aec9f..4e13ecd 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua @@ -14,6 +14,10 @@ return { NeogitCommitMessage = { "gitlint" }, gitcommit = { "gitlint" }, markdown = { "markdownlint" }, + javascript = { "biomejs" }, + typescript = { "biomejs" }, + javascriptreact = { "biomejs" }, + typescriptreact = { "biomejs" }, } vim.api.nvim_create_autocmd({ "BufWritePost" }, { diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua index 3cf4c42..bdaace6 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua @@ -6,7 +6,9 @@ return { }, config = function() require('mini.icons').setup() - require('mini.bracketed').setup() -- [] movement for various stuff + require('mini.bracketed').setup({ + diagnostic = { options = { severity = vim.diagnostic.severity.ERROR } }, + }) require("mini.ai").setup({}) require('mini.cursorword').setup() -- Highlight word under cursor require('mini.extra').setup() @@ -17,14 +19,9 @@ return { require('mini.splitjoin').setup() require("mini.align").setup({}) require('mini.animate').setup() - require('mini.notify').setup({ - -- Notifications about LSP progress - lsp_progress = { - -- Whether to enable showing - enable = false, - } - }) + require('mini.notify').setup() vim.notify = require('mini.notify').make_notify() + vim.keymap.set('n', 'un', require('mini.notify').show_history, { desc = 'Show notifications', silent = true }) require('mini.statusline').setup({}) require('mini.diff').setup({ view = { style = 'sign' } }) @@ -160,7 +157,6 @@ return { { mode = "n", keys = "l", desc = "+LSP" }, { mode = "n", keys = "r", desc = "+Replace" }, { mode = "n", keys = "u", desc = "+UI & Config" }, - { mode = "n", keys = "un", desc = "+Noice" }, { mode = "n", keys = "w", desc = "+Workspace" }, { mode = "n", keys = "p", desc = "+Run stuff" }, { mode = "n", keys = "z", desc = "+ZK" }, From 6dc7e82e94b1b135a2c2947fc187a0fb43266e56 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 17 Apr 2025 17:59:42 -0400 Subject: [PATCH 084/152] minimal updates --- Configs/helix/.config/helix/config.toml | 4 ++++ Configs/yazi/.config/yazi/package.toml | 4 ++-- Configs/yazi/.config/yazi/yazi.toml | 2 +- Configs/zsh/zprofile | 7 +------ 4 files changed, 8 insertions(+), 9 deletions(-) diff --git a/Configs/helix/.config/helix/config.toml b/Configs/helix/.config/helix/config.toml index f1a4ddf..2553571 100644 --- a/Configs/helix/.config/helix/config.toml +++ b/Configs/helix/.config/helix/config.toml @@ -1,5 +1,9 @@ theme = "catppuccin_macchiato" +[keys.normal] +H = ":buffer-previous" +L = ":buffer-next" + [keys.normal.g] u = "switch_to_lowercase" U = "switch_to_uppercase" diff --git a/Configs/yazi/.config/yazi/package.toml b/Configs/yazi/.config/yazi/package.toml index 7629b7a..2b66268 100644 --- a/Configs/yazi/.config/yazi/package.toml +++ b/Configs/yazi/.config/yazi/package.toml @@ -20,5 +20,5 @@ hash = "aef2b1a805b80cce573bb766f1459d88" [[flavor.deps]] use = "yazi-rs/flavors:catppuccin-macchiato" -rev = "df95930" -hash = "c34feed32d555e79ab9a0c0a7bdda2be" +rev = "c023460" +hash = "3ec21bcfd2735cfcbab61faaf43e59e4" diff --git a/Configs/yazi/.config/yazi/yazi.toml b/Configs/yazi/.config/yazi/yazi.toml index c5152a1..3600ca2 100644 --- a/Configs/yazi/.config/yazi/yazi.toml +++ b/Configs/yazi/.config/yazi/yazi.toml @@ -49,7 +49,7 @@ rules = [ { mime = "image/*", use = ["open", "reveal"] }, # Media - { mime = "{audio,video}/*", use = ["play", "reveal"] }, + { mime = "{audio,video}/*", use = ["play", "open", "reveal"] }, { mime = "inode/x-empty", use = ["edit", "reveal"] }, # JSON diff --git a/Configs/zsh/zprofile b/Configs/zsh/zprofile index 7704fba..dd20b5a 100644 --- a/Configs/zsh/zprofile +++ b/Configs/zsh/zprofile @@ -22,11 +22,6 @@ update_path "/usr/local/bin" export NPM_PACKAGES="$HOME/.npm-packages" export NODE_PATH="$NPM_PACKAGES/lib/node_modules${NODE_PATH:+:$NODE_PATH}" -# Unset manpath so we can inherit from /etc/manpath via the `manpath` -# command -unset MANPATH # delete if you already modified MANPATH elsewhere in your config -export MANPATH="$NPM_PACKAGES/share/man:$(manpath)" - update_path "$NPM_PACKAGES/bin" {{ /if }} @@ -50,7 +45,7 @@ source "$HOME/.rye/env" {{ /if }} {{ #if (is_executable "cargo") }} -. "$HOME/.cargo/env" +# . "$HOME/.cargo/env" update_path "$HOME/.cargo/bin/" {{ /if }} From 237a855ae5219c0615a5fc5dc148594c598af4cc Mon Sep 17 00:00:00 2001 From: aleidk Date: Sun, 20 Apr 2025 18:49:34 -0400 Subject: [PATCH 085/152] minimal updates --- Configs/jetbrains/.ideavimrc | 127 ++++++++++++++++++ .../.config/nvim_unstable/lazy-lock.json | 2 +- .../lua/aleidk/plugins/formatter.lua | 3 +- 3 files changed, 130 insertions(+), 2 deletions(-) create mode 100644 Configs/jetbrains/.ideavimrc diff --git a/Configs/jetbrains/.ideavimrc b/Configs/jetbrains/.ideavimrc new file mode 100644 index 0000000..d09e662 --- /dev/null +++ b/Configs/jetbrains/.ideavimrc @@ -0,0 +1,127 @@ +" .ideavimrc is a configuration file for IdeaVim plugin. It uses +" the same commands as the original .vimrc configuration. +" You can find a list of commands here: https://jb.gg/h38q75 +" Find more examples here: https://jb.gg/share-ideavimrc + +" UI/UX +set scrolloff=15 +set autoindent +set relativenumber +set showcmd +set showmode +set ideajoin +set startofline + +" search +set hlsearch +set incsearch +set smartcase + +" system clipboard +set clipboard+=unnamed + +let mapleader=" " +let g:mapleader=" " + + +"" Plugins +" --- Enable IdeaVim plugins https://jb.gg/ideavim-plugins + +" set sneak +set highlightedyank +set exchange +set commentary +set matchit +set mini-ai +set vim-paragraph-motion +set peekaboo +set surround + +" More text objects +set argtextobj +set functiontextobj +set textobj-indent + +set which-key +set notimeout +let g:WhichKey_ShowVimActions = "true" +let g:WhichKey_SortOrder = "by_key_prefix_first" + +set NERDTree +let g:NERDTreeMapActivateNode = "l" +let g:NERDTreeMapPreview = "" +let g:NERDTreeMapJumpParent = "h" +nmap e :NERDTree + +" surround +Plug "tpope/vim-surround" + +" Don't use Ex mode, use Q for formatting. +map Q gq +" Prevent movement +nmap +vmap +let g:WhichKeyDesc_Nop = "" + +"" find +let g:WhichKeyDesc_Find = "f Find" +nmap fF (SearchEverywhere) +let g:WhichKeyDesc_Find_Everywhere = "fF Everywhere" + +nmap ff (GotoFile) +let g:WhichKeyDesc_Find_Files = "ff Files" + +nmap fr (RecentFiles) +let g:WhichKeyDesc_Find_Recents = "fr Recent" + +"" code jump +" nmap gd (GotoSuperMethod) +" nmap gD (GotoDeclaration) +" nmap gy (GotoTypeDeclaration) +" nmap gri (GotoImplementation) +" nmap grr (FindUsages) +" nmap lR (FindUsages) + +"" editing +let g:WhichKeyDesc_Commentary = "gc Comment" +" nmap gco o(CommentByLineComment) +" nmap gcO O(CommentByLineComment) + +" nmap lf (ReformatCode) +" vmap lf (ReformatCode) +" nmap lr (RenameElement) + +"" git operation +nmap gt (ActivateCommitToolWindow) +" nmap gC (Vcs.ShowTabbedFileHistory) +nmap gr (Vcs.RollbackChangedLines) +nmap gR (ChangesView.Revert) +" nmap gl (Annotate) + +"" tabs +nmap H (PreviousTab) +nmap L (NextTab) +" nmap bc (CloseAllEditorsButActive) +" nmap bC (CloseAllEditors) +" nmap c (CloseContent) + +"" panels +nmap h +nmap l +nmap k +nmap j + +nmap (SplitVertically) +nmap ° (SplitHorizontally) + +"" debug +" nmap dc (Debug) +" nmap dq (Stop) +" nmap db (ToggleLineBreakpoint) +" nmap do (StepOver) +" nmap di (StepInto) +" nmap dO (StepOut) +" nmap dE (EvaluateExpression) + +"" 快速关闭上次搜索结果高亮 +nmap :nohlsearch \ No newline at end of file diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json index 38cc8e4..8fce00c 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json +++ b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json @@ -3,7 +3,7 @@ "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, "catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "6632e7d788a85bf8405ea0c812d343fc308b7b8c" }, + "conform.nvim": { "branch": "master", "commit": "b1a75324ddf96b7bb84963a297b1ed334db087c0" }, "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, "fzf-lua": { "branch": "main", "commit": "6488ada2f376e47789391dc353b6d91a3f9de6f6" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua index 66311e9..58deae9 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua @@ -24,14 +24,15 @@ return { markdown = { "markdownlint" }, php = { "pint" }, python = { "ruff_format", "ruff_organize_imports" }, + rust = { "rustfmt" }, scss = { "biome", "prettierd", "prettier", stop_after_first = true }, sh = { "shfmt" }, + sql = { "sleek" }, toml = { "taplo" }, typescript = { "biome" }, typescriptreact = { "biome" }, xml = { "lemminx" }, zsh = { "shfmt" }, - sql = { "sleek" } }, formatters = { djlint = { From dfeb4b9516f89ec148c359a339c8ac44d20672da Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 21 Apr 2025 09:25:24 -0400 Subject: [PATCH 086/152] move ideavimrc file placement --- Configs/jetbrains/{.ideavimrc => .config/ideavim/ideavimrc} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Configs/jetbrains/{.ideavimrc => .config/ideavim/ideavimrc} (100%) diff --git a/Configs/jetbrains/.ideavimrc b/Configs/jetbrains/.config/ideavim/ideavimrc similarity index 100% rename from Configs/jetbrains/.ideavimrc rename to Configs/jetbrains/.config/ideavim/ideavimrc From fac9010c68acfdc50053a825896cc187758a1a94 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 25 Apr 2025 12:26:47 -0400 Subject: [PATCH 087/152] minor update --- Configs/jetbrains/.config/ideavim/ideavimrc | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/Configs/jetbrains/.config/ideavim/ideavimrc b/Configs/jetbrains/.config/ideavim/ideavimrc index d09e662..cdc42ba 100644 --- a/Configs/jetbrains/.config/ideavim/ideavimrc +++ b/Configs/jetbrains/.config/ideavim/ideavimrc @@ -17,19 +17,19 @@ set hlsearch set incsearch set smartcase -" system clipboard -set clipboard+=unnamed - let mapleader=" " let g:mapleader=" " +" system clipboard +set clipboard+=unnamedplus +set ideaput "" Plugins " --- Enable IdeaVim plugins https://jb.gg/ideavim-plugins " set sneak set highlightedyank -set exchange +" set exchange set commentary set matchit set mini-ai @@ -56,11 +56,20 @@ nmap e :NERDTree " surround Plug "tpope/vim-surround" +" Mappings + +" Choose if vim or ide will handle the mapping + +" Allows to set text formatting in markdown +sethandler n:vim i-v:ide +sethandler n:vim i-v:ide + " Don't use Ex mode, use Q for formatting. map Q gq " Prevent movement nmap vmap +vmap p "_dP let g:WhichKeyDesc_Nop = "" "" find From 62518907ed5cb8ae5f83acb7fbe416f9a57b023b Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 29 Apr 2025 11:10:33 -0400 Subject: [PATCH 088/152] update config for jetbrains compatibility --- Configs/starship/.config/starship.toml | 3 ++ Configs/zsh/{zprofile => .zprofile} | 21 -------- Configs/zsh/{zshrc => .zshrc} | 75 ++++++++++---------------- 3 files changed, 31 insertions(+), 68 deletions(-) rename Configs/zsh/{zprofile => .zprofile} (62%) rename Configs/zsh/{zshrc => .zshrc} (89%) diff --git a/Configs/starship/.config/starship.toml b/Configs/starship/.config/starship.toml index cf03107..4f1fe65 100644 --- a/Configs/starship/.config/starship.toml +++ b/Configs/starship/.config/starship.toml @@ -41,6 +41,9 @@ deleted = '[ \($count\)](red) ' [golang] symbol = " " +[aws] +disabled = true + [palettes.catppuccin_macchiato] rosewater = "#f4dbd6" flamingo = "#f0c6c6" diff --git a/Configs/zsh/zprofile b/Configs/zsh/.zprofile similarity index 62% rename from Configs/zsh/zprofile rename to Configs/zsh/.zprofile index dd20b5a..141af37 100644 --- a/Configs/zsh/zprofile +++ b/Configs/zsh/.zprofile @@ -18,41 +18,20 @@ update_path "$HOME/bin" update_path "/usr/local/bin" # Dev Stuff -{{ #if (is_executable "npm") }} export NPM_PACKAGES="$HOME/.npm-packages" export NODE_PATH="$NPM_PACKAGES/lib/node_modules${NODE_PATH:+:$NODE_PATH}" - update_path "$NPM_PACKAGES/bin" -{{ /if }} -{{ #if (is_executable "pnpm") }} export PNPM_HOME="$HOME/.local/share/pnpm" -export ESLINT_USE_FLAT_CONFIG=true update_path "$PNPM_HOME" -{{ /if }} -{{ #if (command_success "[ -d $HOME/.bun ]") }} export BUN_INSTALL="$HOME/.bun" update_path "$BUN_INSTALL/bin" # bun completions [ -s "/home/aleidk/.bun/_bun" ] && source "/home/aleidk/.bun/_bun" -{{ /if }} - -{{ #if (is_executable "rye") }} source "$HOME/.rye/env" -{{ /if }} -{{ #if (is_executable "cargo") }} # . "$HOME/.cargo/env" update_path "$HOME/.cargo/bin/" -{{ /if }} - -{{~ #if (eq (env_var "OS") "macos") }} -eval "$(/opt/homebrew/bin/brew shellenv)" -{{ /if ~}} - -{{ #if (command_success "[ -e /home/linuxbrew/.linuxbrew/bin/brew ]") }} -eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" -{{ /if ~}} diff --git a/Configs/zsh/zshrc b/Configs/zsh/.zshrc similarity index 89% rename from Configs/zsh/zshrc rename to Configs/zsh/.zshrc index 2650df6..8a282c3 100644 --- a/Configs/zsh/zshrc +++ b/Configs/zsh/.zshrc @@ -24,13 +24,12 @@ zinit snippet "https://raw.githubusercontent.com/catppuccin/zsh-syntax-highlight # │ ZSH plugins │ # ╰──────────────────────────────────────────────────────────╯ -zinit light zsh-users/zsh-syntax-highlighting +# BUG: this makes it work funky on some terminals +# zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-completions zinit light zsh-users/zsh-autosuggestions -{{ #if dotter.packages.fzf }} zinit light Aloxaf/fzf-tab -{{ /if }} # ╭──────────────────────────────────────────────────────────╮ # │ Oh My Zsh snippets │ @@ -71,32 +70,32 @@ zinit cdreplay -q # ╭──────────────────────────────────────────────────────────╮ # │ Keybindings │ # ╰──────────────────────────────────────────────────────────╯ -bindkey -e -bindkey '^f' auto-suggest-accept -bindkey '^p' history-search-backward -bindkey '^n' history-search-forward -bindkey '^[w' kill-region - -# Set VIM keybindings -bindkey -v -export KEYTIMEOUT=1 -autoload -Uz edit-command-line -zle -N edit-command-line -bindkey -M vicmd V edit-command-line # Edits files in vim, hit Shift+v in normal mode - -# Add vim text objects -autoload -Uz select-bracketed select-quoted -zle -N select-quoted -zle -N select-bracketed -for km in viopp visual; do - bindkey -M $km -- '-' vi-up-line-or-history - for c in {a,i}${(s..)^:-\'\"\`\|,./:;=+@}; do - bindkey -M $km $c select-quoted - done - for c in {a,i}${(s..)^:-'()[]{}<>bB'}; do - bindkey -M $km $c select-bracketed - done -done +# bindkey -e +# bindkey '^f' auto-suggest-accept +# bindkey '^p' history-search-backward +# bindkey '^n' history-search-forward +# bindkey '^[w' kill-region +# +# # Set VIM keybindings +# # bindkey -v +# export KEYTIMEOUT=1 +# # autoload -Uz edit-command-line +# zle -N edit-command-line +# bindkey -M vicmd V edit-command-line # Edits files in vim, hit Shift+v in normal mode +# +# # Add vim text objects +# # autoload -Uz select-bracketed select-quoted +# zle -N select-quoted +# zle -N select-bracketed +# for km in viopp visual; do +# bindkey -M $km -- '-' vi-up-line-or-history +# for c in {a,i}${(s..)^:-\'\"\`\|,./:;=+@}; do +# bindkey -M $km $c select-quoted +# done +# for c in {a,i}${(s..)^:-'()[]{}<>bB'}; do +# bindkey -M $km $c select-bracketed +# done +# done # ╭──────────────────────────────────────────────────────────╮ # │ History │ @@ -120,8 +119,6 @@ setopt hist_find_no_dups zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" -{{ #if dotter.packages.fzf }} - zstyle ':completion:*' menu no zstyle ':fzf-tab:*' show-group full zstyle ':fzf-tab:*' continuous-trigger '/' @@ -160,8 +157,6 @@ zstyle ':fzf-tab:complete:git-checkout:*' fzf-preview \ # TLDR zstyle ':fzf-tab:complete:tldr:argument-1' fzf-preview 'tldr --color always $word' -{{ /if }} - # ╭──────────────────────────────────────────────────────────╮ # │ ZSH Options │ # ╰──────────────────────────────────────────────────────────╯ @@ -173,9 +168,7 @@ setopt GLOB_DOTS # │ Source other files │ # ╰──────────────────────────────────────────────────────────╯ -{{ #if dotter.packages.fzf }} source $HOME/.config/fzf/fzfrc -{{ /if }} # this prevents errors and not loading some files for file in $HOME/.config/zsh/**/*.zsh; do @@ -186,18 +179,6 @@ done # │ Init external programs │ # ╰──────────────────────────────────────────────────────────╯ -{{ #if dotter.packages.fzf }} eval "$(fzf --zsh)" -{{ /if ~}} - -{{ #if (is_executable "zoxide") }} eval "$(zoxide init --cmd cd zsh)" -{{ /if ~}} - -{{ #if dotter.packages.starship }} eval "$(starship init zsh)" -{{ /if ~}} - -{{ #if (is_executable "mise") }} -eval "$(mise activate zsh)" -{{ /if ~}} From bb989f6fc608bad5f8d9858ee3c3e509b6e63619 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 29 Apr 2025 16:51:42 -0400 Subject: [PATCH 089/152] small fix --- Configs/jetbrains/.config/ideavim/ideavimrc | 1 + 1 file changed, 1 insertion(+) diff --git a/Configs/jetbrains/.config/ideavim/ideavimrc b/Configs/jetbrains/.config/ideavim/ideavimrc index cdc42ba..2c3ee9a 100644 --- a/Configs/jetbrains/.config/ideavim/ideavimrc +++ b/Configs/jetbrains/.config/ideavim/ideavimrc @@ -63,6 +63,7 @@ Plug "tpope/vim-surround" " Allows to set text formatting in markdown sethandler n:vim i-v:ide sethandler n:vim i-v:ide +sethandler a:vim i:ide " Don't use Ex mode, use Q for formatting. map Q gq From 7bfaaf730a99cf22703211f9cb1d761f19032242 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 5 May 2025 12:02:40 -0400 Subject: [PATCH 090/152] update ideavimrc --- Configs/jetbrains/.config/ideavim/ideavimrc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Configs/jetbrains/.config/ideavim/ideavimrc b/Configs/jetbrains/.config/ideavim/ideavimrc index 2c3ee9a..646d971 100644 --- a/Configs/jetbrains/.config/ideavim/ideavimrc +++ b/Configs/jetbrains/.config/ideavim/ideavimrc @@ -71,6 +71,8 @@ map Q gq nmap vmap vmap p "_dP +vmap J (MoveStatementDown) +vmap K (MoveStatementUp) let g:WhichKeyDesc_Nop = "" "" find @@ -92,6 +94,9 @@ let g:WhichKeyDesc_Find_Recents = "fr Recent" " nmap grr (FindUsages) " nmap lR (FindUsages) +nmap lj (GotoNextError) +nmap lk (GotoPreviousError) + "" editing let g:WhichKeyDesc_Commentary = "gc Comment" " nmap gco o(CommentByLineComment) @@ -99,7 +104,7 @@ let g:WhichKeyDesc_Commentary = "gc Comment" " nmap lf (ReformatCode) " vmap lf (ReformatCode) -" nmap lr (RenameElement) +nmap lr (RenameElement) "" git operation nmap gt (ActivateCommitToolWindow) @@ -133,5 +138,8 @@ nmap ° (SplitHorizontally) " nmap dO (StepOut) " nmap dE (EvaluateExpression) +"" UI +map z (ToggleDistractionFreeMode) + "" 快速关闭上次搜索结果高亮 nmap :nohlsearch \ No newline at end of file From 11812f8d98998294abfe5f4a177434f2cb9bf123 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 7 May 2025 10:03:39 -0400 Subject: [PATCH 091/152] add youtube-music-downloader script --- Configs/bin/.local/bin/youtube-music-updater | 37 ++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100755 Configs/bin/.local/bin/youtube-music-updater diff --git a/Configs/bin/.local/bin/youtube-music-updater b/Configs/bin/.local/bin/youtube-music-updater new file mode 100755 index 0000000..1670bb8 --- /dev/null +++ b/Configs/bin/.local/bin/youtube-music-updater @@ -0,0 +1,37 @@ +#!/bin/env bash + +package=$1 +shift + +if [[ -z $package ]]; then + echo "Please specify an installation method" + echo "Available methods: Flatpak, RPM" + exit 1 +fi + +DOWNLOAD_DIR="$HOME/.local/share/youtube-music-updater" +mkdir -p "$DOWNLOAD_DIR" + +latest=$(wget 'https://github.com/th-ch/youtube-music/releases/latest/download/latest-linux.yml' -q -O -) +version=$(echo "$latest" | grep 'version' | awk '{ print $2 }') +base_url="https://github.com/th-ch/youtube-music/releases/latest/download" + +echo "Downloading YouTube Music version $version" + +case "${package,,}" in +"flatpak") + wget "$base_url/YouTube-Music-$version-x86_64.flatpak" \ + -q --show-progress \ + -O "$DOWNLOAD_DIR/YouTube-Music-$version-x86_64.flatpak" + + flatpak remove --user --assumeyes --noninteractive com.github.th_ch.youtube_music + flatpak install --user --assumeyes --noninteractive "$DOWNLOAD_DIR/YouTube-Music-$version-x86_64.flatpak" + ;; +"rpm") + wget "$base_url/youtube-music-$version.x86_64.rpm" \ + -q --show-progress \ + -O "$DOWNLOAD_DIR/youtube-music-$version.x86_64.rpm" + + sudo dnf install --assumeyes "$DOWNLOAD_DIR/youtube-music-$version.x86_64.rpm" + ;; +esac From 0627b36073297740bf2a4ac05a9fd393e80ba267 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 22 May 2025 10:39:24 -0400 Subject: [PATCH 092/152] small updates --- Configs/jetbrains/.config/ideavim/ideavimrc | 4 +- .../.config/nvim_unstable/init.lua | 2 +- .../.config/nvim_unstable/lazy-lock.json | 39 ++++++++++--------- .../nvim_unstable/lua/aleidk/options.lua | 3 +- .../nvim_unstable/lua/aleidk/plugins/init.lua | 4 ++ .../nvim_unstable/lua/aleidk/plugins/mini.lua | 12 +++++- 6 files changed, 40 insertions(+), 24 deletions(-) diff --git a/Configs/jetbrains/.config/ideavim/ideavimrc b/Configs/jetbrains/.config/ideavim/ideavimrc index 646d971..2ea8223 100644 --- a/Configs/jetbrains/.config/ideavim/ideavimrc +++ b/Configs/jetbrains/.config/ideavim/ideavimrc @@ -29,7 +29,7 @@ set ideaput " set sneak set highlightedyank -" set exchange +set exchange set commentary set matchit set mini-ai @@ -63,6 +63,8 @@ Plug "tpope/vim-surround" " Allows to set text formatting in markdown sethandler n:vim i-v:ide sethandler n:vim i-v:ide +sethandler a:ide +sethandler n:vim i-v:ide sethandler a:vim i:ide " Don't use Ex mode, use Q for formatting. diff --git a/Configs/nvim_unstable/.config/nvim_unstable/init.lua b/Configs/nvim_unstable/.config/nvim_unstable/init.lua index 5b8bbcd..149787a 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/init.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/init.lua @@ -29,5 +29,5 @@ require("lazy").setup({ -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, -- automatically check for plugin updates - checker = { enabled = true }, +-- checker = { enabled = true }, }) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json index 8fce00c..f053560 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json +++ b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json @@ -1,34 +1,35 @@ { - "blink.cmp": { "branch": "main", "commit": "cb5e346d9e0efa7a3eee7fd4da0b690c48d2a98e" }, + "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, - "catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" }, + "catppuccin": { "branch": "main", "commit": "8162a4bd9afb42837a655e404d1f937a87ba95e6" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "b1a75324ddf96b7bb84963a297b1ed334db087c0" }, - "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, - "fzf-lua": { "branch": "main", "commit": "6488ada2f376e47789391dc353b6d91a3f9de6f6" }, + "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "fzf-lua": { "branch": "main", "commit": "8adf950093af5361621cf52208d64995b1af78b5" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, - "mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" }, + "mason.nvim": { "branch": "main", "commit": "9eaedb864cdadc29c6eb7d761a6c0d8aee26c91b" }, + "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, - "nvim-lint": { "branch": "master", "commit": "93b8040115c9114dac1047311763bef275e752dc" }, - "nvim-lspconfig": { "branch": "master", "commit": "a56f4b9dde5daf3d4c7bb50cf78ab609537f2259" }, - "nvim-treesitter": { "branch": "master", "commit": "9be6836ebeb88a536055bf1ce0961eef68da4bc6" }, - "nvim-treesitter-context": { "branch": "master", "commit": "93b29a32d5f4be10e39226c6b796f28d68a8b483" }, + "nvim-lint": { "branch": "master", "commit": "f3a55c8da6317327a08b698018b786f8c4dce691" }, + "nvim-lspconfig": { "branch": "master", "commit": "f610208989e9c03561f9f601db3133f6ae398fcd" }, + "nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" }, + "nvim-treesitter-context": { "branch": "master", "commit": "4976d8b90401cba9b85f6861e4e5a6edef2f2086" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, - "nvim-web-devicons": { "branch": "master", "commit": "4c3a5848ee0b09ecdea73adcd2a689190aeb728c" }, + "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "remote-sshfs.nvim": { "branch": "main", "commit": "1ae5784bf0729c8b03cb7fe6561508a673c9adc8" }, - "render-markdown": { "branch": "main", "commit": "92256e02db70c474f97fc461b6b6bc4aff7a499a" }, - "smart-splits.nvim": { "branch": "master", "commit": "ddb23c1a1cf1507bda487cda7f6e4690965ef9f5" }, - "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" }, + "remote-sshfs.nvim": { "branch": "main", "commit": "01b89636d18a65f8bbd77749aecf4fc124e051aa" }, + "render-markdown": { "branch": "main", "commit": "dac01bd6660af337613e8cfcb23a4aec5d3c0e38" }, + "smart-splits.nvim": { "branch": "master", "commit": "3af62ec991b972379833022c496abe96d727aa35" }, + "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, - "typescript-tools.nvim": { "branch": "master", "commit": "e0887c1e336edbb01243e9f1e60d74b0bc0a2bed" }, - "vim-dadbod": { "branch": "master", "commit": "9f0ca8bcef704659820a95c3bbd2c262583a66a1" }, + "typescript-tools.nvim": { "branch": "master", "commit": "3c501d7c7f79457932a8750a2a1476a004c5c1a9" }, + "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, - "vim-dadbod-ui": { "branch": "master", "commit": "685e75b34ee0e12f92ec4507ea8bb7f1aaa936e5" }, + "vim-dadbod-ui": { "branch": "master", "commit": "460432301a5cb280ea265ddfa15c9f3dcd1d26b7" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "yazi.nvim": { "branch": "main", "commit": "aae26f6794c2afe2054a0782fb0ff07b2cd2876c" } + "yazi.nvim": { "branch": "main", "commit": "454525c33339881c574c2f35f488a13d0d6a1491" } } diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua index 96f4643..f7b0ff6 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua @@ -152,7 +152,8 @@ vim.filetype.add({ -- ╰─────────────────────────────────────────────────────────╯ vim.lsp.enable({ - "rust_analyzer" + "rust_analyzer", + "lua_ls", }) vim.diagnostic.config({ diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua index 3d74e7f..d681de9 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua @@ -1,6 +1,10 @@ return { 'neovim/nvim-lspconfig', 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically + { + "mason-org/mason.nvim", + opts = { } + }, { "nvim-tree/nvim-web-devicons", lazy = true }, { "ckolkey/ts-node-action", diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua index bdaace6..828cfca 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua @@ -18,7 +18,7 @@ return { require('mini.pairs').setup() require('mini.splitjoin').setup() require("mini.align").setup({}) - require('mini.animate').setup() + -- require('mini.animate').setup() require('mini.notify').setup() vim.notify = require('mini.notify').make_notify() vim.keymap.set('n', 'un', require('mini.notify').show_history, { desc = 'Show notifications', silent = true }) @@ -63,9 +63,17 @@ return { width_preview = 75, } }) - vim.keymap.set('n', 'e', ":lua MiniFiles.open(vim.api.nvim_buf_get_name(0))", + vim.keymap.set('n', 'e', function() + local buf_name = vim.api.nvim_buf_get_name(0) + if string.match(buf_name, "^ministarter:.*") then + MiniFiles.open() + else + MiniFiles.open(buf_name) + end + end, { desc = 'Show at cursor', silent = true }) + require('mini.move').setup({ mappings = { -- Move visual selection in Visual mode From f1430fa64d58fe346dd19b8e24f795ced4fcebbc Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 22 May 2025 10:46:07 -0400 Subject: [PATCH 093/152] remove unecesary neovim plugins for basic text editing --- .../lua/aleidk/plugins/bookmarks.lua | 4 -- .../lua/aleidk/plugins/database.lua | 44 ------------------- .../lua/aleidk/plugins/indent-blankline.lua | 30 ------------- .../lua/aleidk/plugins/remote-sshfs.lua | 7 --- .../lua/aleidk/plugins/typescript-tools.lua | 18 -------- 5 files changed, 103 deletions(-) delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/database.lua delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua index a68f973..fe3a1a2 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua +++ b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua @@ -15,10 +15,6 @@ return { }, lazy = false, cmd = "Grapple", - config = function() - local telescope = require("telescope") - telescope.load_extension("grapple") - end, keys = { { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, { "D", "Grapple reset", desc = "Delete all bookmarks" }, diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/database.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/database.lua deleted file mode 100644 index 175697b..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/database.lua +++ /dev/null @@ -1,44 +0,0 @@ -return { - "kristijanhusak/vim-dadbod-ui", - dependencies = { - { "tpope/vim-dadbod", lazy = true }, - { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, - }, - cmd = { - "DBUI", - "DBUIToggle", - "DBUIAddConnection", - "DBUIFindBuffer", - }, - keys = { - { "ud", "DBUIToggle", desc = "Toggle DB UI" }, - }, - init = function() - -- Your DBUI configuration - vim.g.db_ui_use_nerd_fonts = 1 - vim.g.db_ui_force_echo_notifications = 1 - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - command = [[setlocal omnifunc=vim_dadbod_completion#omni]], - }) - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - callback = function() - ---@diagnostic disable-next-line: missing-fields - require("cmp").setup.buffer({ - sources = { { name = "vim-dadbod-completion" }, { name = "buffer" } }, - }) - end, - }) - end, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua deleted file mode 100644 index f529305..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua +++ /dev/null @@ -1,30 +0,0 @@ -return { - -- Add indentation guides even on blank lines - "lukas-reineke/indent-blankline.nvim", - dependencies = { "nvim-treesitter/nvim-treesitter" }, - main = "ibl", - opts = { - -- char = "▏", - indent = { - char = "│", - tab_char = "│", - }, - scope = { - enabled = true, - }, - exclude = { - filetypes = { - "help", - "alpha", - "dashboard", - "neo-tree", - "Trouble", - "lazy", - "mason", - "notify", - "toggleterm", - "lazyterm", - }, - }, - }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua deleted file mode 100644 index 8c11bc1..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - { - "nosduco/remote-sshfs.nvim", - dependencies = { "nvim-telescope/telescope.nvim" }, - cmd = { "RemoteSSHFSConnect" }, - }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua deleted file mode 100644 index 7f106b0..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua +++ /dev/null @@ -1,18 +0,0 @@ -return { - "pmizio/typescript-tools.nvim", - dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, - opts = { - init_options = { - preferences = { - disableSuggestions = true, - }, - }, - settings = { - -- array of strings("fix_all"|"add_missing_imports"|"remove_unused"| - -- "remove_unused_imports"|"organize_imports") -- or string "all" - -- to include all supported code actions - -- specify commands exposed as code_actions - expose_as_code_action = "all", - }, - }, -} From a6c0b4b86787d100dba7d9c56726595c630fbe66 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 22 May 2025 10:55:13 -0400 Subject: [PATCH 094/152] promote nvim_unstable --- Configs/nvim/.config/nvim/init.lua | 36 +++- Configs/nvim/.config/nvim/lazy-lock.json | 33 +--- .../nvim/.config/nvim/lua/aleidk/autocmds.lua | 42 +++- .../nvim/.config/nvim/lua/aleidk/keymaps.lua | 97 +++------ .../nvim/.config/nvim/lua/aleidk/options.lua | 185 ++++++++++-------- .../nvim}/lua/aleidk/plugins/bookmarks.lua | 0 .../nvim}/lua/aleidk/plugins/colorscheme.lua | 0 .../nvim}/lua/aleidk/plugins/comments.lua | 0 .../nvim}/lua/aleidk/plugins/completion.lua | 2 - .../lua/aleidk/plugins/file-explorer.lua | 0 .../nvim}/lua/aleidk/plugins/formatter.lua | 0 .../.config/nvim}/lua/aleidk/plugins/fzf.lua | 0 .../.config/nvim}/lua/aleidk/plugins/init.lua | 0 .../nvim}/lua/aleidk/plugins/linters.lua | 0 .../nvim}/lua/aleidk/plugins/markdown.lua | 0 .../.config/nvim}/lua/aleidk/plugins/mini.lua | 0 .../nvim}/lua/aleidk/plugins/smart-splits.lua | 0 .../nvim}/lua/aleidk/plugins/treesitter.lua | 0 .../nvim}/lua/aleidk/plugins/trouble.lua | 0 .../.config/nvim}/snippets/global.json | 0 .../after/queries/blade/highlights.scm | 0 .../after/queries/blade/injections.scm | 0 Configs/nvim_old/.config/nvim_old/init.lua | 7 + .../nvim_old/.config/nvim_old/lazy-lock.json | 57 ++++++ .../.config/nvim_old/lua/aleidk/autocmds.lua | 10 + .../nvim_old}/lua/aleidk/constants.lua | 0 .../.config/nvim_old/lua/aleidk/keymaps.lua | 77 ++++++++ .../.config/nvim_old}/lua/aleidk/lazy.lua | 0 .../.config/nvim_old/lua/aleidk/options.lua | 144 ++++++++++++++ .../lua/aleidk/plugins-base/auto-pairs.lua | 0 .../lua/aleidk/plugins-base/bookmarks.lua | 0 .../lua/aleidk/plugins-base/comments.lua | 0 .../lua/aleidk/plugins-base/file-explorer.lua | 0 .../aleidk/plugins-base/indent-blankline.lua | 0 .../lua/aleidk/plugins-base/treesitter.lua | 0 .../nvim_old}/lua/aleidk/plugins-base/ui.lua | 0 .../lua/aleidk/plugins-base/undo-tree.lua | 0 .../lua/aleidk/plugins-core/colorscheme.lua | 0 .../lua/aleidk/plugins-core/init.lua | 0 .../lua/aleidk/plugins-core/key-help.lua | 0 .../lua/aleidk/plugins-core/lualine.lua | 0 .../lua/aleidk/plugins-core/markdown.lua | 0 .../lua/aleidk/plugins-core/smart-splits.lua | 0 .../lua/aleidk/plugins-core/surround.lua | 0 .../lua/aleidk/plugins-core/telescope.lua | 0 .../lua/aleidk/plugins-core/todo-comments.lua | 0 .../lua/aleidk/plugins-ide/color-picker.lua | 0 .../lua/aleidk/plugins-ide/completion.lua | 0 .../lua/aleidk/plugins-ide/database.lua | 0 .../lua/aleidk/plugins-ide/doc-gen.lua | 0 .../lua/aleidk/plugins-ide/formatter.lua | 0 .../nvim_old}/lua/aleidk/plugins-ide/git.lua | 0 .../nvim_old}/lua/aleidk/plugins-ide/init.lua | 0 .../lua/aleidk/plugins-ide/linters.lua | 0 .../nvim_old}/lua/aleidk/plugins-ide/lsp.lua | 0 .../lua/aleidk/plugins-ide/luasnip.lua | 0 .../lua/aleidk/plugins-ide/remote-sshfs.lua | 0 .../lua/aleidk/plugins-ide/task-runner.lua | 0 .../lua/aleidk/plugins-ide/trouble.lua | 0 .../aleidk/plugins-ide/typescript-tools.lua | 0 .../.config/nvim_old}/lua/aleidk/utils.lua | 0 .../.config/nvim_unstable/init.lua | 33 ---- .../.config/nvim_unstable/lazy-lock.json | 35 ---- .../nvim_unstable/lua/aleidk/autocmds.lua | 34 ---- .../nvim_unstable/lua/aleidk/keymaps.lua | 34 ---- .../nvim_unstable/lua/aleidk/options.lua | 161 --------------- 66 files changed, 489 insertions(+), 498 deletions(-) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/bookmarks.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/colorscheme.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/comments.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/completion.lua (94%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/file-explorer.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/formatter.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/fzf.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/init.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/linters.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/markdown.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/mini.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/smart-splits.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/treesitter.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/lua/aleidk/plugins/trouble.lua (100%) rename Configs/{nvim_unstable/.config/nvim_unstable => nvim/.config/nvim}/snippets/global.json (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/after/queries/blade/highlights.scm (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/after/queries/blade/injections.scm (100%) create mode 100644 Configs/nvim_old/.config/nvim_old/init.lua create mode 100644 Configs/nvim_old/.config/nvim_old/lazy-lock.json create mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/autocmds.lua rename Configs/{nvim_unstable/.config/nvim_unstable => nvim_old/.config/nvim_old}/lua/aleidk/constants.lua (100%) create mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/keymaps.lua rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/lazy.lua (100%) create mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/options.lua rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-base/auto-pairs.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-base/bookmarks.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-base/comments.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-base/file-explorer.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-base/indent-blankline.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-base/treesitter.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-base/ui.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-base/undo-tree.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/colorscheme.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/init.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/key-help.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/lualine.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/markdown.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/smart-splits.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/surround.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/telescope.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-core/todo-comments.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/color-picker.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/completion.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/database.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/doc-gen.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/formatter.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/git.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/init.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/linters.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/lsp.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/luasnip.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/remote-sshfs.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/task-runner.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/trouble.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/plugins-ide/typescript-tools.lua (100%) rename Configs/{nvim/.config/nvim => nvim_old/.config/nvim_old}/lua/aleidk/utils.lua (100%) delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/init.lua delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/keymaps.lua delete mode 100644 Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua diff --git a/Configs/nvim/.config/nvim/init.lua b/Configs/nvim/.config/nvim/init.lua index 2925f22..149787a 100644 --- a/Configs/nvim/.config/nvim/init.lua +++ b/Configs/nvim/.config/nvim/init.lua @@ -1,7 +1,33 @@ --- Loadnoptions before anything +-- Bootstrap lazy.nvim +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) + require("aleidk.options") - -require("aleidk.lazy") - -require("aleidk.keymaps") require("aleidk.autocmds") +require("aleidk.keymaps") + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "aleidk/plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates +-- checker = { enabled = true }, +}) diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index 507d965..00758be 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -1,57 +1,28 @@ { - "LuaSnip": { "branch": "master", "commit": "0f7bbce41ea152a94d12aea286f2ce98e63c0f58" }, "blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" }, "blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" }, "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, - "ccc.nvim": { "branch": "main", "commit": "7c639042583c7bdc7ce2e37e5a0e0aa6d0659c6a" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, "conform.nvim": { "branch": "master", "commit": "a203480a350b03092e473bf3001733d547160a73" }, - "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, - "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, - "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, + "fzf-lua": { "branch": "main", "commit": "8adf950093af5361621cf52208d64995b1af78b5" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, - "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, - "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, - "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "43894adcf10bb1190c2184bd7c1750e8ea2b3dce" }, "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, - "mini.clue": { "branch": "main", "commit": "8e329f586a7cfd06085859066a4b60965fc4ecce" }, - "mini.comment": { "branch": "main", "commit": "03c13e37318bdb18481311c0ac1adc9ed731caf1" }, - "mini.surround": { "branch": "main", "commit": "0e67c4bc147f2a15cee94e7c94dcc0e115b9f55e" }, + "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" }, - "noice.nvim": { "branch": "main", "commit": "c6f6fb178ebe9b4fd90383de743c3399f8c3a37c" }, - "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, - "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, "nvim-lspconfig": { "branch": "master", "commit": "4ae9796c4e95ca84ec77946a9f9089b8f1a3eec9" }, - "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, "nvim-treesitter": { "branch": "master", "commit": "8d4fdc5e47e2a4e00179e43f56221250ce365973" }, "nvim-treesitter-context": { "branch": "master", "commit": "6b081ea63a3711243d11540ce28ccdb6f35ecd33" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, - "nvim-ts-autotag": { "branch": "main", "commit": "e239a560f338be31337e7abc3ee42515daf23f5e" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, - "overseer.nvim": { "branch": "master", "commit": "10ee48ff96c8d1049efb278ea4c8cf9f3b0e4326" }, "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" }, - "remote-sshfs.nvim": { "branch": "main", "commit": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d" }, "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, "smart-splits.nvim": { "branch": "master", "commit": "fc7bb00fe67ab504356bed4310d23c2e4cb4b06b" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, - "treesj": { "branch": "main", "commit": "03415ac60791d48e120a80d37e080744faf3ac15" }, "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, - "typescript-tools.nvim": { "branch": "master", "commit": "346062e8cd06e82776b60785a040dfbbdcb6de77" }, - "undotree": { "branch": "master", "commit": "78b5241191852ffa9bb5da5ff2ee033160798c3b" }, - "vim-dadbod": { "branch": "master", "commit": "fe5a55e92b2dded7c404006147ef97fb073d8b1b" }, - "vim-dadbod-completion": { "branch": "master", "commit": "da0e75c09c27a82aad078d993bb1b2f4afd43427" }, - "vim-dadbod-ui": { "branch": "master", "commit": "28a16902cb2134c934b85da5250033ee43b0dee5" }, - "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, "yazi.nvim": { "branch": "main", "commit": "053867916a9be3cb46f84b6f095ee731bbddd213" } } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/autocmds.lua b/Configs/nvim/.config/nvim/lua/aleidk/autocmds.lua index 22c9fbd..9e7e188 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/autocmds.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/autocmds.lua @@ -1,10 +1,34 @@ --- Highlight on yank --- See `:help vim.highlight.on_yank()` -local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true }) -vim.api.nvim_create_autocmd("TextYankPost", { - callback = function() - vim.highlight.on_yank() - end, - group = highlight_group, - pattern = "*", +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + + if not client then + return + end + + vim.bo[args.buf].omnifunc = 'v:lua.MiniCompletion.completefunc_lsp' + + -- Prefer LSP folding if client supports it + if client:supports_method('textDocument/foldingRange') then + local win = vim.api.nvim_get_current_win() + vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' + end + + vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = args.buf, desc = "Code Action" }) + vim.keymap.set({ "n", "x", "v" }, "ld", vim.diagnostic.open_float, { desc = "Show diagnostic under cursor" }) + vim.keymap.set({ "n", "x", "v" }, "lc", function() + local curpos = vim.fn.getcurpos() + local diagnostics = vim.diagnostic.get(0, { lnum = curpos[2] - 1 }) + + if #diagnostics == 0 then + vim.notify("No diagnostic under cursor") + return + end + + local diagnostic = diagnostics[1] + local msg = string.format("%s [%s]: %s", diagnostic.source, diagnostic.code, diagnostic.message) + vim.fn.setreg("+", msg) + vim.notify("Diagnostic saved to clipboard:\n\n" .. msg) + end, { buffer = args.buf, desc = "Copy diagnostic to clipboard" }) + end, }) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua b/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua index fde7c73..f7a3019 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua @@ -1,77 +1,34 @@ --- [[ Basic Keymaps ]] - -function MAP(mode, l, r, desc) - vim.keymap.set(mode, l, r, { desc = desc, silent = true }) -end - -function ReloadModule(module) - package.loaded[module] = nil - require(module) -end - -local function default(desc) - return { - silent = true, - desc = desc, - } -end - -local function fixIndentation() - local indent = 2 - vim.opt.tabstop = indent - vim.opt.shiftwidth = indent - vim.opt.softtabstop = indent - - vim.cmd("retab") -end - --- Keymaps for better default experience --- See `:help vim.keymap.set()` -vim.keymap.set({ "n", "v" }, "", "", { silent = true }) - --- vim.keymap.set("n", "", "w", default("Keep cursor centered while junping")) - --- Remap for dealing with word wrap -vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) -vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) - -vim.keymap.set("n", "J", "mzJ`z", default("Keep cursor in column while joining lines")) - -vim.keymap.set("n", "|", ":vs", default("Open vsplit")) -vim.keymap.set("n", "°", ":sp", default("Open split")) - -vim.keymap.set("n", "", "zz", default("Keep cursor centered while junping")) -vim.keymap.set("n", "", "zz", default("Keep cursor centered while junping")) - -vim.keymap.set("n", "n", "nzzzv", default("Keep cursor centered while searching")) -vim.keymap.set("n", "N", "Nzzzv", default("Keep cursor centered while searching")) - +-- stylua: ignore start +-- QoL normalization's vim.keymap.set("n", "Q", "", {}) +vim.keymap.set({ "n", "v" }, "", "", { desc = "Prevent cursor movement", silent = true }) +vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", + { desc = "Move cursor regardless of word wrap", expr = true, silent = true }) +vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", + { desc = "Move cursor regardless of word wrap", expr = true, silent = true }) +vim.keymap.set("n", "J", "mzJ`z", { desc = "Keep cursor in column while joining lines", silent = true }) -vim.keymap.set( - "n", - "rw", - [[:%s/\<\>//gI]], - default("Search and replace current word") -) +-- vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) +-- vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) +-- vim.keymap.set("n", "n", "nzzzv", { desc = "Keep cursor centered while searching", silent = true }) +-- vim.keymap.set("n", "N", "Nzzzv", { desc = "Keep cursor centered while searching", silent = true }) --- vim.keymap.set("n", "rR", ":s/", default("Search and replace inline")) --- vim.keymap.set("n", "rr", ":%s/", default("Search and replace globally")) --- vim.keymap.set("v", "r", ":s/", default("Search and replace in selection")) +-- Utils +vim.keymap.set("n", "|", ":vs", { desc = "Create vsplit", silent = true }) +vim.keymap.set("n", "°", ":sp", { desc = "Create split", silent = true }) -vim.keymap.set("v", "p", [["_dP]], default("Paste without lossing yanked text")) +vim.keymap.set("v", "p", [["_dP]], { desc = "Paste without lossing yanked text", silent = true }) +vim.keymap.set("n", "uh", ":nohl", { desc = "Remove search highlight", silent = true }) -vim.keymap.set("v", "J", ":m '>+1gv=gv", default("Move selection down")) -vim.keymap.set("v", "K", ":m '<-2gv=gv", default("Move selection up")) -vim.keymap.set("n", "uI", fixIndentation, default("Fix indentation")) -vim.keymap.set("n", "uO", function() ReloadModule('aleidk.options') end, - default("Reload the options configuration")) +-- Buffer manipulation +vim.keymap.set("n", "bc", "bd", { desc = "Close buffer", silent = true }) +vim.keymap.set("n", "bh", "bp", { desc = "Prev buffer", silent = true }) +vim.keymap.set("n", "bl", "bn", { desc = "Next buffer", silent = true }) +vim.keymap.set("n", "bA", "bufdo bd", { desc = "Close all buffers", silent = true }) -vim.keymap.set("n", "uh", ":nohl", default("Remove search highlight")) +vim.keymap.set("n", "", "h", { desc = "Move to left window", silent = true }) +vim.keymap.set("n", "", "j", { desc = "Move to bottom window", silent = true }) +vim.keymap.set("n", "", "k", { desc = "Move to top window", silent = true }) +vim.keymap.set("n", "", "l", { desc = "Move to right window", silent = true }) -vim.keymap.set("t", "", "", default("Exit insert mode on terminal")) - -vim.keymap.set("n", "bc", "bd", default("Close buffer")) -vim.keymap.set("n", "bh", "bp", default("Prev buffer")) -vim.keymap.set("n", "bl", "bn", default("Next buffer")) -vim.keymap.set("n", "bA", "bufdo bd", default("Close all buffers")) +-- stylua: ignore end diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index 6378dc5..f7b0ff6 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -9,10 +9,15 @@ vim.o.diffopt = "vertical,closeoff,filler" local opt = vim.opt --- stylua: ignore -opt.autowrite = true -- Enable auto write -opt.clipboard = "unnamedplus" -- Sync with system clipboard -opt.completeopt = "menu,menuone,noselect" +vim.schedule(function() + vim.opt.clipboard = 'unnamedplus' +end) + +vim.o.winborder = 'rounded' +opt.breakindent = true -- Every wrapped line will continue visually indented +opt.autowrite = true -- Enable auto write +-- opt.completeopt = "menu,menuone,noselect" +vim.o.completeopt = 'noselect,menu,menuone,noinsert,popup' opt.conceallevel = 2 -- Hide * markup for bold and italic opt.confirm = true -- Confirm to save changes before exiting modified buffer opt.cursorline = true -- Enable highlighting of the current line @@ -23,7 +28,8 @@ opt.grepprg = "rg --vimgrep" opt.ignorecase = true -- Ignore case opt.inccommand = "nosplit" -- preview incremental substitute opt.laststatus = 0 -opt.list = true -- Show some invisible characters (tabs... +vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. +vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } opt.mouse = "a" -- Enable mouse mode opt.number = true -- Print line number opt.pumblend = 10 -- Popup blend @@ -34,7 +40,7 @@ opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } opt.shiftround = true -- Round indent opt.shiftwidth = 2 -- Size of an indent -- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages -opt.showmode = false -- Dont show mode since we have a statusline +opt.showmode = false -- Don't show mode since we have a statusline opt.sidescrolloff = 8 -- Columns of context opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time opt.smartcase = true -- Don't ignore case with capitals @@ -44,101 +50,112 @@ opt.splitbelow = true -- Put new windows below current opt.splitright = true -- Put new windows right of current opt.tabstop = 2 -- Number of spaces tabs count for opt.termguicolors = true -- True color support -opt.timeoutlen = 300 opt.undofile = true opt.undolevels = 10000 opt.updatetime = 200 -- Save swap file and trigger CursorHold opt.wildmode = "longest,list:full" -- Command-line completion mode opt.winminwidth = 5 -- Minimum window width opt.wrap = false -- Disable line wrap +vim.opt.inccommand = 'split' -- Preview substitutions live, as you type! vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" +-- Nice and simple folding: +vim.o.foldenable = true +vim.o.foldlevel = 99 +vim.o.foldmethod = "expr" +vim.o.foldexpr = "v:lua.vim.treesitter.foldexpr()" +vim.opt.fillchars:append({ fold = " " }) + local fn = vim.fn -- Quickfix customization function _G.qftf(info) - local items - local ret = {} - -- The name of item in list is based on the directory of quickfix window. - -- Change the directory for quickfix window make the name of item shorter. - -- It's a good opportunity to change current directory in quickfixtextfunc :) - -- - -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window - -- local root = getRootByAlterBufnr(alterBufnr) - -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) - -- - if info.quickfix == 1 then - items = fn.getqflist({ id = info.id, items = 0 }).items - else - items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items - end - local limit = 31 - local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" - local validFmt = "%s │%5d:%-3d│%s %s" - for i = info.start_idx, info.end_idx do - local e = items[i] - local fname = "" - local str - if e.valid == 1 then - if e.bufnr > 0 then - fname = fn.bufname(e.bufnr) - if fname == "" then - fname = "[No Name]" - else - fname = fname:gsub("^" .. vim.env.HOME, "~") - end - -- char in fname may occur more than 1 width, ignore this issue in order to keep performance - if #fname <= limit then - fname = fnameFmt1:format(fname) - else - fname = fnameFmt2:format(fname:sub(1 - limit)) - end - end - local lnum = e.lnum > 99999 and -1 or e.lnum - local col = e.col > 999 and -1 or e.col - local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() - str = validFmt:format(fname, lnum, col, qtype, e.text) - else - str = e.text - end - table.insert(ret, str) - end - return ret + local items + local ret = {} + -- The name of item in list is based on the directory of quickfix window. + -- Change the directory for quickfix window make the name of item shorter. + -- It's a good opportunity to change current directory in quickfixtextfunc :) + -- + -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window + -- local root = getRootByAlterBufnr(alterBufnr) + -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) + -- + if info.quickfix == 1 then + items = fn.getqflist({ id = info.id, items = 0 }).items + else + items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items + end + local limit = 31 + local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" + local validFmt = "%s │%5d:%-3d│%s %s" + for i = info.start_idx, info.end_idx do + local e = items[i] + local fname = "" + local str + if e.valid == 1 then + if e.bufnr > 0 then + fname = fn.bufname(e.bufnr) + if fname == "" then + fname = "[No Name]" + else + fname = fname:gsub("^" .. vim.env.HOME, "~") + end + -- char in fname may occur more than 1 width, ignore this issue in order to keep performance + if #fname <= limit then + fname = fnameFmt1:format(fname) + else + fname = fnameFmt2:format(fname:sub(1 - limit)) + end + end + local lnum = e.lnum > 99999 and -1 or e.lnum + local col = e.col > 999 and -1 or e.col + local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() + str = validFmt:format(fname, lnum, col, qtype, e.text) + else + str = e.text + end + table.insert(ret, str) + end + return ret end -- TODO: how to customize? vim.o.qftf = "{info -> v:lua._G.qftf(info)}" vim.filetype.add({ - -- Detect and assign filetype based on the extension of the filename - extension = { - mdx = "mdx", - log = "log", - conf = "conf", - env = "dotenv" - }, - -- Detect and apply filetypes based on the entire filename - filename = { - [".env"] = "dotenv", - ["env"] = "dotenv", - ["tsconfig.json"] = "jsonc", - }, - -- Detect and apply filetypes based on certain patterns of the filenames - pattern = { - -- INFO: Match filenames like - ".env.example", ".env.local" and so on - ["%.env%.[%w_.-]+"] = "dotenv", - [".*%.blade%.php"] = "blade", - [".*%.hurl.*"] = "hurl", - [".*/hypr/.*%.conf"] = "hyprlang", - ['.*/systemd/.*%.(%a+)'] = function(path, bufnr, ext) - vim.print(ext) - local allowed = { "container", "volume", "network", "build", "pod", "kube" } - for _, v in ipairs(allowed) do - if v == ext then - return "ini" - end - end - end, - }, + -- Detect and assign filetype based on the extension of the filename + extension = { + mdx = "mdx", + log = "log", + conf = "conf", + env = "dotenv", + }, + -- Detect and apply filetypes based on the entire filename + filename = { + [".env"] = "dotenv", + ["env"] = "dotenv", + ["tsconfig.json"] = "jsonc", + }, + -- Detect and apply filetypes based on certain patterns of the filenames + pattern = { + -- INFO: Match filenames like - ".env.example", ".env.local" and so on + ["%.env%.[%w_.-]+"] = "dotenv", + [".*%.blade%.php"] = "blade", + [".*%.hurl.*"] = "hurl", + [".*/hypr/.*%.conf"] = "hyprlang", + }, +}) + +-- ╭─────────────────────────────────────────────────────────╮ +-- │ LSP │ +-- ╰─────────────────────────────────────────────────────────╯ + +vim.lsp.enable({ + "rust_analyzer", + "lua_ls", +}) + +vim.diagnostic.config({ + virtual_lines = { current_line = true }, }) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/bookmarks.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/bookmarks.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/colorscheme.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/colorscheme.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/comments.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/comments.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/comments.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/comments.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/completion.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua similarity index 94% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/completion.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua index 1101f70..c1c43fd 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/completion.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua @@ -37,7 +37,6 @@ return { }, sources = { providers = { - dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" }, lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, luasnip = { name = 'luasnip', @@ -54,7 +53,6 @@ return { "path", "snippets", "buffer", - "dadbod", "lazydev", }, }, diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/formatter.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/formatter.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/fzf.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/fzf.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/linters.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/linters.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/markdown.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/markdown.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/markdown.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/markdown.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/smart-splits.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/smart-splits.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/smart-splits.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/smart-splits.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/treesitter.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/treesitter.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/trouble.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/trouble.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/trouble.lua rename to Configs/nvim/.config/nvim/lua/aleidk/plugins/trouble.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/snippets/global.json b/Configs/nvim/.config/nvim/snippets/global.json similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/snippets/global.json rename to Configs/nvim/.config/nvim/snippets/global.json diff --git a/Configs/nvim/.config/nvim/after/queries/blade/highlights.scm b/Configs/nvim_old/.config/nvim_old/after/queries/blade/highlights.scm similarity index 100% rename from Configs/nvim/.config/nvim/after/queries/blade/highlights.scm rename to Configs/nvim_old/.config/nvim_old/after/queries/blade/highlights.scm diff --git a/Configs/nvim/.config/nvim/after/queries/blade/injections.scm b/Configs/nvim_old/.config/nvim_old/after/queries/blade/injections.scm similarity index 100% rename from Configs/nvim/.config/nvim/after/queries/blade/injections.scm rename to Configs/nvim_old/.config/nvim_old/after/queries/blade/injections.scm diff --git a/Configs/nvim_old/.config/nvim_old/init.lua b/Configs/nvim_old/.config/nvim_old/init.lua new file mode 100644 index 0000000..2925f22 --- /dev/null +++ b/Configs/nvim_old/.config/nvim_old/init.lua @@ -0,0 +1,7 @@ +-- Loadnoptions before anything +require("aleidk.options") + +require("aleidk.lazy") + +require("aleidk.keymaps") +require("aleidk.autocmds") diff --git a/Configs/nvim_old/.config/nvim_old/lazy-lock.json b/Configs/nvim_old/.config/nvim_old/lazy-lock.json new file mode 100644 index 0000000..507d965 --- /dev/null +++ b/Configs/nvim_old/.config/nvim_old/lazy-lock.json @@ -0,0 +1,57 @@ +{ + "LuaSnip": { "branch": "master", "commit": "0f7bbce41ea152a94d12aea286f2ce98e63c0f58" }, + "blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" }, + "blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" }, + "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, + "ccc.nvim": { "branch": "main", "commit": "7c639042583c7bdc7ce2e37e5a0e0aa6d0659c6a" }, + "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, + "conform.nvim": { "branch": "master", "commit": "a203480a350b03092e473bf3001733d547160a73" }, + "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, + "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, + "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, + "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, + "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, + "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, + "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, + "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, + "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, + "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "43894adcf10bb1190c2184bd7c1750e8ea2b3dce" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "mini.clue": { "branch": "main", "commit": "8e329f586a7cfd06085859066a4b60965fc4ecce" }, + "mini.comment": { "branch": "main", "commit": "03c13e37318bdb18481311c0ac1adc9ed731caf1" }, + "mini.surround": { "branch": "main", "commit": "0e67c4bc147f2a15cee94e7c94dcc0e115b9f55e" }, + "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" }, + "noice.nvim": { "branch": "main", "commit": "c6f6fb178ebe9b4fd90383de743c3399f8c3a37c" }, + "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, + "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, + "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, + "nvim-lspconfig": { "branch": "master", "commit": "4ae9796c4e95ca84ec77946a9f9089b8f1a3eec9" }, + "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, + "nvim-treesitter": { "branch": "master", "commit": "8d4fdc5e47e2a4e00179e43f56221250ce365973" }, + "nvim-treesitter-context": { "branch": "master", "commit": "6b081ea63a3711243d11540ce28ccdb6f35ecd33" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, + "nvim-ts-autotag": { "branch": "main", "commit": "e239a560f338be31337e7abc3ee42515daf23f5e" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, + "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, + "overseer.nvim": { "branch": "master", "commit": "10ee48ff96c8d1049efb278ea4c8cf9f3b0e4326" }, + "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, + "remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" }, + "remote-sshfs.nvim": { "branch": "main", "commit": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d" }, + "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, + "smart-splits.nvim": { "branch": "master", "commit": "fc7bb00fe67ab504356bed4310d23c2e4cb4b06b" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, + "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, + "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, + "treesj": { "branch": "main", "commit": "03415ac60791d48e120a80d37e080744faf3ac15" }, + "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, + "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, + "typescript-tools.nvim": { "branch": "master", "commit": "346062e8cd06e82776b60785a040dfbbdcb6de77" }, + "undotree": { "branch": "master", "commit": "78b5241191852ffa9bb5da5ff2ee033160798c3b" }, + "vim-dadbod": { "branch": "master", "commit": "fe5a55e92b2dded7c404006147ef97fb073d8b1b" }, + "vim-dadbod-completion": { "branch": "master", "commit": "da0e75c09c27a82aad078d993bb1b2f4afd43427" }, + "vim-dadbod-ui": { "branch": "master", "commit": "28a16902cb2134c934b85da5250033ee43b0dee5" }, + "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, + "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, + "yazi.nvim": { "branch": "main", "commit": "053867916a9be3cb46f84b6f095ee731bbddd213" } +} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/autocmds.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/autocmds.lua new file mode 100644 index 0000000..22c9fbd --- /dev/null +++ b/Configs/nvim_old/.config/nvim_old/lua/aleidk/autocmds.lua @@ -0,0 +1,10 @@ +-- Highlight on yank +-- See `:help vim.highlight.on_yank()` +local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true }) +vim.api.nvim_create_autocmd("TextYankPost", { + callback = function() + vim.highlight.on_yank() + end, + group = highlight_group, + pattern = "*", +}) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/constants.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/constants.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/constants.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/constants.lua diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/keymaps.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/keymaps.lua new file mode 100644 index 0000000..fde7c73 --- /dev/null +++ b/Configs/nvim_old/.config/nvim_old/lua/aleidk/keymaps.lua @@ -0,0 +1,77 @@ +-- [[ Basic Keymaps ]] + +function MAP(mode, l, r, desc) + vim.keymap.set(mode, l, r, { desc = desc, silent = true }) +end + +function ReloadModule(module) + package.loaded[module] = nil + require(module) +end + +local function default(desc) + return { + silent = true, + desc = desc, + } +end + +local function fixIndentation() + local indent = 2 + vim.opt.tabstop = indent + vim.opt.shiftwidth = indent + vim.opt.softtabstop = indent + + vim.cmd("retab") +end + +-- Keymaps for better default experience +-- See `:help vim.keymap.set()` +vim.keymap.set({ "n", "v" }, "", "", { silent = true }) + +-- vim.keymap.set("n", "", "w", default("Keep cursor centered while junping")) + +-- Remap for dealing with word wrap +vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) +vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) + +vim.keymap.set("n", "J", "mzJ`z", default("Keep cursor in column while joining lines")) + +vim.keymap.set("n", "|", ":vs", default("Open vsplit")) +vim.keymap.set("n", "°", ":sp", default("Open split")) + +vim.keymap.set("n", "", "zz", default("Keep cursor centered while junping")) +vim.keymap.set("n", "", "zz", default("Keep cursor centered while junping")) + +vim.keymap.set("n", "n", "nzzzv", default("Keep cursor centered while searching")) +vim.keymap.set("n", "N", "Nzzzv", default("Keep cursor centered while searching")) + +vim.keymap.set("n", "Q", "", {}) + +vim.keymap.set( + "n", + "rw", + [[:%s/\<\>//gI]], + default("Search and replace current word") +) + +-- vim.keymap.set("n", "rR", ":s/", default("Search and replace inline")) +-- vim.keymap.set("n", "rr", ":%s/", default("Search and replace globally")) +-- vim.keymap.set("v", "r", ":s/", default("Search and replace in selection")) + +vim.keymap.set("v", "p", [["_dP]], default("Paste without lossing yanked text")) + +vim.keymap.set("v", "J", ":m '>+1gv=gv", default("Move selection down")) +vim.keymap.set("v", "K", ":m '<-2gv=gv", default("Move selection up")) +vim.keymap.set("n", "uI", fixIndentation, default("Fix indentation")) +vim.keymap.set("n", "uO", function() ReloadModule('aleidk.options') end, + default("Reload the options configuration")) + +vim.keymap.set("n", "uh", ":nohl", default("Remove search highlight")) + +vim.keymap.set("t", "", "", default("Exit insert mode on terminal")) + +vim.keymap.set("n", "bc", "bd", default("Close buffer")) +vim.keymap.set("n", "bh", "bp", default("Prev buffer")) +vim.keymap.set("n", "bl", "bn", default("Next buffer")) +vim.keymap.set("n", "bA", "bufdo bd", default("Close all buffers")) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/lazy.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/lazy.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/lazy.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/lazy.lua diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/options.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/options.lua new file mode 100644 index 0000000..6378dc5 --- /dev/null +++ b/Configs/nvim_old/.config/nvim_old/lua/aleidk/options.lua @@ -0,0 +1,144 @@ +-- [[ Setting options ]] +-- See `:help vim.o` + +-- Set as the leader key +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +vim.o.diffopt = "vertical,closeoff,filler" + +local opt = vim.opt + +-- stylua: ignore +opt.autowrite = true -- Enable auto write +opt.clipboard = "unnamedplus" -- Sync with system clipboard +opt.completeopt = "menu,menuone,noselect" +opt.conceallevel = 2 -- Hide * markup for bold and italic +opt.confirm = true -- Confirm to save changes before exiting modified buffer +opt.cursorline = true -- Enable highlighting of the current line +opt.expandtab = true -- Use spaces instead of tabs +opt.formatoptions = "jcroqlnt" -- tcqj +opt.grepformat = "%f:%l:%c:%m" +opt.grepprg = "rg --vimgrep" +opt.ignorecase = true -- Ignore case +opt.inccommand = "nosplit" -- preview incremental substitute +opt.laststatus = 0 +opt.list = true -- Show some invisible characters (tabs... +opt.mouse = "a" -- Enable mouse mode +opt.number = true -- Print line number +opt.pumblend = 10 -- Popup blend +opt.pumheight = 10 -- Maximum number of entries in a popup +opt.relativenumber = true -- Relative line numbers +opt.scrolloff = 15 -- Lines of context +opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } +opt.shiftround = true -- Round indent +opt.shiftwidth = 2 -- Size of an indent +-- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages +opt.showmode = false -- Dont show mode since we have a statusline +opt.sidescrolloff = 8 -- Columns of context +opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time +opt.smartcase = true -- Don't ignore case with capitals +opt.smartindent = true -- Insert indents automatically +opt.spelllang = { "en" } +opt.splitbelow = true -- Put new windows below current +opt.splitright = true -- Put new windows right of current +opt.tabstop = 2 -- Number of spaces tabs count for +opt.termguicolors = true -- True color support +opt.timeoutlen = 300 +opt.undofile = true +opt.undolevels = 10000 +opt.updatetime = 200 -- Save swap file and trigger CursorHold +opt.wildmode = "longest,list:full" -- Command-line completion mode +opt.winminwidth = 5 -- Minimum window width +opt.wrap = false -- Disable line wrap + +vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" + +local fn = vim.fn + +-- Quickfix customization +function _G.qftf(info) + local items + local ret = {} + -- The name of item in list is based on the directory of quickfix window. + -- Change the directory for quickfix window make the name of item shorter. + -- It's a good opportunity to change current directory in quickfixtextfunc :) + -- + -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window + -- local root = getRootByAlterBufnr(alterBufnr) + -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) + -- + if info.quickfix == 1 then + items = fn.getqflist({ id = info.id, items = 0 }).items + else + items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items + end + local limit = 31 + local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" + local validFmt = "%s │%5d:%-3d│%s %s" + for i = info.start_idx, info.end_idx do + local e = items[i] + local fname = "" + local str + if e.valid == 1 then + if e.bufnr > 0 then + fname = fn.bufname(e.bufnr) + if fname == "" then + fname = "[No Name]" + else + fname = fname:gsub("^" .. vim.env.HOME, "~") + end + -- char in fname may occur more than 1 width, ignore this issue in order to keep performance + if #fname <= limit then + fname = fnameFmt1:format(fname) + else + fname = fnameFmt2:format(fname:sub(1 - limit)) + end + end + local lnum = e.lnum > 99999 and -1 or e.lnum + local col = e.col > 999 and -1 or e.col + local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() + str = validFmt:format(fname, lnum, col, qtype, e.text) + else + str = e.text + end + table.insert(ret, str) + end + return ret +end + +-- TODO: how to customize? +vim.o.qftf = "{info -> v:lua._G.qftf(info)}" + +vim.filetype.add({ + -- Detect and assign filetype based on the extension of the filename + extension = { + mdx = "mdx", + log = "log", + conf = "conf", + env = "dotenv" + }, + -- Detect and apply filetypes based on the entire filename + filename = { + [".env"] = "dotenv", + ["env"] = "dotenv", + ["tsconfig.json"] = "jsonc", + }, + -- Detect and apply filetypes based on certain patterns of the filenames + pattern = { + -- INFO: Match filenames like - ".env.example", ".env.local" and so on + ["%.env%.[%w_.-]+"] = "dotenv", + [".*%.blade%.php"] = "blade", + [".*%.hurl.*"] = "hurl", + [".*/hypr/.*%.conf"] = "hyprlang", + ['.*/systemd/.*%.(%a+)'] = function(path, bufnr, ext) + vim.print(ext) + local allowed = { "container", "volume", "network", "build", "pod", "kube" } + for _, v in ipairs(allowed) do + if v == ext then + return "ini" + end + end + end, + }, +}) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/auto-pairs.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/auto-pairs.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-base/auto-pairs.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/auto-pairs.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/bookmarks.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/bookmarks.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-base/bookmarks.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/bookmarks.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/comments.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/comments.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-base/comments.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/comments.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/file-explorer.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/file-explorer.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-base/file-explorer.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/file-explorer.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/indent-blankline.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/indent-blankline.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-base/indent-blankline.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/indent-blankline.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/treesitter.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/treesitter.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-base/treesitter.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/treesitter.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/ui.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/ui.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-base/ui.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/ui.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/undo-tree.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/undo-tree.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-base/undo-tree.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/undo-tree.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/colorscheme.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/colorscheme.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/colorscheme.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/colorscheme.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/init.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/init.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/init.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/init.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/key-help.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/key-help.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/key-help.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/key-help.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/lualine.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/lualine.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/lualine.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/lualine.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/markdown.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/markdown.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/markdown.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/markdown.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/smart-splits.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/smart-splits.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/smart-splits.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/smart-splits.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/surround.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/surround.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/surround.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/surround.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/telescope.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/telescope.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/telescope.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/telescope.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/todo-comments.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/todo-comments.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/todo-comments.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/todo-comments.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/color-picker.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/color-picker.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/color-picker.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/color-picker.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/completion.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/completion.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/completion.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/completion.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/database.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/database.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/database.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/database.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/doc-gen.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/doc-gen.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/doc-gen.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/doc-gen.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/formatter.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/formatter.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/formatter.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/formatter.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/git.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/git.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/git.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/git.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/init.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/init.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/init.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/init.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/linters.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/linters.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/linters.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/linters.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/lsp.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/lsp.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/lsp.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/lsp.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/luasnip.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/luasnip.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/luasnip.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/luasnip.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/remote-sshfs.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/remote-sshfs.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/task-runner.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/task-runner.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/task-runner.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/task-runner.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/trouble.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/trouble.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/trouble.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/trouble.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/typescript-tools.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/typescript-tools.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/utils.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/utils.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/utils.lua rename to Configs/nvim_old/.config/nvim_old/lua/aleidk/utils.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/init.lua b/Configs/nvim_unstable/.config/nvim_unstable/init.lua deleted file mode 100644 index 149787a..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/init.lua +++ /dev/null @@ -1,33 +0,0 @@ --- Bootstrap lazy.nvim -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) - -require("aleidk.options") -require("aleidk.autocmds") -require("aleidk.keymaps") - --- Setup lazy.nvim -require("lazy").setup({ - spec = { - -- import your plugins - { import = "aleidk/plugins" }, - }, - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = { "habamax" } }, - -- automatically check for plugin updates --- checker = { enabled = true }, -}) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json deleted file mode 100644 index f053560..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, - "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, - "catppuccin": { "branch": "main", "commit": "8162a4bd9afb42837a655e404d1f937a87ba95e6" }, - "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "fzf-lua": { "branch": "main", "commit": "8adf950093af5361621cf52208d64995b1af78b5" }, - "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, - "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, - "mason.nvim": { "branch": "main", "commit": "9eaedb864cdadc29c6eb7d761a6c0d8aee26c91b" }, - "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, - "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, - "nvim-lint": { "branch": "master", "commit": "f3a55c8da6317327a08b698018b786f8c4dce691" }, - "nvim-lspconfig": { "branch": "master", "commit": "f610208989e9c03561f9f601db3133f6ae398fcd" }, - "nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" }, - "nvim-treesitter-context": { "branch": "master", "commit": "4976d8b90401cba9b85f6861e4e5a6edef2f2086" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, - "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, - "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "remote-sshfs.nvim": { "branch": "main", "commit": "01b89636d18a65f8bbd77749aecf4fc124e051aa" }, - "render-markdown": { "branch": "main", "commit": "dac01bd6660af337613e8cfcb23a4aec5d3c0e38" }, - "smart-splits.nvim": { "branch": "master", "commit": "3af62ec991b972379833022c496abe96d727aa35" }, - "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, - "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, - "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, - "typescript-tools.nvim": { "branch": "master", "commit": "3c501d7c7f79457932a8750a2a1476a004c5c1a9" }, - "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, - "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, - "vim-dadbod-ui": { "branch": "master", "commit": "460432301a5cb280ea265ddfa15c9f3dcd1d26b7" }, - "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "yazi.nvim": { "branch": "main", "commit": "454525c33339881c574c2f35f488a13d0d6a1491" } -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua deleted file mode 100644 index 9e7e188..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua +++ /dev/null @@ -1,34 +0,0 @@ -vim.api.nvim_create_autocmd('LspAttach', { - callback = function(args) - local client = vim.lsp.get_client_by_id(args.data.client_id) - - if not client then - return - end - - vim.bo[args.buf].omnifunc = 'v:lua.MiniCompletion.completefunc_lsp' - - -- Prefer LSP folding if client supports it - if client:supports_method('textDocument/foldingRange') then - local win = vim.api.nvim_get_current_win() - vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' - end - - vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = args.buf, desc = "Code Action" }) - vim.keymap.set({ "n", "x", "v" }, "ld", vim.diagnostic.open_float, { desc = "Show diagnostic under cursor" }) - vim.keymap.set({ "n", "x", "v" }, "lc", function() - local curpos = vim.fn.getcurpos() - local diagnostics = vim.diagnostic.get(0, { lnum = curpos[2] - 1 }) - - if #diagnostics == 0 then - vim.notify("No diagnostic under cursor") - return - end - - local diagnostic = diagnostics[1] - local msg = string.format("%s [%s]: %s", diagnostic.source, diagnostic.code, diagnostic.message) - vim.fn.setreg("+", msg) - vim.notify("Diagnostic saved to clipboard:\n\n" .. msg) - end, { buffer = args.buf, desc = "Copy diagnostic to clipboard" }) - end, -}) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/keymaps.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/keymaps.lua deleted file mode 100644 index f7a3019..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/keymaps.lua +++ /dev/null @@ -1,34 +0,0 @@ --- stylua: ignore start --- QoL normalization's -vim.keymap.set("n", "Q", "", {}) -vim.keymap.set({ "n", "v" }, "", "", { desc = "Prevent cursor movement", silent = true }) -vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", - { desc = "Move cursor regardless of word wrap", expr = true, silent = true }) -vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", - { desc = "Move cursor regardless of word wrap", expr = true, silent = true }) -vim.keymap.set("n", "J", "mzJ`z", { desc = "Keep cursor in column while joining lines", silent = true }) - --- vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) --- vim.keymap.set("n", "", "zz", { desc = "Keep cursor centered while junping", silent = true }) --- vim.keymap.set("n", "n", "nzzzv", { desc = "Keep cursor centered while searching", silent = true }) --- vim.keymap.set("n", "N", "Nzzzv", { desc = "Keep cursor centered while searching", silent = true }) - --- Utils -vim.keymap.set("n", "|", ":vs", { desc = "Create vsplit", silent = true }) -vim.keymap.set("n", "°", ":sp", { desc = "Create split", silent = true }) - -vim.keymap.set("v", "p", [["_dP]], { desc = "Paste without lossing yanked text", silent = true }) -vim.keymap.set("n", "uh", ":nohl", { desc = "Remove search highlight", silent = true }) - --- Buffer manipulation -vim.keymap.set("n", "bc", "bd", { desc = "Close buffer", silent = true }) -vim.keymap.set("n", "bh", "bp", { desc = "Prev buffer", silent = true }) -vim.keymap.set("n", "bl", "bn", { desc = "Next buffer", silent = true }) -vim.keymap.set("n", "bA", "bufdo bd", { desc = "Close all buffers", silent = true }) - -vim.keymap.set("n", "", "h", { desc = "Move to left window", silent = true }) -vim.keymap.set("n", "", "j", { desc = "Move to bottom window", silent = true }) -vim.keymap.set("n", "", "k", { desc = "Move to top window", silent = true }) -vim.keymap.set("n", "", "l", { desc = "Move to right window", silent = true }) - --- stylua: ignore end diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua deleted file mode 100644 index f7b0ff6..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua +++ /dev/null @@ -1,161 +0,0 @@ --- [[ Setting options ]] --- See `:help vim.o` - --- Set as the leader key -vim.g.mapleader = " " -vim.g.maplocalleader = " " - -vim.o.diffopt = "vertical,closeoff,filler" - -local opt = vim.opt - -vim.schedule(function() - vim.opt.clipboard = 'unnamedplus' -end) - -vim.o.winborder = 'rounded' -opt.breakindent = true -- Every wrapped line will continue visually indented -opt.autowrite = true -- Enable auto write --- opt.completeopt = "menu,menuone,noselect" -vim.o.completeopt = 'noselect,menu,menuone,noinsert,popup' -opt.conceallevel = 2 -- Hide * markup for bold and italic -opt.confirm = true -- Confirm to save changes before exiting modified buffer -opt.cursorline = true -- Enable highlighting of the current line -opt.expandtab = true -- Use spaces instead of tabs -opt.formatoptions = "jcroqlnt" -- tcqj -opt.grepformat = "%f:%l:%c:%m" -opt.grepprg = "rg --vimgrep" -opt.ignorecase = true -- Ignore case -opt.inccommand = "nosplit" -- preview incremental substitute -opt.laststatus = 0 -vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. -vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } -opt.mouse = "a" -- Enable mouse mode -opt.number = true -- Print line number -opt.pumblend = 10 -- Popup blend -opt.pumheight = 10 -- Maximum number of entries in a popup -opt.relativenumber = true -- Relative line numbers -opt.scrolloff = 15 -- Lines of context -opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } -opt.shiftround = true -- Round indent -opt.shiftwidth = 2 -- Size of an indent --- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages -opt.showmode = false -- Don't show mode since we have a statusline -opt.sidescrolloff = 8 -- Columns of context -opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time -opt.smartcase = true -- Don't ignore case with capitals -opt.smartindent = true -- Insert indents automatically -opt.spelllang = { "en" } -opt.splitbelow = true -- Put new windows below current -opt.splitright = true -- Put new windows right of current -opt.tabstop = 2 -- Number of spaces tabs count for -opt.termguicolors = true -- True color support -opt.undofile = true -opt.undolevels = 10000 -opt.updatetime = 200 -- Save swap file and trigger CursorHold -opt.wildmode = "longest,list:full" -- Command-line completion mode -opt.winminwidth = 5 -- Minimum window width -opt.wrap = false -- Disable line wrap -vim.opt.inccommand = 'split' -- Preview substitutions live, as you type! - -vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" - --- Nice and simple folding: -vim.o.foldenable = true -vim.o.foldlevel = 99 -vim.o.foldmethod = "expr" -vim.o.foldexpr = "v:lua.vim.treesitter.foldexpr()" -vim.opt.fillchars:append({ fold = " " }) - -local fn = vim.fn - --- Quickfix customization -function _G.qftf(info) - local items - local ret = {} - -- The name of item in list is based on the directory of quickfix window. - -- Change the directory for quickfix window make the name of item shorter. - -- It's a good opportunity to change current directory in quickfixtextfunc :) - -- - -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window - -- local root = getRootByAlterBufnr(alterBufnr) - -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) - -- - if info.quickfix == 1 then - items = fn.getqflist({ id = info.id, items = 0 }).items - else - items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items - end - local limit = 31 - local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" - local validFmt = "%s │%5d:%-3d│%s %s" - for i = info.start_idx, info.end_idx do - local e = items[i] - local fname = "" - local str - if e.valid == 1 then - if e.bufnr > 0 then - fname = fn.bufname(e.bufnr) - if fname == "" then - fname = "[No Name]" - else - fname = fname:gsub("^" .. vim.env.HOME, "~") - end - -- char in fname may occur more than 1 width, ignore this issue in order to keep performance - if #fname <= limit then - fname = fnameFmt1:format(fname) - else - fname = fnameFmt2:format(fname:sub(1 - limit)) - end - end - local lnum = e.lnum > 99999 and -1 or e.lnum - local col = e.col > 999 and -1 or e.col - local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() - str = validFmt:format(fname, lnum, col, qtype, e.text) - else - str = e.text - end - table.insert(ret, str) - end - return ret -end - --- TODO: how to customize? -vim.o.qftf = "{info -> v:lua._G.qftf(info)}" - -vim.filetype.add({ - -- Detect and assign filetype based on the extension of the filename - extension = { - mdx = "mdx", - log = "log", - conf = "conf", - env = "dotenv", - }, - -- Detect and apply filetypes based on the entire filename - filename = { - [".env"] = "dotenv", - ["env"] = "dotenv", - ["tsconfig.json"] = "jsonc", - }, - -- Detect and apply filetypes based on certain patterns of the filenames - pattern = { - -- INFO: Match filenames like - ".env.example", ".env.local" and so on - ["%.env%.[%w_.-]+"] = "dotenv", - [".*%.blade%.php"] = "blade", - [".*%.hurl.*"] = "hurl", - [".*/hypr/.*%.conf"] = "hyprlang", - }, -}) - --- ╭─────────────────────────────────────────────────────────╮ --- │ LSP │ --- ╰─────────────────────────────────────────────────────────╯ - -vim.lsp.enable({ - "rust_analyzer", - "lua_ls", -}) - -vim.diagnostic.config({ - virtual_lines = { current_line = true }, -}) From 184b398017b9614737e1e248928120c4d7fb203f Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 22 May 2025 13:03:15 -0400 Subject: [PATCH 095/152] minimize zsh config --- Configs/zsh/.config/zsh/completion.zsh | 101 ++++++++++++++++++ Configs/zsh/.zshrc | 136 ++++--------------------- 2 files changed, 118 insertions(+), 119 deletions(-) create mode 100644 Configs/zsh/.config/zsh/completion.zsh diff --git a/Configs/zsh/.config/zsh/completion.zsh b/Configs/zsh/.config/zsh/completion.zsh new file mode 100644 index 0000000..11e222f --- /dev/null +++ b/Configs/zsh/.config/zsh/completion.zsh @@ -0,0 +1,101 @@ +# ╭──────────────────────────────────────────────────────────╮ +# │ Completion styling │ +# ╰──────────────────────────────────────────────────────────╯ + +[[ -d ${XDG_CACHE_HOME:-$HOME/.cache}/zsh ]] || mkdir -p ${XDG_CACHE_HOME:-$HOME/.cache}/zsh + +LS_COLORS='*~=0;38;2;91;96;120:bd=0;38;2;125;196;228;48;2;54;58;79:ca=0:cd=0;38;2;245;189;230;48;2;54;58;79:di=0;38;2;138;173;244:do=0;38;2;24;25;38;48;2;245;189;230:ex=1;38;2;237;135;150:fi=0:ln=0;38;2;245;189;230:mh=0:mi=0;38;2;24;25;38;48;2;237;135;150:no=0:or=0;38;2;24;25;38;48;2;237;135;150:ow=0:pi=0;38;2;24;25;38;48;2;138;173;244:rs=0:sg=0:so=0;38;2;24;25;38;48;2;245;189;230:st=0:su=0:tw=0:*.1=0;38;2;238;212;159:*.a=1;38;2;237;135;150:*.c=0;38;2;166;218;149:*.d=0;38;2;166;218;149:*.h=0;38;2;166;218;149:*.m=0;38;2;166;218;149:*.o=0;38;2;91;96;120:*.p=0;38;2;166;218;149:*.r=0;38;2;166;218;149:*.t=0;38;2;166;218;149:*.v=0;38;2;166;218;149:*.z=4;38;2;125;196;228:*.7z=4;38;2;125;196;228:*.ai=0;38;2;240;198;198:*.as=0;38;2;166;218;149:*.bc=0;38;2;91;96;120:*.bz=4;38;2;125;196;228:*.cc=0;38;2;166;218;149:*.cp=0;38;2;166;218;149:*.cr=0;38;2;166;218;149:*.cs=0;38;2;166;218;149:*.db=4;38;2;125;196;228:*.di=0;38;2;166;218;149:*.el=0;38;2;166;218;149:*.ex=0;38;2;166;218;149:*.fs=0;38;2;166;218;149:*.go=0;38;2;166;218;149:*.gv=0;38;2;166;218;149:*.gz=4;38;2;125;196;228:*.ha=0;38;2;166;218;149:*.hh=0;38;2;166;218;149:*.hi=0;38;2;91;96;120:*.hs=0;38;2;166;218;149:*.jl=0;38;2;166;218;149:*.js=0;38;2;166;218;149:*.ko=1;38;2;237;135;150:*.kt=0;38;2;166;218;149:*.la=0;38;2;91;96;120:*.ll=0;38;2;166;218;149:*.lo=0;38;2;91;96;120:*.ma=0;38;2;240;198;198:*.mb=0;38;2;240;198;198:*.md=0;38;2;238;212;159:*.mk=0;38;2;139;213;202:*.ml=0;38;2;166;218;149:*.mn=0;38;2;166;218;149:*.nb=0;38;2;166;218;149:*.nu=0;38;2;166;218;149:*.pl=0;38;2;166;218;149:*.pm=0;38;2;166;218;149:*.pp=0;38;2;166;218;149:*.ps=0;38;2;237;135;150:*.py=0;38;2;166;218;149:*.rb=0;38;2;166;218;149:*.rm=0;38;2;240;198;198:*.rs=0;38;2;166;218;149:*.sh=0;38;2;166;218;149:*.so=1;38;2;237;135;150:*.td=0;38;2;166;218;149:*.ts=0;38;2;166;218;149:*.ui=0;38;2;238;212;159:*.vb=0;38;2;166;218;149:*.wv=0;38;2;240;198;198:*.xz=4;38;2;125;196;228:*FAQ=0;38;2;36;39;58;48;2;238;212;159:*.3ds=0;38;2;240;198;198:*.3fr=0;38;2;240;198;198:*.3mf=0;38;2;240;198;198:*.adb=0;38;2;166;218;149:*.ads=0;38;2;166;218;149:*.aif=0;38;2;240;198;198:*.amf=0;38;2;240;198;198:*.ape=0;38;2;240;198;198:*.apk=4;38;2;125;196;228:*.ari=0;38;2;240;198;198:*.arj=4;38;2;125;196;228:*.arw=0;38;2;240;198;198:*.asa=0;38;2;166;218;149:*.asm=0;38;2;166;218;149:*.aux=0;38;2;91;96;120:*.avi=0;38;2;240;198;198:*.awk=0;38;2;166;218;149:*.bag=4;38;2;125;196;228:*.bak=0;38;2;91;96;120:*.bat=1;38;2;237;135;150:*.bay=0;38;2;240;198;198:*.bbl=0;38;2;91;96;120:*.bcf=0;38;2;91;96;120:*.bib=0;38;2;238;212;159:*.bin=4;38;2;125;196;228:*.blg=0;38;2;91;96;120:*.bmp=0;38;2;240;198;198:*.bsh=0;38;2;166;218;149:*.bst=0;38;2;238;212;159:*.bz2=4;38;2;125;196;228:*.c++=0;38;2;166;218;149:*.cap=0;38;2;240;198;198:*.cfg=0;38;2;238;212;159:*.cgi=0;38;2;166;218;149:*.clj=0;38;2;166;218;149:*.com=1;38;2;237;135;150:*.cpp=0;38;2;166;218;149:*.cr2=0;38;2;240;198;198:*.cr3=0;38;2;240;198;198:*.crw=0;38;2;240;198;198:*.css=0;38;2;166;218;149:*.csv=0;38;2;238;212;159:*.csx=0;38;2;166;218;149:*.cxx=0;38;2;166;218;149:*.dae=0;38;2;240;198;198:*.dcr=0;38;2;240;198;198:*.dcs=0;38;2;240;198;198:*.deb=4;38;2;125;196;228:*.def=0;38;2;166;218;149:*.dll=1;38;2;237;135;150:*.dmg=4;38;2;125;196;228:*.dng=0;38;2;240;198;198:*.doc=0;38;2;237;135;150:*.dot=0;38;2;166;218;149:*.dox=0;38;2;139;213;202:*.dpr=0;38;2;166;218;149:*.drf=0;38;2;240;198;198:*.dxf=0;38;2;240;198;198:*.eip=0;38;2;240;198;198:*.elc=0;38;2;166;218;149:*.elm=0;38;2;166;218;149:*.epp=0;38;2;166;218;149:*.eps=0;38;2;240;198;198:*.erf=0;38;2;240;198;198:*.erl=0;38;2;166;218;149:*.exe=1;38;2;237;135;150:*.exr=0;38;2;240;198;198:*.exs=0;38;2;166;218;149:*.fbx=0;38;2;240;198;198:*.fff=0;38;2;240;198;198:*.fls=0;38;2;91;96;120:*.flv=0;38;2;240;198;198:*.fnt=0;38;2;240;198;198:*.fon=0;38;2;240;198;198:*.fsi=0;38;2;166;218;149:*.fsx=0;38;2;166;218;149:*.gif=0;38;2;240;198;198:*.git=0;38;2;91;96;120:*.gpr=0;38;2;240;198;198:*.gvy=0;38;2;166;218;149:*.h++=0;38;2;166;218;149:*.hda=0;38;2;240;198;198:*.hip=0;38;2;240;198;198:*.hpp=0;38;2;166;218;149:*.htc=0;38;2;166;218;149:*.htm=0;38;2;238;212;159:*.hxx=0;38;2;166;218;149:*.ico=0;38;2;240;198;198:*.ics=0;38;2;237;135;150:*.idx=0;38;2;91;96;120:*.igs=0;38;2;240;198;198:*.iiq=0;38;2;240;198;198:*.ilg=0;38;2;91;96;120:*.img=4;38;2;125;196;228:*.inc=0;38;2;166;218;149:*.ind=0;38;2;91;96;120:*.ini=0;38;2;238;212;159:*.inl=0;38;2;166;218;149:*.ino=0;38;2;166;218;149:*.ipp=0;38;2;166;218;149:*.iso=4;38;2;125;196;228:*.jar=4;38;2;125;196;228:*.jpg=0;38;2;240;198;198:*.jsx=0;38;2;166;218;149:*.jxl=0;38;2;240;198;198:*.k25=0;38;2;240;198;198:*.kdc=0;38;2;240;198;198:*.kex=0;38;2;237;135;150:*.kra=0;38;2;240;198;198:*.kts=0;38;2;166;218;149:*.log=0;38;2;91;96;120:*.ltx=0;38;2;166;218;149:*.lua=0;38;2;166;218;149:*.m3u=0;38;2;240;198;198:*.m4a=0;38;2;240;198;198:*.m4v=0;38;2;240;198;198:*.mdc=0;38;2;240;198;198:*.mef=0;38;2;240;198;198:*.mid=0;38;2;240;198;198:*.mir=0;38;2;166;218;149:*.mkv=0;38;2;240;198;198:*.mli=0;38;2;166;218;149:*.mos=0;38;2;240;198;198:*.mov=0;38;2;240;198;198:*.mp3=0;38;2;240;198;198:*.mp4=0;38;2;240;198;198:*.mpg=0;38;2;240;198;198:*.mrw=0;38;2;240;198;198:*.msi=4;38;2;125;196;228:*.mtl=0;38;2;240;198;198:*.nef=0;38;2;240;198;198:*.nim=0;38;2;166;218;149:*.nix=0;38;2;238;212;159:*.nrw=0;38;2;240;198;198:*.obj=0;38;2;240;198;198:*.obm=0;38;2;240;198;198:*.odp=0;38;2;237;135;150:*.ods=0;38;2;237;135;150:*.odt=0;38;2;237;135;150:*.ogg=0;38;2;240;198;198:*.ogv=0;38;2;240;198;198:*.orf=0;38;2;240;198;198:*.org=0;38;2;238;212;159:*.otf=0;38;2;240;198;198:*.otl=0;38;2;240;198;198:*.out=0;38;2;91;96;120:*.pas=0;38;2;166;218;149:*.pbm=0;38;2;240;198;198:*.pcx=0;38;2;240;198;198:*.pdf=0;38;2;237;135;150:*.pef=0;38;2;240;198;198:*.pgm=0;38;2;240;198;198:*.php=0;38;2;166;218;149:*.pid=0;38;2;91;96;120:*.pkg=4;38;2;125;196;228:*.png=0;38;2;240;198;198:*.pod=0;38;2;166;218;149:*.ppm=0;38;2;240;198;198:*.pps=0;38;2;237;135;150:*.ppt=0;38;2;237;135;150:*.pro=0;38;2;139;213;202:*.ps1=0;38;2;166;218;149:*.psd=0;38;2;240;198;198:*.ptx=0;38;2;240;198;198:*.pxn=0;38;2;240;198;198:*.pyc=0;38;2;91;96;120:*.pyd=0;38;2;91;96;120:*.pyo=0;38;2;91;96;120:*.qoi=0;38;2;240;198;198:*.r3d=0;38;2;240;198;198:*.raf=0;38;2;240;198;198:*.rar=4;38;2;125;196;228:*.raw=0;38;2;240;198;198:*.rpm=4;38;2;125;196;228:*.rst=0;38;2;238;212;159:*.rtf=0;38;2;237;135;150:*.rw2=0;38;2;240;198;198:*.rwl=0;38;2;240;198;198:*.rwz=0;38;2;240;198;198:*.sbt=0;38;2;166;218;149:*.sql=0;38;2;166;218;149:*.sr2=0;38;2;240;198;198:*.srf=0;38;2;240;198;198:*.srw=0;38;2;240;198;198:*.stl=0;38;2;240;198;198:*.stp=0;38;2;240;198;198:*.sty=0;38;2;91;96;120:*.svg=0;38;2;240;198;198:*.swf=0;38;2;240;198;198:*.swp=0;38;2;91;96;120:*.sxi=0;38;2;237;135;150:*.sxw=0;38;2;237;135;150:*.tar=4;38;2;125;196;228:*.tbz=4;38;2;125;196;228:*.tcl=0;38;2;166;218;149:*.tex=0;38;2;166;218;149:*.tga=0;38;2;240;198;198:*.tgz=4;38;2;125;196;228:*.tif=0;38;2;240;198;198:*.tml=0;38;2;238;212;159:*.tmp=0;38;2;91;96;120:*.toc=0;38;2;91;96;120:*.tsx=0;38;2;166;218;149:*.ttf=0;38;2;240;198;198:*.txt=0;38;2;238;212;159:*.typ=0;38;2;238;212;159:*.usd=0;38;2;240;198;198:*.vcd=4;38;2;125;196;228:*.vim=0;38;2;166;218;149:*.vob=0;38;2;240;198;198:*.vsh=0;38;2;166;218;149:*.wav=0;38;2;240;198;198:*.wma=0;38;2;240;198;198:*.wmv=0;38;2;240;198;198:*.wrl=0;38;2;240;198;198:*.x3d=0;38;2;240;198;198:*.x3f=0;38;2;240;198;198:*.xlr=0;38;2;237;135;150:*.xls=0;38;2;237;135;150:*.xml=0;38;2;238;212;159:*.xmp=0;38;2;238;212;159:*.xpm=0;38;2;240;198;198:*.xvf=0;38;2;240;198;198:*.yml=0;38;2;238;212;159:*.zig=0;38;2;166;218;149:*.zip=4;38;2;125;196;228:*.zsh=0;38;2;166;218;149:*.zst=4;38;2;125;196;228:*TODO=1:*hgrc=0;38;2;139;213;202:*.avif=0;38;2;240;198;198:*.bash=0;38;2;166;218;149:*.braw=0;38;2;240;198;198:*.conf=0;38;2;238;212;159:*.dart=0;38;2;166;218;149:*.data=0;38;2;240;198;198:*.diff=0;38;2;166;218;149:*.docx=0;38;2;237;135;150:*.epub=0;38;2;237;135;150:*.fish=0;38;2;166;218;149:*.flac=0;38;2;240;198;198:*.h264=0;38;2;240;198;198:*.hack=0;38;2;166;218;149:*.heif=0;38;2;240;198;198:*.hgrc=0;38;2;139;213;202:*.html=0;38;2;238;212;159:*.iges=0;38;2;240;198;198:*.info=0;38;2;238;212;159:*.java=0;38;2;166;218;149:*.jpeg=0;38;2;240;198;198:*.json=0;38;2;238;212;159:*.less=0;38;2;166;218;149:*.lisp=0;38;2;166;218;149:*.lock=0;38;2;91;96;120:*.make=0;38;2;139;213;202:*.mojo=0;38;2;166;218;149:*.mpeg=0;38;2;240;198;198:*.nims=0;38;2;166;218;149:*.opus=0;38;2;240;198;198:*.orig=0;38;2;91;96;120:*.pptx=0;38;2;237;135;150:*.prql=0;38;2;166;218;149:*.psd1=0;38;2;166;218;149:*.psm1=0;38;2;166;218;149:*.purs=0;38;2;166;218;149:*.raku=0;38;2;166;218;149:*.rlib=0;38;2;91;96;120:*.sass=0;38;2;166;218;149:*.scad=0;38;2;166;218;149:*.scss=0;38;2;166;218;149:*.step=0;38;2;240;198;198:*.tbz2=4;38;2;125;196;228:*.tiff=0;38;2;240;198;198:*.toml=0;38;2;238;212;159:*.usda=0;38;2;240;198;198:*.usdc=0;38;2;240;198;198:*.usdz=0;38;2;240;198;198:*.webm=0;38;2;240;198;198:*.webp=0;38;2;240;198;198:*.woff=0;38;2;240;198;198:*.xbps=4;38;2;125;196;228:*.xlsx=0;38;2;237;135;150:*.yaml=0;38;2;238;212;159:*stdin=0;38;2;91;96;120:*v.mod=0;38;2;139;213;202:*.blend=0;38;2;240;198;198:*.cabal=0;38;2;166;218;149:*.cache=0;38;2;91;96;120:*.class=0;38;2;91;96;120:*.cmake=0;38;2;139;213;202:*.ctags=0;38;2;91;96;120:*.dylib=1;38;2;237;135;150:*.dyn_o=0;38;2;91;96;120:*.gcode=0;38;2;166;218;149:*.ipynb=0;38;2;166;218;149:*.mdown=0;38;2;238;212;159:*.patch=0;38;2;166;218;149:*.rmeta=0;38;2;91;96;120:*.scala=0;38;2;166;218;149:*.shtml=0;38;2;238;212;159:*.swift=0;38;2;166;218;149:*.toast=4;38;2;125;196;228:*.woff2=0;38;2;240;198;198:*.xhtml=0;38;2;238;212;159:*Icon\r=0;38;2;91;96;120:*LEGACY=0;38;2;36;39;58;48;2;238;212;159:*NOTICE=0;38;2;36;39;58;48;2;238;212;159:*README=0;38;2;36;39;58;48;2;238;212;159:*go.mod=0;38;2;139;213;202:*go.sum=0;38;2;91;96;120:*passwd=0;38;2;238;212;159:*shadow=0;38;2;238;212;159:*stderr=0;38;2;91;96;120:*stdout=0;38;2;91;96;120:*.bashrc=0;38;2;166;218;149:*.config=0;38;2;238;212;159:*.dyn_hi=0;38;2;91;96;120:*.flake8=0;38;2;139;213;202:*.gradle=0;38;2;166;218;149:*.groovy=0;38;2;166;218;149:*.ignore=0;38;2;139;213;202:*.matlab=0;38;2;166;218;149:*.nimble=0;38;2;166;218;149:*COPYING=0;38;2;147;154;183:*INSTALL=0;38;2;36;39;58;48;2;238;212;159:*LICENCE=0;38;2;147;154;183:*LICENSE=0;38;2;147;154;183:*TODO.md=1:*VERSION=0;38;2;36;39;58;48;2;238;212;159:*.alembic=0;38;2;240;198;198:*.desktop=0;38;2;238;212;159:*.gemspec=0;38;2;139;213;202:*.mailmap=0;38;2;139;213;202:*Doxyfile=0;38;2;139;213;202:*Makefile=0;38;2;139;213;202:*TODO.txt=1:*setup.py=0;38;2;139;213;202:*.DS_Store=0;38;2;91;96;120:*.cmake.in=0;38;2;139;213;202:*.fdignore=0;38;2;139;213;202:*.kdevelop=0;38;2;139;213;202:*.markdown=0;38;2;238;212;159:*.rgignore=0;38;2;139;213;202:*.tfignore=0;38;2;139;213;202:*CHANGELOG=0;38;2;36;39;58;48;2;238;212;159:*COPYRIGHT=0;38;2;147;154;183:*README.md=0;38;2;36;39;58;48;2;238;212;159:*bun.lockb=0;38;2;91;96;120:*configure=0;38;2;139;213;202:*.gitconfig=0;38;2;139;213;202:*.gitignore=0;38;2;139;213;202:*.localized=0;38;2;91;96;120:*.scons_opt=0;38;2;91;96;120:*.timestamp=0;38;2;91;96;120:*CODEOWNERS=0;38;2;139;213;202:*Dockerfile=0;38;2;238;212;159:*INSTALL.md=0;38;2;36;39;58;48;2;238;212;159:*README.txt=0;38;2;36;39;58;48;2;238;212;159:*SConscript=0;38;2;139;213;202:*SConstruct=0;38;2;139;213;202:*.cirrus.yml=0;38;2;166;218;149:*.gitmodules=0;38;2;139;213;202:*.synctex.gz=0;38;2;91;96;120:*.travis.yml=0;38;2;166;218;149:*INSTALL.txt=0;38;2;36;39;58;48;2;238;212;159:*LICENSE-MIT=0;38;2;147;154;183:*MANIFEST.in=0;38;2;139;213;202:*Makefile.am=0;38;2;139;213;202:*Makefile.in=0;38;2;91;96;120:*.applescript=0;38;2;166;218;149:*.fdb_latexmk=0;38;2;91;96;120:*.webmanifest=0;38;2;238;212;159:*CHANGELOG.md=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTING=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTORS=0;38;2;36;39;58;48;2;238;212;159:*appveyor.yml=0;38;2;166;218;149:*configure.ac=0;38;2;139;213;202:*.bash_profile=0;38;2;166;218;149:*.clang-format=0;38;2;139;213;202:*.editorconfig=0;38;2;139;213;202:*CHANGELOG.txt=0;38;2;36;39;58;48;2;238;212;159:*.gitattributes=0;38;2;139;213;202:*.gitlab-ci.yml=0;38;2;166;218;149:*CMakeCache.txt=0;38;2;91;96;120:*CMakeLists.txt=0;38;2;139;213;202:*LICENSE-APACHE=0;38;2;147;154;183:*pyproject.toml=0;38;2;139;213;202:*CODE_OF_CONDUCT=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTING.md=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTORS.md=0;38;2;36;39;58;48;2;238;212;159:*.sconsign.dblite=0;38;2;91;96;120:*CONTRIBUTING.txt=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTORS.txt=0;38;2;36;39;58;48;2;238;212;159:*requirements.txt=0;38;2;139;213;202:*package-lock.json=0;38;2;91;96;120:*CODE_OF_CONDUCT.md=0;38;2;36;39;58;48;2;238;212;159:*.CFUserTextEncoding=0;38;2;91;96;120:*CODE_OF_CONDUCT.txt=0;38;2;36;39;58;48;2;238;212;159:*azure-pipelines.yml=0;38;2;166;218;149' + +export LS_COLORS + +setopt ALWAYS_TO_END # Move cursor to the end of a completed word. +setopt AUTO_LIST # Automatically list choices on ambiguous completion. +# setopt AUTO_MENU # Show completion menu on a successive tab press. +setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash. +setopt COMPLETE_IN_WORD # Complete from both ends of a word. +setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit. +setopt GLOB_COMPLETE # Triggers completion after glob instead of expanding it. +setopt LIST_PACKED # Smaller list +setopt PATH_DIRS # Perform path search even on command names with slashes. +unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. +unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. + +zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} +zstyle ':completion:*' list-prompt '%S%M matches%s' + +# Use caching to make completion for commands such as dpkg and apt usable. +zstyle ':completion::complete:*' use-cache on +zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/zcompcache" + +# # Case-insensitive (all), partial-word, and then substring completion. +# if zstyle -t ':zsh-utils:plugin:completion:*' case-sensitive; then +# zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' +# setopt CASE_GLOB +# else +# zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' +# unsetopt CASE_GLOB +# fi + +# Group matches and describe. +zstyle ':completion:*:*:*:*:*' menu yes select interactive search +zstyle ':completion:*:matches' group 'yes' +zstyle ':completion:*:options' description 'yes' +zstyle ':completion:*:options' auto-description '%d' +zstyle ':completion:*:corrections' format ' %F{red}-- %d (errors: %e) --%f' +zstyle ':completion:*:descriptions' format ' %F{purple}-- %d --%f' +zstyle ':completion:*:messages' format ' %F{green} -- %d --%f' +zstyle ':completion:*:warnings' format ' %F{yellow}-- no matches found --%f' +zstyle ':completion:*' complete-options true +zstyle ':completion:*' format ' %F{blue}-- %d --%f' +zstyle ':completion:*' group-name '' +zstyle ':completion:*' verbose yes +zstyle ':completion:*' keep-prefix true + +# Fuzzy match mistyped completions. +zstyle ':completion:*' completer _complete _match _approximate +zstyle ':completion:*:match:*' original only +zstyle ':completion:*:approximate:*' max-errors 1 numeric + +# Increase the number of errors based on the length of the typed word. But make +# sure to cap (at 7) the max-errors to avoid hanging. +zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)' + +# Don't complete unavailable commands. +zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))' + +# Array completion element sorting. +# zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters + +# Directories +# zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories +zstyle ':completion:*:*:cd:*:directory-stack' menu yes select +# zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand' +zstyle ':completion:*' squeeze-slashes true +zstyle ':completion:*' special-dirs .. +zstyle ':completion:*' file-list all +zstyle ':completion:*' list-dirs-first true + +# History +zstyle ':completion:*:history-words' stop yes +zstyle ':completion:*:history-words' remove-all-dups yes +zstyle ':completion:*:history-words' list false +zstyle ':completion:*:history-words' menu yes + +# Environment Variables +zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-} + +# Ignore multiple entries. +zstyle ':completion:*:(rm|kill|diff):*' ignore-line other +zstyle ':completion:*:rm:*' file-patterns '*:all-files' + +# Kill +zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w' +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01' +zstyle ':completion:*:*:kill:*' menu yes select +zstyle ':completion:*:*:kill:*' force-list always +zstyle ':completion:*:*:kill:*' insert-ids single + +# complete manual by their section +zstyle ':completion:*:manuals' separate-sections true +zstyle ':completion:*:manuals.*' insert-sections true +zstyle ':completion:*:man:*' menu yes select diff --git a/Configs/zsh/.zshrc b/Configs/zsh/.zshrc index 8a282c3..ed402e2 100644 --- a/Configs/zsh/.zshrc +++ b/Configs/zsh/.zshrc @@ -1,4 +1,3 @@ - # ╭──────────────────────────────────────────────────────────╮ # │ ZSH Config │ # ╰──────────────────────────────────────────────────────────╯ @@ -25,78 +24,22 @@ zinit snippet "https://raw.githubusercontent.com/catppuccin/zsh-syntax-highlight # ╰──────────────────────────────────────────────────────────╯ # BUG: this makes it work funky on some terminals -# zinit light zsh-users/zsh-syntax-highlighting +# zinit light zsh-users/zsh-syntax-highlighting zinit light zsh-users/zsh-completions zinit light zsh-users/zsh-autosuggestions -zinit light Aloxaf/fzf-tab +zinit ice pick"async.zsh" src"pure.zsh" +zinit light sindresorhus/pure # ╭──────────────────────────────────────────────────────────╮ # │ Oh My Zsh snippets │ # ╰──────────────────────────────────────────────────────────╯ -zinit ice as"completion"; zinit snippet "https://raw.githubusercontent.com/sharkdp/fd/master/contrib/completion/_fd" -zinit ice as"completion"; zinit snippet OMZP::gh -zinit ice as"completion"; zinit snippet OMZP::docker/completions/_docker +zinit ice as"completion" +zinit snippet "https://raw.githubusercontent.com/sharkdp/fd/master/contrib/completion/_fd" -# svn is deprecated, zinit is working in replacing in favor of git: https://github.com/zdharma-continuum/zinit/issues/504 -# In the meantime, this plugins will not work -# zinit ice svn; zinit snippet OMZ::plugins/aliases -# zinit ice svn; zinit snippet OMZ::plugins/rust - -zinit snippet OMZP::alias-finder zinit snippet OMZP::colored-man-pages -zinit snippet OMZP::dnf -zinit snippet OMZP::docker-compose -zinit snippet OMZP::git zinit snippet OMZP::systemd - -# ╭──────────────────────────────────────────────────────────╮ -# │ Plugins options │ -# ╰──────────────────────────────────────────────────────────╯ -zstyle ':completion:*:*:docker:*' option-stacking yes -zstyle ':completion:*:*:docker-*:*' option-stacking yes - -# ╭──────────────────────────────────────────────────────────╮ -# │ Load completions │ -# ╰──────────────────────────────────────────────────────────╯ -# Custom completions -fpath+=${XDG_CONFIG_HOME:-$HOME/.config}/zsh/completions -autoload -Uz ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/completions/* - -autoload -Uz compinit && compinit -zinit cdreplay -q - -# ╭──────────────────────────────────────────────────────────╮ -# │ Keybindings │ -# ╰──────────────────────────────────────────────────────────╯ -# bindkey -e -# bindkey '^f' auto-suggest-accept -# bindkey '^p' history-search-backward -# bindkey '^n' history-search-forward -# bindkey '^[w' kill-region -# -# # Set VIM keybindings -# # bindkey -v -# export KEYTIMEOUT=1 -# # autoload -Uz edit-command-line -# zle -N edit-command-line -# bindkey -M vicmd V edit-command-line # Edits files in vim, hit Shift+v in normal mode -# -# # Add vim text objects -# # autoload -Uz select-bracketed select-quoted -# zle -N select-quoted -# zle -N select-bracketed -# for km in viopp visual; do -# bindkey -M $km -- '-' vi-up-line-or-history -# for c in {a,i}${(s..)^:-\'\"\`\|,./:;=+@}; do -# bindkey -M $km $c select-quoted -# done -# for c in {a,i}${(s..)^:-'()[]{}<>bB'}; do -# bindkey -M $km $c select-bracketed -# done -# done - # ╭──────────────────────────────────────────────────────────╮ # │ History │ # ╰──────────────────────────────────────────────────────────╯ @@ -112,73 +55,28 @@ setopt hist_save_no_dups setopt hist_ignore_dups setopt hist_find_no_dups -# ╭──────────────────────────────────────────────────────────╮ -# │ Completion styling │ -# ╰──────────────────────────────────────────────────────────╯ -# case insensitive completion -zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' -zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" - -zstyle ':completion:*' menu no -zstyle ':fzf-tab:*' show-group full -zstyle ':fzf-tab:*' continuous-trigger '/' -zstyle ':fzf-tab:*' fzf-flags --height=10% --layout=reverse --info=inline --ansi -i --preview-window=right:60%:wrap - -# ── Previewers ─────────────────────────────────────────────────────── - -# Directories -zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview \ - 'eza -lha --color=always --icons --git --no-permissions --tree --level 3 --group-directories-first --total-size $realpath' -zstyle ':fzf-tab:complete:cd:*' fzf-preview \ - 'eza -lha --color=always --icons --git --no-permissions --tree --level 3 --group-directories-first --total-size $realpath' - -# systemctl -zstyle ':fzf-tab:complete:systemctl-*:*' fzf-preview 'SYSTEMD_COLORS=1 systemctl status $word' - -# git -zstyle ':fzf-tab:complete:git-(add|diff|restore):*' fzf-preview \ - 'git diff $word | bat -plman --color=always' -zstyle ':fzf-tab:complete:git-log:*' fzf-preview \ - 'git log --decorate --graph --color=always $word' -zstyle ':fzf-tab:complete:git-help:*' fzf-preview \ - 'git help $word | bat -plman --color=always' -zstyle ':fzf-tab:complete:git-show:*' fzf-preview \ - 'case "$group" in - "commit tag") git show --color=always $word ;; - *) git show --color=always $word | bat -plman --color=always ;; - esac' -zstyle ':fzf-tab:complete:git-checkout:*' fzf-preview \ - 'case "$group" in - "modified file") git diff $word | bat -plman --color=always ;; - "recent commit object name") git show --color=always $word | bat -plman --color=always ;; - *) git log --decorate --graph --color=always $word ;; - esac' - -# TLDR - zstyle ':fzf-tab:complete:tldr:argument-1' fzf-preview 'tldr --color always $word' - -# ╭──────────────────────────────────────────────────────────╮ -# │ ZSH Options │ -# ╰──────────────────────────────────────────────────────────╯ -setopt EXTENDED_GLOB -setopt DOT_GLOB -setopt GLOB_DOTS - # ╭──────────────────────────────────────────────────────────╮ # │ Source other files │ # ╰──────────────────────────────────────────────────────────╯ -source $HOME/.config/fzf/fzfrc - # this prevents errors and not loading some files for file in $HOME/.config/zsh/**/*.zsh; do - source $file + source $file done +# ╭──────────────────────────────────────────────────────────╮ +# │ Load completions │ +# ╰──────────────────────────────────────────────────────────╯ +# Custom completions +fpath+=${XDG_CONFIG_HOME:-$HOME/.config}/zsh/completions +autoload -Uz ${XDG_CONFIG_HOME:-$HOME/.config}/zsh/completions/* + +autoload -Uz complist +autoload -Uz compinit && compinit +zinit cdreplay -q + # ╭──────────────────────────────────────────────────────────╮ # │ Init external programs │ # ╰──────────────────────────────────────────────────────────╯ -eval "$(fzf --zsh)" eval "$(zoxide init --cmd cd zsh)" -eval "$(starship init zsh)" From 1fd1ea1e05f58cd26ffcb18bf4bb4ef9a71c5caf Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 28 May 2025 11:04:16 -0400 Subject: [PATCH 096/152] add rbw as ssh auth agent --- Configs/zsh/.zprofile | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Configs/zsh/.zprofile b/Configs/zsh/.zprofile index 141af37..d187318 100644 --- a/Configs/zsh/.zprofile +++ b/Configs/zsh/.zprofile @@ -12,6 +12,10 @@ export VISUAL="$EDITOR" export QT_STYLE_OVERRIDE=kvantum export MOZ_ENABLE_WAYLAND=1 +# Use rbw as SSH Agent +# use https://github.com/pmkap/rbw/ until https://github.com/doy/rbw/issues/197 is closed +export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/rbw/ssh-agent-socket" + update_path "$DOTS/scripts" update_path "$HOME/.local/bin" update_path "$HOME/bin" From a01c1bd837e69551e5e68a2f9ab4818886edbc38 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 29 May 2025 11:21:27 -0400 Subject: [PATCH 097/152] update lsp config --- Configs/nvim/.config/nvim/lazy-lock.json | 44 +++++++++---------- .../nvim/.config/nvim/lua/aleidk/options.lua | 4 +- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index 00758be..56230ec 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -1,28 +1,28 @@ { - "blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" }, - "blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" }, - "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, + "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, + "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, + "catppuccin": { "branch": "main", "commit": "56a9dfd1e05868cf3189369aad87242941396563" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "a203480a350b03092e473bf3001733d547160a73" }, - "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, - "fzf-lua": { "branch": "main", "commit": "8adf950093af5361621cf52208d64995b1af78b5" }, + "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, + "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, + "fzf-lua": { "branch": "main", "commit": "758173f499d15410ecb50c5519a41b27c33e645d" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, - "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, - "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, - "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, + "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, - "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" }, - "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, - "nvim-lspconfig": { "branch": "master", "commit": "4ae9796c4e95ca84ec77946a9f9089b8f1a3eec9" }, - "nvim-treesitter": { "branch": "master", "commit": "8d4fdc5e47e2a4e00179e43f56221250ce365973" }, - "nvim-treesitter-context": { "branch": "master", "commit": "6b081ea63a3711243d11540ce28ccdb6f35ecd33" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, - "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, - "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, - "smart-splits.nvim": { "branch": "master", "commit": "fc7bb00fe67ab504356bed4310d23c2e4cb4b06b" }, - "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, - "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, + "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, + "nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" }, + "nvim-lspconfig": { "branch": "master", "commit": "b8e7957bde4cbb3cb25a13a62548f7c273b026e9" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter-context": { "branch": "master", "commit": "ebee603a25f785872c49a226aa9c6e325785122a" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, + "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, + "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, + "render-markdown": { "branch": "main", "commit": "4a39681990fb515d00dd898de3d7bf2973805f1a" }, + "smart-splits.nvim": { "branch": "master", "commit": "5ef94ca23b28148187846fc46f10184aad4d17b0" }, + "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, + "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "yazi.nvim": { "branch": "main", "commit": "053867916a9be3cb46f84b6f095ee731bbddd213" } + "yazi.nvim": { "branch": "main", "commit": "59c22d1a8bcb3d00a7115ef7f2d59b90cf989ab3" } } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index f7b0ff6..3a7c338 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -152,8 +152,10 @@ vim.filetype.add({ -- ╰─────────────────────────────────────────────────────────╯ vim.lsp.enable({ - "rust_analyzer", "lua_ls", + "pyright", + "ruff", + "rust_analyzer", }) vim.diagnostic.config({ From e01cd5110cf0966d127ba80ccdfd2c817b218e85 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 2 Jun 2025 10:07:25 -0400 Subject: [PATCH 098/152] minor updates --- Configs/jetbrains/.config/ideavim/ideavimrc | 18 ++++++++++++------ .../nvim/.config/nvim/lua/aleidk/options.lua | 3 +++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/Configs/jetbrains/.config/ideavim/ideavimrc b/Configs/jetbrains/.config/ideavim/ideavimrc index 2ea8223..770198e 100644 --- a/Configs/jetbrains/.config/ideavim/ideavimrc +++ b/Configs/jetbrains/.config/ideavim/ideavimrc @@ -4,7 +4,7 @@ " Find more examples here: https://jb.gg/share-ideavimrc " UI/UX -set scrolloff=15 +set scrolloff=10 set autoindent set relativenumber set showcmd @@ -88,6 +88,10 @@ let g:WhichKeyDesc_Find_Files = "ff Files" nmap fr (RecentFiles) let g:WhichKeyDesc_Find_Recents = "fr Recent" +nmap fa (GotoAction) + +nmap fl (GotoSymbol) + "" code jump " nmap gd (GotoSuperMethod) " nmap gD (GotoDeclaration) @@ -104,10 +108,13 @@ let g:WhichKeyDesc_Commentary = "gc Comment" " nmap gco o(CommentByLineComment) " nmap gcO O(CommentByLineComment) -" nmap lf (ReformatCode) -" vmap lf (ReformatCode) +nmap lf (ReformatCode) +vmap lf (ReformatCode) nmap lr (RenameElement) +" Actions +nmap ps (QuickList.SSH Actions) + "" git operation nmap gt (ActivateCommitToolWindow) " nmap gC (Vcs.ShowTabbedFileHistory) @@ -118,9 +125,8 @@ nmap gR (ChangesView.Revert) "" tabs nmap H (PreviousTab) nmap L (NextTab) -" nmap bc (CloseAllEditorsButActive) -" nmap bC (CloseAllEditors) -" nmap c (CloseContent) +nmap bc (CloseContent) +nmap bC (CloseAllEditors) "" panels nmap h diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index 3a7c338..b6d640c 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -130,6 +130,8 @@ vim.filetype.add({ log = "log", conf = "conf", env = "dotenv", + yml = 'yaml.ansible', + yaml = 'yaml.ansible', }, -- Detect and apply filetypes based on the entire filename filename = { @@ -156,6 +158,7 @@ vim.lsp.enable({ "pyright", "ruff", "rust_analyzer", + "ansiblels", }) vim.diagnostic.config({ From 5569b6fe10f35fc01edbf3a1a3f9fbc9e6635652 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 6 Jun 2025 09:35:53 -0400 Subject: [PATCH 099/152] add fish shell config --- .../fish/completions/.config/fish/config.fish | 3 + .../completions/.config/fish/fish_variables | 31 +++ .../fish/.config/fish/completions/fisher.fish | 7 + Configs/fish/.config/fish/config.fish | 4 + Configs/fish/.config/fish/fish_variables | 114 +++++++++ .../functions/_pure_check_availability.fish | 15 ++ .../_pure_check_for_new_release.fish | 24 ++ ...ure_detect_container_by_cgroup_method.fish | 10 + .../_pure_detect_container_by_pid_method.fish | 14 + .../fish/functions/_pure_format_time.fish | 49 ++++ .../functions/_pure_get_prompt_symbol.fish | 12 + .../functions/_pure_is_inside_container.fish | 25 ++ .../_pure_is_single_line_prompt.fish | 5 + .../fish/functions/_pure_k8s_context.fish | 3 + .../fish/functions/_pure_k8s_namespace.fish | 9 + .../fish/functions/_pure_parse_directory.fish | 23 ++ .../functions/_pure_parse_git_branch.fish | 4 + .../_pure_place_iterm2_prompt_mark.fish | 5 + .../functions/_pure_prefix_root_prompt.fish | 11 + .../fish/functions/_pure_print_prompt.fish | 12 + .../functions/_pure_print_prompt_rows.fish | 10 + .../.config/fish/functions/_pure_prompt.fish | 31 +++ .../functions/_pure_prompt_aws_profile.fish | 19 ++ .../functions/_pure_prompt_beginning.fish | 7 + .../_pure_prompt_command_duration.fish | 11 + .../functions/_pure_prompt_container.fish | 5 + .../_pure_prompt_current_folder.fish | 11 + .../fish/functions/_pure_prompt_ending.fish | 3 + .../functions/_pure_prompt_first_line.fish | 41 +++ .../fish/functions/_pure_prompt_git.fish | 26 ++ .../functions/_pure_prompt_git_branch.fish | 6 + .../functions/_pure_prompt_git_dirty.fish | 27 ++ .../_pure_prompt_git_pending_commits.fish | 27 ++ .../functions/_pure_prompt_git_stash.fish | 15 ++ .../fish/functions/_pure_prompt_jobs.fish | 9 + .../fish/functions/_pure_prompt_k8s.fish | 16 ++ .../fish/functions/_pure_prompt_new_line.fish | 11 + .../functions/_pure_prompt_nixdevshell.fish | 13 + .../fish/functions/_pure_prompt_ssh.fish | 5 + .../fish/functions/_pure_prompt_symbol.fish | 20 ++ .../functions/_pure_prompt_system_time.fish | 6 + .../fish/functions/_pure_prompt_vimode.fish | 6 + .../functions/_pure_prompt_virtualenv.fish | 18 ++ .../fish/functions/_pure_set_color.fish | 19 ++ .../fish/functions/_pure_set_default.fish | 11 + .../fish/functions/_pure_string_width.fish | 9 + .../fish/functions/_pure_user_at_host.fish | 13 + .../.config/fish/functions/fish_greeting.fish | 3 + .../fish/functions/fish_mode_prompt.fish | 2 + .../.config/fish/functions/fish_prompt.fish | 11 + .../.config/fish/functions/fish_title.fish | 15 ++ .../fish/.config/fish/functions/fisher.fish | 240 ++++++++++++++++++ Configs/fish/.config/fish/functions/la.fish | 4 + Configs/fish/.config/fish/functions/ld.fish | 4 + Configs/fish/.config/fish/functions/ls.fish | 4 + .../fish/themes/Catppuccin Frappe.theme | 30 +++ .../fish/themes/Catppuccin Latte.theme | 30 +++ .../fish/themes/Catppuccin Macchiato.theme | 30 +++ .../fish/themes/Catppuccin Mocha.theme | 30 +++ Configs/zsh/.zshrc | 8 +- 60 files changed, 1185 insertions(+), 1 deletion(-) create mode 100644 Configs/fish/.config/fish/completions/.config/fish/config.fish create mode 100644 Configs/fish/.config/fish/completions/.config/fish/fish_variables create mode 100644 Configs/fish/.config/fish/completions/fisher.fish create mode 100644 Configs/fish/.config/fish/config.fish create mode 100644 Configs/fish/.config/fish/fish_variables create mode 100644 Configs/fish/.config/fish/functions/_pure_check_availability.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_check_for_new_release.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_detect_container_by_cgroup_method.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_detect_container_by_pid_method.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_format_time.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_get_prompt_symbol.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_is_inside_container.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_is_single_line_prompt.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_k8s_context.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_k8s_namespace.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_parse_directory.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_parse_git_branch.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_place_iterm2_prompt_mark.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prefix_root_prompt.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_print_prompt.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_print_prompt_rows.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_aws_profile.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_beginning.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_command_duration.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_container.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_current_folder.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_ending.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_first_line.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_git.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_git_branch.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_git_dirty.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_git_stash.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_jobs.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_k8s.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_new_line.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_nixdevshell.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_ssh.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_symbol.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_system_time.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_vimode.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_prompt_virtualenv.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_set_color.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_set_default.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_string_width.fish create mode 100644 Configs/fish/.config/fish/functions/_pure_user_at_host.fish create mode 100644 Configs/fish/.config/fish/functions/fish_greeting.fish create mode 100644 Configs/fish/.config/fish/functions/fish_mode_prompt.fish create mode 100644 Configs/fish/.config/fish/functions/fish_prompt.fish create mode 100644 Configs/fish/.config/fish/functions/fish_title.fish create mode 100644 Configs/fish/.config/fish/functions/fisher.fish create mode 100644 Configs/fish/.config/fish/functions/la.fish create mode 100644 Configs/fish/.config/fish/functions/ld.fish create mode 100644 Configs/fish/.config/fish/functions/ls.fish create mode 100644 Configs/fish/.config/fish/themes/Catppuccin Frappe.theme create mode 100644 Configs/fish/.config/fish/themes/Catppuccin Latte.theme create mode 100644 Configs/fish/.config/fish/themes/Catppuccin Macchiato.theme create mode 100644 Configs/fish/.config/fish/themes/Catppuccin Mocha.theme diff --git a/Configs/fish/.config/fish/completions/.config/fish/config.fish b/Configs/fish/.config/fish/completions/.config/fish/config.fish new file mode 100644 index 0000000..d714361 --- /dev/null +++ b/Configs/fish/.config/fish/completions/.config/fish/config.fish @@ -0,0 +1,3 @@ +if status is-interactive + # Commands to run in interactive sessions can go here +end diff --git a/Configs/fish/.config/fish/completions/.config/fish/fish_variables b/Configs/fish/.config/fish/completions/.config/fish/fish_variables new file mode 100644 index 0000000..74b1ee1 --- /dev/null +++ b/Configs/fish/.config/fish/completions/.config/fish/fish_variables @@ -0,0 +1,31 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3800 +SETUVAR fish_color_autosuggestion:brblack +SETUVAR fish_color_cancel:\x2dr +SETUVAR fish_color_command:normal +SETUVAR fish_color_comment:red +SETUVAR fish_color_cwd:green +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:green +SETUVAR fish_color_error:brred +SETUVAR fish_color_escape:brcyan +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:normal +SETUVAR fish_color_host_remote:yellow +SETUVAR fish_color_normal:normal +SETUVAR fish_color_operator:brcyan +SETUVAR fish_color_param:cyan +SETUVAR fish_color_quote:yellow +SETUVAR fish_color_redirection:cyan\x1e\x2d\x2dbold +SETUVAR fish_color_search_match:white\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack +SETUVAR fish_color_status:red +SETUVAR fish_color_user:brgreen +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_completion:normal +SETUVAR fish_pager_color_description:yellow\x1e\x2di +SETUVAR fish_pager_color_prefix:normal\x1e\x2d\x2dbold\x1e\x2d\x2dunderline +SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan +SETUVAR fish_pager_color_selected_background:\x2dr diff --git a/Configs/fish/.config/fish/completions/fisher.fish b/Configs/fish/.config/fish/completions/fisher.fish new file mode 100644 index 0000000..6d23ce4 --- /dev/null +++ b/Configs/fish/.config/fish/completions/fisher.fish @@ -0,0 +1,7 @@ +complete --command fisher --exclusive --long help --description "Print help" +complete --command fisher --exclusive --long version --description "Print version" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments install --description "Install plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments update --description "Update installed plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments remove --description "Remove installed plugins" +complete --command fisher --exclusive --condition __fish_use_subcommand --arguments list --description "List installed plugins matching regex" +complete --command fisher --exclusive --condition "__fish_seen_subcommand_from update remove" --arguments "(fisher list)" diff --git a/Configs/fish/.config/fish/config.fish b/Configs/fish/.config/fish/config.fish new file mode 100644 index 0000000..a6030a8 --- /dev/null +++ b/Configs/fish/.config/fish/config.fish @@ -0,0 +1,4 @@ +if status is-interactive + # Commands to run in interactive sessions can go here + zoxide init --cmd cd fish | source +end diff --git a/Configs/fish/.config/fish/fish_variables b/Configs/fish/.config/fish/fish_variables new file mode 100644 index 0000000..c6de14c --- /dev/null +++ b/Configs/fish/.config/fish/fish_variables @@ -0,0 +1,114 @@ +# This file contains fish universal variable definitions. +# VERSION: 3.0 +SETUVAR __fish_initialized:3800 +SETUVAR _fisher_catppuccin_2F_fish_files:\x7e/\x2econfig/fish/themes/Catppuccin\x20Frappe\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Latte\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Macchiato\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Mocha\x2etheme +SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish +SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ecatppuccin/fish\x1epure\x2dfish/pure +SETUVAR _fisher_pure_2D_fish_2F_pure_files:\x7e/\x2econfig/fish/functions/_pure_check_availability\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_check_for_new_release\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_detect_container_by_cgroup_method\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_detect_container_by_pid_method\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_format_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_get_prompt_symbol\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_is_inside_container\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_is_single_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_k8s_context\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_k8s_namespace\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_parse_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_parse_git_branch\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_place_iterm2_prompt_mark\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prefix_root_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_print_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_print_prompt_rows\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_aws_profile\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_beginning\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_command_duration\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_container\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_current_folder\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_ending\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_first_line\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_branch\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_dirty\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_pending_commits\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_stash\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_jobs\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_k8s\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_new_line\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_nixdevshell\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_ssh\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_symbol\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_system_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_vimode\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_virtualenv\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_set_color\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_set_default\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_string_width\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_user_at_host\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_greeting\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_mode_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_title\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/_pure_init\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/pure\x2efish +SETUVAR _fisher_upgraded_to_4_4:\x1d +SETUVAR fish_color_autosuggestion:6e738d +SETUVAR fish_color_cancel:ed8796 +SETUVAR fish_color_command:8aadf4 +SETUVAR fish_color_comment:8087a2 +SETUVAR fish_color_cwd:eed49f +SETUVAR fish_color_cwd_root:red +SETUVAR fish_color_end:f5a97f +SETUVAR fish_color_error:ed8796 +SETUVAR fish_color_escape:ee99a0 +SETUVAR fish_color_gray:6e738d +SETUVAR fish_color_history_current:\x2d\x2dbold +SETUVAR fish_color_host:8aadf4 +SETUVAR fish_color_host_remote:a6da95 +SETUVAR fish_color_keyword:ed8796 +SETUVAR fish_color_normal:cad3f5 +SETUVAR fish_color_operator:f5bde6 +SETUVAR fish_color_option:a6da95 +SETUVAR fish_color_param:f0c6c6 +SETUVAR fish_color_quote:a6da95 +SETUVAR fish_color_redirection:f5bde6 +SETUVAR fish_color_search_match:\x2d\x2dbackground\x3d363a4f +SETUVAR fish_color_selection:\x2d\x2dbackground\x3d363a4f +SETUVAR fish_color_status:ed8796 +SETUVAR fish_color_user:8bd5ca +SETUVAR fish_color_valid_path:\x2d\x2dunderline +SETUVAR fish_greeting:\x1d +SETUVAR fish_key_bindings:fish_default_key_bindings +SETUVAR fish_pager_color_background:\x1d +SETUVAR fish_pager_color_completion:cad3f5 +SETUVAR fish_pager_color_description:6e738d +SETUVAR fish_pager_color_prefix:f5bde6 +SETUVAR fish_pager_color_progress:6e738d +SETUVAR fish_pager_color_secondary_background:\x1d +SETUVAR fish_pager_color_secondary_completion:\x1d +SETUVAR fish_pager_color_secondary_description:\x1d +SETUVAR fish_pager_color_secondary_prefix:\x1d +SETUVAR fish_pager_color_selected_background:\x1d +SETUVAR fish_pager_color_selected_completion:\x1d +SETUVAR fish_pager_color_selected_description:\x1d +SETUVAR fish_pager_color_selected_prefix:\x1d +SETUVAR pure_begin_prompt_with_current_directory:true +SETUVAR pure_check_for_new_release:false +SETUVAR pure_color_at_sign:pure_color_mute +SETUVAR pure_color_aws_profile:pure_color_warning +SETUVAR pure_color_command_duration:pure_color_warning +SETUVAR pure_color_current_directory:pure_color_primary +SETUVAR pure_color_danger:red +SETUVAR pure_color_dark:black +SETUVAR pure_color_git_branch:pure_color_mute +SETUVAR pure_color_git_dirty:pure_color_mute +SETUVAR pure_color_git_stash:pure_color_info +SETUVAR pure_color_git_unpulled_commits:pure_color_info +SETUVAR pure_color_git_unpushed_commits:pure_color_info +SETUVAR pure_color_hostname:pure_color_mute +SETUVAR pure_color_info:cyan +SETUVAR pure_color_jobs:pure_color_normal +SETUVAR pure_color_k8s_context:pure_color_success +SETUVAR pure_color_k8s_namespace:pure_color_primary +SETUVAR pure_color_k8s_prefix:pure_color_info +SETUVAR pure_color_light:white +SETUVAR pure_color_mute:brblack +SETUVAR pure_color_nixdevshell_prefix:pure_color_info +SETUVAR pure_color_nixdevshell_symbol:pure_color_mute +SETUVAR pure_color_normal:normal +SETUVAR pure_color_prefix_root_prompt:pure_color_danger +SETUVAR pure_color_primary:blue +SETUVAR pure_color_prompt_on_error:pure_color_danger +SETUVAR pure_color_prompt_on_success:pure_color_success +SETUVAR pure_color_success:magenta +SETUVAR pure_color_system_time:pure_color_mute +SETUVAR pure_color_username_normal:pure_color_mute +SETUVAR pure_color_username_root:pure_color_light +SETUVAR pure_color_virtualenv:pure_color_mute +SETUVAR pure_color_warning:yellow +SETUVAR pure_enable_aws_profile:true +SETUVAR pure_enable_container_detection:true +SETUVAR pure_enable_git:true +SETUVAR pure_enable_k8s:false +SETUVAR pure_enable_nixdevshell:false +SETUVAR pure_enable_single_line_prompt:true +SETUVAR pure_enable_virtualenv:true +SETUVAR pure_reverse_prompt_symbol_in_vimode:true +SETUVAR pure_separate_prompt_on_error:false +SETUVAR pure_shorten_prompt_current_directory_length:0 +SETUVAR pure_shorten_window_title_current_directory_length:0 +SETUVAR pure_show_jobs:false +SETUVAR pure_show_prefix_root_prompt:false +SETUVAR pure_show_subsecond_command_duration:false +SETUVAR pure_show_system_time:false +SETUVAR pure_symbol_aws_profile_prefix: +SETUVAR pure_symbol_container_prefix: +SETUVAR pure_symbol_git_dirty:\x2a +SETUVAR pure_symbol_git_stash:\u2261 +SETUVAR pure_symbol_git_unpulled_commits:\u21e3 +SETUVAR pure_symbol_git_unpushed_commits:\u21e1 +SETUVAR pure_symbol_k8s_prefix:\u2638 +SETUVAR pure_symbol_nixdevshell_prefix:\u2744\ufe0f +SETUVAR pure_symbol_prefix_root_prompt:\x23 +SETUVAR pure_symbol_prompt:\u276f +SETUVAR pure_symbol_reverse_prompt:\u276e +SETUVAR pure_symbol_ssh_prefix: +SETUVAR pure_symbol_title_bar_separator:\x2d +SETUVAR pure_symbol_virtualenv_prefix: +SETUVAR pure_threshold_command_duration:5 +SETUVAR pure_truncate_prompt_current_directory_keeps:\x2d1 +SETUVAR pure_truncate_window_title_current_directory_keeps:\x2d1 diff --git a/Configs/fish/.config/fish/functions/_pure_check_availability.fish b/Configs/fish/.config/fish/functions/_pure_check_availability.fish new file mode 100644 index 0000000..3f6bfd8 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_check_availability.fish @@ -0,0 +1,15 @@ +function _pure_check_availability \ + --description "Ensure command is available on system" \ + --argument-names \ + feature_flag \ + required_command + + set FAILURE 1 + + if not type -q $required_command # command, function or alias are OK + echo (set_color $pure_color_warning) \ + "$feature_flag feature requires: `$required_command`" \ + (set_color $pure_color_normal) + return $FAILURE + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_check_for_new_release.fish b/Configs/fish/.config/fish/functions/_pure_check_for_new_release.fish new file mode 100644 index 0000000..9704bc8 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_check_for_new_release.fish @@ -0,0 +1,24 @@ +function _pure_check_for_new_release \ + --description "Check for new release and show command to install" + + if test "$pure_check_for_new_release" = true + echo "🛈 Checking for new release…" + set latest (pure_get_latest_release_version "pure-fish/pure") + + if test "v"$pure_version != $latest + set --local latest_version (_pure_set_color $pure_color_info)$latest(_pure_set_color $pure_color_normal) + echo -e "🔔 New version available!\n" + echo -e (_pure_set_color $pure_color_success)"fisher install pure-fish/pure@$latest_version\n" + end + end +end + + +function pure_get_latest_release_version \ + --argument-names user_repo + + curl \ + --silent \ + "https://api.github.com/repos/$user_repo/releases/latest" \ + | string match --regex '"tag_name": "\K.*?(?=")' +end diff --git a/Configs/fish/.config/fish/functions/_pure_detect_container_by_cgroup_method.fish b/Configs/fish/.config/fish/functions/_pure_detect_container_by_cgroup_method.fish new file mode 100644 index 0000000..30b29dd --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_detect_container_by_cgroup_method.fish @@ -0,0 +1,10 @@ +function _pure_detect_container_by_cgroup_method \ + --description "Linux method to detect container using cgroup. see https://stackoverflow.com/a/37015387/802365" \ + --argument-names cgroup_namespace + set --query cgroup_namespace[1]; or set cgroup_namespace /proc/1/cgroup + + string match \ + --quiet \ + --entire \ + --regex '(lxc|docker)' <$cgroup_namespace +end diff --git a/Configs/fish/.config/fish/functions/_pure_detect_container_by_pid_method.fish b/Configs/fish/.config/fish/functions/_pure_detect_container_by_pid_method.fish new file mode 100644 index 0000000..f515051 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_detect_container_by_pid_method.fish @@ -0,0 +1,14 @@ +function _pure_detect_container_by_pid_method \ + --description "Linux method to detect container using /proc. see https://stackoverflow.com/a/37015387/802365" \ + --argument-names proc_sched + + set --query proc_sched[1]; or set proc_sched /proc/1/sched + + if test -e $proc_sched + head -n 1 $proc_sched \ + | string match \ + --quiet \ + --invert \ + --regex 'init|systemd|shepherd' + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_format_time.fish b/Configs/fish/.config/fish/functions/_pure_format_time.fish new file mode 100644 index 0000000..140f72f --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_format_time.fish @@ -0,0 +1,49 @@ +set SUCCESS 0 +set FAILURE 1 + +function _pure_format_time \ + --description="Format milliseconds to a human readable format" \ + --argument-names \ + milliseconds \ + threshold \ + show_subsecond + + set --query show_subsecond[1]; or set show_subsecond false + test "$milliseconds" -lt 0; and return $FAILURE + test "$milliseconds" -lt (math --scale=0 "$threshold * 1000"); and echo; and return $SUCCESS + + set --local time + set --local days (math --scale=0 "$milliseconds / 86400000") + test "$days" -gt 0; and set --append time (printf "%sd" $days) + set --local hours (math --scale=0 "$milliseconds / 3600000 % 24") + test "$hours" -gt 0; and set --append time (printf "%sh" $hours) + set --local minutes (math --scale=0 "$milliseconds / 60000 % 60") + test "$minutes" -gt 0; and set --append time (printf "%sm" $minutes) + set --local seconds (math --scale=0 "$milliseconds / 1000 % 60") + + if test "$show_subsecond" = true + set --local threshold_as_ms (math --scale=0 "$threshold*1000") + set --local subseconds (_pure_format_time_subseconds $milliseconds $threshold_as_ms) + set --append time $seconds$subseconds's' + else + test "$seconds" -gt $threshold; and set --append time (printf "%ss" $seconds) + end + + echo -e (string join ' ' $time) +end + + +function _pure_format_time_subseconds \ + --description="Format duration milliseconds to a human readable format" \ + --argument-names \ + duration \ + threshold + + set --local subseconds + if test "$duration" -gt $threshold + set --local precision 2 + set --local milliseconds (string sub --start -3 --length $precision $duration) + set --append subseconds '.'$milliseconds + end + echo $subseconds +end diff --git a/Configs/fish/.config/fish/functions/_pure_get_prompt_symbol.fish b/Configs/fish/.config/fish/functions/_pure_get_prompt_symbol.fish new file mode 100644 index 0000000..75c15e7 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_get_prompt_symbol.fish @@ -0,0 +1,12 @@ +function _pure_get_prompt_symbol \ + --description 'Print prompt symbol' \ + --argument-names exit_code + + set --local prompt_symbol $pure_symbol_prompt + test "$pure_reverse_prompt_symbol_in_vimode" = true + and string match -rq "fish_(vi|hybrid)_key_bindings" $fish_key_bindings + and not contains "$fish_bind_mode" insert replace + and set prompt_symbol $pure_symbol_reverse_prompt + + echo "$prompt_symbol" +end diff --git a/Configs/fish/.config/fish/functions/_pure_is_inside_container.fish b/Configs/fish/.config/fish/functions/_pure_is_inside_container.fish new file mode 100644 index 0000000..594d3bb --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_is_inside_container.fish @@ -0,0 +1,25 @@ +function _pure_is_inside_container \ + --argument-names cgroup_namespace + set --query cgroup_namespace[1]; or set cgroup_namespace /proc/1/cgroup + + set --local failure 1 + if set --query pure_enable_container_detection; and test "$pure_enable_container_detection" = true + set --local success 0 + if test -n "$container" + return $success + end + + set --local os_name (uname -s) + # echo $os_name + if test "$os_name" = Linux + if _pure_detect_container_by_cgroup_method $cgroup_namespace + return $success + end + + if _pure_detect_container_by_pid_method + return $success + end + end + end + return $failure +end diff --git a/Configs/fish/.config/fish/functions/_pure_is_single_line_prompt.fish b/Configs/fish/.config/fish/functions/_pure_is_single_line_prompt.fish new file mode 100644 index 0000000..f1efd4e --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_is_single_line_prompt.fish @@ -0,0 +1,5 @@ +function _pure_is_single_line_prompt \ + --description 'Test if single line prompt feature is enabled' + set --query pure_enable_single_line_prompt + and test "$pure_enable_single_line_prompt" = true +end diff --git a/Configs/fish/.config/fish/functions/_pure_k8s_context.fish b/Configs/fish/.config/fish/functions/_pure_k8s_context.fish new file mode 100644 index 0000000..5bd9e1c --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_k8s_context.fish @@ -0,0 +1,3 @@ +function _pure_k8s_context + kubectl config current-context 2>/dev/null +end diff --git a/Configs/fish/.config/fish/functions/_pure_k8s_namespace.fish b/Configs/fish/.config/fish/functions/_pure_k8s_namespace.fish new file mode 100644 index 0000000..87e08c7 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_k8s_namespace.fish @@ -0,0 +1,9 @@ +function _pure_k8s_namespace + set namespace (kubectl config view --minify --output 'jsonpath={..namespace}' 2>/dev/null) + + if test -z "$namespace" + set namespace default + end + + echo $namespace +end diff --git a/Configs/fish/.config/fish/functions/_pure_parse_directory.fish b/Configs/fish/.config/fish/functions/_pure_parse_directory.fish new file mode 100644 index 0000000..f28924b --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_parse_directory.fish @@ -0,0 +1,23 @@ +function _pure_parse_directory \ + --description "Replace '$HOME' with '~'" \ + --argument-names max_path_length + + set --local folder (fish_prompt_pwd_dir_length=$pure_shorten_prompt_current_directory_length prompt_pwd) + + if test -n "$max_path_length" + if test (string length $folder) -gt $max_path_length + # If path exceeds maximum symbol limit, force fish path formating function to use 1 character + set folder (fish_prompt_pwd_dir_length=1 prompt_pwd) + end + end + + if test "$pure_truncate_prompt_current_directory_keeps" -ge 1 + set folder ( + string split '/' $folder \ + | tail -n $pure_truncate_prompt_current_directory_keeps \ + | string join '/' + ) + end + + echo $folder +end diff --git a/Configs/fish/.config/fish/functions/_pure_parse_git_branch.fish b/Configs/fish/.config/fish/functions/_pure_parse_git_branch.fish new file mode 100644 index 0000000..a666f2a --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_parse_git_branch.fish @@ -0,0 +1,4 @@ +function _pure_parse_git_branch --description "Parse current Git branch name" + command git symbolic-ref --short HEAD 2>/dev/null; + or command git name-rev --name-only HEAD 2>/dev/null +end diff --git a/Configs/fish/.config/fish/functions/_pure_place_iterm2_prompt_mark.fish b/Configs/fish/.config/fish/functions/_pure_place_iterm2_prompt_mark.fish new file mode 100644 index 0000000..b999b7a --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_place_iterm2_prompt_mark.fish @@ -0,0 +1,5 @@ +function _pure_place_iterm2_prompt_mark + if functions -q iterm2_prompt_mark + iterm2_prompt_mark + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prefix_root_prompt.fish b/Configs/fish/.config/fish/functions/_pure_prefix_root_prompt.fish new file mode 100644 index 0000000..e9fb86f --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prefix_root_prompt.fish @@ -0,0 +1,11 @@ +function _pure_prefix_root_prompt + set --local username (id -u -n) # current user name + set --local prefix_root_prompt + + if set --query pure_show_prefix_root_prompt; and test "$pure_show_prefix_root_prompt" = true -a "$username" = "root" + set --local prefix_color (_pure_set_color $pure_color_prefix_root_prompt) + set prefix_root_prompt "$prefix_color$pure_symbol_prefix_root_prompt" + end + + echo "$prefix_root_prompt" +end diff --git a/Configs/fish/.config/fish/functions/_pure_print_prompt.fish b/Configs/fish/.config/fish/functions/_pure_print_prompt.fish new file mode 100644 index 0000000..91b9c90 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_print_prompt.fish @@ -0,0 +1,12 @@ +function _pure_print_prompt \ + --description 'Concatenate parts single prompt string' + set --local prompt + + for prompt_part in $argv + if test (_pure_string_width $prompt_part) -gt 0 + set --append prompt "$prompt_part" + end + end + + echo (string trim -l $prompt) +end diff --git a/Configs/fish/.config/fish/functions/_pure_print_prompt_rows.fish b/Configs/fish/.config/fish/functions/_pure_print_prompt_rows.fish new file mode 100644 index 0000000..cc8555c --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_print_prompt_rows.fish @@ -0,0 +1,10 @@ +function _pure_print_prompt_rows \ + --description "Manage default vs. compact prompt" + + # print current path, git branch/status, command duration + if _pure_is_single_line_prompt + echo -e -n (_pure_prompt_first_line) + else + echo -e (_pure_prompt_first_line) + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt.fish b/Configs/fish/.config/fish/functions/_pure_prompt.fish new file mode 100644 index 0000000..423768f --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt.fish @@ -0,0 +1,31 @@ +function _pure_prompt \ + --description 'Print prompt symbol' \ + --argument-names exit_code + + set --local jobs (_pure_prompt_jobs) + set --local nixdevshell (_pure_prompt_nixdevshell) # Nix build environment indicator + set --local virtualenv (_pure_prompt_virtualenv) # Python virtualenv name + set --local aws_profile (_pure_prompt_aws_profile) # AWS profile name + set --local vimode_indicator (_pure_prompt_vimode) # vi-mode indicator + set --local pure_symbol (_pure_prompt_symbol $exit_code) + set --local system_time (_pure_prompt_system_time) + set --local root_prefix (_pure_prefix_root_prompt) + set --local space + + if _pure_is_single_line_prompt + set space ' ' + end + + echo (\ + _pure_print_prompt \ + $space \ + $system_time \ + $root_prefix \ + $jobs \ + $nixdevshell \ + $virtualenv \ + $aws_profile \ + $vimode_indicator \ + $pure_symbol \ + ) +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_aws_profile.fish b/Configs/fish/.config/fish/functions/_pure_prompt_aws_profile.fish new file mode 100644 index 0000000..d4d0d2f --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_aws_profile.fish @@ -0,0 +1,19 @@ +function _pure_prompt_aws_profile --description "Display AWS profile name" + + if set --query pure_enable_aws_profile; + and test "$pure_enable_aws_profile" = true + + set --local aws_profile '' + set --local aws_profile_color (_pure_set_color $pure_color_aws_profile) + + if test -n "$AWS_VAULT" + set aws_profile "$AWS_VAULT" + else if test -n "$AWS_PROFILE" -o "$AWS_PROFILE" != default + set aws_profile "$AWS_PROFILE" + end + + if test -n $aws_profile + echo "$pure_symbol_aws_profile_prefix$aws_profile_color$aws_profile" + end + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_beginning.fish b/Configs/fish/.config/fish/functions/_pure_prompt_beginning.fish new file mode 100644 index 0000000..8b093db --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_beginning.fish @@ -0,0 +1,7 @@ +function _pure_prompt_beginning \ + --description 'Clear existing line content' + + set --local clear_line "\r\033[K" + + echo $clear_line +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_command_duration.fish b/Configs/fish/.config/fish/functions/_pure_prompt_command_duration.fish new file mode 100644 index 0000000..0a2e231 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_command_duration.fish @@ -0,0 +1,11 @@ +function _pure_prompt_command_duration + set --local command_duration + + # Get command execution duration + if test -n "$CMD_DURATION" + set command_duration (_pure_format_time $CMD_DURATION $pure_threshold_command_duration $pure_show_subsecond_command_duration) + end + set --local command_duration_color (_pure_set_color $pure_color_command_duration) + + echo "$command_duration_color$command_duration" +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_container.fish b/Configs/fish/.config/fish/functions/_pure_prompt_container.fish new file mode 100644 index 0000000..97a6056 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_container.fish @@ -0,0 +1,5 @@ +function _pure_prompt_container + if _pure_is_inside_container + echo "$pure_symbol_container_prefix"(_pure_user_at_host) + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_current_folder.fish b/Configs/fish/.config/fish/functions/_pure_prompt_current_folder.fish new file mode 100644 index 0000000..462d9b1 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_current_folder.fish @@ -0,0 +1,11 @@ +set FAILURE 1 + +function _pure_prompt_current_folder --argument-names current_prompt_width + + if test -z "$current_prompt_width"; return $FAILURE; end + + set --local current_folder (_pure_parse_directory (math $COLUMNS - $current_prompt_width - 1)) + set --local current_folder_color (_pure_set_color $pure_color_current_directory) + + echo "$current_folder_color$current_folder" +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_ending.fish b/Configs/fish/.config/fish/functions/_pure_prompt_ending.fish new file mode 100644 index 0000000..ba92511 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_ending.fish @@ -0,0 +1,3 @@ +function _pure_prompt_ending + echo (set_color normal)" " +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_first_line.fish b/Configs/fish/.config/fish/functions/_pure_prompt_first_line.fish new file mode 100644 index 0000000..2361872 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_first_line.fish @@ -0,0 +1,41 @@ +set --global FAILURE 1 + +function _pure_prompt_first_line \ + --description 'Print contextual information before prompt.' + + set --local prompt_ssh (_pure_prompt_ssh) + set --local prompt_container (_pure_prompt_container) + set --local prompt_k8s (_pure_prompt_k8s) + set --local prompt_git (_pure_prompt_git) + set --local prompt_command_duration (_pure_prompt_command_duration) + set --local prompt (_pure_print_prompt \ + $prompt_ssh \ + $prompt_container \ + $prompt_k8s \ + $prompt_git \ + $prompt_command_duration + ) + set --local prompt_width (_pure_string_width $prompt) + set --local current_folder (_pure_prompt_current_folder $prompt_width) + + set --local prompt_components + if set --query pure_begin_prompt_with_current_directory; and test "$pure_begin_prompt_with_current_directory" = true + set prompt_components \ + $current_folder \ + $prompt_git \ + $prompt_ssh \ + $prompt_container \ + $prompt_k8s \ + $prompt_command_duration + else + set prompt_components \ + $prompt_ssh \ + $prompt_container \ + $prompt_k8s \ + $current_folder \ + $prompt_git \ + $prompt_command_duration + end + + echo (_pure_print_prompt $prompt_components) +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git.fish b/Configs/fish/.config/fish/functions/_pure_prompt_git.fish new file mode 100644 index 0000000..6e3377d --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_git.fish @@ -0,0 +1,26 @@ +function _pure_prompt_git \ + --description 'Print git repository informations: branch name, dirty, upstream ahead/behind' + + set ABORT_FEATURE 2 + + if set --query pure_enable_git; and test "$pure_enable_git" != true + return + end + + if not type -q --no-functions git # skip git-related features when `git` is not available + return $ABORT_FEATURE + end + + set --local is_git_repository (command git rev-parse --is-inside-work-tree 2>/dev/null) + + if test -n "$is_git_repository" + set --local git_prompt (_pure_prompt_git_branch)(_pure_prompt_git_dirty)(_pure_prompt_git_stash) + set --local git_pending_commits (_pure_prompt_git_pending_commits) + + if test (_pure_string_width $git_pending_commits) -ne 0 + set --append git_prompt $git_pending_commits + end + + echo $git_prompt + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git_branch.fish b/Configs/fish/.config/fish/functions/_pure_prompt_git_branch.fish new file mode 100644 index 0000000..777cd0e --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_git_branch.fish @@ -0,0 +1,6 @@ +function _pure_prompt_git_branch + set --local git_branch (_pure_parse_git_branch) # current git branch + set --local git_branch_color (_pure_set_color $pure_color_git_branch) + + echo "$git_branch_color$git_branch" +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git_dirty.fish b/Configs/fish/.config/fish/functions/_pure_prompt_git_dirty.fish new file mode 100644 index 0000000..0c92836 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_git_dirty.fish @@ -0,0 +1,27 @@ +function _pure_prompt_git_dirty + set --local git_dirty_symbol + set --local git_dirty_color + + set --local is_git_dirty ( + # HEAD may not exist (e.g. immediately after git init); diff-index is + # fast for staged checks but requires a ref. + # + # The diff-index (or diff --staged) checks for staged changes; the diff + # checks for unstaged changes; the ls-files checks for untracked files. + # We put them in this order because checking staged changes is *fast*. + if command git rev-list --max-count=1 HEAD -- >/dev/null 2>&1; + not command git diff-index --ignore-submodules --cached --quiet HEAD -- >/dev/null 2>&1; + else; + not command git diff --staged --ignore-submodules --no-ext-diff --quiet --exit-code >/dev/null 2>&1; + end + or not command git diff --ignore-submodules --no-ext-diff --quiet --exit-code >/dev/null 2>&1 + or command git ls-files --others --exclude-standard --directory --no-empty-directory --error-unmatch -- ':/*' >/dev/null 2>&1 + and echo "true" + ) + if test -n "$is_git_dirty" # untracked or un-commited files + set git_dirty_symbol "$pure_symbol_git_dirty" + set git_dirty_color (_pure_set_color $pure_color_git_dirty) + end + + echo "$git_dirty_color$git_dirty_symbol" +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish b/Configs/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish new file mode 100644 index 0000000..6ae7c59 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish @@ -0,0 +1,27 @@ +function _pure_prompt_git_pending_commits + set --local git_unpushed_commits + set --local git_unpulled_commits + + set --local has_upstream (command git rev-parse --abbrev-ref '@{upstream}' 2>/dev/null) + if test -n "$has_upstream" # check there is an upstream repo configured + and test "$has_upstream" != '@{upstream}' # Fixed #179, dont check the empty repo + command git rev-list --left-right --count 'HEAD...@{upstream}' \ + | read --local --array git_status + set --local commit_to_push $git_status[1] + set --local commit_to_pull $git_status[2] + + if test "$commit_to_push" -gt 0 # upstream is behind local repo + set --local git_unpushed_commits_color \ + (_pure_set_color $pure_color_git_unpushed_commits) + set git_unpushed_commits "$git_unpushed_commits_color$pure_symbol_git_unpushed_commits" + end + + if test "$commit_to_pull" -gt 0 # upstream is ahead of local repo + set --local git_unpulled_commits_color \ + (_pure_set_color $pure_color_git_unpulled_commits) + set git_unpulled_commits "$git_unpulled_commits_color$pure_symbol_git_unpulled_commits" + end + end + + echo "$git_unpushed_commits$git_unpulled_commits" +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git_stash.fish b/Configs/fish/.config/fish/functions/_pure_prompt_git_stash.fish new file mode 100644 index 0000000..531ceb4 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_git_stash.fish @@ -0,0 +1,15 @@ +function _pure_prompt_git_stash + set --local git_stash_symbol + set --local git_stash_color + + set --local has_stashed_files ( + command git rev-list --walk-reflogs --count refs/stash >/dev/null 2>&1 + and echo "true" + ) + if test -n "$has_stashed_files" # untracked or un-commited files + set git_stash_symbol " $pure_symbol_git_stash" + set git_stash_color (_pure_set_color $pure_color_git_stash) + end + + echo "$git_stash_color$git_stash_symbol" +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_jobs.fish b/Configs/fish/.config/fish/functions/_pure_prompt_jobs.fish new file mode 100644 index 0000000..3a5181d --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_jobs.fish @@ -0,0 +1,9 @@ +function _pure_prompt_jobs --description "Display number of running jobs" + if set --query pure_show_jobs; and test "$pure_show_jobs" = true + set --local njobs (count (jobs -p)) + set --local jobs_color (_pure_set_color $pure_color_jobs) + if test "$njobs" -gt 0 + echo "$jobs_color"[$njobs] + end + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_k8s.fish b/Configs/fish/.config/fish/functions/_pure_prompt_k8s.fish new file mode 100644 index 0000000..a283058 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_k8s.fish @@ -0,0 +1,16 @@ +function _pure_prompt_k8s + if set --query pure_enable_k8s; + and test "$pure_enable_k8s" = true; + and _pure_check_availability pure_enable_k8s kubectl + and test -n (_pure_k8s_context) # todo: use $(cmd) syntax when Fish 3.3.1 is dropped + + set --local context (_pure_set_color $pure_color_k8s_context)(_pure_k8s_context) + + if test -n "$context" + set --local symbol (_pure_set_color $pure_color_k8s_prefix)$pure_symbol_k8s_prefix + set --local namespace (_pure_set_color $pure_color_k8s_namespace)(_pure_k8s_namespace) + + echo "$symbol $context/$namespace" + end + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_new_line.fish b/Configs/fish/.config/fish/functions/_pure_prompt_new_line.fish new file mode 100644 index 0000000..7cfb4e4 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_new_line.fish @@ -0,0 +1,11 @@ +function _pure_prompt_new_line \ + --description "Do not add a line break to a brand new session" \ + --on-event fish_prompt + + set --local new_line '' + if not _pure_is_single_line_prompt; and test "$_pure_fresh_session" = false + set new_line "\n" + end + + echo -e -n (_pure_prompt_beginning)"$new_line" +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_nixdevshell.fish b/Configs/fish/.config/fish/functions/_pure_prompt_nixdevshell.fish new file mode 100644 index 0000000..7f9c4bb --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_nixdevshell.fish @@ -0,0 +1,13 @@ +function _pure_prompt_nixdevshell \ + --description "Indicate if nix develop shell is activated" + + if set --query pure_enable_nixdevshell; + and test "$pure_enable_nixdevshell" = true; + and test -n "$IN_NIX_SHELL" + + set --local prefix (_pure_set_color $pure_color_nixdevshell_prefix)$pure_symbol_nixdevshell_prefix + set --local symbol (_pure_set_color $pure_color_nixdevshell_status)$IN_NIX_SHELL + + echo "$prefix$symbol" + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_ssh.fish b/Configs/fish/.config/fish/functions/_pure_prompt_ssh.fish new file mode 100644 index 0000000..ab721df --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_ssh.fish @@ -0,0 +1,5 @@ +function _pure_prompt_ssh + if test "$SSH_CONNECTION" != "" + echo "$pure_symbol_ssh_prefix"(_pure_user_at_host) + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_symbol.fish b/Configs/fish/.config/fish/functions/_pure_prompt_symbol.fish new file mode 100644 index 0000000..120dd7d --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_symbol.fish @@ -0,0 +1,20 @@ +function _pure_prompt_symbol \ + --description 'Print prompt symbol' \ + --argument-names exit_code + + set --local prompt_symbol (_pure_get_prompt_symbol) + set --local symbol_color_success (_pure_set_color $pure_color_prompt_on_success) + set --local symbol_color_error (_pure_set_color $pure_color_prompt_on_error) + set --local command_succeed 0 + + set --local symbol_color $symbol_color_success # default pure symbol color + if set --query exit_code; and test "$exit_code" -ne $command_succeed + set symbol_color $symbol_color_error # different pure symbol color when previous command failed + + if set --query pure_separate_prompt_on_error; and test "$pure_separate_prompt_on_error" = true + set symbol_color "$symbol_color_error$prompt_symbol$symbol_color_success" + end + end + + echo "$symbol_color$prompt_symbol" +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_system_time.fish b/Configs/fish/.config/fish/functions/_pure_prompt_system_time.fish new file mode 100644 index 0000000..49f134f --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_system_time.fish @@ -0,0 +1,6 @@ +function _pure_prompt_system_time --description "Display system time" + if set --query pure_show_system_time; and test "$pure_show_system_time" = true + set --local time_color (_pure_set_color $pure_color_system_time) + echo "$time_color"(date '+%T') + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_vimode.fish b/Configs/fish/.config/fish/functions/_pure_prompt_vimode.fish new file mode 100644 index 0000000..d95d806 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_vimode.fish @@ -0,0 +1,6 @@ +function _pure_prompt_vimode + if set --query pure_reverse_prompt_symbol_in_vimode; + and test "$pure_reverse_prompt_symbol_in_vimode" = false + echo (fish_default_mode_prompt) + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_virtualenv.fish b/Configs/fish/.config/fish/functions/_pure_prompt_virtualenv.fish new file mode 100644 index 0000000..7b0f3aa --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_prompt_virtualenv.fish @@ -0,0 +1,18 @@ +function _pure_prompt_virtualenv --description "Display virtualenv directory" + + if set --query pure_enable_virtualenv; + and test "$pure_enable_virtualenv" = true + + set --local virtualenv '' + set --local virtualenv_color (_pure_set_color $pure_color_virtualenv) + if test -n "$VIRTUAL_ENV" + set virtualenv (basename "$VIRTUAL_ENV") + else if test -n "$CONDA_DEFAULT_ENV" + set virtualenv (basename "$CONDA_DEFAULT_ENV") + end + + if test -n $virtualenv + echo "$pure_symbol_virtualenv_prefix$virtualenv_color$virtualenv" + end + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_set_color.fish b/Configs/fish/.config/fish/functions/_pure_set_color.fish new file mode 100644 index 0000000..c05769a --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_set_color.fish @@ -0,0 +1,19 @@ +function _pure_set_color \ + --description 'Set color' \ + --argument-names var + + set --local color $var + # Backwards compatibility for colors defined as control sequencies instead of fish colors + if not string match --quiet --all --regex '\e\[[^m]*m' $color[1] + and set -q $color + set color $$var + end + + set --local result $color + if not string match --quiet --all --regex '\e\[[^m]*m' $result[1] + and not test -z $result[1] + set result (set_color $color) + end + + echo "$result" +end diff --git a/Configs/fish/.config/fish/functions/_pure_set_default.fish b/Configs/fish/.config/fish/functions/_pure_set_default.fish new file mode 100644 index 0000000..d5c86a8 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_set_default.fish @@ -0,0 +1,11 @@ +function _pure_set_default \ + --description 'Set default value for configuration variable' \ + --argument-names var default + + set is_available_universally (not set --query --universal $var; or test -z $$var; echo $status) + set is_available_globally (not set --query --global $var; or test -z $$var; echo $status) + + if test "$is_available_universally" -eq 0 -a $is_available_globally -eq 0 + set --universal $var "$default" + end +end diff --git a/Configs/fish/.config/fish/functions/_pure_string_width.fish b/Configs/fish/.config/fish/functions/_pure_string_width.fish new file mode 100644 index 0000000..0c1957b --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_string_width.fish @@ -0,0 +1,9 @@ +function _pure_string_width \ + --description 'returns raw string length, i.e. ignore ANSI-color' \ + --argument-names prompt + + set --local empty '' + set --local raw_prompt (string replace --all --regex '\e\[[^m]*m' $empty -- $prompt) + + string length -- $raw_prompt +end diff --git a/Configs/fish/.config/fish/functions/_pure_user_at_host.fish b/Configs/fish/.config/fish/functions/_pure_user_at_host.fish new file mode 100644 index 0000000..e41cc67 --- /dev/null +++ b/Configs/fish/.config/fish/functions/_pure_user_at_host.fish @@ -0,0 +1,13 @@ +function _pure_user_at_host + set --local username (id -u -n) # current user name + set --local at_sign "@" + set --local at_sign_color (_pure_set_color $pure_color_at_sign) + set --local hostname_color (_pure_set_color $pure_color_hostname) + + set --local username_color (_pure_set_color $pure_color_username_normal) # default color + if test "$username" = root + set username_color (_pure_set_color $pure_color_username_root) # different color for root + end + + echo "$username_color$username$at_sign_color$at_sign$hostname_color$hostname" +end diff --git a/Configs/fish/.config/fish/functions/fish_greeting.fish b/Configs/fish/.config/fish/functions/fish_greeting.fish new file mode 100644 index 0000000..878b30e --- /dev/null +++ b/Configs/fish/.config/fish/functions/fish_greeting.fish @@ -0,0 +1,3 @@ +function fish_greeting + _pure_check_for_new_release +end diff --git a/Configs/fish/.config/fish/functions/fish_mode_prompt.fish b/Configs/fish/.config/fish/functions/fish_mode_prompt.fish new file mode 100644 index 0000000..428a658 --- /dev/null +++ b/Configs/fish/.config/fish/functions/fish_mode_prompt.fish @@ -0,0 +1,2 @@ +function fish_mode_prompt +end diff --git a/Configs/fish/.config/fish/functions/fish_prompt.fish b/Configs/fish/.config/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..0b21436 --- /dev/null +++ b/Configs/fish/.config/fish/functions/fish_prompt.fish @@ -0,0 +1,11 @@ +# a called to `_pure_prompt_new_line` is triggered by an event +function fish_prompt + set --local exit_code $status # save previous exit code + + _pure_print_prompt_rows # manage default vs. compact prompt + _pure_place_iterm2_prompt_mark # place iTerm shell integration mark + echo -e -n (_pure_prompt $exit_code) # print prompt + echo -e (_pure_prompt_ending) # reset colors and end prompt + + set _pure_fresh_session false +end diff --git a/Configs/fish/.config/fish/functions/fish_title.fish b/Configs/fish/.config/fish/functions/fish_title.fish new file mode 100644 index 0000000..859f630 --- /dev/null +++ b/Configs/fish/.config/fish/functions/fish_title.fish @@ -0,0 +1,15 @@ +function fish_title \ + --description "Set title to current folder and shell name" \ + --argument-names last_command + + set --local current_folder (fish_prompt_pwd_dir_length=$pure_shorten_window_title_current_directory_length prompt_pwd) + set --local current_command (status current-command 2>/dev/null; or echo $_)[1] # we use index to ignore extraneous item, see #360 + + set --local prompt "$current_folder: $last_command $pure_symbol_title_bar_separator $current_command" + + if test -z "$last_command" + set prompt "$current_folder $pure_symbol_title_bar_separator $current_command" + end + + echo $prompt +end diff --git a/Configs/fish/.config/fish/functions/fisher.fish b/Configs/fish/.config/fish/functions/fisher.fish new file mode 100644 index 0000000..e915cb8 --- /dev/null +++ b/Configs/fish/.config/fish/functions/fisher.fish @@ -0,0 +1,240 @@ +function fisher --argument-names cmd --description "A plugin manager for Fish" + set --query fisher_path || set --local fisher_path $__fish_config_dir + set --local fisher_version 4.4.5 + set --local fish_plugins $__fish_config_dir/fish_plugins + + switch "$cmd" + case -v --version + echo "fisher, version $fisher_version" + case "" -h --help + echo "Usage: fisher install Install plugins" + echo " fisher remove Remove installed plugins" + echo " fisher update Update installed plugins" + echo " fisher update Update all installed plugins" + echo " fisher list [] List installed plugins matching regex" + echo "Options:" + echo " -v, --version Print version" + echo " -h, --help Print this help message" + echo "Variables:" + echo " \$fisher_path Plugin installation path. Default: $__fish_config_dir" | string replace --regex -- $HOME \~ + case ls list + string match --entire --regex -- "$argv[2]" $_fisher_plugins + case install update remove + isatty || read --local --null --array stdin && set --append argv $stdin + + set --local install_plugins + set --local update_plugins + set --local remove_plugins + set --local arg_plugins $argv[2..-1] + set --local old_plugins $_fisher_plugins + set --local new_plugins + + test -e $fish_plugins && set --local file_plugins (string match --regex -- '^[^\s]+$' <$fish_plugins | string replace -- \~ ~) + + if ! set --query argv[2] + if test "$cmd" != update + echo "fisher: Not enough arguments for command: \"$cmd\"" >&2 && return 1 + else if ! set --query file_plugins + echo "fisher: \"$fish_plugins\" file not found: \"$cmd\"" >&2 && return 1 + end + set arg_plugins $file_plugins + end + + for plugin in $arg_plugins + set plugin (test -e "$plugin" && realpath $plugin || string lower -- $plugin) + contains -- "$plugin" $new_plugins || set --append new_plugins $plugin + end + + if set --query argv[2] + for plugin in $new_plugins + if contains -- "$plugin" $old_plugins + test "$cmd" = remove && + set --append remove_plugins $plugin || + set --append update_plugins $plugin + else if test "$cmd" = install + set --append install_plugins $plugin + else + echo "fisher: Plugin not installed: \"$plugin\"" >&2 && return 1 + end + end + else + for plugin in $new_plugins + contains -- "$plugin" $old_plugins && + set --append update_plugins $plugin || + set --append install_plugins $plugin + end + + for plugin in $old_plugins + contains -- "$plugin" $new_plugins || set --append remove_plugins $plugin + end + end + + set --local pid_list + set --local source_plugins + set --local fetch_plugins $update_plugins $install_plugins + set --local fish_path (status fish-path) + + echo (set_color --bold)fisher $cmd version $fisher_version(set_color normal) + + for plugin in $fetch_plugins + set --local source (command mktemp -d) + set --append source_plugins $source + + command mkdir -p $source/{completions,conf.d,themes,functions} + + $fish_path --command " + if test -e $plugin + command cp -Rf $plugin/* $source + else + set temp (command mktemp -d) + set repo (string split -- \@ $plugin) || set repo[2] HEAD + + if set path (string replace --regex -- '^(https://)?gitlab.com/' '' \$repo[1]) + set name (string split -- / \$path)[-1] + set url https://gitlab.com/\$path/-/archive/\$repo[2]/\$name-\$repo[2].tar.gz + else + set url https://api.github.com/repos/\$repo[1]/tarball/\$repo[2] + end + + echo Fetching (set_color --underline)\$url(set_color normal) + + if command curl -q --silent -L \$url | command tar -xzC \$temp -f - 2>/dev/null + command cp -Rf \$temp/*/* $source + else + echo fisher: Invalid plugin name or host unavailable: \\\"$plugin\\\" >&2 + command rm -rf $source + end + + command rm -rf \$temp + end + + set files $source/* && string match --quiet --regex -- .+\.fish\\\$ \$files + " & + + set --append pid_list (jobs --last --pid) + end + + wait $pid_list 2>/dev/null + + for plugin in $fetch_plugins + if set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] && test ! -e $source + if set --local index (contains --index -- "$plugin" $install_plugins) + set --erase install_plugins[$index] + else + set --erase update_plugins[(contains --index -- "$plugin" $update_plugins)] + end + end + end + + for plugin in $update_plugins $remove_plugins + if set --local index (contains --index -- "$plugin" $_fisher_plugins) + set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files + + if contains -- "$plugin" $remove_plugins + for name in (string replace --filter --regex -- '.+/conf\.d/([^/]+)\.fish$' '$1' $$plugin_files_var) + emit {$name}_uninstall + end + printf "%s\n" Removing\ (set_color red --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~ + set --erase _fisher_plugins[$index] + end + + command rm -rf (string replace -- \~ ~ $$plugin_files_var) + + functions --erase (string replace --filter --regex -- '.+/functions/([^/]+)\.fish$' '$1' $$plugin_files_var) + + for name in (string replace --filter --regex -- '.+/completions/([^/]+)\.fish$' '$1' $$plugin_files_var) + complete --erase --command $name + end + + set --erase $plugin_files_var + end + end + + if set --query update_plugins[1] || set --query install_plugins[1] + command mkdir -p $fisher_path/{functions,themes,conf.d,completions} + end + + for plugin in $update_plugins $install_plugins + set --local source $source_plugins[(contains --index -- "$plugin" $fetch_plugins)] + set --local files $source/{functions,themes,conf.d,completions}/* + + if set --local index (contains --index -- $plugin $install_plugins) + set --local user_files $fisher_path/{functions,themes,conf.d,completions}/* + set --local conflict_files + + for file in (string replace -- $source/ $fisher_path/ $files) + contains -- $file $user_files && set --append conflict_files $file + end + + if set --query conflict_files[1] && set --erase install_plugins[$index] + echo -s "fisher: Cannot install \"$plugin\": please remove or move conflicting files first:" \n" "$conflict_files >&2 + continue + end + end + + for file in (string replace -- $source/ "" $files) + command cp -RLf $source/$file $fisher_path/$file + end + + set --local plugin_files_var _fisher_(string escape --style=var -- $plugin)_files + + set --query files[1] && set --universal $plugin_files_var (string replace -- $source $fisher_path $files | string replace -- ~ \~) + + contains -- $plugin $_fisher_plugins || set --universal --append _fisher_plugins $plugin + contains -- $plugin $install_plugins && set --local event install || set --local event update + + printf "%s\n" Installing\ (set_color --bold)$plugin(set_color normal) " "$$plugin_files_var | string replace -- \~ ~ + + for file in (string match --regex -- '.+/[^/]+\.fish$' $$plugin_files_var | string replace -- \~ ~) + source $file + if set --local name (string replace --regex -- '.+conf\.d/([^/]+)\.fish$' '$1' $file) + emit {$name}_$event + end + end + end + + command rm -rf $source_plugins + + if set --query _fisher_plugins[1] + set --local commit_plugins + + for plugin in $file_plugins + contains -- (string lower -- $plugin) (string lower -- $_fisher_plugins) && set --append commit_plugins $plugin + end + + for plugin in $_fisher_plugins + contains -- (string lower -- $plugin) (string lower -- $commit_plugins) || set --append commit_plugins $plugin + end + + string replace --regex -- $HOME \~ $commit_plugins >$fish_plugins + else + set --erase _fisher_plugins + command rm -f $fish_plugins + end + + set --local total (count $install_plugins) (count $update_plugins) (count $remove_plugins) + + test "$total" != "0 0 0" && echo (string join ", " ( + test $total[1] = 0 || echo "Installed $total[1]") ( + test $total[2] = 0 || echo "Updated $total[2]") ( + test $total[3] = 0 || echo "Removed $total[3]") + ) plugin/s + case \* + echo "fisher: Unknown command: \"$cmd\"" >&2 && return 1 + end +end + +if ! set --query _fisher_upgraded_to_4_4 + set --universal _fisher_upgraded_to_4_4 + if functions --query _fisher_list + set --query XDG_DATA_HOME[1] || set --local XDG_DATA_HOME ~/.local/share + command rm -rf $XDG_DATA_HOME/fisher + functions --erase _fisher_{list,plugin_parse} + fisher update >/dev/null 2>/dev/null + else + for var in (set --names | string match --entire --regex '^_fisher_.+_files$') + set $var (string replace -- ~ \~ $$var) + end + functions --erase _fisher_fish_postexec + end +end diff --git a/Configs/fish/.config/fish/functions/la.fish b/Configs/fish/.config/fish/functions/la.fish new file mode 100644 index 0000000..dfabd9a --- /dev/null +++ b/Configs/fish/.config/fish/functions/la.fish @@ -0,0 +1,4 @@ +function la --wraps='eza -lah --color=always --icons --git' --description 'alias la=eza -lah --color=always --icons --git' + eza -lah --color=always --icons --git $argv + +end diff --git a/Configs/fish/.config/fish/functions/ld.fish b/Configs/fish/.config/fish/functions/ld.fish new file mode 100644 index 0000000..8c3cf0e --- /dev/null +++ b/Configs/fish/.config/fish/functions/ld.fish @@ -0,0 +1,4 @@ +function ld --wraps='eza -la --no-permissions --no-filesize --no-time --no-time --no-user' --description 'alias ld=eza -la --no-permissions --no-filesize --no-time --no-time --no-user' + eza -la --no-permissions --no-filesize --no-time --no-time --no-user $argv + +end diff --git a/Configs/fish/.config/fish/functions/ls.fish b/Configs/fish/.config/fish/functions/ls.fish new file mode 100644 index 0000000..75680bf --- /dev/null +++ b/Configs/fish/.config/fish/functions/ls.fish @@ -0,0 +1,4 @@ +function ls --wraps='eza -lh --color=always --icons --git' --description 'alias ls=eza -lh --color=always --icons --git' + eza -lh --color=always --icons --git $argv + +end diff --git a/Configs/fish/.config/fish/themes/Catppuccin Frappe.theme b/Configs/fish/.config/fish/themes/Catppuccin Frappe.theme new file mode 100644 index 0000000..b4c1994 --- /dev/null +++ b/Configs/fish/.config/fish/themes/Catppuccin Frappe.theme @@ -0,0 +1,30 @@ +# name: 'Catppuccin Frappé' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: 303446 + +fish_color_normal c6d0f5 +fish_color_command 8caaee +fish_color_param eebebe +fish_color_keyword e78284 +fish_color_quote a6d189 +fish_color_redirection f4b8e4 +fish_color_end ef9f76 +fish_color_comment 838ba7 +fish_color_error e78284 +fish_color_gray 737994 +fish_color_selection --background=414559 +fish_color_search_match --background=414559 +fish_color_option a6d189 +fish_color_operator f4b8e4 +fish_color_escape ea999c +fish_color_autosuggestion 737994 +fish_color_cancel e78284 +fish_color_cwd e5c890 +fish_color_user 81c8be +fish_color_host 8caaee +fish_color_host_remote a6d189 +fish_color_status e78284 +fish_pager_color_progress 737994 +fish_pager_color_prefix f4b8e4 +fish_pager_color_completion c6d0f5 +fish_pager_color_description 737994 \ No newline at end of file diff --git a/Configs/fish/.config/fish/themes/Catppuccin Latte.theme b/Configs/fish/.config/fish/themes/Catppuccin Latte.theme new file mode 100644 index 0000000..002dace --- /dev/null +++ b/Configs/fish/.config/fish/themes/Catppuccin Latte.theme @@ -0,0 +1,30 @@ +# name: 'Catppuccin Latte' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: eff1f5 + +fish_color_normal 4c4f69 +fish_color_command 1e66f5 +fish_color_param dd7878 +fish_color_keyword d20f39 +fish_color_quote 40a02b +fish_color_redirection ea76cb +fish_color_end fe640b +fish_color_comment 8c8fa1 +fish_color_error d20f39 +fish_color_gray 9ca0b0 +fish_color_selection --background=ccd0da +fish_color_search_match --background=ccd0da +fish_color_option 40a02b +fish_color_operator ea76cb +fish_color_escape e64553 +fish_color_autosuggestion 9ca0b0 +fish_color_cancel d20f39 +fish_color_cwd df8e1d +fish_color_user 179299 +fish_color_host 1e66f5 +fish_color_host_remote 40a02b +fish_color_status d20f39 +fish_pager_color_progress 9ca0b0 +fish_pager_color_prefix ea76cb +fish_pager_color_completion 4c4f69 +fish_pager_color_description 9ca0b0 \ No newline at end of file diff --git a/Configs/fish/.config/fish/themes/Catppuccin Macchiato.theme b/Configs/fish/.config/fish/themes/Catppuccin Macchiato.theme new file mode 100644 index 0000000..c8be912 --- /dev/null +++ b/Configs/fish/.config/fish/themes/Catppuccin Macchiato.theme @@ -0,0 +1,30 @@ +# name: 'Catppuccin Macchiato' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: 24273a + +fish_color_normal cad3f5 +fish_color_command 8aadf4 +fish_color_param f0c6c6 +fish_color_keyword ed8796 +fish_color_quote a6da95 +fish_color_redirection f5bde6 +fish_color_end f5a97f +fish_color_comment 8087a2 +fish_color_error ed8796 +fish_color_gray 6e738d +fish_color_selection --background=363a4f +fish_color_search_match --background=363a4f +fish_color_option a6da95 +fish_color_operator f5bde6 +fish_color_escape ee99a0 +fish_color_autosuggestion 6e738d +fish_color_cancel ed8796 +fish_color_cwd eed49f +fish_color_user 8bd5ca +fish_color_host 8aadf4 +fish_color_host_remote a6da95 +fish_color_status ed8796 +fish_pager_color_progress 6e738d +fish_pager_color_prefix f5bde6 +fish_pager_color_completion cad3f5 +fish_pager_color_description 6e738d \ No newline at end of file diff --git a/Configs/fish/.config/fish/themes/Catppuccin Mocha.theme b/Configs/fish/.config/fish/themes/Catppuccin Mocha.theme new file mode 100644 index 0000000..892a000 --- /dev/null +++ b/Configs/fish/.config/fish/themes/Catppuccin Mocha.theme @@ -0,0 +1,30 @@ +# name: 'Catppuccin Mocha' +# url: 'https://github.com/catppuccin/fish' +# preferred_background: 1e1e2e + +fish_color_normal cdd6f4 +fish_color_command 89b4fa +fish_color_param f2cdcd +fish_color_keyword f38ba8 +fish_color_quote a6e3a1 +fish_color_redirection f5c2e7 +fish_color_end fab387 +fish_color_comment 7f849c +fish_color_error f38ba8 +fish_color_gray 6c7086 +fish_color_selection --background=313244 +fish_color_search_match --background=313244 +fish_color_option a6e3a1 +fish_color_operator f5c2e7 +fish_color_escape eba0ac +fish_color_autosuggestion 6c7086 +fish_color_cancel f38ba8 +fish_color_cwd f9e2af +fish_color_user 94e2d5 +fish_color_host 89b4fa +fish_color_host_remote a6e3a1 +fish_color_status f38ba8 +fish_pager_color_progress 6c7086 +fish_pager_color_prefix f5c2e7 +fish_pager_color_completion cdd6f4 +fish_pager_color_description 6c7086 \ No newline at end of file diff --git a/Configs/zsh/.zshrc b/Configs/zsh/.zshrc index ed402e2..99c0248 100644 --- a/Configs/zsh/.zshrc +++ b/Configs/zsh/.zshrc @@ -79,4 +79,10 @@ zinit cdreplay -q # │ Init external programs │ # ╰──────────────────────────────────────────────────────────╯ -eval "$(zoxide init --cmd cd zsh)" +# eval "$(zoxide init --cmd cd zsh)" + +# Drop into fish +if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && ${SHLVL} == 1 ]]; then + # shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION='' + exec fish $LOGIN_OPTION +fi From cbe791ead3d03dd0f0562b371e13e4ad2642cbba Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 13 Jun 2025 16:32:37 -0400 Subject: [PATCH 100/152] set bash as default shell --- Configs/bash/.bashrc | 8 +++++ Configs/bash/.profile | 36 +++++++++++++++++++ .../fish/.config/fish/functions/aliases.fish | 0 Configs/fish/.config/fish/functions/la.fish | 4 --- Configs/fish/.config/fish/functions/ld.fish | 4 --- Configs/fish/.config/fish/functions/ls.fish | 4 --- Configs/zsh/.zshrc | 8 +---- 7 files changed, 45 insertions(+), 19 deletions(-) create mode 100644 Configs/bash/.bashrc create mode 100644 Configs/bash/.profile create mode 100644 Configs/fish/.config/fish/functions/aliases.fish delete mode 100644 Configs/fish/.config/fish/functions/la.fish delete mode 100644 Configs/fish/.config/fish/functions/ld.fish delete mode 100644 Configs/fish/.config/fish/functions/ls.fish diff --git a/Configs/bash/.bashrc b/Configs/bash/.bashrc new file mode 100644 index 0000000..7e989a3 --- /dev/null +++ b/Configs/bash/.bashrc @@ -0,0 +1,8 @@ +# ╭──────────────────────────────────────────────────────────╮ +# │ Auto drop into fish only on login │ +# ╰──────────────────────────────────────────────────────────╯ + +if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && ${SHLVL} == 1 ]]; then + shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION='' + exec fish $LOGIN_OPTION +fi diff --git a/Configs/bash/.profile b/Configs/bash/.profile new file mode 100644 index 0000000..f020fdf --- /dev/null +++ b/Configs/bash/.profile @@ -0,0 +1,36 @@ +update_path() { + export PATH="$PATH:$1" +} + +# Set manually +export REPOS="$HOME/.local/share/chezmoi" +export DOTS="$REPOS/Private/dots" +export EDITOR=nvim +export VISUAL="$EDITOR" +export QT_STYLE_OVERRIDE=kvantum +export MOZ_ENABLE_WAYLAND=1 + +# Use rbw as SSH Agent +# use https://github.com/pmkap/rbw/ until https://github.com/doy/rbw/issues/197 is closed +export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/rbw/ssh-agent-socket" + +update_path "$DOTS/scripts" +update_path "$HOME/.local/bin" +update_path "$HOME/bin" +update_path "/usr/local/bin" + +# Dev Stuff +export NPM_PACKAGES="$HOME/.npm-packages" +export NODE_PATH="$NPM_PACKAGES/lib/node_modules${NODE_PATH:+:$NODE_PATH}" +update_path "$NPM_PACKAGES/bin" + +export PNPM_HOME="$HOME/.local/share/pnpm" +update_path "$PNPM_HOME" + +export BUN_INSTALL="$HOME/.bun" +update_path "$BUN_INSTALL/bin" + +source "$HOME/.rye/env" + +# . "$HOME/.cargo/env" +update_path "$HOME/.cargo/bin/" diff --git a/Configs/fish/.config/fish/functions/aliases.fish b/Configs/fish/.config/fish/functions/aliases.fish new file mode 100644 index 0000000..e69de29 diff --git a/Configs/fish/.config/fish/functions/la.fish b/Configs/fish/.config/fish/functions/la.fish deleted file mode 100644 index dfabd9a..0000000 --- a/Configs/fish/.config/fish/functions/la.fish +++ /dev/null @@ -1,4 +0,0 @@ -function la --wraps='eza -lah --color=always --icons --git' --description 'alias la=eza -lah --color=always --icons --git' - eza -lah --color=always --icons --git $argv - -end diff --git a/Configs/fish/.config/fish/functions/ld.fish b/Configs/fish/.config/fish/functions/ld.fish deleted file mode 100644 index 8c3cf0e..0000000 --- a/Configs/fish/.config/fish/functions/ld.fish +++ /dev/null @@ -1,4 +0,0 @@ -function ld --wraps='eza -la --no-permissions --no-filesize --no-time --no-time --no-user' --description 'alias ld=eza -la --no-permissions --no-filesize --no-time --no-time --no-user' - eza -la --no-permissions --no-filesize --no-time --no-time --no-user $argv - -end diff --git a/Configs/fish/.config/fish/functions/ls.fish b/Configs/fish/.config/fish/functions/ls.fish deleted file mode 100644 index 75680bf..0000000 --- a/Configs/fish/.config/fish/functions/ls.fish +++ /dev/null @@ -1,4 +0,0 @@ -function ls --wraps='eza -lh --color=always --icons --git' --description 'alias ls=eza -lh --color=always --icons --git' - eza -lh --color=always --icons --git $argv - -end diff --git a/Configs/zsh/.zshrc b/Configs/zsh/.zshrc index 99c0248..ed402e2 100644 --- a/Configs/zsh/.zshrc +++ b/Configs/zsh/.zshrc @@ -79,10 +79,4 @@ zinit cdreplay -q # │ Init external programs │ # ╰──────────────────────────────────────────────────────────╯ -# eval "$(zoxide init --cmd cd zsh)" - -# Drop into fish -if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && ${SHLVL} == 1 ]]; then - # shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION='' - exec fish $LOGIN_OPTION -fi +eval "$(zoxide init --cmd cd zsh)" From 5c9c12f32c34c44a74c11689d85c1e9de6ace3b3 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 19 Jun 2025 11:39:22 -0400 Subject: [PATCH 101/152] add atuin config --- Configs/atuin/.config/atuin/config.toml | 275 ++++++++++++ .../themes/catppuccin-macchiato-teal.toml | 12 + Configs/bash/{.profile => .bash_profile} | 6 + Configs/bash/.bashrc | 5 + .../fish/.config/fish/completions/atuin.fish | 423 ++++++++++++++++++ Configs/fish/.config/fish/config.fish | 1 + Configs/zsh/.zshrc | 4 + 7 files changed, 726 insertions(+) create mode 100644 Configs/atuin/.config/atuin/config.toml create mode 100644 Configs/atuin/.config/atuin/themes/catppuccin-macchiato-teal.toml rename Configs/bash/{.profile => .bash_profile} (92%) create mode 100644 Configs/fish/.config/fish/completions/atuin.fish diff --git a/Configs/atuin/.config/atuin/config.toml b/Configs/atuin/.config/atuin/config.toml new file mode 100644 index 0000000..4c7a808 --- /dev/null +++ b/Configs/atuin/.config/atuin/config.toml @@ -0,0 +1,275 @@ +## where to store your database, default is your system data directory +## linux/mac: ~/.local/share/atuin/history.db +## windows: %USERPROFILE%/.local/share/atuin/history.db +# db_path = "~/.history.db" + +## where to store your encryption key, default is your system data directory +## linux/mac: ~/.local/share/atuin/key +## windows: %USERPROFILE%/.local/share/atuin/key +# key_path = "~/.key" + +## where to store your auth session token, default is your system data directory +## linux/mac: ~/.local/share/atuin/session +## windows: %USERPROFILE%/.local/share/atuin/session +# session_path = "~/.session" + +## date format used, either "us" or "uk" +# dialect = "us" + +## default timezone to use when displaying time +## either "l", "local" to use the system's current local timezone, or an offset +## from UTC in the format of "<+|->H[H][:M[M][:S[S]]]" +## for example: "+9", "-05", "+03:30", "-01:23:45", etc. +# timezone = "local" + +## enable or disable automatic sync +auto_sync = true + +## enable or disable automatic update checks +update_check = true + +## address of the sync server +sync_address = "https://atuin.alecodes.page" + +## how often to sync history. note that this is only triggered when a command +## is ran, so sync intervals may well be longer +## set it to 0 to sync after every command +# sync_frequency = "10m" + +## which search mode to use +## possible values: prefix, fulltext, fuzzy, skim +# search_mode = "fuzzy" + +## which filter mode to use by default +## possible values: "global", "host", "session", "directory", "workspace" +## consider using search.filters to customize the enablement and order of filter modes +filter_mode = "global" + +## With workspace filtering enabled, Atuin will filter for commands executed +## in any directory within a git repository tree (default: false). +## +## To use workspace mode by default when available, set this to true and +## set filter_mode to "workspace" or leave it unspecified and +## set search.filters to include "workspace" before other filter modes. +# workspaces = false + +## which filter mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "filter_mode" +## leave unspecified to use same mode set in "filter_mode" +filter_mode_shell_up_key_binding = "host" + +## which search mode to use when atuin is invoked from a shell up-key binding +## the accepted values are identical to those of "search_mode" +## leave unspecified to use same mode set in "search_mode" +# search_mode_shell_up_key_binding = "fuzzy" + +## which style to use +## possible values: auto, full, compact +# style = "auto" + +## the maximum number of lines the interface should take up +## set it to 0 to always go full screen +# inline_height = 0 + +## Invert the UI - put the search bar at the top , Default to `false` +# invert = false + +## enable or disable showing a preview of the selected command +## useful when the command is longer than the terminal width and is cut off +# show_preview = true + +## what to do when the escape key is pressed when searching +## possible values: return-original, return-query +# exit_mode = "return-original" + +## possible values: emacs, subl +# word_jump_mode = "emacs" + +## characters that count as a part of a word +# word_chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" + +## number of context lines to show when scrolling by pages +scroll_context_lines = 3 + +## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts +## alt-0 .. alt-9 +ctrl_n_shortcuts = false + +## default history list format - can also be specified with the --format arg +# history_format = "{time}\t{command}\t{duration}" + +## prevent commands matching any of these regexes from being written to history. +## Note that these regular expressions are unanchored, i.e. if they don't start +## with ^ or end with $, they'll match anywhere in the command. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# history_filter = [ +# "^secret-cmd", +# "^innocuous-cmd .*--secret=.+", +# ] + +## prevent commands run with cwd matching any of these regexes from being written +## to history. Note that these regular expressions are unanchored, i.e. if they don't +## start with ^ or end with $, they'll match anywhere in CWD. +## For details on the supported regular expression syntax, see +## https://docs.rs/regex/latest/regex/#syntax +# cwd_filter = [ +# "^/very/secret/area", +# ] + +## Configure the maximum height of the preview to show. +## Useful when you have long scripts in your history that you want to distinguish +## by more than the first few lines. +# max_preview_height = 4 + +## Configure whether or not to show the help row, which includes the current Atuin +## version (and whether an update is available), a keymap hint, and the total +## amount of commands in your history. +# show_help = true + +## Configure whether or not to show tabs for search and inspect +# show_tabs = true + +## Configure whether or not the tabs row may be auto-hidden, which includes the current Atuin +## tab, such as Search or Inspector, and other tabs you may wish to see. This will +## only be hidden if there are fewer than this count of lines available, and does not affect the use +## of keyboard shortcuts to switch tab. 0 to never auto-hide, default is 8 (lines). +## This is ignored except in `compact` mode. +# auto_hide_height = 8 + +## Defaults to true. This matches history against a set of default regex, and will not save it if we get a match. Defaults include +## 1. AWS key id +## 2. Github pat (old and new) +## 3. Slack oauth tokens (bot, user) +## 4. Slack webhooks +## 5. Stripe live/test keys +# secrets_filter = true + +## Defaults to true. If enabled, upon hitting enter Atuin will immediately execute the command. Press tab to return to the shell and edit. +# This applies for new installs. Old installs will keep the old behaviour unless configured otherwise. +enter_accept = false + +## Defaults to "emacs". This specifies the keymap on the startup of `atuin +## search`. If this is set to "auto", the startup keymap mode in the Atuin +## search is automatically selected based on the shell's keymap where the +## keybinding is defined. If this is set to "emacs", "vim-insert", or +## "vim-normal", the startup keymap mode in the Atuin search is forced to be +## the specified one. +# keymap_mode = "auto" + +## Cursor style in each keymap mode. If specified, the cursor style is changed +## in entering the cursor shape. Available values are "default" and +## "{blink,steady}-{block,underline,bar}". +# keymap_cursor = { emacs = "blink-block", vim_insert = "blink-block", vim_normal = "steady-block" } + +# network_connect_timeout = 5 +# network_timeout = 5 + +## Timeout (in seconds) for acquiring a local database connection (sqlite) +# local_timeout = 5 + +## Set this to true and Atuin will minimize motion in the UI - timers will not update live, etc. +## Alternatively, set env NO_MOTION=true +# prefers_reduced_motion = false + +[stats] +## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl +# common_subcommands = [ +# "apt", +# "cargo", +# "composer", +# "dnf", +# "docker", +# "git", +# "go", +# "ip", +# "jj", +# "kubectl", +# "nix", +# "nmcli", +# "npm", +# "pecl", +# "pnpm", +# "podman", +# "port", +# "systemctl", +# "tmux", +# "yarn", +# ] + +## Set commands that should be totally stripped and ignored from stats +# common_prefix = ["sudo"] + +## Set commands that will be completely ignored from stats +# ignored_commands = [ +# "cd", +# "ls", +# "vi" +# ] + +[keys] +# Defaults to true. If disabled, using the up/down key won't exit the TUI when scrolled past the first/last entry. +# scroll_exits = true +# Defaults to true. The left arrow key will exit the TUI when scrolling before the first character +# exit_past_line_start = true +# Defaults to true. The right arrow key performs the same functionality as Tab and copies the selected line to the command line to be modified. +# accept_past_line_end = true + +[sync] +# Enable sync v2 by default +# This ensures that sync v2 is enabled for new installs only +# In a later release it will become the default across the board +records = true + +[preview] +## which preview strategy to use to calculate the preview height (respects max_preview_height). +## possible values: auto, static +## auto: length of the selected command. +## static: length of the longest command stored in the history. +## fixed: use max_preview_height as fixed height. +# strategy = "auto" + +[daemon] +## Enables using the daemon to sync. Requires the daemon to be running in the background. Start it with `atuin daemon` +# enabled = false + +## How often the daemon should sync in seconds +# sync_frequency = 300 + +## The path to the unix socket used by the daemon (on unix systems) +## linux/mac: ~/.local/share/atuin/atuin.sock +## windows: Not Supported +# socket_path = "~/.local/share/atuin/atuin.sock" + +## Use systemd socket activation rather than opening the given path (the path must still be correct for the client) +## linux: false +## mac/windows: Not Supported +# systemd_socket = false + +## The port that should be used for TCP on non unix systems +# tcp_port = 8889 + +# [theme] +## Color theme to use for rendering in the terminal. +## There are some built-in themes, including the base theme ("default"), +## "autumn" and "marine". You can add your own themes to the "./themes" subdirectory of your +## Atuin config (or ATUIN_THEME_DIR, if provided) as TOML files whose keys should be one or +## more of AlertInfo, AlertWarn, AlertError, Annotation, Base, Guidance, Important, and +## the string values as lowercase entries from this list: +## https://ogeon.github.io/docs/palette/master/palette/named/index.html +## If you provide a custom theme file, it should be called "NAME.toml" and the theme below +## should be the stem, i.e. `theme = "NAME"` for your chosen NAME. +name = "catppuccin-macchiato-teal" + +## Whether the theme manager should output normal or extra information to help fix themes. +## Boolean, true or false. If unset, left up to the theme manager. +# debug = true + +[search] +## The list of enabled filter modes, in order of priority. +## The "workspace" mode is skipped when not in a workspace or workspaces = false. +## Default filter mode can be overridden with the filter_mode setting. +# filters = [ "global", "host", "session", "workspace", "directory" ] + +[dotfiles] +enabled = true diff --git a/Configs/atuin/.config/atuin/themes/catppuccin-macchiato-teal.toml b/Configs/atuin/.config/atuin/themes/catppuccin-macchiato-teal.toml new file mode 100644 index 0000000..7c657c1 --- /dev/null +++ b/Configs/atuin/.config/atuin/themes/catppuccin-macchiato-teal.toml @@ -0,0 +1,12 @@ +[theme] +name = "catppuccin-macchiato-teal" + +[colors] +AlertInfo = "#a6da95" +AlertWarn = "#f5a97f" +AlertError = "#ed8796" +Annotation = "#8bd5ca" +Base = "#cad3f5" +Guidance = "#939ab7" +Important = "#ed8796" +Title = "#8bd5ca" diff --git a/Configs/bash/.profile b/Configs/bash/.bash_profile similarity index 92% rename from Configs/bash/.profile rename to Configs/bash/.bash_profile index f020fdf..287b4fc 100644 --- a/Configs/bash/.profile +++ b/Configs/bash/.bash_profile @@ -34,3 +34,9 @@ source "$HOME/.rye/env" # . "$HOME/.cargo/env" update_path "$HOME/.cargo/bin/" + +. "$HOME/.atuin/bin/env" + +if [ -f ~/.bashrc ]; then + . ~/.bashrc +fi diff --git a/Configs/bash/.bashrc b/Configs/bash/.bashrc index 7e989a3..6cd3f11 100644 --- a/Configs/bash/.bashrc +++ b/Configs/bash/.bashrc @@ -6,3 +6,8 @@ if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTI shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION='' exec fish $LOGIN_OPTION fi + +. "$HOME/.atuin/bin/env" + +[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh +eval "$(atuin init bash)" diff --git a/Configs/fish/.config/fish/completions/atuin.fish b/Configs/fish/.config/fish/completions/atuin.fish new file mode 100644 index 0000000..79c9944 --- /dev/null +++ b/Configs/fish/.config/fish/completions/atuin.fish @@ -0,0 +1,423 @@ +# Print an optspec for argparse to handle cmd's options that are independent of any subcommand. +function __fish_atuin_global_optspecs + string join \n h/help V/version +end + +function __fish_atuin_needs_command + # Figure out if the current invocation already has a command. + set -l cmd (commandline -opc) + set -e cmd[1] + argparse -s (__fish_atuin_global_optspecs) -- $cmd 2>/dev/null + or return + if set -q argv[1] + # Also print the command, so this can be used to figure out what it is. + echo $argv[1] + return 1 + end + return 0 +end + +function __fish_atuin_using_subcommand + set -l cmd (__fish_atuin_needs_command) + test -z "$cmd" + and return 1 + contains -- $cmd[1] $argv +end + +complete -c atuin -n "__fish_atuin_needs_command" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_needs_command" -s V -l version -d 'Print version' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "history" -d 'Manipulate shell history' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "import" -d 'Import shell history from file' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "stats" -d 'Calculate statistics for your history' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "search" -d 'Interactive history search' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "sync" -d 'Sync with the configured server' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "login" -d 'Login to the configured server' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "logout" -d 'Log out' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "register" -d 'Register with the configured server' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "key" -d 'Print the encryption key for transfer to another machine' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "status" -d 'Display the sync status' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "account" -d 'Manage your sync account' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "kv" -d 'Get or set small key-value pairs' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "store" -d 'Manage the atuin data store' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "dotfiles" -d 'Manage your dotfiles with Atuin' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "scripts" -d 'Manage your scripts with Atuin' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "init" -d 'Print Atuin\'s shell init script' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "info" -d 'Information about dotfiles locations and ENV vars' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "doctor" -d 'Run the doctor to check for common issues' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "wrapped" +complete -c atuin -n "__fish_atuin_needs_command" -f -a "daemon" -d '*Experimental* Start the background daemon' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "default-config" -d 'Print the default atuin configuration (config.toml)' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "server" -d 'Start an atuin server' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "uuid" -d 'Generate a UUID' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "contributors" +complete -c atuin -n "__fish_atuin_needs_command" -f -a "gen-completions" -d 'Generate shell completions' +complete -c atuin -n "__fish_atuin_needs_command" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -f -a "start" -d 'Begins a new command in the history' +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -f -a "end" -d 'Finishes a new command in the history (adds time, exit code)' +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -f -a "list" -d 'List all items in history' +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -f -a "last" -d 'Get the last command ran' +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -f -a "init-store" +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -f -a "prune" -d 'Delete history entries matching the configured exclusion filters' +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -f -a "dedup" -d 'Delete duplicate history entries (that have the same command, cwd and hostname)' +complete -c atuin -n "__fish_atuin_using_subcommand history; and not __fish_seen_subcommand_from start end list last init-store prune dedup help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from start" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from end" -s e -l exit -r +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from end" -s d -l duration -r +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from end" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -s r -l reverse -r -f -a "true\t'' +false\t''" +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -l timezone -l tz -d 'Display the command time in another timezone other than the configured default' -r +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -s f -l format -d 'Available variables: {command}, {directory}, {duration}, {user}, {host}, {exit} and {time}. Example: --format "{time} - [{duration}] - {directory}$\\t{command}"' -r +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -s c -l cwd +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -s s -l session +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -l human +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -l cmd-only -d 'Show only the text of the command' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -l print0 -d 'Terminate the output with a null, for better multiline support' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from last" -l timezone -l tz -d 'Display the command time in another timezone other than the configured default' -r +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from last" -s f -l format -d 'Available variables: {command}, {directory}, {duration}, {user}, {host} and {time}. Example: --format "{time} - [{duration}] - {directory}$\\t{command}"' -r +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from last" -l human +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from last" -l cmd-only -d 'Show only the text of the command' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from last" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from init-store" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from prune" -s n -l dry-run -d 'List matching history lines without performing the actual deletion' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from prune" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from dedup" -s b -l before -d 'Only delete results added before this date' -r +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from dedup" -l dupkeep -d 'How many recent duplicates to keep' -r +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from dedup" -s n -l dry-run -d 'List matching history lines without performing the actual deletion' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from dedup" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from help" -f -a "start" -d 'Begins a new command in the history' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from help" -f -a "end" -d 'Finishes a new command in the history (adds time, exit code)' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from help" -f -a "list" -d 'List all items in history' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from help" -f -a "last" -d 'Get the last command ran' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from help" -f -a "init-store" +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from help" -f -a "prune" -d 'Delete history entries matching the configured exclusion filters' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from help" -f -a "dedup" -d 'Delete duplicate history entries (that have the same command, cwd and hostname)' +complete -c atuin -n "__fish_atuin_using_subcommand history; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "auto" -d 'Import history for the current shell' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "zsh" -d 'Import history from the zsh history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "zsh-hist-db" -d 'Import history from the zsh history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "bash" -d 'Import history from the bash history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "replxx" -d 'Import history from the replxx history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "resh" -d 'Import history from the resh history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "fish" -d 'Import history from the fish history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "nu" -d 'Import history from the nu history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "nu-hist-db" -d 'Import history from the nu history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "xonsh" -d 'Import history from xonsh json files' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "xonsh-sqlite" -d 'Import history from xonsh sqlite db' +complete -c atuin -n "__fish_atuin_using_subcommand import; and not __fish_seen_subcommand_from auto zsh zsh-hist-db bash replxx resh fish nu nu-hist-db xonsh xonsh-sqlite help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from auto" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from zsh" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from zsh-hist-db" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from bash" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from replxx" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from resh" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from fish" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from nu" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from nu-hist-db" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from xonsh" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from xonsh-sqlite" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "auto" -d 'Import history for the current shell' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "zsh" -d 'Import history from the zsh history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "zsh-hist-db" -d 'Import history from the zsh history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "bash" -d 'Import history from the bash history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "replxx" -d 'Import history from the replxx history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "resh" -d 'Import history from the resh history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "fish" -d 'Import history from the fish history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "nu" -d 'Import history from the nu history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "nu-hist-db" -d 'Import history from the nu history file' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "xonsh" -d 'Import history from xonsh json files' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "xonsh-sqlite" -d 'Import history from xonsh sqlite db' +complete -c atuin -n "__fish_atuin_using_subcommand import; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand stats" -s c -l count -d 'How many top commands to list' -r +complete -c atuin -n "__fish_atuin_using_subcommand stats" -s n -l ngram-size -d 'The number of consecutive commands to consider' -r +complete -c atuin -n "__fish_atuin_using_subcommand stats" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand search" -s c -l cwd -d 'Filter search result by directory' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -l exclude-cwd -d 'Exclude directory from results' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -s e -l exit -d 'Filter search result by exit code' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -l exclude-exit -d 'Exclude results with this exit code' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -s b -l before -d 'Only include results added before this date' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -l after -d 'Only include results after this date' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -l limit -d 'How many entries to return at most' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -l offset -d 'Offset from the start of the results' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -l filter-mode -d 'Allow overriding filter mode over config' -r -f -a "global\t'' +host\t'' +session\t'' +directory\t'' +workspace\t''" +complete -c atuin -n "__fish_atuin_using_subcommand search" -l search-mode -d 'Allow overriding search mode over config' -r -f -a "prefix\t'' +full-text\t'' +fuzzy\t'' +skim\t''" +complete -c atuin -n "__fish_atuin_using_subcommand search" -l keymap-mode -d 'Notify the keymap at the shell\'s side' -r -f -a "emacs\t'' +vim-normal\t'' +vim-insert\t'' +auto\t''" +complete -c atuin -n "__fish_atuin_using_subcommand search" -l timezone -l tz -d 'Display the command time in another timezone other than the configured default' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -s f -l format -d 'Available variables: {command}, {directory}, {duration}, {user}, {host}, {time}, {exit} and {relativetime}. Example: --format "{time} - [{duration}] - {directory}$\\t{command}"' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -l inline-height -d 'Set the maximum number of lines Atuin\'s interface should take up' -r +complete -c atuin -n "__fish_atuin_using_subcommand search" -s i -l interactive -d 'Open interactive search UI' +complete -c atuin -n "__fish_atuin_using_subcommand search" -l shell-up-key-binding -d 'Marker argument used to inform atuin that it was invoked from a shell up-key binding (hidden from help to avoid confusion)' +complete -c atuin -n "__fish_atuin_using_subcommand search" -l human -d 'Use human-readable formatting for time' +complete -c atuin -n "__fish_atuin_using_subcommand search" -l cmd-only -d 'Show only the text of the command' +complete -c atuin -n "__fish_atuin_using_subcommand search" -l print0 -d 'Terminate the output with a null, for better multiline handling' +complete -c atuin -n "__fish_atuin_using_subcommand search" -l delete -d 'Delete anything matching this query. Will not print out the match' +complete -c atuin -n "__fish_atuin_using_subcommand search" -l delete-it-all -d 'Delete EVERYTHING!' +complete -c atuin -n "__fish_atuin_using_subcommand search" -s r -l reverse -d 'Reverse the order of results, oldest first' +complete -c atuin -n "__fish_atuin_using_subcommand search" -l include-duplicates -d 'Include duplicate commands in the output (non-interactive only)' +complete -c atuin -n "__fish_atuin_using_subcommand search" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c atuin -n "__fish_atuin_using_subcommand sync" -s f -l force -d 'Force re-download everything' +complete -c atuin -n "__fish_atuin_using_subcommand sync" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand login" -s u -l username -r +complete -c atuin -n "__fish_atuin_using_subcommand login" -s p -l password -r +complete -c atuin -n "__fish_atuin_using_subcommand login" -s k -l key -d 'The encryption key for your account' -r +complete -c atuin -n "__fish_atuin_using_subcommand login" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand logout" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand register" -s u -l username -r +complete -c atuin -n "__fish_atuin_using_subcommand register" -s p -l password -r +complete -c atuin -n "__fish_atuin_using_subcommand register" -s e -l email -r +complete -c atuin -n "__fish_atuin_using_subcommand register" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand key" -l base64 -d 'Switch to base64 output of the key' +complete -c atuin -n "__fish_atuin_using_subcommand key" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand status" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand account; and not __fish_seen_subcommand_from login register logout delete change-password verify help" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand account; and not __fish_seen_subcommand_from login register logout delete change-password verify help" -f -a "login" -d 'Login to the configured server' +complete -c atuin -n "__fish_atuin_using_subcommand account; and not __fish_seen_subcommand_from login register logout delete change-password verify help" -f -a "register" -d 'Register a new account' +complete -c atuin -n "__fish_atuin_using_subcommand account; and not __fish_seen_subcommand_from login register logout delete change-password verify help" -f -a "logout" -d 'Log out' +complete -c atuin -n "__fish_atuin_using_subcommand account; and not __fish_seen_subcommand_from login register logout delete change-password verify help" -f -a "delete" -d 'Delete your account, and all synced data' +complete -c atuin -n "__fish_atuin_using_subcommand account; and not __fish_seen_subcommand_from login register logout delete change-password verify help" -f -a "change-password" -d 'Change your password' +complete -c atuin -n "__fish_atuin_using_subcommand account; and not __fish_seen_subcommand_from login register logout delete change-password verify help" -f -a "verify" -d 'Verify your account' +complete -c atuin -n "__fish_atuin_using_subcommand account; and not __fish_seen_subcommand_from login register logout delete change-password verify help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from login" -s u -l username -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from login" -s p -l password -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from login" -s k -l key -d 'The encryption key for your account' -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from login" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from register" -s u -l username -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from register" -s p -l password -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from register" -s e -l email -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from register" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from logout" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from delete" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from change-password" -s c -l current-password -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from change-password" -s n -l new-password -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from change-password" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from verify" -s t -l token -r +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from verify" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from help" -f -a "login" -d 'Login to the configured server' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from help" -f -a "register" -d 'Register a new account' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from help" -f -a "logout" -d 'Log out' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from help" -f -a "delete" -d 'Delete your account, and all synced data' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from help" -f -a "change-password" -d 'Change your password' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from help" -f -a "verify" -d 'Verify your account' +complete -c atuin -n "__fish_atuin_using_subcommand account; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and not __fish_seen_subcommand_from set delete get list rebuild help" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and not __fish_seen_subcommand_from set delete get list rebuild help" -f -a "set" -d 'Set a key-value pair' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and not __fish_seen_subcommand_from set delete get list rebuild help" -f -a "delete" -d 'Delete one or more key-value pairs' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and not __fish_seen_subcommand_from set delete get list rebuild help" -f -a "get" -d 'Retrieve a saved value' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and not __fish_seen_subcommand_from set delete get list rebuild help" -f -a "list" -d 'List all keys in a namespace, or in all namespaces' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and not __fish_seen_subcommand_from set delete get list rebuild help" -f -a "rebuild" -d 'Rebuild the KV store' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and not __fish_seen_subcommand_from set delete get list rebuild help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from set" -s k -l key -d 'Key to set' -r +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from set" -s n -l namespace -d 'Namespace for the key-value pair' -r +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from set" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from delete" -s n -l namespace -d 'Namespace for the key-value pair' -r +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from delete" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from get" -s n -l namespace -d 'Namespace for the key-value pair' -r +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from get" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from list" -s n -l namespace -d 'Namespace to list keys from' -r +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from list" -s a -l all-namespaces -d 'List all keys in all namespaces' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from rebuild" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from help" -f -a "set" -d 'Set a key-value pair' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from help" -f -a "delete" -d 'Delete one or more key-value pairs' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from help" -f -a "get" -d 'Retrieve a saved value' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from help" -f -a "list" -d 'List all keys in a namespace, or in all namespaces' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from help" -f -a "rebuild" -d 'Rebuild the KV store' +complete -c atuin -n "__fish_atuin_using_subcommand kv; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -f -a "status" -d 'Print the current status of the record store' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -f -a "rebuild" -d 'Rebuild a store (eg atuin store rebuild history)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -f -a "rekey" -d 'Re-encrypt the store with a new key (potential for data loss!)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -f -a "purge" -d 'Delete all records in the store that cannot be decrypted with the current key' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -f -a "verify" -d 'Verify that all records in the store can be decrypted with the current key' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -f -a "push" -d 'Push all records to the remote sync server (one way sync)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -f -a "pull" -d 'Pull records from the remote sync server (one way sync)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and not __fish_seen_subcommand_from status rebuild rekey purge verify push pull help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from status" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from rebuild" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from rekey" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from purge" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from verify" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from push" -s t -l tag -d 'The tag to push (eg, \'history\'). Defaults to all tags' -r +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from push" -l host -d 'The host to push, in the form of a UUID host ID. Defaults to the current host' -r +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from push" -l force -d 'Force push records This will override both host and tag, to be all hosts and all tags. First clear the remote store, then upload all of the local store' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from push" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from pull" -s t -l tag -d 'The tag to push (eg, \'history\'). Defaults to all tags' -r +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from pull" -l force -d 'Force push records This will first wipe the local store, and then download all records from the remote' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from pull" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from help" -f -a "status" -d 'Print the current status of the record store' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from help" -f -a "rebuild" -d 'Rebuild a store (eg atuin store rebuild history)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from help" -f -a "rekey" -d 'Re-encrypt the store with a new key (potential for data loss!)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from help" -f -a "purge" -d 'Delete all records in the store that cannot be decrypted with the current key' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from help" -f -a "verify" -d 'Verify that all records in the store can be decrypted with the current key' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from help" -f -a "push" -d 'Push all records to the remote sync server (one way sync)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from help" -f -a "pull" -d 'Pull records from the remote sync server (one way sync)' +complete -c atuin -n "__fish_atuin_using_subcommand store; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and not __fish_seen_subcommand_from alias var help" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and not __fish_seen_subcommand_from alias var help" -f -a "alias" -d 'Manage shell aliases with Atuin' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and not __fish_seen_subcommand_from alias var help" -f -a "var" -d 'Manage shell and environment variables with Atuin' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and not __fish_seen_subcommand_from alias var help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from alias" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from alias" -f -a "set" -d 'Set an alias' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from alias" -f -a "delete" -d 'Delete an alias' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from alias" -f -a "list" -d 'List all aliases' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from alias" -f -a "clear" -d 'Delete all aliases' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from alias" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from var" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from var" -f -a "set" -d 'Set a variable' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from var" -f -a "delete" -d 'Delete a variable' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from var" -f -a "list" -d 'List all variables' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from var" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from help" -f -a "alias" -d 'Manage shell aliases with Atuin' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from help" -f -a "var" -d 'Manage shell and environment variables with Atuin' +complete -c atuin -n "__fish_atuin_using_subcommand dotfiles; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and not __fish_seen_subcommand_from new run list get edit delete help" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and not __fish_seen_subcommand_from new run list get edit delete help" -f -a "new" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and not __fish_seen_subcommand_from new run list get edit delete help" -f -a "run" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and not __fish_seen_subcommand_from new run list get edit delete help" -f -a "list" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and not __fish_seen_subcommand_from new run list get edit delete help" -f -a "get" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and not __fish_seen_subcommand_from new run list get edit delete help" -f -a "edit" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and not __fish_seen_subcommand_from new run list get edit delete help" -f -a "delete" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and not __fish_seen_subcommand_from new run list get edit delete help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from new" -s d -l description -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from new" -s t -l tags -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from new" -s s -l shebang -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from new" -l script -r -F +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from new" -l last -d 'Use the last command as the script content Optionally specify a number to use the last N commands' -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from new" -l no-edit -d 'Skip opening editor when using --last' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from new" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from run" -s v -l var -d 'Specify template variables in the format KEY=VALUE Example: -v name=John -v greeting="Hello there"' -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from run" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from list" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from get" -s s -l script -d 'Display only the executable script with shebang' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from get" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from edit" -s d -l description -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from edit" -s t -l tags -d 'Replace all existing tags with these new tags' -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from edit" -l rename -d 'Rename the script' -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from edit" -s s -l shebang -r +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from edit" -l script -r -F +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from edit" -l no-tags -d 'Remove all tags from the script' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from edit" -l no-edit -d 'Skip opening editor' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from edit" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from delete" -s f -l force +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from delete" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from help" -f -a "new" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from help" -f -a "run" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from help" -f -a "list" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from help" -f -a "get" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from help" -f -a "edit" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from help" -f -a "delete" +complete -c atuin -n "__fish_atuin_using_subcommand scripts; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand init" -l disable-ctrl-r -d 'Disable the binding of CTRL-R to atuin' +complete -c atuin -n "__fish_atuin_using_subcommand init" -l disable-up-arrow -d 'Disable the binding of the Up Arrow key to atuin' +complete -c atuin -n "__fish_atuin_using_subcommand init" -s h -l help -d 'Print help (see more with \'--help\')' +complete -c atuin -n "__fish_atuin_using_subcommand info" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand doctor" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand wrapped" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand daemon" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand default-config" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand server; and not __fish_seen_subcommand_from start default-config help" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand server; and not __fish_seen_subcommand_from start default-config help" -f -a "start" -d 'Start the server' +complete -c atuin -n "__fish_atuin_using_subcommand server; and not __fish_seen_subcommand_from start default-config help" -f -a "default-config" -d 'Print server example configuration' +complete -c atuin -n "__fish_atuin_using_subcommand server; and not __fish_seen_subcommand_from start default-config help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand server; and __fish_seen_subcommand_from start" -l host -d 'The host address to bind' -r +complete -c atuin -n "__fish_atuin_using_subcommand server; and __fish_seen_subcommand_from start" -s p -l port -d 'The port to bind' -r +complete -c atuin -n "__fish_atuin_using_subcommand server; and __fish_seen_subcommand_from start" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand server; and __fish_seen_subcommand_from default-config" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand server; and __fish_seen_subcommand_from help" -f -a "start" -d 'Start the server' +complete -c atuin -n "__fish_atuin_using_subcommand server; and __fish_seen_subcommand_from help" -f -a "default-config" -d 'Print server example configuration' +complete -c atuin -n "__fish_atuin_using_subcommand server; and __fish_seen_subcommand_from help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand uuid" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand contributors" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand gen-completions" -s s -l shell -d 'Set the shell for generating completions' -r -f -a "bash\t'' +elvish\t'' +fish\t'' +nushell\t'' +powershell\t'' +zsh\t''" +complete -c atuin -n "__fish_atuin_using_subcommand gen-completions" -s o -l out-dir -d 'Set the output directory' -r +complete -c atuin -n "__fish_atuin_using_subcommand gen-completions" -s h -l help -d 'Print help' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "history" -d 'Manipulate shell history' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "import" -d 'Import shell history from file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "stats" -d 'Calculate statistics for your history' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "search" -d 'Interactive history search' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "sync" -d 'Sync with the configured server' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "login" -d 'Login to the configured server' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "logout" -d 'Log out' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "register" -d 'Register with the configured server' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "key" -d 'Print the encryption key for transfer to another machine' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "status" -d 'Display the sync status' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "account" -d 'Manage your sync account' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "kv" -d 'Get or set small key-value pairs' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "store" -d 'Manage the atuin data store' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "dotfiles" -d 'Manage your dotfiles with Atuin' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "scripts" -d 'Manage your scripts with Atuin' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "init" -d 'Print Atuin\'s shell init script' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "info" -d 'Information about dotfiles locations and ENV vars' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "doctor" -d 'Run the doctor to check for common issues' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "wrapped" +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "daemon" -d '*Experimental* Start the background daemon' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "default-config" -d 'Print the default atuin configuration (config.toml)' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "server" -d 'Start an atuin server' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "uuid" -d 'Generate a UUID' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "contributors" +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "gen-completions" -d 'Generate shell completions' +complete -c atuin -n "__fish_atuin_using_subcommand help; and not __fish_seen_subcommand_from history import stats search sync login logout register key status account kv store dotfiles scripts init info doctor wrapped daemon default-config server uuid contributors gen-completions help" -f -a "help" -d 'Print this message or the help of the given subcommand(s)' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from history" -f -a "start" -d 'Begins a new command in the history' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from history" -f -a "end" -d 'Finishes a new command in the history (adds time, exit code)' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from history" -f -a "list" -d 'List all items in history' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from history" -f -a "last" -d 'Get the last command ran' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from history" -f -a "init-store" +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from history" -f -a "prune" -d 'Delete history entries matching the configured exclusion filters' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from history" -f -a "dedup" -d 'Delete duplicate history entries (that have the same command, cwd and hostname)' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "auto" -d 'Import history for the current shell' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "zsh" -d 'Import history from the zsh history file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "zsh-hist-db" -d 'Import history from the zsh history file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "bash" -d 'Import history from the bash history file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "replxx" -d 'Import history from the replxx history file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "resh" -d 'Import history from the resh history file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "fish" -d 'Import history from the fish history file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "nu" -d 'Import history from the nu history file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "nu-hist-db" -d 'Import history from the nu history file' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "xonsh" -d 'Import history from xonsh json files' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from import" -f -a "xonsh-sqlite" -d 'Import history from xonsh sqlite db' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from account" -f -a "login" -d 'Login to the configured server' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from account" -f -a "register" -d 'Register a new account' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from account" -f -a "logout" -d 'Log out' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from account" -f -a "delete" -d 'Delete your account, and all synced data' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from account" -f -a "change-password" -d 'Change your password' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from account" -f -a "verify" -d 'Verify your account' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from kv" -f -a "set" -d 'Set a key-value pair' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from kv" -f -a "delete" -d 'Delete one or more key-value pairs' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from kv" -f -a "get" -d 'Retrieve a saved value' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from kv" -f -a "list" -d 'List all keys in a namespace, or in all namespaces' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from kv" -f -a "rebuild" -d 'Rebuild the KV store' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from store" -f -a "status" -d 'Print the current status of the record store' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from store" -f -a "rebuild" -d 'Rebuild a store (eg atuin store rebuild history)' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from store" -f -a "rekey" -d 'Re-encrypt the store with a new key (potential for data loss!)' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from store" -f -a "purge" -d 'Delete all records in the store that cannot be decrypted with the current key' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from store" -f -a "verify" -d 'Verify that all records in the store can be decrypted with the current key' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from store" -f -a "push" -d 'Push all records to the remote sync server (one way sync)' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from store" -f -a "pull" -d 'Pull records from the remote sync server (one way sync)' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from dotfiles" -f -a "alias" -d 'Manage shell aliases with Atuin' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from dotfiles" -f -a "var" -d 'Manage shell and environment variables with Atuin' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from scripts" -f -a "new" +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from scripts" -f -a "run" +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from scripts" -f -a "list" +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from scripts" -f -a "get" +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from scripts" -f -a "edit" +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from scripts" -f -a "delete" +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from server" -f -a "start" -d 'Start the server' +complete -c atuin -n "__fish_atuin_using_subcommand help; and __fish_seen_subcommand_from server" -f -a "default-config" -d 'Print server example configuration' diff --git a/Configs/fish/.config/fish/config.fish b/Configs/fish/.config/fish/config.fish index a6030a8..4427a62 100644 --- a/Configs/fish/.config/fish/config.fish +++ b/Configs/fish/.config/fish/config.fish @@ -1,4 +1,5 @@ if status is-interactive # Commands to run in interactive sessions can go here zoxide init --cmd cd fish | source + atuin init fish | source end diff --git a/Configs/zsh/.zshrc b/Configs/zsh/.zshrc index ed402e2..6b557a8 100644 --- a/Configs/zsh/.zshrc +++ b/Configs/zsh/.zshrc @@ -80,3 +80,7 @@ zinit cdreplay -q # ╰──────────────────────────────────────────────────────────╯ eval "$(zoxide init --cmd cd zsh)" + +. "$HOME/.atuin/bin/env" + +eval "$(atuin init zsh)" From 60a8a146675dea04433b4d3e9d450391ffdad0e4 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 10 Jul 2025 16:16:31 -0400 Subject: [PATCH 102/152] minor update --- Configs/nvim/.config/nvim/lua/aleidk/options.lua | 4 +++- Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index b6d640c..4181a8c 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -32,6 +32,7 @@ vim.opt.list = true -- Sets how neovim will display certain whitespace ch vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } opt.mouse = "a" -- Enable mouse mode opt.number = true -- Print line number +opt.nrformats = 'blank,bin,hex' opt.pumblend = 10 -- Popup blend opt.pumheight = 10 -- Maximum number of entries in a popup opt.relativenumber = true -- Relative line numbers @@ -154,11 +155,12 @@ vim.filetype.add({ -- ╰─────────────────────────────────────────────────────────╯ vim.lsp.enable({ + "ansiblels", "lua_ls", + "nushell", "pyright", "ruff", "rust_analyzer", - "ansiblels", }) vim.diagnostic.config({ diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua index c677f4f..fe93165 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua @@ -1,6 +1,7 @@ return { "nvim-treesitter/nvim-treesitter", - event = { "BufReadPost", "BufNewFile", "BufWritePre", "VeryLazy" }, + lazy = false, + branch = "master", dependencies = { { "JoosepAlviste/nvim-ts-context-commentstring", From 3e01fa628cb9a9bf5722f8b6ee3c0188cf1b73ef Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 17 Jul 2025 10:53:24 -0400 Subject: [PATCH 103/152] add yy function --- Configs/fish/.config/fish/functions/yy.fish | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 Configs/fish/.config/fish/functions/yy.fish diff --git a/Configs/fish/.config/fish/functions/yy.fish b/Configs/fish/.config/fish/functions/yy.fish new file mode 100644 index 0000000..c5ecb3e --- /dev/null +++ b/Configs/fish/.config/fish/functions/yy.fish @@ -0,0 +1,8 @@ +function yy + set tmp (mktemp -t "yazi-cwd.XXXXXX") + yazi $argv --cwd-file="$tmp" + if read -z cwd < "$tmp"; and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ] + builtin cd -- "$cwd" + end + rm -f -- "$tmp" +end From 466d6652ba71e7f60be1dfa1c6adbab0817cbba1 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 17 Jul 2025 16:05:12 -0400 Subject: [PATCH 104/152] remove mini.files and recover dadbod --- Configs/nvim/.config/nvim/lazy-lock.json | 3 +++ .../nvim/lua/aleidk/plugins/completion.lua | 4 ++++ .../nvim/lua/aleidk/plugins/database.lua | 21 +++++++++++++++++++ .../nvim/lua/aleidk/plugins/file-explorer.lua | 2 +- .../.config/nvim/lua/aleidk/plugins/mini.lua | 21 ------------------- 5 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index 56230ec..f13b082 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -23,6 +23,9 @@ "smart-splits.nvim": { "branch": "master", "commit": "5ef94ca23b28148187846fc46f10184aad4d17b0" }, "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, + "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, + "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, + "vim-dadbod-ui": { "branch": "master", "commit": "2900a1617b3df1a48683d872eadbe1101146a49a" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, "yazi.nvim": { "branch": "main", "commit": "59c22d1a8bcb3d00a7115ef7f2d59b90cf989ab3" } } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua index c1c43fd..47efc65 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua @@ -37,6 +37,7 @@ return { }, sources = { providers = { + dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" }, lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, luasnip = { name = 'luasnip', @@ -55,6 +56,9 @@ return { "buffer", "lazydev", }, + per_filetype = { + sql = { 'snippets', 'dadbod', 'buffer' }, + }, }, } end diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua new file mode 100644 index 0000000..9bf33b6 --- /dev/null +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua @@ -0,0 +1,21 @@ +return { + "kristijanhusak/vim-dadbod-ui", + dependencies = { + { "tpope/vim-dadbod", lazy = true }, + { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, + }, + cmd = { + "DBUI", + "DBUIToggle", + "DBUIAddConnection", + "DBUIFindBuffer", + }, + keys = { + { "ud", "DBUIToggle", desc = "Toggle DB UI" }, + }, + init = function() + -- Your DBUI configuration + vim.g.db_ui_use_nerd_fonts = 1 + vim.g.db_ui_force_echo_notifications = 1 + end, +} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua index 6499ad7..1078202 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua @@ -2,7 +2,7 @@ return { "mikavilpas/yazi.nvim", keys = { { - "E", + "e", "Yazi", desc = "Open yazi at the current file", }, diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua index 828cfca..eef25ad 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua @@ -53,27 +53,6 @@ return { }, }) - require('mini.files').setup({ - mappings = { - go_in = 'L', - go_in_plus = 'l', - }, - windows = { - preview = true, - width_preview = 75, - } - }) - vim.keymap.set('n', 'e', function() - local buf_name = vim.api.nvim_buf_get_name(0) - if string.match(buf_name, "^ministarter:.*") then - MiniFiles.open() - else - MiniFiles.open(buf_name) - end - end, - { desc = 'Show at cursor', silent = true }) - - require('mini.move').setup({ mappings = { -- Move visual selection in Visual mode From 78bfbc3ed6577f6f22c7afe789a7282e91c66e7d Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 21 Jul 2025 09:16:35 -0400 Subject: [PATCH 105/152] minor update --- Configs/nvim/.config/nvim/lua/aleidk/options.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index 4181a8c..64152ad 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -57,7 +57,8 @@ opt.updatetime = 200 -- Save swap file and trigger CursorHold opt.wildmode = "longest,list:full" -- Command-line completion mode opt.winminwidth = 5 -- Minimum window width opt.wrap = false -- Disable line wrap -vim.opt.inccommand = 'split' -- Preview substitutions live, as you type! +opt.inccommand = 'split' -- Preview substitutions live, as you type! +-- vim.o.exrc = true vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" @@ -153,7 +154,6 @@ vim.filetype.add({ -- ╭─────────────────────────────────────────────────────────╮ -- │ LSP │ -- ╰─────────────────────────────────────────────────────────╯ - vim.lsp.enable({ "ansiblels", "lua_ls", From b6eea9356489f5a7a8df68f53c8995b4980b9370 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 21 Jul 2025 11:57:03 -0400 Subject: [PATCH 106/152] add ansible playbook setup --- .../nvim/.config/nvim/lua/aleidk/options.lua | 1 + Configs/yazi/.config/yazi/keymap.toml | 2 +- Configs/yazi/.config/yazi/package.toml | 17 ++-- Configs/yazi/.config/yazi/theme.toml | 3 +- Configs/yazi/.config/yazi/yazi.toml | 2 +- README.md | 6 ++ bootstrap/bootstrap.sh | 29 +++++++ bootstrap/bootstrap.yaml | 69 ++++++++++++++++ bootstrap/variables.yaml | 81 +++++++++++++++++++ 9 files changed, 196 insertions(+), 14 deletions(-) create mode 100755 bootstrap/bootstrap.sh create mode 100644 bootstrap/bootstrap.yaml create mode 100644 bootstrap/variables.yaml diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index 64152ad..1d1c3a9 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -156,6 +156,7 @@ vim.filetype.add({ -- ╰─────────────────────────────────────────────────────────╯ vim.lsp.enable({ "ansiblels", + "bashls", "lua_ls", "nushell", "pyright", diff --git a/Configs/yazi/.config/yazi/keymap.toml b/Configs/yazi/.config/yazi/keymap.toml index af6a85d..cf1eb43 100644 --- a/Configs/yazi/.config/yazi/keymap.toml +++ b/Configs/yazi/.config/yazi/keymap.toml @@ -2,7 +2,7 @@ # If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. "$schema" = "https://yazi-rs.github.io/schemas/keymap.json" -[manager] +[mgr] prepend_keymap = [ { on = [""], run = "escape --all", desc = "Exit visual mode, clear selected, or cancel search" }, diff --git a/Configs/yazi/.config/yazi/package.toml b/Configs/yazi/.config/yazi/package.toml index 2b66268..a548b83 100644 --- a/Configs/yazi/.config/yazi/package.toml +++ b/Configs/yazi/.config/yazi/package.toml @@ -1,12 +1,7 @@ [[plugin.deps]] use = "yazi-rs/plugins:full-border" -rev = "5186af7" -hash = "ae9e1d0c6bfd68cdebc98cc684c22b45" - -[[plugin.deps]] -use = "GianniBYoung/rsync" -rev = "3f431aa" -hash = "1854a5a30d23e84bc8df24700f27957b" +rev = "1ab21d4" +hash = "3996fc74044bc44144b323686f887e1" [[plugin.deps]] use = "Ape/simple-status" @@ -15,10 +10,10 @@ hash = "68603fdd1dcaf415227e2c77a9317947" [[plugin.deps]] use = "yazi-rs/plugins:smart-enter" -rev = "5186af7" -hash = "aef2b1a805b80cce573bb766f1459d88" +rev = "1ab21d4" +hash = "56fdabc96fc1f4d53c96eb884b02a5be" [[flavor.deps]] use = "yazi-rs/flavors:catppuccin-macchiato" -rev = "c023460" -hash = "3ec21bcfd2735cfcbab61faaf43e59e4" +rev = "d3fd3a5" +hash = "e6c5beeb1da3199355734273ee452a7f" diff --git a/Configs/yazi/.config/yazi/theme.toml b/Configs/yazi/.config/yazi/theme.toml index 000a93b..e0dfd86 100644 --- a/Configs/yazi/.config/yazi/theme.toml +++ b/Configs/yazi/.config/yazi/theme.toml @@ -1,2 +1,3 @@ [flavor] -use = "catppuccin-macchiato" +light = "catppuccin-macchiato" +dark = "catppuccin-macchiato" diff --git a/Configs/yazi/.config/yazi/yazi.toml b/Configs/yazi/.config/yazi/yazi.toml index 3600ca2..8c7ce85 100644 --- a/Configs/yazi/.config/yazi/yazi.toml +++ b/Configs/yazi/.config/yazi/yazi.toml @@ -2,7 +2,7 @@ # 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" -[manager] +[mgr] ratio = [1, 3, 4] sort_by = "alphabetical" sort_sensitive = false diff --git a/README.md b/README.md index 53b172b..566f550 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,12 @@ Please ensure the that git is installed and you have an ssh key registered, then execute the following command: +```bash +curl -SsL https://git.alecodes.page/alecodes/dots/raw/branch/main/bootstrap/bootstrap.sh | bash +``` + +Optionally, manually clone the repo to `~/.config/dotfiles/` and then execute: + ```bash curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash diff --git a/bootstrap/bootstrap.sh b/bootstrap/bootstrap.sh new file mode 100755 index 0000000..d9eb29d --- /dev/null +++ b/bootstrap/bootstrap.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +set -eou pipefail + +export ANSIBLE_STDOUT_CALLBACK=minimal + +if ! command -v uv >/dev/null 2>&1; then + echo -e "Installing UV...\n" + curl -LsSf https://astral.sh/uv/install.sh | sh +fi + +echo -e "Executing playbook...\n" + +if [[ -d ~/.config/dotfiles ]]; then + pushd ~/.config/dotfiles/bootstrap/ || exit + + # dotfiles are cloned, executed localy + uvx --from ansible ansible-playbook --ask-become-pass bootstrap.yaml + +else + + # dotfiles are not cloned, executed remotly + uvx --from ansible ansible-pull --ask-become-pass --url ssh://git@git.alecodes.page:24062/alecodes/dots.git bootstrap/bootstrap.yaml + +fi + +popd || exit + +echo -e "Done!\n" diff --git a/bootstrap/bootstrap.yaml b/bootstrap/bootstrap.yaml new file mode 100644 index 0000000..88211b3 --- /dev/null +++ b/bootstrap/bootstrap.yaml @@ -0,0 +1,69 @@ +- name: Bootstrap system installation + hosts: localhost + vars_files: + - ./variables.yaml + tasks: + - name: Fedora setup + when: ansible_facts['distribution'] == "Fedora" + block: + - name: Enable copr repos + become: true + loop: "{{ distros.fedora.copr }}" + community.general.copr: + state: enabled + name: "{{ item }}" + + - name: Install packages + become: true + ansible.builtin.package: + state: present + name: "{{ distros.Global.packages }}" + + - name: 'Ensure rustup is setup' + ansible.builtin.command: "{{ (ansible_facts['pkg_mgr'] in ['dnf5']) | ternary('rustup-init -y --no-modify-path', 'rustup --no-modify-path -y') }}" + args: + creates: ~/.cargo/env + + - name: "Installing Cargo Binstall" + ansible.builtin.unarchive: + remote_src: true + src: https://github.com/cargo-bins/cargo-binstall/releases/latest/download/cargo-binstall-x86_64-unknown-linux-musl.tgz + dest: "{{ ansible_env.HOME }}/.cargo/bin/" + keep_newer: true + extra_opts: + - "--no-anchored" + - "cargo-binstall" + + + - name: 'Install cargo packages' + loop: "{{ distros[ansible_facts['distribution']].cargo }}" + register: cargo_log + notify: + - Deploy dots + - Install yazi packages + ansible.builtin.command: + cmd: "cargo binstall --no-confirm --locked {{ item.pkg }}" + creates: "{{ ansible_env.HOME }}/.cargo/bin/{{ item.bin }}" + + - name: Generate an OpenSSH keypair + community.crypto.openssh_keypair: + path: ~/.ssh/id_ed25519 + type: ed25519 + + - name: Clone dotfiles + ignore_errors: true + notify: + - Deploy dots + - Install yazi packages + ansible.builtin.git: + accept_newhostkey: true + repo: ssh://git@git.alecodes.page:24062/alecodes/dots.git + dest: ~/.config/dotfiles + update: true + version: main + + handlers: + - name: Deploy dots + ansible.builtin.command: tuckr add * + - name: Install yazi packages + ansible.builtin.command: ya pkg install diff --git a/bootstrap/variables.yaml b/bootstrap/variables.yaml new file mode 100644 index 0000000..6e8d0df --- /dev/null +++ b/bootstrap/variables.yaml @@ -0,0 +1,81 @@ +distros: + Fedora: + copr: + - atim/lazygit + - the4runner/firefox-dev + packages: {} + cargo: + - pkg: yazi-fm + bin: yazi + - pkg: yazi-cli + bin: yazi + - pkg: tuckr + bin: tuckr + + Arch: + packages: + - tuckr-git + cargo: {} + + Global: + packages: + - adwaita-cursor-theme + - adwaita-icon-theme + - adwaita-icon-theme-legacy + - adwaita-mono-fonts + - adwaita-sans-fonts + - bat + - breeze-icon-theme + - breeze-icon-theme-fedora + - curl + - duf + - eza + - fd-find + - firefox-dev + - fish + - flatpak + - fzf + - git + - grim + - kitty + - lazygit + - neovim + - nodejs + - openssh + - openssh-askpass + - openssh-clients + - openssh-server + - openssl + - openssl-devel + - openssl-libs + - php-cli + - php-common + - php-intl + - php-mbstring + - php-pecl-zip + - php-process + - php-soap + - php-xml + - rhythmbox + - ripgrep + - rofi-themes + - rofi-wayland + - rofimoji + - rootfiles + - rsync + - rustup + - sd + - sed + - sushi + - swappy + - tailscale + - tealdeer + - trash-cli + - tree + - tree-sitter-cli + - udisks2 + - unrar + - unrar-free + - unzip + - zip + - zoxide From dd9c225fd982a0ee5ec9fd815c554e4a04091eae Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 22 Jul 2025 14:33:01 -0400 Subject: [PATCH 107/152] add remote plugin to nvim --- Configs/fish/.config/fish/config.fish | 2 + Configs/kitty/.config/kitty/kitty.conf | 2 +- Configs/lazygit/.config/lazygit/config.yml | 8 ++-- Configs/nvim/.config/nvim/lazy-lock.json | 2 + .../.config/nvim/lua/aleidk/plugins/init.lua | 17 ++++++- .../nvim/lua/aleidk/plugins/remote-dev.lua | 45 +++++++++++++++++++ Configs/yazi/.config/yazi/keymap.toml | 5 +++ 7 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua diff --git a/Configs/fish/.config/fish/config.fish b/Configs/fish/.config/fish/config.fish index 4427a62..2627b13 100644 --- a/Configs/fish/.config/fish/config.fish +++ b/Configs/fish/.config/fish/config.fish @@ -1,3 +1,5 @@ +. ~/.cargo/env.fish + if status is-interactive # Commands to run in interactive sessions can go here zoxide init --cmd cd fish | source diff --git a/Configs/kitty/.config/kitty/kitty.conf b/Configs/kitty/.config/kitty/kitty.conf index ee876ca..ce4f320 100644 --- a/Configs/kitty/.config/kitty/kitty.conf +++ b/Configs/kitty/.config/kitty/kitty.conf @@ -2002,7 +2002,7 @@ map ctrl+space>ctrl+v launch --location=split #:: For more details, see launch #:: . -map ctrl+space>g launch --cwd=current --type=overlay lazygit +map ctrl+space>g launch --cwd=current --type=overlay --var lazy_float=true lazygit #: New OS window diff --git a/Configs/lazygit/.config/lazygit/config.yml b/Configs/lazygit/.config/lazygit/config.yml index 55e13ca..04dc579 100644 --- a/Configs/lazygit/.config/lazygit/config.yml +++ b/Configs/lazygit/.config/lazygit/config.yml @@ -262,10 +262,10 @@ quitOnTopLevelReturn: true # Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc os: # Command for editing a file. Should contain "{{filename}}". - edit: "" + edit: "nvim -- {{filename}} && kitten @ close-window -m var:lazy_float=true --ignore-no-match" # Command for editing a file at a given line number. Should contain # "{{filename}}", and may optionally contain "{{line}}". - editAtLine: "" + editAtLine: "nvim +{{line}} -- {{filename}} && kitten @ close-window -m var:lazy_float=true --ignore-no-match" # Same as EditAtLine, except that the command needs to wait until the # window is closed. editAtLineAndWait: "" @@ -273,7 +273,7 @@ os: openDirInEditor: "" # A built-in preset that sets all of the above settings. Supported presets # are defined in the getPreset function in editor_presets.go. - editPreset: "nvim-remote" + editPreset: "nvim" # Command for opening a file, as if the file is double-clicked. Should # contain "{{filename}}", but doesn't support "{{line}}". open: "xdg-open {{filename}} >/dev/null" @@ -308,7 +308,7 @@ disableStartupPopups: false # - 'quit': exit Lazygit notARepository: quit # If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit. -promptToReturnFromSubprocess: true +promptToReturnFromSubprocess: false # Keybindings keybinding: universal: diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index f13b082..3702b64 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -4,6 +4,7 @@ "catppuccin": { "branch": "main", "commit": "56a9dfd1e05868cf3189369aad87242941396563" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, + "flatten.nvim": { "branch": "main", "commit": "72527798e75b5e34757491947c2cb853ce21dc0e" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, "fzf-lua": { "branch": "main", "commit": "758173f499d15410ecb50c5519a41b27c33e645d" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, @@ -21,6 +22,7 @@ "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "render-markdown": { "branch": "main", "commit": "4a39681990fb515d00dd898de3d7bf2973805f1a" }, "smart-splits.nvim": { "branch": "master", "commit": "5ef94ca23b28148187846fc46f10184aad4d17b0" }, + "transfer.nvim": { "branch": "main", "commit": "ab12253c09f83a5b0b6ee108fc131be45abe446a" }, "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua index d681de9..beb326c 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua @@ -2,8 +2,8 @@ return { 'neovim/nvim-lspconfig', 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically { - "mason-org/mason.nvim", - opts = { } + "mason-org/mason.nvim", + opts = {} }, { "nvim-tree/nvim-web-devicons", lazy = true }, { @@ -26,4 +26,17 @@ return { }, }, }, + { + -- allow to reuse the same nvim instance when opening files in the same terminal context + "willothy/flatten.nvim", + opts = { + integrations = { + kitty = true, + wezterm = false, + }, + }, + -- Ensure that it runs first to minimize delay when opening file from terminal + lazy = false, + priority = 1001, + }, } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua new file mode 100644 index 0000000..12d86b0 --- /dev/null +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua @@ -0,0 +1,45 @@ +return { + { + "coffebar/transfer.nvim", + lazy = true, + cmd = { "TransferInit", "DiffRemote", "TransferUpload", "TransferDownload", "TransferDirDiff", "TransferRepeat" }, + opts = {}, + keys = { + { "xx", function() vim.cmd("TransferRepeat") end, desc = "Repeat last transfer" }, + { "xc", function() vim.cmd("TransferInit") end, desc = "Config transfer.nvim" }, + { "xj", function() vim.cmd("TransferDownload") end, desc = "Download current file with transfer.nvim" }, + { "xJ", function() vim.cmd("TransferDownload " .. vim.uv.cwd()) end, desc = "Download root dir with transfer.nvim" }, + { "xk", function() vim.cmd("TransferUpload") end, desc = "Upload current file with transfer.nvim" }, + { "xK", function() vim.cmd("TransferUpload " .. vim.uv.cwd()) end, desc = "Upload root dir with transfer.nvim" }, + { "xd", function() vim.cmd("DiffRemote") end, desc = "Diff current file with transfer.nvim" }, + { "xD", function() vim.cmd("TransferDirDiff " .. vim.uv.cwd()) end, desc = "Diff root dir with transfer.nvim" }, + }, + init = function() + require("yazi").config.forwarded_dds_events = { + "TransferUpload", + "TransferDownload", + "DiffRemote", + "TransferDirDiff", + } + + vim.api.nvim_create_autocmd("User", { + pattern = "YaziDDSCustom", + callback = function(event) + -- vim.print(event.data); + local data = vim.json.decode(event.data.raw_data) + + if event.data.type == "DiffRemote" or event.data.type == "TransferDirDiff" then + local response = vim.system({ "ya", "emit-to", "0", "close" }, { timeout = 1000 }):wait() + + if response.stderr ~= "" then + vim.notify(response.stderr, vim.log.levels.ERROR) + return + end + end + + vim.iter(data):each(function(path) vim.cmd(string.format("%s %s", event.data.type, path)) end) + end, + }) + end + }, +} diff --git a/Configs/yazi/.config/yazi/keymap.toml b/Configs/yazi/.config/yazi/keymap.toml index cf1eb43..bcecc1e 100644 --- a/Configs/yazi/.config/yazi/keymap.toml +++ b/Configs/yazi/.config/yazi/keymap.toml @@ -39,6 +39,11 @@ prepend_keymap = [ { on = ["g", "t"], run = "cd /tmp", desc = "Go to the temporary directory" }, { on = ["g", "r"], run = "shell 'ya emit cd \"$(git rev-parse --show-toplevel)\"'", desc = "Go to git root" }, { on = ["g", ""], run = "cd --interactive", desc = "Go to a directory interactively" }, + + { on = ["", "j"], run = "shell 'ya pub-to 0 TransferDownload --list \"$@\"'", desc = "Download with transfer.nvim" }, + { on = ["", "k"], run = "shell 'ya pub-to 0 TransferUpload --list \"$@\"'", desc = "Upload with transfer.nvim" }, + { on = ["", "d"], run = ["shell 'ya pub-to 0 DiffRemote --orphan --list \"$@\"'", "quit"], desc = "Diff with transfer.nvim" }, + { on = ["", ""], run = ["shell 'ya pub-to 0 TransferDirDiff --list \"$@\"'"], desc = "Diff directory with transfer.nvim" }, ] [input] From 07305dc89f990e522d2b6a6413299598fd6150cb Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 23 Jul 2025 15:19:41 -0400 Subject: [PATCH 108/152] add task runner --- .../.config/fish/functions/split_run.fish | 38 +++++++++++++++++++ Configs/kitty/.config/kitty/kitty.conf | 2 + Configs/nvim/.config/nvim/lazy-lock.json | 2 + .../nvim/lua/aleidk/plugins/training.lua | 8 ++++ 4 files changed, 50 insertions(+) create mode 100644 Configs/fish/.config/fish/functions/split_run.fish create mode 100644 Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua diff --git a/Configs/fish/.config/fish/functions/split_run.fish b/Configs/fish/.config/fish/functions/split_run.fish new file mode 100644 index 0000000..7b9b42e --- /dev/null +++ b/Configs/fish/.config/fish/functions/split_run.fish @@ -0,0 +1,38 @@ +function split_run + argparse mask r/restart -- $argv + or return + + if not set -qg MPROCS_PORT + set -gx MPROCS_PORT $(random 1024 2048) + kitten @ env "MPROCS_PORT=$MPROCS_PORT" + end + + if set -ql _flag_restart + # Send commands to server + mprocs --server "127.0.0.1:$MPROCS_PORT" --ctl "{c: restart-proc}" + return 0 + end + + + if set -ql _flag_mask + set -l cmd "$(mask --introspect | jq ".commands[] | [.name, .description] | @tsv" -r | fzf --accept-nth=1)" + + if test -z $cmd + return 1 + end + + set -l cmd "mask $cmd" + + # check if server is running + if nc -w 1 -zv 127.0.0.1 $MPROCS_PORT &>/dev/null + mprocs --server "127.0.0.1:$MPROCS_PORT" --ctl "{c: add-proc, cmd: \"$cmd\"}" + mprocs --server "127.0.0.1:$MPROCS_PORT" --ctl "{c: select-proc, index: 0}" + mprocs --server "127.0.0.1:$MPROCS_PORT" --ctl "{c: prev-proc}" + else + # Start server + kitten @ launch --cwd=current --location last --dont-take-focus mprocs --server "127.0.0.1:$MPROCS_PORT" "$cmd" + end + end + + +end diff --git a/Configs/kitty/.config/kitty/kitty.conf b/Configs/kitty/.config/kitty/kitty.conf index ce4f320..77d48f2 100644 --- a/Configs/kitty/.config/kitty/kitty.conf +++ b/Configs/kitty/.config/kitty/kitty.conf @@ -2003,6 +2003,8 @@ map ctrl+space>ctrl+v launch --location=split #:: . map ctrl+space>g launch --cwd=current --type=overlay --var lazy_float=true lazygit +map ctrl+p>ctrl+p launch --cwd=current --type=background fish -c 'split_run --restart' +map ctrl+space>p launch --cwd=current --type=overlay fish -c 'split_run --mask' #: New OS window diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index 3702b64..9fc7452 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -8,11 +8,13 @@ "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, "fzf-lua": { "branch": "main", "commit": "758173f499d15410ecb50c5519a41b27c33e645d" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, + "hardtime.nvim": { "branch": "main", "commit": "3541ad24faff78274669eceaf130502eb7f1261a" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, + "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" }, "nvim-lspconfig": { "branch": "master", "commit": "b8e7957bde4cbb3cb25a13a62548f7c273b026e9" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua new file mode 100644 index 0000000..60e9071 --- /dev/null +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua @@ -0,0 +1,8 @@ +return { + { + "m4xshen/hardtime.nvim", + lazy = false, + dependencies = { "MunifTanjim/nui.nvim" }, + opts = {}, + }, +} From 59656e019f3bff1431f6e72ae3902a8209069e18 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 23 Jul 2025 16:46:44 -0400 Subject: [PATCH 109/152] remove ansible-ls --- Configs/nvim/.config/nvim/lua/aleidk/options.lua | 3 --- .../nvim/.config/nvim/lua/aleidk/plugins/database.lua | 10 +++++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index 1d1c3a9..08b00ec 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -132,8 +132,6 @@ vim.filetype.add({ log = "log", conf = "conf", env = "dotenv", - yml = 'yaml.ansible', - yaml = 'yaml.ansible', }, -- Detect and apply filetypes based on the entire filename filename = { @@ -155,7 +153,6 @@ vim.filetype.add({ -- │ LSP │ -- ╰─────────────────────────────────────────────────────────╯ vim.lsp.enable({ - "ansiblels", "bashls", "lua_ls", "nushell", diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua index 9bf33b6..9a942cb 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua @@ -1,4 +1,4 @@ -return { +return { { "kristijanhusak/vim-dadbod-ui", dependencies = { { "tpope/vim-dadbod", lazy = true }, @@ -18,4 +18,12 @@ return { vim.g.db_ui_use_nerd_fonts = 1 vim.g.db_ui_force_echo_notifications = 1 end, +}, + { + 'davesavic/dadbod-ui-yank', + dependencies = { 'kristijanhusak/vim-dadbod-ui' }, + config = function() + require('dadbod-ui-yank').setup() + end, + } } From 61398a659cbc44739c2b53ea9378782c9894f600 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 24 Jul 2025 10:03:53 -0400 Subject: [PATCH 110/152] fix no statusline in nvim --- Configs/nvim/.config/nvim/init.lua | 2 +- .../nvim/.config/nvim/lua/aleidk/options.lua | 58 +++++++++---------- .../nvim/lua/aleidk/plugins/bookmarks.lua | 1 - .../.config/nvim/lua/aleidk/plugins/debug.lua | 13 +++++ .../.config/nvim/lua/aleidk/plugins/init.lua | 1 - .../.config/nvim/lua/aleidk/plugins/mini.lua | 2 +- 6 files changed, 43 insertions(+), 34 deletions(-) create mode 100644 Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua diff --git a/Configs/nvim/.config/nvim/init.lua b/Configs/nvim/.config/nvim/init.lua index 149787a..ea65040 100644 --- a/Configs/nvim/.config/nvim/init.lua +++ b/Configs/nvim/.config/nvim/init.lua @@ -29,5 +29,5 @@ require("lazy").setup({ -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, -- automatically check for plugin updates --- checker = { enabled = true }, + -- checker = { enabled = true }, }) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index 08b00ec..07f633b 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -13,11 +13,13 @@ vim.schedule(function() vim.opt.clipboard = 'unnamedplus' end) -vim.o.winborder = 'rounded' -opt.breakindent = true -- Every wrapped line will continue visually indented -opt.autowrite = true -- Enable auto write --- opt.completeopt = "menu,menuone,noselect" -vim.o.completeopt = 'noselect,menu,menuone,noinsert,popup' +-- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages +-- vim.o.exrc = true +-- vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. +-- vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } +opt.autowrite = true -- Enable auto write +opt.breakindent = true -- Every wrapped line will continue visually indented +opt.completeopt = "menu,menuone,noselect" opt.conceallevel = 2 -- Hide * markup for bold and italic opt.confirm = true -- Confirm to save changes before exiting modified buffer opt.cursorline = true -- Enable highlighting of the current line @@ -25,40 +27,36 @@ opt.expandtab = true -- Use spaces instead of tabs opt.formatoptions = "jcroqlnt" -- tcqj opt.grepformat = "%f:%l:%c:%m" opt.grepprg = "rg --vimgrep" -opt.ignorecase = true -- Ignore case -opt.inccommand = "nosplit" -- preview incremental substitute -opt.laststatus = 0 -vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. -vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } -opt.mouse = "a" -- Enable mouse mode -opt.number = true -- Print line number +opt.ignorecase = true -- Ignore case +opt.inccommand = 'split' -- Preview substitutions live, as you type! +opt.mouse = "a" -- Enable mouse mode opt.nrformats = 'blank,bin,hex' -opt.pumblend = 10 -- Popup blend -opt.pumheight = 10 -- Maximum number of entries in a popup -opt.relativenumber = true -- Relative line numbers -opt.scrolloff = 15 -- Lines of context +opt.number = true -- Print line number +opt.pumblend = 10 -- Popup blend +opt.pumheight = 10 -- Maximum number of entries in a popup +opt.relativenumber = true -- Relative line numbers +opt.scrolloff = 15 -- Lines of context opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } -opt.shiftround = true -- Round indent -opt.shiftwidth = 2 -- Size of an indent --- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages -opt.showmode = false -- Don't show mode since we have a statusline -opt.sidescrolloff = 8 -- Columns of context -opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time -opt.smartcase = true -- Don't ignore case with capitals -opt.smartindent = true -- Insert indents automatically +opt.shiftround = true -- Round indent +opt.shiftwidth = 2 -- Size of an indent +opt.showmode = false -- Don't show mode since we have a statusline +opt.sidescrolloff = 8 -- Columns of context +opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time +opt.smartcase = true -- Don't ignore case with capitals +opt.smartindent = true -- Insert indents automatically opt.spelllang = { "en" } -opt.splitbelow = true -- Put new windows below current -opt.splitright = true -- Put new windows right of current -opt.tabstop = 2 -- Number of spaces tabs count for -opt.termguicolors = true -- True color support +opt.splitbelow = true -- Put new windows below current +opt.splitright = true -- Put new windows right of current +opt.tabstop = 2 -- Number of spaces tabs count for +opt.termguicolors = true -- True color support opt.undofile = true opt.undolevels = 10000 opt.updatetime = 200 -- Save swap file and trigger CursorHold opt.wildmode = "longest,list:full" -- Command-line completion mode opt.winminwidth = 5 -- Minimum window width opt.wrap = false -- Disable line wrap -opt.inccommand = 'split' -- Preview substitutions live, as you type! --- vim.o.exrc = true +vim.o.completeopt = 'noselect,menu,menuone,noinsert,popup' +vim.o.winborder = 'rounded' vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/bookmarks.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/bookmarks.lua index fe3a1a2..f5e8aee 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/bookmarks.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/bookmarks.lua @@ -13,7 +13,6 @@ return { dependencies = { { "nvim-tree/nvim-web-devicons", lazy = true }, }, - lazy = false, cmd = "Grapple", keys = { { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua new file mode 100644 index 0000000..3dd6907 --- /dev/null +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua @@ -0,0 +1,13 @@ +return { + { + "mfussenegger/nvim-dap", + dependencies = { + { + "igorlfs/nvim-dap-view", + ---@module 'dap-view' + ---@type dapview.Config + opts = {}, + }, + } + } +} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua index beb326c..153e3f6 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua @@ -5,7 +5,6 @@ return { "mason-org/mason.nvim", opts = {} }, - { "nvim-tree/nvim-web-devicons", lazy = true }, { "ckolkey/ts-node-action", dependencies = { "nvim-treesitter" }, diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua index eef25ad..4450c78 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua @@ -22,7 +22,7 @@ return { require('mini.notify').setup() vim.notify = require('mini.notify').make_notify() vim.keymap.set('n', 'un', require('mini.notify').show_history, { desc = 'Show notifications', silent = true }) - require('mini.statusline').setup({}) + require('mini.statusline').setup() require('mini.diff').setup({ view = { style = 'sign' } }) require('mini.git').setup({}) From fbcb8598a26dfc00a0bb9c3b7ec71e760da0907e Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 24 Jul 2025 12:05:16 -0400 Subject: [PATCH 111/152] add debugger to nvim --- Configs/nvim/.config/nvim/lazy-lock.json | 3 + .../nvim/lua/aleidk/plugins/database.lua | 2 +- .../.config/nvim/lua/aleidk/plugins/debug.lua | 64 ++++++++++++++++++- .../.config/nvim/lua/aleidk/plugins/mini.lua | 13 ++++ 4 files changed, 80 insertions(+), 2 deletions(-) diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index 9fc7452..e91621d 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -4,6 +4,7 @@ "catppuccin": { "branch": "main", "commit": "56a9dfd1e05868cf3189369aad87242941396563" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, + "dadbod-ui-yank": { "branch": "master", "commit": "b0fe1062485ce4fd44f4f41a1fe56090e7152843" }, "flatten.nvim": { "branch": "main", "commit": "72527798e75b5e34757491947c2cb853ce21dc0e" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, "fzf-lua": { "branch": "main", "commit": "758173f499d15410ecb50c5519a41b27c33e645d" }, @@ -15,6 +16,8 @@ "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, + "nvim-dap": { "branch": "master", "commit": "5dd4d50f2e6a2eaf9e57fad023d294ef371bda35" }, + "nvim-dap-view": { "branch": "main", "commit": "390dae6bf67f3342ebb481159932ef0fe54822ba" }, "nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" }, "nvim-lspconfig": { "branch": "master", "commit": "b8e7957bde4cbb3cb25a13a62548f7c273b026e9" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua index 9a942cb..8571340 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua @@ -11,7 +11,7 @@ return { { "DBUIFindBuffer", }, keys = { - { "ud", "DBUIToggle", desc = "Toggle DB UI" }, + { "uD", "DBUIToggle", desc = "Toggle DB UI" }, }, init = function() -- Your DBUI configuration diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua index 3dd6907..cc0c78b 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua @@ -6,8 +6,70 @@ return { "igorlfs/nvim-dap-view", ---@module 'dap-view' ---@type dapview.Config - opts = {}, + opts = { + auto_toggle = true, + switchbuf = "useopen,uselast", + winbar = { + sections = { "watches", "scopes", "breakpoints", "repl", "console" }, + controls = { + enabled = true, + }, + }, + windows = { + terminal = { + start_hidden = true, + } + } + }, }, + }, + config = function() + require("dap").adapters.codelldb = { + type = "executable", + command = "codelldb", + } + end, + keys = { + { + "dd", + function() + local dap = require("dap") + if dap.status() == "" then + dap.run_last() + else + dap.restart() + end + end, + desc = "Run last or restart debugger" + }, + { "db", function() require("dap").toggle_breakpoint() end, desc = "Toggle breakpoint" }, + { + "dB", + function() + vim.ui.input({ prompt = "Breakpoint condition: " }, function(input) + require("dap").set_breakpoint(input) + end) + end, + desc = "Conditional Breakpoint", + }, + { "dw", function() require("dap-view").add_expr() end, desc = "Watch expresion under cursor", mode = { "n", "v" } }, + { + "dW", + function() + vim.ui.input({ prompt = "Watch expresion: " }, function(input) + require("dap-view").add_expr(input) + end) + end, + desc = "Watch expression", + }, + { "dj", function() require("dap").step_over() end, desc = "Step over" }, + { "dJ", function() require("dap").continue() end, desc = "Continue" }, + { "dl", function() require("dap").step_into() end, desc = "Step into" }, + { "dk", function() require("dap").step_out() end, desc = "Step out" }, + { "dh", function() require("dap.ui.widgets").hover() end, desc = "Show expresion under cursor" }, + { "dx", function() require("dap").clear_breakpoints() end, desc = "Clear breakpoint" }, + { "dX", function() require("dap").terminate() end, desc = "Terminate" }, + { "ud", function() require("dap-view").toggle(true) end, desc = "Toggle dap-view" }, } } } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua index 4450c78..d9d304b 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua @@ -6,6 +6,14 @@ return { }, config = function() require('mini.icons').setup() + + vim.fn.sign_define("DapBreakpoint", { text = " ", texthl = "DapBreakpoint" }) + vim.fn.sign_define("DapBreakpointCondition", { text = " ", texthl = "DapBreakpointCondition" }) + vim.fn.sign_define("DapBreakpointRejected", { text = " ", texthl = "DapBreakpointRejected" }) + vim.fn.sign_define("DapLogPoint", { text = ".>", texthl = "DapLogPoint" }) + vim.fn.sign_define("DapStopped", { text = "󰁕 ", texthl = "DapStopped", numhl = "debugPC" }) + + require('mini.bracketed').setup({ diagnostic = { options = { severity = vim.diagnostic.severity.ERROR } }, }) @@ -139,6 +147,11 @@ return { { mode = "n", keys = "b", desc = "+Buffers" }, { mode = "n", keys = "bh", postkeys = "b" }, { mode = "n", keys = "bl", postkeys = "b" }, + { mode = "n", keys = "d", desc = "+Debugger" }, + { mode = "n", keys = "dh", postkeys = "d" }, + { mode = "n", keys = "dj", postkeys = "d" }, + { mode = "n", keys = "dk", postkeys = "d" }, + { mode = "n", keys = "dl", postkeys = "d" }, { mode = "n", keys = "f", desc = "+Find" }, { mode = "n", keys = "g", desc = "+Git" }, { mode = "n", keys = "l", desc = "+LSP" }, From 766c50a845f413a6f5ffb2d9281393c889c02994 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 24 Jul 2025 13:16:35 -0400 Subject: [PATCH 112/152] add rust plugin to nvim --- .../nvim/.config/nvim/after/ftplugin/rust.lua | 35 +++++++++++++++++++ Configs/nvim/.config/nvim/lazy-lock.json | 3 ++ .../nvim/.config/nvim/lua/aleidk/keymaps.lua | 8 ++++- .../nvim/.config/nvim/lua/aleidk/options.lua | 14 +++++++- .../.config/nvim/lua/aleidk/plugins/debug.lua | 27 ++++++++++++-- .../.config/nvim/lua/aleidk/plugins/init.lua | 12 ------- .../lua/aleidk/plugins/language-support.lua | 24 +++++++++++++ .../.config/nvim/lua/aleidk/plugins/mini.lua | 1 + 8 files changed, 108 insertions(+), 16 deletions(-) create mode 100644 Configs/nvim/.config/nvim/after/ftplugin/rust.lua create mode 100644 Configs/nvim/.config/nvim/lua/aleidk/plugins/language-support.lua diff --git a/Configs/nvim/.config/nvim/after/ftplugin/rust.lua b/Configs/nvim/.config/nvim/after/ftplugin/rust.lua new file mode 100644 index 0000000..e23cef2 --- /dev/null +++ b/Configs/nvim/.config/nvim/after/ftplugin/rust.lua @@ -0,0 +1,35 @@ +local rust = vim.cmd.RustLsp + +-- Override some LSP mappings + +local function opts(desc) + return { + silent = true, + buffer = vim.api.nvim_get_current_buf(), + desc = desc + } +end + +vim.keymap.set("n", "la", function() rust('codeAction') end, opts("Code action")) +vim.keymap.set("n", "lj", function() rust({ 'renderDiagnostic', "cycle" }) end, opts("Next diagnostic")) +vim.keymap.set("n", "lk", function() rust({ 'renderDiagnostic', "cycle_prev" }) end, opts("Prev diagnostic")) +vim.keymap.set("n", "ld", function() rust({ 'renderDiagnostic', "current" }) end, opts("Current diagnostic")) +vim.keymap.set("n", "K", function() rust({ 'hover', 'actions' }) end, opts("Lsp hover")) +vim.keymap.set("n", "J", function() rust("joinLines") end, opts("Keep cursor in column while joining lines")) +vim.keymap.set("v", "J", function() rust({ "moveItem", "down" }) end, opts("Move line down")) +vim.keymap.set("v", "K", function() rust({ "moveItem", "up" }) end, opts("Move line up")) + + +vim.keymap.set("n", "lq", function() + vim.ui.select({ + { label = "Expand macro", cmd = { "expandMacro", } }, + { label = "Explain error under cursor", cmd = { "explainError", "current" } }, + { label = "Go to related diagnostic", cmd = { "relatedDiagnostics", } }, + { label = "Open cargo.toml", cmd = { "openCargo", } }, + { label = "Open docs.rs of symbol", cmd = { "openDocs", } }, + { label = "Go to parent module", cmd = { "parentModule", } }, + }, { prompt = "RustLsp: ", format_item = function(item) return item.label end }, function(opt) + if opt == nil then return end + rust(opt.cmd) + end) +end, opts("Execute RustLsp action")) diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index e91621d..5b65762 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -18,6 +18,7 @@ "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nvim-dap": { "branch": "master", "commit": "5dd4d50f2e6a2eaf9e57fad023d294ef371bda35" }, "nvim-dap-view": { "branch": "main", "commit": "390dae6bf67f3342ebb481159932ef0fe54822ba" }, + "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, "nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" }, "nvim-lspconfig": { "branch": "master", "commit": "b8e7957bde4cbb3cb25a13a62548f7c273b026e9" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, @@ -26,10 +27,12 @@ "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "render-markdown": { "branch": "main", "commit": "4a39681990fb515d00dd898de3d7bf2973805f1a" }, + "rustaceanvim": { "branch": "master", "commit": "66398662c07d265b226897500ed50eafba3dffb4" }, "smart-splits.nvim": { "branch": "master", "commit": "5ef94ca23b28148187846fc46f10184aad4d17b0" }, "transfer.nvim": { "branch": "main", "commit": "ab12253c09f83a5b0b6ee108fc131be45abe446a" }, "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, + "typescript-tools.nvim": { "branch": "master", "commit": "3c501d7c7f79457932a8750a2a1476a004c5c1a9" }, "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, "vim-dadbod-ui": { "branch": "master", "commit": "2900a1617b3df1a48683d872eadbe1101146a49a" }, diff --git a/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua b/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua index f7a3019..5be823b 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua @@ -31,4 +31,10 @@ vim.keymap.set("n", "", "j", { desc = "Move to bottom window", silent vim.keymap.set("n", "", "k", { desc = "Move to top window", silent = true }) vim.keymap.set("n", "", "l", { desc = "Move to right window", silent = true }) --- stylua: ignore end +-- LSP + +vim.keymap.set("n", "lf", vim.lsp.buf.format, { desc = "Format document with LSP", silent = true }) +vim.keymap.set("n", "lj", function() vim.diagnostic.jump({ count = 1 }) end, + { desc = "Go to next diagnostic", silent = true }) +vim.keymap.set("n", "lk", function() vim.diagnostic.jump({ count = -1 }) end, + { desc = "Go to next diagnostic", silent = true }) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index 07f633b..e5eec57 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -150,15 +150,27 @@ vim.filetype.add({ -- ╭─────────────────────────────────────────────────────────╮ -- │ LSP │ -- ╰─────────────────────────────────────────────────────────╯ + +vim.lsp.config("rust-analyzer", { + tools = { + code_actions = { + ui_select_fallback = true + } + } +}) + vim.lsp.enable({ "bashls", + "biome", "lua_ls", "nushell", "pyright", "ruff", - "rust_analyzer", + -- "rust_analyzer", -- managed by rustacean.nvim }) +vim.lsp.inlay_hint.enable(true) + vim.diagnostic.config({ virtual_lines = { current_line = true }, }) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua index cc0c78b..1e4764c 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua @@ -24,10 +24,22 @@ return { }, }, config = function() - require("dap").adapters.codelldb = { + local dap = require("dap") + + dap.adapters.codelldb = { type = "executable", command = "codelldb", } + + dap.listeners.before['event_initialized']['toggle_lsp_virtual_text'] = function() + vim.lsp.inlay_hint.enable(false) + end + + dap.listeners.after['event_terminated']['toggle_lsp_virtual_text'] = function() + vim.lsp.inlay_hint.enable(true) + end + + require("nvim-dap-virtual-text").setup() end, keys = { { @@ -71,5 +83,16 @@ return { { "dX", function() require("dap").terminate() end, desc = "Terminate" }, { "ud", function() require("dap-view").toggle(true) end, desc = "Toggle dap-view" }, } - } + }, + { + "theHamsta/nvim-dap-virtual-text", + dependencies = { "mfussenegger/nvim-dap", "nvim-treesitter/nvim-treesitter" }, + config = function() + require('nvim-dap-virtual-text').setup({ + only_first_definition = false, + all_references = true, + virt_text_pos = "eol", + }) + end + }, } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua index 153e3f6..948f2b3 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua @@ -13,18 +13,6 @@ return { { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } } }, - { - -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins - -- used for completion, annotations and signatures of Neovim apis - 'folke/lazydev.nvim', - ft = 'lua', - opts = { - library = { - -- Load luvit types when the `vim.uv` word is found - { path = "${3rd}/luv/library", words = { "vim%.uv" } } - }, - }, - }, { -- allow to reuse the same nvim instance when opening files in the same terminal context "willothy/flatten.nvim", diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/language-support.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/language-support.lua new file mode 100644 index 0000000..c47309b --- /dev/null +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/language-support.lua @@ -0,0 +1,24 @@ +return { + { + 'mrcjkb/rustaceanvim', + version = '^6', -- Recommended + lazy = false, -- This plugin is already lazy + }, + { + -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins + -- used for completion, annotations and signatures of Neovim apis + 'folke/lazydev.nvim', + ft = 'lua', + opts = { + library = { + -- Load luvit types when the `vim.uv` word is found + { path = "${3rd}/luv/library", words = { "vim%.uv" } } + }, + }, + }, + { + "pmizio/typescript-tools.nvim", + dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, + opts = {}, + } +} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua index d9d304b..7a7ab66 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua @@ -149,6 +149,7 @@ return { { mode = "n", keys = "bl", postkeys = "b" }, { mode = "n", keys = "d", desc = "+Debugger" }, { mode = "n", keys = "dh", postkeys = "d" }, + { mode = "n", keys = "dJ", postkeys = "d" }, { mode = "n", keys = "dj", postkeys = "d" }, { mode = "n", keys = "dk", postkeys = "d" }, { mode = "n", keys = "dl", postkeys = "d" }, From f7a3f90e8c6c0b5e24e25c6183065a78fae006ea Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 25 Jul 2025 13:09:53 -0400 Subject: [PATCH 113/152] minor update --- Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua index 60e9071..6eb3bfc 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua @@ -3,6 +3,12 @@ return { "m4xshen/hardtime.nvim", lazy = false, dependencies = { "MunifTanjim/nui.nvim" }, - opts = {}, + keys = { + { "uH", "Hardtime toggle", desc = "Toggle hardtime" } + }, + opts = { + max_count = 10, + disable_mouse = false, + }, }, } From 6b6c6e5a0b81dae46e0bf15a827f131292309717 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 28 Jul 2025 09:03:15 -0400 Subject: [PATCH 114/152] minor update --- Configs/fish/.config/fish/fish_variables | 3 +- Configs/nvim/.config/nvim/lazy-lock.json | 32 ++++++++----------- .../nvim/lua/aleidk/plugins/database.lua | 29 ----------------- .../nvim/lua/aleidk/plugins/file-explorer.lua | 10 ++++++ .../.config/nvim/lua/aleidk/plugins/mini.lua | 5 ++- .../nvim/lua/aleidk/plugins/remote-dev.lua | 5 +-- 6 files changed, 33 insertions(+), 51 deletions(-) delete mode 100644 Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua diff --git a/Configs/fish/.config/fish/fish_variables b/Configs/fish/.config/fish/fish_variables index c6de14c..85d7434 100644 --- a/Configs/fish/.config/fish/fish_variables +++ b/Configs/fish/.config/fish/fish_variables @@ -2,8 +2,9 @@ # VERSION: 3.0 SETUVAR __fish_initialized:3800 SETUVAR _fisher_catppuccin_2F_fish_files:\x7e/\x2econfig/fish/themes/Catppuccin\x20Frappe\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Latte\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Macchiato\x2etheme\x1e\x7e/\x2econfig/fish/themes/Catppuccin\x20Mocha\x2etheme +SETUVAR _fisher_jorgebucaran_2F_autopair_2E_fish_files:\x7e/\x2econfig/fish/functions/_autopair_backspace\x2efish\x1e\x7e/\x2econfig/fish/functions/_autopair_insert_left\x2efish\x1e\x7e/\x2econfig/fish/functions/_autopair_insert_right\x2efish\x1e\x7e/\x2econfig/fish/functions/_autopair_insert_same\x2efish\x1e\x7e/\x2econfig/fish/functions/_autopair_tab\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/autopair\x2efish SETUVAR _fisher_jorgebucaran_2F_fisher_files:\x7e/\x2econfig/fish/functions/fisher\x2efish\x1e\x7e/\x2econfig/fish/completions/fisher\x2efish -SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ecatppuccin/fish\x1epure\x2dfish/pure +SETUVAR _fisher_plugins:jorgebucaran/fisher\x1ecatppuccin/fish\x1epure\x2dfish/pure\x1ejorgebucaran/autopair\x2efish SETUVAR _fisher_pure_2D_fish_2F_pure_files:\x7e/\x2econfig/fish/functions/_pure_check_availability\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_check_for_new_release\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_detect_container_by_cgroup_method\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_detect_container_by_pid_method\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_format_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_get_prompt_symbol\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_is_inside_container\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_is_single_line_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_k8s_context\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_k8s_namespace\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_parse_directory\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_parse_git_branch\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_place_iterm2_prompt_mark\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prefix_root_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_print_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_print_prompt_rows\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_aws_profile\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_beginning\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_command_duration\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_container\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_current_folder\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_ending\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_first_line\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_branch\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_dirty\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_pending_commits\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_git_stash\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_jobs\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_k8s\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_new_line\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_nixdevshell\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_ssh\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_symbol\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_system_time\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_vimode\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_prompt_virtualenv\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_set_color\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_set_default\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_string_width\x2efish\x1e\x7e/\x2econfig/fish/functions/_pure_user_at_host\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_greeting\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_mode_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_prompt\x2efish\x1e\x7e/\x2econfig/fish/functions/fish_title\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/_pure_init\x2efish\x1e\x7e/\x2econfig/fish/conf\x2ed/pure\x2efish SETUVAR _fisher_upgraded_to_4_4:\x1d SETUVAR fish_color_autosuggestion:6e738d diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index 5b65762..c3f7882 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -1,41 +1,37 @@ { - "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, + "blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" }, "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, - "catppuccin": { "branch": "main", "commit": "56a9dfd1e05868cf3189369aad87242941396563" }, + "catppuccin": { "branch": "main", "commit": "e762a47478377612e59f01aa51db961f605c9aa4" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, - "dadbod-ui-yank": { "branch": "master", "commit": "b0fe1062485ce4fd44f4f41a1fe56090e7152843" }, + "conform.nvim": { "branch": "master", "commit": "973f3cb73887d510321653044791d7937c7ec0fa" }, "flatten.nvim": { "branch": "main", "commit": "72527798e75b5e34757491947c2cb853ce21dc0e" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "fzf-lua": { "branch": "main", "commit": "758173f499d15410ecb50c5519a41b27c33e645d" }, + "fzf-lua": { "branch": "main", "commit": "f22460450543aa773638135d6aa46c60ab92da99" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, "hardtime.nvim": { "branch": "main", "commit": "3541ad24faff78274669eceaf130502eb7f1261a" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, - "mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" }, + "mason.nvim": { "branch": "main", "commit": "197f6352c276bbc2d25541dfce00ec50d1a4e88f" }, "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nvim-dap": { "branch": "master", "commit": "5dd4d50f2e6a2eaf9e57fad023d294ef371bda35" }, - "nvim-dap-view": { "branch": "main", "commit": "390dae6bf67f3342ebb481159932ef0fe54822ba" }, + "nvim-dap-view": { "branch": "main", "commit": "c7385808c7d6a4438f6eef50d539d7103146ba2b" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, - "nvim-lint": { "branch": "master", "commit": "b47cbb249351873e3a571751c3fb66ed6369852f" }, - "nvim-lspconfig": { "branch": "master", "commit": "b8e7957bde4cbb3cb25a13a62548f7c273b026e9" }, + "nvim-lint": { "branch": "master", "commit": "9c6207559297b24f0b7c32829f8e45f7d65b991f" }, + "nvim-lspconfig": { "branch": "master", "commit": "4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-context": { "branch": "master", "commit": "ebee603a25f785872c49a226aa9c6e325785122a" }, + "nvim-treesitter-context": { "branch": "master", "commit": "59f318a65d42a5c4037796886a8874fd57f774fc" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, - "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, + "nvim-web-devicons": { "branch": "master", "commit": "0422a19d9aa3aad2c7e5cca167e5407b13407a9d" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "render-markdown": { "branch": "main", "commit": "4a39681990fb515d00dd898de3d7bf2973805f1a" }, + "render-markdown": { "branch": "main", "commit": "5c0e241bdbd208b7ae546009378d6bc93c083ef3" }, "rustaceanvim": { "branch": "master", "commit": "66398662c07d265b226897500ed50eafba3dffb4" }, - "smart-splits.nvim": { "branch": "master", "commit": "5ef94ca23b28148187846fc46f10184aad4d17b0" }, + "smart-splits.nvim": { "branch": "master", "commit": "825073e87de5fae98b0c107917e15977d100323b" }, "transfer.nvim": { "branch": "main", "commit": "ab12253c09f83a5b0b6ee108fc131be45abe446a" }, "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, - "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, + "ts-node-action": { "branch": "master", "commit": "b0850ecd82a508ad846ba250ea13485b0e13321e" }, "typescript-tools.nvim": { "branch": "master", "commit": "3c501d7c7f79457932a8750a2a1476a004c5c1a9" }, - "vim-dadbod": { "branch": "master", "commit": "e95afed23712f969f83b4857a24cf9d59114c2e6" }, - "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, - "vim-dadbod-ui": { "branch": "master", "commit": "2900a1617b3df1a48683d872eadbe1101146a49a" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "yazi.nvim": { "branch": "main", "commit": "59c22d1a8bcb3d00a7115ef7f2d59b90cf989ab3" } + "yazi.nvim": { "branch": "main", "commit": "6e4e9f0353f94ca4965c20dfc2690fb0d21730f0" } } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua deleted file mode 100644 index 8571340..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/database.lua +++ /dev/null @@ -1,29 +0,0 @@ -return { { - "kristijanhusak/vim-dadbod-ui", - dependencies = { - { "tpope/vim-dadbod", lazy = true }, - { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, - }, - cmd = { - "DBUI", - "DBUIToggle", - "DBUIAddConnection", - "DBUIFindBuffer", - }, - keys = { - { "uD", "DBUIToggle", desc = "Toggle DB UI" }, - }, - init = function() - -- Your DBUI configuration - vim.g.db_ui_use_nerd_fonts = 1 - vim.g.db_ui_force_echo_notifications = 1 - end, -}, - { - 'davesavic/dadbod-ui-yank', - dependencies = { 'kristijanhusak/vim-dadbod-ui' }, - config = function() - require('dadbod-ui-yank').setup() - end, - } -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua index 1078202..8631829 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua @@ -1,5 +1,15 @@ return { "mikavilpas/yazi.nvim", + event = "VeryLazy", + dependencies = { + { "nvim-lua/plenary.nvim", lazy = true }, + }, + -- 👇 if you use `open_for_directories=true`, this is recommended + init = function() + -- More details: https://github.com/mikavilpas/yazi.nvim/issues/802 + -- vim.g.loaded_netrw = 1 + vim.g.loaded_netrwPlugin = 1 + end, keys = { { "e", diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua index 7a7ab66..7c8dca1 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua @@ -23,7 +23,10 @@ return { require('mini.jump').setup() -- Extend f, F, t, T require('mini.surround').setup() require('mini.operators').setup() - require('mini.pairs').setup() + require('mini.pairs').setup({ + modes = { command = true } + }) + require('mini.splitjoin').setup() require("mini.align").setup({}) -- require('mini.animate').setup() diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua index 12d86b0..56774f8 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua @@ -1,7 +1,6 @@ return { { "coffebar/transfer.nvim", - lazy = true, cmd = { "TransferInit", "DiffRemote", "TransferUpload", "TransferDownload", "TransferDirDiff", "TransferRepeat" }, opts = {}, keys = { @@ -14,7 +13,9 @@ return { { "xd", function() vim.cmd("DiffRemote") end, desc = "Diff current file with transfer.nvim" }, { "xD", function() vim.cmd("TransferDirDiff " .. vim.uv.cwd()) end, desc = "Diff root dir with transfer.nvim" }, }, - init = function() + config = function(_, opts) + require("transfer").setup(opts) + require("yazi").config.forwarded_dds_events = { "TransferUpload", "TransferDownload", From 8ade0b6795b8ee223b338dd97d68aeeaac8f8223 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 28 Jul 2025 10:48:02 -0400 Subject: [PATCH 115/152] add mise config --- .../fish/.config/fish/completions/mise.fish | 17 + Configs/fish/.config/fish/config.fish | 3 + Configs/lazygit/.config/lazygit/config.yml | 929 +++++++++--------- Configs/mise/.config/mise/config.toml | 51 +- Configs/mise/.config/mise/mise.lock | 0 5 files changed, 531 insertions(+), 469 deletions(-) create mode 100644 Configs/fish/.config/fish/completions/mise.fish create mode 100644 Configs/mise/.config/mise/mise.lock diff --git a/Configs/fish/.config/fish/completions/mise.fish b/Configs/fish/.config/fish/completions/mise.fish new file mode 100644 index 0000000..9b7072e --- /dev/null +++ b/Configs/fish/.config/fish/completions/mise.fish @@ -0,0 +1,17 @@ +# if "usage" is not installed show an error +if ! command -v usage &> /dev/null + echo >&2 + echo "Error: usage CLI not found. This is required for completions to work in mise." >&2 + echo "See https://usage.jdx.dev for more information." >&2 + return 1 +end + +if ! set -q _usage_spec_mise_2025_7_29 + set -g _usage_spec_mise_2025_7_29 (mise usage | string collect) +end +set -l tokens +if commandline -x >/dev/null 2>&1 + complete -xc mise -a '(usage complete-word --shell fish -s "$_usage_spec_mise_2025_7_29" -- (commandline -xpc) (commandline -t))' +else + complete -xc mise -a '(usage complete-word --shell fish -s "$_usage_spec_mise_2025_7_29" -- (commandline -opc) (commandline -t))' +end diff --git a/Configs/fish/.config/fish/config.fish b/Configs/fish/.config/fish/config.fish index 2627b13..b6bd022 100644 --- a/Configs/fish/.config/fish/config.fish +++ b/Configs/fish/.config/fish/config.fish @@ -4,4 +4,7 @@ if status is-interactive # Commands to run in interactive sessions can go here zoxide init --cmd cd fish | source atuin init fish | source + + mise activate fish | source end + diff --git a/Configs/lazygit/.config/lazygit/config.yml b/Configs/lazygit/.config/lazygit/config.yml index 04dc579..d596e42 100644 --- a/Configs/lazygit/.config/lazygit/config.yml +++ b/Configs/lazygit/.config/lazygit/config.yml @@ -1,304 +1,303 @@ # Config relating to the Lazygit UI gui: - # The number of lines you scroll by when scrolling the main window - scrollHeight: 2 - # If true, allow scrolling past the bottom of the content in the main window - scrollPastBottom: true - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin - scrollOffMargin: 2 - # One of: 'margin' (default) | 'jump' - scrollOffBehavior: margin - # If true, capture mouse events. - # When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS. - mouseEvents: true - # If true, do not show a warning when discarding changes in the staging view. - skipDiscardChangeWarning: false - # If true, do not show warning when applying/popping the stash - skipStashWarning: false - # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. - skipNoStagedFilesWarning: false - # If true, do not show a warning when rewording a commit via an external editor - skipRewordInEditorWarning: false - # Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section. - # Number from 0 to 1.0. - sidePanelWidth: 0.3333 - # If true, increase the height of the focused side window; creating an accordion effect. - expandFocusedSidePanel: false - # The weight of the expanded side panel, relative to the other panels. 2 means - # twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true. - expandedSidePanelWeight: 2 - # Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split. - # Options are: - # - 'horizontal': split the window horizontally - # - 'vertical': split the window vertically - # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically - mainPanelSplitMode: flexible - # How the window is split when in half screen mode (i.e. after hitting '+' once). - # Possible values: - # - 'left': split the window horizontally (side panel on the left, main view on the right) - # - 'top': split the window vertically (side panel on top, main view below) - enlargedSideViewLocation: left - # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' - language: auto - # Format used when displaying time e.g. commit time. - # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format - timeFormat: 02 Jan 06 - # Format used when displaying time if the time is less than 24 hours ago. - # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format - shortTimeFormat: 3:04PM - # Config relating to colors and styles. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes - theme: - activeBorderColor: - - '#8bd5ca' - - bold - inactiveBorderColor: - - '#a5adcb' - optionsTextColor: - - '#8aadf4' - selectedLineBgColor: - - '#363a4f' - cherryPickedCommitBgColor: - - '#494d64' - cherryPickedCommitFgColor: - - '#8bd5ca' - unstagedChangesColor: - - '#ed8796' - defaultFgColor: - - '#cad3f5' - searchingActiveBorderColor: - - '#eed49f' - # Background color of selected line when view doesn't have focus. - inactiveViewSelectedLineBgColor: - - bold - # Foreground color of marked base commit (for rebase) - markedBaseCommitFgColor: - - blue - # Background color of marked base commit (for rebase) - markedBaseCommitBgColor: - - yellow - authorColors: - '*': '#b7bdf8' - # Config relating to the commit length indicator - commitLength: - # If true, show an indicator of commit message length - show: true - # If true, show the '5 of 20' footer at the bottom of list views - showListFooter: true - # If true, display the files in the file views as a tree. If false, display the files as a flat list. - # This can be toggled from within Lazygit with the '~' key, but that will not change the default. - showFileTree: true - # If true, show a random tip in the command log when Lazygit starts - showRandomTip: true - # If true, show the command log - showCommandLog: true - # If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action. - showBottomLine: true - # If true, show jump-to-window keybindings in window titles. - showPanelJumps: true - # Deprecated: use nerdFontsVersion instead - showIcons: false - # Nerd fonts version to use. - # One of: '2' | '3' | empty string (default) - # If empty, do not show icons. - nerdFontsVersion: "3" - # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. - showFileIcons: true - # Length of author name in (non-expanded) commits view. 2 means show initials only. - commitAuthorShortLength: 2 - # Length of author name in expanded commits view. 2 means show initials only. - commitAuthorLongLength: 17 - # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. - commitHashLength: 8 - # If true, show commit hashes alongside branch names in the branches view. - showBranchCommitHash: false - # Whether to show the divergence from the base branch in the branches view. - # One of: 'none' | 'onlyArrow' | 'arrowAndNumber' - showDivergenceFromBaseBranch: none - # Height of the command log view - commandLogSize: 8 - # Whether to split the main window when viewing file changes. - # One of: 'auto' | 'always' - # If 'auto', only split the main window when a file has both staged and unstaged changes - splitDiff: auto - # Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default). - # One of: 'normal' (default) | 'half' | 'full' - screenMode: normal - # Window border style. - # One of 'rounded' (default) | 'single' | 'double' | 'hidden' - border: rounded - # If true, show a seriously epic explosion animation when nuking the working tree. - animateExplosion: true - # Whether to stack UI components on top of each other. - # One of 'auto' (default) | 'always' | 'never' - portraitMode: auto - # How things are filtered when typing '/'. - # One of 'substring' (default) | 'fuzzy' - filterMode: fuzzy - # Config relating to the spinner. - spinner: - # The frames of the spinner animation. - frames: - - '|' - - / - - '-' - - \ - # The "speed" of the spinner in milliseconds. - rate: 50 - # Status panel view. - # One of 'dashboard' (default) | 'allBranchesLog' - statusPanelView: dashboard - # If true, jump to the Files panel after popping a stash - switchToFilesAfterStashPop: true - # If true, jump to the Files panel after applying a stash - switchToFilesAfterStashApply: true + # The number of lines you scroll by when scrolling the main window + scrollHeight: 2 + # If true, allow scrolling past the bottom of the content in the main window + scrollPastBottom: true + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin + scrollOffMargin: 2 + # One of: 'margin' (default) | 'jump' + scrollOffBehavior: margin + # If true, capture mouse events. + # When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS. + mouseEvents: true + # If true, do not show a warning when discarding changes in the staging view. + skipDiscardChangeWarning: false + # If true, do not show warning when applying/popping the stash + skipStashWarning: false + # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. + skipNoStagedFilesWarning: false + # If true, do not show a warning when rewording a commit via an external editor + skipRewordInEditorWarning: false + # Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section. + # Number from 0 to 1.0. + sidePanelWidth: 0.3333 + # If true, increase the height of the focused side window; creating an accordion effect. + expandFocusedSidePanel: false + # The weight of the expanded side panel, relative to the other panels. 2 means + # twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true. + expandedSidePanelWeight: 2 + # Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split. + # Options are: + # - 'horizontal': split the window horizontally + # - 'vertical': split the window vertically + # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically + mainPanelSplitMode: flexible + # How the window is split when in half screen mode (i.e. after hitting '+' once). + # Possible values: + # - 'left': split the window horizontally (side panel on the left, main view on the right) + # - 'top': split the window vertically (side panel on top, main view below) + enlargedSideViewLocation: left + # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' + language: auto + # Format used when displaying time e.g. commit time. + # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format + timeFormat: 02 Jan 06 + # Format used when displaying time if the time is less than 24 hours ago. + # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format + shortTimeFormat: 3:04PM + # Config relating to colors and styles. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes + theme: + activeBorderColor: + - '#8bd5ca' + - bold + inactiveBorderColor: + - '#a5adcb' + optionsTextColor: + - '#8aadf4' + selectedLineBgColor: + - '#363a4f' + cherryPickedCommitBgColor: + - '#494d64' + cherryPickedCommitFgColor: + - '#8bd5ca' + unstagedChangesColor: + - '#ed8796' + defaultFgColor: + - '#cad3f5' + searchingActiveBorderColor: + - '#eed49f' + # Background color of selected line when view doesn't have focus. + inactiveViewSelectedLineBgColor: + - bold + # Foreground color of marked base commit (for rebase) + markedBaseCommitFgColor: + - blue + # Background color of marked base commit (for rebase) + markedBaseCommitBgColor: + - yellow + authorColors: + '*': '#b7bdf8' + # Config relating to the commit length indicator + commitLength: + # If true, show an indicator of commit message length + show: true + # If true, show the '5 of 20' footer at the bottom of list views + showListFooter: true + # If true, display the files in the file views as a tree. If false, display the files as a flat list. + # This can be toggled from within Lazygit with the '~' key, but that will not change the default. + showFileTree: true + # If true, show a random tip in the command log when Lazygit starts + showRandomTip: true + # If true, show the command log + showCommandLog: true + # If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action. + showBottomLine: true + # If true, show jump-to-window keybindings in window titles. + showPanelJumps: true + # Deprecated: use nerdFontsVersion instead + showIcons: false + # Nerd fonts version to use. + # One of: '2' | '3' | empty string (default) + # If empty, do not show icons. + nerdFontsVersion: "3" + # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. + showFileIcons: true + # Length of author name in (non-expanded) commits view. 2 means show initials only. + commitAuthorShortLength: 2 + # Length of author name in expanded commits view. 2 means show initials only. + commitAuthorLongLength: 17 + # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. + commitHashLength: 8 + # If true, show commit hashes alongside branch names in the branches view. + showBranchCommitHash: false + # Whether to show the divergence from the base branch in the branches view. + # One of: 'none' | 'onlyArrow' | 'arrowAndNumber' + showDivergenceFromBaseBranch: none + # Height of the command log view + commandLogSize: 8 + # Whether to split the main window when viewing file changes. + # One of: 'auto' | 'always' + # If 'auto', only split the main window when a file has both staged and unstaged changes + splitDiff: auto + # Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default). + # One of: 'normal' (default) | 'half' | 'full' + screenMode: normal + # Window border style. + # One of 'rounded' (default) | 'single' | 'double' | 'hidden' + border: rounded + # If true, show a seriously epic explosion animation when nuking the working tree. + animateExplosion: true + # Whether to stack UI components on top of each other. + # One of 'auto' (default) | 'always' | 'never' + portraitMode: auto + # How things are filtered when typing '/'. + # One of 'substring' (default) | 'fuzzy' + filterMode: fuzzy + # Config relating to the spinner. + spinner: + # The frames of the spinner animation. + frames: + - '|' + - / + - '-' + - \ + # The "speed" of the spinner in milliseconds. + rate: 50 + # Status panel view. + # One of 'dashboard' (default) | 'allBranchesLog' + statusPanelView: dashboard + # If true, jump to the Files panel after popping a stash + switchToFilesAfterStashPop: true + # If true, jump to the Files panel after applying a stash + switchToFilesAfterStashApply: true # Config relating to git git: - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md - paging: - # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never' - colorArg: always - # e.g. - # diff-so-fancy - # delta --dark --paging=never - # ydiff -p cat -s --wrap --width={{columnWidth}} - pager: "" - # If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager). - useConfig: true - # e.g. 'difft --color=always' - externalDiffCommand: "" - # Config relating to committing - commit: - # If true, pass '--signoff' flag when committing - signOff: false - # Automatic WYSIWYG wrapping of the commit message as you type - autoWrapCommitMessage: true - # If autoWrapCommitMessage is true, the width to wrap to - autoWrapWidth: 72 - # Config relating to merging - merging: - # If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang - # Only applicable to unix users. - manualCommit: false - # Extra args passed to `git merge`, e.g. --no-ff - args: "" - # The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders. - squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}} - # list of branches that are considered 'main' branches, used when displaying commits - mainBranches: - - master - - main - # Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP' - skipHookPrefix: WIP - # If true, periodically fetch from remote - autoFetch: true - # If true, periodically refresh files and submodules - autoRefresh: true - # If true, pass the --all arg to git fetch - fetchAll: true - # If true, lazygit will automatically stage files that used to have merge - # conflicts but no longer do; and it will also ask you if you want to - # continue a merge or rebase if you've resolved all conflicts. If false, it - # won't do either of these things. - autoStageResolvedConflicts: true - # Command used when displaying the current branch git log in the main window - branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} -- - # Command used to display git log of all branches in the main window. - # Deprecated: User `allBranchesLogCmds` instead. - allBranchesLogCmd: git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium - # If true, do not spawn a separate process when using GPG - overrideGpg: false - # If true, do not allow force pushes - disableForcePushing: false - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix - # commitPrefix: - # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" - # pattern: "" + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md + paging: + # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never' + colorArg: always + # e.g. + # diff-so-fancy + # delta --dark --paging=never + # ydiff -p cat -s --wrap --width={{columnWidth}} + pager: "" + # If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager). + useConfig: true + # e.g. 'difft --color=always' + externalDiffCommand: "" + # Config relating to committing + commit: + # If true, pass '--signoff' flag when committing + signOff: false + # Automatic WYSIWYG wrapping of the commit message as you type + autoWrapCommitMessage: true + # If autoWrapCommitMessage is true, the width to wrap to + autoWrapWidth: 72 + # Config relating to merging + merging: + # If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang + # Only applicable to unix users. + manualCommit: false + # Extra args passed to `git merge`, e.g. --no-ff + args: "" + # The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders. + squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}} + # list of branches that are considered 'main' branches, used when displaying commits + mainBranches: + - master + - main + # Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP' + skipHookPrefix: WIP + # If true, periodically fetch from remote + autoFetch: true + # If true, periodically refresh files and submodules + autoRefresh: true + # If true, pass the --all arg to git fetch + fetchAll: true + # If true, lazygit will automatically stage files that used to have merge + # conflicts but no longer do; and it will also ask you if you want to + # continue a merge or rebase if you've resolved all conflicts. If false, it + # won't do either of these things. + autoStageResolvedConflicts: true + # Command used when displaying the current branch git log in the main window + branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} -- + # If true, do not spawn a separate process when using GPG + overrideGpg: false + # If true, do not allow force pushes + disableForcePushing: false + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix + # commitPrefix: + # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" + # pattern: "" - # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " - # replace: "" + # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " + # replace: "" - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix - branchPrefix: "" - # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 - # (This should really be under 'gui', not 'git') - parseEmoji: true - # Config for showing the log in the commits view - log: - # One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default' - # 'topo-order' makes it easier to read the git log graph, but commits may not - # appear chronologically. See https://git-scm.com/docs/ - # - # Deprecated: Configure this with `Log menu -> Commit sort order` ( in the commits window by default). - order: topo-order - # This determines whether the git graph is rendered in the commits panel - # One of 'always' | 'never' | 'when-maximised' - # - # Deprecated: Configure this with `Log menu -> Show git graph` ( in the commits window by default). - showGraph: always - # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) - showWholeGraph: false - # When copying commit hashes to the clipboard, truncate them to this - # length. Set to 40 to disable truncation. - truncateCopiedCommitHashesTo: 12 + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix + branchPrefix: "" + # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 + # (This should really be under 'gui', not 'git') + parseEmoji: true + # Config for showing the log in the commits view + log: + # One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default' + # 'topo-order' makes it easier to read the git log graph, but commits may not + # appear chronologically. See https://git-scm.com/docs/ + # + # Deprecated: Configure this with `Log menu -> Commit sort order` ( in the commits window by default). + order: topo-order + # This determines whether the git graph is rendered in the commits panel + # One of 'always' | 'never' | 'when-maximised' + # + # Deprecated: Configure this with `Log menu -> Show git graph` ( in the commits window by default). + showGraph: always + # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) + showWholeGraph: false + # When copying commit hashes to the clipboard, truncate them to this + # length. Set to 40 to disable truncation. + truncateCopiedCommitHashesTo: 12 + allBranchesLogCmds: + - git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium # Periodic update checks update: - # One of: 'prompt' (default) | 'background' | 'never' - method: prompt - # Period in days between update checks - days: 14 + # One of: 'prompt' (default) | 'background' | 'never' + method: prompt + # Period in days between update checks + days: 14 # Background refreshes refresher: - # File/submodule refresh interval in seconds. - # Auto-refresh can be disabled via option 'git.autoRefresh'. - refreshInterval: 10 - # Re-fetch interval in seconds. - # Auto-fetch can be disabled via option 'git.autoFetch'. - fetchInterval: 60 + # File/submodule refresh interval in seconds. + # Auto-refresh can be disabled via option 'git.autoRefresh'. + refreshInterval: 10 + # Re-fetch interval in seconds. + # Auto-fetch can be disabled via option 'git.autoFetch'. + fetchInterval: 60 # If true, show a confirmation popup before quitting Lazygit confirmOnQuit: false # If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close quitOnTopLevelReturn: true # Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc os: - # Command for editing a file. Should contain "{{filename}}". - edit: "nvim -- {{filename}} && kitten @ close-window -m var:lazy_float=true --ignore-no-match" - # Command for editing a file at a given line number. Should contain - # "{{filename}}", and may optionally contain "{{line}}". - editAtLine: "nvim +{{line}} -- {{filename}} && kitten @ close-window -m var:lazy_float=true --ignore-no-match" - # Same as EditAtLine, except that the command needs to wait until the - # window is closed. - editAtLineAndWait: "" - # For opening a directory in an editor - openDirInEditor: "" - # A built-in preset that sets all of the above settings. Supported presets - # are defined in the getPreset function in editor_presets.go. - editPreset: "nvim" - # Command for opening a file, as if the file is double-clicked. Should - # contain "{{filename}}", but doesn't support "{{line}}". - open: "xdg-open {{filename}} >/dev/null" - # Command for opening a link. Should contain "{{link}}". - openLink: "" - # EditCommand is the command for editing a file. - # Deprecated: use Edit instead. Note that semantics are different: - # EditCommand is just the command itself, whereas Edit contains a - # "{{filename}}" variable. - editCommand: "" - # EditCommandTemplate is the command template for editing a file - # Deprecated: use EditAtLine instead. - editCommandTemplate: "" - # OpenCommand is the command for opening a file - # Deprecated: use Open instead. - openCommand: "" - # OpenLinkCommand is the command for opening a link - # Deprecated: use OpenLink instead. - openLinkCommand: "" - # CopyToClipboardCmd is the command for copying to clipboard. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard - copyToClipboardCmd: "" - # ReadFromClipboardCmd is the command for reading the clipboard. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard - readFromClipboardCmd: "" + # Command for editing a file. Should contain "{{filename}}". + edit: "nvim -- {{filename}} && kitten @ close-window -m var:lazy_float=true --ignore-no-match" + # Command for editing a file at a given line number. Should contain + # "{{filename}}", and may optionally contain "{{line}}". + editAtLine: "nvim +{{line}} -- {{filename}} && kitten @ close-window -m var:lazy_float=true --ignore-no-match" + # Same as EditAtLine, except that the command needs to wait until the + # window is closed. + editAtLineAndWait: "" + # For opening a directory in an editor + openDirInEditor: "" + # A built-in preset that sets all of the above settings. Supported presets + # are defined in the getPreset function in editor_presets.go. + editPreset: "nvim" + # Command for opening a file, as if the file is double-clicked. Should + # contain "{{filename}}", but doesn't support "{{line}}". + open: "xdg-open {{filename}} >/dev/null" + # Command for opening a link. Should contain "{{link}}". + openLink: "" + # EditCommand is the command for editing a file. + # Deprecated: use Edit instead. Note that semantics are different: + # EditCommand is just the command itself, whereas Edit contains a + # "{{filename}}" variable. + editCommand: "" + # EditCommandTemplate is the command template for editing a file + # Deprecated: use EditAtLine instead. + editCommandTemplate: "" + # OpenCommand is the command for opening a file + # Deprecated: use Open instead. + openCommand: "" + # OpenLinkCommand is the command for opening a link + # Deprecated: use OpenLink instead. + openLinkCommand: "" + # CopyToClipboardCmd is the command for copying to clipboard. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard + copyToClipboardCmd: "" + # ReadFromClipboardCmd is the command for reading the clipboard. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard + readFromClipboardCmd: "" # If true, don't display introductory popups upon opening Lazygit. disableStartupPopups: false # What to do when opening Lazygit outside of a git repo. @@ -311,185 +310,185 @@ notARepository: quit promptToReturnFromSubprocess: false # Keybindings keybinding: - universal: - quit: q - quit-alt1: - return: - quitWithoutChangingDirectory: Q - togglePanel: - prevItem: - nextItem: - prevItem-alt: k - nextItem-alt: j - prevPage: ',' - nextPage: . - scrollLeft: H - scrollRight: L - gotoTop: < - gotoBottom: '>' - toggleRangeSelect: v - rangeSelectDown: - rangeSelectUp: - prevBlock: - nextBlock: - prevBlock-alt: h - nextBlock-alt: l - nextBlock-alt2: - prevBlock-alt2: - jumpToBlock: - - "1" - - "2" - - "3" - - "4" - - "5" - nextMatch: "n" - prevMatch: "N" - startSearch: / - optionMenu: - optionMenu-alt1: '?' - select: - goInto: - confirm: - confirmInEditor: - remove: d - new: "n" - edit: e - openFile: o - scrollUpMain: - scrollDownMain: - scrollUpMain-alt1: K - scrollDownMain-alt1: J - 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: _ - undo: z - redo: - 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: i - refreshFiles: r - stashAllChanges: s - viewStashOptions: S - toggleStagedAll: a - viewResetOptions: D - fetch: f - toggleTreeView: '`' - openMergeTool: M - openStatusFilter: - copyFileInfoToClipboard: "y" - branches: - createPullRequest: o - viewPullRequestOptions: O - copyPullRequestURL: - checkoutBranchByName: c - forceCheckoutBranch: F - rebaseBranch: r - renameBranch: R - mergeIntoCurrentBranch: M - viewGitFlowOptions: i - fastForward: f - createTag: T - pushTag: P - setUpstream: u - fetchRemote: f - sortOrder: s - worktrees: - viewWorktreeOptions: w - commits: - squashDown: s - renameCommit: r - renameCommitWithEditor: R - viewResetOptions: g - markCommitAsFixup: f - 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: i - amendAttribute: - resetAuthor: a - setAuthor: A - addCoAuthor: c - stash: - popStash: g - renameStash: r - commitFiles: - checkoutCommitFile: c - main: - toggleSelectHunk: a - pickBothHunks: b - editSelectHunk: E - submodules: - init: i - update: u - bulkMenu: b - commitMessage: - commitMenu: + universal: + quit: q + quit-alt1: + return: + quitWithoutChangingDirectory: Q + togglePanel: + prevItem: + nextItem: + prevItem-alt: k + nextItem-alt: j + prevPage: ',' + nextPage: . + scrollLeft: H + scrollRight: L + gotoTop: < + gotoBottom: '>' + toggleRangeSelect: v + rangeSelectDown: + rangeSelectUp: + prevBlock: + nextBlock: + prevBlock-alt: h + nextBlock-alt: l + nextBlock-alt2: + prevBlock-alt2: + jumpToBlock: + - "1" + - "2" + - "3" + - "4" + - "5" + nextMatch: "n" + prevMatch: "N" + startSearch: / + optionMenu: + optionMenu-alt1: '?' + select: + goInto: + confirm: + confirmInEditor: + remove: d + new: "n" + edit: e + openFile: o + scrollUpMain: + scrollDownMain: + scrollUpMain-alt1: K + scrollDownMain-alt1: J + 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: _ + undo: z + redo: + 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: i + refreshFiles: r + stashAllChanges: s + viewStashOptions: S + toggleStagedAll: a + viewResetOptions: D + fetch: f + toggleTreeView: '`' + openMergeTool: M + openStatusFilter: + copyFileInfoToClipboard: "y" + branches: + createPullRequest: o + viewPullRequestOptions: O + copyPullRequestURL: + checkoutBranchByName: c + forceCheckoutBranch: F + rebaseBranch: r + renameBranch: R + mergeIntoCurrentBranch: M + viewGitFlowOptions: i + fastForward: f + createTag: T + pushTag: P + setUpstream: u + fetchRemote: f + sortOrder: s + worktrees: + viewWorktreeOptions: w + commits: + squashDown: s + renameCommit: r + renameCommitWithEditor: R + viewResetOptions: g + markCommitAsFixup: f + 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: i + amendAttribute: + resetAuthor: a + setAuthor: A + addCoAuthor: c + stash: + popStash: g + renameStash: r + commitFiles: + checkoutCommitFile: c + main: + toggleSelectHunk: a + pickBothHunks: b + editSelectHunk: E + submodules: + init: i + update: u + bulkMenu: b + commitMessage: + commitMenu: customCommands: - - key: "C" - command: 'cog commit "{{ .Form.Type }} {{ .Form.Description }}" {{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}' - description: "Commit with cocogitto" - context: "files" - prompts: - - type: "menuFromCommand" - title: "Select the commit type" - key: "Type" - command: > - bash -c "cog commit --help | sed -n 's/.*\\[possible values: \\(.*\\)\\].*/\\1/p' | tr ', ' '\\n' | sed '/^$/d' | sort" + - key: "C" + command: 'cog commit "{{ .Form.Type }} {{ .Form.Description }}" {{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}' + description: "Commit with cocogitto" + context: "files" + prompts: + - type: "menuFromCommand" + title: "Select the commit type" + key: "Type" + command: > + bash -c "cog commit --help | sed -n 's/.*\\[possible values: \\(.*\\)\\].*/\\1/p' | tr ', ' '\\n' | sed '/^$/d' | sort" - - type: "input" - title: "Enter the scope(s) of this change" - key: "Scopes" - - type: "input" - title: "Enter a short description of the change" - key: "Description" - - type: "confirm" - title: "Is the commit message correct?" - body: "{{ .Form.Type }}{{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}: {{ .Form.Description }}" + - type: "input" + title: "Enter the scope(s) of this change" + key: "Scopes" + - type: "input" + title: "Enter a short description of the change" + key: "Description" + - type: "confirm" + title: "Is the commit message correct?" + body: "{{ .Form.Type }}{{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}: {{ .Form.Description }}" diff --git a/Configs/mise/.config/mise/config.toml b/Configs/mise/.config/mise/config.toml index 33a93e4..72c5554 100644 --- a/Configs/mise/.config/mise/config.toml +++ b/Configs/mise/.config/mise/config.toml @@ -1,11 +1,54 @@ [tools] + +# ── Languages ───────────────────────────────────────────────────────── + node = 'lts' # python = {version='3', virtualenv='.venv'} -python = {version='3'} # setting virtualenv adds a virtualenv in every directory +python = { version = '3' } # setting virtualenv adds a virtualenv in every directory # php = "8.2" go = "latest" +tree-sitter = "latest" +uv = "latest" + +# cargo-binstall = "latest" + +# ── Formatters and linters ──────────────────────────────────────────── + +# Biome = "latest" +# gitleaks = "latest" +# ruff = "latest" +# shellcheck = "latest" +# markdownlint-cli2 = "latest" +# stylua = "latest" +# pint = "latest" +# shfmt = "latest" +# taplo = "latest" + +# ── CLI Tools ───────────────────────────────────────────────────────── + +age = "latest" +agebox = "latest" + +bat = "latest" +duf = "latest" +dust = "latest" +eza = "latest" +fd = "latest" +fzf = "latest" +jq = "latest" +lazygit = "latest" +lazyjournal = "latest" +sops = "latest" +usage = "latest" +yazi = "latest" +zoxide = "latest" + [settings] -[alias.node] -my_custom_node = '20' # makes `rtx install node@my_custom_node` install node-20.x - # this can also be specified in a plugin (see below in "Aliases") +lockfile = true +experimental = true +idiomatic_version_file_enable_tools = ["python"] + +[settings.python] +uv_venv_auto = true +uv_venv_create_args = ['--seed'] diff --git a/Configs/mise/.config/mise/mise.lock b/Configs/mise/.config/mise/mise.lock new file mode 100644 index 0000000..e69de29 From 5a1d24ae0daab8f9912532f9bef290ef4c736101 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 30 Jul 2025 15:35:09 -0400 Subject: [PATCH 116/152] update movement in nvim --- Configs/nvim/.config/nvim/lazy-lock.json | 1 + .../nvim/lua/aleidk/plugins/colorscheme.lua | 5 ++ .../.config/nvim/lua/aleidk/plugins/fzf.lua | 12 +++- .../.config/nvim/lua/aleidk/plugins/mini.lua | 19 +++++- .../nvim/lua/aleidk/plugins/treesitter.lua | 60 ++++++++++++++----- 5 files changed, 80 insertions(+), 17 deletions(-) diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index c3f7882..faa70a2 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -22,6 +22,7 @@ "nvim-lspconfig": { "branch": "master", "commit": "4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-treesitter-context": { "branch": "master", "commit": "59f318a65d42a5c4037796886a8874fd57f774fc" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, "nvim-web-devicons": { "branch": "master", "commit": "0422a19d9aa3aad2c7e5cca167e5407b13407a9d" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/colorscheme.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/colorscheme.lua index 2eef16c..2237d69 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/colorscheme.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/colorscheme.lua @@ -51,6 +51,11 @@ return { -- Change colors.none if not using a transparent background style = { "bold" }, }, GitSignsDeleteVirtLn = { bg = colors.none, fg = colors.red }, + + MiniJump2dDim = { fg = colors.surface1 }, + MiniJump2dSpot = { bg = colors.base, fg = colors.teal, style = { "bold", "underline" } }, + MiniJump2dSpotAhead = { bg = colors.base, fg = colors.teal, style = { "bold", "underline" } }, + MiniJump2dSpotUnique = { bg = colors.base, fg = colors.teal, style = { "bold", "underline" } }, } end, } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/fzf.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/fzf.lua index a5d3db3..c1549ed 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/fzf.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/fzf.lua @@ -3,7 +3,17 @@ return { lazy = false, -- Required to register vim.ui.select() wrapper dependencies = { "echasnovski/mini.nvim" }, config = function() - require("fzf-lua").setup() + require("fzf-lua").setup({ + winopts = { + height = 0.85, + width = 0.90, + }, + files = { + -- path_shorten = true, + cwd_prompt = false, + -- formatter = "path.filename_first", + }, + }) require("fzf-lua").register_ui_select() end, keys = { diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua index 7c8dca1..9c3b80f 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua @@ -20,7 +20,24 @@ return { require("mini.ai").setup({}) require('mini.cursorword').setup() -- Highlight word under cursor require('mini.extra').setup() - require('mini.jump').setup() -- Extend f, F, t, T + require('mini.jump').setup({ + mappings = { + repeat_jump = "" + } + }) -- Extend f, F, t, T + require('mini.jump2d').setup( + { + spotter = require('mini.jump2d').gen_pattern_spotter('[^%s%p]+', 'start'), + view = { + dim = true, + n_steps_ahead = 2 + }, + allowed_lines = { + blank = false, + cursor_at = false + }, + } + ) require('mini.surround').setup() require('mini.operators').setup() require('mini.pairs').setup({ diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua index fe93165..65a0450 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua @@ -1,20 +1,50 @@ return { - "nvim-treesitter/nvim-treesitter", - lazy = false, - branch = "master", - dependencies = { - { - "JoosepAlviste/nvim-ts-context-commentstring", - opts = { - enable_autocmd = false, + { + "nvim-treesitter/nvim-treesitter", + lazy = false, + branch = "master", + dependencies = { + { + "JoosepAlviste/nvim-ts-context-commentstring", + opts = { + enable_autocmd = false, + }, }, + { "nvim-treesitter/nvim-treesitter-context" }, + }, + build = ":TSUpdate", + opts = { + auto_install = true, + highlight = { enable = true }, + indent = { enable = true }, }, - { "nvim-treesitter/nvim-treesitter-context" }, - }, - build = ":TSUpdate", - opts = { - auto_install = true, - highlight = { enable = true }, - indent = { enable = true }, }, + { + "nvim-treesitter/nvim-treesitter-textobjects", + dependencies = { "nvim-treesitter", }, + config = function() + require 'nvim-treesitter.configs'.setup({ + textobjects = { + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next = { + ["]]"] = { query = { "@block.outer", "@function.outer", "@class.outer", } }, + }, + goto_previous = { + ["[["] = { query = { "@block.outer", "@function.outer", "@class.outer", } }, + } + }, + }, + }) + + local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move" + + -- Repeat movement with ; and , + -- ensure ; goes forward and , goes backward regardless of the last direction + vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_previous) + vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_next) + end + } + } From 19cbbb9fa89c1d21a2ed801dca1c251e9ec54bd7 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 30 Jul 2025 18:49:39 -0400 Subject: [PATCH 117/152] update hyprland config --- Configs/bash/.bash_profile | 2 + Configs/bash/.bashrc | 13 +- .../.config/fish/completions/fish-lsp.fish | 331 ++++++++++++++++++ Configs/fish/.config/fish/conf.d/uv.env.fish | 2 + Configs/fish/.config/fish/config.fish | 2 - Configs/fish/.config/fish/fish_variables | 1 + Configs/fish/.config/fish/functions/curl.fish | 19 + Configs/hypr/.config/hypr/hyprland.conf | 47 ++- Configs/nvim/.config/nvim/lazy-lock.json | 42 +-- .../nvim/.config/nvim/lua/aleidk/options.lua | 2 + .../nvim/lua/aleidk/plugins/completion.lua | 1 - Configs/uwsm/.config/uwsm/env | 4 + Configs/waybar/.config/waybar/config.jsonc | 2 +- Configs/waybar/.config/waybar/style.css | 11 +- Configs/wlogout/.config/wlogout/layout | 4 +- Configs/wpaperd/.config/wpaperd/config.toml | 9 +- Configs/zsh/.zshrc | 4 +- 17 files changed, 432 insertions(+), 64 deletions(-) create mode 100644 Configs/fish/.config/fish/completions/fish-lsp.fish create mode 100644 Configs/fish/.config/fish/conf.d/uv.env.fish create mode 100644 Configs/fish/.config/fish/functions/curl.fish create mode 100644 Configs/uwsm/.config/uwsm/env diff --git a/Configs/bash/.bash_profile b/Configs/bash/.bash_profile index 287b4fc..87c43fa 100644 --- a/Configs/bash/.bash_profile +++ b/Configs/bash/.bash_profile @@ -40,3 +40,5 @@ update_path "$HOME/.cargo/bin/" if [ -f ~/.bashrc ]; then . ~/.bashrc fi + +. "$HOME/.local/share/../bin/env" diff --git a/Configs/bash/.bashrc b/Configs/bash/.bashrc index 6cd3f11..ff5d68d 100644 --- a/Configs/bash/.bashrc +++ b/Configs/bash/.bashrc @@ -2,12 +2,7 @@ # │ Auto drop into fish only on login │ # ╰──────────────────────────────────────────────────────────╯ -if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && ${SHLVL} == 1 ]]; then - shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION='' - exec fish $LOGIN_OPTION -fi - -. "$HOME/.atuin/bin/env" - -[[ -f ~/.bash-preexec.sh ]] && source ~/.bash-preexec.sh -eval "$(atuin init bash)" +# if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && ${SHLVL} == 1 ]]; then +# shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION='' +# exec fish $LOGIN_OPTION +# fi diff --git a/Configs/fish/.config/fish/completions/fish-lsp.fish b/Configs/fish/.config/fish/completions/fish-lsp.fish new file mode 100644 index 0000000..28713a9 --- /dev/null +++ b/Configs/fish/.config/fish/completions/fish-lsp.fish @@ -0,0 +1,331 @@ +# +# AUTO GENERATED BY 'fish-lsp' +# +# * Any command should generate the completions file +# +# >_ fish-lsp complete > ~/.config/fish/completions/fish-lsp.fish +# >_ fish-lsp complete > $fish_complete_path[1]/fish-lsp.fish +# >_ yarn install && yarn dev # from inside the '~/path/to/fish-lsp' source code +# +# * You can test the completions by editing: +# +# ~/.config/fish/completions/fish-lsp.fish +# +# or by using the command: +# +# >_ fish-lsp complete +# +# to visually check what is wrong +# +# * To interactively test the completions, you can use: +# +# >_ complete -c fish-lsp -e # erase all fish-lsp completions +# >_ fish-lsp complete | source +# +# * For more info, try editing the generated output inside: +# +# ~/...install_path.../fish-lsp/src/utils/get-lsp-completions.ts +# +# * You can see if the completions are up to date by running the command: +# +# >_ fish-lsp info --check-health +# +# REPO URL: https://github.com/ndonfris/fish-lsp + + +############################################# +# helper functions for fish-lsp completions # +############################################# + +# print all unique `fish-lsp start --enable|--disable ...` features (i.e., complete, hover, etc.) +# if a feature is already specified in the command line, it will be skipped +# the features can also be used in the global environment variables `fish_lsp_enabled_handlers` or `fish_lsp_disabled_handlers` +function __fish_lsp_get_features -d 'print all features controlled by the server, not yet used in the commandline' + set -l all_features 'complete' 'hover' 'rename' 'definition' 'implementation' 'reference' 'formatting' 'formatRange' 'typeFormatting' 'codeAction' 'codeLens' 'folding' 'signature' 'executeCommand' 'inlayHint' 'highlight' 'diagnostic' 'popups' + set -l features_to_complete + set -l features_to_skip + set -l opts (commandline -opc) + for opt in $opts + if contains -- $opt $all_features + set features_to_skip $features_to_skip $opt + end + end + for feature in $all_features + if not contains -- $feature $features_to_skip + printf '%b\t%s\n' $feature "$feature handler" + end + end +end + +# print all unique 'fish-lsp env --only ...` env_variables (i.e., $fish_lsp_*, ...) +# if a env_variable is already specified in the command line, it will not be included again +function __fish_lsp_get_env_variables -d 'print all fish_lsp_* env variables, not yet used in the commandline' + # every env variable name + set -l env_names "fish_lsp_enabled_handlers" \ + "fish_lsp_disabled_handlers" \ + "fish_lsp_commit_characters" \ + "fish_lsp_log_file" \ + "fish_lsp_log_level" \ + "fish_lsp_all_indexed_paths" \ + "fish_lsp_modifiable_paths" \ + "fish_lsp_diagnostic_disable_error_codes" \ + "fish_lsp_enable_experimental_diagnostics" \ + "fish_lsp_max_background_files" \ + "fish_lsp_show_client_popups" \ + "fish_lsp_single_workspace_support" + + # every completion argument `name\t'description'`, only unused env variables will be printed + set -l env_names_with_descriptions "fish_lsp_enabled_handlers\t'server handlers to enable'" \ + "fish_lsp_disabled_handlers\t'server handlers to disable'" \ + "fish_lsp_commit_characters\t'commit characters that select completion items'" \ + "fish_lsp_log_file\t'path to the fish-lsp's log file'" \ + "fish_lsp_log_level\t'minimum log level to include in the log file'" \ + "fish_lsp_all_indexed_paths\t'directories that the server should always index on startup'" \ + "fish_lsp_modifiable_paths\t'indexed paths that can be modified'" \ + "fish_lsp_diagnostic_disable_error_codes\t'diagnostic codes to disable'" \ + "fish_lsp_enable_experimental_diagnostics\t'enable fish-lsp's experimental diagnostics'" \ + "fish_lsp_max_background_files\t'maximum number of files to analyze in the background on startup'" \ + "fish_lsp_show_client_popups\t'send `connection/window/*` requests in the server'" \ + "fish_lsp_single_workspace_support\t'limit workspace searching to only the current workspace'" + + # get the current command line token (for comma separated options) + set -l current (commandline -ct) + + # utility function to check if the current token contains a comma + function has_comma --inherit-variable current --description 'check if the current token contains a comma' + string match -rq '.*,.*' -- $current || string match -rq -- '--only=.*' $current + return $status + end + + # get the current command line options, adding the current token if it contains a comma + set -l opts (commandline -opc) + has_comma && set -a opts $current + + # create two arrays, one for the env variables already used, and the other + # for all the arguments passed into the commandline + set -l features_to_skip + set -l fixed_opts + + # split any comma separated options + for opt in $opts + if string match -rq -- '--only=.*' $opt + set -a fixed_opts '--only' (string split -m1 -f2 -- '--only=' $opt | string split ',') + else if string match -q '*,*' -- $opt + set fixed_opts $fixed_opts (string split ',' -- $opt) + else + set fixed_opts $fixed_opts $opt + end + end + + # skip any env variable that is already specified in the command line + for opt in $fixed_opts + if contains -- $opt $env_names + set -a features_to_skip $opt + end + end + + # if using the `--only=` syntax, remove the `--only` part. + # when entries are separated by commas, we need to keep the current token's prefix comma + # in the completion output + set prefix '' + if has_comma + set prefix (string replace -r '[^,]*$' '' -- $current | string replace -r -- '^--only=' '') + end + + # print the completions that haven't been used yet + for line in $env_names_with_descriptions + set name (string split -f1 -m1 '\t' -- $line) + if not contains -- $name $features_to_skip + echo -e "$prefix$line" + end + end +end + +# check for usage of the main switches in env command `fish-lsp env --show|--create|--show-default|--names` +# +# requires passing in one of switches: `--none` or `--any` +# - `--none` check that none of the main switches are used +# - `--any` check that a main switch has been seen +# - `--no-names` check that the `--names` switch is not used, but needs to be +# paired with `--none` or `--any` +# +# used in the `env` completions, for grouping repeated logic on those +# completions conditional checks. +# +# ``` +# complete -n '__fish_lsp_env_main_switch --none' +# ``` +function __fish_lsp_env_main_switch --description 'check if the commandline contains any of the main env switches (--show|--create|--show-default|--names)' + argparse any none no-names names-joined -- $argv + or return 1 + + # none means we don't want to see any of the main switches + # no-names doesn't change anything here, since we are making sure that + # names already doesn't exist in the command line + if set -ql _flag_none + not __fish_contains_opt names + and not __fish_contains_opt -s s show + and not __fish_contains_opt -s c create + and not __fish_contains_opt show-default + return $status + end + + # any means that one of the main switches has been used. + if set -ql _flag_any + if set -ql _flag_no_names + __fish_contains_opt names + and return 1 + end + not set -ql _flag_no_names && __fish_contains_opt names + or __fish_contains_opt -s s show + or __fish_contains_opt -s c create + or __fish_contains_opt show-default + return $status + end + + # names joined means that both the --names and --joined switches are used + if set -ql _flag_names_joined + __fish_contains_opt names + and not __fish_contains_opt -s j joined + and return $status + end + # if no switches are found, return 1 + return 1 +end + + + +# make sure `fish-lsp start --stdio|--node-ipc|--socket` is used singularly +# and not in combination with any other connection related option +function __fish_lsp_start_connection_opts -d 'check if any option (--stdio|--node-ipc|--socket) is used' + __fish_contains_opt stdio || __fish_contains_opt node-ipc || __fish_contains_opt socket +end + +# check if the last `fish-lsp start ...` flag/switch is `--enable` or `--disable` +# this will find the last `-*` argument in the command line, skipping any argument not starting with `-` +# and make sure it matches any of the provided `$argv` passed in to the function (defaulting to: `--enable` `--disable`) +# we use this to allow multiple sequential features to follow `fish-lsp start --enable|--disable ...` +# USAGE: +# > `fish-lsp --stdio --start complete hover --disable codeAction highlight formatting ` +# `__fish_lsp_last_switch --enable --disable ` would return 0 since `--disable` is the last switch +function __fish_lsp_last_switch -d 'check if the last argument w/ a leading `-` matches any $argv' + set -l opts (commandline -opc) + set -l last_opt + for opt in $opts + switch $opt + case '-*' + set last_opt $opt + case '*' + continue + end + end + set -l match_opts $argv + if test (count $argv) -eq 0 + set match_opts '--enable' '--disable' + end + for switch in $match_opts + if test "$last_opt" = "$switch" + return 0 + end + end + return 1 +end + +############################### +### END OF HELPER FUNCTIONS ### +############################### + +## disable file completions +complete -c fish-lsp -f + +## fish-lsp +complete -c fish-lsp -n "__fish_is_first_arg; and __fish_complete_subcommand" -k -a " +start\t'start the lsp' +info\t'show info about the fish-lsp' +url\t'show helpful url(s) related to the fish-lsp' +complete\t'generate fish shell completions' +env\t'generate environment variables for lsp configuration'" + +## `fish-lsp -` +complete -c fish-lsp -n 'not __fish_use_subcommand; and __fish_is_first_arg; and not __fish_contains_opt -s v version' -s v -l version -d 'Show lsp version' +complete -c fish-lsp -n 'not __fish_use_subcommand; and __fish_is_first_arg; and not __fish_contains_opt -s h help' -s h -l help -d 'Show help information' +complete -c fish-lsp -n 'not __fish_use_subcommand; and __fish_is_first_arg; and not __fish_contains_opt help-all' -l help-all -d 'Show all help information' +complete -c fish-lsp -n 'not __fish_use_subcommand; and __fish_is_first_arg; and not __fish_contains_opt help-short' -l help-short -d 'Show short help information' +complete -c fish-lsp -n 'not __fish_use_subcommand; and __fish_is_first_arg; and not __fish_contains_opt help-man' -l help-man -d 'Show raw manpage' + +## `fish-lsp start --` +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_contains_opt dump' -l dump -d 'stop lsp & show the startup options being read' +complete -c fish-lsp -n '__fish_seen_subcommand_from start' -l enable -d 'enable the startup option' -xa '(__fish_lsp_get_features)' +complete -c fish-lsp -n '__fish_seen_subcommand_from start' -l disable -d 'disable the startup option' -xa '(__fish_lsp_get_features)' +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and __fish_lsp_last_switch --disable --enable' -a '(__fish_lsp_get_features)' # allow completing multiple features in a row (when last seen switch is either: `--enable|--disable`) +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_lsp_start_connection_opts' -l stdio -d 'use stdin/stdout for communication (default)' +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_lsp_start_connection_opts' -l node-ipc -d 'use node IPC for communication' +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_lsp_start_connection_opts' -l socket -d 'use TCP socket for communication' -x +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_contains_opt memory-limit' -l memory-limit -d 'set memory usage limit in MB' -x +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and not __fish_contains_opt max-files' -l max-files -d 'override the maximum number of files to analyze' -xa '(echo 100; echo 500; seq 1000 500 10000)' +complete -c fish-lsp -n '__fish_seen_subcommand_from start; and test (commandline -opc)[-1] = "--max-files"' -a '(echo 100; echo 500; seq 1000 500 10000)' -d 'override the maximum number of files to analyze' + +## fish-lsp url -- +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt repo' -l repo -d 'show git repo url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt git' -l git -d 'show git repo url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt npm' -l npm -d 'show npmjs.com url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt homepage' -l homepage -d 'show website url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt contributing' -l contributing -d 'show git CONTRIBUTING.md url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt wiki' -l wiki -d 'show git wiki url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt issues' -l issues -d 'show git issues url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt report' -l report -d 'show git issues url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt discussions' -l discussions -d 'show git discussions url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt clients-repo' -l clients-repo -d 'show git clients-repo url' +complete -c fish-lsp -n '__fish_seen_subcommand_from url; and not __fish_contains_opt sources' -l sources -d 'show useful url list of sources' + +## fish-lsp complete -- +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt fish' -l fish -d 'DEFAULT BEHAVIOR: show output for completion/fish-lsp.fish' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt names' -l names -d 'show names of subcommands' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt names-with-summary' -l names-with-summary -d 'show `name\tsummary\n` of subcommands' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt features' -l features -d 'show feature/toggle names' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt toggles' -l toggles -d 'show feature/toggle names' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt env-variables' -l env-variables -d 'show env variable completions' +complete -c fish-lsp -n '__fish_seen_subcommand_from complete; and not __fish_contains_opt env-variable-names' -l env-variable-names -d 'show env variable names' + +## fish-lsp info -- +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt bin' -l bin -d 'show the binary path' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt repo' -l repo -d 'show the repo path' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt build-time' -l build-time -d 'show the build-time' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt lsp-version' -l lsp-version -d 'show the npm package for the lsp-version' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt capabilities' -l capabilities -d 'show the lsp capabilities implemented' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt man-file' -l man-file -d 'show man file path' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt log-file' -l log-file -d 'show log file path' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt more' -l more -d 'show more info' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt time-startup' -l time-startup -d 'show startup timing info' +complete -c fish-lsp -n '__fish_seen_subcommand_from info; and not __fish_contains_opt check-health' -l check-health -d 'show the server health' + +## fish-lsp env -- +# fish-lsp env +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none; and __fish_complete_subcommand --fcs-skip=2' -kra " +--show-default\t'show the default values for fish-lsp env variables' +-c\t'create the env variables' +--create\t'create the env variables' +-s\t'show the current fish-lsp env variables with their values' +--show\t'show the current fish-lsp env variables with their values' +--names\t'output only the names of the env variables'" +# main switches (first arguments after the `env` subcommand) +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none' -l show-default -d 'show the default values for fish-lsp env variables' -k +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none' -s c -l create -d 'build initial fish-lsp env variables' -k +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none' -s s -l show -d 'show the current fish-lsp env variables' -k +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --none' -l names -d 'output only the names of the env variables' -k +# --only switch +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any' -l only -d 'show only certain env variables' -xa '(__fish_lsp_get_env_variables)' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_last_switch --only' -xa '(__fish_lsp_get_env_variables)' +# switches usable after the main switches +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names; and not __fish_contains_opt no-comments' -l no-comments -d 'skip outputting comments' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names; and not __fish_contains_opt no-global' -l no-global -d 'use local exports' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names; and not __fish_contains_opt no-local' -l no-local -d 'do not use local scope (pair with --no-global)' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names; and not __fish_contains_opt no-export' -l no-export -d 'do not export variables' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --any --no-names; and not __fish_contains_opt confd' -l confd -d 'output for redirect to "conf.d/fish-lsp.fish"' +complete -c fish-lsp -n '__fish_seen_subcommand_from env; and __fish_lsp_env_main_switch --names-joined; and not __fish_contains_opt joined' -l joined -d 'output the names in a single line' + + +# built by any of the commands: +# fish-lsp complete > ~/.config/fish/completions/fish-lsp.fish +# fish-lsp complete > $fish_complete_path[1]/fish-lsp.fish +# fish-lsp complete > $__fish_config_dir/completions/fish-lsp.fish diff --git a/Configs/fish/.config/fish/conf.d/uv.env.fish b/Configs/fish/.config/fish/conf.d/uv.env.fish new file mode 100644 index 0000000..d97734b --- /dev/null +++ b/Configs/fish/.config/fish/conf.d/uv.env.fish @@ -0,0 +1,2 @@ + +source "$HOME/.local/share/../bin/env.fish" diff --git a/Configs/fish/.config/fish/config.fish b/Configs/fish/.config/fish/config.fish index b6bd022..cbde320 100644 --- a/Configs/fish/.config/fish/config.fish +++ b/Configs/fish/.config/fish/config.fish @@ -1,5 +1,3 @@ -. ~/.cargo/env.fish - if status is-interactive # Commands to run in interactive sessions can go here zoxide init --cmd cd fish | source diff --git a/Configs/fish/.config/fish/fish_variables b/Configs/fish/.config/fish/fish_variables index 85d7434..53cbe7a 100644 --- a/Configs/fish/.config/fish/fish_variables +++ b/Configs/fish/.config/fish/fish_variables @@ -47,6 +47,7 @@ SETUVAR fish_pager_color_selected_background:\x1d SETUVAR fish_pager_color_selected_completion:\x1d SETUVAR fish_pager_color_selected_description:\x1d SETUVAR fish_pager_color_selected_prefix:\x1d +SETUVAR fish_user_paths:/usr/local/sbin\x1e/usr/local/bin\x1e/usr/bin\x1e/var/lib/flatpak/exports/bin\x1e/home/aleidk/\x2elocal/bin SETUVAR pure_begin_prompt_with_current_directory:true SETUVAR pure_check_for_new_release:false SETUVAR pure_color_at_sign:pure_color_mute diff --git a/Configs/fish/.config/fish/functions/curl.fish b/Configs/fish/.config/fish/functions/curl.fish new file mode 100644 index 0000000..bd18505 --- /dev/null +++ b/Configs/fish/.config/fish/functions/curl.fish @@ -0,0 +1,19 @@ +function http --argument-names method url --description "Curl wrapper with cache options" + + argparse h/help c/cache '#cache_time' -- $argv + or return + + # If -h or --help is given, we print a little help text and return + if set -ql _flag_help + echo "http [-h|--help] [-s|--second] METHOD URL" + return 0 + end + + if set -ql _flag_cache + mkdir -p /tmp/fish_http + + curl -SsL -X (string upper $method) $url | tee /tmp/fish_http/(string escape --style=url $url) + else + curl -X (string upper $method) $url + end +end diff --git a/Configs/hypr/.config/hypr/hyprland.conf b/Configs/hypr/.config/hypr/hyprland.conf index 8d66b6b..ce6d9b7 100644 --- a/Configs/hypr/.config/hypr/hyprland.conf +++ b/Configs/hypr/.config/hypr/hyprland.conf @@ -13,12 +13,10 @@ # ── System apps ───────────────────────────────────────────────────────── exec-once = pipewire exec-once = udieskie -exec-once = /usr/libexec/polkit-gnome-authentication-agent-1 exec-once = hyprctl setcursor catppuccin-macchiato-lavender-cursors 24 # ── Utils ─────────────────────────────────────────────────────────────── -exec-once = ~/.cargo/bin/wpaperd -d -exec-once = waybar +exec-once = wpaperd -d exec-once = hyprpaper exec-once = mako @@ -31,11 +29,22 @@ source = ~/.config/hypr/theme.conf # ── Monitors ────────────────────────────────────────────────────────── monitor = , preferred, auto, 1 +monitorv2 { + output = desc:GWD ARZOPA 000000000000 + mode = 1920x1080@60, transform + position = auto + scale = 1 + transform = 3 # rotate 180° + supports_wide_color = true + supports_hdr = true +} monitor = WAYLAND-1, disable # hack for when running manually -# Some default env vars. -env = XCURSOR_SIZE,24 -env = QT_STYLE_OVERRIDE,kvantum +# Workaround for wrong wpaperd texture on vertical screen +# https://github.com/hyprwm/Hyprland/issues/9408#issuecomment-2661608482 +render { + expand_undersized_textures = false +} # ── Input devides ───────────────────────────────────────────────────── input { @@ -70,13 +79,13 @@ general { layout = master } -decoration { - rounding = 2 - drop_shadow = true - shadow_range = 4 - shadow_render_power = 3 - col.shadow = rgba($baseAlphaee) -} +# decoration { +# rounding = 2 +# drop_shadow = true +# shadow_range = 4 +# shadow_render_power = 3 +# col.shadow = rgba($baseAlphaee) +# } animations { enabled = true @@ -126,10 +135,10 @@ workspace = 3, monitor:HDMI-A-1, persistent:true workspace = 4, monitor:HDMI-A-1, persistent:true workspace = 5, monitor:HDMI-A-1, persistent:true -workspace = 6, monitor:eDP-1, persistent:true -workspace = 7, monitor:eDP-1, persistent:true -workspace = 8, monitor:eDP-1, persistent:true -workspace = 9, monitor:eDP-1, persistent:true +workspace = 6, monitor:HDMI-A-2, persistent:true +workspace = 7, monitor:HDMI-A-2, persistent:true +workspace = 8, monitor:HDMI-A-2, persistent:true +workspace = 9, monitor:HDMI-A-2, persistent:true # ╭──────────────────────────────────────────────────────────╮ # │ Keybindings │ @@ -138,10 +147,10 @@ workspace = 9, monitor:eDP-1, persistent:true $mainMod = SUPER # $menu = bemenu-run -iwn --binding vim --vim-esc-exits --scrollbar autohide --fixed-height --counter always -l 20 -P '>' -p 'Open:' -B 2 -R 5 --cw '5x' --fn 'JetBrainsMono 13' --bdr '##$tealAlpha' --ab '##$baseAlpha' --af '##$textAlpha' --fb '##$baseAlpha' --ff '##$textAlpha' --cf '##$mauveAlpha' --hb '##$surface0Alpha' --hf '##$tealAlpha' --nb '##$baseAlpha' --nf '##$textAlpha' --tb '##$mauveAlpha' --tf '##$baseAlpha' --scb '##$surface0Alpha' --scf '##$mauveAlpha' -$menu = rofi -show drun +$menu = rofi -show drun -run-command "uwsm app -- {cmd}" # ── Spawn ───────────────────────────────────────────────────────────── -bind = $mainMod SHIFT, E, exit, +bind = $mainMod SHIFT, E, exec, uwsm stop bind = $mainMod, return, exec, kitty bind = $mainMod SHIFT, q, killactive, bind = $mainMod, D, exec, $menu diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json index faa70a2..b6b7a5a 100644 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ b/Configs/nvim/.config/nvim/lazy-lock.json @@ -1,38 +1,38 @@ { - "blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" }, - "blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" }, - "catppuccin": { "branch": "main", "commit": "e762a47478377612e59f01aa51db961f605c9aa4" }, + "blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" }, + "blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" }, + "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "973f3cb73887d510321653044791d7937c7ec0fa" }, + "conform.nvim": { "branch": "master", "commit": "a203480a350b03092e473bf3001733d547160a73" }, "flatten.nvim": { "branch": "main", "commit": "72527798e75b5e34757491947c2cb853ce21dc0e" }, - "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "fzf-lua": { "branch": "main", "commit": "f22460450543aa773638135d6aa46c60ab92da99" }, + "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, + "fzf-lua": { "branch": "main", "commit": "758173f499d15410ecb50c5519a41b27c33e645d" }, "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, "hardtime.nvim": { "branch": "main", "commit": "3541ad24faff78274669eceaf130502eb7f1261a" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, - "mason.nvim": { "branch": "main", "commit": "197f6352c276bbc2d25541dfce00ec50d1a4e88f" }, + "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, + "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, - "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, + "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, "nvim-dap": { "branch": "master", "commit": "5dd4d50f2e6a2eaf9e57fad023d294ef371bda35" }, - "nvim-dap-view": { "branch": "main", "commit": "c7385808c7d6a4438f6eef50d539d7103146ba2b" }, + "nvim-dap-view": { "branch": "main", "commit": "390dae6bf67f3342ebb481159932ef0fe54822ba" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, - "nvim-lint": { "branch": "master", "commit": "9c6207559297b24f0b7c32829f8e45f7d65b991f" }, - "nvim-lspconfig": { "branch": "master", "commit": "4d3b3bb8815fbe37bcaf3dbdb12a22382bc11ebe" }, - "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-treesitter-context": { "branch": "master", "commit": "59f318a65d42a5c4037796886a8874fd57f774fc" }, + "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, + "nvim-lspconfig": { "branch": "master", "commit": "f47cd681d7cb6048876a2e908b6d8ba1e530d152" }, + "nvim-treesitter": { "branch": "master", "commit": "8d4fdc5e47e2a4e00179e43f56221250ce365973" }, + "nvim-treesitter-context": { "branch": "master", "commit": "6b081ea63a3711243d11540ce28ccdb6f35ecd33" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, - "nvim-web-devicons": { "branch": "master", "commit": "0422a19d9aa3aad2c7e5cca167e5407b13407a9d" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, + "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "render-markdown": { "branch": "main", "commit": "5c0e241bdbd208b7ae546009378d6bc93c083ef3" }, + "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, "rustaceanvim": { "branch": "master", "commit": "66398662c07d265b226897500ed50eafba3dffb4" }, - "smart-splits.nvim": { "branch": "master", "commit": "825073e87de5fae98b0c107917e15977d100323b" }, + "smart-splits.nvim": { "branch": "master", "commit": "fc7bb00fe67ab504356bed4310d23c2e4cb4b06b" }, "transfer.nvim": { "branch": "main", "commit": "ab12253c09f83a5b0b6ee108fc131be45abe446a" }, - "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, - "ts-node-action": { "branch": "master", "commit": "b0850ecd82a508ad846ba250ea13485b0e13321e" }, + "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, + "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, "typescript-tools.nvim": { "branch": "master", "commit": "3c501d7c7f79457932a8750a2a1476a004c5c1a9" }, "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "yazi.nvim": { "branch": "main", "commit": "6e4e9f0353f94ca4965c20dfc2690fb0d21730f0" } + "yazi.nvim": { "branch": "main", "commit": "053867916a9be3cb46f84b6f095ee731bbddd213" } } diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index e5eec57..2bd7f34 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -162,6 +162,8 @@ vim.lsp.config("rust-analyzer", { vim.lsp.enable({ "bashls", "biome", + "fish_lsp", + "hyprls", "lua_ls", "nushell", "pyright", diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua index 47efc65..1cd8b6f 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua @@ -37,7 +37,6 @@ return { }, sources = { providers = { - dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" }, lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, luasnip = { name = 'luasnip', diff --git a/Configs/uwsm/.config/uwsm/env b/Configs/uwsm/.config/uwsm/env new file mode 100644 index 0000000..5387d79 --- /dev/null +++ b/Configs/uwsm/.config/uwsm/env @@ -0,0 +1,4 @@ +export QT_STYLE_OVERRIDE=kvantum +export MOZ_ENABLE_WAYLAND=1 +export XCURSOR_SIZE=24 +export GTK_THEME=catppuccin-macchiato-teal-standard+default diff --git a/Configs/waybar/.config/waybar/config.jsonc b/Configs/waybar/.config/waybar/config.jsonc index c2b5320..b0dfe6f 100644 --- a/Configs/waybar/.config/waybar/config.jsonc +++ b/Configs/waybar/.config/waybar/config.jsonc @@ -14,7 +14,7 @@ "modules-right": [ "tray", "idle_inhibitor", - "network", +// "network", "bluetooth", "backlight", "wireplumber", diff --git a/Configs/waybar/.config/waybar/style.css b/Configs/waybar/.config/waybar/style.css index 43618ce..9345d25 100644 --- a/Configs/waybar/.config/waybar/style.css +++ b/Configs/waybar/.config/waybar/style.css @@ -1,8 +1,9 @@ @import "./themes/catppuccin-macchiato.css"; *{ - font-size: 0.9rem; - font-family: JetBrainsMono Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; + font-family: Open Sans, JetBrainsMono Nerd Font; + font-weight: 500; color: @text; } #waybar { @@ -89,7 +90,7 @@ box.modules-right { } #custom-power{ -color:#c47fd5; -margin-right:10px; -padding-right:14px; + color:#c47fd5; + margin-right:10px; + padding-right:14px; } diff --git a/Configs/wlogout/.config/wlogout/layout b/Configs/wlogout/.config/wlogout/layout index 26b8bf4..3e4d2f4 100644 --- a/Configs/wlogout/.config/wlogout/layout +++ b/Configs/wlogout/.config/wlogout/layout @@ -18,7 +18,7 @@ } { "label" : "shutdown", - "action" : "loginctl poweroff", + "action" : "systemctl -i poweroff", "text" : "Shutdown", "keybind" : "s" } @@ -30,7 +30,7 @@ } { "label" : "reboot", - "action" : "loginctl reboot", + "action" : "systemctl reboot", "text" : "Reboot", "keybind" : "r" } diff --git a/Configs/wpaperd/.config/wpaperd/config.toml b/Configs/wpaperd/.config/wpaperd/config.toml index 92febf9..10241b0 100644 --- a/Configs/wpaperd/.config/wpaperd/config.toml +++ b/Configs/wpaperd/.config/wpaperd/config.toml @@ -1,7 +1,10 @@ [default] duration = "10m" mode = "center" -sorting = "ascending" +sorting = "random" -[any] -path = "~/Pictures/Wallpapers/" +[HDMI-A-1] +path = "~/Pictures/Wallpapers/Landscape/" + +[HDMI-A-2] +path = "~/Pictures/Wallpapers/Portrait/" diff --git a/Configs/zsh/.zshrc b/Configs/zsh/.zshrc index 6b557a8..6dca07a 100644 --- a/Configs/zsh/.zshrc +++ b/Configs/zsh/.zshrc @@ -81,6 +81,8 @@ zinit cdreplay -q eval "$(zoxide init --cmd cd zsh)" -. "$HOME/.atuin/bin/env" +# . "$HOME/.atuin/bin/env" eval "$(atuin init zsh)" + +. "$HOME/.local/share/../bin/env" From a404d3af2c7f6bf8b9b8319ae268092f2ac3e31d Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 1 Aug 2025 16:09:17 -0400 Subject: [PATCH 118/152] add zoom toggle to nvim --- Configs/mise/.config/mise/config.toml | 1 + .../nvim/.config/nvim/lua/aleidk/options.lua | 36 +++++++++---------- .../.config/nvim/lua/aleidk/plugins/mini.lua | 6 ++++ 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/Configs/mise/.config/mise/config.toml b/Configs/mise/.config/mise/config.toml index 72c5554..b129270 100644 --- a/Configs/mise/.config/mise/config.toml +++ b/Configs/mise/.config/mise/config.toml @@ -43,6 +43,7 @@ sops = "latest" usage = "latest" yazi = "latest" zoxide = "latest" +watchexec = "latest" [settings] lockfile = true diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index 2bd7f34..ad74d7f 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -27,28 +27,28 @@ opt.expandtab = true -- Use spaces instead of tabs opt.formatoptions = "jcroqlnt" -- tcqj opt.grepformat = "%f:%l:%c:%m" opt.grepprg = "rg --vimgrep" -opt.ignorecase = true -- Ignore case -opt.inccommand = 'split' -- Preview substitutions live, as you type! -opt.mouse = "a" -- Enable mouse mode +opt.ignorecase = true -- Ignore case +opt.inccommand = 'split' -- Preview substitutions live, as you type! +opt.mouse = "a" -- Enable mouse mode opt.nrformats = 'blank,bin,hex' opt.number = true -- Print line number -opt.pumblend = 10 -- Popup blend -opt.pumheight = 10 -- Maximum number of entries in a popup -opt.relativenumber = true -- Relative line numbers -opt.scrolloff = 15 -- Lines of context +opt.pumblend = 10 -- Popup blend +opt.pumheight = 10 -- Maximum number of entries in a popup +-- opt.relativenumber = true -- Relative line numbers +opt.scrolloff = 15 -- Lines of context opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } -opt.shiftround = true -- Round indent -opt.shiftwidth = 2 -- Size of an indent -opt.showmode = false -- Don't show mode since we have a statusline -opt.sidescrolloff = 8 -- Columns of context -opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time -opt.smartcase = true -- Don't ignore case with capitals -opt.smartindent = true -- Insert indents automatically +opt.shiftround = true -- Round indent +opt.shiftwidth = 2 -- Size of an indent +opt.showmode = false -- Don't show mode since we have a statusline +opt.sidescrolloff = 8 -- Columns of context +opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time +opt.smartcase = true -- Don't ignore case with capitals +opt.smartindent = true -- Insert indents automatically opt.spelllang = { "en" } -opt.splitbelow = true -- Put new windows below current -opt.splitright = true -- Put new windows right of current -opt.tabstop = 2 -- Number of spaces tabs count for -opt.termguicolors = true -- True color support +opt.splitbelow = true -- Put new windows below current +opt.splitright = true -- Put new windows right of current +opt.tabstop = 2 -- Number of spaces tabs count for +opt.termguicolors = true -- True color support opt.undofile = true opt.undolevels = 10000 opt.updatetime = 200 -- Save swap file and trigger CursorHold diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua index 9c3b80f..ca46956 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua @@ -238,5 +238,11 @@ return { vim.api.nvim_create_user_command("SessionDelete", function() require('mini.sessions').select('delete') end, {}) + + + vim.keymap.set('n', 'uz', function() + require('mini.misc').zoom() + end, + { desc = 'Toggle zoom', silent = true }) end } From bd102d6753243a78b9d8483ac62c1626e74e2766 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 22 Aug 2025 17:57:10 -0400 Subject: [PATCH 119/152] update hyprland config --- Configs/fish/.config/fish/fish_variables | 2 +- Configs/hypr/.config/hypr/hyprland.conf | 14 ++-- Configs/uwsm/.config/uwsm/env | 4 ++ Configs/vimiv/.config/vimiv/keys.conf | 87 ------------------------ 4 files changed, 12 insertions(+), 95 deletions(-) diff --git a/Configs/fish/.config/fish/fish_variables b/Configs/fish/.config/fish/fish_variables index 53cbe7a..2a3c309 100644 --- a/Configs/fish/.config/fish/fish_variables +++ b/Configs/fish/.config/fish/fish_variables @@ -47,7 +47,7 @@ SETUVAR fish_pager_color_selected_background:\x1d SETUVAR fish_pager_color_selected_completion:\x1d SETUVAR fish_pager_color_selected_description:\x1d SETUVAR fish_pager_color_selected_prefix:\x1d -SETUVAR fish_user_paths:/usr/local/sbin\x1e/usr/local/bin\x1e/usr/bin\x1e/var/lib/flatpak/exports/bin\x1e/home/aleidk/\x2elocal/bin +SETUVAR fish_user_paths:/home/aleidk/\x2ecargo/bin\x1e/usr/local/sbin\x1e/usr/local/bin\x1e/usr/bin\x1e/var/lib/flatpak/exports/bin\x1e/home/aleidk/\x2elocal/bin SETUVAR pure_begin_prompt_with_current_directory:true SETUVAR pure_check_for_new_release:false SETUVAR pure_color_at_sign:pure_color_mute diff --git a/Configs/hypr/.config/hypr/hyprland.conf b/Configs/hypr/.config/hypr/hyprland.conf index ce6d9b7..d46dcc2 100644 --- a/Configs/hypr/.config/hypr/hyprland.conf +++ b/Configs/hypr/.config/hypr/hyprland.conf @@ -104,8 +104,8 @@ gestures { } misc { - enable_swallow = false - # swallow_regex = "" + enable_swallow = true + swallow_regex = ^(Alacritty|kitty|footclient)$ # swallow_exception_regex = "" mouse_move_focuses_monitor = false @@ -156,11 +156,11 @@ bind = $mainMod SHIFT, q, killactive, bind = $mainMod, D, exec, $menu # screenshot current window -bind = $mainMod, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy -# screenshot area -bind = $mainMod SHIFT, Print, exec, grim -g "$(slurp -d)" - | wl-copy +bind = SHIFT, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy && notify-send "Screenshot taken!" # screenshot area and edit it -bind = $mainMod CTRL, Print, exec, grim -g "$(slurp -d)" - | swappy -f - +bind = SHIFT CTRL, Print, exec, grim -g "$(slurp -d)" - | swappy -f - && notify-send "Screenshot taken!" +# screenshot area +bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy && notify-send "Screenshot taken!" bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ bind = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- @@ -170,12 +170,12 @@ bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous bind = , XF86MonBrightnessUp, exec, brightnessctl set +5% -bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%- # ── Window Options ──────────────────────────────────────────────────── bind = $mainMod SHIFT, space, togglefloating, bind = $mainMod, f, fullscreen, 1 # preserve gaps and bar bind = $mainMod SHIFT, f, fullscreen, 0 # use whole screen +bind = $mainMod SHIFT, s, toggleswallow # ── Focus ───────────────────────────────────────────────────────────── bind = $mainMod, h, movefocus, l diff --git a/Configs/uwsm/.config/uwsm/env b/Configs/uwsm/.config/uwsm/env index 5387d79..02a9122 100644 --- a/Configs/uwsm/.config/uwsm/env +++ b/Configs/uwsm/.config/uwsm/env @@ -1,4 +1,8 @@ export QT_STYLE_OVERRIDE=kvantum +export QT_AUTO_SCREEN_SCALE_FACTOR=1 +export QT_QPA_PLATFORM=wayland;xcb +export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 +export QT_QPA_PLATFORMTHEME=qt5ct export MOZ_ENABLE_WAYLAND=1 export XCURSOR_SIZE=24 export GTK_THEME=catppuccin-macchiato-teal-standard+default diff --git a/Configs/vimiv/.config/vimiv/keys.conf b/Configs/vimiv/.config/vimiv/keys.conf index 628b2d3..e69de29 100644 --- a/Configs/vimiv/.config/vimiv/keys.conf +++ b/Configs/vimiv/.config/vimiv/keys.conf @@ -1,87 +0,0 @@ -[GLOBAL] - : command -o : command --text='open ' -yy : copy-name -ya : copy-name --abspath -yA : copy-name --abspath --primary -yY : copy-name --primary -x : delete %% -gi : enter image -gl : enter library -gm : enter manipulate -gt : enter thumbnail -f : fullscreen -G : goto -1 -gg : goto 1 -m : mark %% -q : quit -. : repeat-command -j : scroll down -h : scroll left -l : scroll right -k : scroll up -/ : search -? : search --reverse -N : search-next -P : search-prev -b : set statusbar.show! -tl : toggle library -tm : toggle manipulate -tt : toggle thumbnail - -[IMAGE] -M : center -| : flip -_ : flip --vertical - : goto -1 - : goto 1 - : next -n : next -n : next --keep-zoom - : play-or-pause - : prev -p : prev -p : prev --keep-zoom -> : rotate -< : rotate --counter-clockwise -W : scale --level=1 - : scale --level=fit -w : scale --level=fit -E : scale --level=fit-height -e : scale --level=fit-width -J : scroll-edge down -H : scroll-edge left -L : scroll-edge right -K : scroll-edge up -sl : set slideshow.delay +0.5 -sh : set slideshow.delay -0.5 -ss : slideshow -+ : zoom in -- : zoom out - -[LIBRARY] -go : goto 1 --open-selected -n : scroll down --open-selected -p : scroll up --open-selected -L : set library.width +0.05 -H : set library.width -0.05 - -[THUMBNAIL] -+ : zoom in -- : zoom out -Q : mark-print && quit - -[COMMAND] - : complete - : complete --inverse -p : history next -n : history prev - : history-substr-search next - : history-substr-search prev - : leave-commandline - -[MANIPULATE] - : command -f : fullscreen -b : set statusbar.show! - From 75452f4c819a2ab6ea4240e08ff8061b59066338 Mon Sep 17 00:00:00 2001 From: aleidk Date: Sat, 23 Aug 2025 11:15:44 -0400 Subject: [PATCH 120/152] update hyprland config --- Configs/hypr/.config/hypr/base.conf | 242 ++++++++++++++++++++ Configs/hypr/.config/hypr/hypridle.conf | 34 +++ Configs/hypr/.config/hypr/hyprland.conf | 242 +------------------- Configs/hypr/.config/hypr/hyprlock.conf | 95 ++++++++ Configs/wpaperd/.config/wpaperd/config.toml | 3 + 5 files changed, 375 insertions(+), 241 deletions(-) create mode 100644 Configs/hypr/.config/hypr/base.conf create mode 100644 Configs/hypr/.config/hypr/hypridle.conf create mode 100644 Configs/hypr/.config/hypr/hyprlock.conf diff --git a/Configs/hypr/.config/hypr/base.conf b/Configs/hypr/.config/hypr/base.conf new file mode 100644 index 0000000..f6de841 --- /dev/null +++ b/Configs/hypr/.config/hypr/base.conf @@ -0,0 +1,242 @@ +# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` | +# | _ | |_| | |_) | | | | (_| | | | | (_| | +# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_| +# |___/|_| +# +# ╰────────────────────────────────────────────────────────────────────╯ + + +# ╭──────────────────────────────────────────────────────────╮ +# │ Autostart apps │ +# ╰──────────────────────────────────────────────────────────╯ + +# ── System apps ───────────────────────────────────────────────────────── +# exec-once = pipewire +exec-once = /usr/lib/pam_kwallet_init +exec-once = udieskie +exec-once = hyprctl setcursor catppuccin-macchiato-lavender-cursors 24 + +# ── Utils ─────────────────────────────────────────────────────────────── +exec-once = wpaperd -d + +# ╭──────────────────────────────────────────────────────────╮ +# │ Config │ +# ╰──────────────────────────────────────────────────────────╯ + +# Source a file (multi-file configs) +source = ~/.config/hypr/theme.conf + +# ── Monitors ────────────────────────────────────────────────────────── +monitor = , preferred, auto, 1 +monitorv2 { + output = desc:GWD ARZOPA 000000000000 + mode = 1920x1080@60, transform + position = auto + scale = 1 + transform = 3 # rotate 180° + supports_wide_color = true + supports_hdr = true +} +monitor = WAYLAND-1, disable # hack for when running manually + +# Workaround for wrong wpaperd texture on vertical screen +# https://github.com/hyprwm/Hyprland/issues/9408#issuecomment-2661608482 +render { + expand_undersized_textures = false +} + +# ── Input devides ───────────────────────────────────────────────────── +input { + kb_layout = latam + kb_variant = + kb_model = + kb_options = caps:escape + kb_rules = + + follow_mouse = 2 + + touchpad { + natural_scroll = true + } + + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +# ── General config ──────────────────────────────────────────────────── +general { + gaps_in = 5 + gaps_out = 10 + border_size = 2 + + col.active_border = $teal $teal + col.inactive_border = $surface1 $surface1 + + # snap { + # enabled = true + # } + + layout = master +} + +# decoration { +# rounding = 2 +# drop_shadow = true +# shadow_range = 4 +# shadow_render_power = 3 +# col.shadow = rgba($baseAlphaee) +# } + +animations { + enabled = true + + animation = windows, 1, 5, default, slide + animation = border, 1, 10, default + animation = borderangle, 1, 8, default + animation = fade, 1, 7, default + animation = workspaces, 1, 6, default + animation = specialWorkspace, 1, 8, default, fade +} + +gestures { + workspace_swipe = true + workspace_swipe_invert = true + workspace_swipe_distance = 200 +} + +misc { + enable_swallow = true + swallow_regex = ^(Alacritty|kitty|footclient)$ + # swallow_exception_regex = "" + + mouse_move_focuses_monitor = false +} + +# ── Layouts ─────────────────────────────────────────────────────────── +master { + new_status = slave + mfact = 0.5 + # slave_count_for_center_master = 4 +} + +# ╭──────────────────────────────────────────────────────────╮ +# │ Windows rules │ +# ╰──────────────────────────────────────────────────────────╯ + +windowrulev2 = float, class:org.gnome.Nautilus +windowrulev2 = float, class:xdg-desktop-portal-gtk + +# ╭───────────────────────────────────────────────────────────╮ +# │ Workspaces rules │ +# ╰───────────────────────────────────────────────────────────╯ + +workspace = 1, monitor:HDMI-A-1, persistent:true +workspace = 2, monitor:HDMI-A-1, persistent:true +workspace = 3, monitor:HDMI-A-1, persistent:true +workspace = 4, monitor:HDMI-A-1, persistent:true +workspace = 5, monitor:HDMI-A-1, persistent:true + +workspace = 6, monitor:HDMI-A-2, persistent:true +workspace = 7, monitor:HDMI-A-2, persistent:true +workspace = 8, monitor:HDMI-A-2, persistent:true +workspace = 9, monitor:HDMI-A-2, persistent:true + +# ╭──────────────────────────────────────────────────────────╮ +# │ Keybindings │ +# ╰──────────────────────────────────────────────────────────╯ + +$mainMod = SUPER + +# $menu = bemenu-run -iwn --binding vim --vim-esc-exits --scrollbar autohide --fixed-height --counter always -l 20 -P '>' -p 'Open:' -B 2 -R 5 --cw '5x' --fn 'JetBrainsMono 13' --bdr '##$tealAlpha' --ab '##$baseAlpha' --af '##$textAlpha' --fb '##$baseAlpha' --ff '##$textAlpha' --cf '##$mauveAlpha' --hb '##$surface0Alpha' --hf '##$tealAlpha' --nb '##$baseAlpha' --nf '##$textAlpha' --tb '##$mauveAlpha' --tf '##$baseAlpha' --scb '##$surface0Alpha' --scf '##$mauveAlpha' +$menu = rofi -show drun -run-command "uwsm app -- {cmd}" + +# ── Spawn ───────────────────────────────────────────────────────────── +bind = $mainMod SHIFT, E, exec, uwsm stop +bind = $mainMod, return, exec, kitty +bind = $mainMod SHIFT, q, killactive, +bind = $mainMod, D, exec, $menu + +# screenshot current window +bind = SHIFT, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy && notify-send "Screenshot taken!" +# screenshot area and edit it +bind = SHIFT CTRL, Print, exec, grim -g "$(slurp -d)" - | swappy -f - && notify-send "Screenshot taken!" +# screenshot area +bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy && notify-send "Screenshot taken!" + +bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ +bind = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- +bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle +bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle +bind = , XF86AudioPlay, exec, playerctl play-pause +bind = , XF86AudioNext, exec, playerctl next +bind = , XF86AudioPrev, exec, playerctl previous +bind = , XF86MonBrightnessUp, exec, brightnessctl set +5% + +# ── Window Options ──────────────────────────────────────────────────── +bind = $mainMod SHIFT, space, togglefloating, +bind = $mainMod, f, fullscreen, 1 # preserve gaps and bar +bind = $mainMod SHIFT, f, fullscreen, 0 # use whole screen +bind = $mainMod SHIFT, s, toggleswallow + +# ── Focus ───────────────────────────────────────────────────────────── +bind = $mainMod, h, movefocus, l +bind = $mainMod, j, movefocus, d +bind = $mainMod, k, movefocus, u +bind = $mainMod, l, movefocus, r + +bind = $mainMod + SHIFT, h, movewindow, l +bind = $mainMod + SHIFT, j, movewindow, d +bind = $mainMod + SHIFT, k, movewindow, u +bind = $mainMod + SHIFT, l, movewindow, r + +bind = $mainMod, bar, workspace, previous +bind = $mainMod CTRL, bar, focusmonitor, +1 +bind = $mainMod, space, focusurgentorlast +bind = $mainMod, tab, cyclenext, visible +bind = $mainMod SHIFT, tab, cyclenext, visible prev + +# ── Layout ────────────────────────────────────────────────────────────── + +bind = $mainMod, plus, layoutmsg, mfact +0.1 +bind = $mainMod, minus, layoutmsg, mfact -0.1 +bind = $mainMod CTRL, 0, layoutmsg, mfact exact 0.5 +bind = $mainMod, n, layoutmsg, addmaster +bind = $mainMod SHIFT, n, layoutmsg, removemaster +bind = $mainMod, m, layoutmsg, rollprev +bind = $mainMod SHIFT, m, layoutmsg, rollnext +bind = $mainMod, s, layoutmsg, orientationcycle + + +# ── Workspaces ──────────────────────────────────────────────────────── +bind = $mainMod, 1, workspace, 1 +bind = $mainMod, 2, workspace, 2 +bind = $mainMod, 3, workspace, 3 +bind = $mainMod, 4, workspace, 4 +bind = $mainMod, 5, workspace, 5 +bind = $mainMod, 6, workspace, 6 +bind = $mainMod, 7, workspace, 7 +bind = $mainMod, 8, workspace, 8 +bind = $mainMod, 9, workspace, 9 + +bind = $mainMod SHIFT, 1, movetoworkspace, 1 +bind = $mainMod SHIFT, 2, movetoworkspace, 2 +bind = $mainMod SHIFT, 3, movetoworkspace, 3 +bind = $mainMod SHIFT, 4, movetoworkspace, 4 +bind = $mainMod SHIFT, 5, movetoworkspace, 5 +bind = $mainMod SHIFT, 6, movetoworkspace, 6 +bind = $mainMod SHIFT, 7, movetoworkspace, 7 +bind = $mainMod SHIFT, 8, movetoworkspace, 8 +bind = $mainMod SHIFT, 9, movetoworkspace, 9 + +bind = $mainMod, 0, togglespecialworkspace, scratchpad +bind = $mainMod SHIFT, 0, movetoworkspace, special:scratchpad + +# ── Mouse ───────────────────────────────────────────────────────────── +# Scroll through existing workspaces with mainMod + scroll +bind = $mainMod, mouse_down, workspace, e+1 +bind = $mainMod, mouse_up, workspace, e-1 + +# Move/resize windows with mainMod + LMB/RMB and dragging +bindm = $mainMod, mouse:272, movewindow +bindm = $mainMod, mouse:273, resizewindow + diff --git a/Configs/hypr/.config/hypr/hypridle.conf b/Configs/hypr/.config/hypr/hypridle.conf new file mode 100644 index 0000000..a4b4f88 --- /dev/null +++ b/Configs/hypr/.config/hypr/hypridle.conf @@ -0,0 +1,34 @@ +general { + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. +} + +listener { + timeout = 600 # 10min. + on-timeout = brightnessctl -s set 10 # set monitor backlight to minimum, avoid 0 on OLED monitor. + on-resume = brightnessctl -r # monitor backlight restore. +} + +# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight. +# listener { +# timeout = 300 # 2.5min. +# on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight. +# on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight. +# } + +listener { + timeout = 900 # 15min + on-timeout = loginctl lock-session # lock screen when timeout has passed +} + +listener { + timeout = 330 # 5.5min + on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed + on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired. +} + +listener { + timeout = 1800 # 30min + on-timeout = systemctl suspend # suspend pc +} diff --git a/Configs/hypr/.config/hypr/hyprland.conf b/Configs/hypr/.config/hypr/hyprland.conf index d46dcc2..adfbbce 100644 --- a/Configs/hypr/.config/hypr/hyprland.conf +++ b/Configs/hypr/.config/hypr/hyprland.conf @@ -1,241 +1 @@ -# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` | -# | _ | |_| | |_) | | | | (_| | | | | (_| | -# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_| -# |___/|_| -# -# ╰────────────────────────────────────────────────────────────────────╯ - - -# ╭──────────────────────────────────────────────────────────╮ -# │ Autostart apps │ -# ╰──────────────────────────────────────────────────────────╯ - -# ── System apps ───────────────────────────────────────────────────────── -exec-once = pipewire -exec-once = udieskie -exec-once = hyprctl setcursor catppuccin-macchiato-lavender-cursors 24 - -# ── Utils ─────────────────────────────────────────────────────────────── -exec-once = wpaperd -d -exec-once = hyprpaper -exec-once = mako - -# ╭──────────────────────────────────────────────────────────╮ -# │ Config │ -# ╰──────────────────────────────────────────────────────────╯ - -# Source a file (multi-file configs) -source = ~/.config/hypr/theme.conf - -# ── Monitors ────────────────────────────────────────────────────────── -monitor = , preferred, auto, 1 -monitorv2 { - output = desc:GWD ARZOPA 000000000000 - mode = 1920x1080@60, transform - position = auto - scale = 1 - transform = 3 # rotate 180° - supports_wide_color = true - supports_hdr = true -} -monitor = WAYLAND-1, disable # hack for when running manually - -# Workaround for wrong wpaperd texture on vertical screen -# https://github.com/hyprwm/Hyprland/issues/9408#issuecomment-2661608482 -render { - expand_undersized_textures = false -} - -# ── Input devides ───────────────────────────────────────────────────── -input { - kb_layout = latam - kb_variant = - kb_model = - kb_options = caps:escape - kb_rules = - - follow_mouse = 2 - - touchpad { - natural_scroll = true - } - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - -# ── General config ──────────────────────────────────────────────────── -general { - gaps_in = 5 - gaps_out = 10 - border_size = 2 - - col.active_border = $teal $teal - col.inactive_border = $surface1 $surface1 - - # snap { - # enabled = true - # } - - layout = master -} - -# decoration { -# rounding = 2 -# drop_shadow = true -# shadow_range = 4 -# shadow_render_power = 3 -# col.shadow = rgba($baseAlphaee) -# } - -animations { - enabled = true - - animation = windows, 1, 5, default, slide - animation = border, 1, 10, default - animation = borderangle, 1, 8, default - animation = fade, 1, 7, default - animation = workspaces, 1, 6, default - animation = specialWorkspace, 1, 8, default, fade -} - -gestures { - workspace_swipe = true - workspace_swipe_invert = false -} - -misc { - enable_swallow = true - swallow_regex = ^(Alacritty|kitty|footclient)$ - # swallow_exception_regex = "" - - mouse_move_focuses_monitor = false -} - -# ── Layouts ─────────────────────────────────────────────────────────── -master { - new_status = slave - mfact = 0.5 - # slave_count_for_center_master = 4 -} - -# ╭──────────────────────────────────────────────────────────╮ -# │ Windows rules │ -# ╰──────────────────────────────────────────────────────────╯ - -windowrulev2 = float, class:org.gnome.Nautilus -windowrulev2 = float, class:xdg-desktop-portal-gtk - -# ╭───────────────────────────────────────────────────────────╮ -# │ Workspaces rules │ -# ╰───────────────────────────────────────────────────────────╯ - -workspace = 1, monitor:HDMI-A-1, persistent:true -workspace = 2, monitor:HDMI-A-1, persistent:true -workspace = 3, monitor:HDMI-A-1, persistent:true -workspace = 4, monitor:HDMI-A-1, persistent:true -workspace = 5, monitor:HDMI-A-1, persistent:true - -workspace = 6, monitor:HDMI-A-2, persistent:true -workspace = 7, monitor:HDMI-A-2, persistent:true -workspace = 8, monitor:HDMI-A-2, persistent:true -workspace = 9, monitor:HDMI-A-2, persistent:true - -# ╭──────────────────────────────────────────────────────────╮ -# │ Keybindings │ -# ╰──────────────────────────────────────────────────────────╯ - -$mainMod = SUPER - -# $menu = bemenu-run -iwn --binding vim --vim-esc-exits --scrollbar autohide --fixed-height --counter always -l 20 -P '>' -p 'Open:' -B 2 -R 5 --cw '5x' --fn 'JetBrainsMono 13' --bdr '##$tealAlpha' --ab '##$baseAlpha' --af '##$textAlpha' --fb '##$baseAlpha' --ff '##$textAlpha' --cf '##$mauveAlpha' --hb '##$surface0Alpha' --hf '##$tealAlpha' --nb '##$baseAlpha' --nf '##$textAlpha' --tb '##$mauveAlpha' --tf '##$baseAlpha' --scb '##$surface0Alpha' --scf '##$mauveAlpha' -$menu = rofi -show drun -run-command "uwsm app -- {cmd}" - -# ── Spawn ───────────────────────────────────────────────────────────── -bind = $mainMod SHIFT, E, exec, uwsm stop -bind = $mainMod, return, exec, kitty -bind = $mainMod SHIFT, q, killactive, -bind = $mainMod, D, exec, $menu - -# screenshot current window -bind = SHIFT, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy && notify-send "Screenshot taken!" -# screenshot area and edit it -bind = SHIFT CTRL, Print, exec, grim -g "$(slurp -d)" - | swappy -f - && notify-send "Screenshot taken!" -# screenshot area -bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy && notify-send "Screenshot taken!" - -bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ -bind = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- -bind = , XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle -bind = , XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle -bind = , XF86AudioPlay, exec, playerctl play-pause -bind = , XF86AudioNext, exec, playerctl next -bind = , XF86AudioPrev, exec, playerctl previous -bind = , XF86MonBrightnessUp, exec, brightnessctl set +5% - -# ── Window Options ──────────────────────────────────────────────────── -bind = $mainMod SHIFT, space, togglefloating, -bind = $mainMod, f, fullscreen, 1 # preserve gaps and bar -bind = $mainMod SHIFT, f, fullscreen, 0 # use whole screen -bind = $mainMod SHIFT, s, toggleswallow - -# ── Focus ───────────────────────────────────────────────────────────── -bind = $mainMod, h, movefocus, l -bind = $mainMod, j, movefocus, d -bind = $mainMod, k, movefocus, u -bind = $mainMod, l, movefocus, r - -bind = $mainMod + SHIFT, h, movewindow, l -bind = $mainMod + SHIFT, j, movewindow, d -bind = $mainMod + SHIFT, k, movewindow, u -bind = $mainMod + SHIFT, l, movewindow, r - -bind = $mainMod, bar, workspace, previous -bind = $mainMod CTRL, bar, focusmonitor, +1 -bind = $mainMod, space, focusurgentorlast -bind = $mainMod, tab, cyclenext, visible -bind = $mainMod SHIFT, tab, cyclenext, visible prev - -# ── Layout ────────────────────────────────────────────────────────────── - -bind = $mainMod, plus, layoutmsg, mfact +0.1 -bind = $mainMod, minus, layoutmsg, mfact -0.1 -bind = $mainMod CTRL, 0, layoutmsg, mfact exact 0.5 -bind = $mainMod, n, layoutmsg, addmaster -bind = $mainMod SHIFT, n, layoutmsg, removemaster -bind = $mainMod, m, layoutmsg, rollprev -bind = $mainMod SHIFT, m, layoutmsg, rollnext -bind = $mainMod, s, layoutmsg, orientationcycle - - -# ── Workspaces ──────────────────────────────────────────────────────── -bind = $mainMod, 1, workspace, 1 -bind = $mainMod, 2, workspace, 2 -bind = $mainMod, 3, workspace, 3 -bind = $mainMod, 4, workspace, 4 -bind = $mainMod, 5, workspace, 5 -bind = $mainMod, 6, workspace, 6 -bind = $mainMod, 7, workspace, 7 -bind = $mainMod, 8, workspace, 8 -bind = $mainMod, 9, workspace, 9 - -bind = $mainMod SHIFT, 1, movetoworkspace, 1 -bind = $mainMod SHIFT, 2, movetoworkspace, 2 -bind = $mainMod SHIFT, 3, movetoworkspace, 3 -bind = $mainMod SHIFT, 4, movetoworkspace, 4 -bind = $mainMod SHIFT, 5, movetoworkspace, 5 -bind = $mainMod SHIFT, 6, movetoworkspace, 6 -bind = $mainMod SHIFT, 7, movetoworkspace, 7 -bind = $mainMod SHIFT, 8, movetoworkspace, 8 -bind = $mainMod SHIFT, 9, movetoworkspace, 9 - -bind = $mainMod, 0, togglespecialworkspace, scratchpad -bind = $mainMod SHIFT, 0, movetoworkspace, special:scratchpad - -# ── Mouse ───────────────────────────────────────────────────────────── -# Scroll through existing workspaces with mainMod + scroll -bind = $mainMod, mouse_down, workspace, e+1 -bind = $mainMod, mouse_up, workspace, e-1 - -# Move/resize windows with mainMod + LMB/RMB and dragging -bindm = $mainMod, mouse:272, movewindow -bindm = $mainMod, mouse:273, resizewindow - +source = base.conf diff --git a/Configs/hypr/.config/hypr/hyprlock.conf b/Configs/hypr/.config/hypr/hyprlock.conf new file mode 100644 index 0000000..a907bd4 --- /dev/null +++ b/Configs/hypr/.config/hypr/hyprlock.conf @@ -0,0 +1,95 @@ +# sample hyprlock.conf +# for more configuration options, refer https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock +# +# rendered text in all widgets supports pango markup (e.g. or tags) +# ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#general-remarks +# +# shortcuts to clear password buffer: ESC, Ctrl+U, Ctrl+Backspace +# +# you can get started by copying this config to ~/.config/hypr/hyprlock.conf +# + +$font = Monospace + +general { + hide_cursor = true +} + +# uncomment to enable fingerprint authentication +# auth { +# fingerprint { +# enabled = true +# ready_message = Scan fingerprint to unlock +# present_message = Scanning... +# retry_delay = 250 # in milliseconds +# } +# } + +animations { + enabled = true + bezier = linear, 1, 1, 0, 0 + animation = fadeIn, 1, 5, linear + animation = fadeOut, 1, 5, linear + animation = inputFieldDots, 1, 2, linear +} + +background { + monitor = + path = screenshot + blur_passes = 2 +} + +input-field { + monitor = + size = 30%, 5% + outline_thickness = 2 + inner_color = rgba(0, 0, 0, 0.0) # no fill + + outer_color = rgba(33ccffee) rgba(00ff99ee) 45deg + check_color = rgba(00ff99ee) rgba(ff6633ee) 120deg + fail_color = rgba(ff6633ee) rgba(ff0066ee) 40deg + + font_color = rgb(143, 143, 143) + fade_on_empty = false + rounding = 15 + + font_family = $font + placeholder_text = Input password... + fail_text = $PAMFAIL + + # uncomment to use a letter instead of a dot to indicate the typed password + # dots_text_format = * + # dots_size = 0.4 + dots_spacing = 0.3 + + # uncomment to use an input indicator that does not show the password length (similar to swaylock's input indicator) + hide_input = false + + position = 0, 0 + halign = center + valign = center +} + +# TIME +label { + monitor = + text = $TIME # ref. https://wiki.hyprland.org/Hypr-Ecosystem/hyprlock/#variable-substitution + font_size = 90 + font_family = $font + + position = 0, -100 + halign = center + valign = top +} + +# DATE +label { + monitor = + text = cmd[update:60000] date +"%A, %d %B %Y" # update every 60 seconds + font_size = 25 + font_family = $font + + position = 0, -270 + halign = center + valign = top +} diff --git a/Configs/wpaperd/.config/wpaperd/config.toml b/Configs/wpaperd/.config/wpaperd/config.toml index 10241b0..8f60270 100644 --- a/Configs/wpaperd/.config/wpaperd/config.toml +++ b/Configs/wpaperd/.config/wpaperd/config.toml @@ -3,6 +3,9 @@ duration = "10m" mode = "center" sorting = "random" +[any] +path = "~/Pictures/Wallpapers/" + [HDMI-A-1] path = "~/Pictures/Wallpapers/Landscape/" From 8f3259a19a03f59f617d952cefd12fbb1abca31b Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 25 Aug 2025 16:47:51 -0400 Subject: [PATCH 121/152] add swaync --- Configs/atuin/.config/atuin/config.toml | 2 + Configs/hypr/.config/hypr/base.conf | 1 + .../nvim/.config/nvim/lua/aleidk/options.lua | 1 + Configs/swaync/.config/swaync/config.json | 134 ++++++ Configs/swaync/.config/swaync/style.css | 449 ++++++++++++++++++ Configs/waybar/.config/waybar/config.jsonc | 23 +- 6 files changed, 609 insertions(+), 1 deletion(-) create mode 100644 Configs/swaync/.config/swaync/config.json create mode 100644 Configs/swaync/.config/swaync/style.css diff --git a/Configs/atuin/.config/atuin/config.toml b/Configs/atuin/.config/atuin/config.toml index 4c7a808..84fd8a8 100644 --- a/Configs/atuin/.config/atuin/config.toml +++ b/Configs/atuin/.config/atuin/config.toml @@ -117,6 +117,8 @@ ctrl_n_shortcuts = false # "^/very/secret/area", # ] +store_failed = true + ## Configure the maximum height of the preview to show. ## Useful when you have long scripts in your history that you want to distinguish ## by more than the first few lines. diff --git a/Configs/hypr/.config/hypr/base.conf b/Configs/hypr/.config/hypr/base.conf index f6de841..1d8edb7 100644 --- a/Configs/hypr/.config/hypr/base.conf +++ b/Configs/hypr/.config/hypr/base.conf @@ -18,6 +18,7 @@ exec-once = hyprctl setcursor catppuccin-macchiato-lavender-cursors 24 # ── Utils ─────────────────────────────────────────────────────────────── exec-once = wpaperd -d +exec-once = swaync --skip-system-css # ╭──────────────────────────────────────────────────────────╮ # │ Config │ diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index ad74d7f..d6f7c93 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -168,6 +168,7 @@ vim.lsp.enable({ "nushell", "pyright", "ruff", + "intelephense", -- "rust_analyzer", -- managed by rustacean.nvim }) diff --git a/Configs/swaync/.config/swaync/config.json b/Configs/swaync/.config/swaync/config.json new file mode 100644 index 0000000..41d2483 --- /dev/null +++ b/Configs/swaync/.config/swaync/config.json @@ -0,0 +1,134 @@ +{ + "$schema": "/etc/xdg/swaync/configSchema.json", + "ignore-gtk-theme": true, + "positionX": "right", + "positionY": "top", + "cssPriority": "user", + + "hide-on-clear": true, + "hide-on-action": true, + + "relative-timestamps": true, + "keyboard-shortcuts": true, + "notification-grouping": true, + + "layer": "overlay", + "control-center-layer": "top", + "layer-shell": true, + "layer-shell-cover-screen": true, + + "control-center-width": 500, + "control-center-height": 600, + "control-center-margin-top": 10, + "control-center-margin-bottom": 10, + "control-center-margin-right": 10, + "control-center-margin-left": 10, + + "notification-2fa-action": true, + "notification-inline-replies": false, + "notification-body-image-height": 100, + "notification-body-image-width": 200, + "notification-window-width": 500, + + "timeout": 10, + "timeout-low": 5, + "timeout-critical": 0, + + "fit-to-screen": true, + + "image-visibility": "when-available", + "transition-time": 500, + + "text-empty": "No Notifications", + "script-fail-notify": true, + + "scripts": { + "example-script": { + "exec": "echo 'Do something...'", + "urgency": "Normal" + }, + "example-action-script": { + "exec": "echo 'Do something actionable!'", + "urgency": "Normal", + "run-on": "action" + } + }, + "notification-visibility": { + "example-name": { + "state": "muted", + "urgency": "Low", + "app-name": "Spotify" + } + }, + "widgets": [ + "buttons-grid", + "volume", + "mpris", + "title", + "notifications", + "inhibitors", + "dnd" + ], + "widget-config": { + "inhibitors": { + "text": "Inhibitors", + "button-text": "Clear All", + "clear-all-button": true + }, + "title": { + "text": "Notifications", + "clear-all-button": true, + "button-text": "Clear All" + }, + "dnd": { + "text": "Do Not Disturb" + }, + "label": { + "max-lines": 5, + "text": "Label Text" + }, + "volume": { + "label": " 󰕾 ", + "expand-button-label": " ", + "collapse-button-label": " ", + "show-per-app": true + }, + "mpris": { + "blacklist": [], + "autohide": true, + "show-album-art": "always", + "loop-carousel": false, + "image-size": 80 + }, + "buttons-grid": { + "actions": [ + { + "label": "󰄜", + "type": "normal", + "command": "scrcpy", + "right-click-command": "scrcpy --help | head -20 | foot -e less" + }, + { + "label": "󰌘", + "type": "normal", + "command": "kdeconnect-app", + "right-click-command": "kdeconnect-settings" + }, + { + "label": " ", + "type": "toggle", + "active": false, + "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && pactl set-source-mute @DEFAULT_SOURCE@ 1 || pactl set-source-mute @DEFAULT_SOURCE@ 0'", + "update-command": "sh -c '[[ $(pactl get-source-mute @DEFAULT_SOURCE@) == *yes* ]] && echo true || echo false'" + }, + { + "label": " ", + "type": "toggle", + "active": false, + "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && pactl set-sink-mute @DEFAULT_SINK@ 1 || pactl set-sink-mute @DEFAULT_SINK@ 0'", + "update-command": "sh -c '[[ $(pactl get-sink-mute @DEFAULT_SINK@) == *yes* ]] && echo true || echo false'" + } + ] + } + } +} diff --git a/Configs/swaync/.config/swaync/style.css b/Configs/swaync/.config/swaync/style.css new file mode 100644 index 0000000..9183f18 --- /dev/null +++ b/Configs/swaync/.config/swaync/style.css @@ -0,0 +1,449 @@ +/* ======================================================================== + SwayNC CSS Configuration - Catppuccin Theme + Reformatted for better readability and maintainability +======================================================================== */ + +/* ======================================================================== + COLOR PALETTE - Gruvbox Inspired +======================================================================== */ +@define-color bg-primary #24273a; /* Dark background - main canvas */ +@define-color bg-secondary #363a4f; /* Secondary background - panels */ +@define-color bg-tertiary #494d64; /* Tertiary background - hover states */ +@define-color bg-selected #8bd5ca; /* Selection background */ + +@define-color fg-primary #cad3f5; /* Primary text - cream/off-white */ +@define-color fg-secondary #d5c4a1; /* Secondary text - muted cream */ +@define-color fg-tertiary #bdae93; /* Tertiary text - greyish cream */ +@define-color fg-disabled #665c54; /* Disabled text - dark grey */ + +@define-color accent-green #8bd5ca; /* Spotify green accent */ +@define-color accent-orange #f5a97f; /* Warm orange accent */ +@define-color accent-red #ed8796; /* Error/critical red */ +@define-color accent-maroon #ee99a0; /* Error/critical red */ +@define-color accent-blue #8aadf4; /* Info blue */ +@define-color accent-purple #c6a0f6; /* Purple accent */ + + +@define-color accent-primary #8bd5ca; /* alternative color */ +@define-color accent-secondary #c6a0f6; /* selected and hightlighted stuff */ + +@define-color border-primary #8bd5ca; /* Primary border color */ +@define-color border-focus #c6a0f6; /* Focus border - green accent */ + +/* Special Purpose Colors */ +@define-color mpris-album-art-overlay rgba(0, 0, 0, 0.55); +@define-color mpris-button-hover rgba(0, 0, 0, 0.5); + + +:root { + --container-border-radius: 4px; + + --widget-padding: 12px 0px; + --widget-border-radius: 10px; + + --transition-color: background-color 200ms ease-out, color 200ms ease-out; +} + +/* ======================================================================== + GLOBAL STYLES +======================================================================== */ +* { + outline: none; + font-family: "JetbrainsMono Nerd Font", monospace; + font-size: 18px; + text-shadow: none; + color: @fg-primary; +} + +/* + * ── Rest of the screen overlay ──────────────────────────────────────── +*/ +.blank-window { + background-color: rgba(0, 0, 0, 0.25); + transition: background-color 500ms ease; +} + +.text-box label { + /* Fixes base GTK 4 CSS setting a filter of opacity 50% for some odd reason */ + filter: none; +} + +/* ======================================================================== + CONTROL CENTER - Main notification panel +======================================================================== */ +.control-center { + background-color: @bg-primary; + box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.65); + border: 2px solid @border-primary; + padding: .75rem; + border-radius: var(--container-border-radius); +} + +/* + * ── Each item box ───────────────────────────────────────────────────── +*/ +.control-center > viewport > .vertical > * { + border-radius: var(--widget-border-radius); + padding: 0.75rem; +} + +.control-center > viewport > box.vertical > * { + margin-bottom: 1rem; +} + + +.control-center > viewport > box.vertical > *:nth-child(5), +.control-center > viewport > box.vertical > *:last-child { + margin-bottom: 0; + padding: 0; +} + +.notification-row { + background: none; + outline: none; +} + +.control-center .notification-row .notification-background { + border-radius: var(--container-border-radius); + margin-top: 5px; + background: none; +} + +.control-center .notification-row .notification-background .notification { + border-radius: var(--container-border-radius); +} + +.control-center .notification-row .notification-background .close-button { + border-radius: var(--container-border-radius); +} + +.control-center-clear-all label { + font-size: 1rem; +} + +/* ======================================================================== + NOTIFICATION STYLES +======================================================================== */ +.floating-notifications { + background: transparent; + margin-right: 10px; +} + +.floating-notifications .notification { + margin-bottom: 10px; +} + +.notification { + border-radius: var(--container-border-radius); + border: 1px solid @border-primary; +} + +.notification.low, +.notification.normal { + background-color: @bg-secondary; +} + +/* Notification Priority Styles */ +.notification.critical { + background-color: @bg-secondary; + border-color: @accent-red; + box-shadow: 0 0 1px 1px @accent-red; +} + + +.notification > *:last-child > * { + margin: 5px; +} + +/* Notification Content */ +.notification-content { + padding: 15px 10px 10px 20px; + border-radius: 4px; +} + +/* Text Elements */ +.summary { + font-size: 1.1rem; +} + +.time { + font-size: 0.8rem; +} + +.body { + font-size: 1rem; +} + +/* Notification Actions */ +.notification-action > button { + padding: unset; + margin: unset; + border-radius: 4px; +} + +.notification-action > label { + font-size: 1rem; + font-weight: normal; +} + +/* Close Button */ +.close-button { + font-size: 1rem; + background-color: @bg-tertiary; +} + +.close-button:hover { + background-color: @accent-red; +} + +/* ======================================================================== + NOTIFICATION GROUPS +======================================================================== */ +.control-center-list { + background: none; +} + + +.notification-group-header, +.notification-group-icon { + font-size: 0.9rem; +} + +.notification-group-collapse-button, +.notification-group-close-all-button { + background-color: @bg-tertiary; + border-radius: 50%; +} + +.notification-group-collapse-button:hover { + background-color: @accent-blue; +} + +.notification-group-close-all-button:hover { + background-color: @accent-red; +} + +/* ======================================================================== + SCROLLBARS & SLIDERS +======================================================================== */ +trough highlight { + background: @accent-blue; + border-radius: 4px; +} + +scale trough { + margin: 0rem 1rem; + background-color: @bg-tertiary; + min-height: 8px; + min-width: 70px; + border-radius: 4px; +} + +slider { + background-color: @fg-primary; + border-radius: 50%; + transition: var(--transition-color); +} + +slider:hover { + background-color: @accent-secondary; +} + +tooltip { + font-size: 0.25rem; + background-color: @bg-tertiary; + border-radius: 4px; +} + +/* ======================================================================== + WIDGET STYLES +======================================================================== */ + +/* ======================================================================== + BUTTONS GRID WIDGET - Quick action buttons +======================================================================== */ +.widget-buttons-grid { + font-size: 1rem; + background: @bg-secondary; +} + +.widget-buttons-grid > flowbox > flowboxchild > button { + background: @bg-secondary; + /* border: 1px solid @accent-green; */ + box-shadow: 0px 0px 10px @bg-primary; + border-radius: 4px; + padding: 12px 0px; + transition: background-color 0.15s ease, color 0.15s ease; +} + +.widget-buttons-grid > flowbox > flowboxchild > button:hover { + background: @bg-selected; + color: @bg-primary; +} + +.widget-buttons-grid > flowbox > flowboxchild > button:hover > label { + color: @bg-primary; +} + +.widget-buttons-grid > flowbox > flowboxchild > button.toggle:checked { + background: @accent-green; + color: @bg-primary; +} + +.widget-buttons-grid > flowbox > flowboxchild > button.toggle:checked > label { + color: @bg-primary; +} + +.widget-buttons-grid > flowbox > flowboxchild > button.toggle:checked:hover { + background: @accent-green; + color: @bg-primary; +} + +.widget-buttons-grid > flowbox > flowboxchild > button.toggle:checked:hover > label { + color: @bg-primary; +} + +/* ======================================================================== + MPRIS WIDGET - Media player controls +======================================================================== */ + +.widget-mpris { + background: @bg-secondary; + border-radius: var(--widget-border-radius); +} + +.mpris-background { + background: transparent; + opacity: 0; +} + +.widget-mpris .widget-mpris-player { + background: transparent; +} + +.widget-mpris .widget-mpris-player .widget-mpris-album-art { + border-radius: var(--widget-border-radius); +} + +.widget-mpris .widget-mpris-player .widget-mpris-title { + font-weight: bold; + font-size: 1.2rem; + color: @accent-purple; +} + +.widget-mpris .widget-mpris-player .widget-mpris-subtitle { + font-size: 1rem; + color: @accent-purple; +} + +.widget-mpris .widget-mpris-player > box > button:hover { + background-color: @mpris-button-hover; +} + +.widget-mpris > box > button:hover { + background: alpha(@bg-selected, 0.6); +} + +/* ======================================================================== + VOLUME WIDGET - Audio controls +======================================================================== */ +.widget-volume { + background-color: @bg-secondary; +} + +.widget-volume trough highlight { + background: @bg-selected; +} + +.widget-volume > box > button { + border: none; + background-color: @bg-tertiary; +} +.widget-volume > box > button:active, +.widget-volume > box > button:hover { + background-color: @bg-selected; + color: @bg-primary; +} + +.per-app-volume { + background: inherit; + padding: 4px 8px 8px 8px; + margin: 0px 48px 8px 8px; + border-radius: var(--widget-border-radius); +} + +/* ======================================================================== + BACKLIGHT WIDGET - Brightness controls +======================================================================== */ +.widget-backlight { + margin: unset; + font-size: 1.1rem; +} + +/* ======================================================================== + DND WIDGET - Do Not Disturb toggle +======================================================================== */ + +/* DND text */ +.widget-dnd > label { + color: @accent-purple; /* Replace with your desired color */ +} +.widget-dnd { + font-weight: bold; + margin: unset; +} + +.widget-dnd > switch { + font-size: initial; + border-radius: 4px; + background: @bg-tertiary; + border: none; + box-shadow: none; + padding: 3px; +} + +.widget-dnd > switch:checked { + background: @accent-purple; +} + +.widget-dnd > switch slider { + background: @bg-primary; + border-radius: 4px; + min-width: 18px; + min-height: 18px; +} + +/* ======================================================================== + TITLE WIDGET - Header with clear all button +======================================================================== */ +.widget-title, .widget-inhibitors { + font-weight: bold; +} + +.widget-title > label { + font-size: 1.25rem; +} + +.widget-inhibitors > label { + font-size: 1rem; +} + +.widget-title > button, .widget-inhibitors > button { + background: @accent-red; + border-radius: var(--widget-border-radius); + transition: var(--transition-color); +} + +.widget-title > button:hover, .widget-inhibitors > button:hover { + background: @accent-maroon; + color: @bg-primary; + box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.65); +} + +.widget-title > button > label, .widget-inhibitors > button > label { + transition: color 200ms ease; +} + +.widget-title > button:hover > label, .widget-inhibitors > button:hover > label { + color: @bg-primary; +} diff --git a/Configs/waybar/.config/waybar/config.jsonc b/Configs/waybar/.config/waybar/config.jsonc index b0dfe6f..8198ba9 100644 --- a/Configs/waybar/.config/waybar/config.jsonc +++ b/Configs/waybar/.config/waybar/config.jsonc @@ -14,11 +14,12 @@ "modules-right": [ "tray", "idle_inhibitor", -// "network", + // "network", "bluetooth", "backlight", "wireplumber", "battery", + "custom/notification", "custom/power" ], @@ -129,5 +130,25 @@ }, "tray": { "show-passive-items": true + }, + "custom/notification": { + "tooltip": false, + "format": "{} {icon}", + "format-icons": { + "notification": "", + "none": "", + "dnd-notification": "", + "dnd-none": "", + "inhibited-notification": "", + "inhibited-none": "", + "dnd-inhibited-notification": "", + "dnd-inhibited-none": "" + }, + "return-type": "json", + "exec-if": "which swaync-client", + "exec": "swaync-client -swb", + "on-click": "swaync-client -t -sw", + "on-click-right": "swaync-client -d -sw", + "escape": true } } From c5618f2f2c5bffb19fc6d92c6aa0faf1bab3bf2f Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 27 Aug 2025 14:44:37 -0400 Subject: [PATCH 122/152] minor updates --- Configs/atuin/.config/atuin/config.toml | 2 +- .../nvim/.config/nvim/lua/aleidk/options.lua | 3 +- Configs/swaync/.config/swaync/config.json | 41 +++++++++++++++---- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/Configs/atuin/.config/atuin/config.toml b/Configs/atuin/.config/atuin/config.toml index 84fd8a8..d8dd788 100644 --- a/Configs/atuin/.config/atuin/config.toml +++ b/Configs/atuin/.config/atuin/config.toml @@ -56,7 +56,7 @@ filter_mode = "global" ## which filter mode to use when atuin is invoked from a shell up-key binding ## the accepted values are identical to those of "filter_mode" ## leave unspecified to use same mode set in "filter_mode" -filter_mode_shell_up_key_binding = "host" +filter_mode_shell_up_key_binding = "session" ## which search mode to use when atuin is invoked from a shell up-key binding ## the accepted values are identical to those of "search_mode" diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua index d6f7c93..816ac44 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ b/Configs/nvim/.config/nvim/lua/aleidk/options.lua @@ -164,11 +164,12 @@ vim.lsp.enable({ "biome", "fish_lsp", "hyprls", + "intelephense", + "jsonls", "lua_ls", "nushell", "pyright", "ruff", - "intelephense", -- "rust_analyzer", -- managed by rustacean.nvim }) diff --git a/Configs/swaync/.config/swaync/config.json b/Configs/swaync/.config/swaync/config.json index 41d2483..1ab7b9c 100644 --- a/Configs/swaync/.config/swaync/config.json +++ b/Configs/swaync/.config/swaync/config.json @@ -101,18 +101,28 @@ "image-size": 80 }, "buttons-grid": { + "buttons-per-row": 5, "actions": [ { - "label": "󰄜", - "type": "normal", - "command": "scrcpy", - "right-click-command": "scrcpy --help | head -20 | foot -e less" + "label": "󰒍", + "type": "toggle", + "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && tailscale up || tailscale down'", + "update-command": "sh -c 'tailscale status >/dev/null && echo true || echo false'" }, { - "label": "󰌘", - "type": "normal", - "command": "kdeconnect-app", - "right-click-command": "kdeconnect-settings" + "label": "", + "type": "toggle", + "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && systemctl --user stop hypridle || systemctl --user start hypridle'", + "update-command": "sh -c 'systemctl --user is-active hypridle -q && echo false || echo true'" + }, + + { + "label": "", + "type": "toggle", + "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && bluetoothctl -- power off || bluetoothctl -- power on'", + "update-command": "sh -c '[[ -n $(bluetoothctl show | grep \\\"PowerState: on\\\") ]] && echo true || echo false'", + "right-click-command": "blueman-manager", + "tooltip": "Bluetooth" }, { "label": " ", @@ -127,6 +137,21 @@ "active": false, "command": "sh -c '[[ $SWAYNC_TOGGLE_STATE == true ]] && pactl set-sink-mute @DEFAULT_SINK@ 1 || pactl set-sink-mute @DEFAULT_SINK@ 0'", "update-command": "sh -c '[[ $(pactl get-sink-mute @DEFAULT_SINK@) == *yes* ]] && echo true || echo false'" + }, + { + "label": "󰜉", + "command": "reboot", + "tooltip": "Reboot" + }, + { + "label": "⏻", + "command": "shutdown now", + "tooltip": "Power Off" + }, + { + "label": "󰍁", + "command": "hyprlock", + "tooltip": "Lock" } ] } From 23b6c0a596a6e5d6efec6365543138d0046e12c9 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 1 Sep 2025 12:10:36 -0400 Subject: [PATCH 123/152] migrate to dotter --- .dotter/aleidk-work-laptop.toml | 7 + .dotter/global.toml | 37 +++ Configs/bin/.local/bin/youtube-music-updater | 37 --- Configs/fish/.config/fish/conf.d/uv.env.fish | 2 - Configs/foot/.config/foot/foot.ini | 197 --------------- .../.config/foot/themes/catppuccin/LICENSE | 21 -- .../.config/foot/themes/catppuccin/README.md | 32 --- .../foot/themes/catppuccin/assets/foot.png | Bin 320256 -> 0 bytes .../themes/catppuccin/catppuccin-frappe.conf | 19 -- .../themes/catppuccin/catppuccin-latte.conf | 19 -- .../catppuccin/catppuccin-macchiato.conf | 19 -- .../themes/catppuccin/catppuccin-mocha.conf | 19 -- .../foot/themes/catppuccin/dot_editorconfig | 34 --- .../.config/foot/themes/catppuccin/dot_git | 1 - Configs/helix/.config/helix/config.toml | 69 ------ Configs/helix/.config/helix/languages.toml | 3 - Configs/hypr/.config/hypr/hyprland.conf | 1 - .../after/queries/blade/highlights.scm | 9 - .../after/queries/blade/injections.scm | 3 - Configs/nvim_old/.config/nvim_old/init.lua | 7 - .../nvim_old/.config/nvim_old/lazy-lock.json | 57 ----- .../.config/nvim_old/lua/aleidk/autocmds.lua | 10 - .../.config/nvim_old/lua/aleidk/constants.lua | 63 ----- .../.config/nvim_old/lua/aleidk/keymaps.lua | 77 ------ .../.config/nvim_old/lua/aleidk/lazy.lua | 35 --- .../.config/nvim_old/lua/aleidk/options.lua | 144 ----------- .../lua/aleidk/plugins-base/auto-pairs.lua | 6 - .../lua/aleidk/plugins-base/bookmarks.lua | 38 --- .../lua/aleidk/plugins-base/comments.lua | 28 --- .../lua/aleidk/plugins-base/file-explorer.lua | 33 --- .../aleidk/plugins-base/indent-blankline.lua | 30 --- .../lua/aleidk/plugins-base/treesitter.lua | 90 ------- .../nvim_old/lua/aleidk/plugins-base/ui.lua | 217 ----------------- .../lua/aleidk/plugins-base/undo-tree.lua | 13 - .../lua/aleidk/plugins-core/colorscheme.lua | 57 ----- .../nvim_old/lua/aleidk/plugins-core/init.lua | 22 -- .../lua/aleidk/plugins-core/key-help.lua | 85 ------- .../lua/aleidk/plugins-core/lualine.lua | 189 --------------- .../lua/aleidk/plugins-core/markdown.lua | 15 -- .../lua/aleidk/plugins-core/smart-splits.lua | 67 ----- .../lua/aleidk/plugins-core/surround.lua | 6 - .../lua/aleidk/plugins-core/telescope.lua | 83 ------- .../lua/aleidk/plugins-core/todo-comments.lua | 12 - .../lua/aleidk/plugins-ide/color-picker.lua | 14 -- .../lua/aleidk/plugins-ide/completion.lua | 92 ------- .../lua/aleidk/plugins-ide/database.lua | 44 ---- .../lua/aleidk/plugins-ide/doc-gen.lua | 15 -- .../lua/aleidk/plugins-ide/formatter.lua | 124 ---------- .../nvim_old/lua/aleidk/plugins-ide/git.lua | 52 ---- .../nvim_old/lua/aleidk/plugins-ide/init.lua | 21 -- .../lua/aleidk/plugins-ide/linters.lua | 25 -- .../nvim_old/lua/aleidk/plugins-ide/lsp.lua | 229 ------------------ .../lua/aleidk/plugins-ide/luasnip.lua | 27 --- .../lua/aleidk/plugins-ide/remote-sshfs.lua | 59 ----- .../lua/aleidk/plugins-ide/task-runner.lua | 171 ------------- .../lua/aleidk/plugins-ide/trouble.lua | 93 ------- .../aleidk/plugins-ide/typescript-tools.lua | 18 -- .../.config/nvim_old/lua/aleidk/utils.lua | 7 - Configs/zed/.config/zed/keymap.json | 183 -------------- Configs/zed/.config/zed/private_settings.json | 73 ------ Configs/zed/.config/zed/themes/.keep | 0 .../alacritty/alacritty.toml | 0 .../alacritty/alacritty.yml | 0 .../alacritty/themes/.keep | 0 .../.config => configs}/atuin/config.toml | 0 .../themes/catppuccin-macchiato-teal.toml | 0 {Configs => configs}/bash/.bash_profile | 0 {Configs => configs}/bash/.bashrc | 0 {Configs/bat/.config => configs}/bat/config | 0 .../containers/systemd/dev-databases.pod | 0 .../containers/systemd/dev-dbui.container | 0 .../containers/systemd/dev-postgres.container | 0 .../fish/completions/.config/fish/config.fish | 0 .../completions/.config/fish/fish_variables | 0 .../fish/completions/atuin.fish | 0 .../fish/completions/fish-lsp.fish | 0 .../fish/completions/fisher.fish | 0 .../fish/completions/mise.fish | 0 .../fish/.config => configs}/fish/config.fish | 0 .../.config => configs}/fish/fish_variables | 0 .../functions/_pure_check_availability.fish | 0 .../_pure_check_for_new_release.fish | 0 ...ure_detect_container_by_cgroup_method.fish | 0 .../_pure_detect_container_by_pid_method.fish | 0 .../fish/functions/_pure_format_time.fish | 0 .../functions/_pure_get_prompt_symbol.fish | 0 .../functions/_pure_is_inside_container.fish | 0 .../_pure_is_single_line_prompt.fish | 0 .../fish/functions/_pure_k8s_context.fish | 0 .../fish/functions/_pure_k8s_namespace.fish | 0 .../fish/functions/_pure_parse_directory.fish | 0 .../functions/_pure_parse_git_branch.fish | 0 .../_pure_place_iterm2_prompt_mark.fish | 0 .../functions/_pure_prefix_root_prompt.fish | 0 .../fish/functions/_pure_print_prompt.fish | 0 .../functions/_pure_print_prompt_rows.fish | 0 .../fish/functions/_pure_prompt.fish | 0 .../functions/_pure_prompt_aws_profile.fish | 0 .../functions/_pure_prompt_beginning.fish | 0 .../_pure_prompt_command_duration.fish | 0 .../functions/_pure_prompt_container.fish | 0 .../_pure_prompt_current_folder.fish | 0 .../fish/functions/_pure_prompt_ending.fish | 0 .../functions/_pure_prompt_first_line.fish | 0 .../fish/functions/_pure_prompt_git.fish | 0 .../functions/_pure_prompt_git_branch.fish | 0 .../functions/_pure_prompt_git_dirty.fish | 0 .../_pure_prompt_git_pending_commits.fish | 0 .../functions/_pure_prompt_git_stash.fish | 0 .../fish/functions/_pure_prompt_jobs.fish | 0 .../fish/functions/_pure_prompt_k8s.fish | 0 .../fish/functions/_pure_prompt_new_line.fish | 0 .../functions/_pure_prompt_nixdevshell.fish | 0 .../fish/functions/_pure_prompt_ssh.fish | 0 .../fish/functions/_pure_prompt_symbol.fish | 0 .../functions/_pure_prompt_system_time.fish | 0 .../fish/functions/_pure_prompt_vimode.fish | 0 .../functions/_pure_prompt_virtualenv.fish | 0 .../fish/functions/_pure_set_color.fish | 0 .../fish/functions/_pure_set_default.fish | 0 .../fish/functions/_pure_string_width.fish | 0 .../fish/functions/_pure_user_at_host.fish | 0 .../fish/functions/aliases.fish | 0 .../fish/functions/curl.fish | 0 .../fish/functions/fish_greeting.fish | 0 .../fish/functions/fish_mode_prompt.fish | 0 .../fish/functions/fish_prompt.fish | 0 .../fish/functions/fish_title.fish | 0 .../fish/functions/fisher.fish | 0 .../fish/functions/split_run.fish | 0 .../fish/functions/yy.fish | 0 .../fish/themes/Catppuccin Frappe.theme | 0 .../fish/themes/Catppuccin Latte.theme | 0 .../fish/themes/Catppuccin Macchiato.theme | 0 .../fish/themes/Catppuccin Mocha.theme | 0 {Configs/fzf/.config => configs}/fzf/forgitrc | 0 {Configs/fzf/.config => configs}/fzf/fzfrc | 0 .../fzf/widgets/alias_widget.zsh | 0 .../fzf/widgets/atuin-history_widget.zsh | 0 .../fzf/widgets/cd-recent-dir_widget.zsh | 0 .../fzf/widgets/cd_widget.zsh | 0 .../fzf/widgets/dictionary_widget.zsh | 0 .../fzf/widgets/fzf-rg-launcher.zsh | 0 .../fzf/widgets/locate_widget.zsh | 0 .../fzf/widgets/man_widget.zsh | 0 .../.config => configs}/ghostty/config | 0 {Configs/git/.config => configs}/git/config | 0 {Configs/git/.config => configs}/git/ignore | 0 configs/hypr/almighty/hyprland.conf | 9 + .../hypr/base}/executable_gdm-wrapper.sh | 0 .../hypr => configs/hypr/base}/hypridle.conf | 0 .../hypr/base/hyprland.conf | 10 +- .../hypr => configs/hypr/base}/hyprlock.conf | 0 .../hypr => configs/hypr/base}/hyprpaper.conf | 0 .../hypr/base/include/.gitkeep | 0 .../hypr => configs/hypr/base}/theme.conf | 0 configs/hypr/work-laptop/hyprland.conf | 8 + .../ideavim => configs/jetbrains}/ideavimrc | 0 .../kitty/current-theme.conf | 0 .../.config => configs}/kitty/kitty.conf | 0 .../kitty/private_kitty.conf.bak | 0 .../.config => configs}/lazygit/config.yml | 0 {Configs/mako/.config => configs}/mako/config | 0 .../mise/.config => configs}/mise/config.toml | 0 .../mise/.config => configs}/mise/mise.lock | 0 .../mpv/.config => configs}/mpv/encoding.rst | 0 .../mpv/.config => configs}/mpv/input.conf | 0 .../mpv/mplayer-input.conf | 0 {Configs/mpv/.config => configs}/mpv/mpv.conf | 0 .../mpv/restore-old-bindings.conf | 0 .../mpv/script-opts/mpv_thumbnail_script.conf | 0 .../mpv/scripts/mpv-i3-floating-centered.lua | 0 .../mpv_thumbnail_script_client_osc.lua | 0 .../scripts/mpv_thumbnail_script_server-1.lua | 0 .../scripts/mpv_thumbnail_script_server-2.lua | 0 .../scripts/mpv_thumbnail_script_server.lua | 0 .../mpv/scripts/pause-indicator.lua | 0 .../.config => configs}/mpv/tech-overview.txt | 0 .../nvim/after/ftplugin/rust.lua | 0 .../nvim/.config => configs}/nvim/init.lua | 0 .../.config => configs}/nvim/lazy-lock.json | 0 .../nvim/lua/aleidk/autocmds.lua | 0 .../nvim/lua/aleidk/constants.lua | 0 .../nvim/lua/aleidk/keymaps.lua | 0 .../nvim/lua/aleidk/options.lua | 0 .../nvim/lua/aleidk/plugins/bookmarks.lua | 0 .../nvim/lua/aleidk/plugins/colorscheme.lua | 0 .../nvim/lua/aleidk/plugins/comments.lua | 0 .../nvim/lua/aleidk/plugins/completion.lua | 0 .../nvim/lua/aleidk/plugins/debug.lua | 0 .../nvim/lua/aleidk/plugins/file-explorer.lua | 0 .../nvim/lua/aleidk/plugins/formatter.lua | 0 .../nvim/lua/aleidk/plugins/fzf.lua | 0 .../nvim/lua/aleidk/plugins/init.lua | 0 .../lua/aleidk/plugins/language-support.lua | 0 .../nvim/lua/aleidk/plugins/linters.lua | 0 .../nvim/lua/aleidk/plugins/markdown.lua | 0 .../nvim/lua/aleidk/plugins/mini.lua | 0 .../nvim/lua/aleidk/plugins/remote-dev.lua | 0 .../nvim/lua/aleidk/plugins/smart-splits.lua | 0 .../nvim/lua/aleidk/plugins/training.lua | 0 .../nvim/lua/aleidk/plugins/treesitter.lua | 0 .../nvim/lua/aleidk/plugins/trouble.lua | 0 .../nvim/snippets/global.json | 0 .../rofi/.config => configs}/rofi/config.rasi | 0 .../rofi/.config => configs}/rofi/theme.rasi | 0 .../sesh/.config => configs}/sesh/sesh.toml | 0 .../starship}/starship.toml | 0 .../swappy/.config => configs}/swappy/config | 0 .../.config => configs}/swaync/config.json | 0 .../.config => configs}/swaync/style.css | 0 .../tmux/.config => configs/tmux}/tmux.conf | 0 {Configs/uwsm/.config => configs}/uwsm/env | 0 .../vimiv/.config => configs}/vimiv/keys.conf | 0 .../.config => configs}/vimiv/styles/default | 0 .../vimiv/styles/material-darker | 0 .../.config => configs}/vimiv/vimiv.conf | 0 .../.config => configs}/waybar/config.jsonc | 0 .../.config => configs}/waybar/style-bkp.css | 0 .../.config => configs}/waybar/style.css | 0 .../.config => configs}/waybar/sway-bar.sh | 0 .../waybar/themes/catppuccin-macchiato.css | 0 .../.config => configs}/wezterm/wezterm.lua | 0 .../wlogout/icons/hibernate.svg | 0 .../wlogout/icons/lock.svg | 0 .../wlogout/icons/logout.svg | 0 .../wlogout/icons/reboot.svg | 0 .../wlogout/icons/shutdown.svg | 0 .../wlogout/icons/suspend.svg | 0 .../.config => configs}/wlogout/layout | 0 .../.config => configs}/wlogout/style.css | 0 .../.config => configs}/wpaperd/config.toml | 0 .../yazi/.config => configs}/yazi/init.lua | 0 .../yazi/.config => configs}/yazi/keymap.toml | 0 .../.config => configs}/yazi/package.toml | 0 .../.config => configs}/yazi/plugins/.keep | 0 .../yazi/.config => configs}/yazi/theme.toml | 0 .../yazi/.config => configs}/yazi/yazi.toml | 0 .../.config => configs}/zellij/config.kdl | 0 .../zellij/layouts/code.kdl | 0 .../zsh/.config/zsh/aliases/aliases.zsh | 0 .../zsh/.config/zsh/aliases/configs.zsh | 0 .../zsh/.config/zsh/aliases/fzf.zsh | 0 .../zsh/.config/zsh/aliases/nvim.zsh | 0 .../zsh/.config/zsh/aliases/pnpm.zsh | 0 .../zsh/.config/zsh/completion.zsh | 0 .../zsh/.config/zsh/completions/_alacritty | 0 .../zsh/.config/zsh/completions/_cargo | 0 .../zsh/.config/zsh/completions/_chezmoi | 0 .../zsh/.config/zsh/completions/_cht | 0 .../zsh/.config/zsh/completions/_globdots | 0 .../zsh/.config/zsh/completions/_just | 0 .../zsh/.config/zsh/completions/_lsd | 0 .../zsh/.config/zsh/completions/_rg | 0 .../zsh/.config/zsh/completions/_rtx | 0 .../zsh/.config/zsh/completions/_rye | 0 .../zsh/.config/zsh/completions/_starship | 0 .../zsh/.config/zsh/completions/_tea | 0 .../zsh/.config/zsh/completions/_tldr | 0 .../zsh/.config/zsh/completions/_zellij | 0 .../zsh/.config/zsh/functions/fedora.zsh | 0 .../zsh/.config/zsh/functions/flatpak.zsh | 0 .../zsh/.config/zsh/functions/functions.zsh | 0 {Configs => configs}/zsh/.zprofile | 0 {Configs => configs}/zsh/.zshrc | 0 265 files changed, 62 insertions(+), 3125 deletions(-) create mode 100644 .dotter/aleidk-work-laptop.toml create mode 100644 .dotter/global.toml delete mode 100755 Configs/bin/.local/bin/youtube-music-updater delete mode 100644 Configs/fish/.config/fish/conf.d/uv.env.fish delete mode 100644 Configs/foot/.config/foot/foot.ini delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/LICENSE delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/README.md delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/assets/foot.png delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/catppuccin-frappe.conf delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/catppuccin-latte.conf delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/catppuccin-macchiato.conf delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/catppuccin-mocha.conf delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/dot_editorconfig delete mode 100644 Configs/foot/.config/foot/themes/catppuccin/dot_git delete mode 100644 Configs/helix/.config/helix/config.toml delete mode 100644 Configs/helix/.config/helix/languages.toml delete mode 100644 Configs/hypr/.config/hypr/hyprland.conf delete mode 100644 Configs/nvim_old/.config/nvim_old/after/queries/blade/highlights.scm delete mode 100644 Configs/nvim_old/.config/nvim_old/after/queries/blade/injections.scm delete mode 100644 Configs/nvim_old/.config/nvim_old/init.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lazy-lock.json delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/autocmds.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/constants.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/keymaps.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/lazy.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/options.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/auto-pairs.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/bookmarks.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/comments.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/file-explorer.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/indent-blankline.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/treesitter.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/ui.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/undo-tree.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/colorscheme.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/init.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/key-help.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/lualine.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/markdown.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/smart-splits.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/surround.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/telescope.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/todo-comments.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/color-picker.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/completion.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/database.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/doc-gen.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/formatter.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/git.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/init.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/linters.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/lsp.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/luasnip.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/remote-sshfs.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/task-runner.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/trouble.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/typescript-tools.lua delete mode 100644 Configs/nvim_old/.config/nvim_old/lua/aleidk/utils.lua delete mode 100644 Configs/zed/.config/zed/keymap.json delete mode 100644 Configs/zed/.config/zed/private_settings.json delete mode 100644 Configs/zed/.config/zed/themes/.keep rename {Configs/alacritty/.config => configs}/alacritty/alacritty.toml (100%) rename {Configs/alacritty/.config => configs}/alacritty/alacritty.yml (100%) rename {Configs/alacritty/.config => configs}/alacritty/themes/.keep (100%) rename {Configs/atuin/.config => configs}/atuin/config.toml (100%) rename {Configs/atuin/.config => configs}/atuin/themes/catppuccin-macchiato-teal.toml (100%) rename {Configs => configs}/bash/.bash_profile (100%) rename {Configs => configs}/bash/.bashrc (100%) rename {Configs/bat/.config => configs}/bat/config (100%) rename {Configs/containers/.config => configs}/containers/systemd/dev-databases.pod (100%) rename {Configs/containers/.config => configs}/containers/systemd/dev-dbui.container (100%) rename {Configs/containers/.config => configs}/containers/systemd/dev-postgres.container (100%) rename {Configs/fish/.config => configs}/fish/completions/.config/fish/config.fish (100%) rename {Configs/fish/.config => configs}/fish/completions/.config/fish/fish_variables (100%) rename {Configs/fish/.config => configs}/fish/completions/atuin.fish (100%) rename {Configs/fish/.config => configs}/fish/completions/fish-lsp.fish (100%) rename {Configs/fish/.config => configs}/fish/completions/fisher.fish (100%) rename {Configs/fish/.config => configs}/fish/completions/mise.fish (100%) rename {Configs/fish/.config => configs}/fish/config.fish (100%) rename {Configs/fish/.config => configs}/fish/fish_variables (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_check_availability.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_check_for_new_release.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_detect_container_by_cgroup_method.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_detect_container_by_pid_method.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_format_time.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_get_prompt_symbol.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_is_inside_container.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_is_single_line_prompt.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_k8s_context.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_k8s_namespace.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_parse_directory.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_parse_git_branch.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_place_iterm2_prompt_mark.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prefix_root_prompt.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_print_prompt.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_print_prompt_rows.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_aws_profile.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_beginning.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_command_duration.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_container.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_current_folder.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_ending.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_first_line.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_git.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_git_branch.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_git_dirty.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_git_pending_commits.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_git_stash.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_jobs.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_k8s.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_new_line.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_nixdevshell.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_ssh.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_symbol.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_system_time.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_vimode.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_prompt_virtualenv.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_set_color.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_set_default.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_string_width.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/_pure_user_at_host.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/aliases.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/curl.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/fish_greeting.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/fish_mode_prompt.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/fish_prompt.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/fish_title.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/fisher.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/split_run.fish (100%) rename {Configs/fish/.config => configs}/fish/functions/yy.fish (100%) rename {Configs/fish/.config => configs}/fish/themes/Catppuccin Frappe.theme (100%) rename {Configs/fish/.config => configs}/fish/themes/Catppuccin Latte.theme (100%) rename {Configs/fish/.config => configs}/fish/themes/Catppuccin Macchiato.theme (100%) rename {Configs/fish/.config => configs}/fish/themes/Catppuccin Mocha.theme (100%) rename {Configs/fzf/.config => configs}/fzf/forgitrc (100%) rename {Configs/fzf/.config => configs}/fzf/fzfrc (100%) rename {Configs/fzf/.config => configs}/fzf/widgets/alias_widget.zsh (100%) rename {Configs/fzf/.config => configs}/fzf/widgets/atuin-history_widget.zsh (100%) rename {Configs/fzf/.config => configs}/fzf/widgets/cd-recent-dir_widget.zsh (100%) rename {Configs/fzf/.config => configs}/fzf/widgets/cd_widget.zsh (100%) rename {Configs/fzf/.config => configs}/fzf/widgets/dictionary_widget.zsh (100%) rename {Configs/fzf/.config => configs}/fzf/widgets/fzf-rg-launcher.zsh (100%) rename {Configs/fzf/.config => configs}/fzf/widgets/locate_widget.zsh (100%) rename {Configs/fzf/.config => configs}/fzf/widgets/man_widget.zsh (100%) rename {Configs/ghostty/.config => configs}/ghostty/config (100%) rename {Configs/git/.config => configs}/git/config (100%) rename {Configs/git/.config => configs}/git/ignore (100%) create mode 100644 configs/hypr/almighty/hyprland.conf rename {Configs/hypr/.config/hypr => configs/hypr/base}/executable_gdm-wrapper.sh (100%) rename {Configs/hypr/.config/hypr => configs/hypr/base}/hypridle.conf (100%) rename Configs/hypr/.config/hypr/base.conf => configs/hypr/base/hyprland.conf (98%) rename {Configs/hypr/.config/hypr => configs/hypr/base}/hyprlock.conf (100%) rename {Configs/hypr/.config/hypr => configs/hypr/base}/hyprpaper.conf (100%) rename Configs/foot/.config/foot/themes/catppuccin/assets/empty_dot_gitkeep => configs/hypr/base/include/.gitkeep (100%) rename {Configs/hypr/.config/hypr => configs/hypr/base}/theme.conf (100%) create mode 100644 configs/hypr/work-laptop/hyprland.conf rename {Configs/jetbrains/.config/ideavim => configs/jetbrains}/ideavimrc (100%) rename {Configs/kitty/.config => configs}/kitty/current-theme.conf (100%) rename {Configs/kitty/.config => configs}/kitty/kitty.conf (100%) rename {Configs/kitty/.config => configs}/kitty/private_kitty.conf.bak (100%) rename {Configs/lazygit/.config => configs}/lazygit/config.yml (100%) rename {Configs/mako/.config => configs}/mako/config (100%) rename {Configs/mise/.config => configs}/mise/config.toml (100%) rename {Configs/mise/.config => configs}/mise/mise.lock (100%) rename {Configs/mpv/.config => configs}/mpv/encoding.rst (100%) rename {Configs/mpv/.config => configs}/mpv/input.conf (100%) rename {Configs/mpv/.config => configs}/mpv/mplayer-input.conf (100%) rename {Configs/mpv/.config => configs}/mpv/mpv.conf (100%) rename {Configs/mpv/.config => configs}/mpv/restore-old-bindings.conf (100%) rename {Configs/mpv/.config => configs}/mpv/script-opts/mpv_thumbnail_script.conf (100%) rename {Configs/mpv/.config => configs}/mpv/scripts/mpv-i3-floating-centered.lua (100%) rename {Configs/mpv/.config => configs}/mpv/scripts/mpv_thumbnail_script_client_osc.lua (100%) rename {Configs/mpv/.config => configs}/mpv/scripts/mpv_thumbnail_script_server-1.lua (100%) rename {Configs/mpv/.config => configs}/mpv/scripts/mpv_thumbnail_script_server-2.lua (100%) rename {Configs/mpv/.config => configs}/mpv/scripts/mpv_thumbnail_script_server.lua (100%) rename {Configs/mpv/.config => configs}/mpv/scripts/pause-indicator.lua (100%) rename {Configs/mpv/.config => configs}/mpv/tech-overview.txt (100%) rename {Configs/nvim/.config => configs}/nvim/after/ftplugin/rust.lua (100%) rename {Configs/nvim/.config => configs}/nvim/init.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lazy-lock.json (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/autocmds.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/constants.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/keymaps.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/options.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/bookmarks.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/colorscheme.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/comments.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/completion.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/debug.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/file-explorer.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/formatter.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/fzf.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/init.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/language-support.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/linters.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/markdown.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/mini.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/remote-dev.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/smart-splits.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/training.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/treesitter.lua (100%) rename {Configs/nvim/.config => configs}/nvim/lua/aleidk/plugins/trouble.lua (100%) rename {Configs/nvim/.config => configs}/nvim/snippets/global.json (100%) rename {Configs/rofi/.config => configs}/rofi/config.rasi (100%) rename {Configs/rofi/.config => configs}/rofi/theme.rasi (100%) rename {Configs/sesh/.config => configs}/sesh/sesh.toml (100%) rename {Configs/starship/.config => configs/starship}/starship.toml (100%) rename {Configs/swappy/.config => configs}/swappy/config (100%) rename {Configs/swaync/.config => configs}/swaync/config.json (100%) rename {Configs/swaync/.config => configs}/swaync/style.css (100%) rename {Configs/tmux/.config => configs/tmux}/tmux.conf (100%) rename {Configs/uwsm/.config => configs}/uwsm/env (100%) rename {Configs/vimiv/.config => configs}/vimiv/keys.conf (100%) rename {Configs/vimiv/.config => configs}/vimiv/styles/default (100%) rename {Configs/vimiv/.config => configs}/vimiv/styles/material-darker (100%) rename {Configs/vimiv/.config => configs}/vimiv/vimiv.conf (100%) rename {Configs/waybar/.config => configs}/waybar/config.jsonc (100%) rename {Configs/waybar/.config => configs}/waybar/style-bkp.css (100%) rename {Configs/waybar/.config => configs}/waybar/style.css (100%) rename {Configs/waybar/.config => configs}/waybar/sway-bar.sh (100%) rename {Configs/waybar/.config => configs}/waybar/themes/catppuccin-macchiato.css (100%) rename {Configs/wezterm/.config => configs}/wezterm/wezterm.lua (100%) rename {Configs/wlogout/.config => configs}/wlogout/icons/hibernate.svg (100%) rename {Configs/wlogout/.config => configs}/wlogout/icons/lock.svg (100%) rename {Configs/wlogout/.config => configs}/wlogout/icons/logout.svg (100%) rename {Configs/wlogout/.config => configs}/wlogout/icons/reboot.svg (100%) rename {Configs/wlogout/.config => configs}/wlogout/icons/shutdown.svg (100%) rename {Configs/wlogout/.config => configs}/wlogout/icons/suspend.svg (100%) rename {Configs/wlogout/.config => configs}/wlogout/layout (100%) rename {Configs/wlogout/.config => configs}/wlogout/style.css (100%) rename {Configs/wpaperd/.config => configs}/wpaperd/config.toml (100%) rename {Configs/yazi/.config => configs}/yazi/init.lua (100%) rename {Configs/yazi/.config => configs}/yazi/keymap.toml (100%) rename {Configs/yazi/.config => configs}/yazi/package.toml (100%) rename {Configs/yazi/.config => configs}/yazi/plugins/.keep (100%) rename {Configs/yazi/.config => configs}/yazi/theme.toml (100%) rename {Configs/yazi/.config => configs}/yazi/yazi.toml (100%) rename {Configs/zellij/.config => configs}/zellij/config.kdl (100%) rename {Configs/zellij/.config => configs}/zellij/layouts/code.kdl (100%) rename {Configs => configs}/zsh/.config/zsh/aliases/aliases.zsh (100%) rename {Configs => configs}/zsh/.config/zsh/aliases/configs.zsh (100%) rename {Configs => configs}/zsh/.config/zsh/aliases/fzf.zsh (100%) rename {Configs => configs}/zsh/.config/zsh/aliases/nvim.zsh (100%) rename {Configs => configs}/zsh/.config/zsh/aliases/pnpm.zsh (100%) rename {Configs => configs}/zsh/.config/zsh/completion.zsh (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_alacritty (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_cargo (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_chezmoi (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_cht (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_globdots (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_just (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_lsd (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_rg (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_rtx (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_rye (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_starship (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_tea (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_tldr (100%) rename {Configs => configs}/zsh/.config/zsh/completions/_zellij (100%) rename {Configs => configs}/zsh/.config/zsh/functions/fedora.zsh (100%) rename {Configs => configs}/zsh/.config/zsh/functions/flatpak.zsh (100%) rename {Configs => configs}/zsh/.config/zsh/functions/functions.zsh (100%) rename {Configs => configs}/zsh/.zprofile (100%) rename {Configs => configs}/zsh/.zshrc (100%) diff --git a/.dotter/aleidk-work-laptop.toml b/.dotter/aleidk-work-laptop.toml new file mode 100644 index 0000000..05fd1ac --- /dev/null +++ b/.dotter/aleidk-work-laptop.toml @@ -0,0 +1,7 @@ +includes = [] +packages = ["default"] + +[files] +"configs/hypr/work-laptop/hyprland.conf" = "~/.config/hypr/include/work-laptop.conf" + +[variables] diff --git a/.dotter/global.toml b/.dotter/global.toml new file mode 100644 index 0000000..d1aeecc --- /dev/null +++ b/.dotter/global.toml @@ -0,0 +1,37 @@ +[settings] +default_target_type = "symbolic" + +[helpers] + +[default] +depends = [] + +[default.files] +"configs/fish" = "~/.config/fish" +"configs/alacritty" = "~/.config/alacritty" +"configs/atuin" = "~/.config/atuin" +"configs/bat" = "~/.config/bat" +"configs/containers" = "~/.config/containers" +"configs/fzf" = "~/.config/fzf" +"configs/ghostty" = "~/.config/ghostty" +"configs/git" = "~/.config/git" +"configs/hypr/base" = "~/.config/hypr" +"configs/kitty" = "~/.config/kitty" +"configs/lazygit" = "~/.config/lazygit" +"configs/mako" = "~/.config/mako" +"configs/mise" = "~/.config/mise" +"configs/mpv" = "~/.config/mpv" +"configs/nvim" = "~/.config/nvim" +"configs/rofi" = "~/.config/rofi" +"configs/swappy" = "~/.config/swappy" +"configs/swaync" = "~/.config/swaync" +"configs/uwsm" = "~/.config/uwsm" +"configs/vimiv" = "~/.config/vimiv" +"configs/waybar" = "~/.config/waybar" +"configs/wlogout" = "~/.config/wlogout" +"configs/wpaperd" = "~/.config/wpaperd" +"configs/yazi" = "~/.config/yazi" + + +[default.variables] + diff --git a/Configs/bin/.local/bin/youtube-music-updater b/Configs/bin/.local/bin/youtube-music-updater deleted file mode 100755 index 1670bb8..0000000 --- a/Configs/bin/.local/bin/youtube-music-updater +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/env bash - -package=$1 -shift - -if [[ -z $package ]]; then - echo "Please specify an installation method" - echo "Available methods: Flatpak, RPM" - exit 1 -fi - -DOWNLOAD_DIR="$HOME/.local/share/youtube-music-updater" -mkdir -p "$DOWNLOAD_DIR" - -latest=$(wget 'https://github.com/th-ch/youtube-music/releases/latest/download/latest-linux.yml' -q -O -) -version=$(echo "$latest" | grep 'version' | awk '{ print $2 }') -base_url="https://github.com/th-ch/youtube-music/releases/latest/download" - -echo "Downloading YouTube Music version $version" - -case "${package,,}" in -"flatpak") - wget "$base_url/YouTube-Music-$version-x86_64.flatpak" \ - -q --show-progress \ - -O "$DOWNLOAD_DIR/YouTube-Music-$version-x86_64.flatpak" - - flatpak remove --user --assumeyes --noninteractive com.github.th_ch.youtube_music - flatpak install --user --assumeyes --noninteractive "$DOWNLOAD_DIR/YouTube-Music-$version-x86_64.flatpak" - ;; -"rpm") - wget "$base_url/youtube-music-$version.x86_64.rpm" \ - -q --show-progress \ - -O "$DOWNLOAD_DIR/youtube-music-$version.x86_64.rpm" - - sudo dnf install --assumeyes "$DOWNLOAD_DIR/youtube-music-$version.x86_64.rpm" - ;; -esac diff --git a/Configs/fish/.config/fish/conf.d/uv.env.fish b/Configs/fish/.config/fish/conf.d/uv.env.fish deleted file mode 100644 index d97734b..0000000 --- a/Configs/fish/.config/fish/conf.d/uv.env.fish +++ /dev/null @@ -1,2 +0,0 @@ - -source "$HOME/.local/share/../bin/env.fish" diff --git a/Configs/foot/.config/foot/foot.ini b/Configs/foot/.config/foot/foot.ini deleted file mode 100644 index dc7c809..0000000 --- a/Configs/foot/.config/foot/foot.ini +++ /dev/null @@ -1,197 +0,0 @@ -# -*- conf -*- - -# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) -# term=foot (or xterm-256color if built with -Dterminfo=disabled) -# login-shell=no - -include=~/.config/foot/themes/catppuccin/catppuccin-macchiato.conf - -# app-id=foot -# title=foot -# locked-title=no - -font=JetBrainsMono NF:style=Regular:size=11 -font-bold=JetBrainsMono NF:style=Bold:size=11 -font-italic=JetBrainsMono NF:style=Italic:size=11 -font-bold-italic=JetBrainsMono NF:style=Bold Italic:size=11 -# line-height= -# letter-spacing=0 -# horizontal-letter-offset=0 -# vertical-letter-offset=0 -# underline-offset= -# box-drawings-uses-font-glyphs=no -# dpi-aware=auto - -# initial-window-size-pixels=700x500 # Or, -# initial-window-size-chars= -# initial-window-mode=windowed -pad=10x10 -# resize-delay-ms=100 - -# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} - -# bold-text-in-bright=no -# word-delimiters=,│`|:"'()[]{}<> -# selection-target=primary -# workers= - -[environment] -# name=value - -[bell] -# urgent=no -# notify=no -# command= -# command-focused=no - -[scrollback] -# lines=1000 -# multiplier=3.0 -# indicator-position=relative -# indicator-format= - -[url] -# launch=xdg-open ${url} -# label-letters=sadfjklewcmpgh -# osc8-underline=url-mode -# protocols=http, https, ftp, ftps, file, gemini, gopher -# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[] - -[cursor] -# style=block -# color= -# blink=no -# beam-thickness=1.5 -# underline-thickness= - -[mouse] -# hide-when-typing=no -# alternate-scroll-mode=yes - -[colors] -alpha=0.9 -# foreground=dcdccc -# background=111111 - -## Normal/regular colors (color palette 0-7) -# regular0=222222 # black -# regular1=cc9393 # red -# regular2=7f9f7f # green -# regular3=d0bf8f # yellow -# regular4=6ca0a3 # blue -# regular5=dc8cc3 # magenta -# regular6=93e0e3 # cyan -# regular7=dcdccc # white - -## Bright colors (color palette 8-15) -# bright0=666666 # bright black -# bright1=dca3a3 # bright red -# bright2=bfebbf # bright green -# bright3=f0dfaf # bright yellow -# bright4=8cd0d3 # bright blue -# bright5=fcace3 # bright magenta -# bright6=b3ffff # bright cyan -# bright7=ffffff # bright white - -## dimmed colors (see foot.ini(5) man page) -# dim0= -# ... -# dim7= - -## The remaining 256-color palette -# 16 = <256-color palette #16> -# ... -# 255 = <256-color palette #255> - -## Misc colors -# selection-foreground= -# selection-background= -# jump-labels= # black-on-yellow -# scrollback-indicator= # black-on-bright-blue -# search-box-no-match= # black-on-red -# search-box-match= # black-on-yellow -# urls= - -[csd] -preferred=none -# size=26 -# font= -# color= -# hide-when-typing=no -# border-width=0 -# border-color= -# button-width=26 -# button-color= -# button-minimize-color= -# button-maximize-color= -# button-close-color= - -[key-bindings] -# scrollback-up-page=Shift+Page_Up -# scrollback-up-half-page=none -# scrollback-up-line=none -# scrollback-down-page=Shift+Page_Down -# scrollback-down-half-page=none -# scrollback-down-line=none -# clipboard-copy=Control+Shift+c XF86Copy -# clipboard-paste=Control+Shift+v XF86Paste -# primary-paste=Shift+Insert -# search-start=Control+Shift+r -# font-increase=Control+plus Control+equal Control+KP_Add -# font-decrease=Control+minus Control+KP_Subtract -# font-reset=Control+0 Control+KP_0 -# spawn-terminal=Control+Shift+n -# minimize=none -# maximize=none -# fullscreen=none -# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none -# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none -# pipe-selected=[xargs -r firefox] none -# show-urls-launch=Control+Shift+u -# show-urls-copy=none -# show-urls-persistent=none -# prompt-prev=Control+Shift+z -# prompt-next=Control+Shift+x -# unicode-input=none -# noop=none - -[search-bindings] -# cancel=Control+g Control+c Escape -# commit=Return -# find-prev=Control+r -# find-next=Control+s -# cursor-left=Left Control+b -# cursor-left-word=Control+Left Mod1+b -# cursor-right=Right Control+f -# cursor-right-word=Control+Right Mod1+f -# cursor-home=Home Control+a -# cursor-end=End Control+e -# delete-prev=BackSpace -# delete-prev-word=Mod1+BackSpace Control+BackSpace -# delete-next=Delete -# delete-next-word=Mod1+d Control+Delete -# extend-to-word-boundary=Control+w -# extend-to-next-whitespace=Control+Shift+w -# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste -# primary-paste=Shift+Insert -# unicode-input=none - -[url-bindings] -# cancel=Control+g Control+c Control+d Escape -# toggle-url-visible=t - -[text-bindings] -# \x03=Mod4+c # Map Super+c -> Ctrl+c - -[mouse-bindings] -# selection-override-modifiers=Shift -# primary-paste=BTN_MIDDLE -# select-begin=BTN_LEFT -# select-begin-block=Control+BTN_LEFT -# select-extend=BTN_RIGHT -# select-extend-character-wise=Control+BTN_RIGHT -# select-word=BTN_LEFT-2 -# select-word-whitespace=Control+BTN_LEFT-2 -# select-row=BTN_LEFT-3 - -# vim: ft=dosini diff --git a/Configs/foot/.config/foot/themes/catppuccin/LICENSE b/Configs/foot/.config/foot/themes/catppuccin/LICENSE deleted file mode 100644 index 006383b..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Catppuccin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Configs/foot/.config/foot/themes/catppuccin/README.md b/Configs/foot/.config/foot/themes/catppuccin/README.md deleted file mode 100644 index c5c1821..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/README.md +++ /dev/null @@ -1,32 +0,0 @@ -

- Logo
- - Catppuccin for Foot - -

- -

- - - -

- -

- -

- -## Usage - -1. Copy the contents of `catppuccin.conf` colorscheme you want into your Foot config file (usually stored at `~/.config/foot/foot.ini`) - -## 💝 Thanks to - -- [Pocco81](https://github.com/Pocco81) -- [crdpa](https://github.com/crdpa) -- [Thibault Andreis](https://github.com/ThibaultAndreis) - -  - -

-

Copyright © 2021-present Catppuccin Org -

diff --git a/Configs/foot/.config/foot/themes/catppuccin/assets/foot.png b/Configs/foot/.config/foot/themes/catppuccin/assets/foot.png deleted file mode 100644 index d70b1512f26d2e6867791476b48b32da9d52f5d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320256 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 z 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ℑc~j%jp__%zO|Uh!kqyRy26n*I)lJey)o zmM~Us_+3aTIEE&?yCFU}7_myG1ofspmgEbgC|u1QA#>&#UVO+93TC@X?OSSbbcO*=ZS7~ zuOcgPQ+W3=m$vQiV1u5WXUJL^=Ww&B%rjnpaTk8SV=!bvv21&5B+&Gg3STuNnKA(LVCoZ#c{ z4Mv|jqxk1XuAa0`Mu)g0^TKJm`S72Yd;@`v(<9OJ2nedzaX%GB6b1d4%(0+@+`&M( z<8@W9aj2Bs^B;=?EDwIy7>e*AbtoY4Co(oFTa{O6?4rD1g*6#*beu;xlfMtPElR74 zf+y4ox#?)WL*<(_4<0yBX-A}P0Q}L8%K4S|6dP9NRkHlXS`zFL3FTUfm zM&d5}%0ndSei#K%^Sl7@2M6kq(&m9ccMsuk35qHGBq2kjX^;Z#{?YVP)2LT&?T8n8 zn75%ce*-}(pS7|1A?neI&UXlkhP%dKKOSxT1==iqIE<8t{@=AG`KI;f(015FI?gMc zb8wYad%=@t(c!>kOI~|{c@dQH#ng0zs9aN5p}_fjn*G{qU}{RCr|lD{sG?Tp8zZlQ zk-woOVSx(wA{l0)WQ9-^XW8OA0CO z>oV3N{~P8Mjay}xePX?{bX8v=l`1kxdOBeq?iwT)@-fBL*;LN^oSnja zA$4sNjnqZc75x@}zO=lRtWnIzUcC<~pl}9&gTZDk^KtvdVjn+Vf_ojm`7u1_O`2y_FO1fqW)zQ&=9Kyq>5o z@GB=o%=f)=atpODNTK9lK(^!#@1{^tP_#_grgHe~O;^+uVjDYBaB!0m%^wDm6P3+A zf)CULL>K!{h63Qjg`p+>3V*Gv`D?D(`%)bMTn%ojzqBQStSq{r3z(YWm!mw=KOk%l zy@UlDjy12dSvdlnzZCh}1UIrBQMal{^c!vSkdY4pN7X$|kS*xluRO)Q3lzPM( zt6Xv+r5jb1JZbWa{^v1oM&%5{rKzw_iIE{(GWI|W`FFy#2n&|z->EUVQh8=nS+cc` zlcR@u5sf5u@wSlV>XFX^=I5uAlc?n3E9foZEQm&sF z=y~TQXVD5Bi5;vF|A@8)f501&JR&b5*y7ZrOv148+V&QlGekO~Pq(4v^q4T&7jd8K zGn$ycR~ZuQFp0!%Uf~OK4+L^!POJBftWUeaCdf~Q0?X*Pern|emr|^Jfq>E6Mtc{V z5664?sj~ybcBJ`K^64J)(Xj9U<32En&^`4*+uE+-DW&nJeVD$-^+CAzMu>AL3*C@- zo-v719AW6}X9E?Uo4e9^u#thGCc?)wH&`&M>nT}BpE9+Rb$bB61w(6s@T9H5*LMZC zu4pJFVVk`Fm)f%bf2jR{SdvZwYK)DR9w`qrA-zS9PemS5`WoCbaQVRk2&Qv8!Z$?9 zP7ANq^nV~j#qX`&RKo1iU+0eDRCL_SGLo)926rp}nkA|ZeF;{PPXH2?+EkkfA)S1y zDkb6U%RNFZq-Wojl9gr_t4Hm_saqSD|SFHW!)DK!+%i7R&IB1oQ3 zEi_;#>k|F!eb8z2Y6Kso0Cm@TcsL>h@t`eY6aFHJ+$1g40Y+I zL92ytQrwnmLc$qNq*JOZUvwt1p>qDwz6W!LTr84TRDK2Zn&*9lm5TojaDo`n!&c<= zx8F@fmL6b^KRv{{(@6l%E;}&7?+u+vVUmV+*C6S8f__$EFM~pX|DU7&s`20M!@l&t zII&HD{9j+9YJ`-vzh{aJUE95LkeEgE1{#!5c&4m*y!pq}!qQ@$zJN$cns_5*5(6M7 zWr|!9V|}crg8t6Syya`Ri9F4z)r~2k!K)nzls*rc`I6Cs7M|Fx=#<5KWhCN$*q7TJ zLeb8%d|rMsw9s4NLXhf8_bk-0z4&IoO*nyADr!31XejL{flKO=S$*&T!yB`SG}r)9 z_PwCHR93hIKH9aIOn`J&XieFWbQVi0$EVIrAi>f9jgs`Jy}L1K_vJqj z|3uOD304!#-m~60de&VxTo)t5k(Y8sQh~lizZqz7*er#s4!BM;8dcbB?^tmnsgf!h z$pZr&i;Q_5XJUqm99ksZ6t=agM&!P_cjkID)x8cb(>#+wM|b<-Q12I!8uO+$U^#CXK^_vCZ_cx>i0g{0oQ0X%p?I->ETCQb-|R|3eaEH7C%XPGUdkhs_>^X0vjS54V+ zz(y>f=G~M2KKE9LXJ3fwHT%rZL5qdJnEmtLumQXS*ITYp5%*m8GtP>|bdnqxT5jR2 zlau!Om-~yG$o!YyYqgQ>!G}{4AD)+W`2n z(aBzsma9e<#>67j^p-&xh;k##IMjKn!n8#q3*@9uLSB!vK6WuX{gcHvub*gvkKv=3 zDL{G<&SzzAR3d5+CTm!<=pACeRbt-KS*?N7jDCi(=auKtM6Q$%_anzNvNdb!LX!4DNlN zs1qHPWca6X25a5cQw%9xCv?QHZqMy+x13kc_!lObE1uf?Qn9tjdyY@v(@yi+fg67xS|!(^$s*SzI*z4dBoW2z3}Z7QRspcxg&C_2jHZ`pshB{USz#ECHJtTi6u~qz$2Z zi@mi;`3UpJ8_ria@o(hF;;gK5?hM6BQu;l+g9qE9*R1n9Ml2Jv-aFLq8Bbh3ywbP< zB_&IK!XZ#Pg$vwtGPNy<*Ykj~5DN>feKNa)vQrq)&C&PZYlt5OJxC2q8(GlaR2~Mn zyoxOfOhDvhduHNlS}R!l{>X*4b1pNsiM5l;Lqm{`0?skC5Beh@fEB!6TdI=l) z8E#H#+Hpk0B(~Gv8Ghz@Va_+rHPWW0`(0s&ZBHT+G2@oX@@y2isNK9I#w5qiz=UUd zP%=|QoCBvtNf(uk^l0R6Jg|8^W-@)!8{64{0d&L?qhdAi(b~Rk;Q9pXhZ%9&ZALa< z?Zr->>-%9>XdA}6nAn_Ymf7&iYu?U6gHPwCPSkI9s;Z50pDy7$O?I_Lhx>l_cv1>^ zmg=31^haC*1`400);Fr;9Q(iQTK|WZH2;yEQh+i+0Yrw%(*Sg3)*$deq?zJGVC{+a zBx65fRLBtV4)OQlgI9-SpbLgy0jQ;fj;kZxeBU4;j!w2#(OOe@Ma%QE3>~~Fnu1>4 zIz?A?YMuIdg(iZL^1L9R2iUVz891q_yAn7S&ohduv#H~%@f5aVZq zOD2L=Jg0tV&u*hI4Fo9Zgk?8yv}~z54hWL?*57aLWPWCcT=@jw?}R*cUd=LkT7C1V z|4(kkM(B`2^(w{6Op!vY#HX>W4HwzkE>H+?t5SfN#k5uGzMWD#`KyX~KU%DMbvaCt zB;e%$7+GdWA+nT3$1?`xRzQ#vbKL$G5BtQ-4aGL$!wZMt{&D;)j8|{LK0I}aAMMrE z!X>}gAbk4$uYY7>mr%wrja6T%D%m93$H0md%5`whXMN{Vj)0_V%C zbmF%9E%r6uA%~u;eW@q%Yq(U(;WBoK#YEA6N#|oCZz{Q%8E}9@S2)w6X1qZW=jDXT4|-G@T?8_G145R3$??r}@sm~7n+Ji6r8xHVEz zTbv)aDbhD&a-tA3>2xF{n{d-WY0w=(D*W6Z9LnKV8glX|p3dM3I((j5B`VD2UX^X* z-}r+uq9t%17^L(%Odx)Z(fCv|f@%5ZI@#TCy_C~G^ACcuhvI?z$B0gT$&1(o*aQs* zqi!E_Z2NhY2&Mmt6REWI~m@!44RN$n2WKtxT zkXQAWhh^X|Yktp1s=EXgZyu3XLIR4xx{aJ~U_(WH>#Tg$l&=!tbS7j>684FMX2!_v z{e+I-^Pm{JXg}5=g-X0b zj54ANFGtY`@qP3ENzp>hFt1xH{54*OL;T?-4MFdH)2GpKAQ5P1aJWA$Ia@_^xzW28 ziJ%a0hNYstC_Y}H5^LXrr@Sk5%1heWl>`V37~nuy|8jX5lM7Vm%9&0o?eLal7bae# z0wu<&*!wjIMj3C{X{E1;)_LB@{71{o!V73e%|-tmBL7F2(QhM|h3#sN!@?-Ya-V-P zF!m9xm6lBYp1zQ5!dgk&@Rzove|#D;)@lF9OhAyj0ZDV~GzsH@*SQDcTfvFebP<30 zlUQBc751B%BacCA@bnlj%FM@)q({de)=&1Yy`1~>y6 zOmGsKxa0K7$*}(&A5HsJ%(J^^lSX!Fe&^!j@ZD**fG3}eTXk=9CCp;?f>7>(glQg zOF-oWOZB_mMsO^6|g{{oL)1LjN!M;y}m{?_w*WsSW+q_p^ zt3s6PbOC=C_+|dOh)ln1zyIk?dQYq?n=O8Q9gAp2AQxl8IJcy%?i)hc+?Cm}iu{pN zD<33+{ouSpwKcrTfMTM1xlBoZ*Z3@Oin6z%)vlXlU`TPgx4nqH(A$U~>>vs=2pqa# zA0QlxKOYn_h6CuWh;zSqs3zZwfgxFI*Y;&cqrDGO8T}ElY}uJPueB3kudw4dP; z){4T(r5*6%DbzDRevXcf$V_LKiOw`l^hx15){D!sm1zJ^l!&-JQI38>6mEo zHkfm$YM8t7X`Y=x%oCaejxDCYSJ=n>n0`{QPp>nxUmD@=CXO?S+HId?wk<^XP349m zRJg}*&(=kt&m)5P%s6Tu60pIcHp?m|;7*c$-jRM>b5_fA5;Nq5wo*N?njEv_O_osQ zPZ8H+_1$-nKk9P(F{HYu$9!)7F~rHFL)CY^H?NB8!6(CCxJHt2{#>Dw8#e8aNL%PV z#^fFGozovyi9SpwCZ>vyENGy5$Yv`=2)4uzT32A;s0tlCYcGmutAeJ0la`n7EWRB1 zii4F?n9X=SI(18Hw!^)hX9iCq|9gr$zL%n|K{h$d_@E*1# zB9W<$evD-APLc`Lzb3G7Bcl$R1-9#d7Ag!%9d>l+t4MPLjr!*OcPK3U zM_kwiFAI4mgDBY-7I!V(maVLO4_N!34LMUZ?o=(-znX4N>WgXdES}cHwAj$$;AGP~ z8ivdxj(v_fy&rzJL?OP2^3M6g`O7+66BFR%gi(AncnpOvhXR3uV^LK(q87y}G~ugC zG5#Q1y_OLIL=J#KMF0l&{H!&1y%8#oUGrDbn#IhYt@V@?x|f=MywX2veo9}edP|CY zxL;L#D-M*_RO7w{_$#~?u3r*9>ALc=Mw}WG5g~|Ew)lf40k7AnvfQg8alS)8Avjly zQnqI2#8A(c_ytDcsi~=Rk*Q#yHe_q0L<4aGdd`b?iQ=V4PUQKLlqu2AmEFN5*%ie* z_4LlyfM5<-0m0b`Qz*E;2^n6cM*q${#k`8dYuLqvy5Bt*=1dR+n5C^9;*B$kwMMxk#IHhEjY(? zc45k@H({4bu{}$*OI2lQ}|%`!}d z;0Dy=xTQsVTyQ>9xj(PL=kcFzxGs!qWVk7xV@OnYT3E1;iJyYGv~Mx0VO~K*&2ivc zjIKh3b}$z$6$R`oD?Et8`|vlVDBi4M6p#~>S7IwC+R-S|7xX1 zJttsldV0E+#0nw~!$H@{l>Fa49&C7J0kJeyuTyHv&RO8fcRAv7Jex`&HeA(6>_XfCUfc0M?#dh87?wueQktHIV{})e)t~UAEYNJLi0nf z*Qb0MKw+Ku?2)(ZNuJ-kc)B3}e&>8+y!b=xY#kK9d}v^IYzKMZxg|RVa9~PLdn&FG z-dv4G_tQEh_9+l^OV|Db*ZckLYOq<(SJoZk`>M#vK;P=`-F^GbbmT!?FDk3}gU=eC z8wZ5aUIQe}jr9gFz$Y`OcCj-0|2Z}ocM&4_0cK3AGN9)uYDvW2GU;CBsghG z^4LGvULCBhyAU;NEg=JwD6y4d3ptT@oB3=Kk`jY^Mm{hkcO;QnDQ`AS!DP;ZuuG-i zNaScF%%P-bnpTYtT%#0on0Y#mo%eJ5Tw{(aZej$})Tk2#-!4by*(Vfe+#6|1^sv1L za_BW0q~f#4?q@Lx*n7E|TmOJk8ceXg5_MLLIIKkL>orgSfx#WIB)eE_Edh-hO%Y7p z@g|%5Pz&o&D2UyNqEH{*dh#C-a>lLThErzzTlNL;k#q;v%?*+A;fP17d4jDy=zpF_ zeWQ1OlM|7Uip||?@#gOCCJe8a<3+?uvV=8+G3mLT`m*vR;;j1G2(cY+wn>q_Ih`9G zboVWkBbp$k{&UL9hiZgtkK+`?07mu_ysLISZ9dU9lDOg9zb=GMzP7|ltRYoiVZ_<6 zHFuZC3Thf$fNtX>Z`iqU&|Aq~v_!}&%WRCvSScOF-6V58)Uf08bNQS6`0Zn>nn>(9 zW3f$f&K~X9-UOX(5mY?rNVx^EY<>v=v&W*i#iZE(0Ug{5L_H!a@L{l)qTSo^@v*Yo)o$p*BR+KWJQbi1(E81znPNC`dRjlMZ$jLaCv**Op<@Nj)9s?eR=aEc!B5Ud}0`&7d;}28Q3r@~Vy`c=A{cvHu*Z z#$oLrr^J~e2lPf+#wB&})}+|o@jg*%!^Zl#K^EcEOh5-@1p>q4MQ4a(K>@Rx7|ruBrvK2A6H}zVd%m%P@e-n|-umlB#kiZVU zygc_gLEcE2&7+e>-WEwv1CJx)w;fL6afg;K9|WE2SCeo@Ubtw-prL7yeJFYgyCuPr zDQ$7#e`Qx`>8SFpo`P4FYWAp(0|S2pAcI^u3N@EroVO1w;Qm6Kk7)`5CxVCDaZS^e ztIs2L4w$D)E&=ar;$<3kg{yan@Hjg-+<)~a4VT&n6qXh{`#!|OZJAUekpB_7Sik|) z+^m!^00dMf)t&s`isCOg`EtL`h@LnNUKEr9pYIqj`|g)aid((&pv&5;0Zi_ue=|bC z%dY%;WbX)D^8=U`(OXejpc`tANCIeRZ>$q)yecLHfE5*Om6GE5`J0mkaLI??XQ$(- zPh9xx33<`T;G31BJ$|npkx@Wiz>%UN$HMe2l=uw7QnzjlAI^q&AaZ!m=hnkaV0v9b zCxcK)U}31U5<{esEE^P}A!+~y`JL|k&@l=)p9XDCB4rL0N(MUGtCOeMP(f-ufp6X} zdUE>t50r+|UwHT-JzLAy?)_s=Tj5-?qB1qQUfiM&5kDMIhRJH5n)g(6#gRKPHXprN zFrzFvCD}? zwP@vkk;uN2g84GScc{gMO)|B@hs+CQSVNAlqV6BlXm>B_4~4q(urJ_STHzhp^}CDe zJwGJlzDlPl3}LXdxHr)q-T?P=+57@qydQ-lB{^+^@blOkiK7W#!$mrSH9||?8Yk}? zS_yCa=xfIFtI^QkpWYX2u%B4^oVw$CBKE_-Vd*rut!_)>|BJ0s3;(|&D~L_&3zUIj z87%`_9cNKgq^?Oxr%=a|?vByYpBu$r;t|W%ZY!Nex?ZCsxgTqPQr6X&jsZmbmKY*U zNFAXU8FZsVCKGoAhuCHtA-GMttduy`IIlUwh9%E&nQq5`FAp&?jSVNv4di z|6I5r_Mv^}kV)wVuW{fEG9pYD@Im_77>fHKZ~smD1|z_Dt|K@Y^L`HpgcjXUUH%(K zP2B!LIX1QCMv%(81ZqWK0Xcyj0Wy1kPo1slNzzumoBKo@-M}w6J^l2@2x)K7v$AdG zk9*om2jxa-1Hq?Srf$q~N)+_PHaOXtzRLwc-Xmz7qQQi)FI00}HOqeM9{|#waO4?0 z>~P17k-?O&l$m-3SS?l*{*HP zHnu$3n2JnXmjoat1(x;Wt7g~TK9mb~duR~(cEwmv>=}wm!@rnZ0(*c4M^*1P3ABOD)cs-} z%glB!2kSAHZM%|5Uvt7Y_O7B2lL@m!++W`lRT!p3T6hL8TRI5xUdx?av>CgF1r3hY ztnse`yD^LGel-h9sMIk?P=@0IN^Fbu4-fsz7yGJZ2f%9r;& zMw7Wr$bZ9z!PM6#i%WFqI+L*N#aL~P~tU-1_F~X z{L{kYvs9}NOt-wsASIpa{}=CTpG`wL=i=?z9Z3vu?!mGb-uP} z3|&^?qu=N^$r9Rrlg|%lR?(G#lhagd?CH!-1l)aoH(#XAJ`Kyhrrn9E0rn!m2aWSH zDiP!F8-+QH3<&cM#nYoE(4c@X+zbr&xm3J1-+*5P^HXL?gtWEE*dZf97z1(M)U(rC zGA`Q(*l;~o|N3{cmA<^Gzv&T`;-F2^++@ZbNY}8WqmcGH#=LLay@hxwOp1$T*B%wi zWnOYw+hd0%X9kq$u%Nl%i2EIP6gtcj166s62h#m(VD*m}L!|b5y)ZV&xuj+35do}l z$LM?Gkp9^XEEa|Jo1~MI{(WU{LbNuT^diy*lxG~8)1!`m`XxdM8KiLXj1=5Qx zkb^RY%jWV}u{aPBTV9*l3AiSjM}%Y7U;o^Li2z-@Z7`P+G|fEoCf>oSI**9saF{K5 zBoQc_Yg-uX_ep(;X$Hy2(-r=(&Cq`aRZNzp-r?55W?b7_0vkCVC1zASli~I;$k+U{ zkHi4p1U(KJPU_%Y^uPipkaAr}Jl0}Ko^V7I>?6$aD!`P_$jKfxM?@(F{dggSo`)Lj zi#?$>eEpF$sc*8SN0<=o1H}pl1$Qf;)CB7f>l4koA^ODdvby3FrbvZDXl=WL!^uXK zk%$z#{I@Hy5K=_QQ2M;#)3oGNsAAEcN&*m|)U}}?R7Fe6yNC%N)JpL_i4>_iG7uib zMyxY1ujZ>H{>17X1_~g8;&HHJp@C%VRIL=oWM$KFQp7w-<$foP?2gav8A>E%I8zG@ zNKnYqD?bzc1L?uCNKIVb@AHICn{kxr#WCbP@F$F2>Xu(rgx%D;3<6Avk|91#ho^T?tFOqRIN%OH~5j@YrZ=MYH5Pt{&Rua^U1<}G5D^nG^3^{w8tn< zzR|*F9<~OACZ!i5wTpiictl3*_R+1dE*q29HqK?awG(qFsUxa3>#?9_*a;nx*cM&~ zH^q%|9B~QDVq@0E`O5~5SdadKqEx751+5k=*mkKFZ(_D(Pl~tlt3-&jk~E>Es2U@&tRz?^Z^`i zz!DLRMA2*hU)PpH1Qj`GTuQW$u=Lwpe>CKMuqL)`1YzX6kAIoN&XIwM54KGt;`5oq zPx`;YFV&$gRU=%u*^hdodcLiiTU2&?j<)<(q0;L)6c@%L!ib)q42yB}qfO0E?EN%(-l5=CDq%}GhsiaTa_b|JHgf5N&${1aqnx3#$1?8S0a zH}?4Gd<)(npj^>C=YvOe@5GV`PYR8O*~5T&KD9Y0a?3wEEVQj7XBu=Z5a0BO)8<)b(Nw+M zM7$nD5>^!*=pb|LN7VVq(^i`vfxxn_%L&1SEGkkmG0~6=JJ#j}c85&HfWWr6H*!d> zQy_ZFXQud@s-Lgib}I+b_j1oN7Nc|*n%HmpoJQH-u`CYr9RMo&Z1Q+R#gPG|NGH7*@#3#g>FRI*V&6S~_9dpQLtVfc8oMC| zL5Ai2jmfFLUS{|=xtMB}i(1_x7FsIq4J}kmK0&x#x4F3DS`(UZqjgi>; zFE)vw635pEFcsyXq1dR{jEA3O5W8?mXQI5{yUTa*k_U2AG&oD2C1!j{zHv%7we`=7 z6t34ft!~e5UAB{g6s_2RIC`_agC4K-!w3D5t&Xp8Y!atKW$@|V+To>wE;7BUWNK7O z9$uxWbF=5stMga@mWchkZ6=b;zZ@%1hsnb?pWMj8QAmy_)$)}}OlOc&7A)M*NPXkJ z)F-jca*ZGD3_sO1--F@$eq(1mmJb|!b|RsjGZ|j#%@oXgEX|YP^LPWJh=IFAp+q5Q zY!Z?HAQ)eG21c|Ng7OAwQi2H*1ab`qY9t(A9KhyN3Ljt!f&hy_8V~pH1}GOG7!w2_ zvxe3LrIzVtpN%$8Cm!e%Kmgh>K@bqNe@JcVsB9tl#t%xU-GtgH2d^oTl6RMi<-&KhJ?-Ty>B{}4sP~Fy$=NpptV;YBV zf|#Ie{_|x3x!F9rpfeC+jkhuM0;te=M`Q-F`pCil_;{1V)R5P0-mouV<&63o`{Skg?6_m6?Ulzrc+PZx=Pc2z&3j`fAA zvtwqb)f_~+J`Pg<)_RzHW)SgJUS9s{MduD_75^9UyCKuj(BHxA&DiqZ4wJx^_XDY)mG2UW`+XFN z5D5QOLUJ?(P^3{I6Fa?v;@5f^b-g&^*NbS|Yb0)c%ipu8r{8Bjq#__IE-}k~T`wPF zdACdiHl4j83{?b0e`K$_s5n_oVZI-bC@yuX;b~Xuf#u*N#~_TzUyTlZ%)R0(vA`n6BCDlx+Lqz zQ6XuEZQ7UQ-9UWt;k}Xg9C}Oqykv&Y12HzH(vH&Ey0%W?zMdmjCI$-mM`aV)$MMde zwFl{bmYyXBbmPxjoTl_{A^a>oOgwq9Ui=jjTea>tGEtVeRZG)hf0)65*|QLvdJF$) zQtpSg$df4UllZDsXI?y-SIl)mBf-z*4~f^*dmGBHEepY98@Z;BUgV~Aiwz7a;^N!4 z0jVEKm^b*fJys3uFOzzvK0PfmF})_QwBLqGoXV}=`1ao-`}o{%J;Ddu>bEcl;6JjK zBxV4UA$ths{GK{Hl_39@7m(^a>}&e&kSGBp&p8?B5DduhzX?X6e;kp*donZKa@nSy zac`AL&3je1-TgWjE!@ubDDRFqL|_+tSz_$Lco?0ygzCF>NMPTd%_69=e>ok1HQW^B zv5uDbry4FJ_j!;CgqaSylREDXx=Tm_mc>XLuEOgA2B2wmJkxdBhO6oi$v6HT&8{fVo#;fsX{b;bk z?uz&?YtlxZ)D?FL38rr@(@lSIb2%?Tc!IXW7czWR*CmF}u!$9FSb^J&EaQcZiCG~r z5ng1GDjkw|q3Y2!{c6< zoq1_l?eBl@SeObmuTZRa@v8io`x|2SIRuB4!Ag)FQ(Tt_1a1cki^-&t!J0wx{guG& zXpr?L+iP3*^dELYi;6yGjEXS%zTwHpiC8_!A8m>!kFz(p-L9r|eh+izEyQQ3q`3^l z>RxUc{#uxK$m2~G z6&FR{?dShyUl<+3zqSD(Ifn2nrKHI5>(9#L&zMvAS}|iEvcFP3EOMg&LzQPV(KE~* zAE`rl#lSnc!2q_W>M_QwiFPE7#Qgir;}OhiUvH#Qr~>&3IW4z9%%fp`i9J$DKM*+I z6l0Xo8u|2;B%+JoW+&5x;2t~La-P6@^T_2;i(0b#E4Xr@^sS?gy_=Fz@bXhd+$+Dn<|H4)($GTC z5-Kswkp4@==CJ>VueXefD_Wukad&rU2*I7;?jg7n+}+*Xt#Nmk;I2Ue1cJM}Yj9_p zy!XDDS!>oTe$WklZ{Jg=s&*aQ8%fjs3O1>3I-u~CMbf#WRGmwj`mieOEk8_RiOxUu zH0$N~3)6f^DFJW}jK&`cu@TZZVsmfd3ar->KhP&j>xraTeb!?*Y2~^nx%I&s9{JmB zVd8ydvk^BoE6erjCpTC3PztV=D?dC5)#I~I#5|05TjCZM-LK1z5Uj@5Pv5*zCB7Mw z;7Xx%Rn_m)vf7ea$UNuyLe8#*QVR=BU0r{JbErlV7K~}jwj94d64;*as+qf@om1D? z*r-kbP``%xo)m+XBAe8b(E(LUgXKCVMr(6#z7p|k$#(2lAI&v3qqIxeF1W9NziUDxuqfF zTmDonNxx|)4C$@x$}IDrnC~yF!&ZPrh{xW6iiOSFelce~SXifRF1L&JG{7XZcc zi+-UhsZ5uRR=RtHoNxf*yxZ+VGJ*~=U@L^y^Y$o-8>r2YA#{H*h*aW9WMS1ANe`Ti+U60ny$B(2Y_a5Z{Q z7*8bJ$pr3`u>K@CF|~}$cxnJ)95ZRyajG_*vdkz@J{f5V-Sj5YB?c01@woY$x&#vb z^lCS`=*S;dW6yJ|Il%*cpBt~kCfY z(Ft(C_%NJsd1u-p{ohMC7L(Aj6Bxru_OgOvBaujJT$W1+r(FDWf=qZZ8?y`I;XhwS z6)F%XO!qM~pY3BPR#I4lKYq~6HgUbBUPM8YoGU2z=`-60)S}*;Z$6W#N}%)*o+*l7 z|Hul3S&SOP-}^p{Aj|;=aRSF-prqAE;RHb`?VMg>v}A_f`kn2F^7938x_3#SLtMP9 zL6Uo4c>nszeR1AlXRS44sJ1y=yjLO0bbSxoNGEigsv~Fom=O|E8{OIA_LZ<;xJpXKP)W z{xn9{p@N&m1LqAd5p)cknr~R46?xX@e+ek7DC{r%K?|K-dqA6~PDnfD-z@JAmS71Z`B$65auuG4B0Z72MaXdd!=a^^1VE@|gcja9{{0|iAi zfAIZwd4YUx@kGGP_k*JgqK{|lVRsS%2UMmgUmtU5BqUjvMrXl&Q zNpz;Zeg;yXgIg48@`B}{?P;S(zON-92m46FK!t$+hn=Cmg$@^NJt6);h^^-t?RFnEYq@bSX(9&i_0ziHil!4s)btgq#gfepP;3ji&&O|~` zrN?Vs&2`!V+~FuqZrkHf0i)vXt*SnfDn!P_Y37apTo0%$<5`WZ?#6fbDgh>SX8$*9i-~Q6aKxXXDzC)n6sn%5yIP3&|OYCMDWDS>MCD8daH|14pH>ONrpG>r(tq^58zJ=vHViE zgtn$Tcp{DHJqzFy96b(x!Pov}BOP;V?x=Q5{(9nMwa;nc1AJw0vHQ)}S6QU1pRHb> zxVT}Z$lGSyPL_2e&Sx6_mrpQg4{1aTqER%qn}1f+0%*nW>n0&fD={D`+?e^_5mFEI z42RBntl3Mf?oZbG&2Q!UtVfaMo;@y_Nlj!xtr?z<-zfZ*bCRhS@JcGZZ&dY#usN77 zS>v1Q@VH{)7>$q0fUf1w9SZVE^?v~O(YM3(!@%w7on;pl6%0mQUuxKzQEmtX&8xkK zXXEe$+aS+3;VMzyT93DR`DIP=u^f;H{i`C5x(g|$$V~zu(3;eY)vU~W&JzVcy(8$& zniaLbkN)_@`Xb|DGyjlWNX!?cZR=r2Ln6*2*f5fJ{{`7Y9nl;k{`U(r9)Q?AnjX)0{_z z?T4C9jmjvlYQE!B%~SDAzr_=*r5yourBH+%13l`YaO6>Z>rqnQHp)|Y?S~8J8zgBq zmL0%3yf_#q1ckjts{eU5KoLhxt2wI)ATn@4Y`|PJl7#_YP%KWU3`|hV8;@(Qc8I7z zxVlbPY&?J?%8c3-a^_x;Z0?&m=WKHr~o6lMY&s*du{a%jPTbMWZ0kBR>kUPlpc!tB@7NUCfnIix?4}Z2DEhU8iX# z+b+(iI-M6?#?%sL*kB5JbhIFxRH#(az|qzU*Oar`esR0cclmdS47u2mjr4OLFDDY> zsv{MOOvW)j6sgdpbEp0lUb>w^xFy&R?|-j%E0LEi)+BmUwnn#BVTUWw_eax2(h};! zP>Tp8qb9G+3r7>{BOfLsAO7629Q(ude(|orB-KWCLT2pB!tyQg@ha16y+Da{nO6cw?C=prM@xE`D79HD$Y_v47_sl%vV3b zWc9d1noTs3vpsjx#wc%=i9Uv$1ST~m_`*aX=gJNddvD>E9#UWRe%6K*h$Sr=4 z^-5=1t;lJ}dZ9gCvU(Xfpb}Xio2YgD<9e2EqYa=qYfFaXw$}XYretHLpyVo>5QjEv}Zx*)vn_e7r9 znJ+PLPAOW!QWD|x?@wJjVZoG@uVI;N_DwcK_l-Uy4%JQa(#`(Mz8BzZ+FhuMifa@Q zV#$OR7DNiY_nS7(#QgZT-sOJ^3|Bi}Z$pixq|6iAQ^^a@zKxbgsGx72_a()21DoL1Am#sCsZ=qDItzkIxFy?<;_C3NKNC%)nZT1%p`|1_-!Jnw zuy}a!8i7!aA!v`fE%Ywu5p^t%T^%<9utbRgmtuNIfKEHP;%FpogNqYia_4h&jFypQ zlrU8XV*i+kKQKq@t^1@v6p#}@Rc6&*NX)5QFEHEugLnq+`yV9cjA;k6Q%Y-1Twtlxs7bhSAd>uB^x=+21~Z)cy>eAC*gdYV_--Bj+R&%)OH9pF zzY6r`DugyYPD;xnB%S{bc>k4>e}z7p=luRx77n0=++`vaDQi63k_5<11z@1*Hh00r z9ZCAB@l%NORaML;&$+5~o%s!j5zB!kct$A_{GL?E~t=4?fVa;2G5(WPcF&yZ0bP$O|yw1J3s_ zuyVX!)Mftk{2IQYo6~+;pS6-1@6t&{ijM|Er^^2Zaj4{KC4os_g4dx1lxq8tACYUX zerqKaL`qoWMU)v2=-XnZJI*|px{IToQPW(A%CAc$QT%+OA1-b}zI1JcW+@|XYMV^k zWcF3y2djklYs^PpSP68}vD@@~+qj>4?SuoYBY(^wxTAdhtNk5}Dj4_!#w7fH6zxZD zP*Sra6Dl)N|G+9!?WgR}cY(xb8_##2_$xPAeDbAFi5XH6vea0=>ld~1@pc;QR)t;O z!7wY1pQny927eACCaJpqMDy0ZfBZz40GRgHtA4E@|CTb^<|Y3bxE`dzQof#!U|5fB+2=#Leuq( zWrHVrjPMZOA}C6&Bp`;Sv2=b^u4iqKHkBZu7m)_p(=*~q*sL^HYtC{af9-eX?xyW^ z@eRL{@s@PLS$i{Y9j4Jz0X=?;k}G-%bKs=8`fCSqz%!(ekDm*+!UK#e^HY%` zn9T}6${nGDegm%|Zg_Z)D5+W!pQtOJv%KY&I}YO0m77G!*|~>`Uy^8Lzm(qY;$`{< zy=~bQYbS3@Oh62p`6;p*OK0{7%Swp-+HDPLBj*Q+n2WiV(Z}WgB~{tvC1VCX+XRf-2yr2|%ZprL|$6jD5x&(;x4 zV`E&wt~R2#tB0h&&qlX>k}B8MY1%+?N(UE7ZcF*=02NMNX902xOm3CcYu+ZFv1#tc zr32%<>yCNrZP3Q!QwUkVFG+Vd;M^p(0EP%9M$g3$)2XJ;P4A&S&hHaF`rIw2!yI=Y zo5|S2c9hUs4d5?^E1o`5OT{zQNLKg$lLfw+L)Ue8L465gha2hR?t%FzeZT4fvnAm( z8bM0y{u6o$`z-rSL9q`~0Bqq$rSvi68c^2AMVjhiM*%g3@P9?C-H!4wP-+Gqi|be) zjxRJLRA3i({#aoAw$>;NoYyCCa_t>0;&;fqy8T81u*ViZ!LdLpu#Z$VRI0YMz8TT$ zj>v`SgzyDHGG_jZakzudkN_T5P~8!!!6>!(X0MTy6i@l{Eya2e%}D6@x`(zc$pF08 z?~IcL?PJx6-{)(9j7{Df&2g5NJcQmb!}z3ap+eUj0RiEj%;GQi55#|_@TG;$S3Q9L z8yfI|h6eu`+5Z*zXwy2mXo}&)4>9rNZ}$$i!Qlrx%Z^Z`8)gcJf5bL%Pg_} z{%}ovQ^!JH_loZsG#coTSz3gvwvVaCHA*v?Bj2oh@3TGleL3^4ud=Q+R zKM$JeZTSNbw&Kebp3l=$PKoceP7&pOm4)?EIn>Y@-n`V9dXux=6bUDquty7x&RW;M zK&Nt0joDDZA;iwTdSXn74ivuddmK-<8%t>&6n*FX%t-irFX=n)lw1XDAAMbHqH~|C zo7Fo{J!Ncr7mxnWL<{h}&aK2okyw-H{WIInHI(?g=@HD5MYAm@jv^4ih>ng1RZx~^ z4M8gbZLAlp297Q!rlPQek;=mInSjj{!_0^6;(#!#{M}>u*_n>`$U(~O#N)45Ys>kM z_R{k%mrCw;9@RjyR?L6$L;r+o4nT5NWNk`}($ zXD^Uw)_+R7a#b;kq#NHbYx^1?EODi@J@PyDYnUP26?Q7IDSFWlvyAx?yVBoQ6PigD zN1b9;)6D<`iDWHtUe|f2oVs!x(je-Oi)|yr0%vkj2TKEaVg|NvW z&$bs2gmc7_8Le=-CP(Al(F4nL5f3{_=lzXhr=0Fvl*oT4foq(7w8(Gv|UL^yk~`jko1lM#01ts(I{m z{O_S9E;@;fsQbGeH#db0sga1gL9|9y7O2Mh&TIif88e|9@Lf9{Q6zO++(4gjmQJ`XKYgNGl<}#0lPx0tY5Q4_iNMipm)n_?#dZl|#Vk}; z!WV^RBi8jjb(;5giL4gdw|;R9<;aU-^NFeBWOHyScTeXuYy>xO6Cq4To0`1i~Ajx*%0yKh^i zqe|sFZ|0p`RCG3isOhbq*M-Iy3jfJ+eFQ>a2id=0AFkm}^5GYoG=@?cj<#~zk0|4g zVtim+t2(+1Zd+$vfsT%&s*MApd#k6a5HP&j=<&VVLSG*Zsvg1PA&&SAJ1eRYhuqJQ zMO*QY_-<8nX24>!y=5N7n|4od#SOOT%GHVuXo;(a0yCx+%r_8gWiv0dtV z+955%&o^BJeD9xybp478Dv}Yt5yT&;{{o(7DIF8H_o6IUEX(m|fN1{q=d{Y|OA<%d zHJ7F8{-)1=5zWy!@fdJLPV&$^$NU{n1AEeLfI2`{)BvV5GdZ-!PRtwSb$E3^+e(^N zjeG)6%q<|&g#3EkMKc=<;ECwL=Rhn@Jr|HL@#@a&QnfLML=(rE>!$qXeC#T$0Gmv`OCL<`dfb@tzA}l8?93)Qc9*GAb z>ES+Lsl`09vghK18=m3M8~~k&Y+x$pXKs~CmH-h5LoRGxI?)HQ1(R&co4~J<8|~Ca z&u{!I*8u~2X}B?n1{w!jBVy(AL(lX!u*Av;+QY@T1-LnVbzR;V7g}ig0eqhFDpY&`kut^#~K?odpJ7H`N0=H#6ovJqMg{eVx!= z1Md7?LpiQYJNmlUItpj-Y5pwZR9&1H1~tdf)Y!{*o=7!dGdHnka)dnPF&OE6Xom=p zuzX_v6e7~6X5qa}eB_w@u7SHwSqXPmkI}N zsOt@}jjKJbWD;kWhwfK*fi-4>YjOPaEu-sMKBMEF>H9hEvtQkY`qIT2;Wt32s=c9w zhjadCu1a>T4NR99JUAY0({OS!uBB#c>;A8yMqIEQE8M@mUv|ERy>L}?_N$$>vXRLH z*Q48+T5Y?*C00py1K3bq0>ZC92yN@0=+cbH9hv7oyToREqhC?(rVM=Lw3E#%{oj zH`8_Ug7<#SfZHccI#jd4bZNjodT|+F3EP0ymh4LRBYk*im;^~oWJUtMP`rm0>VZ@` zHJ}Kn-YNctCm~2;EgZ0@%bfhB%h}_c$$4*|35{F>*y^~0YwENvY=d>$5gxlDy(qd^d^_! z&<|cqkggj}jQqRM0TX{Q1r-%FJ?)sq$_=`e>f6Nw2_8AFS_?5{n8p6Q-s3ucqLYQ{ zv1>;6U$%=jjtJ-kTv(9~(AHZlp;a7M|H_ydqrn-zGJxU+y&VTW@glSw^)rJXidc6Ww zYoCxpF_y&NP9MU=mcB5hnr^oAsTo`GNN!L5ds{j|M%dAxkRfAyFR@$6@#)Azq?QN- zX&rU3F$PQ!cv&^qoYz9T1p6T3h$yi|mHl0WLylc7-HNa?_mSgX4hRR>(uN)yIa2>= z)%@2_NDgiPAhq?MykX!ObYh(WZnApgWKIQ&tGm3e*Vm5w+=8pFA4$f`!G38hk-$RY zQwrRIM#cDWENVu^5)*Em2vuJEspuTvyo`qSKs73QJbc zcJFJJe!O+B`(xJc0Z+cJB-L`Gr8XhA>`vF%HcXba9qP5Pa`Zak@E%!_GWbLudDib4 zmZ(~r3R};U+{~rN=tFzW_Y<_eTgi?hS^3T9R$M5h_`LXw5f#%Nuy#{#86=ixIa@o) zmMiIph)K}#d&jBt)?AdKGCJ=OHR;(}!jHdXogMavS_XiKskw@ZG&sa3#&s5!ca-ap zsl1+`P{9$c+W0KqC~-b7O?fW2nR$HWRsT@C8GS+Tm&?t{FbkF6%Q21WgCudclcVvB zd$tnWjZt_zX$=LTnk=hNTxSEEw?Vc>(&H$I)let(yIk@NNCMx(Sh%8$h8es_!s%3 zCors>Dbvf*BDW}+)O@Tla<{srfeD{)HV|=?d7ciKTcK>A&-#{OKCupf4Q{(yj3yrsTd-<%#;D#)V-8HsMY{t~`C?h{2eIXtZmzwo+V%#sPy-UG`)B~;z zA?^`9Ks^{lzQ0?PeN|9x`eD>Uz%7Eh_FKx~#heJGcmAQbH4yP7Z8q(t(XPO07G z;w;;7)9T=(>j9n`S;e*&0p8ol5qezRAU)S;t3W%@7zdG2_ceYLK2G}J^=|#-RG-)R zhUmP3=PfYX+S)5maqSwf`{L`qELX0iohL6P0`_(I->KhJa+0Akv|1A}exe-$g5!nX zpT}22xD2U6vq;)%WI0Pp0(!6C%(Lo10A>{`bYp#%5pa!dSUGy}dmFNjLL7b>@_5BN zZakL1WW1YOTIx~dAu5 zr|Y3aWzS*UWsK-M3&$;gjEq3Y&uZ={z>OQKPlO%Eldw0ejWyfM){YT7m$%;Yd0~w( zJL(gbcIkv;m?1{}*C?#$iS0M$!L&V&DM(T_H3vjcq@YX>0N<0>l1t4mdKnQoS~s4A z%`x$al-duVo-Ux_aUN&x)i&kI>35@iPI6Mu6jvK`3m>$P2X-`|uQ zAzEShP2SAV5BteUYSK?MOe(O2n8 zm2vE%k*AoIt>WUozQ>*4Xiiyclnb*0EPq2d4sHi6Wuc%}+HuiZ6<%MQM46$g(*@?% zQ?8xZzuY6=BK_FrtC{_-2^9Dz<%{hc$*^cXKHrj33z|+j-O~?f7kO> zXWe@nl4qzXOR_N1PW3&N@d8ia55F*bCcXqF5RKd#IULX~%&^h^IPSk#Ex9x39sJX$ z3=^Ky9R@Ch^@lf(!1_VvzYKehmNqa*G(QfDo;Thmq%V3d3cU2rinDpU%JMy&*Ct{= z;VS+Nc=)o?@tit5D#?KLY%l0@*{i$uOom}o!c2-s&i32+2>ll&R;TNGSsGDB&lT~H z)u&`uN6SNg-ak|($=S3&-g;E5Z{S0Mi@ROl)A~J(b-k+${MN>Sq(s~I(H#;Incz~Yp;IvRBn@Gaa=pDUiTne>Hc*5Q{ zbp@XKYgj6W8-tK|-b4tOj!$L3nEXl>gE5yi@C&Xd85sp^b)RAbCN~!uTy@<&t<6WrA<^Nu?vqveCaw_wWlWI&h2+uG=OA}kBD($#H2`#E)I}7~E&m`|c z{tIcBr!l_I*FD7z+ise@2yCEomLVn9Fe{ zP^wY&awb)tS_uMxIUKbiv$OidA=M3mBRgMAM2TS) zBr08_Be5h@>VYQVp=Ab6+9WYt^H5Rl~y^F$*WZB_)hODn{STFzb3jS64S(p|&XlHNF z&b3Qzv#}*X>bo23PiyD2LRyiHI<)nmI72Kg$FS$)db%iYfIh_TfAhO^y#jgaxak^< za%w&$%!~^=xmoG)hy*0Q0Ag9^kuZ^3#FXNPO#SOQvw~;JC6Vj1U%8DN;h%Zj?d)~b zJr(9uZs#6yfI9j@_0b%opTOW9Nd>^$1ftpKto$kMc8y>LakgytIf?=_GwM`%SVbw>w9-OKb6OEiYvT zHrP<0>HfNDuaB;g2eS$d?3h2)Ri8fBP1j?EKxC zt%~N1sXYjQUP{i^)sd28%C5TEFrqIIC~SP` z%p0XutKXqilX(ZSVTP&`Q{6sYxY1WeI$jYT@>4l3glCDSw>9|#2q97qycpxdQhRM} zpf0Pb&I)Z-bQWHTN;lH4&lx1YE9b%pve8^`Ifh0(XM`u@!LUGL|#tKZKdd~4X zO`G(59S9Lhoq!-F(ntcW(kYzX6bbztNTuW^$YTSyuV?q9$f2jM@cUVpdvmXi6?dX! z@6P?u*eVsG_9rn0aA1(f`t-h!h_Kf|{j6Z3lWzygW1E6^=7N!(m1oVlxO7ywSc_l- zN2Fa}2b=LNE!pb4A@Oi%6xb*H3xAwo-0HRdu92Vf1|LFz{RPT4ie3}-1Z? zWj?q$7qDb-%Q58L!(MjDgXC(xIsKAyB47lk%Tg2NRGe->W8=W^GHr&& zcJg~BDtPXum@q?CbpW<5dXIY7&;dsu+FXh~J=|ttj z7r(zxBuuu2rx1n9oC63-edX+h+W9o;bGx`{aA^=*k3YONCShMnM3FR+1VzYMmwst& z@I|O(sXgywHz~;pv$b`C9fNRzn?cRpnXz=E%7W9^&Qq*a$8nr{!Dfdp>pG7P851 zILQ`0o2lpp9?VU3=&RB}`4@Gzhv~^@T=WYUJU@hs*=cEdxDW;cEbvulJ$)tG8nijP zYyyNO%{|}p9n%EK-+#8Ip2IHSPOqxc=+{4AgUQvXD*5VuK<;xN8dM5S&1>{_Cmc!@ z4Pz|3vb`-CSy%?n^J@PB7RnDcIdWC3QtBfTeT}}estQ5~B!e;#nOhKcy+4i=WiNO| zh?O8<>KJyTk9hr3!U)y z9?BvlbFJ;OC<9GD8XV-IQ0|zecLgDnx%jdJBi2kdyWqA1p)zyPI+p=Wb>(gLDj&J| z={97eJYw^Y(h@aHZ7PlfsEHBIzVe{&Oy4i5zPz%>nK-||uXFIf&612)a&ZIK$F-w|z2|rK~cHq@XYp=O`)a^~OI3oh1;S<#Jk{Cs(n4tF_ z`Xa;EX;iiB(d`zIFhi^N{ag7sR|);k%H!2><(D@d;6{Mh?6&Y2{Yy-L`QmtE#ypq5 zLNIB_0QlhLI>gAOmd5=fDN%g>GaJUekcDc^@rvl%YerIk!#Y>2IFZ$x0M{CG;2Stp zwL>>n4qxecjF)kSU!b###$iDBNBs#B4ic05F%}H4*D&6n?N&a@zH5Vl^wlqJNr{BL z5bc|3oEZDI;mDKq%SzC4a#ul$HM`;%1mAa^+(?i5D*}7_IXljp{g`@30*vJGIm}S! zh+GZruqjQ?#);6I1>@L4p=I=}&9dO0RUM?qFJJ|IuOatR<(zyDq97jv_P~i6|0)OJ zybTQ=xn~=g=r-mzET{!P%D2i@STkNz8oHVQS6;=xUh)4pzCSbsDwgT-0@+z03oCd3 zqHq%c#}NY5pmY%m;3p$Er?vT&JWBeLd26el;YuY2y*~1`cWZ2W zLS9r}K#(m_BLx6$E6pxhEh7&FILPC>^oJ!$+bF(Z`{y+?oJ#?|;7R^oqtGtiaQemH zo_;1WhU!wy+4n0@CU(`!{#o~1oi@9N7Fd{hUKhW(zHUg>M zPL!5S)1$o8z(7Sz?`8=Hk_p4}dvH2?b@cjI9!(5mf<-^liA1|VDB)xDg>&LgSJj(t6 zt$_Udu<(B_3Xb{Dwb%dNCvMCl1d{!G9JK#F)?)a-x6Gvf=LQ-G?gznf>RGzhXOJ@M z5}*se?3@zF$syhSienhk#I$gDZbWR++(DPM&0*O+?pA&#$-3=Z=MHvl70)M0yw|BE z`R~0ynhaV+NJAwT1@Vi%l&GQ6hiu^bvEj+wJI8T&5JJZT?&OH_TsI>0TYo`c3#LRi zq?UJ9kovrrIZDgx6&(+Bw=E)$(U9_7Ka=P}vu`M09*t zIPs=e@0bQV^(Ilg)mrx1MyoFI=eHA{gu;o$a9OyfSj*;yt7<5v`!pgAZ5E)qG#W|a~t10)% zcnQ3(D)%e3g0*-Uak`O@k+;_%c%ot*=rfjb=_h-K=~nF99`Em&ycw&pP#0E)@HwAx69Qay6uCA|<8*6C>jz&WY=rC&~0yy*#z*3tEV|vwvQ<&laawcdcla z7&5JX+~>X4#|IU8r6=@eAZa0|S{u}E<)Fm}33o(=Uh;m$ z5mrp*$4_)n8!{v+=uo}h#^FIhf*@Y^y!8NRX%MgDl|XeVl7ll+-sGi9Vhi!<1U))F zIcOnFJV6{M>z5OTj zt!_w-Ni@qf*s9c_Px(BSF`o{iBbK+XmLz3oW6z?*ux>5VMUfFIB1)_1sWWKFcGW}0 z@0D@+Nf9TNxOh45@2p2X$-xP>vffq$T}{+QG!Wo9%DLL3pZ!#eobx1!kFU8`He_im zC4LKr7>JJmKamFv_mL*RQoqAv*dRkV{{H#*kf36W5#mLqiK@@8>1TYYMYqYG$>G@fUgyPvczoK`;?CNk)S{`_&75|&?oX6m@x=IK=`W0 zIk3|5tYE8)Jjaf#eE#=)ebcR4Z)<0ugcL-I{=@?(`|p4k3ToJT2+plPXq2BwBw(OY zAcsRin><``(7=TwybHC3-AG8<)q|ST1r=NRI1VF&p&0b+HI#$2?^#SU4e8;o9mR(XH7!4##V0R{8 zD`=%OeHcyBFLE_KV5jaE=x~WY6p^y(BnRbf>$s=IGs5o`&e%J%{$Gz?8{ zY_9zsjmrCn!=L0Pc2Dr$HOd^ZKe$Sh)SS2YpwVNUAX$a%b!SX@uef7YvhvhJg?taP z%{QyAgx9O#<*Tg3CB3%+wEHeou30m+tEta=x^v&KRr#Gun)QssYi*5C@1?H*D!2?KSNUiqX9P3Qsaf|`Oj($qG+=Lp(2n&sx@eFxQ^1aiNs9*w!0A_?PDVM~6$?9bI*CFLh}WoLb|2yjb< zZ+ejZN*3;p5g;bkMiEMC_LxCa-M{tD^q`GIVuSXNItvyrsC%%Xr*m(%5+ym6EavBv zcX8W^*UYyWPXf_FyFap51yaEJ`Q-3s)_c9w0HT+^NmG?f9(=L!L2P=pxXo7&d_}z= zLjD(dj_;vZNzN4;$&jgT^#z%c_$hX#Q-a3Mr*hoYPi~EQAx{z{Wp9tLrFc{{8lhN@ z?|hwZ`e$2){JOPW|}hCXK_z4Xr2udu?Z5 zBDpb14(r3?K=GrQhIdWY>;(33^$}ktCL}MB1m7?%t(6`J>%uvO+v(Cm|E7DS01iod zTGRLBT)wqU*Jha!L@vu1U`|bKtEyZ_FYqR$xnxq2^^2-!vilE4Hi&^Vyv=jRs%vj~ z=}|$j1)1}f(<6&n4Xy}(7|Fols*7MDKO&4zZNuV&qhGLGXk+mPqux-4MB`r~gagxr z9i>+Yy_v#+($19BbS?#EdO>|+k8Pm69{)udoU!~FfI^0gmh=mAi)U|Dx@VxE}7Ya{*GbCIwZFuVAD?ceZjoM007c;uN4eo&dE+F{%jiaK_x z&DBZLTSWonWe*;@D-ve&%#`LhGL;{i!cSM%e>(n7b);{LT!J@~lIT=LGOhpXA*R8- zb+SiFxBIxIPq>dU`xYr)9VB*EN$Q ztuD)Ba+X83?NPc6NSg?GH5XI3yN_)pV>;~kn7(|)%?7?_#YQMm(=GJQyoUZJv8j7I zF+&AX8Mr}OEv^Vf|I&S~ZT3EF)R{RzYaDJTgb^dxmG^T}1!1oWD1ZZq@Vd4zcZ45} zriEO>(eb%Xayg`bAG9n#+2#wm_+yN3@?^zAdQNIA#oU7a+W(h=rpX^>DEF$~xp3sC zXLgs9^QQfmJ)$4K%y8^sCj~*uQ9_|)Y*6WVW+yP0oKXiPGAS#J~u1qKyU2zQMD1?~`R|iy0TEWQtd@G?lm91b-64CD6j+2-Q&)Vy;-RuN8 z*kFjPtmk)Qi!3RyV{j)S4G)@hz%5G7=CF5H-%tPHNd|3-Pq zlXH&@g-;H*kl|Sy{_{Iz*k9wq=;9*ELMzwiUhCgP&bv$U7sYYD&ig62W%X|ir>=Fw5Aw0XlWp2q_WSle-w4xjVeXc{ zp4M#I9~QE0*NdOin>3RWQ=bIOzPDA)r=0~4Z+pX+_)Namaib3y*=1|p;V!#|HBNEO zO)2gAGbUYq`aK)xRPFa$P|i}BKfrj>{d3OmN9E(J(_GiPVQvVlK51HRN-homuEi~* z!q0`fqa8KI(7QnYrqyt;z38}W42{q(Rg*J#GQ1^b!%S6-n}^z0^1|T1#5|4xPQbr3 zNFJ#AaCEnq#b#faYBIGZ6919~P(zX%>-vxjzuI;Prog^PQBtcY`>kpSQrc0wgC?A* zdyl^#drnG1d=p5at{OldG%WdMO*W3Q>S(xNybN&>{k;7^Um2n45$%E~3~iKr6*7Ci zsN<3Z7Lc3URpr>MrbAKhw=v0Zm&hYLVRGJ$i580FMN&)rMPhNG56v>9cB6WPGVD}94l}N2U9IvpD1{st=4t6msG|p#i`m1{(0IPZ16t7W>-$;B?9Qr>q z0Bw$T=H@(|em&9t{+iSVQfiieF?RGynZ*o-6PS(dPvhBGUKw1~ zs}@@pzPO-0$kcN72_Qa`A{1k84%tSY1qJ{@cnRvTSZi9a=c2Gjlrz7g3qd78dwYv= zgdLSis;wHCx$cbTYAD*p<^ni0i6N*$`QnZ$q1N80mk9MVHG28I++QLBurgUk!B~vx zp>%}!v+v}!Z|wxv`_M|I^2TT{9)`Wi?B(Z$DumEZI|Sqz8_%#)o5Wcw3m?hbX4$n8_nQvy5NNVfu5QnY1vwU z5ZfqY=xx+`N4q}`QMkMT-uiG$xb96Gi5Y~(Le_L;rmAOzy=bvt_n`%Y>j(glMm8eN zV+aO&HO~XZzcz!QaTeVaD}#85pF!Kg{JB%mgmBb|jI@4n)om3VQeTE`X5RYg5hsdh z8D0PxISl+ho13nb+M)ikjWXg(kx6WaCI87WlaF$q`!Vmx%y`33a~+aJWKZi*`YE@&Us$wC>7!>HA(U1;!)5Z2W@> zsrTyJIg8Wm9%~fLXWLE%yaI%Dj)Np#qXdIr+}^cqamyT?cDQY)^mZk0p+3#+G|e`P z^9En%d@NaKnFr=+@^dYeh`JiQyx$CQgeb2=BZiC;j6PblC=z|t3ph{%KjZlSky^CmXqd}gd9~5T^A%i zNXhB7*ww((mlxwOKYuuXqqaT;QhUp-Ruub7plpAxWr7zh|G8{V%WuLq8F%Ezs0teJ zwx}b1?G{&V2ifkAgEjUG)M!dkJ`lp5*gJHK?EFgMC(<*(WfX}Pup6kznA!<>!a;X` zVXXalov`49&QtU^zKFTLJIDR1X;Tl`DBp)g-wT#IBWV^Q+l9M(F63*jooD{A(+DoH zRq}(L`)4kUrg!MY?b@yy4slH6cVg~=5GQU@fzI*FGg1}@Y#Gn^({T(;dm^=UU8PED zteEKv-o1a#GzPG0{#cXdnx7(dW#&ZH;WBrrlszuKz1fdWQFvy#ye%cBH{eJt_cxWW z`ft!3mm_tIql@#ic99T{;)1sQ^Pz1<;q#t5v+raGGX#_>eY+Lp+N%}_el$Zlkbydp zbA%iWQnUQdQf&5AKfFGFEH^gdy$iu<9|(7%jb_m=&$4`T+OZ(&O*fNXO=x7mZMfVH z*(C0D5({$c7MGP`{d?v#*#nIQSsIOfa;CCs__j!3m(k-lpqbbk;!GO+#u>|KCBvbQ zYFY@swV!dv!*YO4%*1$3{sBfQA%ovFqu%&(;Q3zGz3;y-&2Tr6B{(MP{cjpozDH=z zPHZ~zHsQ>+zpRA~l4`y^M<`gwPi@bJOO}6mmMS@;-}9yYrHjtA316kgK-#B(k=bY1 zvwV!-WE;iUIoD4*V6K}1wGY*hGX4-r?bt`9#~G?O+8Pey9@ERXCp&mWBS4e=+KkfmI%u%fd`N(e z?_`jRd?~!@?qoVp)SueFl~9w`yPW9KEt^Qxb{ZlHJm$ z_~rF^hGC|aGD=qMT)rKW&5ETF^Sy}9e9U+1^eX*QI(aZ35B+W$tv^tWJYJ5jFflP| za(}VhI+`c`U3m4wQ^SBNxiY?-clC5v7yLR0olok-9lYJQb6k{p z*cw>kqBr5)eYbI|;t!SO z3Bus2bZ%kme(mObH3OWgrrA2xf3l}QuY@Y)M%;H02HeZx_sGfwx-f;71WMl!S*N)I zY+nQjB;U3!Rz1?W{5=r_(|Lp@5N7EN3}_`5t_O<|z8RchKKPwEH%homRbn1->t2V` zPkc7+_aq6igi=~6R3(4&+ zuB)U}hEHs3q8&HE#>_0h|mJaVsnr*V>e z=-Tw)dg%Cxs~c%LEo;#w`E=06%vFt`I&K}fR-8EZ2zQ-)n+)htA)%FQoo{t$XI;|&7nSOj zGeo!_=8+MBXzfTOZ;@*$l}+$&n_svAJdS3 z?Hu0d&PpTRxcGXm<>Y@<>nMR^SnpKEF{4!e`c7W=l_qfR-9*`XB}TPCkaXjM{;ebD z_-cQ%xSBB5kURA`J2w~Xv6U*Nu0HT7y@e~ujE65vdWGcl>x&Vx&DQDxu?Ka z8~@+a3~rPS_@&y-d2?NpaVlBX13XIo5Un1&@ZSq5(VREm$(`DX5m*bmYn_=OtK}+l z$~JWRx2v&X__qqvSGCV3l8S}CIR$_KRVRZ+OAWZk&N;$irNHdryoD|jm_5`#T8oX3 zPRd^fC$WvZZL2VbJE~*+OfGa!A$K~ zYA8bA&`+n@;cKfEYKFo`XNwM!@=eKmYySMim7dE%<@8)uy~bbah!odur|TzmPI}DF z+}|BNHgYIF!pS*+i$f$PGZTP?%wKUgW%k*O|01$YozC+ho%I2KVBp6KN`N}IU^eu1 z!tgUSrTbe)(IOXq6j3q+q-SS6HV;DU7%D$_ZSQP-NFz_$=VFmao`7qW1;)NQx}xlH z%xFZ>Puu=Ej}O5AHeNJSze9C1;rDMmse&44qDCnK-M;ZVh&%E1x`RK3eNQ$Qggg&# zd6JmfLXy=NmyNbX$-jY4EqrON)}NQMS1K-S)<3q!q)vemEO6R{_zAd36ym9Oiq% zEu+(d^1VeYT|M?Cu6IiSOyikdHJ^0TDb;hg>z=Eydw2*%I`es%no)o2Og+7rk_z|e zPS(5Sjk1~M8?+Hn&E?Kh+eenF#)i}keU*le--i46wvhYRlsV}t_r2+BcBj-$+gzyu zIU$L_>yjEp+hpnz!jVjm{z>hh%<{AqsM;Z71h}A|xk{E;!lK?zd;v>UU5C#v!U%T` zC4-*fU*n7X4RXA#AhRUI^7QgCS3|XN13TO5(6_oYkMqTyQ4i}_C#txknW^NRGP;GD z<83uW9Kj1lKUYoeTYXz97no^ZqdLEu$IIgtFYav2nx4eu9Wxr)v`HMl!9(b&Dp{BR ze0q9HMNKOqS;aVM^9w-U8Oj+Q7TlE=AdtH~6A?eU_{8JjPP63h%&1W2`1$!QwjU?o zM1_ujif-7t{@Nz9YJ@4XkykK+JEU+53)776fjcgY4aRd>h{`r@r#x#cGZnk{y8f+C zWtyRvJEip<79eXf{dqpfZ(ul6wJn`JKQuZo9Cvx>zqUl(21JJ*ta8V3pIvDFS}Zk< zs?}-x9~wZd2F?97@mW96@~J33`ysT@#=$RJTvRU@0%Iu~?da;^Od7N`l?>WoY#xZ` z^?E!T#`CwL@A0fy5!N7G@XGm<8cG0@Hq7crWEaogsR zaJAF>Pnq$Fz*Fhd4%Djk@i1i1^a|vg(unlq!)xacySZ6MA)Es*P9~M|4#9{?D^N8K zsbVk;2juPD@y5h5(pEr`C#1!jN$PUK^lpCkydc2p`h{2BYNM|~$ki?$KDFes5c0Ah zV_0C>V8>SE@5FN#%X|V>6Z;dHH$fN0>MDi$N=`4^1s{I%DeR_#WOkw(MTNv9s`3EL z!-1;wqFZ+lf~Eg{$!t9%R~9Q6@V&-DZqpT?@s)uvHWsAo$MsHb9W^+?Ya)t`W|rPB z+1jGUB0VV3bk;zR{rLnqWU+1blO>2)2U-m)ewVRo<%dJ2NLT7pTXRS+E^(`jQ|j4- zPImtVhC@ebJIfLWZ^!dMcflW>`--3)9m*}~b;?VKm~7vWf3fXHsl&(ZP~0VcXum4H z&t+>j_TEok?JJjmyj3HQ$}O3n@7p8k;ADG=edt>sT$xo5HIR0;>heY5WOVRH}oY%0Cx7py~ly6ut}qmr_?aIFj(5Tr8=YUhh=!2e-)TGur4IACC&%fRt% z9DiGbOyx*J_p{?{fIiXAe@5yS+FwCnnb~h;&fWa*#VG#6&p2}|N4%Pq2C`LoK=%fgGFvP!I*HK$*#rK!BtkMAzz zF-S@sUQOOzZ^4X%XWq)X!!OS7MJYPsBDl**(ad`I?YP}0-)bUT%PN`Vp5iNxFY@OJ zyH??VbpPg6FB2SspBA^cO-Xz;(tDn}QC3h(LB`tO2^po5qdSuuHMf0Kg@&olgm0yM zw4R;$OWX4<-@uy@@L#nOix)~CU(g~TVy-_W-uRvL)SfS0{@HiI4v9ahn5f;S<>KaW zA6vyOCwnXIJ2}Np;3$ZOW%G;+b$G`6;FcWKy3-M${Wk;@rBA*EKKM5nUM{EHfnlh> z>XVZZ@J&5h`AaR(PB?)Id7Sz2fv(S}++T2CF7^nYt5fAEG;W3LsyLHmha zV3{I0Uqft6DE{U2o5!2qPgsQ;w3FUGF8|tYX<2 zv=RN)rH^N4`1{WHJ6?C=2Vg-TjG6w9d%h%9jwVy&eeXP%hG1UxebrTO1@v?u3(NJD z`F+b1xxl9&y9}8feSa@+nm!A$wy~A-v!Xmt(2nWi#p{8u^Du}5jqRY|?4c(FwwR1!~cd)&WpK266?Pve> z4NSZ_PDCzkdDObJd}~DD%h&_(jJ--9ukc_F6reN=bndDK?ok-tiRXU&+kA=s8J0SZ zv)J}nX?d(}M%Ko;XwlNCGtp35Ml7{`h^^NECxWt|V?>K-hdl3TbidXe@aeK8sO(~q zhuiP3!aq-HoDmxegHBltM{V~T1Udzy2V^I81PIiH7z(#@jbHB1Y8(yZdYoM#qBVF? zUJ}hGQ)`>&udTe!`D8`L&&rPYPqG_F%!@xMO!Kr{k8hbr)^}Jmk2}|Y+L{v}xXjny zzdC$2Bnw`$S80oU-tp}9mF%TYb53nr=ygInrcTdx%i+1WIHEO#V~<32QEG&L&EEEI zphk>Lj=s0T)3*aJ5-&`BKa5Y%mN(m}#trgw8pgReor$L!9I|wFF)~SAzrsbytnhJ*;(#dy6#8^B%4U`y}y)dIUXjMD0O{BB>ZP- z^Q(%gd#B}3QWCcgPswwfvDTOozS&=$KkG<}SfuxR++uG(Knncx)z5)dM z@aOor^vl$BdE4m4rH_hNA!-IDV{y)k!S6&smLU9j{pR}47BDp!2%xsZr|8Q&DlV6WOOhXO@rx2!;!NKy5*)4G9)el zQ1vVtvec0Co4YxNeKVr3C7QBLHJzy5F;=pEF!1zIs<2ZUPGlh-VuLL@+|m5B6K{5C zQ(nnrFk$Db%&zC2p)_Yi|A$@nn&6Ul!p7hm3@s!+D(Ml{+-w7Q61c$f`k+DGU*OCI zB5~sya42k=lj+`DM8LCcCo!5(zo+g!l(wr4dP-XmU}hwFE)UkQctXI?=ZvQrTrBY} z43FWI{r=R?nPTv?{37AxiDx(mU(35*o&~PzkA6cB=VxT2n7Ug#EJ#$FFOw#hj>UZl z+48rZ{?og;Ajz}is1dp4*=2oh&UH&xy4Z+g2h2UPnu6SLU66Of#sW6UU*Vt6r*D+|H+`U8AjcAQ%~v%&A!o-$|Y zC#})m`@8lvj0dbEAoBJ8?>B{bR7pK@f=^FfXMQ8beggvgW^WTU3I3A&h?0d z(R{hu`0|hric3D_Jp0@qezzO)+wD2&Xhf^Rgpk0gJO;pkG+8ZwX(qs>qLI-eMoDPC zKg`{Epeh|HPH`NSGRopvrK&lw+9b+&-k#6Ut@ncGr=JeXU>t3;zR^IMz|V~dRfb6M zGo4oqKuBRt=ZX(uI%W_~yB(hHF-LZr@qKErb1=K~0;>eUIUa`jL2g`J+Ty}n)q~c~ zI@G@Cl55<{&6AlVk3!RiPgVo%)8Cz(QFV;tUX4@-)3%2wN0NQ&N>RlrzJR+w@OR#R zXIPK5rErY>$2LqPW%uzpuZgATMGs{*^16GA5Lb@WX~-0KvqZASKPGoVZ3@`cyK_`!unX zk3G7o%g*d=t4_OOgR5&t+u~V|}#-9U66? zO!xj>A{TE`eh*4)P4p>skkE*KK{iVjkENz50}iPWh%*7rua&g-c^tQC48F20?=~F~ zI8!N`gR57M+*7R`oz9@a3 zz~ttiq;`mn6$nMh=r7K63%$ui{%`Oz$HkR~oZ>FcOD{wxL{Zn{XaV`-9doF0Kpa&( z?JhCgt!6gDW4Dh-1g8gwR#2+%>#6}VE)MUW{GAl!YMpE3-*hyCAkpcluxpH&blzBN zOR)>9FtybBgAka@VNUoJuD)5PFj!62EP`cx!_!F*MiM)36G{GvQO2#5G0eiXRD|!@ zYQsAYfOAC{ljed)^3Y%5PKiX{ z%>e7oTy9A1hvVX_L}SHQG=aP{Tlo& zQXat|l%SY9Aa#hbBBc(l=ctWi!rZ``$IR-tZyANFBmNm}%US22BT5ACL-0h@Fbff@ zCjrmd*!{er%fZpja_?L%p0+L|#2@;wlE0fO@taVpg_Xf!;O%D1C%1orEZKU>i zCpLCIh+jpo4|88Js9sir!8vcAc2sC~l%dW|?bgfVMM9g6G5{(0!Trja>_1$k-2m+V zIFCNMyxqm_dMhodpg?uBL-W!L%a~k7G)m1CWO5;!1XI!PuNg%9cZfiAL$~6zS`o`J zy5_X*=tf~5i9ESd{`q$C+*^h^_ELFVnTlxMESoN0PuiXdo{b1cJReb0|>+wlC!=jb^ zy$75N=I8=mUPNdoIZT^b>F?7~A|D1C=r0a{l-DKbenR%;Q}W;YXf_7^#L8@F#6Tc@ zTLm%OpPU34c+z27idSTzv!>d;K_=PF$8FIH3YUMc@pT!+t|dM*$+tHdv^{urh|p6m zdt%Z9QCks#zO4ReBwc;b$cA7hk7l|-ng)=z0HE1J0^7)QB#1kPF#BFVX0O<#z+?Mx z7+&B)L--F1c{~Fwud+lD<=5v-!O3emAOjx+TO@u$({vtr7Yef z#budoooQI#mCG&97Q|vUx|{hBN!SZOxN1;3C=TPmxyw&E0No`8B!=53X|UG@?GH$b?*`AS2|76ZtPyNA}atO z>D$oIi0o7>W&>d2A5@a3NFZQ~a}XLa4$lMF`${V)6oWt2sO`2XlyW zhw4QTQqAJ?0|r4NfWc;fJLK4A!>Sa~Kh1M)TtK8B5{rIHPUev0+aFASCNi?*X~rkt zQInJrU@r2)%mn>~eOcB1N#*&q6p59g=OxYk#O=VbFs9M_T` zm>O9$7TOs^9&Vt7%v;(0Sjf|wjmr2BR6mz$o9l*=mwe_#H0z?j5ht$nL4?vZ;05-3 z>!EPA4?&7d1t~nD|AY%i`AaCzCyME}#`l3@G|j0;63Biz^J<_ENcedX+p=zI=%3lm z+gp1`Z1X>F0I4m7vzbLf{-hF>RJ8GNIoL8*E$vA-T-uHl;WSHl%m+5pXJyIA;OdzS zq1QQ{42*Z$Z3Nj@ zbY4&O%eA$J0V+ie7V4B1xzQhtFgxOE!YVuCX% z5BO`Y-e1&6eBOzS1h==_V#*$SgX+7k5$6gIKdVRASXhW+rK(Edt{lF)xu$) zYhfmxtHqloO_OEy$?y6|hW22;btLj+Vk60(QBsL&3=b(Rwd}-$=3p)TE^WZA{imWu z9mBdZ)U+;GJ45PC?ejXd%?5pF=u&*WdVhKF+V06N+x)EoCXjR_TrmOmYiYeKNIZc} zO{}o0<04NvzS&DU$|s>iL%E;wO)vaHr6f{d^K6LrS|nDxO(Gd) zuSp2iyZCvFc1|9RoayGe@rySeNJir|7lIi?kBp?%L4_!h!U>LNwUD6gDYu>NJaEXx z2>_b;Po-DkifX~kb5IH4V|k8eK}J<=@83sHU}I|EgV*)Rr~#%J`PGuM=BKSwLEp5{ zC))sf_jr6{e8*54_r?-~a;ju14B=%CU8pMGPKs<%JKM3mr#n1$E?53|J6F@DkN+*V z*V!&mG|`8WGiI=fM&!`#Bo5-{yiFo5sQwaat3FGh{&+AY`W?|L4n!;{17Jb|8eO4) zhy(%Xn97*WBs;FMkLrm1U?=^dM+p{JBVTvU*3A@$1Rcr%_M?oDjvC)jy!(ZwV%J#} z3H$V97LAPQa&u)!&`AXnd(1?Y1oJ+rNrQPYF3PP%F#AE_!47!;EkoFl6RZ%TFqrbXesMOh;DK<85ob!+Bug$cVNJRm z9xZ?5W96l+w)Q_OfkqrWA2Koq>fxIi1Ae;&S<;Sn<1*in0q4el&N*($BSE+^7U)cy zUl5AO3;1&1cSSg==Hvqg_608qrT|J@QAM*^Ks)cmvWGL({OW`UoJmc*PSIE5>GNOj zIJ>=*gcmcB%-2tGPe}$E%IU_VQA+xD%u%-CSDwGSvmSIWH5Eqe4@b#p9TMEiv8XSZ zcB*jl+OqKRl;LVQ`IauERL~rKFyl9f_Zhx?n2Gl};d5!ibSek2l$zd%Yv(*DTf7X? zl;~j#+R>1AdY&{Y>KPs=qjXmD>S-Z#kAQW3$;i7*hSU>$x^eXF&C|8d1211v>xOlk z_k4FQ{?-}#D}|V@Rnn{nVD7jSQkn_iktme`GB@+}_)b)(mmZvr0SO{VfyuQ~ zJVuXRtq~>q$@cVN9FIBwt|h|=w+@0S3klWkErvG`W!=hqn+|ge3o@!bagAFLY}TMGCCa zPOht!@x$lJ5rZ)g%hE%& z+Xm(bm781(gokP4*i#Z(+v=Zi+}H!oWJ36QcNR+Jf)_7KptU`I7I&npE(Cmbe;4*^ zJo?iSsK0XP&|53~YNk8dSMpEm^q*s`Dp^%ZqweZYg+;rl5|?eeuaVB5U3F{b8nRpI z3I_HFH0eY!iLj6Nzfi=$SnC@dt}l-sm-is=vSCy#;DVanaT|tBM~9* ztp+DYrK`e^L6pxIo_fuW3VY7%7<_%r!4~J2y%1sBuQ3-5ITL-kALZb%^I=PNW*%*j z0`8@R;t?T1gxu-iCMk8C1r$*XFx|HBrU=5~vC>&2j^ zrwkL3yx*|Ru0Q5&^=x~g^NVfkqn<6|hqL)-B=gtqlilvy>8|;2oSS@H_M4=7UJ=}> zS`j}}Tu_kBVPWW9GFhEoY+(649b1s$KC^k4RgixJ ztIi1ON&}5VfniUg`4J#rYg=qZ1c8hex;pmS0jlTrJK7Cia9lq1V+9%cJ;QAFQ`S9^myPskPCr5HXt8cM*7T zx^PtH*JVBqIh)f!DQG9rUqF5^BESWM{`95-a3l?4e&@Wnp9*tNtGLsW z19(S=QFA6OK7@o{A|3&+478JgrF#I->DrJe)!2@#f0{bi2cgD(NrRokn!venz-2J+ zD|#R6tETJY5!5_CY#7MCVJKB5HUwM=9jn}nS)5rG~9?gj}sCv*eHXhCrEMIH)Xu-!fO$0S*;SJ!oh8JU;@%jB6ViN5Y0s>}CNr@1Fx@NrDYNMpt(U!cntbWKaby z>l`rb8Soc=-(CRV5uni8!(mRsYzjGf)%yr1vct;2$BF@lei1jnzR~7UMI=ZeI7*&U zJ0TIK$!4vPmSdP~iej0KC))c&Q?wtbN2EzC|C4zR`cSlP+91 zgIMS>s9ju=w(A`h&OJs%YFclMiWe2_YPdTr*NE?ZRodVC*tAq{@z}_=wbgYY^Za)R z*MgZ%k!D85o=l*Qnbm-Ij<|r3-Mnd&+id+qyXCiG46EP2CaM&zv^(to(r{5lUjXN~ zj8bBj)rEGAnLL$<1oja=H;XqH<}EL`@q?$Y3~PU}fbitWbhaNe;O6IrzGwC}uJ@pb zT^l#2Xk{}zw|z8Lq&KyU&`VV>-MjqmqxC53jhzWSCO7x^^e<0D2BV!;!=uBQHuw2w zy}b}&3^NiGo&C5UQ{sSyY^t&%E{K`25Q`TeJeV#B3Jt|aB31Q8{{>bGAUEOl`;Kv7 z@gI&z&>bpGdidgcBf9$w3l^d&)G1uAgw}l2rjGtOElmT(BLgtn&2FIN2l_Ccf)0A# zjmq(9BK$niP`dKBN$x9iEj`GYc)Y2MKsnj#aZ|zCfK|VwwuUFe_0(%yom~`ce#c}E z+cd8e`b`e}#>*d#&r}^cC1y6~C#78{e)&?gzM7Yp^iiny+m+la+k5Jxl5`AA{4lK= z$u@w6WcurpTH@=08NFAf?&Di-e7<@52jb&C4raf8HAEboS3Fq+XbWJ*ZLp^?>6IGC z?7UJ}sWa3$_DT6nS%x#uuxT+!F;Dnjv!Kj59D6 zXv0D8FcZkWnFTDMa!$zwNzeR|P%gMY!d3boYZCzFJywt-MNAetP0 zmKycYj~4X8zXT1u^BVf5_8;3;oMmpe627do)tQgi{5VHdCPzDiX7l$9m1yW6TL|-Y z_ya8j8?!<2%Bc(N+@*s=4 z2Wj{uGt-4GWsL04_x;BafzRgm-Hgi$9~t>~lCH1&MH*T8-cs{1Y`Bo(qJS$(Z+FI7 zws02&{e0NdqY$e%{&``;*Gs#8sBUTwz!%Bq5Zv;0BTu8lUk0kywzUzHsB&7>ddnGwvl znGpiISU!FNIKjkdy1kGEG}O^I28?S24gJM|gcI0wJg1JmJ4`rn4KSLj8f}=1r??|I z;)AMAYi0j*z3chF0Vk@u^?f17-vw}!4c`}hm_4M2x_&vyx;t7IwSb#s>Uh~njpudH zG|QG&>@WP!3c9r%{xEhpxy-I9mhoB;R~sOy8_5Eoa$VD9#3XrO(?QB&&FaE)eP_oYqqEc zK41cSaw?_@9wu-*^8J(wr|DRoc@fh_Lh@a-U?cYN%l-IYE`-z1#aR#srTcG9(3aNZ zwyF>~!AUgMeU}-sN2tfi4jn~D(ij!UL}{D zCR;`Wpig1DH%%= zr`;ca_lwq`Wxu}@*-PKS>sAhqido2=*#LMXRGnr;9w7J*WJf!OOzT_A6!Le(Wy}>a z@q8pFTx8SMJWYr6NVk^1IYNM`>Vfv<{1B&{b43RV#6O@w^Q_DeJzO6 zdBvYjB)CsBXQ#T;SdU(q8O#QkL$Vz8jD~W7>j1+T*l`d73cm|T2dieh2A{6~#g*5rGx8mH9Mz|Ep)W;RI!Qm!`9ge6DrC4JDA<1uyAC{hJahdRFva|`ctK-Elmhx4i2-7SBn#j5&wQGm zzSq>Q+iis67vH(@jiZx^;T4ADm`mSo}mo5b*ORt+5QtjuH%fH-y@y5Ci z^b+xRwsKQJy3BuVo?6fKoq<}CCk7_*_-Efw{jUX1Ggrj_>=PAnUvdUed46QMB{Tpm@52|Wb5#C5jf-G_Td-pCukg21fWM1aDx6F-IH|4AvIv8cD>8! zcdq*@XgTzWiR~jf^gEh2Q`|BC`Y3=y%Z}AIK|e7;<~|7l3ofqPXfupHoWZX!CzTPo2Z$L+&C{opp3o$|jBj!Ws*nCq%8?^kOC^O@` zaU?XTHZZO-8Yc&gO9c(hDzF8a*tQ4&PWgupP6ottgxm4r;WyX)K@uYS)VktJ^8Y*M zKXcPnb59SmIF2_%D6(H5v70_Hz`Z#7vLcwpfz#_b4&ZO(`yl?=#t&qeprH^SEGF~Q zYhzng4Ye}wvgUaA{1@#RtE20*&jcpUr^a!k<||(_La(i;HAKU2=u=Q zz;=7LY)_lDCEO^^Cy%VnJa7$+L*!Akwou>huw6;zR%+}w1VAMA*N=gT6*w3v%E4+? z)j-J6mvWG4y_vAm>x}`O|fLUy#rH9x%4KWRG$@_6_*vC$5(AQ-VU<+ zvM9Is?xwYPv*^e8&`{v!3_n}75>;iEU@rC}b}t#mv01$l?rg3q=Y2+R8|ho_7#f}g z!${K5p|pd+QzJ!4)qp>>_Q{7qM*|h2rSLmlZOVd-d1>4aR+u9J%u2B3gC_)fx5$=9 z@pVk^ynbzz_?n!k#MjDNv$^Btf+K}ZY`2_s-c{nDPwQs+rpuA2-%)J$_I4|^_RqYG zfzA1H;X&UCa)roJ)|-@SCAS*fB+wm9#$&$(U!Jk`C4Rnd2S-V?O~VN^(Q=L|qc&a$ z4D7J176a3)w>7dIIuImED?ps&|0|0CZdv_<*D~!Rb+&ufJhhwVs&mo2&z+H~7v_;l zGfVI<{c#qWD7oQD%Ga>w7rIb|(r`v*R)p#oX2kp%a482!MmWiC@3PUI3n^eDK}T3uXjOH8%@ljc~ja9D)YA5Zp0$p>1?YQD2K~K@`t5 zON}K^5&Z~``9UPz-E1|{U)Ms4y`{WwSU8p<_ii3|({E8932=y(XTBXu1BOGB%CUKN zb{Nh^YVrbwH}k|kl(WQYs&6vdLhl)$!k4v?ppPsF?cEo|@uZ6`4R%1Ogaif1-$JU^e1=)V3)bf_sX0!DR1}U;V5_9> z+vp$Q6?(li;1M^=Ni9C#BYE*#7hi?6cqW?nGj)=AqEf}yPI$S{XKHIW>dpLi_-H@G z7bh9^;}bZS+MW%8kpNZ$+OWXftfKZ`{(qw`P+ApqwHpz%^CubNaR_)((&xGR^8*Q} z!UKLNITo`v2T6v#CM80u`WqU3@BmR*|KBDZ#C}Ibj9f;S6J{8w`YXNeh0szz-@WjI zZS_L}ivpl~0_=!ZM`px}IrnoHzQ*h*=syL){ZBzml3)+_0wvM^Fb@N2P zI(40WD>Y5S6dq)1I>AVWOCY9+V?WI!dm+zXKHuML0X_kOg*?B)gQIf7>7jeTqP!E_ zpnJhE&gX%8fj7Fo0Q9R;ZM_iX zWWR7nz+()0RoW3hzg88yRi{ z1O^lYuayzdB(TcU(#rwhh|A?nhP@KSe3E5FZ2LRFm*dJr9|!Dd{imjN*zLur6tHo0 zFQhf0SOloSJM8PAN1tCFav(xkH#iV4jciwn5l)6i-l{FS5~w1bn>rLAM1wb%`uj~K zklT^d+Tl<3^?;n8uDcBb0}6-;o>Mr$--QGnUbVNlU|_Sv<-HiC|B*dxIt>P<5wur4 zn|?vz3oP?#2H1xt5e9xzh*W*)R~-s3IGuyg7EjJWu%@ZD>ky7fUWVFP0ftaWjR#hL z(8ZH3dkdb;+xhVAogeGj-k)yz3xK`Z=}1zQ2ojH#(hW;BOfh7d7aS>}bclQOVg0)X zs;yuj`W9-1M=m80?K6-y3nK8G4%*q~14m7eB0+6AGVMs!tpFAm`;SS&P5vS>_xE~` z*xavGW(!;A1O1rZDMJ^Q@PB^&Nz5iRLkQa0t_yewQ4GxgdcbS_$! z)Z4+dx})Q*fFm`|;+}m{M($a^7U}!R$KUrW>S6`EX+F5|VpRpTxom{@sHebKhd!re z(b`#43;zly72vLa%jL?0m3FVzvv{+~l`gNgrn!}`$E__RD?P_;Z5r8Zrb&XUl0L_L zvY*bY`?Hu9{5+akj!*WIFQIKecJ|i4cP000CuoUVWBJd-k?*aC=ZM75AC&j_4j6zk z8b963yJtMMc<_-Wh8Mu^*0`k%lmXjx(9NN22*#ow-A{Bt92F$n3n?=3g`)<)t*&}Y z88bl@23Gw{eWHZAX>4Kz?HJ_IKO|42CGN(1dw;=aV`RApRTzAaRP{mDb-M}z27bDa&3Jk29IWw?{ZzFot;+>?$Hv87& z=J2Dr!|Qk|nYL#Wl29)-dJ8x4zNX=UK@{(3^f9n#iaSC|pNgos<%mT8Eo3ChSpD=l zb5P=Uti8Oe>Pyav#NE)%_b5VWV!5gvcsNW`t)9&$Nw_yt$)7%1DdxnRWmn$L)`A~; zw4W0M8(~qvHku?T9g+O0!FD4W6tE*U`mnK@uK5;BJs7tC42m~mi)BiJZQv-O|9UB- zG3Te6{;iyd6Fv-#-g{Z{0~pv%Kp?+2;3z`n0BGI}N=ow%92KGQ0Ge0#d4pnu{1G(N z<_QxN=qo*bnp*f7<|Bbhd+sBl*nr?v8uI|jLewpvq=iGQG9&VYI2BJ|8jXCoB z6DE9;Sl-a~>Ji8^wwOkd^(LB1${D|AVS-?$I=Ip4pl%i2cFE@-pSlS??iFA7PUS$XNmjw z(Z(t-F1*|ESs7_z2%)%ma4x{pd?M|?4(;!QeCmn>pAyakWn>ig;4@68AM=r?F`G2^ zU7btB$700Zr*dNTq;XqaT4;W;qFy?iqE-%?C^3gku`>k}LBmyE&S$TY$aKW@xm@x+ zhccVWld4N&<0Pf6(ZE0 zglY<|8TQf0Dp9w$R2PM@%?Aw;Kd9&_EmBZ+30FnOYK0@A3Pnt5z~UfReoJtqd3qzA z9;2cfn%VUPEEUQPN0n<2tPWAYQ9WAzkNsWzi+T7H|Lt~nIjiY0<8FIogt7+&37QL= zmtUnxhHX&oh8X&o)rrHAmJ%p_OD74GLcP5NO0Rew(l_7!shmxbQ{w^>1L<(p&8&Xf z+?)&z#kMg+j#vlB&8^a5cmAn}J;>4hf7 zJQbht)Dlem+1TXvC_zv`b;yb;oPA2~SkA5(sT~D@b4{hhsvD6|z>rhk_mNK0R8XG{ z1JIP86L$fvV;Tsys+|VA*rDo$NJoC6sJ*^;XwQ<_qrI|7v4H->eJf&iXXt2Y`NlWz^_xsBCnH96Yvi@l&mcCP3 zq{vz6pohGEPtK|oZ*NTy$~-iU(tB5D&J&%)tI76AZm%G&Ao^xO-;`@OnYdKcUaER1 zru1X&*{itPZtdn~s{H2J%O__>eib89cs=Tj$taS?W+8PdzH+mm@RE#d>XahKZ4$$m zh7NcY_6$H!Q+R>sJ-kB$Ra3MoDl#pI5ZW2U#{nq93(C^0q)Q)yudDKVn8V&vEM&W| zx+{I>eKM?An@scn(*Sp=aaSZC+UZKkMRa&Dwh~h;2 zz5V9_LJp41Ff_hgifRKip|w4C9h2*6ys7$|@Ix$QXqvb0K6|NV)E85hHA`f}K{H?>ST~`0=FDJ2fA1pnG;)1r6unsV_-=4Ps%_t zVGoR2dOu-@hRUAE_CeBXxnsyFjcikauamo%=OM|a9r1D8Rtcs@T56$_KCJ7h9Kfcy zH(l#HQ0rPDG*hpQgJ%WfNzU;GV)wVw4B$ zdWDV|GGY0(Yt1CW@FiPDl2gWuu;scZqWF1CwJf^do+s$g{g!-!xWII1O7X7@K1bGu3dE$41XwT#$Eeh~pC zB2ynWfRPs~a%QD)ny235%Htx7<}M=^;!=nri5M>vHZdu@_eIsE!iYJFyq6p!1eFh$ z*0^``%JlDf1Bx*(4ZfN6S?RutY(C;9f>gBkIaUXkbK>f8$YWEG8jr##i4<V*QGIwUkR#{pk>&##*DJo3JHfW=$gk&AeSZBr(m1Jp= zr6Stw#E2A?h=?pHMfTnA()W+weIAeJnK@_9yMEsHJ@?%E%3C}#hDEqoGAv(gvyr!Y zcNBP1QK2Z6gSa#9>}T*{XA$8i6R64x*w2^<8dm7oh)s>@ml=s-f1)NQnL^Z~N%ueO zUTXUA*)lrbf-?*zw`1(NhlRSbexEMWQj9{hyHws_4AjisX&IMmks4b$rDwd;@?g7L z>+)a%wlSS?Sk~F6vDgC~nX#geu}AJ0Un^hEb*C9l_NitT*L)x)3c z?u;RulV}*6PP|n#JQ;V9X!Ntp-ph=^c4~g?yEhGS@BTrcXr;gzFVlFUIWT>ovs1dy0TJrg@6<( z`Z~OMci(Kj+ZoksST*?RC=>-M7Ka z|FSf>?xps_+O{FM7?331n^QFe-N%% z={`jBDgY0aPWeKD+7~2wl?FUfu|wK0vdu?J&osZxqbfPXbnWKn5-Ml?LGEhk1Ga~GleREC@k$g$3S$h*IEjb0qbbxB0R5KVEP8UiS(7490xs~DSL8yr zm+VM+&~%hm_;=b8eMC$CzhorCwA^Xs7A;CDDqi+5{jU**=I9mJ{NwT#Crx7NeIY5# z2&-9)HmyX)@z}%XW7Kkfv+eH{*HTGD$%i|Dx;wo04Hn;r1psb2C7@l*25Qs3^cdTI zpop46{DKd+Z|ehF|0-<;e@`hTJC7Ft$%Ig9JjR)l%{U(mX@31<$ij^MQ4}wXF{a8I z@}8<#B;lc7@OiWwa#de`_KS>N2i_CNd$xdv?SQ?*-up#lbpHd2-b^$usw-uH1|^7jiLU7-w}@Y_2OR?TfNUMx^=9Rvr!+#Xex)1nG99uXhU+e;Vzr=EvRqVd!m@- zJ$`TwBku=GW{ny-vM9Y;vH+r!P{$Qwu|^diKZ$T;s*s5#SEh;WhTD4 zNOH!F+>{p$38y;&#Q33`Mxie2rU|C1k@h@R z+qoe>oW9%IXunxBL=&pq@daV}{*2CRiD_kWhd(t7HKuk{{tuFaYTi-$kx=)o0VP~PiMB99N4MdO z-I{gkkBbuu2ei%|SLQcMq#N<~$KlMmYNr7f*Z4oXds_10NM~#bK_n@C;KU%I1?d~t zO7)NDXPlF2Y0ri7nW5}|s!2%M-G5R73s)m8S$w!I4$y;GC~UvT=@!&`8Jtv()SWjd z!}pW>Ri@rtQ!rCUp5%Sq{GyuMcaUy6iO zW?}Ks3R*OKeuoF_Vx2h$c)x>Of|BY(fIO`NdL+iIY_!Svw%v&2ZLcVGV}%vU{C^n| zbd8)4G-sFzZDte0iHDXrE}J0wqWbxAYl`3Juo>oHZrLKhV~FyRqT}yB=0btUpTy4R zP~g?QoEZeVmEG4F9K-~c-nrJ4jz>3y3ZBT{A&r0P+TGTga33N6m!MAb{`~6a}Ovkz!6J9(WHq(NlYC^g2F@x)=3>Y#n7B%pi2-N8y z>xm!zWIpKG)DUvGl7+7=I0Usa5PDdj-% zh>jWZ!Q$aS^>g7AVJ?*V18P=@qaQ0d^R|fI1)|!^qZC-i0T%nuv^^+NALf#=T@pN; z0|(X#{j^?hd=9ZIqU1i#tFBpN8i_}bm^n;-9 z>~TL;&eIamYN*~tUaOkdq)?;P+z%3kIqKrCNwdYGXhB6`j$`5Natiidgt+Tt{;G~- zaVbf{v+&w|!WgVL@q(6jGLfbk{~ubPZqLehlSm#%8Ng$a!__!_!$1uf%8Y%20<(^Q zbno$rWIG+T4%!CL`)((&?bGGnxhtSGA8+G&z}9_u?4;1eLnOMe6hC;7=H|d5DH|>Q zYFZC4yW;%?F`%dBxa@xn>_bs^-{Zrptd#3*&MLcaEkD)`om(yWI}rtla z;Vhk_`)=tv?Yk9Fpc^yk&SmcDd2M?Am!+nRimasb7Ea#(Km;O^FaaPEE61 z^qXy4eUo)o0+FCOmV4D?@lwih`JT|i!h-=3aEmmB4~Zqek2duae{lnwt8(Ehy<_ul z8nq-%x))wQ+nsi3!trEltKFM93+EIkyK2{}c3apqhyWpS-Vc67s(GUH?cL@cXqlz} ze^-2*1DB@2`z}bw)!8J2b?`1Z7x+*Pp4S2s;<`v#48Cx5QjQvXAV*Or1N{NyviD$t2NgVlPTtd_cR(;>ifE9zR+x41J)ty@HL1)0!-YxN|_)O ztbAnau_}?LccUauS)4^f6EqE}Fcymeg5opYpIO(NHD*(TaBpXKohNHsisoX5OrIL^(uNgb z4}|f;9X^o|DLecS<=96DeBL$nYvVzMQxOHb$$d8!$x8(#3kM(dAO@DFzAheGc)PHQ zc6%CbAJgb0l{n;l@kjo^!=~HV;;zt3&sVbR>+d3qVaZ>GqAmV7qZJR%i%Rw{e|tRq z=WD(36@7Kb$L^z((+B+#qy7HxF09SHiplbJ;OywJ9cnH*7@gJU*EE^j-!~^(-K~G? z%7?ju-kY}cHwitqi+@F*AqJNmqUD{gl>SRaA#}z`=(J8cq+-0SZUOdiVQN937vRV-rnXNVlW0>c=!4 zPd<0Qd&qCOGO~d;@rNJE8se$!@84yFp{70M{Flvpp)XE3H^OW=?ZmE)}WtJEQ{NPLkQJ8cuVIL1&vMa+b0VOA7OkiAP(LHWV>%!gl zxs9~zIBV{s9sDX{t;#sSSR{BNORi3zq%I3)k1&IG)4A}#k&k2RZEJILP3voIbl$>c z+V5pxyK}}}S7raLqh&Nblqi+$}vQX%BO9 zMUwD(u?y5G_bN#Kyx|E9BmPS=E^ud>Ai8Ao**4(4B#={1BI?J&!&S(5-P9egDPI{5H&9o{8+Yz8#;Sz+ z_LFfM{O!`N*x}=HlO!b8-l&8qEGF0^0k7N?)QFl}Wv}FmBL_6Rns~`?t^@iX*I;}( z!9mSimYWN?IC^)l;ESbi^34^-40ZyU@jiXDJ)Ht86)lBNZ>8OAEph-_i90T7>y?py z#;P^5=VH~^rs*o=+t-%AfA$Ow9c}$P5eb(n+f~qy7!yXf9!29b(_ksHG(sK^tARhz zfg&E~8m1~Z1>#TstCF_ocs>j~U>R6MO;XV(8jNgZFJkhF>+$t-UvL;;)*g(1xhH_j zdTD}^EH+q)bXOO?QPIq6M+{ue@6PP>7z?3VFjtl`M(u@b&OnOZx*5`ssM*l_foSt+ z3l>_?>SUiru*pS6_^}9RiBdS~pTRW3niGk-{AS1!#SE<$q-H)8w%=$@j`)h}+FZiL z?aBVG4@(LU5O4T?r$Txwn&jDbg_M3i-Rq;{=OVVhDh2uYqli>B{;aF!(BhSM6*^bP zDi7awu7YRuAu@JRzRju_KSa5P{WRmKncUfJ@}=OZPDCD+i?<+Js=x=_T_KyicRR+v zGv9mGquu%+=Fm%4(!rhMTePqlB8*n9OnL~VCBpJk{ry64Xial4;iqUBzF7t9@cL~z zroY*|$>2vNyW-BjoA`*q_o8Te57(|sqVN^WmYp0m}MT(UpnsFf<0(9V%NG906MH!dBtyHZ#_Eqs0RQj3s!G_o&ay}guuv7g{iCe8L$FKfN)bH z{bb`XSa#hY$2Ke#5;qwC25shqWj|$dE%#XP3p)JENiuL-6wPhb>Ifch%cj1=_!;px zpuFT0F;P&Ur;&3>b9c8Sy6!uULahRo-dTHT1m`K^xn0x0SDkLv-hOF>lTMyG(bplu zS|n+ipn>;#xAad&%dCGZbt+xIwYc6nkqoDWp~9b#D3M~8Y`k$iHSuHW2@G+X$a+wh zxBIXPJb2R)?`iHfecR%y@a%G4OoOS@HHAfMC=V)3YD|SnDT9YW;>3Ut9?a<6#)pNy zh~~iC6E)A2f0gKvD5jqR7aLU|f;FdD;>ws`rC5BRwWQln{^cQ_HJj*aD2lZ=mQX|u zHf##|oFXrbrKW@PqjTg8=irOkkv}%FWS?-H5$`E2g0h`5Z{!mIzL?$ptC<>pXd8=N zB3JN11gM`s0a&C0s&Yd&x|`osFAQKjczOQRO8F8hVB>(_em*uHMflxGMT72qjD}x3 zu7tUp1dZDOz19)8VB4ScUBe|R2OrKn7|i{;mcH9?Umr9aZzMq^-BBRD`Nod{zSF4^ z_@#@#9;%g*iIjz_qyAL7f0YLszp@^NGE*%jF)LcPY6}{cQLu0+)c4!e6It85(GAqX zc5}Zx7{*0g6l<$+h^uWT^Do`F8JjCL+`vmXV4>p7-AfLpFB< zOsVV3p}P)1%EW?1GBK49c%VD7+Y z7BT~cv5gfBxR5am)B_Ck=ZV6<_`H4*somt6i9H@nztGb$hHvIyiazj%)!P@gyqPDP zlR@R4W>q{Wqdld>io0I3rJ|#$EY3$PU*~C!VE%fg6bWI5nli(1gX1dCi4gxhwK^rl zv$NNOq=NSMM(mnZam)zVqKHaO*acssJ;7;hrv(TomZ)38RMc6nIqKnEO~88zLVCvM%b5StHf-Q`z6`iFD1E#THW8N0Y^FEV{Lw&iW zpEU9W(cZGCzdJcgKMSRe**@_X&gPYErNYhO7UGr_A~xd3Y|NGKrgTtV7angr#XvM6 zgp%}we^@pjI10%#VK14h9b^^?0mvc%ZWMA{!Yedm{%Q|!>$@n$3WmRR_gRegHwnb0 z=Lk{N^>PJp^KlFQ(YrJ1b*fL<-(ZNFBE+I!f(n@Z7DSnIM>p3&E0p5G$@l4})uNM7+yj<0zBGvjFA22R5r%9Fe{Kw)DM<+pZk9k=;w2WSVy z51N99rV?=vVsJ5GY(Le8(O^$(j-5w#Qt;gM!0N5|g@a<0p;c55s&@T6lJX^u>696D z2z@e3;e6}`2dFw;JEC3@kr_c`VBCaXH8XceSpQq1(r4RrR%`4n`R)EFU8Wqry!Ub> zBqC$>ICK$Fy3^Cq7}Z+SC0J|OdiDvFv|zu)&zNk#)FU#G5jmP5$B>aBm#_Wh(-<0! z^O_ixY)`G)byl46^K5CObwj^6ErO#U1D>GdYNrJ3NCV6>$QGNX;ajFlIR0QDQ&R|O zii}F~Sb4xlK}dEfDJ6(&7}F0d7xiu!ZK>vMPM^Nc;MXN@OJtB<<)1O)afB) z=-WtUwL*zO>_R!Sj+#I~5Gj}#j9W9kA$3DXcaMF0O=&;~A#-BtO%vn=apeM<@wir0 zUKqQ%;K|Pe{nG^{>E~l+id&}U$sv1CPfS1cc<${-Ylttd9kYhUP-G+)i(#$|yVGd! zIc#BkntGk^QL5Rdl{KZki`r+fZxR;-3swr5lx3Im)tR<$51aJ8WQwYmh(kqaiMJg@ z0NRg!yr8@TM1VwK?ZOf)8lLgGQ!gYc^xVw!V)vrm`gV9Xl5$4;?@lzC!-tisM+8OaB%;-jryH%Eh-I!^6jbU%EFy7rFJ5|| z+(NnV{CgS<5iBd-?u`yUYvszAh{N$=j4^rkZY~khxAHcH(y(}hO@0#jt^GZDAabEr z_3;uU=d&x&S`&?%(uV<1t;_PH5EY=|8OiplcIGu-|Fz+f{;Us8hx?n(pFD&z5@1^9 zFr71p)d!Vq>S4YO;dvy?Ywk{dYaMXn#L$kLgeN|HvDoZepB;H1 z=;NgIK+}Q*^L)e|expX90i74k4ul7ux>()1RQa3jgv&{Kcrndq@^!)KZN^`={94#2 zSv^p3*?mlk`+kMm05#m;;4i!;}E^vgiV#S+YT5c}fc-f{7R zQ~_cl@ua|i7P2a{uR=uc%mTJ4sdgudpQqo0QzgNU!f5>HwTfOuw>(ALbPI)UL6-#K zCeJBbVLKs~0L4^k<)AI3Q%;FmZBl8Yg7?Gv!vfU9k%K~9QB*&_HMG`pya%`9m+lz1 zmmd&w04`!nW)mH5I%Ub;a!}xQ zdSAC{VCK4csMjlBEz_(K$5JCg7tRkCCbVI!zmfdZ1RNBFr(W4k=Lc^6>ONE*)xF+k zICMG+A9z{fWC;SxNSij%0&b>^)E_8i*U^Zsg_sDraG8Ct2g07>=o5F|` zZf*@D%*_+Lw%gU4$m=lW7)kmeC__P537RoEsredp^7`>eYTJ*kOo;K+&qBYWL{}nz zJTXyiLfQ=19HubtN|U+twzai&JYHqA8j669cU`~uLr&jzg(u2pLQ24QV%)_2dSx_q zqL2U#E&O^ig7pjhEh|6%aP;Qrqg_^LvNTT9lye{+wLuQXjgk-Fn)ccc9@Ep9MJ$(TuNiWJ53X%K^fE}74b1(nmvLU?$pqOdDVc; zc^1mp7TYZk=OeHP5H5wQ^aRRx1m*G?)Iw`pVW%2Tira{0Jg8B5 z3|pEUJ6+>KW+-7^hjtiq>U;2LUxwk-E-u94gxRvNl|*1K^Mazm$}aRBDj$IsPC#eV1(MbNHf(SS=i84rG<6d?@oh_wJd_;? z!|X+YxVEh~AVYpn5 zU#HS$%V@Xm|GE-8?n)#iQiO?N7#Fj&3!5g~$*eK@feS$CBL+>&1h@m1P-v}`fSvm% zlx7oqGXAS~mh)Qha{Fx3%4InmzqnKl>;lxVBLWk#X?dAP(-&1Halt5qXow8~Tyg2R zSL9knfAzkC1iUc57t4YXx*u)GQ7mV3!fI3B*I)b40| zK*~!Sq*X)OFWWC+D0XgR75Gx76lqVy16sdU@s+l~xxY=73+_D<6cOu&t%N|Cd{d05 zA_M}#^1b-AEhnZCc`yu%&N~egZiC~lEC+jcc6_4I#Pg#$#Kcod?JoS_P;u%IHNsR5 zti$jHk4aS+Rp+>E(v>jlYfaC4UU=yoto93?XjyBFWTK77)pL9s;)sEJ_#luPEYIm( zyqu29Qv@yqYTaz% z5V`>gguq!LXxUtc*MWMgfvRgi%7xHUH{#U?8#ubRz!@%Z?!hdy!8l~l6lK8ZGHOV| zV@yi4@!`Y-qDr*YT@3+n5Y;W3U6Z{hsI@+(G07a#jHiyx8?B&nmO^|>9fkvgCx4H* zM1XY1t8;}g2}E#47+SAmazGGe5U~K{z1-EZ6+f$#v)g1(y!aqbmkkbp{2pp2#L0hx z*d*Y#ivsOCUmnjoTv}RyoVzz6w2ea7E~#UpP3c|uG;r)4)WP0Kw4x8>FM-;YE;O!W zgTzZ4?};A@rw~}NuHxX33kp}PSaQ+^d%}q5p*o-;9yc49GqLSe*0N7~nfCc4tMfDR z2Uy62y|Hvximb@N6eavtP`EX@Q5Paj<@8nf=&E?;6U~-u$~jj?gK)|W?w;ElWESiC z4Ath!>F<&={1Sz_JoV?trTb?CZy!#aXlSbI%B5ncw~lDGGC>80bz0XW{UZc)nUhwgZN+*k>es~9A=dPB0~<7lcD=gNs}zBQ)F-1jgII)1mWZ<_ z$`N8ZCyLXu!{N3VM5e-4xafT+YEbVpYej5%mAUyhR!=NVi5ASf^S_UfF(XjPVBhEX zfcr>D*y$4?vlE6O?bQ$T1}iSHeB!lk_Iv9ZRO(ntQZP^q1j3ZimuR@LZntRNF*UzJ z0YC9O6*&J`FYK6V&+aoZN_vCV`$rBuU!5E3ZXRx0itI2&`$8dM%Gy;AI!xG&p|MY~ zKSjQ@%P$B)Ty6-yRC#{6_~clK^)h)3mGlaBUyyUcleF8IUl;;8dMViYkY<<~);(n2 zN*)4XC0r<*h@Fq`kVPP>p~675bH?#M<3Tq)4`9q85Z>Us#fwG!ya?2EQ2nyTpa=xA z&YeG0AMT&9WWxJl=f3mmvC4{(wR`Vg5?LTB6dDcjBn;Q;&LJQW;raCS%y|p1u1A&G zal!guSA!@0{40Be?AbOOETi=Qw3u3e|FuJUz1AOG%l41n)e?BwztkyYp#u3BCk#4M z;Vb=`@l4NR1ChrU_#rjY0_>a{)%vdjzj)|Q=!bp{@(r5JMn0B_vVRByz&P(fwY-2m zl@EeDHFN6gVRO>}=b$>z>x;KS*Z*Gd@~`|XWFK#{(*Xj(`KR}Qqn>xtD(51`ad#p`BAmv% zFl1>XuH&w~-a#)E116N1N7ROArBX~d?|W!RhGPw=Vk7BV zsmpR-SuS&+y;tiLUJUG#WK~r`|#%Q?{o|xvlbdf{*TLr0t*cb6*Btxu1qc zZvJZ6jT?FomKNT(#DwV2%&=s6%^ z=TmbIpV%d5>^-2NSa7+JGIt>bNR2vV%V@u!!FR`}?3xTJmuOawUGFuW|8VVc=vS}# go@-auzs7_%Ez1W7V&ADcJ=vhs%-D)jOmd0%A4flrPyhe` diff --git a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-frappe.conf b/Configs/foot/.config/foot/themes/catppuccin/catppuccin-frappe.conf deleted file mode 100644 index b345283..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-frappe.conf +++ /dev/null @@ -1,19 +0,0 @@ -[colors] -foreground=c6d0f5 # Text -background=303446 # Base -regular0=51576d # Surface 1 -regular1=e78284 # red -regular2=a6d189 # green -regular3=e5c890 # yellow -regular4=8caaee # blue -regular5=f4b8e4 # pink -regular6=81c8be # teal -regular7=b5bfe2 # Subtext 1 -bright0=626880 # Surface 2 -bright1=e78284 # red -bright2=a6d189 # green -bright3=e5c890 # yellow -bright4=8caaee # blue -bright5=f4b8e4 # pink -bright6=81c8be # teal -bright7=a5adce # Subtext 0 diff --git a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-latte.conf b/Configs/foot/.config/foot/themes/catppuccin/catppuccin-latte.conf deleted file mode 100644 index 94f571b..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-latte.conf +++ /dev/null @@ -1,19 +0,0 @@ -[colors] -foreground=4c4f69 # Text -background=eff1f5 # Base -regular0=5c5f77 # Subtext 1 -regular1=d20f39 # red -regular2=40a02b # green -regular3=df8e1d # yellow -regular4=1e66f5 # blue -regular5=ea76cb # pink -regular6=179299 # teal -regular7=acb0be # Surface 2 -bright0=6c6f85 # Subtext 0 -bright1=d20f39 # red -bright2=40a02b # green -bright3=df8e1d # yellow -bright4=1e66f5 # blue -bright5=ea76cb # pink -bright6=179299 # teal -bright7=bcc0cc # Surface 1 diff --git a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-macchiato.conf b/Configs/foot/.config/foot/themes/catppuccin/catppuccin-macchiato.conf deleted file mode 100644 index 934c1cb..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-macchiato.conf +++ /dev/null @@ -1,19 +0,0 @@ -[colors] -foreground=cad3f5 # Text -background=24273a # Base -regular0=494d64 # Surface 1 -regular1=ed8796 # red -regular2=a6da95 # green -regular3=eed49f # yellow -regular4=8aadf4 # blue -regular5=f5bde6 # pink -regular6=8bd5ca # teal -regular7=b8c0e0 # Subtext 1 -bright0=5b6078 # Surface 2 -bright1=ed8796 # red -bright2=a6da95 # green -bright3=eed49f # yellow -bright4=8aadf4 # blue -bright5=f5bde6 # pink -bright6=8bd5ca # teal -bright7=a5adcb # Subtext 0 diff --git a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-mocha.conf b/Configs/foot/.config/foot/themes/catppuccin/catppuccin-mocha.conf deleted file mode 100644 index 7fa18ed..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-mocha.conf +++ /dev/null @@ -1,19 +0,0 @@ -[colors] -foreground=cdd6f4 # Text -background=1e1e2e # Base -regular0=45475a # Surface 1 -regular1=f38ba8 # red -regular2=a6e3a1 # green -regular3=f9e2af # yellow -regular4=89b4fa # blue -regular5=f5c2e7 # pink -regular6=94e2d5 # teal -regular7=bac2de # Subtext 1 -bright0=585b70 # Surface 2 -bright1=f38ba8 # red -bright2=a6e3a1 # green -bright3=f9e2af # yellow -bright4=89b4fa # blue -bright5=f5c2e7 # pink -bright6=94e2d5 # teal -bright7=a6adc8 # Subtext 0 diff --git a/Configs/foot/.config/foot/themes/catppuccin/dot_editorconfig b/Configs/foot/.config/foot/themes/catppuccin/dot_editorconfig deleted file mode 100644 index d86ac02..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/dot_editorconfig +++ /dev/null @@ -1,34 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# EditorConfig is awesome: https://EditorConfig.org - -root = true - -[*] -charset = utf-8 -indent_size = 2 -indent_style = space -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -# go -[*.go] -indent_style = tab -indent_size = 4 - -# python -[*.{ini,py,py.tpl,rst}] -indent_size = 4 - -# rust -[*.rs] -indent_size = 4 - -# documentation, utils -[*.{md,mdx,diff}] -trim_trailing_whitespace = false - -# windows shell scripts -[*.{cmd,bat,ps1}] -end_of_line = crlf diff --git a/Configs/foot/.config/foot/themes/catppuccin/dot_git b/Configs/foot/.config/foot/themes/catppuccin/dot_git deleted file mode 100644 index d893b83..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/dot_git +++ /dev/null @@ -1 +0,0 @@ -gitdir: ../../../../.git/modules/config/foot/themes/catppuccin diff --git a/Configs/helix/.config/helix/config.toml b/Configs/helix/.config/helix/config.toml deleted file mode 100644 index 2553571..0000000 --- a/Configs/helix/.config/helix/config.toml +++ /dev/null @@ -1,69 +0,0 @@ -theme = "catppuccin_macchiato" - -[keys.normal] -H = ":buffer-previous" -L = ":buffer-next" - -[keys.normal.g] -u = "switch_to_lowercase" -U = "switch_to_uppercase" - -# LSP actions -[keys.normal.space.l] -j = "goto_next_diag" -k = "goto_prev_diag" - -# Git -[keys.normal.space.g] -g = [ - ":new", - ":insert-output lazygit", - ":buffer-close!", - ":redraw", - ":reload-all" -] - -[keys.normal.space] -e = [ - ':sh rm -f /tmp/unique-file', - ':insert-output yazi %{buffer_name} --chooser-file=/tmp/unique-file', - ':insert-output echo "\x1b[?1049h\x1b[?2004h" > /dev/tty', - ':open %sh{/bin/cat /tmp/unique-file}', - ':redraw', -] - -[editor] -line-number = "relative" -cursorline = true -color-modes = true -scrolloff = 15 -default-yank-register = "*" -bufferline = "multiple" -popup-border = "all" - - -[editor.cursor-shape] -insert = "bar" -normal = "block" -select = "underline" - -[editor.indent-guides] -render = true - -[editor.statusline] -left = ["mode", "spacer", "version-control", "file-type", "file-name","file-modification-indicator", "read-only-indicator", "spinner"] -center = [] -right = ["diagnostics", "position-percentage"] -mode.normal = "" -mode.insert = "" -mode.select = "" - -[editor.file-picker] -hidden = false - -[editor.lsp] -display-inlay-hints = true - -[editor.inline-diagnostics] -cursor-line = "hint" -other-lines = "error" diff --git a/Configs/helix/.config/helix/languages.toml b/Configs/helix/.config/helix/languages.toml deleted file mode 100644 index 036911f..0000000 --- a/Configs/helix/.config/helix/languages.toml +++ /dev/null @@ -1,3 +0,0 @@ - -[[language]] -name = "rust" diff --git a/Configs/hypr/.config/hypr/hyprland.conf b/Configs/hypr/.config/hypr/hyprland.conf deleted file mode 100644 index adfbbce..0000000 --- a/Configs/hypr/.config/hypr/hyprland.conf +++ /dev/null @@ -1 +0,0 @@ -source = base.conf diff --git a/Configs/nvim_old/.config/nvim_old/after/queries/blade/highlights.scm b/Configs/nvim_old/.config/nvim_old/after/queries/blade/highlights.scm deleted file mode 100644 index 29bec30..0000000 --- a/Configs/nvim_old/.config/nvim_old/after/queries/blade/highlights.scm +++ /dev/null @@ -1,9 +0,0 @@ -(directive) @function -(directive_start) @function -(directive_end) @function -(comment) @comment -((parameter) @include (#set! "priority" 110)) -((php_only) @include (#set! "priority" 110)) -((bracket_start) @function (#set! "priority" 120)) -((bracket_end) @function (#set! "priority" 120)) -(keyword) @function diff --git a/Configs/nvim_old/.config/nvim_old/after/queries/blade/injections.scm b/Configs/nvim_old/.config/nvim_old/after/queries/blade/injections.scm deleted file mode 100644 index 0fde1fd..0000000 --- a/Configs/nvim_old/.config/nvim_old/after/queries/blade/injections.scm +++ /dev/null @@ -1,3 +0,0 @@ -((php) @injection.content - (#set! injection.combined) - (#set! injection.language php)) diff --git a/Configs/nvim_old/.config/nvim_old/init.lua b/Configs/nvim_old/.config/nvim_old/init.lua deleted file mode 100644 index 2925f22..0000000 --- a/Configs/nvim_old/.config/nvim_old/init.lua +++ /dev/null @@ -1,7 +0,0 @@ --- Loadnoptions before anything -require("aleidk.options") - -require("aleidk.lazy") - -require("aleidk.keymaps") -require("aleidk.autocmds") diff --git a/Configs/nvim_old/.config/nvim_old/lazy-lock.json b/Configs/nvim_old/.config/nvim_old/lazy-lock.json deleted file mode 100644 index 507d965..0000000 --- a/Configs/nvim_old/.config/nvim_old/lazy-lock.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "LuaSnip": { "branch": "master", "commit": "0f7bbce41ea152a94d12aea286f2ce98e63c0f58" }, - "blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" }, - "blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" }, - "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, - "ccc.nvim": { "branch": "main", "commit": "7c639042583c7bdc7ce2e37e5a0e0aa6d0659c6a" }, - "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "a203480a350b03092e473bf3001733d547160a73" }, - "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, - "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, - "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, - "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, - "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, - "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, - "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, - "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, - "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, - "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "43894adcf10bb1190c2184bd7c1750e8ea2b3dce" }, - "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, - "mini.clue": { "branch": "main", "commit": "8e329f586a7cfd06085859066a4b60965fc4ecce" }, - "mini.comment": { "branch": "main", "commit": "03c13e37318bdb18481311c0ac1adc9ed731caf1" }, - "mini.surround": { "branch": "main", "commit": "0e67c4bc147f2a15cee94e7c94dcc0e115b9f55e" }, - "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" }, - "noice.nvim": { "branch": "main", "commit": "c6f6fb178ebe9b4fd90383de743c3399f8c3a37c" }, - "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, - "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, - "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, - "nvim-lspconfig": { "branch": "master", "commit": "4ae9796c4e95ca84ec77946a9f9089b8f1a3eec9" }, - "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, - "nvim-treesitter": { "branch": "master", "commit": "8d4fdc5e47e2a4e00179e43f56221250ce365973" }, - "nvim-treesitter-context": { "branch": "master", "commit": "6b081ea63a3711243d11540ce28ccdb6f35ecd33" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, - "nvim-ts-autotag": { "branch": "main", "commit": "e239a560f338be31337e7abc3ee42515daf23f5e" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, - "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, - "overseer.nvim": { "branch": "master", "commit": "10ee48ff96c8d1049efb278ea4c8cf9f3b0e4326" }, - "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" }, - "remote-sshfs.nvim": { "branch": "main", "commit": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d" }, - "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, - "smart-splits.nvim": { "branch": "master", "commit": "fc7bb00fe67ab504356bed4310d23c2e4cb4b06b" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, - "treesj": { "branch": "main", "commit": "03415ac60791d48e120a80d37e080744faf3ac15" }, - "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, - "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, - "typescript-tools.nvim": { "branch": "master", "commit": "346062e8cd06e82776b60785a040dfbbdcb6de77" }, - "undotree": { "branch": "master", "commit": "78b5241191852ffa9bb5da5ff2ee033160798c3b" }, - "vim-dadbod": { "branch": "master", "commit": "fe5a55e92b2dded7c404006147ef97fb073d8b1b" }, - "vim-dadbod-completion": { "branch": "master", "commit": "da0e75c09c27a82aad078d993bb1b2f4afd43427" }, - "vim-dadbod-ui": { "branch": "master", "commit": "28a16902cb2134c934b85da5250033ee43b0dee5" }, - "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, - "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "yazi.nvim": { "branch": "main", "commit": "053867916a9be3cb46f84b6f095ee731bbddd213" } -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/autocmds.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/autocmds.lua deleted file mode 100644 index 22c9fbd..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/autocmds.lua +++ /dev/null @@ -1,10 +0,0 @@ --- Highlight on yank --- See `:help vim.highlight.on_yank()` -local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true }) -vim.api.nvim_create_autocmd("TextYankPost", { - callback = function() - vim.highlight.on_yank() - end, - group = highlight_group, - pattern = "*", -}) diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/constants.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/constants.lua deleted file mode 100644 index 52cdd9f..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/constants.lua +++ /dev/null @@ -1,63 +0,0 @@ -return { - icons = { - misc = { - pint = " ", - }, - dap = { - Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" }, - Breakpoint = " ", - BreakpointCondition = " ", - BreakpointRejected = { " ", "DiagnosticError" }, - LogPoint = ".>", - }, - diagnostics = { - Error = " ", - Warn = " ", - Hint = " ", - Info = " ", - }, - git = { - added = " ", - modified = " ", - removed = " ", - branch = "", - }, - kinds = { - Array = " ", - Boolean = " ", - Class = " ", - Color = " ", - Constant = " ", - Constructor = " ", - Copilot = " ", - Enum = " ", - EnumMember = " ", - Event = " ", - Field = " ", - File = " ", - Folder = " ", - Function = " ", - Interface = " ", - Key = " ", - Keyword = " ", - Method = " ", - Module = " ", - Namespace = " ", - Null = " ", - Number = " ", - Object = " ", - Operator = " ", - Package = " ", - Property = " ", - Reference = " ", - Snippet = " ", - String = " ", - Struct = " ", - Text = " ", - TypeParameter = " ", - Unit = " ", - Value = " ", - Variable = " ", - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/keymaps.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/keymaps.lua deleted file mode 100644 index fde7c73..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/keymaps.lua +++ /dev/null @@ -1,77 +0,0 @@ --- [[ Basic Keymaps ]] - -function MAP(mode, l, r, desc) - vim.keymap.set(mode, l, r, { desc = desc, silent = true }) -end - -function ReloadModule(module) - package.loaded[module] = nil - require(module) -end - -local function default(desc) - return { - silent = true, - desc = desc, - } -end - -local function fixIndentation() - local indent = 2 - vim.opt.tabstop = indent - vim.opt.shiftwidth = indent - vim.opt.softtabstop = indent - - vim.cmd("retab") -end - --- Keymaps for better default experience --- See `:help vim.keymap.set()` -vim.keymap.set({ "n", "v" }, "", "", { silent = true }) - --- vim.keymap.set("n", "", "w", default("Keep cursor centered while junping")) - --- Remap for dealing with word wrap -vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) -vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) - -vim.keymap.set("n", "J", "mzJ`z", default("Keep cursor in column while joining lines")) - -vim.keymap.set("n", "|", ":vs", default("Open vsplit")) -vim.keymap.set("n", "°", ":sp", default("Open split")) - -vim.keymap.set("n", "", "zz", default("Keep cursor centered while junping")) -vim.keymap.set("n", "", "zz", default("Keep cursor centered while junping")) - -vim.keymap.set("n", "n", "nzzzv", default("Keep cursor centered while searching")) -vim.keymap.set("n", "N", "Nzzzv", default("Keep cursor centered while searching")) - -vim.keymap.set("n", "Q", "", {}) - -vim.keymap.set( - "n", - "rw", - [[:%s/\<\>//gI]], - default("Search and replace current word") -) - --- vim.keymap.set("n", "rR", ":s/", default("Search and replace inline")) --- vim.keymap.set("n", "rr", ":%s/", default("Search and replace globally")) --- vim.keymap.set("v", "r", ":s/", default("Search and replace in selection")) - -vim.keymap.set("v", "p", [["_dP]], default("Paste without lossing yanked text")) - -vim.keymap.set("v", "J", ":m '>+1gv=gv", default("Move selection down")) -vim.keymap.set("v", "K", ":m '<-2gv=gv", default("Move selection up")) -vim.keymap.set("n", "uI", fixIndentation, default("Fix indentation")) -vim.keymap.set("n", "uO", function() ReloadModule('aleidk.options') end, - default("Reload the options configuration")) - -vim.keymap.set("n", "uh", ":nohl", default("Remove search highlight")) - -vim.keymap.set("t", "", "", default("Exit insert mode on terminal")) - -vim.keymap.set("n", "bc", "bd", default("Close buffer")) -vim.keymap.set("n", "bh", "bp", default("Prev buffer")) -vim.keymap.set("n", "bl", "bn", default("Next buffer")) -vim.keymap.set("n", "bA", "bufdo bd", default("Close all buffers")) diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/lazy.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/lazy.lua deleted file mode 100644 index 5557918..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/lazy.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Bootstrap lazy.nvim --- Load this file after options has been set - -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) - --- enabled_plugins is injected as a local variable in the top of the file by the dotfile manager --- See: .dotter/global.toml inside [nvim.files] & [nvim.variables] table -require("lazy").setup({ - spec = { - { import = "aleidk.plugins-core" }, - { import = "aleidk.plugins-base" }, - { import = "aleidk.plugins-ide" }, - }, - - install = { colorscheme = { "catppuccin" } }, - -- checker = { enabled = true }, -}) - -return { - enabled_plugins -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/options.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/options.lua deleted file mode 100644 index 6378dc5..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/options.lua +++ /dev/null @@ -1,144 +0,0 @@ --- [[ Setting options ]] --- See `:help vim.o` - --- Set as the leader key -vim.g.mapleader = " " -vim.g.maplocalleader = " " - -vim.o.diffopt = "vertical,closeoff,filler" - -local opt = vim.opt - --- stylua: ignore -opt.autowrite = true -- Enable auto write -opt.clipboard = "unnamedplus" -- Sync with system clipboard -opt.completeopt = "menu,menuone,noselect" -opt.conceallevel = 2 -- Hide * markup for bold and italic -opt.confirm = true -- Confirm to save changes before exiting modified buffer -opt.cursorline = true -- Enable highlighting of the current line -opt.expandtab = true -- Use spaces instead of tabs -opt.formatoptions = "jcroqlnt" -- tcqj -opt.grepformat = "%f:%l:%c:%m" -opt.grepprg = "rg --vimgrep" -opt.ignorecase = true -- Ignore case -opt.inccommand = "nosplit" -- preview incremental substitute -opt.laststatus = 0 -opt.list = true -- Show some invisible characters (tabs... -opt.mouse = "a" -- Enable mouse mode -opt.number = true -- Print line number -opt.pumblend = 10 -- Popup blend -opt.pumheight = 10 -- Maximum number of entries in a popup -opt.relativenumber = true -- Relative line numbers -opt.scrolloff = 15 -- Lines of context -opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } -opt.shiftround = true -- Round indent -opt.shiftwidth = 2 -- Size of an indent --- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages -opt.showmode = false -- Dont show mode since we have a statusline -opt.sidescrolloff = 8 -- Columns of context -opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time -opt.smartcase = true -- Don't ignore case with capitals -opt.smartindent = true -- Insert indents automatically -opt.spelllang = { "en" } -opt.splitbelow = true -- Put new windows below current -opt.splitright = true -- Put new windows right of current -opt.tabstop = 2 -- Number of spaces tabs count for -opt.termguicolors = true -- True color support -opt.timeoutlen = 300 -opt.undofile = true -opt.undolevels = 10000 -opt.updatetime = 200 -- Save swap file and trigger CursorHold -opt.wildmode = "longest,list:full" -- Command-line completion mode -opt.winminwidth = 5 -- Minimum window width -opt.wrap = false -- Disable line wrap - -vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" - -local fn = vim.fn - --- Quickfix customization -function _G.qftf(info) - local items - local ret = {} - -- The name of item in list is based on the directory of quickfix window. - -- Change the directory for quickfix window make the name of item shorter. - -- It's a good opportunity to change current directory in quickfixtextfunc :) - -- - -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window - -- local root = getRootByAlterBufnr(alterBufnr) - -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) - -- - if info.quickfix == 1 then - items = fn.getqflist({ id = info.id, items = 0 }).items - else - items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items - end - local limit = 31 - local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" - local validFmt = "%s │%5d:%-3d│%s %s" - for i = info.start_idx, info.end_idx do - local e = items[i] - local fname = "" - local str - if e.valid == 1 then - if e.bufnr > 0 then - fname = fn.bufname(e.bufnr) - if fname == "" then - fname = "[No Name]" - else - fname = fname:gsub("^" .. vim.env.HOME, "~") - end - -- char in fname may occur more than 1 width, ignore this issue in order to keep performance - if #fname <= limit then - fname = fnameFmt1:format(fname) - else - fname = fnameFmt2:format(fname:sub(1 - limit)) - end - end - local lnum = e.lnum > 99999 and -1 or e.lnum - local col = e.col > 999 and -1 or e.col - local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() - str = validFmt:format(fname, lnum, col, qtype, e.text) - else - str = e.text - end - table.insert(ret, str) - end - return ret -end - --- TODO: how to customize? -vim.o.qftf = "{info -> v:lua._G.qftf(info)}" - -vim.filetype.add({ - -- Detect and assign filetype based on the extension of the filename - extension = { - mdx = "mdx", - log = "log", - conf = "conf", - env = "dotenv" - }, - -- Detect and apply filetypes based on the entire filename - filename = { - [".env"] = "dotenv", - ["env"] = "dotenv", - ["tsconfig.json"] = "jsonc", - }, - -- Detect and apply filetypes based on certain patterns of the filenames - pattern = { - -- INFO: Match filenames like - ".env.example", ".env.local" and so on - ["%.env%.[%w_.-]+"] = "dotenv", - [".*%.blade%.php"] = "blade", - [".*%.hurl.*"] = "hurl", - [".*/hypr/.*%.conf"] = "hyprlang", - ['.*/systemd/.*%.(%a+)'] = function(path, bufnr, ext) - vim.print(ext) - local allowed = { "container", "volume", "network", "build", "pod", "kube" } - for _, v in ipairs(allowed) do - if v == ext then - return "ini" - end - end - end, - }, -}) diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/auto-pairs.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/auto-pairs.lua deleted file mode 100644 index 883891d..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/auto-pairs.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "windwp/nvim-autopairs", - event = "InsertEnter", - config = true, - opts = {}, -- this is equalent to setup({}) function -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/bookmarks.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/bookmarks.lua deleted file mode 100644 index a68f973..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/bookmarks.lua +++ /dev/null @@ -1,38 +0,0 @@ -local function select_or_create(search) - local grapple = require("grapple") - - if grapple.exists(search) then - grapple.select(search) - else - grapple.tag() - end -end - -return { - "cbochs/grapple.nvim", - dependencies = { - { "nvim-tree/nvim-web-devicons", lazy = true }, - }, - lazy = false, - cmd = "Grapple", - config = function() - local telescope = require("telescope") - telescope.load_extension("grapple") - end, - keys = { - { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, - { "D", "Grapple reset", desc = "Delete all bookmarks" }, - { "t", "Grapple toggle_tags", desc = "Toggle bookmarks window" }, - { "T", "Grapple toggle_scopes", desc = "Toggle scopes window" }, - { "n", "Grapple cycle forward", desc = "Next bookmark" }, - { "N", "Grapple cycle backward", desc = "Prev bookmark" }, - { "j", function() select_or_create({ index = 1 }) end, desc = "Go or create bookmark 1" }, - { "k", function() select_or_create({ index = 2 }) end, desc = "Go or create bookmark 2" }, - { "l", function() select_or_create({ index = 3 }) end, desc = "Go or create bookmark 3" }, - { "ñ", function() select_or_create({ index = 4 }) end, desc = "Go or create bookmark 4" }, - { "J", "Grapple tag index=1", desc = "Override bookmark 1" }, - { "K", "Grapple tag index=2", desc = "Override bookmark 2" }, - { "L", "Grapple tag index=3", desc = "Override bookmark 3" }, - { "Ñ", "Grapple tag index=4", desc = "Override bookmark 4" }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/comments.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/comments.lua deleted file mode 100644 index edd3413..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/comments.lua +++ /dev/null @@ -1,28 +0,0 @@ -return { - { - "echasnovski/mini.comment", - version = "*", - event = "VeryLazy", - dependencies = { - { "nvim-treesitter/nvim-treesitter-context" }, - }, - opts = { - options = { - custom_commentstring = function() - return require("ts_context_commentstring.internal").calculate_commentstring() - or vim.bo.commentstring - end, - }, - }, - }, - { - "LudoPinelli/comment-box.nvim", - opts = { - outer_blank_lines = true, - }, - keys = { - { "gcb", function() require("comment-box").lcbox() end, { desc = "Create a comment box", mode = { "n", "v" }, } }, - { "gcl", function() require("comment-box").llline() end, { desc = "Create a comment line", mode = { "n", "v" }, } }, - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/file-explorer.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/file-explorer.lua deleted file mode 100644 index 2f76b72..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/file-explorer.lua +++ /dev/null @@ -1,33 +0,0 @@ -return { - "mikavilpas/yazi.nvim", - keys = { - { - "e", - "Yazi", - desc = "Open yazi at the current file", - }, - { - -- Open in the current working directory - "E", - "Yazi cwd", - desc = "Open the file manager in nvim's working directory", - }, - }, - opts = { - -- if you want to open yazi instead of netrw, see below for more info - open_for_directories = true, - open_multiple_tabs = true, - floating_window_scaling_factor = 1, - keymaps = { - show_help = '', - open_file_in_vertical_split = '', - open_file_in_horizontal_split = '', - open_file_in_tab = '', - grep_in_directory = '', - cycle_open_buffers = '', - copy_relative_path_to_selected_files = '', - send_to_quickfix_list = '', - change_working_directory = "", - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/indent-blankline.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/indent-blankline.lua deleted file mode 100644 index f529305..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/indent-blankline.lua +++ /dev/null @@ -1,30 +0,0 @@ -return { - -- Add indentation guides even on blank lines - "lukas-reineke/indent-blankline.nvim", - dependencies = { "nvim-treesitter/nvim-treesitter" }, - main = "ibl", - opts = { - -- char = "▏", - indent = { - char = "│", - tab_char = "│", - }, - scope = { - enabled = true, - }, - exclude = { - filetypes = { - "help", - "alpha", - "dashboard", - "neo-tree", - "Trouble", - "lazy", - "mason", - "notify", - "toggleterm", - "lazyterm", - }, - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/treesitter.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/treesitter.lua deleted file mode 100644 index c0077f4..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/treesitter.lua +++ /dev/null @@ -1,90 +0,0 @@ -return { - -- Highlight, edit, and navigate code - "nvim-treesitter/nvim-treesitter", - event = { "BufReadPost", "BufNewFile", "BufWritePre", "VeryLazy" }, - dependencies = { - "nvim-treesitter/nvim-treesitter-textobjects", - "JoosepAlviste/nvim-ts-context-commentstring", - "nvim-treesitter/nvim-treesitter-context", - { "windwp/nvim-ts-autotag", opts = {} }, - }, - build = ":TSUpdate", - config = function() - ---@diagnostic disable-next-line: missing-fields - require("nvim-treesitter.configs").setup({ - -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) - auto_install = true, - highlight = { enable = true }, - indent = { enable = true }, - incremental_selection = { - enable = true, - }, - textobjects = { - select = { - enable = true, - lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ["aa"] = "@parameter.outer", - ["ia"] = "@parameter.inner", - ["af"] = "@function.outer", - ["if"] = "@function.inner", - ["ac"] = "@class.outer", - ["ic"] = "@class.inner", - }, - }, - move = { - enable = true, - set_jumps = true, -- whether to set jumps in the jumplist - goto_previous = { -- current or last start of object - ["[["] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, - ["[f"] = "@function.outer", - ["[c"] = "@class.outer", - }, - goto_next = { -- next object end - ["]]"] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, - ["]f"] = "@function.outer", -- current function end - ["]c"] = "@class.outer", - }, - }, - swap = { - enable = true, - swap_next = { - ["ln"] = "@parameter.inner", - }, - swap_previous = { - ["lN"] = "@parameter.inner", - }, - }, - }, - -- autotag = { enable = true }, - }) - - require('ts_context_commentstring').setup { - enable_autocmd = false, - } - - local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move" - - -- Repeat movement with ; and , - -- ensure , goes forward and ; goes backward regardless of the last direction - vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_next) - vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_previous) - - -- Optionally, make builtin f, F, t, T also repeatable with ; and , - vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T_expr, { expr = true }) - - vim.keymap.set("n", "[u", function() - require("treesitter-context").go_to_context() - end, { silent = true, noremap = true, desc = "Go up when context is out of view" }) - - vim.opt.foldmethod = "expr" - vim.opt.foldexpr = "nvim_treesitter#foldexpr()" - - -- Uncoment this line to disable auto folding on file open - vim.cmd("set nofoldenable") - end, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/ui.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/ui.lua deleted file mode 100644 index b587ebb..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/ui.lua +++ /dev/null @@ -1,217 +0,0 @@ -local icons = require("aleidk.constants").icons - -return { - { - "rcarriga/nvim-notify", - opts = { - render = "compact", - fps = "60", - timeout = 2000, - stages = "slide", - icons = { - DEBUG = "", - TRACE = "✎", - ERROR = icons.diagnostics.Error, - INFO = icons.diagnostics.Info, - WARN = icons.diagnostics.Warn, - } - } - }, - { - -- better imputs - "stevearc/dressing.nvim", - opts = { - input = { - -- handle by noice - enabled = false, - }, - }, - }, - { - "folke/noice.nvim", - event = "VeryLazy", - dependencies = { - "MunifTanjim/nui.nvim", - "rcarriga/nvim-notify", - }, - ---@type NoiceConfig - opts = { - presets = { - bottom_search = true, - long_message_to_split = true, - inc_rename = true, - lsp_doc_border = true, - }, - lsp = { - override = { - -- override the default lsp markdown formatter with Noice - ["vim.lsp.util.convert_input_to_markdown_lines"] = true, - -- override the lsp markdown formatter with Noice - ["vim.lsp.util.stylize_markdown"] = true, - -- override cmp documentation with Noice (needs the other options to work) - ["cmp.entry.get_documentation"] = true, - }, - message = { - view = "mini", - view_search = false, - }, - progress = { - view = "mini_left" - } - }, - ---@type NoiceRouteConfig[] - routes = { - { - -- Don't show these messages - opts = { skip = true }, - filter = { - any = { - { - event = "msg_show", - kind = "search_count", - }, - { - event = "msg_show", - kind = "", - find = "written", -- file saved msg - }, - { - event = "msg_show", - kind = "", - find = "yazi.nvim", - }, - { - event = "msg_show", - kind = "", - find = "%d+ (more|fewer) lines", -- undo/redo msg - }, - } - }, - }, - { - filter = { - event = "notify", - min_height = 15 - }, - view = 'popup', - }, - { - filter = { - event = "notify", - kind = "info" - }, - view = 'mini' - }, - }, - ---@type NoiceConfigViews - views = { - notify = { - merge = true - }, - cmdline_popup = { - position = { - row = 5, - col = "50%", - }, - size = { - width = 60, - height = "auto", - }, - }, - popupmenu = { - relative = "editor", - position = { - row = 8, - col = "50%", - }, - size = { - width = 60, - height = 10, - }, - border = { - style = "rounded", - padding = { 0, 1 }, - }, - win_options = { - winhighlight = { Normal = "Normal", FloatBorder = "DiagnosticInfo" }, - }, - }, - mini_left = { - backend = "mini", - relative = "editor", - align = "left", - timeout = 2000, - reverse = true, - focusable = false, - position = { - row = -1, - col = 0, - }, - size = { - width = "auto", - height = "auto", - max_height = 10, - }, - border = { - style = "none", - }, - zindex = 60, - win_options = { - winbar = "", - foldenable = false, - winblend = 30, - winhighlight = { - Normal = "NoiceMini", - IncSearch = "", - CurSearch = "", - Search = "", - }, - }, - }, - }, - }, - -- stylua: ignore - keys = { - { - "", - function() require("noice").redirect(vim.fn.getcmdline()) end, - mode = "c", - desc = - "Redirect Cmdline" - }, - { - "um", - function() require("noice").cmd("last") end, - desc = - "Messages last" - }, - { - "uM", - function() require("noice").cmd("history") end, - desc = - "Messages all" - }, - { "uX", function() require("noice").cmd("dismiss") end, desc = "Message dismiss all" }, - { - "", - function() if not require("noice.lsp").scroll(4) then return "" end end, - silent = true, - expr = true, - desc = - "Scroll forward", - mode = { - "i", "n", "s" } - }, - { - "", - function() if not require("noice.lsp").scroll(-4) then return "" end end, - silent = true, - expr = true, - desc = - "Scroll backward", - mode = { - "i", "n", "s" } - }, - }, - } -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/undo-tree.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/undo-tree.lua deleted file mode 100644 index ba5adb4..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-base/undo-tree.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - { - "mbbill/undotree", - config = function() - vim.g.undotree_WindowLayout = 2 - vim.g.undotree_ShortIndicators = 1 - vim.g.undotree_SetFocusWhenToggle = 1 - end, - keys = { - { "fu", vim.cmd.UndotreeToggle, desc = "Undo tree" }, - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/colorscheme.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/colorscheme.lua deleted file mode 100644 index af5c7fc..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/colorscheme.lua +++ /dev/null @@ -1,57 +0,0 @@ -return { -- Change colors.none if not using a transparent background - "catppuccin/nvim", - name = "catppuccin", - priority = 1000, - config = function() - local utils = require("catppuccin.utils.colors") - - local opts = { - flavour = "macchiato", - transparent_background = true, - integrations = { - aerial = true, - blink_cmp = true, - cmp = true, - gitsigns = true, - indent_blankline = { enabled = true, scope_color = "text", }, - lsp_trouble = true, - mason = true, - noice = true, - notify = true, - }, - custom_highlights = function(colors) - return { - -- Fix colors for cmp - Pmenu = { bg = colors.none, blend = 0 }, - FloatBorder = { bg = colors.none }, - CmpItemMenu = { fg = colors.text, bg = colors.none }, - -- dadbod-ui - NotificationInfo = { bg = colors.none, fg = colors.text }, - NotificationWarning = { bg = colors.none, fg = colors.yellow }, - NotificationError = { bg = colors.none, fg = colors.red }, - - -- for word diff in previews - GitSignsAddInline = { - fg = colors.teal, - bg = utils.darken(colors.teal, 0.4), - style = { "bold" }, - }, - GitSignsDeleteInline = { - fg = colors.red, - bg = utils.darken(colors.red, 0.4), - style = { "bold" }, - }, - GitSignsChangeInline = { - fg = colors.mauve, - bg = utils.darken(colors.mauve, 0.4), - style = { "bold" }, - }, - GitSignsDeleteVirtLn = { bg = colors.none, fg = colors.red }, - } - end, - } - - require("catppuccin").setup(opts) - vim.cmd.colorscheme("catppuccin-macchiato") - end, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/init.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/init.lua deleted file mode 100644 index 3501757..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/init.lua +++ /dev/null @@ -1,22 +0,0 @@ -return { - -- Detect tabstop and shiftwidth automatically - "tpope/vim-sleuth", - { "nvim-tree/nvim-web-devicons", lazy = true }, - { - -- Highlight word under cursor - "RRethy/vim-illuminate", - event = { "BufReadPost", "BufNewFile" }, - opts = { - delay = 200, - filetypes_denylist = { - 'dirbuf', - 'dirvish', - 'fugitive', - 'aerial', - }, - }, - config = function(_, opts) - require("illuminate").configure(opts) - end, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/key-help.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/key-help.lua deleted file mode 100644 index b9c705f..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/key-help.lua +++ /dev/null @@ -1,85 +0,0 @@ -return { - "echasnovski/mini.clue", - version = "*", - event = "VeryLazy", - config = function() - local miniclue = require("mini.clue") - miniclue.setup({ - triggers = { - -- Leader triggers - { mode = "n", keys = "" }, - { mode = "v", keys = "" }, - { mode = "x", keys = "" }, - - -- Built-in completion - { mode = "i", keys = "" }, - - -- `g` key - { mode = "n", keys = "g" }, - { mode = "x", keys = "g" }, - - -- Marks - { mode = "n", keys = "'" }, - { mode = "n", keys = "`" }, - { mode = "x", keys = "'" }, - { mode = "x", keys = "`" }, - - -- Registers - { mode = "n", keys = '"' }, - { mode = "x", keys = '"' }, - { mode = "i", keys = "" }, - { mode = "c", keys = "" }, - - -- Window commands - { mode = "n", keys = "" }, - - -- `z` key - { mode = "n", keys = "z" }, - { mode = "x", keys = "z" }, - }, - - -- Add a "postkeys" value to activate those keys after others - clues = { - miniclue.gen_clues.builtin_completion(), - miniclue.gen_clues.g(), - miniclue.gen_clues.marks(), - miniclue.gen_clues.registers(), - miniclue.gen_clues.windows(), - miniclue.gen_clues.z(), - - { mode = "n", keys = "", desc = "+Bookmarks" }, - { mode = "n", keys = "n", postkeys = "" }, - { mode = "n", keys = "N", postkeys = "" }, - { mode = "n", keys = "b", desc = "+Buffers" }, - { mode = "n", keys = "bh", postkeys = "b" }, - { mode = "n", keys = "bl", postkeys = "b" }, - { mode = "n", keys = "f", desc = "+Find" }, - { mode = "n", keys = "g", desc = "+Git" }, - { mode = "n", keys = "l", desc = "+LSP" }, - { mode = "n", keys = "r", desc = "+Replace" }, - { mode = "n", keys = "u", desc = "+UI & Config" }, - { mode = "n", keys = "un", desc = "+Noice" }, - { mode = "n", keys = "w", desc = "+Workspace" }, - { mode = "n", keys = "p", desc = "+Run stuff" }, - { mode = "n", keys = "z", desc = "+ZK" }, - { mode = "v", keys = "z", desc = "+ZK" }, - { mode = "v", keys = "a", desc = "+AI" }, - { mode = "n", keys = "a", desc = "+AI" }, - { mode = "n", keys = "g?", desc = "+Print Debug" }, - }, - - -- Clue window settings - window = { - -- Floating window config - config = { - width = "auto", - }, - -- Delay before showing clue window - delay = 200, - -- Keys to scroll inside the clue window - scroll_down = "", - scroll_up = "", - }, - }) - end, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/lualine.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/lualine.lua deleted file mode 100644 index 34e872e..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/lualine.lua +++ /dev/null @@ -1,189 +0,0 @@ -return { - "nvim-lualine/lualine.nvim", - lazy = false, - dependencies = { - "nvim-tree/nvim-web-devicons", - "cbochs/grapple.nvim", - { 'AndreM222/copilot-lualine' } - }, - opts = function() - local icons = require("aleidk.constants").icons - local palete = require("catppuccin.palettes").get_palette "macchiato" - - local function diff_source() - local gitsigns = vim.b.gitsigns_status_dict - if gitsigns then - return { - added = gitsigns.added, - modified = gitsigns.changed, - removed = gitsigns.removed, - } - end - end - - local function position_scrollbar(str) - local sbar = { "▁▁", "▂▂", "▃▃", "▄▄", "▅▅", "▆▆", "▇▇", "██" } - - local curr_line = vim.api.nvim_win_get_cursor(0)[1] - local lines = vim.api.nvim_buf_line_count(0) - local i = math.floor((curr_line - 1) / lines * #sbar) + 1 - return str .. " " .. sbar[i] - end - - local codecompanion_status = require("lualine.component"):extend() - - codecompanion_status.processing = false - codecompanion_status.spinner_index = 1 - - local spinner_symbols = require("copilot-lualine.spinners").bouncing_bar - - -- Initializer - function codecompanion_status:init(options) - codecompanion_status.super.init(self, options) - - local group = vim.api.nvim_create_augroup("CodeCompanionHooks", {}) - - vim.api.nvim_create_autocmd({ "User" }, { - pattern = "CodeCompanionRequest*", - group = group, - callback = function(request) - if request.match == "CodeCompanionRequestStarted" then - self.processing = true - elseif request.match == "CodeCompanionRequestFinished" then - self.processing = false - end - end, - }) - end - - -- Function that runs every time statusline is updated - function codecompanion_status:update_status() - if self.processing then - self.spinner_index = (self.spinner_index % #spinner_symbols) + 1 - return spinner_symbols[self.spinner_index] - else - return nil - end - end - - return { - options = { - theme = "catppuccin", - globalstatus = true, - disabled_filetypes = { statusline = { "dashboard", "alpha" } }, - component_separators = "", - section_separators = "", - }, - sections = { - lualine_a = { - { - "mode", - padding = 0, - fmt = function() - return " " - end, - }, - }, - lualine_b = {}, - lualine_c = { - { "branch", icon = icons.git.branch }, - { - "diff", - symbols = { - added = icons.git.added, - modified = icons.git.modified, - removed = icons.git.removed, - }, - source = diff_source, - }, - { codecompanion_status }, - { - "diagnostics", - symbols = { - error = icons.diagnostics.Error, - warn = icons.diagnostics.Warn, - info = icons.diagnostics.Info, - hint = icons.diagnostics.Hint, - }, - }, - "filetype", - { - "filename", - path = 1, - symbols = { - modified = "●", -- Text to show when the buffer is modified - alternate_file = "#", -- Text to show to identify the alternate file - directory = "", -- Text to show when the buffer is a directory - }, - }, - }, - lualine_x = { - { - "overseer", - }, - { - function() - return require("grapple").statusline() - end, - }, - { - "copilot", - cond = function() - return vim.bo.filetype ~= "codecompanion" - end, - show_colors = true, - symbols = { - status = { - icons = { - enabled = " ", - sleep = " ", -- auto-trigger disabled - disabled = " ", - warning = " ", - unknown = " " - }, - hl = { - enabled = palete.teal, - sleep = palete.lavender, - disabled = palete.subtext0, - warning = palete.peach, - unknown = palete.red - } - }, - spinners = spinner_symbols, - spinner_color = palete.mauve - }, - }, - }, - lualine_y = { - { - -- Macro recording status - function() - return require("noice").api.status.mode.get() - end, - cond = function() - return package.loaded["noice"] and require("noice").api.status.mode.has() - end, - }, - { "searchcount" }, - { "location" }, - { - "progress", - fmt = position_scrollbar, - separator = " ", - padding = 0, - }, - }, - lualine_z = {}, - }, - extensions = { - "lazy", - "fzf", - "man", - "mason", - "quickfix", - "trouble", - "toggleterm", - }, - } - end, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/markdown.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/markdown.lua deleted file mode 100644 index 19e36a2..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/markdown.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - { - "MeanderingProgrammer/markdown.nvim", - name = "render-markdown", -- Only needed if you have another plugin named markdown.nvim - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins - dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" }, -- if you prefer nvim-web-devicons - opts = { - file_types = { 'markdown', 'copilot-chat' }, - sign = { - enabled = false, - }, - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/smart-splits.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/smart-splits.lua deleted file mode 100644 index a11d29e..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/smart-splits.lua +++ /dev/null @@ -1,67 +0,0 @@ --- Move to windows with Ctrl and hjkl --- Resize to windows with Alt and hjkl --- Tmux aware -return { - "mrjones2014/smart-splits.nvim", - lazy = false, - build = './kitty/install-kittens.bash', - opts = { ignored_filetypes = { "nofile", "quickfix", "qf", "prompt" }, ignored_buftypes = { "nofile" } }, - keys = { - { - "", - function() - require("smart-splits").move_cursor_left() - end, - desc = "Move to left window", - }, - { - "", - function() - require("smart-splits").move_cursor_down() - end, - desc = "Move to bottom window", - }, - { - "", - function() - require("smart-splits").move_cursor_up() - end, - desc = "Move to upper window", - }, - { - "", - function() - require("smart-splits").move_cursor_right() - end, - desc = "Move to right window", - }, - { - "", - function() - require("smart-splits").resize_left() - end, - desc = "Move to left window", - }, - { - "", - function() - require("smart-splits").resize_down() - end, - desc = "Move to bottom window", - }, - { - "", - function() - require("smart-splits").resize_up() - end, - desc = "Move to upper window", - }, - { - "", - function() - require("smart-splits").resize_right() - end, - desc = "Move to right window", - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/surround.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/surround.lua deleted file mode 100644 index 2cbb1d3..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/surround.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "echasnovski/mini.surround", - disabled = true, - version = "*", - opts = {}, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/telescope.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/telescope.lua deleted file mode 100644 index 5b2a218..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/telescope.lua +++ /dev/null @@ -1,83 +0,0 @@ --- Fuzzy Finder (files, lsp, etc) -return { - "nvim-telescope/telescope.nvim", - branch = "0.1.x", - dependencies = { - { "nvim-lua/plenary.nvim" }, - { - -- Blazingly Fast Fuzzy Finder Algorithm for Telescope - "nvim-telescope/telescope-fzf-native.nvim", - build = "make", - cond = function() - return vim.fn.executable("make") == 1 - end, - }, - }, - config = function() - local actions = require("telescope.actions") - local telescope = require("telescope") - local builtin = require("telescope.builtin") - - local opts = { - defaults = { - prompt_prefix = " ", - selection_caret = " ", - layout_strategy = "flex", - mappings = { - i = { - [""] = actions.preview_scrolling_up, - [""] = actions.preview_scrolling_down, - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - [""] = actions.file_vsplit, - [""] = actions.file_split, - [""] = actions.close, - [""] = actions.send_to_qflist + actions.open_qflist, - [""] = actions.send_selected_to_qflist + actions.open_qflist, - [""] = require("trouble.sources.telescope").open, - [""] = require("trouble.sources.telescope").open, - [""] = actions.which_key, - }, - }, - }, - pickers = { - find_files = { - hidden = true, - }, - }, - } - telescope.setup(opts) - - -- Enable telescope fzf native, if installed - pcall(telescope.load_extension, "fzf") - - vim.keymap.set("n", "fb", builtin.buffers, { desc = "Find buffers" }) - vim.keymap.set("n", "ff", builtin.find_files, { desc = "Find files" }) - vim.keymap.set("n", "fF", function() - builtin.find_files({ hidden = true, no_ignore = true }) - end, { desc = "Find all files" }) - - -- Search inside files - vim.keymap.set("n", "fw", builtin.grep_string, { desc = "Find word under cursor" }) - vim.keymap.set("n", "fW", builtin.live_grep, { desc = "Find word (live grep)" }) - - -- Help - vim.keymap.set("n", "fc", builtin.command_history, { desc = "Find in commands history" }) - vim.keymap.set("n", "fC", builtin.commands, { desc = "Find a command" }) - vim.keymap.set("n", "fh", builtin.help_tags, { desc = "Find Help" }) - vim.keymap.set("n", "fk", builtin.keymaps, { desc = "Find Keymaps" }) - - -- Git - vim.keymap.set("n", "gb", builtin.git_branches, { desc = "Change branch" }) - - -- Diagnosticos - -- Disabled, handle by trouble - -- vim.keymap.set("n", "fD", function() - -- builtin.diagnostics({ bufnr = 0 }) - -- end, { desc = "Find diagnostics (Telescope)" }) - -- vim.keymap.set("n", "fD", function() - -- builtin.diagnostics({ bufnr = nil }) - -- end, { desc = "Find diagnostics in workspace (Telescope)" }) - -- vim.keymap.set("n", "fz", builtin.spell_suggest, { desc = "Find spell suggestion" }) - end, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/todo-comments.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/todo-comments.lua deleted file mode 100644 index d9044cd..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-core/todo-comments.lua +++ /dev/null @@ -1,12 +0,0 @@ -return { - "folke/todo-comments.nvim", - cmd = { "TodoTrouble", "TodoTelescope" }, - event = { "BufReadPost", "BufNewFile" }, - config = true, - keys = { - { "]t", function() require("todo-comments").jump_next() end, desc = "Next todo comment" }, - { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous todo comment" }, - { "ft", "TodoTrouble", desc = "Find todos (Trouble)" }, - { "fT", "TodoTelescope", desc = "Find todos (Telescope)" }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/color-picker.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/color-picker.lua deleted file mode 100644 index 626f66f..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/color-picker.lua +++ /dev/null @@ -1,14 +0,0 @@ -return { - { - -- Color Picker - "uga-rosa/ccc.nvim", - opts = { - auto_enable = true, - lsp = true, - }, - keys = { - { "uc", "CccPick", desc = "Open Color picker" }, - { "uC", "CccHighlighterToggle", desc = "Toggle Color highlight" }, - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/completion.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/completion.lua deleted file mode 100644 index 4153d4d..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/completion.lua +++ /dev/null @@ -1,92 +0,0 @@ -return { - "saghen/blink.cmp", - lazy = false, - version = "*", - dependencies = { - "rafamadriz/friendly-snippets", - "folke/lazydev.nvim", - { "saghen/blink.compat", version = "*", }, - }, - opts = function() - local window_options = { - border = "rounded", - winblend = vim.o.pumblend, - } - - ---@module 'blink.cmp' - ---@type blink.cmp.Config - return { - sources = { - providers = { - dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" }, - lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, - luasnip = { - name = 'luasnip', - module = 'blink.compat.source', - score_offset = -3, - opts = { - use_show_condition = false, - show_autosnippets = true, - }, - }, - }, - -- nvim-cmp sources - compat = {}, - completion = { - enabled_providers = { - "lsp", - "path", - "snippets", - "buffer", - "dadbod", - "lazydev", - }, - }, - }, - accept = { - auto_brackets = { enabled = true }, - expand_snippet = function(snippet) require('luasnip').lsp_expand(snippet) end, - }, - -- trigger = { signature_help = { enabled = true } }, - keymap = { - preset = "enter", - [""] = { 'select_next', 'fallback' }, - [""] = { 'select_prev', 'fallback' }, - [""] = { 'scroll_documentation_up', 'fallback' }, - [""] = { 'scroll_documentation_down', 'fallback' }, - }, - highlight = { - -- sets the fallback highlight groups to nvim-cmp's highlight groups - -- useful for when your theme doesn't support blink.cmp - -- will be removed in a future release, assuming themes add support - use_nvim_cmp_as_default = false, - }, - -- set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font' - -- adjusts spacing to ensure icons are aligned - nerd_font_variant = "mono", - windows = { - autocomplete = vim.tbl_extend("force", window_options, { - selection = "manual", - ---@type blink.cmp.Draw - draw = { - components = { - kind_icon = { - text = function(ctx) - return ctx.kind_icon .. ctx.icon_gap - end, - } - } - } - }), - documentation = vim.tbl_extend("force", window_options, { - auto_show = true, - winblend = 0, - }), - ghost_text = { - enabled = true, - }, - }, - kind_icons = require("aleidk.constants").icons.kinds, - } - end -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/database.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/database.lua deleted file mode 100644 index 175697b..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/database.lua +++ /dev/null @@ -1,44 +0,0 @@ -return { - "kristijanhusak/vim-dadbod-ui", - dependencies = { - { "tpope/vim-dadbod", lazy = true }, - { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, - }, - cmd = { - "DBUI", - "DBUIToggle", - "DBUIAddConnection", - "DBUIFindBuffer", - }, - keys = { - { "ud", "DBUIToggle", desc = "Toggle DB UI" }, - }, - init = function() - -- Your DBUI configuration - vim.g.db_ui_use_nerd_fonts = 1 - vim.g.db_ui_force_echo_notifications = 1 - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - command = [[setlocal omnifunc=vim_dadbod_completion#omni]], - }) - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - callback = function() - ---@diagnostic disable-next-line: missing-fields - require("cmp").setup.buffer({ - sources = { { name = "vim-dadbod-completion" }, { name = "buffer" } }, - }) - end, - }) - end, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/doc-gen.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/doc-gen.lua deleted file mode 100644 index 199ce62..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/doc-gen.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - "danymat/neogen", - opts = { snippet_engine = "luasnip" }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - version = "*", -- stable releases - keys = { - { - "gcd", - function() - require("neogen").generate() - end, - desc = "Generate comment docstring", - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/formatter.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/formatter.lua deleted file mode 100644 index 2406d75..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/formatter.lua +++ /dev/null @@ -1,124 +0,0 @@ -return { - "stevearc/conform.nvim", - event = { "BufWritePre" }, - cmd = { "ConformInfo" }, - opts = { - -- log_level = vim.log.levels.DEBUG, - - -- See aviable formatters in: https://github.com/stevearc/conform.nvim#formatters - -- Formatters can be installed by mason - formatters_by_ft = { - -- Conform will run multiple formatters sequentially - -- Use a stop_after_first = true to run only the first available formatter - -- Use the "_" filetype to run formatters on filetypes that don't - -- have other formatters configured. - ["_"] = { "trim_whitespace" }, - blade = { "blade-formatter" }, - css = { "biome" }, - go = { "gofumpt", "goimports_reviser", "golines" }, - html = { "djlint", "prettierd", stop_after_first = true }, - htmldjango = { "djlint", stop_after_first = true }, - javascript = { "biome" }, - javascriptreact = { "biome" }, - json = { "biome" }, - jsonc = { "biome" }, - lua = { "stylua" }, - markdown = { "markdownlint" }, - nim = { "nimpretty" }, - php = { "pint" }, - python = { "ruff_format", "ruff_organize_imports" }, - scss = { "prettierd", "prettier", stop_after_first = true }, - sh = { "shfmt" }, - toml = { "taplo" }, - typescript = { "biome" }, - typescriptreact = { "biome" }, - xml = { "lemminx" }, - zsh = { "shfmt" }, - sql = { "sleek" } - }, - formatters = { - djlint = { - prepend_args = { - "--format-css", - "--indent-css", - "2", - "--format-js", - "--indent-js", - "2", - "--indent", - "2", - "--preserve-blank-lines", - "--quiet" - } - } - }, - format_on_save = function(bufnr) - -- Disable with a global or buffer-local variable - if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then - return - end - - return { timeout_ms = 2000, lsp_fallback = true } - end, - }, - config = function(_, opts) - require("conform").setup(opts) - - local function toggleAutoFormat() - -- to make this global, change b to g - if vim.b.disable_autoformat == nil then - vim.b.disable_autoformat = true - print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) - return - end - - vim.b.disable_autoformat = not vim.b.disable_autoformat - print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) - end - - MAP("n", "uf", toggleAutoFormat, "Toggle auto format") - - vim.api.nvim_create_user_command("Fmt", function(args) - local range = nil - if args.count ~= -1 then - local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] - range = { - start = { args.line1, 0 }, - ["end"] = { args.line2, end_line:len() }, - } - end - - local function callback(err, did_edit) - if not did_edit then - vim.notify("The file was not formatted:\n" .. tostring(err), vim.log.levels.ERROR) - return - end - - if args.bang then - vim.cmd("w") - end - end - - require("conform").format( - { - async = true, - lsp_format = "fallback", - range = range, - formatters = args.fargs - }, - callback - ) - end, { - range = true, - bang = true, - force = true, - desc = "Format the document", - nargs = '*', - -- complete = function() - -- local formatters = require('conform').formatters_by_ft - -- - -- return vim.tbl_keys(formatters) - -- end - }) - end, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/git.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/git.lua deleted file mode 100644 index f34672f..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/git.lua +++ /dev/null @@ -1,52 +0,0 @@ -local const = require("aleidk.constants") - -return { - { - "lewis6991/gitsigns.nvim", - event = { "BufReadPre", "BufNewFile" }, - opts = { - -- See `:help gitsigns.txt` - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = true, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - signs = { - add = { text = const.icons.git.added }, - change = { text = const.icons.git.modified }, - delete = { text = const.icons.git.removed }, - topdelete = { text = const.icons.git.removed }, - changedelete = { text = const.icons.git.removed }, - untracked = { text = "▎" }, - }, - signs_staged = { - add = { text = const.icons.git.added }, - change = { text = const.icons.git.modified }, - delete = { text = const.icons.git.removed }, - topdelete = { text = const.icons.git.removed }, - changedelete = { text = const.icons.git.removed }, - untracked = { text = "▎" }, - }, - on_attach = function(buffer) - local gs = package.loaded.gitsigns - - local function map(mode, l, r, desc) - vim.keymap.set(mode, "g" .. l, r, { buffer = buffer, desc = desc }) - end - - -- stylua: ignore start - map("n", "j", gs.next_hunk, "Next Hunk") - map("n", "k", gs.prev_hunk, "Prev Hunk") - map({ "n", "v" }, "s", ":Gitsigns stage_hunk", "Stage Hunk") - map({ "n", "v" }, "r", ":Gitsigns reset_hunk", "Reset Hunk") - map("n", "u", gs.undo_stage_hunk, "Undo Stage Hunk") - map("n", "R", gs.reset_buffer, "Reset Buffer") - map("n", "", gs.preview_hunk, "Preview Hunk") - map("n", "l", function() gs.blame_line({ full = true }) end, "Blame Line") - map("n", "L", gs.toggle_current_line_blame, "Toggle current line blame") - map("n", "d", gs.toggle_word_diff, "Toggle word diff") - map("n", "h", "diffget", "Diff This with last commit") - map("n", "l", "diffput", "Diff This with last commit") - end, - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/init.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/init.lua deleted file mode 100644 index 286bfc6..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/init.lua +++ /dev/null @@ -1,21 +0,0 @@ -return { - { - "ckolkey/ts-node-action", - dependencies = { "nvim-treesitter" }, - opts = {}, - keys = { - { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } - } - }, - { - "Wansmer/treesj", - cmd = { "TSJToggle" }, - keys = { - { "lm", "TSJToggle", desc = "Toggle treesitter join" }, - }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - opts = { - use_default_keymaps = true, - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/linters.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/linters.lua deleted file mode 100644 index 06aec9f..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/linters.lua +++ /dev/null @@ -1,25 +0,0 @@ -return { - "mfussenegger/nvim-lint", - event = "VeryLazy", - config = function() - local lint = require("lint") - - lint.linters.gitlint.stdin = true - lint.linters.gitlint.args = { "--contrib", "contrib-title-conventional-commits", "--msg-filename", "-" } - - lint.linters_by_ft = { - -- astro = { "eslint_d" }, - python = { "ruff" }, - sh = { "shellcheck" }, - NeogitCommitMessage = { "gitlint" }, - gitcommit = { "gitlint" }, - markdown = { "markdownlint" }, - } - - vim.api.nvim_create_autocmd({ "BufWritePost" }, { - callback = function() - require("lint").try_lint() - end, - }) - end, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/lsp.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/lsp.lua deleted file mode 100644 index 9f3e308..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/lsp.lua +++ /dev/null @@ -1,229 +0,0 @@ -return { - -- LSP Plugins - { - -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins - -- used for completion, annotations and signatures of Neovim apis - 'folke/lazydev.nvim', - ft = 'lua', - opts = { - library = { - -- Load luvit types when the `vim.uv` word is found - { path = 'luvit-meta/library', words = { 'vim%.uv' } }, - }, - }, - }, - { "Bilal2453/luvit-meta", lazy = true }, -- optional `vim.uv` typings - { - -- LSP Configuration & Plugins - "neovim/nvim-lspconfig", - event = { "BufReadPost", "BufNewFile", "BufWritePre" }, - dependencies = { - -- Automatically install LSPs to stdpath for neovim - { "williamboman/mason.nvim", config = true }, - "williamboman/mason-lspconfig.nvim", - { 'saghen/blink.cmp' } -- autocompletion - }, - - config = function() - -- LSP settings. - local on_attach = function(_, bufnr) - local nmap = function(keys, func, desc) - if desc then - desc = "LSP: " .. desc - end - - vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc }) - end - - nmap("lr", vim.lsp.buf.rename, "Rename") - -- stylua: ignore - vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = bufnr, desc = "Code Action" }) - nmap("ld", vim.lsp.buf.type_definition, "Go to type definition") - nmap("lf", function() - vim.lsp.buf.format() - end, "Format") - - nmap("gd", vim.lsp.buf.definition, "Go to definition") - nmap("gr", require("telescope.builtin").lsp_references, "Goto References") - nmap("gI", vim.lsp.buf.implementation, "Go to Implementation") - - -- See `:help K` for why this keymap - nmap("K", vim.lsp.buf.hover, "Hover Documentation") - -- nmap("", vim.lsp.buf.signature_help, "Signature Documentation") - - -- Lesser used LSP functionality - nmap("gD", vim.lsp.buf.declaration, "Goto Declaration") - - nmap("lj", vim.diagnostic.goto_next, "Go to next diagnostic") - nmap("lk", vim.diagnostic.goto_prev, "Go to prev diagnostic") - nmap("lK", function() - -- execute twice to enter the float inmediatly - vim.diagnostic.open_float() - vim.diagnostic.open_float() - end, "Hover current diagnostic") - - -- Create a command `:Format` local to the LSP buffer - vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_) - vim.lsp.buf.format() - end, { desc = "Format current buffer with LSP" }) - end - - -- Enable the following language servers - -- To see options and cofigurations `:help lspconfig-all` - local servers = { - astro = {}, - bashls = {}, - biome = { - single_file_support = true, - }, - cssls = {}, - dockerls = {}, - emmet_ls = { - filetypes = { - "astro", - "css", - "eruby", - "html", - "htmldjango", - "javascriptreact", - "less", - "pug", - "sass", - "scss", - "svelte", - "typescriptreact", - "vue", - "htmlangular", - "php", - "blade" - }, - }, - harper_ls = {}, - html = {}, - hyprls = {}, - marksman = {}, - phpactor = {}, - gopls = { - settings = { - gopls = { - completeUnimported = true, - usePlaceholders = true, - analyses = { - unusedparams = true, - }, - }, - }, - }, - ruff = {}, - rust_analyzer = { - settings = { - ["rust-analyzer"] = { - imports = { - granularity = { - group = "module", - }, - prefix = "self", - }, - cargo = { - buildScripts = { - enable = true, - }, - }, - procMacro = { - enable = true, - }, - }, - }, - }, - sqlls = {}, - taplo = {}, - yamlls = { - settings = { - yaml = { - schemas = {}, - customTags = { - "!vault" -- ansible encrypted vars support - } - } - }, - }, - lua_ls = { - settings = { - Lua = { - completion = { - callSnippet = 'Replace', - }, - diagnostics = { disable = { 'missing-fields' } }, - }, - }, - }, - } - - -- nvim-cmp supports additional completion capabilities, so broadcast that to servers - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = require("blink.cmp").get_lsp_capabilities(capabilities) - - -- Ensure the servers above are installed - local mason_lspconfig = require("mason-lspconfig") - - mason_lspconfig.setup({ - ensure_installed = vim.tbl_keys(servers), - automatic_installation = false, - }) - - mason_lspconfig.setup_handlers({ - function(server_name) - local _border = "single" - - local default_config = { - capabilities = capabilities, - on_attach = on_attach, - handlers = { - ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - border = _border, - }), - ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { - border = _border, - max_width = 200, - max_height = 200, - focus = true, - }), - }, - } - - require("lspconfig")[server_name].setup( - vim.tbl_deep_extend("force", default_config, servers[server_name] or {}) - ) - end, - }) - - vim.diagnostic.config({ - update_in_insert = false, - underline = true, - float = { - source = true - }, - virtual_text = { - severity = vim.diagnostic.severity.ERROR, - source = true, - spacing = -1, - prefix = nil, - format = function(diagnostic) - -- show small error code instead of whole error that probably won't fit in the screen - -- to see the whole error use other keybindings - return tostring(diagnostic.code) - end, - virt_text_hide = true - }, - severity_sort = true, - }) - - -- Customize gutter icons - local signs = require("aleidk.constants").icons.diagnostics - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) - end - end, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/luasnip.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/luasnip.lua deleted file mode 100644 index 5f4e132..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/luasnip.lua +++ /dev/null @@ -1,27 +0,0 @@ -return { - "L3MON4D3/LuaSnip", - dependencies = { - "rafamadriz/friendly-snippets", - config = function() - require("luasnip.loaders.from_vscode").lazy_load() - end, - }, - opts = { - history = true, - delete_check_events = "TextChanged", - }, - -- stylua: ignore - keys = { - { - "", - function() - return require("luasnip").jumpable(1) and "luasnip-jump-next" or "" - end, - expr = true, - silent = true, - mode = "i", - }, - { "", function() require("luasnip").jump(1) end, mode = "s" }, - { "", function() require("luasnip").jump(-1) end, mode = { "i", "s" } }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/remote-sshfs.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/remote-sshfs.lua deleted file mode 100644 index 30f9134..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/remote-sshfs.lua +++ /dev/null @@ -1,59 +0,0 @@ -return { - { - "nosduco/remote-sshfs.nvim", - dependencies = { "nvim-telescope/telescope.nvim" }, - cmd = { "RemoteSSHFSConnect" }, - config = function() - require("remote-sshfs").setup({}) - require("telescope").load_extension("remote-sshfs") - end, - }, - { - "amitds1997/remote-nvim.nvim", - version = "*", -- Pin to GitHub releases - dependencies = { - "nvim-lua/plenary.nvim", -- For standard functions - "MunifTanjim/nui.nvim", -- To build the plugin UI - "nvim-telescope/telescope.nvim", -- For picking b/w different remote methods - }, - opts = { - remote = { - copy_dirs = { - data = { - base = vim.fn.stdpath("data"), -- Path from where data has to be copied. You can choose to copy entire path or subdirectories inside using `dirs` - dirs = { "lazy" }, -- Directories inside `base` to copy over. If this is set to string "*"; it means entire `base` should be copied over - compression = { - enabled = true, -- Should data be compressed before uploading - additional_opts = { "--exclude-vcs" }, -- Any arguments that can be passed to `tar` for compression can be specified here to improve your compression - }, - }, - -- cache = { - -- base = vim.fn.stdpath("cache"), - -- dirs = {}, - -- compression = { - -- enabled = true, - -- }, - -- }, - state = { - base = vim.fn.stdpath("state"), - dirs = {}, - compression = { - enabled = true, - }, - }, - }, - }, - client_callback = function(port, workspace_config) - local cmd = ("tmux new-window 'nvim --server localhost:%s --remote-ui' && tmux select-window -t:$"):format(port) - vim.fn.jobstart(cmd, { - detach = true, - on_exit = function(job_id, exit_code, event_type) - -- This function will be called when the job exits - print("Client", job_id, "exited with code", exit_code, "Event type:", event_type) - end, - }) - end, - }, - config = true, - } -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/task-runner.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/task-runner.lua deleted file mode 100644 index d91d74e..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/task-runner.lua +++ /dev/null @@ -1,171 +0,0 @@ -local function term_get_effective_line_count(bufnr) - local linecount = vim.api.nvim_buf_line_count(bufnr) - - local non_blank_lines = linecount - for i = linecount, 1, -1 do - local line = vim.api.nvim_buf_get_lines(bufnr, i - 1, i, true)[1] - non_blank_lines = i - if line ~= "" then - break - end - end - return non_blank_lines -end - --- This is a copy of the original util function of overseer with the change that --- vim.api.nvim_win_set_cursor(winid, { lnum, 0 }) column is set to 0 so the output is visible --- the rest is the same -local scroll_to_end = function(winid) - winid = winid or 0 - local bufnr = vim.api.nvim_win_get_buf(winid) - local lnum = vim.api.nvim_buf_line_count(bufnr) - -- Hack: terminal buffers add a bunch of empty lines at the end. We need to ignore them so that - -- we don't end up scrolling off the end of the useful output. - local not_much_output = lnum < vim.o.lines + 6 - if vim.bo[bufnr].buftype == "terminal" and not_much_output then - lnum = term_get_effective_line_count(bufnr) - end - local scrolloff = vim.api.nvim_get_option_value("scrolloff", { scope = "local", win = winid }) - vim.api.nvim_set_option_value("scrolloff", 0, { scope = "local", win = winid }) - vim.api.nvim_win_set_cursor(winid, { lnum, 0 }) - vim.api.nvim_set_option_value("scrolloff", scrolloff, { scope = "local", win = winid }) -end - -local open_split = function(task, horizontal) - local original_window = vim.api.nvim_get_current_win() - if horizontal then - -- horizontal split across all vertical splits - vim.cmd([[botright split]]) - else - -- vertical split across all horizontal splits - vim.cmd([[vert botright split]]) - end - - -- Update tasks buffer options - vim.api.nvim_win_set_buf(0, task:get_bufnr()) - vim.api.nvim_set_option_value("number", false, { scope = "local", win = 0 }) - vim.api.nvim_set_option_value("relativenumber", false, { scope = "local", win = 0 }) - vim.api.nvim_set_option_value("signcolumn", "no", { scope = "local", win = 0 }) - scroll_to_end(0) - - -- Go back to the original window - vim.api.nvim_set_current_win(original_window) -end - -return { - "stevearc/overseer.nvim", - keys = { - { "pO", "OverseerQuickAction hsplit", desc = "Open task in a hsplit" }, - { - "pQ", - "OverseerQuickAction close winOverseerQuickAction dispose", - desc = "Close and dispose task's windows", - }, - { "pW", "OverseerQuickAction unwatch", desc = "Unwatch task" }, - { "pf", "OverseerQuickAction open float", desc = "Open task in a float window" }, - { "pl", "OverseerLoadBundle", desc = "Load tasks" }, - { "pm", "OverseerTaskAction", desc = "Manage task" }, - { "po", "OverseerQuickAction vsplit", desc = "Open task in a vsplit" }, - { "pp", "OverseerRun", desc = "Run task" }, - { - "pP", - function() - local overseer = require('overseer') - overseer.run_template({}, function(task) - if task then - task:add_components({ "restart_on_save" }) - overseer.run_action(task, "hsplit") - end - end) - end, - desc = "Run task and watch it" - }, - { "pq", "OverseerQuickAction close win", desc = "Close task's windows" }, - { "ps", "OverseerSaveBundle", desc = "Save tasks" }, - { "pt", "OverseerToggle", desc = "Toggle tasks list" }, - { "pw", "OverseerQuickAction watch", desc = "Watch task" }, - }, - opts = { - templates = { - "cargo", - "cargo-make", - "composer", - "deno", - "just", - "mage", - "make", - "mix", - "npm", - "rake", - "task", - "tox", - "vscode", - }, - actions = { - ["hsplit"] = { - desc = "open terminal in a horizontal split", - condition = function(task) - local bufnr = task:get_bufnr() - return bufnr and vim.api.nvim_buf_is_valid(bufnr) - end, - run = function(task) - open_split(task, true) - end, - }, - ["vsplit"] = { - desc = "open terminal in a vertical split", - condition = function(task) - local bufnr = task:get_bufnr() - return bufnr and vim.api.nvim_buf_is_valid(bufnr) - end, - run = function(task) - open_split(task, false) - end, - }, - ["close win"] = { - desc = "open terminal in a vertical split", - condition = function(task) - local bufnr = task:get_bufnr() - return bufnr and vim.api.nvim_buf_is_valid(bufnr) - end, - run = function(task) - local buf = task:get_bufnr() - -- iterar sobre todas las windows y ver si la window tiene attach el buf que quiero cerrar - for _, win in ipairs(vim.api.nvim_list_wins()) do - if buf == vim.api.nvim_win_get_buf(win) then - vim.api.nvim_win_close(win, false) - end - end - end, - }, - }, - task_list = { - direction = "bottom", - bindings = { - ["?"] = "ShowHelp", - ["g?"] = "ShowHelp", - [""] = "RunAction", - [""] = "Edit", - ["o"] = "Open", - [""] = "OpenVsplit", - [""] = "OpenSplit", - [""] = "OpenFloat", - [""] = "OpenQuickFix", - [""] = "TogglePreview", - ["p"] = "TogglePreview", - [""] = "IncreaseAllDetail", - [""] = "DecreaseAllDetail", - ["L"] = "IncreaseDetail", - ["H"] = "DecreaseDetail", - ["["] = "DecreaseWidth", - ["]"] = "IncreaseWidth", - ["{"] = "PrevTask", - ["}"] = "NextTask", - [""] = "ScrollOutputUp", - [""] = "ScrollOutputDown", - ["q"] = "Close", - ["d"] = "OverseerQuickAction dispose", - }, - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/trouble.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/trouble.lua deleted file mode 100644 index b7a17bf..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/trouble.lua +++ /dev/null @@ -1,93 +0,0 @@ ----@module 'trouble' - -return { - "folke/trouble.nvim", - dependencies = { "nvim-tree/nvim-web-devicons" }, - cmd = { "Trouble" }, - keys = { - { - "fD", - "Trouble diagnostics open", - desc = "Find diagnostics (Trouble)", - }, - { - "fd", - "Trouble diagnostics open filter.buf=0", - desc = "Find buffer diagnostics (Trouble)", - }, - { - "ll", - "Trouble symbols open", - desc = "Symbols (Trouble)", - }, - { - "li", - "Trouble lsp open", - desc = "LSP info of node (Trouble)", - }, - { - "fq", - "Trouble qflist open", - desc = "Quickfix List (Trouble)", - }, - }, - opts = function() - ---@type trouble.Window.opts - local win_opts = { - -- size = { width = 30, height = 0.5 }, - minimal = true, - border = "rounded", - position = "bottom", - } - - ---@type trouble.Config - return { - focus = true, - - ---@type trouble.Window.opts - preview = { - type = "split", - relative = "win", - position = "top", - }, - - ---@type table - keys = { - [""] = "jump_close", - [""] = "jump", - ["<2-leftmouse>"] = "jump", - [""] = "jump_split_close", - [""] = "jump_vsplit_close", - ["v"] = "jump_split_close", - ["s"] = "jump_vsplit_close", - [""] = "cancel", -- hack to fool myself into thinking I move to the avobe window - ["a"] = function(view, ctx) - -- TODO: this is not possible until this issue is solved - -- https://github.com/neovim/neovim/issues/31206 - local trouble = require("trouble") - view:action("jump_only") - - vim.lsp.buf.code_action() - - trouble.focus(view, ctx) - end, - }, - win = win_opts, - ---@type table - modes = { - symbols = { - focus = true, - win = win_opts - }, - lsp_references = { - focus = true, - win = win_opts - }, - lsp = { - focus = true, - win = win_opts - }, - } - } - end -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/typescript-tools.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/typescript-tools.lua deleted file mode 100644 index 7f106b0..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/plugins-ide/typescript-tools.lua +++ /dev/null @@ -1,18 +0,0 @@ -return { - "pmizio/typescript-tools.nvim", - dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, - opts = { - init_options = { - preferences = { - disableSuggestions = true, - }, - }, - settings = { - -- array of strings("fix_all"|"add_missing_imports"|"remove_unused"| - -- "remove_unused_imports"|"organize_imports") -- or string "all" - -- to include all supported code actions - -- specify commands exposed as code_actions - expose_as_code_action = "all", - }, - }, -} diff --git a/Configs/nvim_old/.config/nvim_old/lua/aleidk/utils.lua b/Configs/nvim_old/.config/nvim_old/lua/aleidk/utils.lua deleted file mode 100644 index 96d3f8f..0000000 --- a/Configs/nvim_old/.config/nvim_old/lua/aleidk/utils.lua +++ /dev/null @@ -1,7 +0,0 @@ -local M = {} - -function M.plugin_should_be_enabled() - print("Plugin should be enabled") -end - -return M diff --git a/Configs/zed/.config/zed/keymap.json b/Configs/zed/.config/zed/keymap.json deleted file mode 100644 index c175302..0000000 --- a/Configs/zed/.config/zed/keymap.json +++ /dev/null @@ -1,183 +0,0 @@ -[ - { - "context": "Editor && (vim_mode == normal || vim_mode == visual) && !VimWaiting && !menu", - "bindings": { - // Git - - // Toggle inlay hints - "space u i": "editor::ToggleInlayHints", - - // NOTE: Toggle Zen mode, not fully working yet - "space u z": "workspace::ToggleZoom", - - // Open recent project - "space f p": "projects::OpenRecent", - // Search word under cursor - "space f w": "pane::DeploySearch", - - // Chat with AI - "space a c": "assistant::ToggleFocus", - - // Go to file with `gf` - "g f": "editor::OpenExcerpts" - } - }, - { - // move context menus with Ctrl + hjkl in completions - "context": "(vim_mode == normal || vim_mode == insert) && (showing_code_actions || showing_completions)", - "bindings": { - "ctrl-h": "editor::ContextMenuPrev", - "ctrl-j": "editor::ContextMenuNext", - "ctrl-k": "editor::ContextMenuPrev", - "ctrl-l": "editor::ContextMenuNext" - } - }, - { - "context": "Editor && (vim_mode == normal || vim_mode == insert)", - "bindings": { - "ctrl-shift-v": "editor::Paste" - } - }, - { - // move context menus with Ctrl + hjkl in menus - "context": "Picker || menu", - "bindings": { - "ctrl-h": "menu::SelectPrev", - "ctrl-j": "menu::SelectNext", - "ctrl-k": "menu::SelectPrev", - "ctrl-l": "menu::SelectNext" - } - }, - { - "context": "Editor && VimControl && !VimWaiting && !menu", - "bindings": { - "|": "pane::SplitVertical", - - // Window movement bindings - // Ctrl jklk to move between panes - "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], - "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"], - "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], - "ctrl-j": ["workspace::ActivatePaneInDirection", "Down"], - - "space e": "pane::RevealInProjectPanel", - - // +LSP - "space l a": "editor::ToggleCodeActions", - "space l r": "editor::Rename", - "g d": "editor::GoToDefinition", - "g D": "editor::GoToDefinitionSplit", - "g i": "editor::GoToImplementation", - "g I": "editor::GoToImplementationSplit", - "g t": "editor::GoToTypeDefinition", - "g T": "editor::GoToTypeDefinitionSplit", - "g r": "editor::FindAllReferences", - "space l j": "editor::GoToDiagnostic", - "space l k": "editor::GoToPrevDiagnostic", - - // Symbol search - "space f o": "outline::Toggle", - "space f O": "project_symbols::Toggle", - - // Diagnostic - "space f q": "diagnostics::Deploy", - - // +Git - // Git prev/next hunk - "space g j": "editor::GoToHunk", - "space g k": "editor::GoToPrevHunk", - - // + Buffers - // Switch between buffers - "shift-h": "pane::ActivatePrevItem", - "shift-l": "pane::ActivateNextItem", - - // Close active panel - "space b c": "pane::CloseActiveItem", - "space b d": "pane::CloseActiveItem", - // Close other items - "space b o": "pane::CloseInactiveItems", - // Save file - "ctrl-s": "workspace::Save", - // File finder - "space f f": "file_finder::Toggle", - // Project search - "space f W": "pane::DeploySearch" - } - }, - { - "context": "Editor && vim_mode == visual", - "bindings": { - "shift-j": "editor::MoveLineDown", - "shift-k": "editor::MoveLineUp" - } - }, - // Empty pane, set of keybindings that are available when there is no active editor - { - "context": "(EmptyPane || SharedScreen) && vim_mode != insert", - "bindings": { - // Open file finder - "space f f": "file_finder::Toggle", - // Open recent project - "space f p": "projects::OpenRecent" - } - }, - { - "context": "Workspace", - "bindings": { - "ctrl-t": "terminal_panel::ToggleFocus" - } - }, - { - "context": "Terminal", - "bindings": { - "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], - "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"], - "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], - "ctrl-j": ["workspace::ActivatePaneInDirection", "Down"] - } - }, - // File panel (netrw) - { - "context": "ProjectPanel && not_editing", - "bindings": { - "a": "project_panel::NewFile", - "A": "project_panel::NewDirectory", - "r": "project_panel::Rename", - "d": "project_panel::Delete", - "x": "project_panel::Cut", - "c": "project_panel::Copy", - "p": "project_panel::Paste", - "y": "project_panel::CopyRelativePath", - "Y": "project_panel::CopyPath", - "o": ["project_panel::Open", "workspace::toggleLeftDock"], - // Close project panel as project file panel on the right - // Navigate between panel - "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], - "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"], - "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], - "ctrl-j": ["workspace ::ActivatePaneInDirection", "Down"], - "space e": "workspace::ToggleLeftDock" - } - }, - // Panel nagivation - { - "context": "Dock", - "bindings": { - "ctrl-w h": ["workspace::ActivatePaneInDirection", "Left"], - "ctrl-w l": ["workspace::ActivatePaneInDirection", "Right"], - "ctrl-w k": ["workspace::ActivatePaneInDirection", "Up"], - "ctrl-w j": ["workspace::ActivatePaneInDirection", "Down"] - } - } - // Subword motion is not working really nice with `ciw`, disable for now - // { - // "context": "VimControl && !menu", - // "bindings": { - // "w": "vim::NextSubwordStart", - // "b": "vim::PreviousSubwordStart", - // "e": "vim::NextSubwordEnd", - // "g e": "vim::PreviousSubwordEnd" - // } - // } -] diff --git a/Configs/zed/.config/zed/private_settings.json b/Configs/zed/.config/zed/private_settings.json deleted file mode 100644 index b0308e0..0000000 --- a/Configs/zed/.config/zed/private_settings.json +++ /dev/null @@ -1,73 +0,0 @@ -// Zed settings -// -// For information on how to configure Zed, see the Zed -// documentation: https://zed.dev/docs/configuring-zed -// -// To see all of Zed's default settings without changing your -// custom settings, run `zed: open default settings` from the -// command palette (cmd-shift-p / ctrl-shift-p) -{ - "assistant": { - "default_model": { - "provider": "copilot_chat", - "model": "gpt-4o" - }, - "version": "2" - }, - "vim_mode": true, - "ui_font_size": 16, - "buffer_font_size": 16, - "buffer_font_family": "JetBrainsMono Nerd Font", - "cursor_blink": true, - "use_multiline_find": true, - "use_smartcase_search": true, - "relative_line_numbers": true, - "scroll_beyond_last_line": "vertical_scroll_margin", - "vertical_scroll_margin": 15, - "theme": { - "mode": "system", - "light": "One Light", - "dark": "Catppuccin Macchiato" - }, - "tab_bar": { - "show": true, - "show_nav_history_buttons": false - }, - "tabs": { - "file_icons": true, - "git_status": true - }, - "git": { - "git_gutter": "tracked_files", - "inline_blame": { - "enabled": false - } - }, - "indent_guides": { - "coloring": "indent_aware" - }, - "terminal": { - "copy_on_select": true, - "button": true - }, - "hover_popover_enabled": true, - "inlay_hints": { - "enabled": true - }, - "preview_tabs": { - "enabled": true, - "enable_preview_from_code_navigation": true, - "enable_preview_from_file_finder": false - }, - "scrollbar": { - "show": "auto", - "cursors": false, - "git_diff": false, - "search_results": true, - "selected_symbol": true, - "diagnostics": true - }, - "command_aliases": { - "q": "pane: close all items" - } -} diff --git a/Configs/zed/.config/zed/themes/.keep b/Configs/zed/.config/zed/themes/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/Configs/alacritty/.config/alacritty/alacritty.toml b/configs/alacritty/alacritty.toml similarity index 100% rename from Configs/alacritty/.config/alacritty/alacritty.toml rename to configs/alacritty/alacritty.toml diff --git a/Configs/alacritty/.config/alacritty/alacritty.yml b/configs/alacritty/alacritty.yml similarity index 100% rename from Configs/alacritty/.config/alacritty/alacritty.yml rename to configs/alacritty/alacritty.yml diff --git a/Configs/alacritty/.config/alacritty/themes/.keep b/configs/alacritty/themes/.keep similarity index 100% rename from Configs/alacritty/.config/alacritty/themes/.keep rename to configs/alacritty/themes/.keep diff --git a/Configs/atuin/.config/atuin/config.toml b/configs/atuin/config.toml similarity index 100% rename from Configs/atuin/.config/atuin/config.toml rename to configs/atuin/config.toml diff --git a/Configs/atuin/.config/atuin/themes/catppuccin-macchiato-teal.toml b/configs/atuin/themes/catppuccin-macchiato-teal.toml similarity index 100% rename from Configs/atuin/.config/atuin/themes/catppuccin-macchiato-teal.toml rename to configs/atuin/themes/catppuccin-macchiato-teal.toml diff --git a/Configs/bash/.bash_profile b/configs/bash/.bash_profile similarity index 100% rename from Configs/bash/.bash_profile rename to configs/bash/.bash_profile diff --git a/Configs/bash/.bashrc b/configs/bash/.bashrc similarity index 100% rename from Configs/bash/.bashrc rename to configs/bash/.bashrc diff --git a/Configs/bat/.config/bat/config b/configs/bat/config similarity index 100% rename from Configs/bat/.config/bat/config rename to configs/bat/config diff --git a/Configs/containers/.config/containers/systemd/dev-databases.pod b/configs/containers/systemd/dev-databases.pod similarity index 100% rename from Configs/containers/.config/containers/systemd/dev-databases.pod rename to configs/containers/systemd/dev-databases.pod diff --git a/Configs/containers/.config/containers/systemd/dev-dbui.container b/configs/containers/systemd/dev-dbui.container similarity index 100% rename from Configs/containers/.config/containers/systemd/dev-dbui.container rename to configs/containers/systemd/dev-dbui.container diff --git a/Configs/containers/.config/containers/systemd/dev-postgres.container b/configs/containers/systemd/dev-postgres.container similarity index 100% rename from Configs/containers/.config/containers/systemd/dev-postgres.container rename to configs/containers/systemd/dev-postgres.container diff --git a/Configs/fish/.config/fish/completions/.config/fish/config.fish b/configs/fish/completions/.config/fish/config.fish similarity index 100% rename from Configs/fish/.config/fish/completions/.config/fish/config.fish rename to configs/fish/completions/.config/fish/config.fish diff --git a/Configs/fish/.config/fish/completions/.config/fish/fish_variables b/configs/fish/completions/.config/fish/fish_variables similarity index 100% rename from Configs/fish/.config/fish/completions/.config/fish/fish_variables rename to configs/fish/completions/.config/fish/fish_variables diff --git a/Configs/fish/.config/fish/completions/atuin.fish b/configs/fish/completions/atuin.fish similarity index 100% rename from Configs/fish/.config/fish/completions/atuin.fish rename to configs/fish/completions/atuin.fish diff --git a/Configs/fish/.config/fish/completions/fish-lsp.fish b/configs/fish/completions/fish-lsp.fish similarity index 100% rename from Configs/fish/.config/fish/completions/fish-lsp.fish rename to configs/fish/completions/fish-lsp.fish diff --git a/Configs/fish/.config/fish/completions/fisher.fish b/configs/fish/completions/fisher.fish similarity index 100% rename from Configs/fish/.config/fish/completions/fisher.fish rename to configs/fish/completions/fisher.fish diff --git a/Configs/fish/.config/fish/completions/mise.fish b/configs/fish/completions/mise.fish similarity index 100% rename from Configs/fish/.config/fish/completions/mise.fish rename to configs/fish/completions/mise.fish diff --git a/Configs/fish/.config/fish/config.fish b/configs/fish/config.fish similarity index 100% rename from Configs/fish/.config/fish/config.fish rename to configs/fish/config.fish diff --git a/Configs/fish/.config/fish/fish_variables b/configs/fish/fish_variables similarity index 100% rename from Configs/fish/.config/fish/fish_variables rename to configs/fish/fish_variables diff --git a/Configs/fish/.config/fish/functions/_pure_check_availability.fish b/configs/fish/functions/_pure_check_availability.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_check_availability.fish rename to configs/fish/functions/_pure_check_availability.fish diff --git a/Configs/fish/.config/fish/functions/_pure_check_for_new_release.fish b/configs/fish/functions/_pure_check_for_new_release.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_check_for_new_release.fish rename to configs/fish/functions/_pure_check_for_new_release.fish diff --git a/Configs/fish/.config/fish/functions/_pure_detect_container_by_cgroup_method.fish b/configs/fish/functions/_pure_detect_container_by_cgroup_method.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_detect_container_by_cgroup_method.fish rename to configs/fish/functions/_pure_detect_container_by_cgroup_method.fish diff --git a/Configs/fish/.config/fish/functions/_pure_detect_container_by_pid_method.fish b/configs/fish/functions/_pure_detect_container_by_pid_method.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_detect_container_by_pid_method.fish rename to configs/fish/functions/_pure_detect_container_by_pid_method.fish diff --git a/Configs/fish/.config/fish/functions/_pure_format_time.fish b/configs/fish/functions/_pure_format_time.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_format_time.fish rename to configs/fish/functions/_pure_format_time.fish diff --git a/Configs/fish/.config/fish/functions/_pure_get_prompt_symbol.fish b/configs/fish/functions/_pure_get_prompt_symbol.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_get_prompt_symbol.fish rename to configs/fish/functions/_pure_get_prompt_symbol.fish diff --git a/Configs/fish/.config/fish/functions/_pure_is_inside_container.fish b/configs/fish/functions/_pure_is_inside_container.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_is_inside_container.fish rename to configs/fish/functions/_pure_is_inside_container.fish diff --git a/Configs/fish/.config/fish/functions/_pure_is_single_line_prompt.fish b/configs/fish/functions/_pure_is_single_line_prompt.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_is_single_line_prompt.fish rename to configs/fish/functions/_pure_is_single_line_prompt.fish diff --git a/Configs/fish/.config/fish/functions/_pure_k8s_context.fish b/configs/fish/functions/_pure_k8s_context.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_k8s_context.fish rename to configs/fish/functions/_pure_k8s_context.fish diff --git a/Configs/fish/.config/fish/functions/_pure_k8s_namespace.fish b/configs/fish/functions/_pure_k8s_namespace.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_k8s_namespace.fish rename to configs/fish/functions/_pure_k8s_namespace.fish diff --git a/Configs/fish/.config/fish/functions/_pure_parse_directory.fish b/configs/fish/functions/_pure_parse_directory.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_parse_directory.fish rename to configs/fish/functions/_pure_parse_directory.fish diff --git a/Configs/fish/.config/fish/functions/_pure_parse_git_branch.fish b/configs/fish/functions/_pure_parse_git_branch.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_parse_git_branch.fish rename to configs/fish/functions/_pure_parse_git_branch.fish diff --git a/Configs/fish/.config/fish/functions/_pure_place_iterm2_prompt_mark.fish b/configs/fish/functions/_pure_place_iterm2_prompt_mark.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_place_iterm2_prompt_mark.fish rename to configs/fish/functions/_pure_place_iterm2_prompt_mark.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prefix_root_prompt.fish b/configs/fish/functions/_pure_prefix_root_prompt.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prefix_root_prompt.fish rename to configs/fish/functions/_pure_prefix_root_prompt.fish diff --git a/Configs/fish/.config/fish/functions/_pure_print_prompt.fish b/configs/fish/functions/_pure_print_prompt.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_print_prompt.fish rename to configs/fish/functions/_pure_print_prompt.fish diff --git a/Configs/fish/.config/fish/functions/_pure_print_prompt_rows.fish b/configs/fish/functions/_pure_print_prompt_rows.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_print_prompt_rows.fish rename to configs/fish/functions/_pure_print_prompt_rows.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt.fish b/configs/fish/functions/_pure_prompt.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt.fish rename to configs/fish/functions/_pure_prompt.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_aws_profile.fish b/configs/fish/functions/_pure_prompt_aws_profile.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_aws_profile.fish rename to configs/fish/functions/_pure_prompt_aws_profile.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_beginning.fish b/configs/fish/functions/_pure_prompt_beginning.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_beginning.fish rename to configs/fish/functions/_pure_prompt_beginning.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_command_duration.fish b/configs/fish/functions/_pure_prompt_command_duration.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_command_duration.fish rename to configs/fish/functions/_pure_prompt_command_duration.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_container.fish b/configs/fish/functions/_pure_prompt_container.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_container.fish rename to configs/fish/functions/_pure_prompt_container.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_current_folder.fish b/configs/fish/functions/_pure_prompt_current_folder.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_current_folder.fish rename to configs/fish/functions/_pure_prompt_current_folder.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_ending.fish b/configs/fish/functions/_pure_prompt_ending.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_ending.fish rename to configs/fish/functions/_pure_prompt_ending.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_first_line.fish b/configs/fish/functions/_pure_prompt_first_line.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_first_line.fish rename to configs/fish/functions/_pure_prompt_first_line.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git.fish b/configs/fish/functions/_pure_prompt_git.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_git.fish rename to configs/fish/functions/_pure_prompt_git.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git_branch.fish b/configs/fish/functions/_pure_prompt_git_branch.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_git_branch.fish rename to configs/fish/functions/_pure_prompt_git_branch.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git_dirty.fish b/configs/fish/functions/_pure_prompt_git_dirty.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_git_dirty.fish rename to configs/fish/functions/_pure_prompt_git_dirty.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish b/configs/fish/functions/_pure_prompt_git_pending_commits.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_git_pending_commits.fish rename to configs/fish/functions/_pure_prompt_git_pending_commits.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_git_stash.fish b/configs/fish/functions/_pure_prompt_git_stash.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_git_stash.fish rename to configs/fish/functions/_pure_prompt_git_stash.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_jobs.fish b/configs/fish/functions/_pure_prompt_jobs.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_jobs.fish rename to configs/fish/functions/_pure_prompt_jobs.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_k8s.fish b/configs/fish/functions/_pure_prompt_k8s.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_k8s.fish rename to configs/fish/functions/_pure_prompt_k8s.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_new_line.fish b/configs/fish/functions/_pure_prompt_new_line.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_new_line.fish rename to configs/fish/functions/_pure_prompt_new_line.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_nixdevshell.fish b/configs/fish/functions/_pure_prompt_nixdevshell.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_nixdevshell.fish rename to configs/fish/functions/_pure_prompt_nixdevshell.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_ssh.fish b/configs/fish/functions/_pure_prompt_ssh.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_ssh.fish rename to configs/fish/functions/_pure_prompt_ssh.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_symbol.fish b/configs/fish/functions/_pure_prompt_symbol.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_symbol.fish rename to configs/fish/functions/_pure_prompt_symbol.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_system_time.fish b/configs/fish/functions/_pure_prompt_system_time.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_system_time.fish rename to configs/fish/functions/_pure_prompt_system_time.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_vimode.fish b/configs/fish/functions/_pure_prompt_vimode.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_vimode.fish rename to configs/fish/functions/_pure_prompt_vimode.fish diff --git a/Configs/fish/.config/fish/functions/_pure_prompt_virtualenv.fish b/configs/fish/functions/_pure_prompt_virtualenv.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_prompt_virtualenv.fish rename to configs/fish/functions/_pure_prompt_virtualenv.fish diff --git a/Configs/fish/.config/fish/functions/_pure_set_color.fish b/configs/fish/functions/_pure_set_color.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_set_color.fish rename to configs/fish/functions/_pure_set_color.fish diff --git a/Configs/fish/.config/fish/functions/_pure_set_default.fish b/configs/fish/functions/_pure_set_default.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_set_default.fish rename to configs/fish/functions/_pure_set_default.fish diff --git a/Configs/fish/.config/fish/functions/_pure_string_width.fish b/configs/fish/functions/_pure_string_width.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_string_width.fish rename to configs/fish/functions/_pure_string_width.fish diff --git a/Configs/fish/.config/fish/functions/_pure_user_at_host.fish b/configs/fish/functions/_pure_user_at_host.fish similarity index 100% rename from Configs/fish/.config/fish/functions/_pure_user_at_host.fish rename to configs/fish/functions/_pure_user_at_host.fish diff --git a/Configs/fish/.config/fish/functions/aliases.fish b/configs/fish/functions/aliases.fish similarity index 100% rename from Configs/fish/.config/fish/functions/aliases.fish rename to configs/fish/functions/aliases.fish diff --git a/Configs/fish/.config/fish/functions/curl.fish b/configs/fish/functions/curl.fish similarity index 100% rename from Configs/fish/.config/fish/functions/curl.fish rename to configs/fish/functions/curl.fish diff --git a/Configs/fish/.config/fish/functions/fish_greeting.fish b/configs/fish/functions/fish_greeting.fish similarity index 100% rename from Configs/fish/.config/fish/functions/fish_greeting.fish rename to configs/fish/functions/fish_greeting.fish diff --git a/Configs/fish/.config/fish/functions/fish_mode_prompt.fish b/configs/fish/functions/fish_mode_prompt.fish similarity index 100% rename from Configs/fish/.config/fish/functions/fish_mode_prompt.fish rename to configs/fish/functions/fish_mode_prompt.fish diff --git a/Configs/fish/.config/fish/functions/fish_prompt.fish b/configs/fish/functions/fish_prompt.fish similarity index 100% rename from Configs/fish/.config/fish/functions/fish_prompt.fish rename to configs/fish/functions/fish_prompt.fish diff --git a/Configs/fish/.config/fish/functions/fish_title.fish b/configs/fish/functions/fish_title.fish similarity index 100% rename from Configs/fish/.config/fish/functions/fish_title.fish rename to configs/fish/functions/fish_title.fish diff --git a/Configs/fish/.config/fish/functions/fisher.fish b/configs/fish/functions/fisher.fish similarity index 100% rename from Configs/fish/.config/fish/functions/fisher.fish rename to configs/fish/functions/fisher.fish diff --git a/Configs/fish/.config/fish/functions/split_run.fish b/configs/fish/functions/split_run.fish similarity index 100% rename from Configs/fish/.config/fish/functions/split_run.fish rename to configs/fish/functions/split_run.fish diff --git a/Configs/fish/.config/fish/functions/yy.fish b/configs/fish/functions/yy.fish similarity index 100% rename from Configs/fish/.config/fish/functions/yy.fish rename to configs/fish/functions/yy.fish diff --git a/Configs/fish/.config/fish/themes/Catppuccin Frappe.theme b/configs/fish/themes/Catppuccin Frappe.theme similarity index 100% rename from Configs/fish/.config/fish/themes/Catppuccin Frappe.theme rename to configs/fish/themes/Catppuccin Frappe.theme diff --git a/Configs/fish/.config/fish/themes/Catppuccin Latte.theme b/configs/fish/themes/Catppuccin Latte.theme similarity index 100% rename from Configs/fish/.config/fish/themes/Catppuccin Latte.theme rename to configs/fish/themes/Catppuccin Latte.theme diff --git a/Configs/fish/.config/fish/themes/Catppuccin Macchiato.theme b/configs/fish/themes/Catppuccin Macchiato.theme similarity index 100% rename from Configs/fish/.config/fish/themes/Catppuccin Macchiato.theme rename to configs/fish/themes/Catppuccin Macchiato.theme diff --git a/Configs/fish/.config/fish/themes/Catppuccin Mocha.theme b/configs/fish/themes/Catppuccin Mocha.theme similarity index 100% rename from Configs/fish/.config/fish/themes/Catppuccin Mocha.theme rename to configs/fish/themes/Catppuccin Mocha.theme diff --git a/Configs/fzf/.config/fzf/forgitrc b/configs/fzf/forgitrc similarity index 100% rename from Configs/fzf/.config/fzf/forgitrc rename to configs/fzf/forgitrc diff --git a/Configs/fzf/.config/fzf/fzfrc b/configs/fzf/fzfrc similarity index 100% rename from Configs/fzf/.config/fzf/fzfrc rename to configs/fzf/fzfrc diff --git a/Configs/fzf/.config/fzf/widgets/alias_widget.zsh b/configs/fzf/widgets/alias_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/alias_widget.zsh rename to configs/fzf/widgets/alias_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/atuin-history_widget.zsh b/configs/fzf/widgets/atuin-history_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/atuin-history_widget.zsh rename to configs/fzf/widgets/atuin-history_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/cd-recent-dir_widget.zsh b/configs/fzf/widgets/cd-recent-dir_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/cd-recent-dir_widget.zsh rename to configs/fzf/widgets/cd-recent-dir_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/cd_widget.zsh b/configs/fzf/widgets/cd_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/cd_widget.zsh rename to configs/fzf/widgets/cd_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/dictionary_widget.zsh b/configs/fzf/widgets/dictionary_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/dictionary_widget.zsh rename to configs/fzf/widgets/dictionary_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/fzf-rg-launcher.zsh b/configs/fzf/widgets/fzf-rg-launcher.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/fzf-rg-launcher.zsh rename to configs/fzf/widgets/fzf-rg-launcher.zsh diff --git a/Configs/fzf/.config/fzf/widgets/locate_widget.zsh b/configs/fzf/widgets/locate_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/locate_widget.zsh rename to configs/fzf/widgets/locate_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/man_widget.zsh b/configs/fzf/widgets/man_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/man_widget.zsh rename to configs/fzf/widgets/man_widget.zsh diff --git a/Configs/ghostty/.config/ghostty/config b/configs/ghostty/config similarity index 100% rename from Configs/ghostty/.config/ghostty/config rename to configs/ghostty/config diff --git a/Configs/git/.config/git/config b/configs/git/config similarity index 100% rename from Configs/git/.config/git/config rename to configs/git/config diff --git a/Configs/git/.config/git/ignore b/configs/git/ignore similarity index 100% rename from Configs/git/.config/git/ignore rename to configs/git/ignore diff --git a/configs/hypr/almighty/hyprland.conf b/configs/hypr/almighty/hyprland.conf new file mode 100644 index 0000000..fa8857d --- /dev/null +++ b/configs/hypr/almighty/hyprland.conf @@ -0,0 +1,9 @@ +monitorv2 { + output = desc:GWD ARZOPA 000000000000 + mode = 1920x1080@60, transform + position = auto + scale = 1 + transform = 3 # rotate 180° + supports_wide_color = true + supports_hdr = true +} diff --git a/Configs/hypr/.config/hypr/executable_gdm-wrapper.sh b/configs/hypr/base/executable_gdm-wrapper.sh similarity index 100% rename from Configs/hypr/.config/hypr/executable_gdm-wrapper.sh rename to configs/hypr/base/executable_gdm-wrapper.sh diff --git a/Configs/hypr/.config/hypr/hypridle.conf b/configs/hypr/base/hypridle.conf similarity index 100% rename from Configs/hypr/.config/hypr/hypridle.conf rename to configs/hypr/base/hypridle.conf diff --git a/Configs/hypr/.config/hypr/base.conf b/configs/hypr/base/hyprland.conf similarity index 98% rename from Configs/hypr/.config/hypr/base.conf rename to configs/hypr/base/hyprland.conf index 1d8edb7..51fe3f4 100644 --- a/Configs/hypr/.config/hypr/base.conf +++ b/configs/hypr/base/hyprland.conf @@ -26,18 +26,10 @@ exec-once = swaync --skip-system-css # Source a file (multi-file configs) source = ~/.config/hypr/theme.conf +source = ~/.config/hypr/include/*.conf # ── Monitors ────────────────────────────────────────────────────────── monitor = , preferred, auto, 1 -monitorv2 { - output = desc:GWD ARZOPA 000000000000 - mode = 1920x1080@60, transform - position = auto - scale = 1 - transform = 3 # rotate 180° - supports_wide_color = true - supports_hdr = true -} monitor = WAYLAND-1, disable # hack for when running manually # Workaround for wrong wpaperd texture on vertical screen diff --git a/Configs/hypr/.config/hypr/hyprlock.conf b/configs/hypr/base/hyprlock.conf similarity index 100% rename from Configs/hypr/.config/hypr/hyprlock.conf rename to configs/hypr/base/hyprlock.conf diff --git a/Configs/hypr/.config/hypr/hyprpaper.conf b/configs/hypr/base/hyprpaper.conf similarity index 100% rename from Configs/hypr/.config/hypr/hyprpaper.conf rename to configs/hypr/base/hyprpaper.conf diff --git a/Configs/foot/.config/foot/themes/catppuccin/assets/empty_dot_gitkeep b/configs/hypr/base/include/.gitkeep similarity index 100% rename from Configs/foot/.config/foot/themes/catppuccin/assets/empty_dot_gitkeep rename to configs/hypr/base/include/.gitkeep diff --git a/Configs/hypr/.config/hypr/theme.conf b/configs/hypr/base/theme.conf similarity index 100% rename from Configs/hypr/.config/hypr/theme.conf rename to configs/hypr/base/theme.conf diff --git a/configs/hypr/work-laptop/hyprland.conf b/configs/hypr/work-laptop/hyprland.conf new file mode 100644 index 0000000..1317ebf --- /dev/null +++ b/configs/hypr/work-laptop/hyprland.conf @@ -0,0 +1,8 @@ +monitorv2 { + output = HDMI-A-1 + mode = 3440x1440@49.99Hz + position = auto + scale = 1 + supports_wide_color = true + supports_hdr = true +} diff --git a/Configs/jetbrains/.config/ideavim/ideavimrc b/configs/jetbrains/ideavimrc similarity index 100% rename from Configs/jetbrains/.config/ideavim/ideavimrc rename to configs/jetbrains/ideavimrc diff --git a/Configs/kitty/.config/kitty/current-theme.conf b/configs/kitty/current-theme.conf similarity index 100% rename from Configs/kitty/.config/kitty/current-theme.conf rename to configs/kitty/current-theme.conf diff --git a/Configs/kitty/.config/kitty/kitty.conf b/configs/kitty/kitty.conf similarity index 100% rename from Configs/kitty/.config/kitty/kitty.conf rename to configs/kitty/kitty.conf diff --git a/Configs/kitty/.config/kitty/private_kitty.conf.bak b/configs/kitty/private_kitty.conf.bak similarity index 100% rename from Configs/kitty/.config/kitty/private_kitty.conf.bak rename to configs/kitty/private_kitty.conf.bak diff --git a/Configs/lazygit/.config/lazygit/config.yml b/configs/lazygit/config.yml similarity index 100% rename from Configs/lazygit/.config/lazygit/config.yml rename to configs/lazygit/config.yml diff --git a/Configs/mako/.config/mako/config b/configs/mako/config similarity index 100% rename from Configs/mako/.config/mako/config rename to configs/mako/config diff --git a/Configs/mise/.config/mise/config.toml b/configs/mise/config.toml similarity index 100% rename from Configs/mise/.config/mise/config.toml rename to configs/mise/config.toml diff --git a/Configs/mise/.config/mise/mise.lock b/configs/mise/mise.lock similarity index 100% rename from Configs/mise/.config/mise/mise.lock rename to configs/mise/mise.lock diff --git a/Configs/mpv/.config/mpv/encoding.rst b/configs/mpv/encoding.rst similarity index 100% rename from Configs/mpv/.config/mpv/encoding.rst rename to configs/mpv/encoding.rst diff --git a/Configs/mpv/.config/mpv/input.conf b/configs/mpv/input.conf similarity index 100% rename from Configs/mpv/.config/mpv/input.conf rename to configs/mpv/input.conf diff --git a/Configs/mpv/.config/mpv/mplayer-input.conf b/configs/mpv/mplayer-input.conf similarity index 100% rename from Configs/mpv/.config/mpv/mplayer-input.conf rename to configs/mpv/mplayer-input.conf diff --git a/Configs/mpv/.config/mpv/mpv.conf b/configs/mpv/mpv.conf similarity index 100% rename from Configs/mpv/.config/mpv/mpv.conf rename to configs/mpv/mpv.conf diff --git a/Configs/mpv/.config/mpv/restore-old-bindings.conf b/configs/mpv/restore-old-bindings.conf similarity index 100% rename from Configs/mpv/.config/mpv/restore-old-bindings.conf rename to configs/mpv/restore-old-bindings.conf diff --git a/Configs/mpv/.config/mpv/script-opts/mpv_thumbnail_script.conf b/configs/mpv/script-opts/mpv_thumbnail_script.conf similarity index 100% rename from Configs/mpv/.config/mpv/script-opts/mpv_thumbnail_script.conf rename to configs/mpv/script-opts/mpv_thumbnail_script.conf diff --git a/Configs/mpv/.config/mpv/scripts/mpv-i3-floating-centered.lua b/configs/mpv/scripts/mpv-i3-floating-centered.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv-i3-floating-centered.lua rename to configs/mpv/scripts/mpv-i3-floating-centered.lua diff --git a/Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_client_osc.lua b/configs/mpv/scripts/mpv_thumbnail_script_client_osc.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_client_osc.lua rename to configs/mpv/scripts/mpv_thumbnail_script_client_osc.lua diff --git a/Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua b/configs/mpv/scripts/mpv_thumbnail_script_server-1.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua rename to configs/mpv/scripts/mpv_thumbnail_script_server-1.lua diff --git a/Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server-2.lua b/configs/mpv/scripts/mpv_thumbnail_script_server-2.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server-2.lua rename to configs/mpv/scripts/mpv_thumbnail_script_server-2.lua diff --git a/Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server.lua b/configs/mpv/scripts/mpv_thumbnail_script_server.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server.lua rename to configs/mpv/scripts/mpv_thumbnail_script_server.lua diff --git a/Configs/mpv/.config/mpv/scripts/pause-indicator.lua b/configs/mpv/scripts/pause-indicator.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/pause-indicator.lua rename to configs/mpv/scripts/pause-indicator.lua diff --git a/Configs/mpv/.config/mpv/tech-overview.txt b/configs/mpv/tech-overview.txt similarity index 100% rename from Configs/mpv/.config/mpv/tech-overview.txt rename to configs/mpv/tech-overview.txt diff --git a/Configs/nvim/.config/nvim/after/ftplugin/rust.lua b/configs/nvim/after/ftplugin/rust.lua similarity index 100% rename from Configs/nvim/.config/nvim/after/ftplugin/rust.lua rename to configs/nvim/after/ftplugin/rust.lua diff --git a/Configs/nvim/.config/nvim/init.lua b/configs/nvim/init.lua similarity index 100% rename from Configs/nvim/.config/nvim/init.lua rename to configs/nvim/init.lua diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/configs/nvim/lazy-lock.json similarity index 100% rename from Configs/nvim/.config/nvim/lazy-lock.json rename to configs/nvim/lazy-lock.json diff --git a/Configs/nvim/.config/nvim/lua/aleidk/autocmds.lua b/configs/nvim/lua/aleidk/autocmds.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/autocmds.lua rename to configs/nvim/lua/aleidk/autocmds.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/constants.lua b/configs/nvim/lua/aleidk/constants.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/constants.lua rename to configs/nvim/lua/aleidk/constants.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua b/configs/nvim/lua/aleidk/keymaps.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua rename to configs/nvim/lua/aleidk/keymaps.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/options.lua rename to configs/nvim/lua/aleidk/options.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/bookmarks.lua b/configs/nvim/lua/aleidk/plugins/bookmarks.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/bookmarks.lua rename to configs/nvim/lua/aleidk/plugins/bookmarks.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/colorscheme.lua b/configs/nvim/lua/aleidk/plugins/colorscheme.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/colorscheme.lua rename to configs/nvim/lua/aleidk/plugins/colorscheme.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/comments.lua b/configs/nvim/lua/aleidk/plugins/comments.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/comments.lua rename to configs/nvim/lua/aleidk/plugins/comments.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua b/configs/nvim/lua/aleidk/plugins/completion.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/completion.lua rename to configs/nvim/lua/aleidk/plugins/completion.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua b/configs/nvim/lua/aleidk/plugins/debug.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/debug.lua rename to configs/nvim/lua/aleidk/plugins/debug.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua b/configs/nvim/lua/aleidk/plugins/file-explorer.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/file-explorer.lua rename to configs/nvim/lua/aleidk/plugins/file-explorer.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/formatter.lua b/configs/nvim/lua/aleidk/plugins/formatter.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/formatter.lua rename to configs/nvim/lua/aleidk/plugins/formatter.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/fzf.lua b/configs/nvim/lua/aleidk/plugins/fzf.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/fzf.lua rename to configs/nvim/lua/aleidk/plugins/fzf.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua b/configs/nvim/lua/aleidk/plugins/init.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/init.lua rename to configs/nvim/lua/aleidk/plugins/init.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/language-support.lua b/configs/nvim/lua/aleidk/plugins/language-support.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/language-support.lua rename to configs/nvim/lua/aleidk/plugins/language-support.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/linters.lua b/configs/nvim/lua/aleidk/plugins/linters.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/linters.lua rename to configs/nvim/lua/aleidk/plugins/linters.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/markdown.lua b/configs/nvim/lua/aleidk/plugins/markdown.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/markdown.lua rename to configs/nvim/lua/aleidk/plugins/markdown.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua b/configs/nvim/lua/aleidk/plugins/mini.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/mini.lua rename to configs/nvim/lua/aleidk/plugins/mini.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua b/configs/nvim/lua/aleidk/plugins/remote-dev.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/remote-dev.lua rename to configs/nvim/lua/aleidk/plugins/remote-dev.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/smart-splits.lua b/configs/nvim/lua/aleidk/plugins/smart-splits.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/smart-splits.lua rename to configs/nvim/lua/aleidk/plugins/smart-splits.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua b/configs/nvim/lua/aleidk/plugins/training.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/training.lua rename to configs/nvim/lua/aleidk/plugins/training.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua b/configs/nvim/lua/aleidk/plugins/treesitter.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/treesitter.lua rename to configs/nvim/lua/aleidk/plugins/treesitter.lua diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins/trouble.lua b/configs/nvim/lua/aleidk/plugins/trouble.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins/trouble.lua rename to configs/nvim/lua/aleidk/plugins/trouble.lua diff --git a/Configs/nvim/.config/nvim/snippets/global.json b/configs/nvim/snippets/global.json similarity index 100% rename from Configs/nvim/.config/nvim/snippets/global.json rename to configs/nvim/snippets/global.json diff --git a/Configs/rofi/.config/rofi/config.rasi b/configs/rofi/config.rasi similarity index 100% rename from Configs/rofi/.config/rofi/config.rasi rename to configs/rofi/config.rasi diff --git a/Configs/rofi/.config/rofi/theme.rasi b/configs/rofi/theme.rasi similarity index 100% rename from Configs/rofi/.config/rofi/theme.rasi rename to configs/rofi/theme.rasi diff --git a/Configs/sesh/.config/sesh/sesh.toml b/configs/sesh/sesh.toml similarity index 100% rename from Configs/sesh/.config/sesh/sesh.toml rename to configs/sesh/sesh.toml diff --git a/Configs/starship/.config/starship.toml b/configs/starship/starship.toml similarity index 100% rename from Configs/starship/.config/starship.toml rename to configs/starship/starship.toml diff --git a/Configs/swappy/.config/swappy/config b/configs/swappy/config similarity index 100% rename from Configs/swappy/.config/swappy/config rename to configs/swappy/config diff --git a/Configs/swaync/.config/swaync/config.json b/configs/swaync/config.json similarity index 100% rename from Configs/swaync/.config/swaync/config.json rename to configs/swaync/config.json diff --git a/Configs/swaync/.config/swaync/style.css b/configs/swaync/style.css similarity index 100% rename from Configs/swaync/.config/swaync/style.css rename to configs/swaync/style.css diff --git a/Configs/tmux/.config/tmux.conf b/configs/tmux/tmux.conf similarity index 100% rename from Configs/tmux/.config/tmux.conf rename to configs/tmux/tmux.conf diff --git a/Configs/uwsm/.config/uwsm/env b/configs/uwsm/env similarity index 100% rename from Configs/uwsm/.config/uwsm/env rename to configs/uwsm/env diff --git a/Configs/vimiv/.config/vimiv/keys.conf b/configs/vimiv/keys.conf similarity index 100% rename from Configs/vimiv/.config/vimiv/keys.conf rename to configs/vimiv/keys.conf diff --git a/Configs/vimiv/.config/vimiv/styles/default b/configs/vimiv/styles/default similarity index 100% rename from Configs/vimiv/.config/vimiv/styles/default rename to configs/vimiv/styles/default diff --git a/Configs/vimiv/.config/vimiv/styles/material-darker b/configs/vimiv/styles/material-darker similarity index 100% rename from Configs/vimiv/.config/vimiv/styles/material-darker rename to configs/vimiv/styles/material-darker diff --git a/Configs/vimiv/.config/vimiv/vimiv.conf b/configs/vimiv/vimiv.conf similarity index 100% rename from Configs/vimiv/.config/vimiv/vimiv.conf rename to configs/vimiv/vimiv.conf diff --git a/Configs/waybar/.config/waybar/config.jsonc b/configs/waybar/config.jsonc similarity index 100% rename from Configs/waybar/.config/waybar/config.jsonc rename to configs/waybar/config.jsonc diff --git a/Configs/waybar/.config/waybar/style-bkp.css b/configs/waybar/style-bkp.css similarity index 100% rename from Configs/waybar/.config/waybar/style-bkp.css rename to configs/waybar/style-bkp.css diff --git a/Configs/waybar/.config/waybar/style.css b/configs/waybar/style.css similarity index 100% rename from Configs/waybar/.config/waybar/style.css rename to configs/waybar/style.css diff --git a/Configs/waybar/.config/waybar/sway-bar.sh b/configs/waybar/sway-bar.sh similarity index 100% rename from Configs/waybar/.config/waybar/sway-bar.sh rename to configs/waybar/sway-bar.sh diff --git a/Configs/waybar/.config/waybar/themes/catppuccin-macchiato.css b/configs/waybar/themes/catppuccin-macchiato.css similarity index 100% rename from Configs/waybar/.config/waybar/themes/catppuccin-macchiato.css rename to configs/waybar/themes/catppuccin-macchiato.css diff --git a/Configs/wezterm/.config/wezterm/wezterm.lua b/configs/wezterm/wezterm.lua similarity index 100% rename from Configs/wezterm/.config/wezterm/wezterm.lua rename to configs/wezterm/wezterm.lua diff --git a/Configs/wlogout/.config/wlogout/icons/hibernate.svg b/configs/wlogout/icons/hibernate.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/hibernate.svg rename to configs/wlogout/icons/hibernate.svg diff --git a/Configs/wlogout/.config/wlogout/icons/lock.svg b/configs/wlogout/icons/lock.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/lock.svg rename to configs/wlogout/icons/lock.svg diff --git a/Configs/wlogout/.config/wlogout/icons/logout.svg b/configs/wlogout/icons/logout.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/logout.svg rename to configs/wlogout/icons/logout.svg diff --git a/Configs/wlogout/.config/wlogout/icons/reboot.svg b/configs/wlogout/icons/reboot.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/reboot.svg rename to configs/wlogout/icons/reboot.svg diff --git a/Configs/wlogout/.config/wlogout/icons/shutdown.svg b/configs/wlogout/icons/shutdown.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/shutdown.svg rename to configs/wlogout/icons/shutdown.svg diff --git a/Configs/wlogout/.config/wlogout/icons/suspend.svg b/configs/wlogout/icons/suspend.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/suspend.svg rename to configs/wlogout/icons/suspend.svg diff --git a/Configs/wlogout/.config/wlogout/layout b/configs/wlogout/layout similarity index 100% rename from Configs/wlogout/.config/wlogout/layout rename to configs/wlogout/layout diff --git a/Configs/wlogout/.config/wlogout/style.css b/configs/wlogout/style.css similarity index 100% rename from Configs/wlogout/.config/wlogout/style.css rename to configs/wlogout/style.css diff --git a/Configs/wpaperd/.config/wpaperd/config.toml b/configs/wpaperd/config.toml similarity index 100% rename from Configs/wpaperd/.config/wpaperd/config.toml rename to configs/wpaperd/config.toml diff --git a/Configs/yazi/.config/yazi/init.lua b/configs/yazi/init.lua similarity index 100% rename from Configs/yazi/.config/yazi/init.lua rename to configs/yazi/init.lua diff --git a/Configs/yazi/.config/yazi/keymap.toml b/configs/yazi/keymap.toml similarity index 100% rename from Configs/yazi/.config/yazi/keymap.toml rename to configs/yazi/keymap.toml diff --git a/Configs/yazi/.config/yazi/package.toml b/configs/yazi/package.toml similarity index 100% rename from Configs/yazi/.config/yazi/package.toml rename to configs/yazi/package.toml diff --git a/Configs/yazi/.config/yazi/plugins/.keep b/configs/yazi/plugins/.keep similarity index 100% rename from Configs/yazi/.config/yazi/plugins/.keep rename to configs/yazi/plugins/.keep diff --git a/Configs/yazi/.config/yazi/theme.toml b/configs/yazi/theme.toml similarity index 100% rename from Configs/yazi/.config/yazi/theme.toml rename to configs/yazi/theme.toml diff --git a/Configs/yazi/.config/yazi/yazi.toml b/configs/yazi/yazi.toml similarity index 100% rename from Configs/yazi/.config/yazi/yazi.toml rename to configs/yazi/yazi.toml diff --git a/Configs/zellij/.config/zellij/config.kdl b/configs/zellij/config.kdl similarity index 100% rename from Configs/zellij/.config/zellij/config.kdl rename to configs/zellij/config.kdl diff --git a/Configs/zellij/.config/zellij/layouts/code.kdl b/configs/zellij/layouts/code.kdl similarity index 100% rename from Configs/zellij/.config/zellij/layouts/code.kdl rename to configs/zellij/layouts/code.kdl diff --git a/Configs/zsh/.config/zsh/aliases/aliases.zsh b/configs/zsh/.config/zsh/aliases/aliases.zsh similarity index 100% rename from Configs/zsh/.config/zsh/aliases/aliases.zsh rename to configs/zsh/.config/zsh/aliases/aliases.zsh diff --git a/Configs/zsh/.config/zsh/aliases/configs.zsh b/configs/zsh/.config/zsh/aliases/configs.zsh similarity index 100% rename from Configs/zsh/.config/zsh/aliases/configs.zsh rename to configs/zsh/.config/zsh/aliases/configs.zsh diff --git a/Configs/zsh/.config/zsh/aliases/fzf.zsh b/configs/zsh/.config/zsh/aliases/fzf.zsh similarity index 100% rename from Configs/zsh/.config/zsh/aliases/fzf.zsh rename to configs/zsh/.config/zsh/aliases/fzf.zsh diff --git a/Configs/zsh/.config/zsh/aliases/nvim.zsh b/configs/zsh/.config/zsh/aliases/nvim.zsh similarity index 100% rename from Configs/zsh/.config/zsh/aliases/nvim.zsh rename to configs/zsh/.config/zsh/aliases/nvim.zsh diff --git a/Configs/zsh/.config/zsh/aliases/pnpm.zsh b/configs/zsh/.config/zsh/aliases/pnpm.zsh similarity index 100% rename from Configs/zsh/.config/zsh/aliases/pnpm.zsh rename to configs/zsh/.config/zsh/aliases/pnpm.zsh diff --git a/Configs/zsh/.config/zsh/completion.zsh b/configs/zsh/.config/zsh/completion.zsh similarity index 100% rename from Configs/zsh/.config/zsh/completion.zsh rename to configs/zsh/.config/zsh/completion.zsh diff --git a/Configs/zsh/.config/zsh/completions/_alacritty b/configs/zsh/.config/zsh/completions/_alacritty similarity index 100% rename from Configs/zsh/.config/zsh/completions/_alacritty rename to configs/zsh/.config/zsh/completions/_alacritty diff --git a/Configs/zsh/.config/zsh/completions/_cargo b/configs/zsh/.config/zsh/completions/_cargo similarity index 100% rename from Configs/zsh/.config/zsh/completions/_cargo rename to configs/zsh/.config/zsh/completions/_cargo diff --git a/Configs/zsh/.config/zsh/completions/_chezmoi b/configs/zsh/.config/zsh/completions/_chezmoi similarity index 100% rename from Configs/zsh/.config/zsh/completions/_chezmoi rename to configs/zsh/.config/zsh/completions/_chezmoi diff --git a/Configs/zsh/.config/zsh/completions/_cht b/configs/zsh/.config/zsh/completions/_cht similarity index 100% rename from Configs/zsh/.config/zsh/completions/_cht rename to configs/zsh/.config/zsh/completions/_cht diff --git a/Configs/zsh/.config/zsh/completions/_globdots b/configs/zsh/.config/zsh/completions/_globdots similarity index 100% rename from Configs/zsh/.config/zsh/completions/_globdots rename to configs/zsh/.config/zsh/completions/_globdots diff --git a/Configs/zsh/.config/zsh/completions/_just b/configs/zsh/.config/zsh/completions/_just similarity index 100% rename from Configs/zsh/.config/zsh/completions/_just rename to configs/zsh/.config/zsh/completions/_just diff --git a/Configs/zsh/.config/zsh/completions/_lsd b/configs/zsh/.config/zsh/completions/_lsd similarity index 100% rename from Configs/zsh/.config/zsh/completions/_lsd rename to configs/zsh/.config/zsh/completions/_lsd diff --git a/Configs/zsh/.config/zsh/completions/_rg b/configs/zsh/.config/zsh/completions/_rg similarity index 100% rename from Configs/zsh/.config/zsh/completions/_rg rename to configs/zsh/.config/zsh/completions/_rg diff --git a/Configs/zsh/.config/zsh/completions/_rtx b/configs/zsh/.config/zsh/completions/_rtx similarity index 100% rename from Configs/zsh/.config/zsh/completions/_rtx rename to configs/zsh/.config/zsh/completions/_rtx diff --git a/Configs/zsh/.config/zsh/completions/_rye b/configs/zsh/.config/zsh/completions/_rye similarity index 100% rename from Configs/zsh/.config/zsh/completions/_rye rename to configs/zsh/.config/zsh/completions/_rye diff --git a/Configs/zsh/.config/zsh/completions/_starship b/configs/zsh/.config/zsh/completions/_starship similarity index 100% rename from Configs/zsh/.config/zsh/completions/_starship rename to configs/zsh/.config/zsh/completions/_starship diff --git a/Configs/zsh/.config/zsh/completions/_tea b/configs/zsh/.config/zsh/completions/_tea similarity index 100% rename from Configs/zsh/.config/zsh/completions/_tea rename to configs/zsh/.config/zsh/completions/_tea diff --git a/Configs/zsh/.config/zsh/completions/_tldr b/configs/zsh/.config/zsh/completions/_tldr similarity index 100% rename from Configs/zsh/.config/zsh/completions/_tldr rename to configs/zsh/.config/zsh/completions/_tldr diff --git a/Configs/zsh/.config/zsh/completions/_zellij b/configs/zsh/.config/zsh/completions/_zellij similarity index 100% rename from Configs/zsh/.config/zsh/completions/_zellij rename to configs/zsh/.config/zsh/completions/_zellij diff --git a/Configs/zsh/.config/zsh/functions/fedora.zsh b/configs/zsh/.config/zsh/functions/fedora.zsh similarity index 100% rename from Configs/zsh/.config/zsh/functions/fedora.zsh rename to configs/zsh/.config/zsh/functions/fedora.zsh diff --git a/Configs/zsh/.config/zsh/functions/flatpak.zsh b/configs/zsh/.config/zsh/functions/flatpak.zsh similarity index 100% rename from Configs/zsh/.config/zsh/functions/flatpak.zsh rename to configs/zsh/.config/zsh/functions/flatpak.zsh diff --git a/Configs/zsh/.config/zsh/functions/functions.zsh b/configs/zsh/.config/zsh/functions/functions.zsh similarity index 100% rename from Configs/zsh/.config/zsh/functions/functions.zsh rename to configs/zsh/.config/zsh/functions/functions.zsh diff --git a/Configs/zsh/.zprofile b/configs/zsh/.zprofile similarity index 100% rename from Configs/zsh/.zprofile rename to configs/zsh/.zprofile diff --git a/Configs/zsh/.zshrc b/configs/zsh/.zshrc similarity index 100% rename from Configs/zsh/.zshrc rename to configs/zsh/.zshrc From 5c10d76d0885f39d28293925462ca33115a58ea5 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 1 Sep 2025 13:11:49 -0400 Subject: [PATCH 124/152] add rbw config --- configs/hypr/base/hyprland.conf | 2 ++ configs/rofi/rbw.rasi | 13 +++++++++++++ configs/rofi/theme.rasi | 12 +++++------- configs/uwsm/env | 1 + 4 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 configs/rofi/rbw.rasi diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index 51fe3f4..8fe89fe 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -149,6 +149,8 @@ bind = $mainMod, return, exec, kitty bind = $mainMod SHIFT, q, killactive, bind = $mainMod, D, exec, $menu +bind = $mainMod, U, exec, rofi-rbw --selector-args "-config ~/.config/rofi/rbw.rasi" + # screenshot current window bind = SHIFT, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy && notify-send "Screenshot taken!" # screenshot area and edit it diff --git a/configs/rofi/rbw.rasi b/configs/rofi/rbw.rasi new file mode 100644 index 0000000..ef086e5 --- /dev/null +++ b/configs/rofi/rbw.rasi @@ -0,0 +1,13 @@ +configuration { + show-icons: true; +} + +@import "theme.rasi" + +window { + width: 50%; +} + +listview { + lines: 15; +} diff --git a/configs/rofi/theme.rasi b/configs/rofi/theme.rasi index 4e0263b..e07bb8b 100644 --- a/configs/rofi/theme.rasi +++ b/configs/rofi/theme.rasi @@ -81,7 +81,6 @@ listview { border: 0; margin: 10px 0px 0px 20px; columns: 1; - lines: 5; background-color: @bg-col; spacing: 10px; scrollbar: true; @@ -137,15 +136,14 @@ button selected { } message { + border: 0; + margin: 10px 20px 0px 20px; background-color: @surface0; - margin: 2px; - padding: 2px; - border-radius: 5px; + border-radius: @border-rad; } textbox { padding: 6px; - margin: 20px 0px 0px 20px; - text-color: @blue; - background-color: #fff; + text-color: @fg-col; + font: "JetBrainsMono Nerd Font 10"; } diff --git a/configs/uwsm/env b/configs/uwsm/env index 02a9122..d908c47 100644 --- a/configs/uwsm/env +++ b/configs/uwsm/env @@ -6,3 +6,4 @@ export QT_QPA_PLATFORMTHEME=qt5ct export MOZ_ENABLE_WAYLAND=1 export XCURSOR_SIZE=24 export GTK_THEME=catppuccin-macchiato-teal-standard+default +export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/rbw/ssh-agent-socket From 41f458954aa02332264b4eb28b1e850af8fd1306 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 2 Sep 2025 09:53:32 -0400 Subject: [PATCH 125/152] update autostart apps --- configs/hypr/base/hyprland.conf | 2 +- configs/hypr/work-laptop/hyprland.conf | 5 +++++ configs/uwsm/env | 3 +++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index 8fe89fe..293c3d2 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -145,7 +145,7 @@ $menu = rofi -show drun -run-command "uwsm app -- {cmd}" # ── Spawn ───────────────────────────────────────────────────────────── bind = $mainMod SHIFT, E, exec, uwsm stop -bind = $mainMod, return, exec, kitty +bind = $mainMod, return, exec, uwsm app -- kitty bind = $mainMod SHIFT, q, killactive, bind = $mainMod, D, exec, $menu diff --git a/configs/hypr/work-laptop/hyprland.conf b/configs/hypr/work-laptop/hyprland.conf index 1317ebf..f2186fd 100644 --- a/configs/hypr/work-laptop/hyprland.conf +++ b/configs/hypr/work-laptop/hyprland.conf @@ -1,3 +1,5 @@ +monitor = eDP-1, disable + monitorv2 { output = HDMI-A-1 mode = 3440x1440@49.99Hz @@ -6,3 +8,6 @@ monitorv2 { supports_wide_color = true supports_hdr = true } + +exec-once = [workspace 1 silent] uwsm app -a brave_work -- brave --profile-directory="Default" # work profile +exec-once = [workspace 6 silent] uwsm app -- brave -a brave_personal --profile-directory="Profile 2" # personal profile diff --git a/configs/uwsm/env b/configs/uwsm/env index d908c47..590a89c 100644 --- a/configs/uwsm/env +++ b/configs/uwsm/env @@ -7,3 +7,6 @@ export MOZ_ENABLE_WAYLAND=1 export XCURSOR_SIZE=24 export GTK_THEME=catppuccin-macchiato-teal-standard+default export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/rbw/ssh-agent-socket + +export EDITOR=nvim +export VISUAL=nvim From 7e24245690e3eefe333e2f4d715cf0560a0839d7 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 4 Sep 2025 10:46:28 -0400 Subject: [PATCH 126/152] update nvim-treesitter to main --- configs/nvim/lazy-lock.json | 8 +- configs/nvim/lua/aleidk/options.lua | 1 + .../nvim/lua/aleidk/plugins/treesitter.lua | 100 ++++++++++-------- 3 files changed, 60 insertions(+), 49 deletions(-) diff --git a/configs/nvim/lazy-lock.json b/configs/nvim/lazy-lock.json index b6b7a5a..35fbf0e 100644 --- a/configs/nvim/lazy-lock.json +++ b/configs/nvim/lazy-lock.json @@ -20,10 +20,10 @@ "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, "nvim-lspconfig": { "branch": "master", "commit": "f47cd681d7cb6048876a2e908b6d8ba1e530d152" }, - "nvim-treesitter": { "branch": "master", "commit": "8d4fdc5e47e2a4e00179e43f56221250ce365973" }, - "nvim-treesitter-context": { "branch": "master", "commit": "6b081ea63a3711243d11540ce28ccdb6f35ecd33" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, + "nvim-treesitter": { "branch": "main", "commit": "802195d8f1980db25a7a39a55f9a25df21756c73" }, + "nvim-treesitter-context": { "branch": "master", "commit": "66a9b5fa9e806918b5fe3dba00c6cce7e230abd2" }, + "nvim-treesitter-textobjects": { "branch": "main", "commit": "1b2d85d3de6114c4bcea89ffb2cd1ce9e3a19931" }, + "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, diff --git a/configs/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua index 816ac44..45a3ca3 100644 --- a/configs/nvim/lua/aleidk/options.lua +++ b/configs/nvim/lua/aleidk/options.lua @@ -163,6 +163,7 @@ vim.lsp.enable({ "bashls", "biome", "fish_lsp", + "gleam", "hyprls", "intelephense", "jsonls", diff --git a/configs/nvim/lua/aleidk/plugins/treesitter.lua b/configs/nvim/lua/aleidk/plugins/treesitter.lua index 65a0450..2a63a3d 100644 --- a/configs/nvim/lua/aleidk/plugins/treesitter.lua +++ b/configs/nvim/lua/aleidk/plugins/treesitter.lua @@ -1,50 +1,60 @@ return { - { - "nvim-treesitter/nvim-treesitter", - lazy = false, - branch = "master", - dependencies = { - { - "JoosepAlviste/nvim-ts-context-commentstring", - opts = { - enable_autocmd = false, - }, - }, - { "nvim-treesitter/nvim-treesitter-context" }, - }, - build = ":TSUpdate", - opts = { - auto_install = true, - highlight = { enable = true }, - indent = { enable = true }, - }, - }, - { - "nvim-treesitter/nvim-treesitter-textobjects", - dependencies = { "nvim-treesitter", }, - config = function() - require 'nvim-treesitter.configs'.setup({ - textobjects = { - move = { - enable = true, - set_jumps = true, -- whether to set jumps in the jumplist - goto_next = { - ["]]"] = { query = { "@block.outer", "@function.outer", "@class.outer", } }, - }, - goto_previous = { - ["[["] = { query = { "@block.outer", "@function.outer", "@class.outer", } }, - } - }, - }, - }) + { + "nvim-treesitter/nvim-treesitter", + lazy = false, + branch = "main", + dependencies = { + { + "JoosepAlviste/nvim-ts-context-commentstring", + opts = { + enable_autocmd = false, + }, + }, + { "nvim-treesitter/nvim-treesitter-context" }, + }, + build = ":TSUpdate", + opts = { + auto_install = true, + highlight = { enable = true }, + indent = { enable = true }, + }, + init = function() + -- HACK: for filetypes that doesn't start treesitter hightlight on it's own + vim.api.nvim_create_autocmd("FileType", { + pattern = { "gleam" }, + callback = function() + vim.treesitter.start() + end, + }) + end, + }, + { + "nvim-treesitter/nvim-treesitter-textobjects", + dependencies = { "nvim-treesitter" }, + branch = "main", + config = function() + local ts_obj = require("nvim-treesitter-textobjects") - local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move" + ts_obj.setup({ + move = { + set_jumps = true, + }, + }) - -- Repeat movement with ; and , - -- ensure ; goes forward and , goes backward regardless of the last direction - vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_previous) - vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_next) - end - } + vim.keymap.set({ "n", "x", "o" }, "]]", function() + ts_obj.move.goto_next({ "@block.outer", "@function.outer", "@class.outer" }, "textobjects") + end) + vim.keymap.set({ "n", "x", "o" }, "[[", function() + ts_obj.move.goto_previous({ "@block.outer", "@function.outer", "@class.outer" }, "textobjects") + end) + + local ts_repeat_move = require("nvim-treesitter-textobjects.repeatable_move") + + -- Repeat movement with ; and , + -- ensure ; goes forward and , goes backward regardless of the last direction + vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_opposite) + vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move) + end, + }, } From 85c150a1ac48f668af0a094d89c2bef2f6fcf8ea Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 5 Sep 2025 09:46:51 -0400 Subject: [PATCH 127/152] update hyprland --- .dotter/global.toml | 1 + configs/hypr/base/hyprland.conf | 3 ++- configs/nvim/lua/aleidk/keymaps.lua | 1 + .../graphical-session.target.wants/hypridle.service | 1 + configs/systemd/waybar.service.d/override.conf | 10 ++++++++++ 5 files changed, 15 insertions(+), 1 deletion(-) create mode 120000 configs/systemd/graphical-session.target.wants/hypridle.service create mode 100644 configs/systemd/waybar.service.d/override.conf diff --git a/.dotter/global.toml b/.dotter/global.toml index d1aeecc..929eb19 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -31,6 +31,7 @@ depends = [] "configs/wlogout" = "~/.config/wlogout" "configs/wpaperd" = "~/.config/wpaperd" "configs/yazi" = "~/.config/yazi" +"configs/systemd" = "~/.config/systemd" [default.variables] diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index 293c3d2..ba57a20 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -46,7 +46,7 @@ input { kb_options = caps:escape kb_rules = - follow_mouse = 2 + follow_mouse = 1 touchpad { natural_scroll = true @@ -103,6 +103,7 @@ misc { # swallow_exception_regex = "" mouse_move_focuses_monitor = false + animate_manual_resizes = false } # ── Layouts ─────────────────────────────────────────────────────────── diff --git a/configs/nvim/lua/aleidk/keymaps.lua b/configs/nvim/lua/aleidk/keymaps.lua index 5be823b..148c5f6 100644 --- a/configs/nvim/lua/aleidk/keymaps.lua +++ b/configs/nvim/lua/aleidk/keymaps.lua @@ -33,6 +33,7 @@ vim.keymap.set("n", "", "l", { desc = "Move to right window", silent = -- LSP +vim.keymap.set("n", "lr", function() vim.lsp.buf.rename() end, { desc = "Rename symbol", silent = true }) vim.keymap.set("n", "lf", vim.lsp.buf.format, { desc = "Format document with LSP", silent = true }) vim.keymap.set("n", "lj", function() vim.diagnostic.jump({ count = 1 }) end, { desc = "Go to next diagnostic", silent = true }) diff --git a/configs/systemd/graphical-session.target.wants/hypridle.service b/configs/systemd/graphical-session.target.wants/hypridle.service new file mode 120000 index 0000000..55da293 --- /dev/null +++ b/configs/systemd/graphical-session.target.wants/hypridle.service @@ -0,0 +1 @@ +/usr/lib/systemd/user/hypridle.service \ No newline at end of file diff --git a/configs/systemd/waybar.service.d/override.conf b/configs/systemd/waybar.service.d/override.conf new file mode 100644 index 0000000..d46f70a --- /dev/null +++ b/configs/systemd/waybar.service.d/override.conf @@ -0,0 +1,10 @@ +[Unit] +After=graphical-session.target +After=wayland-session@hyprland.desktop.target + +[Servie] +ExecCondition=/lib/systemd/systemd-xdg-autostart-condition "wlroots:sway:Wayfire:labwc:Hyprland" "" + +[Install] +WantedBy=graphical-session.target +WantedBy=wayland-session@hyprland.desktop.target From 9abd5dde3f232ece53cf1403d338652185b96fe9 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 5 Sep 2025 18:18:20 -0400 Subject: [PATCH 128/152] minor updates --- .dotter/almighty.toml | 7 +++++++ configs/waybar/config.jsonc | 3 +-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 .dotter/almighty.toml diff --git a/.dotter/almighty.toml b/.dotter/almighty.toml new file mode 100644 index 0000000..8ffed45 --- /dev/null +++ b/.dotter/almighty.toml @@ -0,0 +1,7 @@ +includes = [] +packages = ["default"] + +[files] +"configs/hypr/almighty/hyprland.conf" = "~/.config/hypr/include/almighty.conf" + +[variables] diff --git a/configs/waybar/config.jsonc b/configs/waybar/config.jsonc index 8198ba9..163c48e 100644 --- a/configs/waybar/config.jsonc +++ b/configs/waybar/config.jsonc @@ -19,8 +19,7 @@ "backlight", "wireplumber", "battery", - "custom/notification", - "custom/power" + "custom/notification" ], "hyprland/workspaces": { From 4458a8755e3df67b43b82d0b4d551d6cf19ee702 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 10 Sep 2025 08:31:28 -0300 Subject: [PATCH 129/152] add go tools to nvim --- configs/nvim/lua/aleidk/options.lua | 1 + configs/nvim/lua/aleidk/plugins/treesitter.lua | 2 +- configs/uwsm/env | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/configs/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua index 45a3ca3..eb0f4419 100644 --- a/configs/nvim/lua/aleidk/options.lua +++ b/configs/nvim/lua/aleidk/options.lua @@ -164,6 +164,7 @@ vim.lsp.enable({ "biome", "fish_lsp", "gleam", + "gopls", "hyprls", "intelephense", "jsonls", diff --git a/configs/nvim/lua/aleidk/plugins/treesitter.lua b/configs/nvim/lua/aleidk/plugins/treesitter.lua index 2a63a3d..caab40c 100644 --- a/configs/nvim/lua/aleidk/plugins/treesitter.lua +++ b/configs/nvim/lua/aleidk/plugins/treesitter.lua @@ -21,7 +21,7 @@ return { init = function() -- HACK: for filetypes that doesn't start treesitter hightlight on it's own vim.api.nvim_create_autocmd("FileType", { - pattern = { "gleam" }, + pattern = { "gleam", "go" }, callback = function() vim.treesitter.start() end, diff --git a/configs/uwsm/env b/configs/uwsm/env index 590a89c..d2e4a6b 100644 --- a/configs/uwsm/env +++ b/configs/uwsm/env @@ -5,7 +5,7 @@ export QT_WAYLAND_DISABLE_WINDOWDECORATION=1 export QT_QPA_PLATFORMTHEME=qt5ct export MOZ_ENABLE_WAYLAND=1 export XCURSOR_SIZE=24 -export GTK_THEME=catppuccin-macchiato-teal-standard+default +export GTK_THEME=catppuccin-macchiato-teal-standard-default export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/rbw/ssh-agent-socket export EDITOR=nvim From 158e4923323e9edcc62b413fe0acd8fef63e8ca5 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 10 Sep 2025 15:02:59 -0300 Subject: [PATCH 130/152] disable formatter for php --- configs/nvim/lua/aleidk/plugins/formatter.lua | 224 +++++++++--------- 1 file changed, 112 insertions(+), 112 deletions(-) diff --git a/configs/nvim/lua/aleidk/plugins/formatter.lua b/configs/nvim/lua/aleidk/plugins/formatter.lua index 58deae9..91b09b4 100644 --- a/configs/nvim/lua/aleidk/plugins/formatter.lua +++ b/configs/nvim/lua/aleidk/plugins/formatter.lua @@ -1,122 +1,122 @@ return { - "stevearc/conform.nvim", - event = { "BufWritePre" }, - cmd = { "ConformInfo" }, - opts = { - -- See available formatters in: https://github.com/stevearc/conform.nvim#formatters - -- Formatters can be installed by mason - formatters_by_ft = { - -- Conform will run multiple formatters sequentially - -- Use a stop_after_first = true to run only the first available formatters - -- Use the "_" filetype to run formatters on filetypes that don't - -- have other formatters configured. - ["_"] = { "trim_whitespace" }, - blade = { "blade-formatter" }, - css = { "biome" }, - go = { "gofumpt", "goimports_reviser", "golines" }, - html = { "djlint", "prettierd", stop_after_first = true }, - htmldjango = { "djlint", stop_after_first = true }, - javascript = { "biome" }, - javascriptreact = { "biome" }, - json = { "biome" }, - jsonc = { "biome" }, - lua = { "stylua" }, - markdown = { "markdownlint" }, - php = { "pint" }, - python = { "ruff_format", "ruff_organize_imports" }, - rust = { "rustfmt" }, - scss = { "biome", "prettierd", "prettier", stop_after_first = true }, - sh = { "shfmt" }, - sql = { "sleek" }, - toml = { "taplo" }, - typescript = { "biome" }, - typescriptreact = { "biome" }, - xml = { "lemminx" }, - zsh = { "shfmt" }, - }, - formatters = { - djlint = { - prepend_args = { - "--format-css", - "--indent-css", - "2", - "--format-js", - "--indent-js", - "2", - "--indent", - "2", - "--preserve-blank-lines", - "--quiet" - } - } - }, - format_on_save = function(bufnr) - -- Disable with a global or buffer-local variable - if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then - return - end + "stevearc/conform.nvim", + event = { "BufWritePre" }, + cmd = { "ConformInfo" }, + opts = { + -- See available formatters in: https://github.com/stevearc/conform.nvim#formatters + -- Formatters can be installed by mason + formatters_by_ft = { + -- Conform will run multiple formatters sequentially + -- Use a stop_after_first = true to run only the first available formatters + -- Use the "_" filetype to run formatters on filetypes that don't + -- have other formatters configured. + ["_"] = { "trim_whitespace" }, + blade = { "blade-formatter" }, + css = { "biome" }, + go = { "gofumpt", "goimports_reviser", "golines" }, + html = { "djlint", "prettierd", stop_after_first = true }, + htmldjango = { "djlint", stop_after_first = true }, + javascript = { "biome" }, + javascriptreact = { "biome" }, + json = { "biome" }, + jsonc = { "biome" }, + lua = { "stylua" }, + markdown = { "markdownlint" }, + php = { "pint" }, + python = { "ruff_format", "ruff_organize_imports" }, + rust = { "rustfmt" }, + scss = { "biome", "prettierd", "prettier", stop_after_first = true }, + sh = { "shfmt" }, + sql = { "sleek" }, + toml = { "taplo" }, + typescript = { "biome" }, + typescriptreact = { "biome" }, + xml = { "lemminx" }, + zsh = { "shfmt" }, + }, + formatters = { + djlint = { + prepend_args = { + "--format-css", + "--indent-css", + "2", + "--format-js", + "--indent-js", + "2", + "--indent", + "2", + "--preserve-blank-lines", + "--quiet", + }, + }, + }, + format_on_save = function(bufnr) + -- Disable with a global or buffer-local variable + if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then return end - return { timeout_ms = 2000, lsp_fallback = true } - end, - }, - config = function(_, opts) - require("conform").setup(opts) + return { timeout_ms = 2000, lsp_fallback = true } + end, + }, + config = function(_, opts) + require("conform").setup(opts) - local function toggleAutoFormat() - -- to make this global, change b to g - if vim.b.disable_autoformat == nil then - vim.b.disable_autoformat = true - print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) - return - end + vim.api.nvim_create_autocmd("FileType", { + pattern = { "php" }, + callback = function(bufnr) + vim.b[bufnr].disable_autoformat = true + end, + }) - vim.b.disable_autoformat = not vim.b.disable_autoformat - print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) - end + local function toggleAutoFormat() + -- to make this global, change b to g + if vim.b.disable_autoformat == nil then + vim.b.disable_autoformat = true + print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) + return + end - vim.keymap.set("n", "uf", toggleAutoFormat, { desc = "Toggle auto format", silent = true }) + vim.b.disable_autoformat = not vim.b.disable_autoformat + print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) + end - vim.api.nvim_create_user_command("Fmt", function(args) - local range = nil - if args.count ~= -1 then - local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] - range = { - start = { args.line1, 0 }, - ["end"] = { args.line2, end_line:len() }, - } - end + vim.keymap.set("n", "uf", toggleAutoFormat, { desc = "Toggle auto format", silent = true }) - local function callback(err, did_edit) - if not did_edit then - vim.notify("The file was not formatted:\n" .. tostring(err), vim.log.levels.ERROR) - return - end + vim.api.nvim_create_user_command("Fmt", function(args) + local range = nil + if args.count ~= -1 then + local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] + range = { + start = { args.line1, 0 }, + ["end"] = { args.line2, end_line:len() }, + } + end - if args.bang then - vim.cmd("w") - end - end + local function callback(err, did_edit) + if not did_edit then + vim.notify("The file was not formatted:\n" .. tostring(err), vim.log.levels.ERROR) + return + end - require("conform").format( - { - async = true, - lsp_format = "fallback", - range = range, - formatters = args.fargs - }, - callback - ) - end, { - range = true, - bang = true, - force = true, - desc = "Format the document", - nargs = '*', - -- complete = function() - -- local formatters = require('conform').formatters_by_ft - -- - -- return vim.tbl_keys(formatters) - -- end - }) - end, + if args.bang then vim.cmd("w") end + end + + require("conform").format({ + async = true, + lsp_format = "fallback", + range = range, + formatters = args.fargs, + }, callback) + end, { + range = true, + bang = true, + force = true, + desc = "Format the document", + nargs = "*", + -- complete = function() + -- local formatters = require('conform').formatters_by_ft + -- + -- return vim.tbl_keys(formatters) + -- end + }) + end, } From 98c09cc6326dddf210fb847996d539fc8ae3390d Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 12 Sep 2025 06:18:28 -0300 Subject: [PATCH 131/152] add keebs --- configs/hypr/base/hyprland.conf | 3 +++ configs/keebs/Corne Choc.vil | 1 + 2 files changed, 4 insertions(+) create mode 100644 configs/keebs/Corne Choc.vil diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index ba57a20..ec171c5 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -214,6 +214,9 @@ bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 +bind = $mainMod, Next, workspace, +1 +bind = $mainMod, Prior, workspace, -1 + bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 diff --git a/configs/keebs/Corne Choc.vil b/configs/keebs/Corne Choc.vil new file mode 100644 index 0000000..7af33e0 --- /dev/null +++ b/configs/keebs/Corne Choc.vil @@ -0,0 +1 @@ +{"version": 1, "uid": 5010774632021243529, "layout": [[["LT4(KC_TAB)", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_LCTRL"], ["KC_ESCAPE", "LGUI_T(KC_A)", "LALT_T(KC_S)", "LSFT_T(KC_D)", "LCTL_T(KC_F)", "KC_G", "KC_LALT"], ["KC_LSHIFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", -1], [-1, -1, -1, "OSM(MOD_LGUI)", "KC_SPACE", "FN_MO23", -1], ["KC_LBRACKET", "KC_P", "KC_O", "KC_I", "KC_U", "KC_Y", "KC_PGUP"], ["KC_BSPACE", "RGUI_T(KC_SCOLON)", "RALT_T(KC_L)", "RSFT_T(KC_K)", "RCTL_T(KC_J)", "KC_H", "KC_PGDOWN"], ["KC_RSHIFT", "KC_SLASH", "KC_DOT", "KC_COMMA", "KC_M", "KC_N", -1], [-1, -1, -1, "OSM(MOD_RGUI)", "KC_ENTER", "FN_MO13", -1]], [["KC_NO", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_LCTRL"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "KC_NO", "KC_LALT"], ["KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_NO", "KC_0", "KC_9", "KC_8", "KC_7", "KC_6", "KC_RCTRL"], ["KC_DELETE", "KC_NO", "KC_RIGHT", "KC_UP", "KC_DOWN", "KC_LEFT", "KC_RALT"], ["KC_TRNS", "KC_NO", "KC_END", "KC_PGUP", "KC_PGDOWN", "KC_HOME", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_EQUAL", "LSFT(KC_MINUS)", "KC_QUOTE", "KC_BSLASH", "KC_MINUS", "KC_LCTRL"], ["KC_TRNS", "LSFT(KC_COMMA)", "LSFT(KC_DOT)", "LSFT(KC_8)", "LSFT(KC_9)", "LSFT(KC_2)", "KC_LALT"], ["KC_TRNS", "LSFT(KC_EQUAL)", "LSFT(KC_1)", "LSFT(KC_QUOTE)", "LSFT(KC_BSLASH)", "RALT(KC_BSLASH)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["RALT(KC_QUOTE)", "RALT(KC_MINUS)", "KC_SLASH", "KC_RBRACKET", "LSFT(KC_RBRACKET)", "LSFT(KC_7)", "KC_RCTRL"], ["RALT(KC_RBRACKET)", "KC_BSLASH", "KC_RBRACKET", "LSFT(KC_3)", "LSFT(KC_4)", "KC_GRAVE", "KC_RALT"], ["LSFT(KC_GRAVE)", "LSFT(KC_BSLASH)", "LSFT(KC_RBRACKET)", "LSFT(KC_LBRACKET)", "LSFT(KC_EQUAL)", "LSFT(KC_6)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_NO"], ["RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI", "KC_NO", "KC_NO", "KC_NO"], ["RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_LGUI", "KC_TRNS", "KC_SPACE", -1], ["KC_F12", "KC_F11", "KC_F10", "KC_F9", "KC_F8", "KC_F7", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_RGUI", "KC_TRNS", "KC_ENTER", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_9", "KC_8", "KC_7", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_6", "KC_5", "KC_4", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_DOT", "KC_3", "KC_2", "KC_1", "KC_TRNS", -1], [-1, -1, -1, "KC_0", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]]], "encoder_layout": [[["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]]], "layout_options": 0, "macro": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "vial_protocol": 6, "via_protocol": 9, "tap_dance": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200]], "combo": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]], "key_override": [{"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}], "alt_repeat_key": [{"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}], "settings": {"1": 0, "2": 50, "3": 0, "4": 175, "5": 5, "6": 5000, "7": 200, "9": 10, "10": 20, "11": 8, "12": 10, "13": 30, "14": 10, "15": 80, "16": 8, "17": 40, "18": 0, "19": 80, "20": 5, "21": 0, "22": 0, "23": 0, "24": 0, "25": 200, "26": 0, "27": 0}} \ No newline at end of file From 7442a9a088f834cb58e8835ab98faa5bc0b9017e Mon Sep 17 00:00:00 2001 From: aleidk Date: Sat, 13 Sep 2025 17:02:52 -0300 Subject: [PATCH 132/152] minor fix --- configs/hypr/base/hyprland.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index ec171c5..cbf4a8c 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -119,6 +119,7 @@ master { windowrulev2 = float, class:org.gnome.Nautilus windowrulev2 = float, class:xdg-desktop-portal-gtk +windowrulev2 = float, class:brave title:(.+)wants to save # ╭───────────────────────────────────────────────────────────╮ # │ Workspaces rules │ From 2c4b79d431a353ccb49d60bcf8893ff569f439c1 Mon Sep 17 00:00:00 2001 From: aleidk Date: Sun, 14 Sep 2025 13:38:19 -0300 Subject: [PATCH 133/152] update keebs config --- configs/hypr/base/hyprland.conf | 6 +----- configs/keebs/Corne Choc.vil | 2 +- .../keebart_corne_choc_pro_standard_vial.uf2 | Bin 0 -> 154112 bytes configs/keebs/sofle RGB.vil | 1 + 4 files changed, 3 insertions(+), 6 deletions(-) create mode 100644 configs/keebs/keebart_corne_choc_pro_standard_vial.uf2 create mode 100644 configs/keebs/sofle RGB.vil diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index cbf4a8c..9da59cd 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -91,11 +91,7 @@ animations { animation = specialWorkspace, 1, 8, default, fade } -gestures { - workspace_swipe = true - workspace_swipe_invert = true - workspace_swipe_distance = 200 -} +gesture = 3, horizontal, workspace misc { enable_swallow = true diff --git a/configs/keebs/Corne Choc.vil b/configs/keebs/Corne Choc.vil index 7af33e0..10aefd9 100644 --- a/configs/keebs/Corne Choc.vil +++ b/configs/keebs/Corne Choc.vil @@ -1 +1 @@ -{"version": 1, "uid": 5010774632021243529, "layout": [[["LT4(KC_TAB)", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_LCTRL"], ["KC_ESCAPE", "LGUI_T(KC_A)", "LALT_T(KC_S)", "LSFT_T(KC_D)", "LCTL_T(KC_F)", "KC_G", "KC_LALT"], ["KC_LSHIFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", -1], [-1, -1, -1, "OSM(MOD_LGUI)", "KC_SPACE", "FN_MO23", -1], ["KC_LBRACKET", "KC_P", "KC_O", "KC_I", "KC_U", "KC_Y", "KC_PGUP"], ["KC_BSPACE", "RGUI_T(KC_SCOLON)", "RALT_T(KC_L)", "RSFT_T(KC_K)", "RCTL_T(KC_J)", "KC_H", "KC_PGDOWN"], ["KC_RSHIFT", "KC_SLASH", "KC_DOT", "KC_COMMA", "KC_M", "KC_N", -1], [-1, -1, -1, "OSM(MOD_RGUI)", "KC_ENTER", "FN_MO13", -1]], [["KC_NO", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_LCTRL"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "KC_NO", "KC_LALT"], ["KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_NO", "KC_0", "KC_9", "KC_8", "KC_7", "KC_6", "KC_RCTRL"], ["KC_DELETE", "KC_NO", "KC_RIGHT", "KC_UP", "KC_DOWN", "KC_LEFT", "KC_RALT"], ["KC_TRNS", "KC_NO", "KC_END", "KC_PGUP", "KC_PGDOWN", "KC_HOME", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_EQUAL", "LSFT(KC_MINUS)", "KC_QUOTE", "KC_BSLASH", "KC_MINUS", "KC_LCTRL"], ["KC_TRNS", "LSFT(KC_COMMA)", "LSFT(KC_DOT)", "LSFT(KC_8)", "LSFT(KC_9)", "LSFT(KC_2)", "KC_LALT"], ["KC_TRNS", "LSFT(KC_EQUAL)", "LSFT(KC_1)", "LSFT(KC_QUOTE)", "LSFT(KC_BSLASH)", "RALT(KC_BSLASH)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["RALT(KC_QUOTE)", "RALT(KC_MINUS)", "KC_SLASH", "KC_RBRACKET", "LSFT(KC_RBRACKET)", "LSFT(KC_7)", "KC_RCTRL"], ["RALT(KC_RBRACKET)", "KC_BSLASH", "KC_RBRACKET", "LSFT(KC_3)", "LSFT(KC_4)", "KC_GRAVE", "KC_RALT"], ["LSFT(KC_GRAVE)", "LSFT(KC_BSLASH)", "LSFT(KC_RBRACKET)", "LSFT(KC_LBRACKET)", "LSFT(KC_EQUAL)", "LSFT(KC_6)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_NO"], ["RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI", "KC_NO", "KC_NO", "KC_NO"], ["RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_LGUI", "KC_TRNS", "KC_SPACE", -1], ["KC_F12", "KC_F11", "KC_F10", "KC_F9", "KC_F8", "KC_F7", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_RGUI", "KC_TRNS", "KC_ENTER", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_9", "KC_8", "KC_7", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_6", "KC_5", "KC_4", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_DOT", "KC_3", "KC_2", "KC_1", "KC_TRNS", -1], [-1, -1, -1, "KC_0", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]]], "encoder_layout": [[["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]]], "layout_options": 0, "macro": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "vial_protocol": 6, "via_protocol": 9, "tap_dance": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200]], "combo": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]], "key_override": [{"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}], "alt_repeat_key": [{"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}], "settings": {"1": 0, "2": 50, "3": 0, "4": 175, "5": 5, "6": 5000, "7": 200, "9": 10, "10": 20, "11": 8, "12": 10, "13": 30, "14": 10, "15": 80, "16": 8, "17": 40, "18": 0, "19": 80, "20": 5, "21": 0, "22": 0, "23": 0, "24": 0, "25": 200, "26": 0, "27": 0}} \ No newline at end of file +{"version": 1, "uid": 5010774632021243529, "layout": [[["LT4(KC_TAB)", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_VOLU"], ["KC_ESCAPE", "LGUI_T(KC_A)", "LALT_T(KC_S)", "LSFT_T(KC_D)", "LCTL_T(KC_F)", "KC_G", "KC_VOLD"], ["KC_LSHIFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", -1], [-1, -1, -1, "OSM(MOD_LGUI)", "KC_SPACE", "FN_MO23", -1], ["KC_LBRACKET", "KC_P", "KC_O", "KC_I", "KC_U", "KC_Y", "KC_PGUP"], ["KC_BSPACE", "RGUI_T(KC_SCOLON)", "RALT_T(KC_L)", "RSFT_T(KC_K)", "RCTL_T(KC_J)", "KC_H", "KC_PGDOWN"], ["KC_RSHIFT", "KC_SLASH", "KC_DOT", "KC_COMMA", "KC_M", "KC_N", -1], [-1, -1, -1, "OSM(MOD_RGUI)", "KC_ENTER", "FN_MO13", -1]], [["KC_NO", "KC_NO", "KC_NO", "LSFT(KC_PSCREEN)", "KC_PSCREEN", "KC_NO", "KC_TRNS"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "QK_REPEAT_KEY", "KC_TRNS"], ["KC_TRNS", "KC_UNDO", "KC_CUT", "KC_COPY", "KC_PSTE", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_NO", "KC_NO", "KC_END", "KC_PGUP", "KC_PGDOWN", "KC_HOME", "KC__VOLUP"], ["KC_DELETE", "KC_NO", "KC_RIGHT", "KC_UP", "KC_DOWN", "KC_LEFT", "KC__VOLDOWN"], ["KC_TRNS", "KC_NO", "KC_MNXT", "KC_MPLY", "KC_MPRV", "KC_HOME", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_EQUAL", "LSFT(KC_MINUS)", "KC_QUOTE", "KC_BSLASH", "KC_MINUS", "KC_TRNS"], ["KC_TRNS", "KC_NONUS_BSLASH", "LSFT(KC_NONUS_BSLASH)", "LSFT(KC_8)", "LSFT(KC_9)", "LSFT(KC_2)", "KC_TRNS"], ["KC_TRNS", "LSFT(KC_EQUAL)", "LSFT(KC_1)", "LSFT(KC_QUOTE)", "LSFT(KC_BSLASH)", "RALT(KC_NONUS_HASH)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["RALT(KC_QUOTE)", "RALT(KC_MINUS)", "KC_SLASH", "KC_RBRACKET", "LSFT(KC_7)", "LSFT(KC_RBRACKET)", "KC_TRNS"], ["KC_TRNS", "RALT(KC_RBRACKET)", "LSFT(KC_0)", "LSFT(KC_3)", "LSFT(KC_4)", "KC_GRAVE", "KC_TRNS"], ["KC_TRNS", "LSFT(KC_SLASH)", "LSFT(KC_DOT)", "LSFT(KC_COMMA)", "LSFT(KC_5)", "LSFT(KC_6)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_NO"], ["RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI", "KC_NO", "KC_NO", "KC_NO"], ["RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_F12", "KC_F11", "KC_F10", "KC_F9", "KC_F8", "KC_F7", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", -1], [-1, -1, -1, "OSM(MOD_LALT|MOD_LGUI)", "OSM(MOD_LCTL|MOD_LGUI)", "OSM(MOD_LSFT|MOD_LGUI)", -1], ["KC_TRNS", "KC_NO", "KC_9", "KC_8", "KC_7", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_NO", "KC_6", "KC_5", "KC_4", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_DOT", "KC_3", "KC_2", "KC_1", "KC_DOT", -1], [-1, -1, -1, "KC_0", "KC_TRNS", "OSM(MOD_LGUI)", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]]], "encoder_layout": [[["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]]], "layout_options": 0, "macro": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "vial_protocol": 6, "via_protocol": 9, "tap_dance": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200]], "combo": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]], "key_override": [{"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}], "alt_repeat_key": [{"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}], "settings": {"1": 0, "2": 50, "3": 0, "4": 175, "5": 5, "6": 5000, "7": 200, "9": 10, "10": 20, "11": 8, "12": 10, "13": 30, "14": 10, "15": 80, "16": 8, "17": 40, "18": 0, "19": 80, "20": 5, "21": 0, "22": 0, "23": 0, "24": 0, "25": 200, "26": 0, "27": 0}} \ No newline at end of file diff --git a/configs/keebs/keebart_corne_choc_pro_standard_vial.uf2 b/configs/keebs/keebart_corne_choc_pro_standard_vial.uf2 new file mode 100644 index 0000000000000000000000000000000000000000..47447c154e8e4da448064a6a7ddde4ebfb80d8f3 GIT binary patch literal 154112 zcmd>nd3;;Nwg1f3E^o4(MV4eoi<8K9oH%iIvnWz~E5SqjeI0;ZgTB<gpIPE4s|1xN|)%Lcdt^U{JJW@$@Gd6gVe>;#G-i)evz%MvZNb${QvS2hB}`~80Z z+REqV&di;=c)n-OoH^&rnYGpPwBK31@lj$X?587CJd<*quNLkTh?!)7T&t|in7{*Mv9UJX2LIzan@Gnq>$25a0B7z#|mzy zEM?Z;U_gEr^6Z}iHRr^rMeU4-*|Usz0kox>n4PA z;IGpYq9R0gEwNY$`5bwxne4~kty6zY25^1!r^@*G$OjP{fx7xMo_@fON{)_}h z@t4cZf8dC2Z;0srg!BLJ@x{ADS3W>=*W-8)2fIIhUOI1k=Bv-!{&%A5!ZGrW)nTIB zhGQiEP3M>1``@qM^4zQ%MjvJPU(>>w{hv*0dGWI!{M=qs0@}&sa}pW+UBfeLX4YEW zyPe!Ab)$T4A~L;pS}HdVVITdI#^4WZ82DTo{;V~uwKliSGpV}6DL0JnEF4vNW}y588JyOlTu)q3Hb+G#RYQ8&@zf#!zoZYm41uj9FG*{P>pDpKJ@UG~o9xZG5 zvP>q{a}d#s982Evrko`?NgSj`&3r9Yq4dMYmJ_(>D8|xx(&MS2ePP6*Ci)1lIdc# zReb@nUVnw7mT+}yy@QZ?U3VSo#H`DTge5Xk(M8N_=x*oKUcc2}?6>S8eF}r4C+95D z(0AlnCkZ8`G-S5wTs9{SIdIOv*>BUkD!SPfE_FpNUimyU^1b8nJO+P-gueoR>`4Dt z+x{KVb!8GE`ai<{6}oO28K`1-sLHs0MJ?p8u%gzCs~-ykLBelNus(Ht2GL!HgVpOn zX&_<4UF;5dEty5aGVzW#1y=V*sJ9jeHG5aEL)Rrl2XSR2pI+u&AzdFzU1$0HF1lM+ zyR};5Bdw%la=5;klx2lTX-0_fmkXdULfQ$RDVPb_%keM7r*yNt6<5B9u++r@+52gv zr}`Mi5M38I-!3g7c4c^7OF;{ft6k#}_mRJ84E{<9e`Ol}ds~F)8)$EaCABb|EkOIA zKH|I zx~_K6NoF$j9`k;OKS=pPpe95=NufPL83aNiI23#GXiyJBQrs$a!&Z7SZre;ydN|PCK5l1JqCgRz1~IMTzZfR= zMlr4CpH33{1~IMSe~x>vO4a!}+ILl|{I94}lS=QzGo4~u&EJXVTqLGtd>fv>FqM7> z>55eSck#?pG0pLlQC=*j)qFR~i$Yt$5i&!QJo}u}LYaN}IO{{~|NM}wYM(PR#35`2UMAlFBSLh8FmA!eA2tSmwS>Pq4S!-r59OC9g=oDHi?DV%kN*|P zGvJvUevG*y4jGPm91S=|_(Xq__468$a|qGHNiF}KK?Uy^B>b`%H7j_ELcPOL0i8 zQMc=Rg3=g*aiL3L5~6WIUc`m$NL>Jz@ODe1$G@ewnuTagOlkQqVoXQCIE9w~B&PDn ziNSZ5Qx(#CwG&JJ*GTwl((wQOpxmQxWE|iPQbh%-|@W0>+wnEZ*-+94bIv?eTT-_-PY z6Xg#jl%3vgGOIWAT7-RR33v$~{yg#mzVp9v^eiFf_p69m){K#%j0=+%!fzQCM}`u4 zNW&kBY4~k%UAKl$#NrW=hKq7TvT3J-`^zR&|JO?RLjoG*|Ji+7UJ++wrI~2?d*YP8 zYlx+;N9rdSPi4f6-lr;4^{H$!2Q{~&uTp;A;3p9osmB$rOx{;~(f**8_s1eATZb}3 znW9hSt|#pqwEWLwZ=!1-azC-FQaH%*9V_ro*SEftq`gzt zN6e@n`(X5qQpvj5yQ6PAg}2>>w|yQv3CtzAK!|P^sF{>!hlow<#^7(6Q20X*X99CZ z8vZ)|XE9<^yZ!q0%Mw;%+e38xgRxBB9cMl5DZvY#;Be*;G%Mr%o+XeA3my=nZ-HC% z-=B!Ee#dZ>q2K;zg7Rm;-P7}@)AG;Y`iZaQUzhS`4L=|d{2vu4--UWF4r=({0=-|v zB))wTJp4nEhf{t>LWq8W^vgj^F>{o5eJIDKv}gBaSI8WYSGE52)<)B&+84+R#oZL{%O`Wm$^(HrX{)kB(TGYK52d0 zL-*AC>Q(BKY)sfbNcoTB)aG)W4$`)&99dgN*>!z-&}H3VCdnih1MJSu-`*} ziGMQ`3v({b&Y45{7t%2s!uJi304XQohX+X6s!%9$2gdt))$%t(p)~|dQFHu=}+(BiI5YYe~(yigk(XH%Lk`%fGRj*aOj|J&lfjxf25wcUea`Kx02 zFXMY7PVvrPpeNHZ655S9gdwhUlJEnONaP|9={S8SDVK#hoTPt8q$h&&i8~|gIX5Qn zz%%2ad7dS6^kMx2#LmX%5>nyL;a^G;+nltKDTnV#k^ySY;O`I^y}moVG17PcxrkZe z&(Ve`Y=&zi#Jm&wzWoY+mWE%QTp59&lgd>jt0N_3ASgs{9bOiBk-nHSFAN$R$GNdTwIwZBr8KJmvPX% zJr_5_=5i=ri2r{dH{kzA<5MF{4rlT>lL^k@7?B$e;0dR|iwi@iRpd?C*WO3W-~7HT zye}K?Q{sJZ$3HkvOG)3k^8+$!_v$DVA|NG;o&(Baqf(vs*vSOFPeBh=?WS?}Q0|bNt|W*1l4m#`v$$^6TP{o?k0+c=?-B&DTQzh^$^!2@W#7 zpOjAlZXXG9yBZ_N&*IXZSH~HTzw3PEos7f8`ehbYPWi_8rx8}7=%c(3b>)_x?9U?9 zO!+(G=g@~0c(V*;l=sB9oM+{?#zjuk*KnRm3g3&bJI{E#l2HKo&*kD@^Efz*F;wnZ zGJ8rIXDJ0|c?e@oiO5;TG5ll4|6B?G+%)_pnLmeb8<5Poa0#`6(WKOD8-uxV=iu zB`{YH<$8=hQua|OdsT%`h(?AO4=+eEUVKta=O1P-%j{uqcVn{!66@ADA7MHH)GnI@YCIuol#8Hc z$OcV2Bq?JY6Tle$pC{p;mxliqXj+sZmDrCtQR@C9W?ZZt{~~JM^Ab^!ukW{=rtMC7 zuiqBHS>5Yhq42z-7s?WSa-5ZA7y5gGpF?Lz4hw?rkRaUE$#r^H+}$b1|6f{lMp8^; zM?HGKuKRt4r)U*o8ag(|lzEITdY2IWC-Obj?0Txq!E6v;EnA1Ozm1lSJRMd5@rgsi zm+u)6pTp!%_MQ=&gb*Fa@Q>~P`4ay5Y521_HERu-8#6z&yB~d$X#!b$Nv(t{E$zTV zYUh!1ss1|HafImcRQ)fp>p@9RwbbS!p1|q3uaz&k%VikJJq90vj*Xm#ZKkq57zcLCb!?2* zPFKyy^q72^!07;Hg5K^@ve~8a(D~sF0sXp`4$=PJ-!k8!k>|P$yM$;{@`K1(Jo6lm z^Ei|qUDvu6LrXtu>RcTyBlWJryBFdew{~e((x+zmD*UQhT)zHKVd;m|Dat=;TCLg|tOuISB*Ve5KGK}wFt`o_^J}32E)ZhfDjQu`i~)*Dh^?grDv1(C-OOD;?<5 zb!UocT6(H47Rj-{)%V3He`a*x#Nog(PeaV_t|4ULNkQ1P1M)wcaq)(sM{Ig$UYPNd zfuTaXrcY+u;q)(aICb5Mnmz~fEs95GE#48##O#5XKZ|TP5mM;RAh|v-dqN2fVI1jB z%($%OHuACI$zYfBLT@s?f^ga1c?gnvOA{zCL-%)nodFbv6nATUgMwElyg zlqjvLgW3E;37hY`&0O0SA8p&xB5$)b%i5R?WijdTyi{xSwL7Pu?peurZEaX4YU^)$ zpTHXM!ut&QwXiLd@N@4U^O#8i`aAOvBBAx~YpoU}via*1Oha#t3DJjvh%#CCzLPwt z|Gtln0J89!2JVr=PA)_%9KktYj9=<{d|SISv-dGKtvVgd_qIEg zy$(`O)OyZ(T%XM^hLx~$__q-PAFyPUCbu@rJ4oBs79}}h2m}>v&=&&2Zf^PM%Aa~>VT?cERED&+2G@^0XZ38HR)mG< zEyGOe&w_2nOuh?>coiBVjmRYq4Km5%5+cbKZ%5{WBr$`Bx5ua9_ai;lt?2ciiM{^T zUQk%5^u48!?>R{Jz3?KtEX@2Tll@}UiW!H~)dX|0=Gt5*`s+5$V_9!f^PJG`|S)?DaQ0|Tl#%04F1 zuc$NojyXx_@PG;}eKn+mND{DuBar z;BYjYV>{ezPf3-Ga!exSlnrXFOGJ*Kjk710;K|{k??%X+wh*=1-MgDJTy5KCq!7JI zM07)hA(}mC^H}R(IRw4!z&zuB2DCGMu4$|M1wwQRXp4mZFktg7B?Y9}WhdM8q%9lv zL6sHyW5}=*3V)M?KZe;+{~wzdeHREG9|F2FX<(!kOCwFLY_wrA`nkxltr4@Y$;I0A zZx|1lOm6c=Qgb~vw_@^u14p`S$i|Z%>#s(8EjdviDFY?Y4zgFlJ4FmHA~T7qmU8&rc})3nlyu)A0XS z^3L8{txYID(lW2`!DVtIvy9uY(sR z2|aXvq+g#dkVb?GP!&JOdg#T8k&788V{v3+|Z@S;bqi5b3IT18y z=)642=Ar))VRVyUlg0N6JrPC+PeB&Q4CSO`$$!AV{636YjGnUin}uu6QH(8&`WO}6 z75_~{!u)sfdn1e&F}=YEpW?fAb<(34-Nx~6jQlrE!hc#C{${eN@$p6>su;F4D~jf= zngI@pbrYiJtq^@IK6_=Q&yI0b1vze=Yu4pG7y&*(yDtgbAkSrm?X?-O>}kR?-CJ7n zS^|a{ZZ<2U{nVD>)j-Cx5XIr`$G5+%Y034IvbRDiYo)K?^7W=%$5J2Jz1x`q{H}CO zsZkv2(P#13z@Au%5osXtawHkmB(>HO;J?6ou{VoPCXaz0%6wP4PSp=WfB1E+U@gY< z5xvxbujq={+{S^iDS0U&41ZXjd~D6y-AIpP_{Zvh%o6_Wj~-e7Yt)6dmg(-mU@P(s9p5XWMw1R{1#~rx@Db9 z?`7{0^X`1#4p;tY9&!P6I^GrR+Q@yKU%OAtr`^Z$s4G5$r6&~r7NR3ma(W)Yf20l5 z+vRE2E~&O<>5=w&Dy^KQN7{TR(jyjEX2X?1*4A|?+&Uk1>~+dQdY2A;nyvGa`W*8z zg*Cw^!?kwtnzZ(S^~dz*c)Qdq<)q9fbL;?hs`<47sL5aEGZUMu3{U(gyp!3x8Exvi z)O9wW9{gm7iS@k-8d>x2xVKC-tg~lM@PmtAxKbt^ccF z4Po3}&CfvV&hnzQFm`r}e&5UwW2DW1C$sdxs~V9$ysTBR>L;yDy#Ygyr9aML~tqd))eFRH)i~|N%-6F7mxIRriIJm9~awAhIX5ec3X>fLx195#|%vw z!ieCz6Ki{gXg}~4qQ4ggG4Ervk=|D`V5?)^zS$>VA)2}Zm&Kcmo)Fah9Z8kg1AEj$ z^aI?VjJ`H{KjZgoJYa7FMWv|fBx*@x3cH4J1>C!UY6JAVPW1Lyy2GZX!Zo$VN zHU|G<3IF0W{N>EXIyyp2ZOPhET4URXmW4G2Ep{T6BH{`iRtASk%<$Mc3{@B5Ph;iZ zhl4j&6I)YtKH8ZKQL_ff!ykKSzwM^#dP)zrA(uJC@sGvT{O57T4LJV6xJvW^Vyk~o zOYh+SDy<3O{|ofTxcC9A-NGA3%llH-`%~xC8WaBSsr*3d{C?`p;~WJ&cMWS+$w?(v zs%3<*s%_>RznY&=_)nMcpPq*Qk>RKPO@7i&_a>u?#C$)q*#^aaNBBzzA>}o)L)ZN( z>tCtz%CD8bfbwti^7_&j>&q1L%7WJs?qR+Ksv7taVx>nkCWrhf7uTHhp;y0yIz83> zWh~AB;VZG8kG(_UISE{k<6tX1*)xRbccCGm&@R^t>Kb?w2rB%)O;CXU2+`|>WOP*$ z>l|B>(VO8r@EZGDK;z7RVM5_QL&ASX8vcyWM}`R2T&ejbST!+iSb_DDgrAJQeFE*a zHZJ2o!CKz?v1UWgD+R*OfMzz3>Zu=K9M1?T`8;s?rkIis#T5L@Lkj*LLB;FPYheb& zJX?tF5@c8vGzs`r3B)FAW1f8I&qFePCTeHEMzjUez-r*N2oz8yY#JcEZip1mTR9M% zy%ABy234~z57GJeIKK$Z#&{G^(UXWTh84xz1o(Wk(q8~b-ZDr7Tr0Ck%?YtJL-ICi zBhv{iJ@Srxry*2CxImHP)}lw3DFPRQYz3o>> zdz_u&2P1O+q`)*n9bpxpNF-t3VS0dP(dSsd^P(?X;!oJ*g!z-M>XrOT$%)4X-nE;p^9E2ToMRA<9w%=Xj!z9AI23}1w#10$I7_{ zjtPaoUBaIQy%>@I?5?|mW|Oy@wam#FZ!==Deo39)C3ig${50}wu~iFut32(_s=lT8 zKTG_-qEBXhHF!Wh$-yms+)+;#*5$iQu5%HYg<7fOKF2FqQBqImqV%)KT->GZn`W-? zm>v6^*1kD)gp<2ojm(DMa3DAhmc`ac%qHjRsmW35X^;4A#TT8XZ$+lrWR972M(*cd zd#VjjeGRKXbn%$YUrcbH-th!I8JT7_I|$Yzo>3Tcj2sv2QF12*OCHrars9sLBR%5! zhA(0g`q#!{wsPD%q3|z}@GnWjztEv@&2~K-{4r$uyRask>=%S<;mdI;j%hf^gMvUF z5QGea~m+pbZDtn@DINCm> zkI$^QIKHB834Ge_!i;8t{a@il?mXWfc*CK%}CES~%Y%lIhSoFAF<-YUkfVHqxs+@#Yy@I8uU^TdjKIB(e1>|NQ2e%GV;r zweQ=szAIF(yjkO;@Z936G97B?xzO{GBKK-M`@c@+!AG=L`OKS<%HKu`aDT4q!kb4U zQ)e0Pm8CO zDf{Z0$t+oT8Z_3!(Tkz&U~>yI_}I7wAAi^w{AWq{&q~8zn#p%#cE#pV5czn=Fb4}f zi;d6|)O8n9=FbORZ!O_}hFWKmBlQjpLqm_!9VqRoW-ZD5{y01#f7tA0Gj{4@x$ojS z^gBqY#MDbcmTnN!au)Rya0zr^O3$hmCil`E2m!9e{`W)J= zfwdb;kIc4N%iRjOeOuh>Fz09|Z6bsQ;py|D>yApcgXo$8}cr#Kp?Xdc7iTx|0a>Hiea}*Fh0nN~>LIga# zAK$>f<2ai;;LLZ0W)cgXkzI4Cl2{ef+sG^H8cbQC`DCBth0Sl1C#p4d0rJH1>#C=t1tF4tWoCn5=x)gu;Keg#YX`{O_(-6;m^r z?sjE)di7J9i0wa2s!+&gRMt0r=Abhw9kfd3pcfUo9ONwKfLK>GkIedKcuV!ht9bN# z)}FeqDRuigZK566Yn@cvRGrDk1+VqS>O4g4`&^(lt505hr6WLc+{{xm+kM86?`7+8 z)Ue%WqE4%r(js*~=!Eb!F?fLprcPaVC!W7Qlj_)e7(FmL5NQJEMP2NE_BJoH02V^$ zH&vg-dbBn{J}Vm5)v56X2sDhSzY4Oo=#gcZ!6MGlNa;aA4H}$K_|K8>pOc1vflm!@ zisO371bj}6#c?7rgP^L%Ugy?`+_x*YQT;}Q3p2@R#9*WRN?t22p9~*p&yl2tJL+IOo!NK%UGh>Wv z>$>}pM@qEOzKJwjVZJ}a?wOARD9oVe&TxT{kDm)j@ z>$qOS?;UJx@^d{oYO1GgvSyMYxsX-J@9z`jT!$dB>XGV@Mq&b^{f;9 zA>NkSeKf6s{KVF6XF|X888B3bl_I+Lz*2~a&HZXV4{L>csu>Opv-t=t$aJx92Sl_!GsIc=AoMT-@M0rF`3R_5N zb|}-VBHwl8dxVBxI!W(R(&#e6`$h*DF_XV1$>i<@F;!7M;`QW)GA&xH@l$&`^t$F! zauD@7vdLAi?{ATND!^qj`R^welNe~`SztdPzMI7nVecmVC*oPoKMi|L1zS5heP`$Q zmQM%mB$Kitb(pl4LT``(Yt&PSMSxhfNwZJUSpnOQf~cD^$y8EARQ!J>x7cYPnUfh( z2j-HFAhCf~pmBbPQCUdEf1WfqQt+!=yCz}f<9Pm!>HqU2{O6_NpG}k<1?UEue9thG z1eItr#8qpv!)u%M+1tc())kMlI}_`$&( z>rKmbUaavI-z~2-RjMn5=-q;%lcesu2z4hE{*@B`m1+3%T{$!F?JOkR5kWtNP#dwz zc9XVTQU&w}lk%dOp$d%WS?E(njJ{ccTmsLoHd%Wau78-!+N&U$?FvNTukz_(U|+XP zPG&jm@UvF&j$}n6ygQ)#&)UoCe26+boNtHWZ_tssH>nb+lNymq73K`0C1ke{-JP^MUJc6eJcG9%W59&Mf4+qO z{51So|Cxn;V8?-VUo)~jJ3Ea{ShZP+Xnq!A&T!L*Wx!#ppuJpPBoECai;3(|Ca)Qm zi+;hGyd2sT1rU+?q8ZOI;i%}!TDh~+4%+#_FfHC<&w>BQF9(T@tB|$Itx7WxJ|sll zpfE-&hllN;6~@ae#P8VIIfZboGT;>-rZX|vhct`mbQxCnbgp30Tj+vrXU5xQ2>-a% zMccH98)=I(i_|_uo%t}rzQ)^Sa@LwR| zzaR~N#KuNzd?L0+9@^$5f$2ASN(_=O&Ql#RJ;yk%oOli@Q& z`BBCHbV$vw8%$yjuIAU{{8yZ}466AXVXOZT>3fm3p?sh4c_hDUYxUcOhzLfg6+WHt z8v04h?3;r49$TyTiRBzC_e1j(Gq)hZhYgk>LJ!KVv<-U27;Vpn@6k=wG7>7JUW!Pg zi2EE{L+|}+*oZ#&s+!(EP2R^h#G9ZwIJ4A9Rp|00^b#)`-Ow>-(@_NMS<~t zWBKpDrTiGmnZ$p4O7drOLgp2$#@J2x^w!B3i_bA46P)!rPNL=#*kUMzD zaWb^NzxWZonp{VT<=0MmpR9I0=6hcxum>RSW$n*&$o+9ryx&AE%+^dtHM)D>(^26Cl(cgo)Dt{4ef$dmwl~jCBAhW|HkzHB@+Hi z((tFmzMk;U#$|+1tryb78eXA~?NB&f> zgiz@ArYC4ITaz^pE3w&F{u8XauM)kzW&x!d=w+oj0G&NI^r33bo6Jw=5$7enw1Wn& zfVVi|^e$?*^|86bG@HZO?rL1TRjYSxRi6$Txt<`41b2ui=hy3YYlJCMg`i?4Z%v7em1B^YB&r2+B zVSbbhhd+dUNM9?aUkuaPS)pUde@D#!S6DV%(H}!z+?&b%beQYl0uNPRFnp}1fi25_ z6=8fp@(Fx6N%)tc!DBH2T9b@U*u2hfT~|lU7Q#5f7q~hX9N{X@TDMu`2sJ}W;x}Xb zu__NSj&L@n3_ODvL8`zJSo4MG_mZAf@*|HFvi0VKKZpApLS-En&|JGMw zGdPvlcSm)I@CWduH$q*7vH*+fo;~`8U!r_rh+B|hVg7^zdifEi9lR#)x6Ovb;Umt# z32OG+>go9_;5Q0nf0@i5xYT0QY8?lz`X~}Jujc%eI{ap%ww`3T)|(u3yHkB)`W1)` zk2xg?eFwYyoEyF>vPapQ^Zr%Dw&kiYJj?3oxhp;vX^@Q*Y`hr9@Q>~P7fJYEl!m`J zRzkLt)vh5j%mNDI7%wqKqKYnr`9Bq{=bwD0+i}Ztev4pM)a{}UnXNI4*T!s3J3iC3 zNcI1My1Fi@o}$jyDA?*{Ohf#Z@MSGlM+Mow->(z*~mFHm!KxAcxRL{XQg*BDw6 z5sW=kR)5-+v4*R-fVI2R-~&#rEY2Uh;z`AHmFgv<=i*kI#VvE}*K6%x^bJKz29?^J zNd-kVd-=RYn8(E9#Qaah0+xq3erE!^7?dTDx+(D)QWFaQizWOoPQ#zI$s37(rP}1# z#6ME)^jYF;s_buxcT;5rgQrquLy42AvK51&RN3so*P%}vxK|LoU3JaStj|K+9&mLp z*8DsKgo=UCL4BtEb0E~0P-(MtlMT~~OJ-Ltz8Dz26#qwrvkNt!b#GGz%853pN2^t*zeaa@|Hg)5~UD;}R?vf|cZFMz?XR>qjnQUU}Z@*!X+1 zYl~}>D=*KOr^)LLo(>)lD(zE14XYD!r6yB1Sq@<&6YrfwUW(*HUmK4UAnv4*l( z%z%Asc$Ba-A9)jch-qDH$HGSi!NL)lHp4+O)ef!0$QfKRIai}|=v@j?*AJ8hik(BT zb5Y5Z{-{l`*3-RCuFtJeGgHX8{f!y_FO~4W6o2uE{||O!Dc-Ml=oI8K*OS3lf`<@A zi&mWqKIHtYpI$V8_@9D(C`2pY4t@b&OQk2b#p6=c*28mKukFE(Z25lgiYv6(-%U+O z0TfHj2aK)EZFG@5=0BEWalwBx1Mx#-jy=kZ+C4dI$Qu1>#PajFjJW~519X5{`l)*7 z>7c)=5Bv1I;yM+~K+MSq_V;2K%QI=~6>1@RO5lip>Dl0kU>_H#*`8W*yy2V;@6Iz-b{I}f z9k<})4;zEOL&D#Yj=z3`qnF%ephxpfd2#};USp6}tOI%ne2rdni%~AMp;wKym6>;U zO6{0CrX71z&l!1&A?Pw)=^8=Dn3t#hDk{v!j6D-iJVaaX_i4TA)VsVZV88R2=GKze z8(4&nfWhWH;QR7Rr29td)a&bg-&Bh|o9{BsolLUb9&$o|t#4=NCB%FQZKX$hg0}`2 zVs(JocG@_h@Lwk3zbp;^`d}?t)3C1TEs@!+%$MBaTCM-{RD)xUzBiX4n}_eRj#47iQL*nDd+()Rxp&Y1 zdT)N}y|?)$6#h;Le`gy0w3W5^H5=*C1;l%CPjG9n96iHp3mEHzi>H5RSnrbA?$h6C zLDZG0T1PK1Nv9Jg4@h`abnOIhcs0m4_0A;Y)bz=(a_THATSayyIPY2gEbkGYU8DqN z^ScvvA-M@uhLPjDNz=k?59Ejj`Xn1)zKQ35^OMrQ1#zdrKi+8A*?Ghu_4xjv5fr+{ z7!DSQ+`mU}7P-oV!rvv~?@Gg;@ppy+>r=;Ff>oA@F}3n|aJ?%ZBR0|M985!}$&+~? z2g>!1yF1lP3S7Zts^hL@w&OvM>+Vit9tD>$>hsfjIOF5ARbh6ylo+Gwp%Z!oBC`ru z?3g%Iv6e(+_X>w2#qz4Z<$vcxw#)9-W-X*@VKzgHvOTBSI;lEtMe|Z}I zti?xUC8;keGN%wV(9CQ3AV`l2(`&GL;)H><Xto z2qgOj+v#9G#*9|q@t{LL@(i7iQ5fXCQCdlR5~wXjXX3Zg*8ew3n^5>)CgFcs8vY|P za(b+#yKGFC!y<6sf+#77_+p!4eH?p4_CcO6w;d3@GUE|lR|bLiM)>xdckAvlU%thya&qbdq&U?o9LvO{1R0ta&?#NV_*d6C_$BW_}g6%?Zp^mFWXcVH4Osx5TwS+%Y?v2d< zt}j5Fqusx~%@rnjCTp`PXtPJrW(e?Y`%M8_-SB^Jb#YygAaQXWDa81Goj{K|3eqJ_ z`22{n1AE6LAAQnGn`dcr;G2J4Ns+fO7cRaV=#!F&c^X?%=~YKg#U^({ENb$1s`!5!-$8w*XnV* z0{RUb>|iA{Vx-UrQI#`KsAx!*r2)&buL%?G9H#-Bh=!AfP8RWNm#B8kpoZRhs73 zlUmZ!z_kS$^ad{A51!Dk!OU!p&*2In7F@lnN1O}1Fle`*?6ZR_a3+6Hhmk>NwfO>R zl7ZFxhX|8Jek<}ISn$$12Yu9%=wPI=;3N2gaN#Ml$U9RnG85*L5$l=^kLye#_gve= zbn}&j`DY(n!Tf~Sec7HxU9U9ANrrO@EI5sW->ZXa3>9o9~+HQIJ<4$!9ocgk&?gr{|IU+DUbb;YaqTLOKRkhX{1xN( zHwOP&3IEzO{8>A{hjwOd9fKczHoWMWEw+lV2q1L65Pd+HJ?la^hL+;H)_8VxzU`CQ zwzvX1#L}-e`V>r0Y*w^o^7qAG3Ci1!_}p%84~wlrthsm{i?y{FtF*ZG4EX92s|$UT zOm`us7ou-_5%;-`%%qQAg4G^Xu7+?1|6=@NtS$M@+caSEmcZ9kc^L7;VcX9ODUTR^ z6+T%Ti#dB0_L=Q5yk}Sk-SevWOTi3iiDkfep+FZ2LDfR_oRiGj4_iM*HbgD?OL&Gy zzSrPmyBe`IL{{c}5nI{$o6tVz6aATP z`QALV^kZRKRq5RqA$uEv(ja!3e>qq{jzsdk=a`)c^u~Dnb{u{jSFK%(K>einUU>e} zR&Mv>P8n?W@GDKq$?VH7_LUW=%ZlDnPv2xJHkZ>~i-^MTY60A-!diGUM^T^s>3%UxRd7fDQA07#RPa6JrJM;QT zDHodTxvs$EC9|>1FLv_8&RDJ=V_#@)FWWcmtzqWHFF*YAhRxM5&d&|O$6gjN&09lG zG_3fc%PR|X=-2p2zT%KcZNT+`%1Q7 ztTljV7V{(h0uer<;(B9k@p9MMpbhH+icF`2voXt@J>v^Rk+zHL{il|b{;6W#jJ!N- zGfkaEdZ*gn4hoP33LWK~-eGs$*3Ea_--*~$KE-bM1q-hRXObO3qgHj8Yn$cK`3=oz zigEiJ!~g3f{Oj-+kM#dC&lD@+vH6lGgU?}ahxkEJ~H-%|dEVtyx^ z4~^sB82ndC_^(XEpYKwUU7f_o)>>SK{xO{>j@%Q}`zy7yZHC9Rz|cJ7YZSt@Sv}t; z@aIaSj}Hdf7*OcB-DliraL&Sd9b-+s?Km$Ez7pVXEKZMQraFrG=k~`6oy7_lWsrDOwoE z@Q=0st&;Fxm4?3%{i)a<*P}1+m>=B>TF614dod|Hf>^+wok2tMG|wLJ2yT=|l!G>2 z4ZatA5Zr<7rf}mR8y}{6ZV}P9g(kc6u%h@%U@mjD`mhEZI_6_56ko$y0j#HpSj)c= z>(CIL|CiA||JDA^A`kae{|feOsXsq1=Fg4hJH&iB?48o}Jz{?QX#PGi{|jah9ml^h z{r_?a|I5?xm)hqpu|0k_+CI07`FBS1w}|;#*pH<8H;MV3qxsEZ{v`5@pWF``V&iRL zQkCK*T-!{K-EC~1+!RpL$|r*xUFCTn2Vcd$uMW&RlbAdD7rT&?wI$&b#?tb(^zr9d zf{j0Vce5{VV=m@_Q)~0xaRY##i!(PbRNKeqp0 zA>n^T8vfXS3H|J~Z|P_4BCbCf9XDIW{O?BdEn@x)^|J7;uGx;ho$fPTH z((es4+>aHu`GiUFuV7Et0C;$Y>lx>NpP);BC(;P?s~EzG`6I|-!#J4kK;j9~IFbb$ zqm;i*q>YP_=eu@ys$12*j6E7qN8Yd~fwxtA{uDI&vJPw8;Fjz+Rl3~u*oaoup=e`z zSxN4EA)X7$xY(oVI4#PZWg${5vo5X8KB(nulInoEL)JFmb3!j~lLxdNv{KG=5_fbs zjeYYxr=ekJaAhAU&fDkB##qxRQb5kv#+nI*{~8JZHEH;t4lV`-7zPyqx`?ZMF`@_* z`s4wl?_XV8%Yun%%yCg-mYD-io=SoGZ?zl}EjH z@7bWNtpl5!!@FcPsEpO$DAFAzh#Z2|sMR9v zv9fQwZ$aw535EZa68=}F;s4lI+O1SHh>x$ke{eXI<7N)zHk{Ncf^)sx+N|76cS!S#?mUk$d3 zyo-$qLUePSJ}Hyiy@WGj&bd&#)qBu;CitjR);FQ>ze>XYsx1vsxbo@6UK!^4tlf`!@9>s2tDd}|pW$WF|I|30@g*v?rI*iW9l=o|4H*WMU2hk5XCpu-UXpt_ZH~*GTlba z9j-O7(^YyaVCi{2#$+kQ*G5uFSMwuaa`J0f9D=@v?;61)?;G*hl)~f7?@3}8ns56a z_BHkJ9+tl6*8k;u%D>@z4&r;FU2@niFpiAl-YI08BT)!;%cDa#9IU%t5I zZl|uV)0y3SBUWBwPv`g?Ta{lmU?w-B7aD=X+2FIz=!pvWm0Tet!S_e>c{T7KAHhQ( zF8s>((8`Wr0b;%~{iNP)%wzwv9p>bH>}zUg`;=g1>dh>?g(CL-Re0 zR-VzrHfOuOK-N~~Q*^XBGfv3yzq)s>JJ4_ow9Exz*az9Zq=*RwTOM}##+(o(EJhG1 zI~$%mOBUh+s`;9-xBBJnN!W^*mVgGPVYlD4OY==IN1r0Ls}ZMWjq`*-eK_B1@*JKU z@LlQ6kY9k3iVkBI(cw{_1$ zhZymE*E61AfCO6W8(RTiD$*LFVQKU8{$XB^WWnK#q;~|C&cr*_;`uMbt>Rgid_X*}OSFjRhQ!_CxiR67*nG9Cuv=ibcBQ>Z!LLh@ zfT4N64Z0vhyHnZEM)|dg3crGHPasAZ_{c4>49N18Ejtm5xLn)rwDcWuPU~HYF=I2v z3_~axElXq`^{Wc7mdWNn;LQX-dtbCJW_^W+Fn(6iGNJIVm+-Go!yl2Dl5=d8ezvQ# zVt5I5-OWT4E&?w|b9w=_1*J*>gS(ha;;Xf3UIRa-2Ol+&Grw_%TKdHm>+^X7<02tcX1v z4aT#cst~{WMeJ8}XN4DE{ft)zZ^f+k1FI;k3Y&%@IdrtIWpmNz^lUbItGCnpM?|g} zzrQi^e}ja7LmK}3JQxdMvsEBo!!y2Hd~6^0fT0a1SK-9=*Bo z$DprC#(Gpq?4>JzQBYB(i|d z1fS7D7WHwT@=?Vj$9xyLU88r~M6bhSbj|SM=7sKy$COtOC!;UKWZ1=n#S0<<)uMK< z43R1|f#;q3!}C1l-#~*iL>jCTrl)97-M;HQlMPyjUOs0Y&+w0(|6L>De@zC`{KVB&->%giRbD>P&{9icuG8PNE{Z=O^M%#=bICci{~FF9u?1bB|5}&YvN(? z{BUBAczz=BGx0n$bl*AX_Q9`5`1i34LKqMK0A&a=XJ&dCruS$3p7H*#`-d&UJc2G} z_F`{xC&vC)gC&H0`G+tIO6Nt01?_+wF%;bfzrmsCHA#CTnXbenr3!PFebohIsmExf zZ65~rU8YBjXv8BQ$G znSC<*;=V*wh!>VFUS38@+{`xEt8eomdKdgVXnVU;-b-hSo}mkRBgTUEAoc?@%N$o? zOwemvy@;}6wRkKw2Cv0qs4baS)TrTa!k!Q|Z{`5=9(jC-l&eBE9|u`K866&;QX@p~ z!xq$2JyYF^X1M%2!j{OY0S$iW# zAsaBiLuRY&#F^0&lOGseF&hM6*(TA zRj_2&6nZuMACp;PE=$b4n54FhRhe}a#O57})+H)^)4j4X+Lw$T8}ve#$Nc?S+bWhy zZO?o?S-VTmmltKM%nQx-k=Z$6W^u3&sXZEZkyn$3?yG|`s}kPfv%Kti47U-CM)1R) z5aQkh>>9-y5IJ@S^EmRo(u$8{v=Dnljnsv0%FNazuyqP5P&M|sAP7hf|8ML|?`8Sj zE^aAw4CDAWrvGn}@ZXe%zX7{!eA#9~^dACZ<40qN%Si~^@qLeqL;P&Cv{z<<|Gew# z^*pg z$Z6IL?EP&(4}SsAk?v*v6%j%a-{ox)Lx#OyEq$xPLy6vpoj=sHq8w|87}Cd4i@j6A z{a@le$}j6-)IbQ+aCwCgeHPcGcd)wS82+*Sf3t-D<~00A`iK`RsuV;|uo_FH4qfm4 zl{eos4=Zu!+0FnLZ=Cf>seOq}+R6RPeM49|^|Xt9Q%d)ZrV&{Tam8NtZTDdxLA3ts zU%`nNabk7kBXt(Dm=VXmf{_rF@MQIrHFx`7_UYzZOxQ*S>xv!FT(VfS>6o(kGmL)I z>R)7$d%OhNN575D*Iz?SUx}X3ubW5s1tR>q^P6>*BmQE!+mg{|P*b8i*2_oeK&)3) zV1ncMDPm#u9vf2+;{*Rs>?DFe7V+(r9#x&HMqS&niO$>C*wCHHh!%(rFA1&IO^}Y;)Z2 zl!YI1ZE-d%8^Ee?LiS@XwY*itva@pyVsC2r{~YSE=1B3Hk=s8+rqidFkQt311Udc? zRuU@1YS?91&9g&QyAJs20`0=g`R4Ku!wTqnd#a~Ej^JlvO`47E6Ril#AfGS|e!Wxg zVDwU4&ejbDaEhAf5l7Pjw;+27Q%sgUjE)aWm3 zKCo?T^O#8b*{KeKIXi*5VitGC`xO6lpz?#-L1mCZFCzoiP%`yao3sq67u z@#sUz35EX+68<-&;jc0kFR5$1qlUtxA1xo{p)`v84rELl#D$^D*OvP=f+ax@w1>6P{ zXK7JUrUTK*;yRtKvx;soA9hp41<+YRxhkU9CvMUf8X!lG_TjWkLTQb zbKd8C&N-jQG|4hN1rl8^P~1PH=Z!Yr&lT(Tq)Azb6VI=r+PYD!-{k5RKjC-zkNdw7 z-w*5xq_G9=VIDrW$#&PL{g}X2QEssXgY54;i!BGuY0_sy1LC8B69HnQ9_3l--a$<| z@AtxYfAV}i&Ug6-{I82U+gjSF=Nad7bUrYgu(drJppk)21T?BQ`hK*w*1^AuQ?Op4 z-+AlMy`T`he-pN&U&XgFj+WLxh>Y!S#GAd_GrP*-)k>k^_0SpEA+A}t`Z9-aT;c!Y zB>q26!9Tcw*ln2M8^JB1zS!9e~mcr&kfg#I|D|{^Ic+0em<_twK_f5t@!0e zGTKHF#}BQs#ZOyearN<^&k{cjz}C}7Tk`Qi#0uHNN@6VC#`(QPx;@pR?#Xn#p^Tge zq>V57?@QuO8~v#L-_#*W?;8_kp!e|Cp6~^CV}EI4ckmMQ>*&155M=kqV{Md>AmA!wY?A}=DTV>xJq~D=M zS)cmeht#qSiI-7UKl0wTk+S#2^eU#?@C5xCME^Eeh9?}4C;!oV@zE!(RiDHp9y;-s zi7`#cMf@?$A;wkz$J~xEgse!xpFhS*Day*JkyJ$z6r-9NP0gT<@LQp~c~MM{NEF02$#W`n z^|c{CGq33?ZCMe<^CyPQx{L{kO3a-Sz3nt2u_A|*?17!_QE>q0a+q(&b*g_*_61xO z(FkN`?{5tM2lIQ1|4sPIGqGQyZ2Evht$Z5x_evFr=L0OAu52P|2pPmV_4}d7w{ zwJkC@-s(5ZKE&FZuA-=!!t|@kgvDy3;VpQfylN-zAMk#XJ@5*klM^m&Cly)HwAR>Zygfy}L!sNBtJ~WZW3WW?LH#|RHexRdPr|kJA*Et+Wa5GW$aq-Ei07HYMesY4Q->8^fU#$UX{Z-t9d384Mq=XdbB=GIxYPI1Zy8tk-<-t% z<`n!#u`s7#LDx`H&t3c2y@y*34(g}BVHgsg(hASa1@O($vD#(iKWi&-)g!hB1C7mz zVSC%-ZKQ+U8)+lk9mxM*tnkwX(ixM}6VA}HF73Mpa&z0t_ENUUy;3bRIsCL?;-Qt_ zDfiNua-YSWp?h4~BL-5@W>?EGdbtBC@_3sf{{f{m!szqaZsXhs zTu-9iQci-p9#q$=T5=cGepy)iIp=B1(lJ_09MXW9arXYk(EnSK_}`L(|2a$GIU8#@ z0zPk*gKwpE27560)F=ksymau~2Eyl%tJ?2!<%GM*t4+K7h3Uur@X0g8wZe9M(2MPw z!JXKy9~@|XPlOF#)lB<|FyTKIOQy1OG*7XZ^Unis!5=NbT8(lU3Zga-2dy0T@h!!U z_6yoGf?d%1WoBj^<_K#`lbWOKMW;e6bWXJAKIl3b{8}wT#@qTx>sFDeGR!y~W-1L1 zBgX!Xp#S=O#&q_g|2_2oCrSK&l7jzpr~@i<_hYQ*pyTfj)W9E@%gzh_-d6(a;J2gL zogP-?wit(=_Tb>LwujriI2ww5h6pQ*F*hq{*iPEbmpAQ!Z4Rt`?ck}ZmU%m4ABxWQ z7_^A;2-D_q7uyfLQ#I{);8Dnp?d~RbW}~h$x8R_8lk1=`)BewhHjwYXG;pQ=u0Tam z6}-F5Dca`ORBEc=!)XL7s^@F!iOZ{oO^7yUYD~B8Y)_LOOk^#{_LTXLwWnJx{$(2` zcqS~c_#eUE;vd+MCjBN+=C^H3$JsJ<`^d&L9Q(n;qH~mSh5xNd{BKRce*@Sw?MU|^ z-Gy{F(t4zINNbVu5R*?cqx7(z&x5peao{yWhVz4L-fb++bnkejb)upkcNV4r))3*XqO>juA9VBY(9u>`6iYM&8J>VHh z6CjJBeG7U8rH{g^10(H>>pTV5wu7rn&mM>~bIK~dz^WtJ2TeWe0v#?x#6p~C1Megh z`B+LjAp9!OCbcDWbbY5KT$gMK@avUq3mxtmfpjO1_vE>0n^WYl@{vftV`qqwu8kW# z=BwztL8D6b3+yY#S^S^YB>t@__!FUXJ~JnOt_5{6ipSqDCOl=E42x?^a8g4)*Az^* zMS@+yrZq>_1kEK?U26|m)2oiGHI@=v=bEa@?d#2J3)Y#}?>|3M)URpeixA5M)UR%6{!LR-z=m?A%eH6m>v?RkXIb|WF8DD@t%Sjz}}PfKYD#GUqJ zHj<8eik@+0N9a6($E-0U2)nPttgXy!lcq_lNb~I?kL&{;q#}b zEx4Fm=k^!;vH3AbkJkCHR#0h(c7SnM>{2)?cB+0V$5sEoEs6haDflPrjMmtMMp|QY z3m$8}8#Q(^S!1QkT^VO;tc-Nd*CHOM+HcTqI1=rpQ`U3!YH)j08Qti4 z(9oyqgwS*73EZ2S*ZHk`k&UDGrkCj>#bpH%%@o2F*s~7%=g%wCMJkZ&nClbnw79%% zC~WXV?sOX10Uh>zdWP@IzS{Y*$l#0^k~|0&$3gx7-cQe+Dd*z~|5Zu+SEb+&SuZJo z2Umt`UR`Kl51C;9!$XgXVr4>%`YwaI zH^L^+*wH7ZljS@^Og#ZkEA5ZDp&?8o5K&3sm!LQX_$yy-WeM35;7ZTeN*|~>#ufgz zC-J{M1^>QK7HUW&y!YmybX? z3&Ag@HTxlCs~;$qMvmwFeFpND*I{nR!}{=$l3}HqoPF@!%3`$T;4zpF$f4Xi z9rU_rH2E)u304zwJ*j9*J{2_5WAO=y{u?yYDDKZGj4cy0b()|dhV4682h`)ebx0!U z{V}9>kpv{~C(!r7cQxXk2dM!`4~+m9;=p>~)p~mfd~L`jyKA%!1x~GJgSo&Z%9`Wp<1_J!#>XlysiRvr=Zbi z_n!nNqjf%t!9Re9)U(jDX= zH`V60kr{fy&_&>PR<+`VwYY`YYG$}%!o>?60lRB@*lTNH@|+g(urZrVsk)$UO{>AW z&Og8PCA2pNUvx}pVe}m|uQ}|fYhlc04(&{XJBNgF^02eqV`+y5V=!q$+$SDKJeqNZ z|Id>6|11UnBgJI8#@ZkHkH|r~HoeX${cDJD(>%rwW4FGm5Z1WXhHkS4J|8Vhr@+$^ ze6ho3yBm?$bRBlm;iMizAse37y>v&dVLJ7#uk9{y>bkoNtDV{8A!pkChUv|&YUg2R zOKsXi%(>a_YWLC5j#}d^F?>TU+r9ltrph=2-kK}5h%9WVdlc=7(iYmLXdkBieKFRd zw2hYG_%*bx14tQaTg{-l;1!xMGiRxjwpU^w5?HGqEp&Z?j#?D~XrH5%O5$i6rSn8^ ziRV+=MSaeWEBt?+#Q*0h_~&AlPy6N+AqO`58YyRZcA4?8MtW$NSh=7Pyj;2-`v~hX zMV_coeQj#_kJ#+Pumbn>S@iJM%|w!OdRoVspuv>>Qd*o)l+~u5A^9rsYv8dT?Ms99 zWf>yUELG3Y#g#b=R;c>CuH;X7Sf;nmh%fm2MD^O$+A zdtxiR%s_*9m!F4^FW4CIW?*00^K#%WXonE)QCGH5RKT^poaWR!;Z0U!Ww?C*5!e`~ zJCFFAuy68L0(t0%dd3z0fh7Kc6#UZ(1Fc_0{s;O3#e>$#=(V>;u0hYM6kdP!zFYjD z8d+P7!@HS|>)_^MmUm8IZb19QR6jXqiV)}7X)S(@q(J8D4YssSYrVmz?bJUJlb1x} zJk3MG!#vIL*$_dFX{{~Dp@*cPHp=XHO&sPmYWequ{wvZxia6u26@xhl;)`Pr5TK(3 z_28c7=?Wb2TLMjfBAtvXvIkUNgM5e;53kX5w$WF+2>&PfpNux9-Y7kVc`ZF>Yz$@- z{`vI&xWd0JiGN!P{-&Pgm@R8nN|@mZ5=`8~>7K%?n~Ji)VH2!f&NThTWrq4Ah}x;M zUhdU3bi=Ht!PbP?(^Amonwjqdei7igbct%hfOPMV!eM;b?v;b)!6) zJdEqRTt-ljzbT}Y9#6orr1-JYpql^BK;8%r9%2xL5D!KaiIqwrUsD*X4lh;Ye=1s! zljz*V;OTr2`mfjoJg=wt@)H^+)SJLpbW^UMpS9)%(qZS67svzkGKTe>vBB)f^BO$5 z*{F)M_BTfUb4L>YJMfQZGD-P=fp?Mj8gG(*?@J@xHK;#Yj}%vm7p26DNse1%n_PD= zq`B7O+~S%pWZSw)fjiHWzpxnk_wX2X75J-5tFFBfabcQ6r$UaaGC0eFJJZ- z)H>l71<($Bz~yG_rJg!ZUA@Kk>wW1?i#KTNC)<5Fu36UNZ7vba!_=dNtfad}Q%$2lH-he3KRW{~=nne_(AJ*?Sm zkjjSd2|o1RvfB2A}3%1+#4J*YECd2xd@dAKiB4IcnzH)7TJw428j{=ZD( z|H~BowR_EV2B{RIwbfVU+XQPY*m*TLyqO$$HPTBlv*#tB*-Oza@M(Mm^7D!HO^bM6 zetj24gc{#bO@p_@mRk?~dhZ0x1x)qOsp=z6WeC=nBjdto8)7Fz-daZOGL?r2(ffnH z>-2;{lWs@b(xNAt(ANAo&c|_OkET?!!0WCcGtDdD8NzmDWv>}?%I}X+^U;|YHU6H; z#>#rg{;4im-Vj3ANJboZ(6kb8iwRJO|Ef;|F4qx|0)Il z!Em1~;_KJ3?jzo5p6PWKpP9eHT?iL%PDbMnazt)Mr75o8@@_pnPSFkE(vF7SHT6)7o2^WTi@@e4D*u#PT*1bsvM0M#lg2waXV!)5o%#jMq^X%h z?6vi7QqBmhdt2z!#g%wYAYEFup0YW%@v zWDB#k89c_@2IjTzhAffHB*M)DTAL%lPVI18FjsW=XE^Qf{8jBC+Y8%YwOml&9ZGB8 zxER)Mq*X}ylt zDXrf{NQ_DuboCj5BZmI$ZEny`Skx)2+!o-ZvuS zQ}e<0hVtDhUQ*95F4K~sJE`>dsKIuKl|E3|%`2e;dcE*dtPPtDx{u zn`ejXGJ$Thg;s3ygg%@941F^66WdQ9rC_+E4%=hOa^QZ{aQcvDfI<7Ft()qiLMI@4 zQyZF8I5Yqck!SI54E|21y>RNW|p0vd`TY8kDb!R^ka|vE~8jiYYIO?^o!; zChMgmE#j}@hv3pW8#t`QPm6ts0ysLVJkkG{SiO+01HRU;tFShcO3!8oOwjLf z_+yAT8B2!2$_hKM;9ZQFO1T0Q_r9rhyD=VKMkKF zS385yC?Av^@gS&3^13ErsMAVq@j*Eer?&n{&fhVGl_DzLsf2)w@(w=+Ju~&pESoG$ zh$Qt1CZ5qJF!j!uN4d@83jcLU{MV)64-7@UXTP~|UX$yJ8kcKPjoB@UEEfacpW#l5 zZ^jiR+H)gx{IdxBF@~vzKD;JLGhSvsh^L z=h}~lKjg{4`@F%%OwDsX;3U#h(b|U3L*V0;8HCn0I#aF2i1Vzt*F7XwyIvLcy62HR zw9gfZRrt~;gqL7JxFJf9-w>AZ54e|vcfz84hbyN)sP4xV{_B(YuTR1Ms{RudFA721 ztTPljzyE2VP<{A=Q1(CtM%jvp9owhWtt~PG$9u3nZob6+=wZYNNGLqUQh}{D1KoxM z9U*>z9%&PbR9TT8$j?r&=*N^=xG-WYRyK%;!s)tOcu%xouZz7#*u zevp-4LBc;1Csn|PKw5-3n>i4Jf2UhS`emWW3NgEp#(-M|+VRL@{29=X5cb!BuDpl+ z3rG(kU5`Zms3?ENK7hPGL;3~MiCjt_Sn0_)OGBZawZAdr|6NJ^@4`PG9sgM>+lOWc z)y4DDc^>MT&d-+NnDXgOJqE0*A@jp%@XvTm{sp9g?<)*PtwBEreWm%R#t6-$7i?Tq zHbH(&?+)N@@;Sy48DqM@N~_|K4z%}Kbe>=+DLMRKKKlLy7AJI7N#%@G?i0pSsC)n# z!)Lxp?y+80jr#_HTR10B4gRnuLilRG!!P%?AXX^mF8(aO#a*zVxd0J9XA}yS4P=HT zeD#J&4Vzt)1O~E&qe>Qd!h}C-!N(sPga6%0{O?Y|e`bN5+HRo7Qaib_c%1g;umXu{ zOm2xYJN_+R-EL_=+)jOQceST!bKI5Y2R!}@yjqZcf<%3-sn%3B1LoiyuWty0 zIy2!dtvRE(C1gs&l*Zfu zB9U|+32k;&9DZcOWRmVRtA+ML=T&586Pc+KoWAMKxiT^z*_%l`g zp|8dKy7fOO78vfwwa+^BZid_JWXb6eb3q7JKUt+M?u>>v%^TZ`gO)W~o28ZMYFfka zueQ?Iz}*U6ZB2!zg{(QRjI@a}?V%@gs%BaSbbjaxe3wfLI}$6__P0R7huOYo84;TF zo*FkZ=b#z>CzUzQPsU&?BPKbq*?mSrI&uhz)Ps%Wv1T$WSJ3!&)PhGnFsE=j`K9ZZ zHH^as&5|G2E+ro{lZvmx%zj7H+07|o0%=0E~7f*EQBojemt4ssBYMOh(p|kxhT`!jCtJzJfTndLfrDL ztMs|AD<{Nz8-5M$Mq#_zEz55}hXAs|#CrTUrn{hhP%e$0#qf`%{~MC{Z%Dx(v9YJ$ z)u_FnOyzy+7v4nro2Z6`X8RUU$617#dkWOy&iXv^8`o@MC%7hT_^0U0;I(eAZ)3Mm zZGn3!7bUy_yuW!QAwMvDyiEs6oEByrPdjaQL5AOpYfN>AYf*S5 zY(+@f`DlOt8Ps*JbIs|89b&7ti#ab3{rCmwmBAm>IiV4hNw{l33w|RB|89Vl77aCn zkJRib4j5+UM{X)Y%h;Z7Gwe1<7Y%0dE8R;P(`_G^Ibzsjkmf+%*z9Uqqv_tYhT*i` zo$jR~^jA@KA)TR~#lJEAe`6B=jVbu+;NAHFS4MaztoJ;go5+6_YixBMX6{61v7haJ zMy$oPx0^Eg>)aQ5tmL$rdhhIkZrucEf39oY>H1W-5Ii2l@(ABeM{4WJq6}vqJg+lz zi=AQdSR1>Q-EO;slxKq;?{PBcZ^0-)%BmorRp9HD+HmoAKxT8>0WlA@V2er|HH?#W zm4vBRs6t^Ev_ta*!;^-pGGdT^6=S702erJtbyvGDXkTOKG;UApipd4=0(-nQA{L+p zD)LX_GCcmkQ`y#ki)_d1VtzxuO4DFF1e!26@k`h(UKdw2ii67d;{R_-;=d^c|3AcU z7Z+hoMCtD3*e^yJ$Oe5!qVqI5ucLIH(r-H7qhtFh&8PD(YRzBSQ)8YzRpB;)W>oeX zOD%y#PFDyjK_SrhBa6vRP9elxNGiStP54yI>seX*PBFOpRwCU!$OR_#n(!1;50L`U z3Z(ljBl|y$>|Yt#?}wC%-hXvuA0FAiH?lu9vL71Rr$H7)^G_bxPaWAiu$OwAo_qFL zd}nd@A4~u5P2zuV3jSm|vlYF?OQiE+WNO~P$yS|!c|1W)WeVl)O>xEl#brns@_Q( zx%2ZVv`9*uUF_p|YmAO7R*mMmN6ke&1<~@$Q_8PZ@34q&XYtawa!DV8;|l*@C-MJv z3jVZz%pK`p_1F_0a&*{U8OpU0{R}ojq$i^qXo!y9(MB}o^y=Y}tD}AQfml$rwSnw? zS%wrNEReS3O35koZH9&u=I*MP&J}gE!>n=3ZJ-f_M~70_8XzN-%S%cOM3R0}hK9 zlQ|?J(y`!RVmG1+G2s(M--y)mlpBhv*LxEuis+qBgmH!cZ<6@`CIx>wp8qBBky=aB zijRp3?`tn)!I?Qs*kEX7Ko72t0h|_{{qt~KJ{|v5jLR$IA7guW{DfMU_k*uHP&BQW zN`}bHTmhb11f`Ujcd47XXn6s1;j?cJazUbz9>&_?d@Q&ajNyM2W!2h9L-jzpZ2Kg% zw|um>+(=ewqkA#=z1eTO!cAvz<7eM^`fG469TI|3FCUkq-1p^C z;9cVXmghuDo-JwL|D2=$mptPN|E)>75RUyslHAM@zX;QC-no}7_( zlEnUhc{;w6hX+44lQ2^|UFU|QGEpAqxdx4M%bn%W*0|KhIie>pc=FUI(npsACv{--)%AJDaZPx=BaDf7XjOJWca89QBu{xYAw z!Q|C98|u}7p(gzPqF)s9A}|HbI4P& zz2-p3KR=r{k=!)1GsBsdmf<$J`$nw)z7V55r3(!NzM1V8!qy9xr@<)n%%b2sMQsk> zVy0-r4J8UVNlbrHL%#Ea&{T3$$$d3Pe9$WZw;%o@R&1WHbCQ{QfuC|Tw9{^hU|k_~ z4(BwIbFu`7uj`I}efnEAaGwq1YyQ72iT}0~{LSqX8r&sx?nJFP?^dGnT3B2VSZr+WPHQ@@*3*1HBgq*T5>l@E{d_31sdr$!ze zy(}SZVI^ACvbb@9-3P6bH@S9McEPJCA9Q%_&<5|TrEO@mJxM){Z3fH??%78w@`U@K zbCM=(!!|v+g;eQf*r&oziERsH1TpaULdt3JH>&;t^&CZ4`_*IsGZ(faD!&nDHb>=O z#dXkSE=iol-GA)-|Gp&t(9b_3|7W_3-DU3mnA0JWw%rw3S*x`ftX)eO{(R>qXAWr& zZFeI!^cMI85G?LDk*^Y1-3Gm|xO_dd?B{?FychO3gx7S$1sKK9PPaIlOg%friOxtCXuOx->Aer;*=mGvEc76 z@|eAgKsz22n+<|UDg?-o@?5VAv)Z3Q6ev=0K&baO-j2XM|);>BD4JjerPx?N7t6CV_WQ=*}nL8Kk?|dp>&H zM{QC0mN=;}BA*^UK_ek;^-lYY2qRsGRm7|f&CG2j$_0q~)PIhr#7U;lYFGt|)8$%S zbJC}TsQ*@mD__w$-{2(Yqzh#mPRmBnp?PtNa(aYvC@ui?KR1yvFo*PsvV1)Drua=r zd-2X$M#yy;DSL=OUnpIS%B6|H6H(ckm|UlkRt%Mac5R4BqNW{d4hawn!_;L^1mBqIqWug1 zc^Ll*RdLq-#^B$X#J>~&c(nghSr65TyJRsTQ;^6$MR7g}yQ=vFUZE`Qkn%af{dKxa zI^j*pKcChaP=dTB=|6+s#|(az=;D53X>Xs*V5Jz>hsA%{I{Wy#qgL2QJZ5=S$TCi{NUopVq$~U4G+b=~#hzWd-JT0hW7TZ%IwYob2 zpE7*lxah=o08h8ZR^y0ja?KgY#L?UE4cii+&(?B$;2QYk-00py*1>Z2p3-y^vt`ig@SQ&&)xv9qtZyjb&;fAmw z^U&mm+`tv?Zc}$?HMb7DygTR7Rc8beqb&yQp=|YTv*~kjG1iBf>ekPb!Hg^u8RwC5ykzNqh74UVbrT2s$NyqDoE&}V=bfIzpA!3sAE z@5&t5f~RNUTC?$Myh(S6YNd@U{JWF*ccCvkGR5O`Mf_BQ z_vcEHhpx<4DHdGoL@YL{2RK>1_NX!uaRE=_%1$L0ccVD!R!lg$x^)1@_bC&QkFkZT zyPWCJMM@|2feiN*{(jJN16oH0EC5~;bqy?^6NrkM1}*k9)|(FBO52FWMtbIWx|Y0N zmLEpcF~li6;y)bd3Z%O)4~;AQcO>!Ok%B+!BRmVyT`g_RZF%k{^k^n*$DE$@zCr!= z&G_h@k3rG9mi!ym9Aw6E)LoZop2sgMAGW{NHO?kPnr-qw0lJe`pB`B2 zPWL}18tPdt9r)_%wb+m1OZz=-lN4vze8TUeh8XJB23`cZi~v4WkZr4JqsLkt6KM)~ z60}{w4-uCbZ}YzglK4N6g1;Vi^N8kDrHsspp)IT z1pKow#h?1@({bh{bdE^pbgO!Pw~`SYH4IH9-f}|20p>eECc=ksh{Yh zQ4j1%iG7;T0Q$b!Wq-%sb`x4*hA>~f|7x^WybXD&K4U-U~>NfXg*W2$hjtoCDpx6h)?6g1rkjye5_iSpjGK;*M zsCK(i6=&^l%>3`cB>oTLACJ!ecKJ1D>Sbz5y&U(m9Jhp&^$412kD=cFgnH8@cKYdR zoJkD$_lUMLwfuBSEo;v_?Sho2A+E%k>$6g>x3p^2w~+7_QK!BK`lO)vLY!-*Z+b26 zZCx*p_E*{#sjqt4Z)u;We(I_Jdg`~Hu1VyPHR&F#0Z$}N70e&7`S!;0r zxA;7NROVw2NP>6rmHwmSYyS68690!%@ZaIGV)fk(i@2Hn1N>0}dn`d0fze&H!LExS z7I?437vgSAsDiRD?Q{P^pZgN4>vHtO<-}- zIfV-BWIR*X&?p(xa8IpEY8ke~Ki{U-tK4ITWa#7)Vz-AUdzg;G4U~$z+a@lYcp05- zGn^vtQ}SR-c3KX`sdYEAT_=5>Fkxm{?WbcyCEg<@ssok8?w92!fVJJ<0zQoesI64n3mO{k3w zp_JvI=VKV?gWqMsogDG&!oKP6wWk-sYWE#+1~J0B>U-#e6c>ue1@P&VPyIT9H&}(e z+(V{MTBsxP56L;x!|t~HM(QtAksnpygK;zU8=#X45==M0hDV#31YX?)v=}{FjMJsa zlN9RjjkXX0YX-DIn)NnJtU!H!Njp&Ua2Ai|RKnWos^QP9oK=v$pf&kB#a7k0kMb zBnAIT!u#B5`Sj2{LLIG2&_PB^I%(@!K1@mnZ8O2g z?=#;}Lp{m03^SW6$?o~2%nY60`OxXzJzq?oDZHOSOJGJy- zI2MtDNyRbf2PW^?h9oh0bi>d|^@vQ@60I%YQ+REjD<37OgrD$P4f9BBvR>lwUoyY- zU#8%{yfgf|n9f&{>)rUCv-md#|KBI^|9uMnl^2QyTJo+)AoF`K@uWD4X}FLv84w$S z+05)=Fkb#zG4#HO@q?}wlkpTVMS~7qF-hNB7+|)r9r?rsDZSl8X5rM(;U7!?A5G%_XbS#S7(*+OIK=PmGiMTgnFIaNsN`F;S=_V=G7Y{upLbYDK|P)O z-wi#BNxjo??eDlYvHoju8b4qo9r^XoJ3bSq^B>?ixBl;rk8u4Mj!n3J4A)QKI1AU` z5zF`wahzE{z4~p@gZUo3xY=ktHiqjLKf-#zf_Z%*k{PK0sR*eUsRW6BEBrwrw|_o8 zMq7kuna%U5l@DBcu2{1|k-t#}0y1>dxi(q;F}VKS32F;M=Mw*g)ek`%rFlCH*>ACY z9-@MdEBqfz;{R9*{(Y#eAFH)hhuT`7;K(uG!>GqF)&P+I1zXyV8rZie_OGitKIfv| z{m{pORdz)VJgZR~&TL^fJg)YIhUKlW&U3Ztg0yB~eWA$mWpNH`I8sV&duiF}(D&PK zrXz)7XAi^AAMU=4lB;0Dx6>sb<}jbXb?|3x)UL?gmgA(-9_Wg| zHN(@|fx9&w5%zS_xkFgh?HQI6vAbM`!(3ok&Kq>MH5-_>5KmrN4IM7}4En4|z`PTD zg^AGFD#A?P-%EQwEJdW!=xMnxP9!d>#c;w$@pQ=WlYX5~L+20rgz(>!gIs@&pB$wZ zQg-w>u4YER!uS3hbbosg+H296LMGU8)PY))GNYht=rXUKp@~F73AuShgLqgZ8{kQp*I+cDdIYz_M^&K@ zIw{~NX9|h3vT#d)1&z^FvvymAt|y1&I}^nNd5~EV*eEgca?2(}#ufg1lKAgQ!T%dM zH=bj;WYLmkH?FuPv$yr9zi97%@ZqOOqU=M&%%K$W4Mj6R_!fT}Xl}9=7svg*v~Dv5 zjXg(T?4Q7f5B4=#;3a1s_iNI%1B(1pXpttl{@&K(A}sBp&HEm#MkTb0*JHbiI=woserhTmZ~c}|gksJtv53p^a~1`_hAs35kq+1d(W zXVUy!@@h9)#D~$4n2;yMo)YQkVHw=3?(dHMLEZmoa2M|Gjd}eKVZSG)NpJD*^lum6 z4-}REZhYbYcoP4|Q}EvzXbDhn=+5VC#X;2NgRy%>n~D|*-=o$MIlNB%Zm!?P+EAC9 zV?V=oXEZ#L@76K-7R7EHxp%{ud$qA2ipG&QEe29U@?*ogI#&91j7VP()`PZlGr?m* z+Icra={q<)eYH-EC!h(^d$1sNk3@LGJrQq_?-Gw=%n->DhbX2nPRuWwhTZb3qDj zBj1gu|L?me0M8_Nhd|0rTy57Jh6lN-A|E@4aF3X+0qTL8sq70ebGD5y z{@)Wx{GUj{Uk;mk=cOTHH(0ZCu*d4CBpK~78B-@c44%EOtH|ic2|VnYEHG7Fki~o^ zQr(%=cIogjoET ze=>>xlPUN|FwfGC)Wx5ucc+ndKru_!+kx+`w*x8V9v@SV>W5Q_0;m9L+i{eXax<&`k`^XhVOw)(9o8CJ&bR~?MbJnv^{(B=?(@$#Kx1_fTr5HiJ-T|P@_?U4 z3LjVa|1pXGA5-wxVGTz8xJjs)Ut^7=;SD|7dRjBD`gPJI_1>|OdsOFF_0{#QJX$r6 zkdlYm{TO;^-9uN$*6wF^Yo#v~`j%eg>Z_&iK^$P!&m=vjc!1Wc`QBCY?McaZ^>^|a z)qDrleD|HnXX**^LaB~(*-G`@%&uixPvl2hPge^gO&a$4f?Dc3m^c|HjZ;PAoF+Ax zhvD7k?EQ`5|2~z(|EU!Glj}D{9tLI<-!Bk}OP2ew5<8_(?QI$T81i$(*D_X|2K8k) z_|OAACDL!Aq%i68gPzsnj6Q*tu8T2JK;^ZWdcKkU!)zTR@pyV)tq-HEsYjM~MP+$^ zRFO|667maJ6S0y9er0r+2ZCdvrvF7LLJU&O4eF3C zMWX-XUA!?0eXtcnI>I8}VBW&~28ZuuOI{u0d)Q?>oO@Z0?}LKe%g$c(zeoPJFNy!Y z6#S1CIJ`NYgXSEs){E%tu*zF8G>Ev&97H;lS}TwPCZ$1yPivs(m1gS8fz~&zYg*^Q zm$FFkqAwKxT{YwqS2m$C1d7263T+?o$NSY~ztwoO4M)86sINATIXF2*2DD^Qho}K{ zTItysv1*7B@x`w~8}avOq;C@G3(`F^e5AAsmcVIsb}u8%9;)#Adku9JUaj;{%t|y^ zpLSy2KYR({p4*rB7x%D%(DHIm<}~VK3jXV@Py&H0!i*JxN#Fw+_6ZS<EuuoXYX%J|Nm1G|3Bd`kIMgO?K~QzeOx2WPZ0Q6dtY>rm2Pum!L_7(LYN*OGv5zi z8#&>hx|bJN;nj5#^3G1YE}9ySo15EBK4^YpJx0nt3cn)`EY0u~_}*+^-2SS0gPA4I z&OZ+S;>X&}z94e>V_JBE$xD!mKZXy8f5sf+*=#Cjf)8-??cZ6+R>{;K6N&m6pgLYenh{%BI}m!Pn3T@*XOv|C)A!?ybso7G+DI42c2Xa6r5foy z@SYRBD{J2^R?rg4plL#+O)+hWBxLdz1j++Vh-G*7qW?YpKa|8jl!E^!;Z^Pl3$9VI z&g56QPnpYs@PLr!`D6sM+kjaF+SMn|U_C*_`t>vTfm&PtZcEcICY!DvjU(ruPpPxO z|J_!I>)neGOHPgIYAnhs(n@bZo8zv~1CSb&5v_FnFjG{CtIrS8IBi<#g&5+uNB4(j zY71Grn@67qf7iCwxyFg{rIGhhnE>yll!aR)Ax7X```FE7i)Jf#c((<%5rNluyB?%RCKcD5tk zH6={Cwt+`KBf!j|E3Pl$y@jzAJ0Evud9v#?+by8Nb#YSm<`KnK?aOl}E`UZpMq@>8 z2Y;8!bQO7>@*L=UC+2k&A4pvnRam)2TCBY*W^;?CKo;=8$|;`PYb`#8FCbf-6R-;G z4|O;T;Zs0CTn=I_z>Hy999|j~lWj6xeL5$)Xf#qSB*|UQJYrIFUW%MK$eDwj^@tUp z?I~E91Iutriz1(^Xb`8o-bF2eVLghO3?pq$P`mPBd=LFL`YrUE#ufg5PU8RP6#TbQ zoYZ>Y7SS=gK*>Y|M~g3`F^?D>+nqETTpA*P2W^X)Ja-WBT)jR<^`x1N8J5Ls@tzh( zv4&6u{gHa&hG*ERIw@_K?cNLj{!0s6TuW;{2%Uo-`Eg+$%=q7v#Gf)f zN5_9|Aq2VT3!tnGikys}La#C4zAT1D-oN3!S?amob3I~yZu(BlPsZ8|JL`YMn--KI zz9%`dd*GV-;PfT9_I8{pUCro8HGDso`!2_olX0?*Cz&`~h%;M4Kt##wmo02q=!sgJ ze)J350#6^;)DpzZv!2yIwU{+*A)50E`;>mGakI%bkEC^IrOSrDD*BS4Q9%1_{W?Ud z?5OeRI9-PmcKrB`VXgGs;KlVC=_17aq~8DLC#ngwmVLAFMn}R5PbP}ojQvcUuZ+*V zY##mUv-md#|Gy;h|4Rz~3y;pJFGqd+Dju}yNz~eh3G-sM9%0$_TMb)GHvJysW_CBN zebaCsf0WgAI6xPYC`?mhvG&<=RV+$X6xIQSpAQxTg~0?<#O_vPZK8^>d(Zco@D?e4 zvCj(KU&MDy@bEDIv~x0|!sU7GJ_AR4@(w5Bz><6~qD)FZ8`4SAAocf6`bOf3qTkZ~ zn`vfDdK3P{$a+4r(&Qv06Y2eWN{haRZW<(m1GpBXV-KZk#p?PNb4PAH;zKcWT1s}* z(3L5ka@PLF;Qve#|7Y-zNBjTX%FYtHHXpbc8u2|Q*iIr|MwqD*rdj+>tBVg#&s>n% zc&=Vs^~|!2x=&j8Wq(?BQ_Jxi80q{W#AV=})@PRe?`pKyNXL>9T&SM_3HtqcjrZ)+ zZsAC7{UkC4Bk@JbN+ZUHj(LReZ(aS8}@0RDk67y&AiFhZ9ZC12t9=?Qe0P3UyboXr`%NAQuMsn z;5ceLil|`^)aF>VdxyM)UvcSK3qJnX82q12;{R+4{#~JME^7q(Ilg(m62BFQYzapby#~Sfwk7t=3yhN8CGn{Y(FKCF3|G zeixtbUmswMA*=bfX8WRYCH#S^Vv^_W z7Z2dd%Yz(h)RE{Fy*!!P>0VPdDeQq?*gQmLNN@A{3fWp;o|_~83Tz1Mo4=d-*5UpD zZA+K$fWzX|_?{B~JMCvA&C`4hweHw9w+B+3Q$VQ`y1=sVDCT7Opc!VQFuw0V2IvRx z@5yLFZBl`aL^&kM0pdE2Arq2 z9NXKDwiy}0qCcFs$rw&|%zFPV|csedUi{T&J|DQ|Z|6B_GI@nKp zig>5Cu{5v)^LkBVp5J?=sW$`~`!v!cNJiADuKc3N*YYoiOE1)vmR_XD6P2<$B0VxV z9ovW0?T*1|INqbij!#|pLz@5^Ijo@L6!{+ti|u}8@&Jw50X^cxB$R0yq}v}3PQ>;~ zb-R4bQ>YF3(L@GvEE`P6_Ih=@bTAFaOULBaaj&9XInkEhLh@x2?$4MPSSaSIy{i^H z$0gu6X~x(3|M?{T&!^yT@oS(@YwD#qk76F}$)3uT5-aa1Z72!k1)heMHq8BmJotpm z^KDDsW5kHkDbu@&G+ikvlQ{?^^)vBS8V_pNIe$Nnv1-sd-xDDElp zk{H!Ax-s^$XeQ~GF^+jlt;FusmA!~I_w3N;eea+AM}J@K==V_^W$=9IH~V{n)8HL= z!OvJsEXy{ zix>%ZdYBKt5#>l)JtHlTr+GeGDi%? zGx%=6*&8@Z$8)%HlqQshyn-tP^FBx_Y%6N@paNHe$Ipb*_K{xB>Z?t_SGfclK>Pjw zen4!S~m1af(TI)>ygp{Y|4r;)CYYH`(! zzDDr|kDx9gKL?ILU+oTBugLpxVnQQ3l@I8k2}t8a>0+SMu)j_hc=C>;u-y*n4duSw z7}w%yQ=&BIN#SFWKGQjYj@GarhO`iEBwbT6SxAd871O{-VhLNpg!3AjD=n1Mi*qY{ zKiVqfFkAjjB&(sFti5_dopIpB5WS}B zhNHACpuNsPszh2u+b+_$!vF6{{QsVUzY}$kUBH;We~vzuhkstrr7M@+nitT*58G4{ zm|GsuKnEvxg9V;mf%6_l${1oxv_d(eD|>Hcq_>C9>t%2C_n-vP+H=A>a{EY`#VCU) zQIdO*Ezt?bSCj|1Tea1U^!TtJt--lck&mO7PJz#UmKf`=bTC_9yp{6#_b)eAX^I)^ z(OdiR{67xr(Bu1RXXC%oyjMCjH|jlXG1IY*=I&su`_+6WW66B?BVUpp-3=!Y0mrz) z|Ai#}FQnjK7+7{|j-#8rXPU5_Zbu#6?kEh{ZnYxMjzxrDujW{V z91PDQ<~!thx7E9d)CL~=<~fXX=OC}@1s?I4ebh4N+qr(Ea^iat4Fvu|Z-d^px}^xy zCj}e@fq7L6MvS2h#psIEaYfCAnv6(BflfWQUtpln#sAkaEZSr6 z>EXRJpOACL75*pN*_vUQUda8mTZ5?PYwBv-Xg3y|D3Sqrb>%e>FxZNgkF+LIBOfOsuNdsd{IylkGX#%Uqa zr%J%f`Krj>BX9XA9tCAL^_YmUJT0<;9K4#8>*(7mS-ednMdDNwOovD@rE}?+lKQ^D znfGbuJmLC0?C)hkRo<$~Yoi=~a1SF}0>*N4WI{v#Qg%juWE-TI84cZ6n@h5U^aW<$ z404@s-+Z1J8^#s>`;+)%Dt~7FPkD5Y-^_4L82yDgRM(=f_Cl=N1f<4u33nxu2DNVx zwvYnv)g|+k80;BnAsNsv`9FRK za5t9gk?U2U{J$^q_ZZ6&%L?DJfm~{)?I;Qg^GRa#tHu@nFDLPTIR$?SF}pqoD#hPH zMe`k0G$W`S!8&Rb7pdob&t3Z{ch4!1sppV$JuD>cMLtqdDUg}-!VHfHPx7A=h{V*! z`7|Ax?Je-~O}Rz}Hyy+6SY0eJ~!_ z>O(if_ta2Qo}Xs#53`W)Z*#C6nwc-d2hkLNQv2jr31V$oL7&BJR^&AawsZ45>hX<~ z=>%fkrQT6BTDzM{I%=l4#})psB=LVG1^=V)w$_qJUq~r4YEG^1A0-T^?TL01AcVjPjz@Py%BbC^fy4do?_(wpJA^tq{Yyg;Sn zlOmaQuPnvAnK_{3E8S^zh3MlMpgR45;uX8`Y-oCN2dacQdEP6$-=<+ftWn?*)KkxD z>%!o2{aWR6Bzahr2QjYj|3?!4f282=pPvw=9wSFev+5gsS-y#6lW(uf6ggBvrtNiU z-qbj{E#1Zk$*aDth^J+UF!M~9(tjM5dV_BSU-?)xz4Vpnv@j-yH$i5@`w8FT-Q_** zCGh-Xtf$=he+{xc@Bc0*f#UvW@NfH2wl7o5(YafiKEtPLpli`)U+0Z1qBeVO)H(9} z3Cg=cUdk()jLGi_~p@N!36cJ(Dpv?K5O1^Fy!v zsIF9h3-W7)7rq)-`2RDB|36dkzy7z&FNbbsFOj^1vWW4!VarV&H#J*2T|*ISQ%RgU zC)@C*Pvd@5wZBZ_pz-bSJ>trYEcI>lW_TODR_`_5?Y@ncE=XgWUF$FlEcE3Tev0SG zJui8S$R@}E>yUFIxyH+Q^D9Vyeks)eD)i-C)=h?hcX>hQP4Fie&z}ZK5F)g=3wO9C zM3Q-K$6Eb=d2WhNBg_LQ#r#?D9|2DAKA4px+Xsywhgp3&o<3EWo!$9om3*H7`K^*9mw6GY05 z+kD$x`Y;PK%h@27G(K;%_qcDr<#Y2xi0FO}>F_=8Vh@+&PM>nYNS<4jPtoJFR4}X8 z`S=^)|Ecat;w*6bj(JU$>7?ZbEAqdFXaLFg`Fn(^Gxc^~q1yMC`uG){h!UgmxqNGU zd010)`4*eIFkWc9O!clC{Jj`Kd?ttW29K9m8LxH4CYK>>_jMz{{1rahivB(Pskq6v z7WRmnK!^4X^DEw8(d~0tI$Q&X51P{~ihPrz@`LeT#})nullUJ@!C&eTreC73_RUr6 z{#xH%`(_c%R@1o^D~QxF{PBuiYQ0?^dDVRKhGjm|!K;XX58$=0co6ko4PDIDunw;u`92@@c#-ugQBgDB8Hf|6fV`|CNIO zcj_jRS~n(Yhc%+X-+47D8&=UX{z_Mt8Tm^7*{~)f!&qddh*JH2@N{jPRzN=&BY=@? zx`E31Q%C(z#f>XEe2k;x|7-7E;G?L{{_$sKFWGE1$>sv=B?-Gb3At7FrHDtN{Ri)}R}YK^k7%tKbw&FG;&k{_$w3~l>Jq!>L*(5r8i z>*YrHatd{phcE{uVX2Ki1vbyad*4NDv^~hQ$!2-2yasXLJQG}QHs-ikMt=e86uDJ) z^dRk6dKj(S5yHwbo$6c(#3S#Cx^Rz0ZkN}~UOWqjXL%1?q?F5l`Fy}91e;@jXy5<0 z75v|hz@N3Kl(KcSYI}ugMb+z7)A7Z;?u^+q|3=lI zDMOsN;LNUQ^yUoXV@A&S5w@?vm)}=*tMmb?9*kS%UVcGz7^$p^1YPCo6*`Kk+FMyW z3B5jE*jzJZY}V*krG&~EHB&2NN)oCXYYxeXNa<&FffW5V^%?)Yqu~Dz-ndu)ueU#) zDf5DADGAFZaVcLpp-NS?8x(9QK8cAw!;0wz`~ww0t2quWC+o_`%>$s%iajC%F>E-T+!Mn54;KQ`a8$t&TXqZaD|f^?H~FRl&f{_162l@}ehpT{nE50==fa?uuDq1Nq z&3;wea;)%T7CPFvi;XOda#X2@5>3GD3gTxzI(Sk70%8`}W&xrN@eI zyvnypUX3|r7e?VRQmK>x$pJ==^ndHup;0EeqEfM)r5rgy`Te<XZiS+&(| z_05|{&UpXRSkqHlzG~hU>6oOhLi;}-g1^QPq6gRRGRtd#`6?N+wS9VOmyZWXXpn-e ze+ZA}d%xs-Y2)l(Ip0Z)2|hm+U2iL@KNWpn~eMf#legGZ?Y`tbQC$WZ%Qa|4Z)w(%>02JExc$G|PA=b`6`SiF2$QzaW$ zhcHgy(a0GhwZ&GgvDq>^W~_N(f?MTxz0CZ{8h346_zlM0>^f&xN>~=^d#=BN>x~Qf z!mnZ7@smsDjoxxLOXtf}rLZO_or#{{HS}5J!bWPFit?LvQzoZn$R+NlO-7T>RVD8> zH9)?%&CTr>q&|p{&V$sHW9uf+orktKde%m%4Re8U!0c_%6~27t^~#Fb{Z}DhQ>se!(#CQY zAN2a_b@OAyhU(rj%$A=oSu?*uTyr6hFH`4x=oMhC$eh283%|{$Kz_4oGq)rc<4kqY zP2%oKwKv(Us@8ZlRqVU*isY{3D_2&!tCm;2QYBV{8^T&^?s>bzSL&;NQ26gx@ZTSS z|L&?1=tDK)ORlPMLk6evzbYfbAI4&))Y?fZ$YadXt1?&ks`P4&*R-NWRf$OP`^9;x zO6CWC3GQRxhgeAZ*xGzm4cU@X6Xm8VujyEou0yyBt1^CNRKffPe9{I@jqr$kH^yz; zxL0d-OJcZQv8P@U(&G9m)qDt?!~O`FzYj>F*K-Y&$@CFfPan-RO*e)*Uxlw&rZ04R zXf*tMJT~vcdE{MaX}4~6)1g#y4IOwWpIi<;SaiN=o@=D5$TjMNc}-Q&0c>TXoWJ7x z_T$hG3jYHN{s$uPC-0-~_xHh8I^+-J!<{-GOaZm-FjttDnF9fJ5l~uUrrkh=-&9{! zDekUPd8e9G)oL$mU$2E*(eg@ll^d-KJT%YP3`FPgcCiv1B9yr6t9D~V@bNk0E_V&% zrUvGlMR-j%A<`7*hwjgtG59)%xuNJ=xdB}EGVYG#G67s>N!?oY0XXM!E_(>R0WNac z1^ylTE&QwSSwCigKHvX?3jPNp@&DF#*3uo>&R*$hXD!{VooxxXv!M~~%yg(A+|HJr zyR@CDTaVV*NIeFUMYJ{OV}jR?fY;V_|2kEuW~=jT48U}x*vOi#%-M*7pJ5%QTH=b>Rc3#~JbSR7elX_aq0T=u|IU&MR}EhH zYj240782K>_u|fmakzU>h!-^EP9Z-l!~A+@5nILizTb7&bYRA)ruPaH>;4JtZ7wLC zu9lguGVkN;%z9LX=VlTiXeL7^fFWJyfHrz9*{9_5!MSG@O@!W_gMBS9XmpT$Hh6&# z{y3~b&Yz)vocgr?e<=9>1Ml1`|5MO^IgCE*W3es*I&r~x==x@mg1=$Jl;KWL-sqcN z!(?c@-H^{l4L6*1${Q}pDFfAYum9E^z$kw78R%JK2Dk>R_e#u%@|rm4+|Gp84VBLZ zB=}(R*)6zV!n`g<7*9cNShQDw7Z&mPbjliFTtx`4S?OafI zhEbhSNewEgFHmU~qtb;^u_&d24VT{Uf!3y%Pmp6ok39)9Gw4`x{_yyHEo=nCc7isd zu4Z09Tdsx7MqqdzhMm4)L@$~He4);7x}EZ+eD&m+%lYb2@Y2a{%JjV6?Eb(n&}&75 zYZ%n84Fn(D$f8exMsXeEVvW=3?nD1uLH}pF)gylEJ_Z>rSI6wZb$%6fz&5CtzP;mhExk6f z2-aTAK7hsS6X*b91p%!FE;t2!xEDQ%$&i zzG0FUwRG-MJO+FKyTVLrE3(wRJ*uMa3V0t#5;tRgFO}fw!^^x4Q)|jm8cKe{(P-Qk z>MZVtkjMUJ;W#-FvcFJgY$*DuK+Eh0@$7mR_2bm1|8G<9Z^JwH_Wz82_m?(czIV7I zs})|psKI@cFTRy?PWADK!M3%7oX^8whMnFlJY0|<@%E`wgY;5hdAKC`pXvw|h6)?p zo6#!Y14TLK29!Qrm~bB=FN^LDcnsqj+*5px)-8^GsN3aR0&ilRlMbzfkBC;_SW#yu z_7o110kc;5#$aIUcJlzdtXK%Km;)YHhV_uVo`J4rB5SlN3r5qJTK) zee|?yjK_LMXuO@3K)Zt{5vG$n8^027Zv}tY$n2_smlu5-7cA=H*k~e)eBCGVOB)0E zr5gh9*NnJ6y>*lCixZ4Xtab4YGbOl^+y{IWJ8bA%c-;R`*E=Zxv#z%y${)I{{7Vt# zr*<`?{AffANe=f6W6nGKGyHw=Kdj(?I0FA1^ozADsXU7#3=rRfmdeXRY0=-?-c(+N8E2^kt{lEry;=W_Dc{LwA9g0n3 zo&i5Rr~EE^&gbx)ADz?Vd15*g6yJlTf(?3LW?a1=R}Y0I}@yks@Eq@OET z?s}XoGggb1sr?xKzU}{?3jY6$z&{^rH;jI2Y+?JYGK;)Iv_R+9=sxE|P7ArhbL=jS zjSD{5rGx)1gVWyn7E<@Db{(~{{z$id|$!; z{RsRS1}uIr*ASDHaEQ_kStI;0nKl|+W}9M>A1t0z42@83plCI}=vLwSkd7z{29C%n z#N``{^4zEV1Fj=)3+;xd)zKzVVyn8W=S}uk7vn4Kj{&bFgvQBEahybXQGT^O1{{W# z2M*JN!o}!1!{5M}*x3bxFm(**K zH6?nNMPeh`jdH>TUJiAK;49cr#<*@~^%CX^v)`sZ{eOpoe+S;UxBu@OXQ8{Z>})Sx zS zYY&%G^^_~Tq?{JfWZJ3-BYyZFuAEufSlL$DSRG$D6RU~LUIlW)vKF$KrphhT;l~DY zVEFw-JmYVZJ@#Ah@nU`OKdRt=Gy?x`TT^BBA8#NAYy+e#$)#2~ie{x_-R4kY>CEw% zb+yJ1=Q2($+9sZw15b>hBHC1Bfwj2Pm4g+X6w-Gv{b9y8E!HjWll!@J7CUwp%w#L1(q(pWa#!>2n%j%p=INoK7V12JQr(>!VW(oW>)jK5e4Q$1 zpx=|p4|$o~^C&0QXI@<3{?y0KkFDb{{O!M~5B?u0_8J>^qIkQBzn?bJuBYnYQ#8)+7^Tp~?u^1k(ya z-_ws%AN-Fg_#eYN_xAscUgS|DE)uy^b)A?4yivnBqMI@&cZ6d73b76)M6^(Ht@kw=bqiswBvjwmp`tG6XJ8ZL+R1Sc8sMh zkRy=LvZHHmQ8ia|YEIFD&Ryeev+T0S2UE}KQ6sCP(cOMXSHf)6!|#Q6nhn8oZ-3)? zc!Lt3rtarlSF;K;9mt{jaq5HraRvY55%`ZmkNHa=ndAGgrn}REIh`3jzLsWXvL1g> z>CCIbJ^m=n(yBjR#1$oppUmNfj~B6hsI#)$<(NM|$*sdIy&Tb;&UAaMFS@_nkF_E6 z&y%|6FN`YN1S>JdHP4+hV#R>17bHntyLvI{#YtIRe7%NS$FEnxYrt^Sw!fPj5(Q2Z zx}A$HROl)~ypT^8c6a`*dr(=66}qH{IOvincK<2eAHye&jjF47uTUN1ZK~3HtE&ad z#o8hIiSDShk05h4Z1ifpvGb*@YWO^y<6Hn=vi&&q!T&=A{|_VZx8*ylyE|_=C#JOd zhgCZl`~z+0y4^$-Jkc@-H+uJ=B$w6Ho`Crq#}|5cgbJAs2fQ?-dmK?E`zW2CVKR~( z5%)|f;FLqg6c+QzWAo72fag4h0nL2DDsq`bc@W)HV_j{R9W}qUJc5#GkPez?y?HgF zxH>9VsJQj^pEvK&Q+e8o3DZ=VkvK|STWTCjVQ1=VTGL`Gq{rX`>Y8&aZA~)qUUQQ~ z-Yn51a$ZCV9!5S=V*|A`3v8C61^&xADMd@kXjv6Q??E(>iD+Tqima^wB_(*3iH!;jO5 zshzv_(y8ff0r<=bm+=T*&8LA6=nv(efoBL|n%J5j{O-Sx?RiLQfO~$k%XGE;OwE>` zp`&&+-9CTy8XzA-SEoHW!IN>4QpIO?%#vNIEKzff)tu$p2;D4?(9QwT9EK=t(Uyfm zu|3?w{hdNJmtG#?Q3X&cw<^L!z_69qU(N#a9ojIxQmcSR{D)I`fLa+0~_9=z{c??bQca=J;p6 zst)ZD@w>u$-uSIx&-eOPcpfmM-BYuxhStXUUBXqRf2iM4S+Mk}+dcMqmCpL{rB{@# z()i26o&fU3`o@;Mg%+-A7*po5?StRx{d0?!j+J?Mf#h51<_|$u!6lQ<_!3+BC1y<5*r0DlmwNT8Fqq(v3VdcTIrcqPbUx zh>b1O*gVM7VIK$HBl~WNX{+4|J;a#O58(NUa|j-NiI4PCTqZvm%=OZ-xx1yP$y{Ny zY46oFIk*!kHajlM>G%E@z^ys<}185>|3149x!I?X1Fk{jXsXTeTF?MJeF&e zxq@jlO$VzJneE%8`0OvjYd6MnZP^}r%cL#iY@J+VEg z2pwx3arW*`7H@Ku^IOnKFJ{P`=pL`w~0I=8$oq=s9 ziz9Hp^A|XO1;D^}9LlhjSS7x|6=D9H7|&$4EZ)FX7tWcCNVQ(ysG)cwND@n14e6FR zE6-!~Qr`$K;TyRPTre-RK+G=FVm4SU*Td>mlAMFvcThu%01rZ(AaXhRt=zCYzsg~e zAW7)QsSp02DfoYeckac199BkEUWZ)4UGM5}B)M3ePX{D)#j#Nmn4PyS7yA4yGC21;WV`DU?_h*rGWlxhIetqA8<~SGJ z(=Dc`Y|};6==1wtV{>v3xm=^jc3ZQ-M!`mSd(XUP+gu86KEpXO@ZFfdfLZOT90HD? zna|~(^Ya;+A$CNA(+Y!2ZSXBPt*Z!{iS%$cU34dzQ@DyWfAhO>rfn}Ghj1m{jr zE`hYT>JHt;z6ro<{C0BXW20g64D#?Uy8jo@5y9U2M{>=$Es7Q#=5a_I?5ta+*G^*i zvh_s!uJQ1*eWM#5@T0jjp#G` z2l5_X?`m}0e2Jxr*KRd255yk(G* zNL%1tzz(nU=h}`*I)O=@@eb_aT<2eAV-D)T){j#k{DTVqLA-Ns`-cS-*309k#FvqI zqFb8aq1UE!g3Y$Z1+Sjtuv*%_!mT>o;4)H*oB4Zpxe@i3R=ASgXMEgf%Ia$S3Ug@R z^D=PO2%XJ)e+2!|_C|N2Kjx>Kip^!Si+7uDg3tFsW!!_0({a?j&BcvtaHUd)OK_Wf ziD-DuQg2OUeHp!@VnH+Pt<1Mx*- z9%0x$15myn!{2xQ_l1K07ZLc^hTCT>X`vMve_G>+qNjfZzZgGdR<&vpQ+Pj%tyFuO zhu$aC2Kg0iZ7HZd%~tXmy@SoEWD?56H%z1G-tC7+sn(B`-!9_T7t-5>iLk`y*S9#< zW2EQ7xM4j{>nsutHTX^V7GEzO$Bt_}%(S7oGpY_`%J!s}bS1ah&w3 zixVua4(7)}ETmSf1I|xNb+rRQHXhJFlTl|%pCW3_qv-9Cheur{kCfjYu6np-h}yi9 z8!m!__#qOODSq=?tRoB_KJc2uLo!5DI`>cpy-<9O_=Cd#O9lTgBk;f4{LI83bBNy5 zIz=QiPhRafk=f{|U}4=_WM;_Z1I&zdWc!;J@Gp^8e z7~gYG2ld!lspV%xwPZ>sXRdFGs5WO%n*8R7Jn0sBk@N^;!OuyDfj8ruRPvAHenxdz)G=hR}0N$+aSAA&MGB>hUwo*{3J zxP#A=x`y1rFOph@j8r`*{XM`Tsmf-|)6<4|Gv=*!pJDSw=mu%ZX5#GJ{?*J+(7YAy z9~Azl6#P#`;7|K&C(WD(&%dCJmVL8LDmj{);mQ}xEEY4T63r5uqp4ds7xTNkWT&b$ z3369O!dg2im!q&(NX)x1O7omD-lyb6Iri#y-^AGxpml3#mb0X^TNx_LJxiSut@D^%|=-(GE$r}pVKz=v-a zH@qXjbO${G56`9WPFw|iJsQ{3kVLYPryW))ZIZe~U78@x#Q5S|8^fP>(e^V$67NbD zpw&vI`#_3*oBDkJzf$o33UA!|{Z}JK+XiUk#=n5s)`s()<4&`A7>D`U$kSuczdvF( zHt*4>Q-YnJ0UN#V5xXsAkA{LD!Z*n5v+%B?Z7~^l+3@pYRLD6^2VXWNt8$xi)h(6 zva2?5jcymeVc(A3mKRAUa--w2+^s=Gky!BLJx^|a@}30?Hs6z%m$!ttO#VU2J?O&} zqVtK+omYv2H@U`H_=dd!RVIEb_f0={)f)jP=BzYyKh~Inuu2sNZ+6`Q@1j;qzXcyJ z)(8Ku75u-Bz<*Dm2-ZC`^bJ2Z=C!~W785CZj8ByfUu+$ef!IyiY5s-$LVb%SOWYS_ z6xla=7PpXl#+|j_V&m+ytlW@HDxq13rNg!V*3GrfvK9a>$~xtj(pF9|h$dQ=Pg&_l zDx=iCc)Q)D&L*FFxSdlS^b|pWTw-v2sO!#p`v^45I;=M6X^%S?z#6cMjW<)>**;GO z*LYHuA%<*!4&;)m@woty%!syRkv04GhaV}*piQoKTr8e@hB%-7hTwFm;nhGr!XspX zqfD+;cf9|k&I`{|o^-C^xauG@MRH+}=nrt~e^B^;qu~Ed1pa@AE?pM=3V%7-el24@0_`HS5rycEr*+gU#^xj@jY_@g`9eqs@a6AgscKNX3VsX~-`# znbptkxW@bpSDAMI1gqiMxOQ`{=;cyGD>oPZgDZ6@E`w+cb719>>M(a8)-mIb;R548 z2rv3?>eK!^75qCR@Hf&`Whwa5c4rMgLiVx_l>qPh4K(Z#KR51I_`-5fp?b;}?EGmr z>sMKyX|ikyWRVK_n^DG#*0|jDge{g@NaNz%Y5uh~4{`2d|DQ&OMsw~>KGjBG>hvL= zyBl`CkR3XAB6dp&UxGeGC$>kK!hK3SECFM(KJtwx&Kn4~|G{YgDefUYkA0773|jy3 zKp|}m;Cbv;i;k?$!-pR!w9|vGL*ce>7t6xv#wh3(cm!Rz?VAx}a*ytf0Q7$!3aMJr z^7)2LIskhx&h{53gX+hr5B^;W{#_CHEA3t6XX@|WejQpozy4afOaEZ;>+!TcJuP~lnZU+qaM4K_NetDe8A;J9k$s#)&$5CzHl+UuLQBeG?SwP z2}h-rZj?UQ!8sl-vA8O9kU@&m@ryQJzLj!ys9Eish~IqO7s}H4ljw~=D3AP6s9lZP zV_5CEtaccDQN8P^YkFG!1hY7t)|lQ6blasAoqMRCaIih<9Q92R~c> zk2|1k<^N|#qsd15b<;R_Ubp?UG|3fmv}pEeDtM!-LT?gJMnOvpUw?MT!SEgXJ3MxN z!yeUrh!aB_u!OuXiQ09Win)h8;DI}Rh`XUv(>9=%2|h^$pOAk^K;aaxg-ee^De~8# z2l-Y`urN-zzr)Kt61_OgJCEY`_NcX_7e5SOL=onM7;r*Vm=kz^EbX`K4={d+rKMqh zSlQu8Kdu%;X!_b1KbXjt(c#LqHo0y}YnosJKlJC+2mdn){+Iz>z(1CfEN=z6Gv}nJ z9=_7WJ*;}8^5VVwG#ZXI6#}Q-#lGJ^)fFSY9-zFB5kdH^KvHSCCCN3D_4p2p zOATE?bN{vhi${^HY@w(F8ygYg^Bz^7U8L=uH;J5S`(ZTOz;IKjr2n~I-T#yUU$ zLE(Q^!T)Ro{-Mya!T1K8oxqFqYJ3TzdRyb}ajK4NcJfDbWj<5wBoAD8>BNVenj;U7 z+u)*{uYE4}sldbby_QxN%s){9VJ@wv4bZa*cFsQch+wrm?9?6BWo7$xqgT3S@vWL! zdYcIUpHAx$9xF1|LRj|_ljLjc(U!Me$)cgu;i`;^$Na$HQs>6_)P)ChQ@N;vj|$pS zt0fuICHLS5U7rLF=>8FSSU9L)ca}YSZF3p1+2*zUs~Br?wxMx%=&f;k;zL8V;Nm2I z2;K}RPwPWpgUGU*vAXaAwAIPBnrZ*$!%s**PJP<{IR*c75%}|d8!_oj?XLW0H|RKp z-yJ`hreV}ROHW}sB9dc{*&oWnK6ikhhT8m;#lHDzIJaX(fG|VkN2he$>+WjbikMJj z+v*;$kIVluz}s~APMq{@1l8|#e|ChG)q#7o_#%9TyT9}!$N7yv|NqHvCw#Bp1}XY& z>VyAz1^@GS<6iks{w^)n*(tcZi^Do!PS-$K#-_@-^C@=_tTrgPt4p1hRjq+fmuYrm zSpwDq9_})haSoMaEEBQSOEE(Ia;yMXij}sS${IsyY#HKs!NwM|ZPSbiw#v%N$>h@2 zVx8s&tm$73nbJ+z;)>qcHav0RiBJEjp`ptjnlkjOsnheDDV-a$6;^~;OX^VF%ngsd zd7Jwi-*js}BE_zNS6@gaCYfuwA{K2p?29g2edvOw!mi!$8mjiKhK{KP5SwsVOSIat}rkc95dqrat(0EBHgv>H_{*WR})Kx8r@t?wEI9$V3sV z)d$N;1uqid&Ep!T^N~PKsT;8#u!fIlTg*SJ02%zxMl(H)?#|7)gM9}Yff2j{-}KrI zTu~S5Tn4=m3q`~B%PPlFs~lBExtu?$EQO*q;-G8VeC2tLY$*Hbo&PrAE& z*%o#c(PHwy^nV_>9nag@ta9v4X%KZqntqEtd$B(FhZOvo)7#$mKbQ>8;rk4ke{vVK zW}%h*q-)f*MX>It++qGPVVV3J;dQ`U{ljH?ki`lrMbACWC&*cJ%tRZxhVIUxIRVGl1G_Dd`7zEp7*Og_U8tv8xH9bMr& zZVo|rM98-DPfs(&G}sX7l`G(%HWp1Y!EfV(!%0A7Y0j77ob3Od^#yl~Zyd1*Fg#WR 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 Date: Mon, 15 Sep 2025 12:06:12 -0300 Subject: [PATCH 134/152] update corne conf --- configs/keebs/Corne Choc.vil | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/keebs/Corne Choc.vil b/configs/keebs/Corne Choc.vil index 10aefd9..c2bb01b 100644 --- a/configs/keebs/Corne Choc.vil +++ b/configs/keebs/Corne Choc.vil @@ -1 +1 @@ -{"version": 1, "uid": 5010774632021243529, "layout": [[["LT4(KC_TAB)", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_VOLU"], ["KC_ESCAPE", "LGUI_T(KC_A)", "LALT_T(KC_S)", "LSFT_T(KC_D)", "LCTL_T(KC_F)", "KC_G", "KC_VOLD"], ["KC_LSHIFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", -1], [-1, -1, -1, "OSM(MOD_LGUI)", "KC_SPACE", "FN_MO23", -1], ["KC_LBRACKET", "KC_P", "KC_O", "KC_I", "KC_U", "KC_Y", "KC_PGUP"], ["KC_BSPACE", "RGUI_T(KC_SCOLON)", "RALT_T(KC_L)", "RSFT_T(KC_K)", "RCTL_T(KC_J)", "KC_H", "KC_PGDOWN"], ["KC_RSHIFT", "KC_SLASH", "KC_DOT", "KC_COMMA", "KC_M", "KC_N", -1], [-1, -1, -1, "OSM(MOD_RGUI)", "KC_ENTER", "FN_MO13", -1]], [["KC_NO", "KC_NO", "KC_NO", "LSFT(KC_PSCREEN)", "KC_PSCREEN", "KC_NO", "KC_TRNS"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "QK_REPEAT_KEY", "KC_TRNS"], ["KC_TRNS", "KC_UNDO", "KC_CUT", "KC_COPY", "KC_PSTE", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_NO", "KC_NO", "KC_END", "KC_PGUP", "KC_PGDOWN", "KC_HOME", "KC__VOLUP"], ["KC_DELETE", "KC_NO", "KC_RIGHT", "KC_UP", "KC_DOWN", "KC_LEFT", "KC__VOLDOWN"], ["KC_TRNS", "KC_NO", "KC_MNXT", "KC_MPLY", "KC_MPRV", "KC_HOME", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_EQUAL", "LSFT(KC_MINUS)", "KC_QUOTE", "KC_BSLASH", "KC_MINUS", "KC_TRNS"], ["KC_TRNS", "KC_NONUS_BSLASH", "LSFT(KC_NONUS_BSLASH)", "LSFT(KC_8)", "LSFT(KC_9)", "LSFT(KC_2)", "KC_TRNS"], ["KC_TRNS", "LSFT(KC_EQUAL)", "LSFT(KC_1)", "LSFT(KC_QUOTE)", "LSFT(KC_BSLASH)", "RALT(KC_NONUS_HASH)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["RALT(KC_QUOTE)", "RALT(KC_MINUS)", "KC_SLASH", "KC_RBRACKET", "LSFT(KC_7)", "LSFT(KC_RBRACKET)", "KC_TRNS"], ["KC_TRNS", "RALT(KC_RBRACKET)", "LSFT(KC_0)", "LSFT(KC_3)", "LSFT(KC_4)", "KC_GRAVE", "KC_TRNS"], ["KC_TRNS", "LSFT(KC_SLASH)", "LSFT(KC_DOT)", "LSFT(KC_COMMA)", "LSFT(KC_5)", "LSFT(KC_6)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_NO"], ["RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI", "KC_NO", "KC_NO", "KC_NO"], ["RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_F12", "KC_F11", "KC_F10", "KC_F9", "KC_F8", "KC_F7", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", -1], [-1, -1, -1, "OSM(MOD_LALT|MOD_LGUI)", "OSM(MOD_LCTL|MOD_LGUI)", "OSM(MOD_LSFT|MOD_LGUI)", -1], ["KC_TRNS", "KC_NO", "KC_9", "KC_8", "KC_7", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_NO", "KC_6", "KC_5", "KC_4", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_DOT", "KC_3", "KC_2", "KC_1", "KC_DOT", -1], [-1, -1, -1, "KC_0", "KC_TRNS", "OSM(MOD_LGUI)", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]]], "encoder_layout": [[["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]]], "layout_options": 0, "macro": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "vial_protocol": 6, "via_protocol": 9, "tap_dance": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200]], "combo": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]], "key_override": [{"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}], "alt_repeat_key": [{"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}], "settings": {"1": 0, "2": 50, "3": 0, "4": 175, "5": 5, "6": 5000, "7": 200, "9": 10, "10": 20, "11": 8, "12": 10, "13": 30, "14": 10, "15": 80, "16": 8, "17": 40, "18": 0, "19": 80, "20": 5, "21": 0, "22": 0, "23": 0, "24": 0, "25": 200, "26": 0, "27": 0}} \ No newline at end of file +{"version": 1, "uid": 5010774632021243529, "layout": [[["LT4(KC_TAB)", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_VOLU"], ["KC_ESCAPE", "LALT_T(KC_A)", "LGUI_T(KC_S)", "LSFT_T(KC_D)", "LCTL_T(KC_F)", "KC_G", "KC_VOLD"], ["KC_LSHIFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", -1], [-1, -1, -1, "0x5088", "LT4(KC_SPACE)", "FN_MO23", -1], ["KC_LBRACKET", "KC_P", "KC_O", "KC_I", "KC_U", "KC_Y", "KC_PGUP"], ["KC_BSPACE", "LALT_T(KC_SCOLON)", "RGUI_T(KC_L)", "RSFT_T(KC_K)", "RCTL_T(KC_J)", "KC_H", "KC_PGDOWN"], ["KC_RSHIFT", "KC_SLASH", "KC_DOT", "KC_COMMA", "KC_M", "KC_N", -1], [-1, -1, -1, "OSM(MOD_RGUI)", "LT5(KC_ENTER)", "FN_MO13", -1]], [["KC_NO", "KC_NO", "KC_NO", "LSFT(KC_PSCREEN)", "KC_PSCREEN", "KC_NO", "KC_WH_L"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "QK_REPEAT_KEY", "KC_WH_R"], ["KC_TRNS", "KC_UNDO", "KC_CUT", "KC_COPY", "KC_PSTE", "QK_ALT_REPEAT_KEY", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_NO", "KC_UNDO", "KC_CUT", "KC_COPY", "KC_PSTE", "KC_AGIN", "KC_WH_U"], ["KC_DELETE", "KC_NO", "KC_RIGHT", "KC_UP", "KC_DOWN", "KC_LEFT", "KC_WH_D"], ["KC_TRNS", "KC_NO", "KC_END", "KC_PGUP", "KC_PGDOWN", "KC_HOME", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_EQUAL", "LSFT(KC_MINUS)", "LSFT(KC_QUOTE)", "LSFT(KC_BSLASH)", "KC_MINUS", "KC_TRNS"], ["KC_TRNS", "KC_NONUS_BSLASH", "LSFT(KC_NONUS_BSLASH)", "LSFT(KC_8)", "LSFT(KC_9)", "LSFT(KC_2)", "KC_TRNS"], ["KC_TRNS", "LSFT(KC_EQUAL)", "LSFT(KC_1)", "KC_QUOTE", "KC_BSLASH", "RALT(KC_NONUS_HASH)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["RALT(KC_QUOTE)", "RALT(KC_MINUS)", "KC_SLASH", "KC_RBRACKET", "LSFT(KC_7)", "LSFT(KC_RBRACKET)", "KC_TRNS"], ["KC_TRNS", "RALT(KC_RBRACKET)", "LSFT(KC_0)", "LSFT(KC_3)", "LSFT(KC_4)", "KC_GRAVE", "KC_TRNS"], ["KC_TRNS", "LSFT(KC_SLASH)", "LSFT(KC_DOT)", "LSFT(KC_COMMA)", "LSFT(KC_5)", "LSFT(KC_6)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6", "KC_NO"], ["RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI", "KC_NO", "KC_NO", "KC_NO"], ["DF(0)", "RGB_HUD", "RGB_SAD", "RGB_VAD", "KC_NO", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_F12", "KC_F11", "KC_F10", "KC_F9", "KC_F8", "KC_F7", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "TG(1)", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_GRAVE", "KC_7", "KC_8", "KC_9", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_LGUI", "KC_4", "KC_5", "KC_6", "KC_NO", "KC_NO"], ["KC_TRNS", "KC_NO", "KC_1", "KC_2", "KC_3", "KC_NO", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_GRAVE", "KC_9", "KC_8", "KC_7", "KC_6", "KC_NO"], ["KC_BSPACE", "KC_SLASH", "KC_6", "KC_5", "KC_4", "LSFT(KC_7)", "KC_NO"], ["KC_TRNS", "KC_DOT", "KC_3", "KC_2", "KC_1", "KC_DOT", -1], [-1, -1, -1, "KC_0", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_BTN3", "KC_BTN1", "KC_BTN2", -1], ["KC_TRNS", "KC_UNDO", "KC_CUT", "KC_COPY", "KC_PSTE", "KC_AGIN", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_WH_R", "KC_WH_U", "KC_WH_D", "KC_WH_L", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_MS_R", "KC_MS_U", "KC_MS_D", "KC_MS_L", -1], [-1, -1, -1, "KC_NO", "KC_NO", "KC_NO", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]], [["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", -1], [-1, -1, -1, "KC_TRNS", "KC_TRNS", "KC_TRNS", -1]]], "encoder_layout": [[["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["RGB_MOD", "RGB_RMOD"], ["RGB_HUI", "RGB_HUD"], ["RGB_VAI", "RGB_VAD"], ["RGB_SAI", "RGB_SAD"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]]], "layout_options": 0, "macro": [[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []], "vial_protocol": 6, "via_protocol": 9, "tap_dance": [["OSL(2)", "FN_MO23", "OSL(4)", "0x5088", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", 200]], "combo": [["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"]], "key_override": [{"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}, {"trigger": "KC_NO", "replacement": "KC_NO", "layers": 65535, "trigger_mods": 0, "negative_mod_mask": 0, "suppressed_mods": 0, "options": 7}], "alt_repeat_key": [{"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}, {"keycode": "KC_NO", "alt_keycode": "KC_NO", "allowed_mods": 0, "options": 0}], "settings": {"1": 0, "2": 50, "3": 0, "4": 175, "5": 5, "6": 5000, "7": 200, "9": 10, "10": 20, "11": 5, "12": 5, "13": 15, "14": 10, "15": 80, "16": 8, "17": 40, "18": 0, "19": 80, "20": 5, "21": 0, "22": 0, "23": 0, "24": 0, "25": 200, "26": 0, "27": 0}} \ No newline at end of file From 301f316144823047f8fa8c612d3a8e1ba50fd086 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 23 Sep 2025 13:03:55 -0300 Subject: [PATCH 135/152] update kitty conf --- .dotter/global.toml | 2 +- configs/kitty/kitty.conf | 2341 +---------------------------------- configs/wezterm/wezterm.lua | 4 +- 3 files changed, 13 insertions(+), 2334 deletions(-) diff --git a/.dotter/global.toml b/.dotter/global.toml index 929eb19..e1a70cd 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -28,6 +28,7 @@ depends = [] "configs/uwsm" = "~/.config/uwsm" "configs/vimiv" = "~/.config/vimiv" "configs/waybar" = "~/.config/waybar" +"configs/wezterm" = "~/.config/wezterm" "configs/wlogout" = "~/.config/wlogout" "configs/wpaperd" = "~/.config/wpaperd" "configs/yazi" = "~/.config/yazi" @@ -35,4 +36,3 @@ depends = [] [default.variables] - diff --git a/configs/kitty/kitty.conf b/configs/kitty/kitty.conf index 77d48f2..c0778e6 100644 --- a/configs/kitty/kitty.conf +++ b/configs/kitty/kitty.conf @@ -3,1946 +3,38 @@ # Catppuccin-Macchiato include current-theme.conf -#: Fonts {{{ - -#: kitty has very powerful font management. You can configure -#: individual font faces and even specify special fonts for particular -#: characters. - font_family JetBrainsMono Nerd Font -# bold_font auto -# italic_font auto -# bold_italic_font auto - -#: You can specify different fonts for the bold/italic/bold-italic -#: variants. To get a full list of supported fonts use the `kitty -#: +list-fonts` command. By default they are derived automatically, by -#: the OSes font system. When bold_font or bold_italic_font is set to -#: auto on macOS, the priority of bold fonts is semi-bold, bold, -#: heavy. Setting them manually is useful for font families that have -#: many weight variants like Book, Medium, Thick, etc. For example:: - -#: font_family Operator Mono Book -#: bold_font Operator Mono Medium -#: italic_font Operator Mono Book Italic -#: bold_italic_font Operator Mono Medium Italic - font_size 12.0 -#: Font size (in pts) - -# force_ltr no - -#: kitty does not support BIDI (bidirectional text), however, for RTL -#: scripts, words are automatically displayed in RTL. That is to say, -#: in an RTL script, the words "HELLO WORLD" display in kitty as -#: "WORLD HELLO", and if you try to select a substring of an RTL- -#: shaped string, you will get the character that would be there had -#: the string been LTR. For example, assuming the Hebrew word ירושלים, -#: selecting the character that on the screen appears to be ם actually -#: writes into the selection buffer the character י. kitty's default -#: behavior is useful in conjunction with a filter to reverse the word -#: order, however, if you wish to manipulate RTL glyphs, it can be -#: very challenging to work with, so this option is provided to turn -#: it off. Furthermore, this option can be used with the command line -#: program GNU FriBidi -#: to get BIDI support, because it will force kitty to always treat -#: the text as LTR, which FriBidi expects for terminals. - -# symbol_map - -#: E.g. symbol_map U+E0A0-U+E0A3,U+E0C0-U+E0C7 PowerlineSymbols - -#: Map the specified Unicode codepoints to a particular font. Useful -#: if you need special rendering for some symbols, such as for -#: Powerline. Avoids the need for patched fonts. Each Unicode code -#: point is specified in the form `U+`. You -#: can specify multiple code points, separated by commas and ranges -#: separated by hyphens. This option can be specified multiple times. -#: The syntax is:: - -#: symbol_map codepoints Font Family Name - -# narrow_symbols - -#: E.g. narrow_symbols U+E0A0-U+E0A3,U+E0C0-U+E0C7 1 - -#: Usually, for Private Use Unicode characters and some symbol/dingbat -#: characters, if the character is followed by one or more spaces, -#: kitty will use those extra cells to render the character larger, if -#: the character in the font has a wide aspect ratio. Using this -#: option you can force kitty to restrict the specified code points to -#: render in the specified number of cells (defaulting to one cell). -#: This option can be specified multiple times. The syntax is:: - -#: narrow_symbols codepoints [optionally the number of cells] - -# disable_ligatures never - -#: Choose how you want to handle multi-character ligatures. The -#: default is to always render them. You can tell kitty to not render -#: them when the cursor is over them by using cursor to make editing -#: easier, or have kitty never render them at all by using always, if -#: you don't like them. The ligature strategy can be set per-window -#: either using the kitty remote control facility or by defining -#: shortcuts for it in kitty.conf, for example:: - -#: map alt+1 disable_ligatures_in active always -#: map alt+2 disable_ligatures_in all never -#: map alt+3 disable_ligatures_in tab cursor - -#: Note that this refers to programming ligatures, typically -#: implemented using the calt OpenType feature. For disabling general -#: ligatures, use the font_features option. - -# font_features - -#: E.g. font_features none - -#: Choose exactly which OpenType features to enable or disable. This -#: is useful as some fonts might have features worthwhile in a -#: terminal. For example, Fira Code includes a discretionary feature, -#: zero, which in that font changes the appearance of the zero (0), to -#: make it more easily distinguishable from Ø. Fira Code also includes -#: other discretionary features known as Stylistic Sets which have the -#: tags ss01 through ss20. - -#: For the exact syntax to use for individual features, see the -#: HarfBuzz documentation . - -#: Note that this code is indexed by PostScript name, and not the font -#: family. This allows you to define very precise feature settings; -#: e.g. you can disable a feature in the italic font but not in the -#: regular font. - -#: On Linux, font features are first read from the FontConfig database -#: and then this option is applied, so they can be configured in a -#: single, central place. - -#: To get the PostScript name for a font, use `kitty +list-fonts -#: --psnames`: - -#: .. code-block:: sh - -#: $ kitty +list-fonts --psnames | grep Fira -#: Fira Code -#: Fira Code Bold (FiraCode-Bold) -#: Fira Code Light (FiraCode-Light) -#: Fira Code Medium (FiraCode-Medium) -#: Fira Code Regular (FiraCode-Regular) -#: Fira Code Retina (FiraCode-Retina) - -#: The part in brackets is the PostScript name. - -#: Enable alternate zero and oldstyle numerals:: - -#: font_features FiraCode-Retina +zero +onum - -#: Enable only alternate zero in the bold font:: - -#: font_features FiraCode-Bold +zero - -#: Disable the normal ligatures, but keep the calt feature which (in -#: this font) breaks up monotony:: - -#: font_features TT2020StyleB-Regular -liga +calt - -#: In conjunction with force_ltr, you may want to disable Arabic -#: shaping entirely, and only look at their isolated forms if they -#: show up in a document. You can do this with e.g.:: - -#: font_features UnifontMedium +isol -medi -fina -init - -# modify_font - -#: Modify font characteristics such as the position or thickness of -#: the underline and strikethrough. The modifications can have the -#: suffix px for pixels or % for percentage of original value. No -#: suffix means use pts. For example:: - -#: modify_font underline_position -2 -#: modify_font underline_thickness 150% -#: modify_font strikethrough_position 2px - -#: Additionally, you can modify the size of the cell in which each -#: font glyph is rendered and the baseline at which the glyph is -#: placed in the cell. For example:: - -#: modify_font cell_width 80% -#: modify_font cell_height -2px -#: modify_font baseline 3 - -#: Note that modifying the baseline will automatically adjust the -#: underline and strikethrough positions by the same amount. -#: Increasing the baseline raises glyphs inside the cell and -#: decreasing it lowers them. Decreasing the cell size might cause -#: rendering artifacts, so use with care. - -# box_drawing_scale 0.001, 1, 1.5, 2 - -#: The sizes of the lines used for the box drawing Unicode characters. -#: These values are in pts. They will be scaled by the monitor DPI to -#: arrive at a pixel value. There must be four values corresponding to -#: thin, normal, thick, and very thick lines. - -# undercurl_style thin-sparse - -#: The style with which undercurls are rendered. This option takes the -#: form (thin|thick)-(sparse|dense). Thin and thick control the -#: thickness of the undercurl. Sparse and dense control how often the -#: curl oscillates. With sparse the curl will peak once per character, -#: with dense twice. - -# text_composition_strategy platform - -#: Control how kitty composites text glyphs onto the background color. -#: The default value of platform tries for text rendering as close to -#: "native" for the platform kitty is running on as possible. - -#: A value of legacy uses the old (pre kitty 0.28) strategy for how -#: glyphs are composited. This will make dark text on light -#: backgrounds look thicker and light text on dark backgrounds -#: thinner. It might also make some text appear like the strokes are -#: uneven. - -#: You can fine tune the actual contrast curve used for glyph -#: composition by specifying up to two space-separated numbers for -#: this setting. - -#: The first number is the gamma adjustment, which controls the -#: thickness of dark text on light backgrounds. Increasing the value -#: will make text appear thicker. The default value for this is 1.0 on -#: Linux and 1.7 on macOS. Valid values are 0.01 and above. The result -#: is scaled based on the luminance difference between the background -#: and the foreground. Dark text on light backgrounds receives the -#: full impact of the curve while light text on dark backgrounds is -#: affected very little. - -#: The second number is an additional multiplicative contrast. It is -#: percentage ranging from 0 to 100. The default value is 0 on Linux -#: and 30 on macOS. - -#: If you wish to achieve similar looking thickness in light and dark -#: themes, a good way to experiment is start by setting the value to -#: 1.0 0 and use a dark theme. Then adjust the second parameter until -#: it looks good. Then switch to a light theme and adjust the first -#: parameter until the perceived thickness matches the dark theme. - -# text_fg_override_threshold 0 - -#: The minimum accepted difference in luminance between the foreground -#: and background color, below which kitty will override the -#: foreground color. It is percentage ranging from 0 to 100. If the -#: difference in luminance of the foreground and background is below -#: this threshold, the foreground color will be set to white if the -#: background is dark or black if the background is light. The default -#: value is 0, which means no overriding is performed. Useful when -#: working with applications that use colors that do not contrast well -#: with your preferred color scheme. - -#: WARNING: Some programs use characters (such as block characters) -#: for graphics display and may expect to be able to set the -#: foreground and background to the same color (or similar colors). -#: If you see unexpected stripes, dots, lines, incorrect color, no -#: color where you expect color, or any kind of graphic display -#: problem try setting text_fg_override_threshold to 0 to see if this -#: is the cause of the problem. - -#: }}} - -#: Cursor customization {{{ - -# cursor #cccccc - -#: Default cursor color. If set to the special value none the cursor -#: will be rendered with a "reverse video" effect. It's color will be -#: the color of the text in the cell it is over and the text will be -#: rendered with the background color of the cell. Note that if the -#: program running in the terminal sets a cursor color, this takes -#: precedence. Also, the cursor colors are modified if the cell -#: background and foreground colors have very low contrast. - -# cursor_text_color #111111 - -#: The color of text under the cursor. If you want it rendered with -#: the background color of the cell underneath instead, use the -#: special keyword: background. Note that if cursor is set to none -#: then this option is ignored. - -# cursor_shape block - -#: The cursor shape can be one of block, beam, underline. Note that -#: when reloading the config this will be changed only if the cursor -#: shape has not been set by the program running in the terminal. This -#: sets the default cursor shape, applications running in the terminal -#: can override it. In particular, shell integration -#: in kitty sets -#: the cursor shape to beam at shell prompts. You can avoid this by -#: setting shell_integration to no-cursor. - -# cursor_beam_thickness 1.5 - -#: The thickness of the beam cursor (in pts). - -# cursor_underline_thickness 2.0 - -#: The thickness of the underline cursor (in pts). - -# cursor_blink_interval -1 - -#: The interval to blink the cursor (in seconds). Set to zero to -#: disable blinking. Negative values mean use system default. Note -#: that the minimum interval will be limited to repaint_delay. - -# cursor_stop_blinking_after 15.0 - -#: Stop blinking cursor after the specified number of seconds of -#: keyboard inactivity. Set to zero to never stop blinking. - -#: }}} - -#: Scrollback {{{ - -# scrollback_lines 2000 - -#: Number of lines of history to keep in memory for scrolling back. -#: Memory is allocated on demand. Negative numbers are (effectively) -#: infinite scrollback. Note that using very large scrollback is not -#: recommended as it can slow down performance of the terminal and -#: also use large amounts of RAM. Instead, consider using -#: scrollback_pager_history_size. Note that on config reload if this -#: is changed it will only affect newly created windows, not existing -#: ones. - -# scrollback_pager less --chop-long-lines --RAW-CONTROL-CHARS +INPUT_LINE_NUMBER - -#: Program with which to view scrollback in a new window. The -#: scrollback buffer is passed as STDIN to this program. If you change -#: it, make sure the program you use can handle ANSI escape sequences -#: for colors and text formatting. INPUT_LINE_NUMBER in the command -#: line above will be replaced by an integer representing which line -#: should be at the top of the screen. Similarly CURSOR_LINE and -#: CURSOR_COLUMN will be replaced by the current cursor position or -#: set to 0 if there is no cursor, for example, when showing the last -#: command output. - -# scrollback_pager_history_size 0 - -#: Separate scrollback history size (in MB), used only for browsing -#: the scrollback buffer with pager. This separate buffer is not -#: available for interactive scrolling but will be piped to the pager -#: program when viewing scrollback buffer in a separate window. The -#: current implementation stores the data in UTF-8, so approximately -#: 10000 lines per megabyte at 100 chars per line, for pure ASCII, -#: unformatted text. A value of zero or less disables this feature. -#: The maximum allowed size is 4GB. Note that on config reload if this -#: is changed it will only affect newly created windows, not existing -#: ones. - -# scrollback_fill_enlarged_window no - -#: Fill new space with lines from the scrollback buffer after -#: enlarging a window. - -# wheel_scroll_multiplier 5.0 - -#: Multiplier for the number of lines scrolled by the mouse wheel. -#: Note that this is only used for low precision scrolling devices, -#: not for high precision scrolling devices on platforms such as macOS -#: and Wayland. Use negative numbers to change scroll direction. See -#: also wheel_scroll_min_lines. - -# wheel_scroll_min_lines 1 - -#: The minimum number of lines scrolled by the mouse wheel. The scroll -#: multiplier wheel_scroll_multiplier only takes effect after it -#: reaches this number. Note that this is only used for low precision -#: scrolling devices like wheel mice that scroll by very small amounts -#: when using the wheel. With a negative number, the minimum number of -#: lines will always be added. - -# touch_scroll_multiplier 1.0 - -#: Multiplier for the number of lines scrolled by a touchpad. Note -#: that this is only used for high precision scrolling devices on -#: platforms such as macOS and Wayland. Use negative numbers to change -#: scroll direction. - -#: }}} - -#: Mouse {{{ - -# mouse_hide_wait 3.0 - -#: Hide mouse cursor after the specified number of seconds of the -#: mouse not being used. Set to zero to disable mouse cursor hiding. -#: Set to a negative value to hide the mouse cursor immediately when -#: typing text. Disabled by default on macOS as getting it to work -#: robustly with the ever-changing sea of bugs that is Cocoa is too -#: much effort. - -# url_color #0087bd -# url_style curly - -#: The color and style for highlighting URLs on mouse-over. url_style -#: can be one of: none, straight, double, curly, dotted, dashed. - -# open_url_with default - -#: The program to open clicked URLs. The special value default with -#: first look for any URL handlers defined via the open_actions -#: facility and if non -#: are found, it will use the Operating System's default URL handler -#: (open on macOS and xdg-open on Linux). - -# url_prefixes file ftp ftps gemini git gopher http https irc ircs kitty mailto news sftp ssh - -#: The set of URL prefixes to look for when detecting a URL under the -#: mouse cursor. - -# detect_urls yes - -#: Detect URLs under the mouse. Detected URLs are highlighted with an -#: underline and the mouse cursor becomes a hand over them. Even if -#: this option is disabled, URLs are still clickable. See also the -#: underline_hyperlinks option to control how hyperlinks (as opposed -#: to plain text URLs) are displayed. - -# url_excluded_characters - -#: Additional characters to be disallowed from URLs, when detecting -#: URLs under the mouse cursor. By default, all characters that are -#: legal in URLs are allowed. Additionally, newlines are allowed (but -#: stripped). This is to accommodate programs such as mutt that add -#: hard line breaks even for continued lines. \n can be added to this -#: option to disable this behavior. Special characters can be -#: specified using backslash escapes, to specify a backslash use a -#: double backslash. - -# show_hyperlink_targets no - -#: When the mouse hovers over a terminal hyperlink, show the actual -#: URL that will be activated when the hyperlink is clicked. - -# underline_hyperlinks hover - -#: Control how hyperlinks are underlined. They can either be -#: underlined on mouse hover, always (i.e. permanently underlined) or -#: never which means that kitty will not apply any underline styling -#: to hyperlinks. Uses the url_style and url_color settings for the -#: underline style. Note that reloading the config and changing this -#: value to/from always will only affect text subsequently received by -#: kitty. - -# copy_on_select no - -#: Copy to clipboard or a private buffer on select. With this set to -#: clipboard, selecting text with the mouse will cause the text to be -#: copied to clipboard. Useful on platforms such as macOS that do not -#: have the concept of primary selection. You can instead specify a -#: name such as a1 to copy to a private kitty buffer. Map a shortcut -#: with the paste_from_buffer action to paste from this private -#: buffer. For example:: - -#: copy_on_select a1 -#: map shift+cmd+v paste_from_buffer a1 - -#: Note that copying to the clipboard is a security risk, as all -#: programs, including websites open in your browser can read the -#: contents of the system clipboard. - -# paste_actions quote-urls-at-prompt,confirm - -#: A comma separated list of actions to take when pasting text into -#: the terminal. The supported paste actions are: - -#: quote-urls-at-prompt: -#: If the text being pasted is a URL and the cursor is at a shell prompt, -#: automatically quote the URL (needs shell_integration). -#: replace-dangerous-control-codes -#: Replace dangerous control codes from pasted text, without confirmation. -#: replace-newline -#: Replace the newline character from pasted text, without confirmation. -#: confirm: -#: Confirm the paste if the text to be pasted contains any terminal control codes -#: as this can be dangerous, leading to code execution if the shell/program running -#: in the terminal does not properly handle these. -#: confirm-if-large -#: Confirm the paste if it is very large (larger than 16KB) as pasting -#: large amounts of text into shells can be very slow. -#: filter: -#: Run the filter_paste() function from the file paste-actions.py in -#: the kitty config directory on the pasted text. The text returned by the -#: function will be actually pasted. - -# strip_trailing_spaces never - -#: Remove spaces at the end of lines when copying to clipboard. A -#: value of smart will do it when using normal selections, but not -#: rectangle selections. A value of always will always do it. - -# select_by_word_characters @-./_~?&=%+# - -#: Characters considered part of a word when double clicking. In -#: addition to these characters any character that is marked as an -#: alphanumeric character in the Unicode database will be matched. - -# select_by_word_characters_forward - -#: Characters considered part of a word when extending the selection -#: forward on double clicking. In addition to these characters any -#: character that is marked as an alphanumeric character in the -#: Unicode database will be matched. - -#: If empty (default) select_by_word_characters will be used for both -#: directions. - -# click_interval -1.0 - -#: The interval between successive clicks to detect double/triple -#: clicks (in seconds). Negative numbers will use the system default -#: instead, if available, or fallback to 0.5. - -# focus_follows_mouse no - -#: Set the active window to the window under the mouse when moving the -#: mouse around. On macOS, this will also cause the OS Window under -#: the mouse to be focused automatically when the mouse enters it. - -# pointer_shape_when_grabbed arrow - -#: The shape of the mouse pointer when the program running in the -#: terminal grabs the mouse. - -# default_pointer_shape beam - -#: The default shape of the mouse pointer. - -# pointer_shape_when_dragging beam - -#: The default shape of the mouse pointer when dragging across text. - -#: Mouse actions {{{ - -#: Mouse buttons can be mapped to perform arbitrary actions. The -#: syntax is: - -#: .. code-block:: none - -#: mouse_map button-name event-type modes action - -#: Where button-name is one of left, middle, right, b1 ... b8 with -#: added keyboard modifiers. For example: ctrl+shift+left refers to -#: holding the Ctrl+Shift keys while clicking with the left mouse -#: button. The value b1 ... b8 can be used to refer to up to eight -#: buttons on a mouse. - -#: event-type is one of press, release, doublepress, triplepress, -#: click, doubleclick. modes indicates whether the action is performed -#: when the mouse is grabbed by the program running in the terminal, -#: or not. The values are grabbed or ungrabbed or a comma separated -#: combination of them. grabbed refers to when the program running in -#: the terminal has requested mouse events. Note that the click and -#: double click events have a delay of click_interval to disambiguate -#: from double and triple presses. - -#: You can run kitty with the kitty --debug-input command line option -#: to see mouse events. See the builtin actions below to get a sense -#: of what is possible. - -#: If you want to unmap an action, map it to no_op. For example, to -#: disable opening of URLs with a plain click:: - -#: mouse_map left click ungrabbed no_op - -#: See all the mappable actions including mouse actions here -#: . - -#: .. note:: -#: Once a selection is started, releasing the button that started it will -#: automatically end it and no release event will be dispatched. - -# clear_all_mouse_actions no - -#: Remove all mouse action definitions up to this point. Useful, for -#: instance, to remove the default mouse actions. - -#: Click the link under the mouse or move the cursor - -# mouse_map left click ungrabbed mouse_handle_click selection link prompt - -#:: First check for a selection and if one exists do nothing. Then -#:: check for a link under the mouse cursor and if one exists, click -#:: it. Finally check if the click happened at the current shell -#:: prompt and if so, move the cursor to the click location. Note -#:: that this requires shell integration -#:: to work. - -#: Click the link under the mouse or move the cursor even when grabbed - -# mouse_map shift+left click grabbed,ungrabbed mouse_handle_click selection link prompt - -#:: Same as above, except that the action is performed even when the -#:: mouse is grabbed by the program running in the terminal. - -#: Click the link under the mouse cursor - -# mouse_map ctrl+shift+left release grabbed,ungrabbed mouse_handle_click link - -#:: Variant with Ctrl+Shift is present because the simple click based -#:: version has an unavoidable delay of click_interval, to -#:: disambiguate clicks from double clicks. - -#: Discard press event for link click - -# mouse_map ctrl+shift+left press grabbed discard_event - -#:: Prevent this press event from being sent to the program that has -#:: grabbed the mouse, as the corresponding release event is used to -#:: open a URL. - -#: Paste from the primary selection - -# mouse_map middle release ungrabbed paste_from_selection - -#: Start selecting text - -# mouse_map left press ungrabbed mouse_selection normal - -#: Start selecting text in a rectangle - -# mouse_map ctrl+alt+left press ungrabbed mouse_selection rectangle - -#: Select a word - -# mouse_map left doublepress ungrabbed mouse_selection word - -#: Select a line - -# mouse_map left triplepress ungrabbed mouse_selection line - -#: Select line from point - -# mouse_map ctrl+alt+left triplepress ungrabbed mouse_selection line_from_point - -#:: Select from the clicked point to the end of the line. If you -#:: would like to select the word at the point and then extend to the -#:: rest of the line, change line_from_point to -#:: word_and_line_from_point. - -#: Extend the current selection - -# mouse_map right press ungrabbed mouse_selection extend - -#:: If you want only the end of the selection to be moved instead of -#:: the nearest boundary, use move-end instead of extend. - -#: Paste from the primary selection even when grabbed - -# mouse_map shift+middle release ungrabbed,grabbed paste_selection -# mouse_map shift+middle press grabbed discard_event - -#: Start selecting text even when grabbed - -# mouse_map shift+left press ungrabbed,grabbed mouse_selection normal - -#: Start selecting text in a rectangle even when grabbed - -# mouse_map ctrl+shift+alt+left press ungrabbed,grabbed mouse_selection rectangle - -#: Select a word even when grabbed - -# mouse_map shift+left doublepress ungrabbed,grabbed mouse_selection word - -#: Select a line even when grabbed - -# mouse_map shift+left triplepress ungrabbed,grabbed mouse_selection line - -#: Select line from point even when grabbed - -# mouse_map ctrl+shift+alt+left triplepress ungrabbed,grabbed mouse_selection line_from_point - -#:: Select from the clicked point to the end of the line even when -#:: grabbed. If you would like to select the word at the point and -#:: then extend to the rest of the line, change line_from_point to -#:: word_and_line_from_point. - -#: Extend the current selection even when grabbed - -# mouse_map shift+right press ungrabbed,grabbed mouse_selection extend - -#: Show clicked command output in pager - -# mouse_map ctrl+shift+right press ungrabbed mouse_show_command_output - -#:: Requires shell integration -#:: to work. - -#: }}} - -#: }}} - -#: Performance tuning {{{ - -# repaint_delay 10 - -#: Delay between screen updates (in milliseconds). Decreasing it, -#: increases frames-per-second (FPS) at the cost of more CPU usage. -#: The default value yields ~100 FPS which is more than sufficient for -#: most uses. Note that to actually achieve 100 FPS, you have to -#: either set sync_to_monitor to no or use a monitor with a high -#: refresh rate. Also, to minimize latency when there is pending input -#: to be processed, this option is ignored. - -# input_delay 3 - -#: Delay before input from the program running in the terminal is -#: processed (in milliseconds). Note that decreasing it will increase -#: responsiveness, but also increase CPU usage and might cause flicker -#: in full screen programs that redraw the entire screen on each loop, -#: because kitty is so fast that partial screen updates will be drawn. - -# sync_to_monitor yes - -#: Sync screen updates to the refresh rate of the monitor. This -#: prevents screen tearing -#: when scrolling. -#: However, it limits the rendering speed to the refresh rate of your -#: monitor. With a very high speed mouse/high keyboard repeat rate, -#: you may notice some slight input latency. If so, set this to no. - -#: }}} - -#: Terminal bell {{{ - -# enable_audio_bell yes - -#: The audio bell. Useful to disable it in environments that require -#: silence. - -# visual_bell_duration 0.0 - -#: The visual bell duration (in seconds). Flash the screen when a bell -#: occurs for the specified number of seconds. Set to zero to disable. - -# visual_bell_color none - -#: The color used by visual bell. Set to none will fall back to -#: selection background color. If you feel that the visual bell is too -#: bright, you can set it to a darker color. - -# window_alert_on_bell yes - -#: Request window attention on bell. Makes the dock icon bounce on -#: macOS or the taskbar flash on linux. - bell_on_tab " " -#: Some text or a Unicode symbol to show on the tab if a window in the -#: tab that does not have focus has a bell. If you want to use leading -#: or trailing spaces, surround the text with quotes. See -#: tab_title_template for how this is rendered. - -#: For backwards compatibility, values of yes, y and true are -#: converted to the default bell symbol and no, n, false and none are -#: converted to the empty string. - -# command_on_bell none - -#: Program to run when a bell occurs. The environment variable -#: KITTY_CHILD_CMDLINE can be used to get the program running in the -#: window in which the bell occurred. - -# bell_path none - -#: Path to a sound file to play as the bell sound. If set to none, the -#: system default bell sound is used. Must be in a format supported by -#: the operating systems sound API, such as WAV or OGA on Linux -#: (libcanberra) or AIFF, MP3 or WAV on macOS (NSSound) - -# linux_bell_theme __custom - -#: The XDG Sound Theme kitty will use to play the bell sound. Defaults -#: to the custom theme name used by GNOME and Budgie, falling back to -#: the default freedesktop theme if it does not exist. This option may -#: be removed if Linux ever provides desktop-agnostic support for -#: setting system sound themes. - -#: }}} - -#: Window layout {{{ - remember_window_size yes -# initial_window_width 640 -# initial_window_height 400 - -#: If enabled, the OS Window size will be remembered so that new -#: instances of kitty will have the same size as the previous -#: instance. If disabled, the OS Window will initially have size -#: configured by initial_window_width/height, in pixels. You can use a -#: suffix of "c" on the width/height values to have them interpreted -#: as number of cells instead of pixels. enabled_layouts fat:bias=70,tall:bias=55,stack -#: The enabled window layouts. A comma separated list of layout names. -#: The special value all means all layouts. The first listed layout -#: will be used as the startup layout. Default configuration is all -#: layouts in alphabetical order. For a list of available layouts, see -#: the layouts . - -# window_resize_step_cells 2 -# window_resize_step_lines 2 - -#: The step size (in units of cell width/cell height) to use when -#: resizing kitty windows in a layout with the shortcut -#: start_resizing_window. The cells value is used for horizontal -#: resizing, and the lines value is used for vertical resizing. - -# window_border_width 0.5pt - -#: The width of window borders. Can be either in pixels (px) or pts -#: (pt). Values in pts will be rounded to the nearest number of pixels -#: based on screen resolution. If not specified, the unit is assumed -#: to be pts. Note that borders are displayed only when more than one -#: window is visible. They are meant to separate multiple windows. - -# draw_minimal_borders yes - -#: Draw only the minimum borders needed. This means that only the -#: borders that separate the window from a neighbor are drawn. Note -#: that setting a non-zero window_margin_width overrides this and -#: causes all borders to be drawn. - -# window_margin_width 0 - -#: The window margin (in pts) (blank area outside the border). A -#: single value sets all four sides. Two values set the vertical and -#: horizontal sides. Three values set top, horizontal and bottom. Four -#: values set top, right, bottom and left. - -# single_window_margin_width -1 - -#: The window margin to use when only a single window is visible (in -#: pts). Negative values will cause the value of window_margin_width -#: to be used instead. A single value sets all four sides. Two values -#: set the vertical and horizontal sides. Three values set top, -#: horizontal and bottom. Four values set top, right, bottom and left. - -# window_padding_width 0 - -#: The window padding (in pts) (blank area between the text and the -#: window border). A single value sets all four sides. Two values set -#: the vertical and horizontal sides. Three values set top, horizontal -#: and bottom. Four values set top, right, bottom and left. - -# single_window_padding_width -1 - -#: The window padding to use when only a single window is visible (in -#: pts). Negative values will cause the value of window_padding_width -#: to be used instead. A single value sets all four sides. Two values -#: set the vertical and horizontal sides. Three values set top, -#: horizontal and bottom. Four values set top, right, bottom and left. - -# placement_strategy center - -#: When the window size is not an exact multiple of the cell size, the -#: cell area of the terminal window will have some extra padding on -#: the sides. You can control how that padding is distributed with -#: this option. Using a value of center means the cell area will be -#: placed centrally. A value of top-left means the padding will be -#: only at the bottom and right edges. - -# active_border_color #00ff00 - -#: The color for the border of the active window. Set this to none to -#: not draw borders around the active window. - -# inactive_border_color #cccccc - -#: The color for the border of inactive windows. - -# bell_border_color #ff5a00 - -#: The color for the border of inactive windows in which a bell has -#: occurred. - -# inactive_text_alpha 1.0 - -#: Fade the text in inactive windows by the specified amount (a number -#: between zero and one, with zero being fully faded). - hide_window_decorations yes -#: Hide the window decorations (title-bar and window borders) with -#: yes. On macOS, titlebar-only and titlebar-and-corners can be used -#: to only hide the titlebar and the rounded corners. Whether this -#: works and exactly what effect it has depends on the window -#: manager/operating system. Note that the effects of changing this -#: option when reloading config are undefined. When using titlebar- -#: only, it is useful to also set window_margin_width and -#: placement_strategy to prevent the rounded corners from clipping -#: text. Or use titlebar-and-corners. - -# window_logo_path none - -#: Path to a logo image. Must be in PNG format. Relative paths are -#: interpreted relative to the kitty config directory. The logo is -#: displayed in a corner of every kitty window. The position is -#: controlled by window_logo_position. Individual windows can be -#: configured to have different logos either using the launch action -#: or the remote control facility. - -# window_logo_position bottom-right - -#: Where to position the window logo in the window. The value can be -#: one of: top-left, top, top-right, left, center, right, bottom-left, -#: bottom, bottom-right. - -# window_logo_alpha 0.5 - -#: The amount the logo should be faded into the background. With zero -#: being fully faded and one being fully opaque. - -# resize_debounce_time 0.1 0.5 - -#: The time to wait before redrawing the screen during a live resize -#: of the OS window, when no new resize events have been received, -#: i.e. when resizing is either paused or finished. On platforms such -#: as macOS, where the operating system sends events corresponding to -#: the start and end of a live resize, the second number is used for -#: redraw-after-pause since kitty can distinguish between a pause and -#: end of resizing. On such systems the first number is ignored and -#: redraw is immediate after end of resize. On other systems the -#: first number is used so that kitty is "ready" quickly after the end -#: of resizing, while not also continuously redrawing, to save energy. - -# resize_in_steps no - -#: Resize the OS window in steps as large as the cells, instead of -#: with the usual pixel accuracy. Combined with initial_window_width -#: and initial_window_height in number of cells, this option can be -#: used to keep the margins as small as possible when resizing the OS -#: window. Note that this does not currently work on Wayland. - -# visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ - -#: The list of characters for visual window selection. For example, -#: for selecting a window to focus on with focus_visible_window. The -#: value should be a series of unique numbers or alphabets, case -#: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your -#: preference as a string of characters. - confirm_os_window_close 0 -#: Ask for confirmation when closing an OS window or a tab with at -#: least this number of kitty windows in it by window manager (e.g. -#: clicking the window close button or pressing the operating system -#: shortcut to close windows) or by the close_tab action. A value of -#: zero disables confirmation. This confirmation also applies to -#: requests to quit the entire application (all OS windows, via the -#: quit action). Negative values are converted to positive ones, -#: however, with shell_integration enabled, using negative values -#: means windows sitting at a shell prompt are not counted, only -#: windows where some command is currently running. Note that if you -#: want confirmation when closing individual windows, you can map the -#: close_window_with_confirmation action. - -#: }}} - -#: Tab bar {{{ - tab_bar_edge top -#: The edge to show the tab bar on, top or bottom. - -# tab_bar_margin_width 0.0 - -#: The margin to the left and right of the tab bar (in pts). - -# tab_bar_margin_height 0.0 0.0 - -#: The margin above and below the tab bar (in pts). The first number -#: is the margin between the edge of the OS Window and the tab bar. -#: The second number is the margin between the tab bar and the -#: contents of the current tab. - tab_bar_style separator -#: The tab bar style, can be one of: - -#: fade -#: Each tab's edges fade into the background color. (See also tab_fade) -#: slant -#: Tabs look like the tabs in a physical file. -#: separator -#: Tabs are separated by a configurable separator. (See also -#: tab_separator) -#: powerline -#: Tabs are shown as a continuous line with "fancy" separators. -#: (See also tab_powerline_style) -#: custom -#: A user-supplied Python function called draw_tab is loaded from the file -#: tab_bar.py in the kitty config directory. For examples of how to -#: write such a function, see the functions named draw_tab_with_* in -#: kitty's source code: kitty/tab_bar.py. See also -#: this discussion -#: for examples from kitty users. -#: hidden -#: The tab bar is hidden. If you use this, you might want to create -#: a mapping for the select_tab action which presents you with a list of -#: tabs and allows for easy switching to a tab. - tab_bar_align center -#: The horizontal alignment of the tab bar, can be one of: left, -#: center, right. - tab_bar_min_tabs 1 -#: The minimum number of tabs that must exist before the tab bar is -#: shown. - -# tab_switch_strategy previous - -#: The algorithm to use when switching to a tab when the current tab -#: is closed. The default of previous will switch to the last used -#: tab. A value of left will switch to the tab to the left of the -#: closed tab. A value of right will switch to the tab to the right of -#: the closed tab. A value of last will switch to the right-most tab. - -# tab_fade 0.25 0.5 0.75 1 - -#: Control how each tab fades into the background when using fade for -#: the tab_bar_style. Each number is an alpha (between zero and one) -#: that controls how much the corresponding cell fades into the -#: background, with zero being no fade and one being full fade. You -#: can change the number of cells used by adding/removing entries to -#: this list. - tab_separator " │ " -#: The separator between tabs in the tab bar when using separator as -#: the tab_bar_style. - -# tab_powerline_style angled - -#: The powerline separator style between tabs in the tab bar when -#: using powerline as the tab_bar_style, can be one of: angled, -#: slanted, round. - tab_activity_symbol " " -#: Some text or a Unicode symbol to show on the tab if a window in the -#: tab that does not have focus has some activity. If you want to use -#: leading or trailing spaces, surround the text with quotes. See -#: tab_title_template for how this is rendered. - -# tab_title_max_length 0 - -#: The maximum number of cells that can be used to render the text in -#: a tab. A value of zero means that no limit is applied. - tab_title_template "{fmt.fg.orange}{bell_symbol}{activity_symbol}{fmt.fg.tab}{'' if layout_name == 'stack' else '' if layout_name == 'fat' else '' if layout_name == 'tall' else ' '} {index}:{title}" -#: A template to render the tab title. The default just renders the -#: title with optional symbols for bell and activity. If you wish to -#: include the tab-index as well, use something like: {index}:{title}. -#: Useful if you have shortcuts mapped for goto_tab N. If you prefer -#: to see the index as a superscript, use {sup.index}. All data -#: available is: - -#: title -#: The current tab title. -#: index -#: The tab index usable with goto_tab N goto_tab shortcuts. -#: layout_name -#: The current layout name. -#: num_windows -#: The number of windows in the tab. -#: num_window_groups -#: The number of window groups (a window group is a window and all of its overlay windows) in the tab. -#: tab.active_wd -#: The working directory of the currently active window in the tab -#: (expensive, requires syscall). Use active_oldest_wd to get -#: the directory of the oldest foreground process rather than the newest. -#: tab.active_exe -#: The name of the executable running in the foreground of the currently -#: active window in the tab (expensive, requires syscall). Use -#: active_oldest_exe for the oldest foreground process. -#: max_title_length -#: The maximum title length available. - -#: Note that formatting is done by Python's string formatting -#: machinery, so you can use, for instance, {layout_name[:2].upper()} -#: to show only the first two letters of the layout name, upper-cased. -#: If you want to style the text, you can use styling directives, for -#: example: -#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. -#: Similarly, for bold and italic: -#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. -#: Note that for backward compatibility, if {bell_symbol} or -#: {activity_symbol} are not present in the template, they are -#: prepended to it. - -# active_tab_title_template none - -#: Template to use for active tabs. If not specified falls back to -#: tab_title_template. - -# active_tab_foreground #000 -# active_tab_background #eee -# active_tab_font_style bold-italic -# inactive_tab_foreground #444 -# inactive_tab_background #999 -# inactive_tab_font_style normal - -#: Tab bar colors and styles. - -# tab_bar_background none - -#: Background color for the tab bar. Defaults to using the terminal -#: background color. - -# tab_bar_margin_color none - -#: Color for the tab bar margin area. Defaults to using the terminal -#: background color for margins above and below the tab bar. For side -#: margins the default color is chosen to match the background color -#: of the neighboring tab. - -#: }}} - -#: Color scheme {{{ - -# foreground #dddddd -# background #000000 - -#: The foreground and background colors. - -# background_opacity 0.8 - -#: The opacity of the background. A number between zero and one, where -#: one is opaque and zero is fully transparent. This will only work if -#: supported by the OS (for instance, when using a compositor under -#: X11). Note that it only sets the background color's opacity in -#: cells that have the same background color as the default terminal -#: background, so that things like the status bar in vim, powerline -#: prompts, etc. still look good. But it means that if you use a color -#: theme with a background color in your editor, it will not be -#: rendered as transparent. Instead you should change the default -#: background color in your kitty config and not use a background -#: color in the editor color scheme. Or use the escape codes to set -#: the terminals default colors in a shell script to launch your -#: editor. Be aware that using a value less than 1.0 is a (possibly -#: significant) performance hit. When using a low value for this -#: setting, it is desirable that you set the background color to a -#: color the matches the general color of the desktop background, for -#: best text rendering. If you want to dynamically change -#: transparency of windows, set dynamic_background_opacity to yes -#: (this is off by default as it has a performance cost). Changing -#: this option when reloading the config will only work if -#: dynamic_background_opacity was enabled in the original config. - -# background_blur 0 - -#: Set to a positive value to enable background blur (blurring of the -#: visuals behind a transparent window) on platforms that support it. -#: Only takes effect when background_opacity is less than one. On -#: macOS, this will also control the blur radius (amount of blurring). -#: Setting it to too high a value will cause severe performance issues -#: and/or rendering artifacts. Usually, values up to 64 work well. -#: Note that this might cause performance issues, depending on how the -#: platform implements it, so use with care. Currently supported on -#: macOS and KDE under X11. - -# background_image none - -#: Path to a background image. Must be in PNG format. - -# background_image_layout tiled - -#: Whether to tile, scale or clamp the background image. The value can -#: be one of tiled, mirror-tiled, scaled, clamped, centered or -#: cscaled. The scaled and cscaled values scale the image to the -#: window size, with cscaled preserving the image aspect ratio. - -# background_image_linear no - -#: When background image is scaled, whether linear interpolation -#: should be used. - -# dynamic_background_opacity no - -#: Allow changing of the background_opacity dynamically, using either -#: keyboard shortcuts (increase_background_opacity and -#: decrease_background_opacity) or the remote control facility. -#: Changing this option by reloading the config is not supported. - -# background_tint 0.0 - -#: How much to tint the background image by the background color. This -#: option makes it easier to read the text. Tinting is done using the -#: current background color for each window. This option applies only -#: if background_opacity is set and transparent windows are supported -#: or background_image is set. - -# background_tint_gaps 1.0 - -#: How much to tint the background image at the window gaps by the -#: background color, after applying background_tint. Since this is -#: multiplicative with background_tint, it can be used to lighten the -#: tint over the window gaps for a *separated* look. - -# dim_opacity 0.4 - -#: How much to dim text that has the DIM/FAINT attribute set. One -#: means no dimming and zero means fully dimmed (i.e. invisible). - -# selection_foreground #000000 -# selection_background #fffacd - -#: The foreground and background colors for text selected with the -#: mouse. Setting both of these to none will cause a "reverse video" -#: effect for selections, where the selection will be the cell text -#: color and the text will become the cell background color. Setting -#: only selection_foreground to none will cause the foreground color -#: to be used unchanged. Note that these colors can be overridden by -#: the program running in the terminal. - -#: The color table {{{ - -#: The 256 terminal colors. There are 8 basic colors, each color has a -#: dull and bright version, for the first 16 colors. You can set the -#: remaining 240 colors as color16 to color255. - -# color0 #000000 -# color8 #767676 - -#: black - -# color1 #cc0403 -# color9 #f2201f - -#: red - -# color2 #19cb00 -# color10 #23fd00 - -#: green - -# color3 #cecb00 -# color11 #fffd00 - -#: yellow - -# color4 #0d73cc -# color12 #1a8fff - -#: blue - -# color5 #cb1ed1 -# color13 #fd28ff - -#: magenta - -# color6 #0dcdcd -# color14 #14ffff - -#: cyan - -# color7 #dddddd -# color15 #ffffff - -#: white - -# mark1_foreground black - -#: Color for marks of type 1 - -# mark1_background #98d3cb - -#: Color for marks of type 1 (light steel blue) - -# mark2_foreground black - -#: Color for marks of type 2 - -# mark2_background #f2dcd3 - -#: Color for marks of type 1 (beige) - -# mark3_foreground black - -#: Color for marks of type 3 - -# mark3_background #f274bc - -#: Color for marks of type 3 (violet) - -#: }}} - -#: }}} - -#: Advanced {{{ - -# shell . - -#: The shell program to execute. The default value of . means to use -#: whatever shell is set as the default shell for the current user. -#: Note that on macOS if you change this, you might need to add -#: --login and --interactive to ensure that the shell starts in -#: interactive mode and reads its startup rc files. Environment -#: variables are expanded in this setting. - -# editor . - -#: The terminal based text editor (such as vim or nano) to use when -#: editing the kitty config file or similar tasks. - -#: The default value of . means to use the environment variables -#: VISUAL and EDITOR in that order. If these variables aren't set, -#: kitty will run your shell ($SHELL -l -i -c env) to see if your -#: shell startup rc files set VISUAL or EDITOR. If that doesn't work, -#: kitty will cycle through various known editors (vim, emacs, etc.) -#: and take the first one that exists on your system. - -# close_on_child_death no - -#: Close the window when the child process (shell) exits. With the -#: default value no, the terminal will remain open when the child -#: exits as long as there are still processes outputting to the -#: terminal (for example disowned or backgrounded processes). When -#: enabled with yes, the window will close as soon as the child -#: process exits. Note that setting it to yes means that any -#: background processes still using the terminal can fail silently -#: because their stdout/stderr/stdin no longer work. - -# remote_control_password - -#: Allow other programs to control kitty using passwords. This option -#: can be specified multiple times to add multiple passwords. If no -#: passwords are present kitty will ask the user for permission if a -#: program tries to use remote control with a password. A password can -#: also *optionally* be associated with a set of allowed remote -#: control actions. For example:: - -#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab - -#: Only the specified actions will be allowed when using this -#: password. Glob patterns can be used too, for example:: - -#: remote_control_password "my passphrase" set-tab-* resize-* - -#: To get a list of available actions, run:: - -#: kitten @ --help - -#: A set of actions to be allowed when no password is sent can be -#: specified by using an empty password. For example:: - -#: remote_control_password "" *-colors - -#: Finally, the path to a python module can be specified that provides -#: a function is_cmd_allowed that is used to check every remote -#: control command. For example:: - -#: remote_control_password "my passphrase" my_rc_command_checker.py - -#: Relative paths are resolved from the kitty configuration directory. -#: See rc_custom_auth for details. - allow_remote_control yes - -#: Allow other programs to control kitty. If you turn this on, other -#: programs can control all aspects of kitty, including sending text -#: to kitty windows, opening new windows, closing windows, reading the -#: content of windows, etc. Note that this even works over SSH -#: connections. The default setting of no prevents any form of remote -#: control. The meaning of the various values are: - -#: password -#: Remote control requests received over both the TTY device and the socket -#: are confirmed based on passwords, see remote_control_password. - -#: socket-only -#: Remote control requests received over a socket are accepted -#: unconditionally. Requests received over the TTY are denied. -#: See listen_on. - -#: socket -#: Remote control requests received over a socket are accepted -#: unconditionally. Requests received over the TTY are confirmed based on -#: password. - -#: no -#: Remote control is completely disabled. - -#: yes -#: Remote control requests are always accepted. - listen_on unix:@mykitty -#: Listen to the specified socket for remote control connections. Note -#: that this will apply to all kitty instances. It can be overridden -#: by the kitty --listen-on command line option. For UNIX sockets, -#: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). -#: Environment variables are expanded and relative paths are resolved -#: with respect to the temporary directory. If {kitty_pid} is present, -#: then it is replaced by the PID of the kitty process, otherwise the -#: PID of the kitty process is appended to the value, with a hyphen. -#: For TCP sockets such as tcp:localhost:0 a random port is always -#: used even if a non-zero port number is specified. See the help for -#: kitty --listen-on for more details. Note that this will be ignored -#: unless allow_remote_control is set to either: yes, socket or -#: socket-only. Changing this option by reloading the config is not -#: supported. - -# env - -#: Specify the environment variables to be set in all child processes. -#: Using the name with an equal sign (e.g. env VAR=) will set it to -#: the empty string. Specifying only the name (e.g. env VAR) will -#: remove the variable from the child process' environment. Note that -#: environment variables are expanded recursively, for example:: - -#: env VAR1=a -#: env VAR2=${HOME}/${VAR1}/b - -#: The value of VAR2 will be /a/b. - -# watcher - -#: Path to python file which will be loaded for watchers -#: . Can be -#: specified more than once to load multiple watchers. The watchers -#: will be added to every kitty window. Relative paths are resolved -#: relative to the kitty config directory. Note that reloading the -#: config will only affect windows created after the reload. - -# exe_search_path - -#: Control where kitty finds the programs to run. The default search -#: order is: First search the system wide PATH, then ~/.local/bin and -#: ~/bin. If still not found, the PATH defined in the login shell -#: after sourcing all its startup files is tried. Finally, if present, -#: the PATH specified by the env option is tried. - -#: This option allows you to prepend, append, or remove paths from -#: this search order. It can be specified multiple times for multiple -#: paths. A simple path will be prepended to the search order. A path -#: that starts with the + sign will be append to the search order, -#: after ~/bin above. A path that starts with the - sign will be -#: removed from the entire search order. For example:: - -#: exe_search_path /some/prepended/path -#: exe_search_path +/some/appended/path -#: exe_search_path -/some/excluded/path - -# update_check_interval 24 - -#: The interval to periodically check if an update to kitty is -#: available (in hours). If an update is found, a system notification -#: is displayed informing you of the available update. The default is -#: to check every 24 hours, set to zero to disable. Update checking is -#: only done by the official binary builds. Distro packages or source -#: builds do not do update checking. Changing this option by reloading -#: the config is not supported. - -# startup_session none - -#: Path to a session file to use for all kitty instances. Can be -#: overridden by using the kitty --session =none command line option -#: for individual instances. See sessions -#: in the kitty -#: documentation for details. Note that relative paths are interpreted -#: with respect to the kitty config directory. Environment variables -#: in the path are expanded. Changing this option by reloading the -#: config is not supported. - -# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask - -#: Allow programs running in kitty to read and write from the -#: clipboard. You can control exactly which actions are allowed. The -#: possible actions are: write-clipboard, read-clipboard, write- -#: primary, read-primary, read-clipboard-ask, read-primary-ask. The -#: default is to allow writing to the clipboard and primary selection -#: and to ask for permission when a program tries to read from the -#: clipboard. Note that disabling the read confirmation is a security -#: risk as it means that any program, even the ones running on a -#: remote server via SSH can read your clipboard. See also -#: clipboard_max_size. - -# clipboard_max_size 512 - -#: The maximum size (in MB) of data from programs running in kitty -#: that will be stored for writing to the system clipboard. A value of -#: zero means no size limit is applied. See also clipboard_control. - -# file_transfer_confirmation_bypass - -#: The password that can be supplied to the file transfer kitten -#: to skip the -#: transfer confirmation prompt. This should only be used when -#: initiating transfers from trusted computers, over trusted networks -#: or encrypted transports, as it allows any programs running on the -#: remote machine to read/write to the local filesystem, without -#: permission. - -# allow_hyperlinks yes - -#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 -#: escape sequences are ignored. Otherwise they become clickable -#: links, that you can click with the mouse or by using the hints -#: kitten . The -#: special value of ask means that kitty will ask before opening the -#: link when clicked. - -# shell_integration enabled - -#: Enable shell integration on supported shells. This enables features -#: such as jumping to previous prompts, browsing the output of the -#: previous command in a pager, etc. on supported shells. Set to -#: disabled to turn off shell integration, completely. It is also -#: possible to disable individual features, set to a space separated -#: list of these values: no-rc, no-cursor, no-title, no-cwd, no- -#: prompt-mark, no-complete, no-sudo. See Shell integration -#: for details. - -# allow_cloning ask - -#: Control whether programs running in the terminal can request new -#: windows to be created. The canonical example is clone-in-kitty -#: . -#: By default, kitty will ask for permission for each clone request. -#: Allowing cloning unconditionally gives programs running in the -#: terminal (including over SSH) permission to execute arbitrary code, -#: as the user who is running the terminal, on the computer that the -#: terminal is running on. - -# clone_source_strategies venv,conda,env_var,path - -#: Control what shell code is sourced when running clone-in-kitty in -#: the newly cloned window. The supported strategies are: - -#: venv -#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the -#: Python stdlib venv module and allows cloning venvs automatically. -#: conda -#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual -#: environments created by conda. -#: env_var -#: Execute the contents of the environment variable -#: KITTY_CLONE_SOURCE_CODE with eval. -#: path -#: Source the file pointed to by the environment variable -#: KITTY_CLONE_SOURCE_PATH. - -#: This option must be a comma separated list of the above values. -#: Only the first valid match, in the order specified, is sourced. - -# term xterm-kitty - -#: The value of the TERM environment variable to set. Changing this -#: can break many terminal programs, only change it if you know what -#: you are doing, not because you read some advice on "Stack Overflow" -#: to change it. The TERM variable is used by various programs to get -#: information about the capabilities and behavior of the terminal. If -#: you change it, depending on what programs you run, and how -#: different the terminal you are changing it to is, various things -#: from key-presses, to colors, to various advanced features may not -#: work. Changing this option by reloading the config will only affect -#: newly created windows. - -# forward_stdio no - -#: Forward STDOUT and STDERR of the kitty process to child processes -#: as file descriptors 3 and 4. This is useful for debugging as it -#: allows child processes to print to kitty's STDOUT directly. For -#: example, echo hello world >&3 in a shell will print to the parent -#: kitty's STDOUT. When enabled, this also sets the -#: KITTY_STDIO_FORWARDED=3 environment variable so child processes -#: know about the forwarding. - -# menu_map - -#: Specify entries for various menus in kitty. Currently only the -#: global menubar on macOS is supported. For example:: - -#: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" - -#: This will create a menu entry named "Launch something special" in -#: an "Actions" menu in the macOS global menubar. Sub-menus can be -#: created by adding more levels separated by ::. - -#: }}} - -#: OS specific tweaks {{{ wayland_titlebar_color background -#: The color of the kitty window's titlebar on Wayland systems with -#: client side window decorations such as GNOME. A value of system -#: means to use the default system color, a value of background means -#: to use the background color of the currently active window and -#: finally you can use an arbitrary color, such as #12af59 or red. - -# macos_titlebar_color system - -#: The color of the kitty window's titlebar on macOS. A value of -#: system means to use the default system color, light or dark can -#: also be used to set it explicitly. A value of background means to -#: use the background color of the currently active window and finally -#: you can use an arbitrary color, such as #12af59 or red. WARNING: -#: This option works by using a hack when arbitrary color (or -#: background) is configured, as there is no proper Cocoa API for it. -#: It sets the background color of the entire window and makes the -#: titlebar transparent. As such it is incompatible with -#: background_opacity. If you want to use both, you are probably -#: better off just hiding the titlebar with hide_window_decorations. - -# macos_option_as_alt no - -#: Use the Option key as an Alt key on macOS. With this set to no, -#: kitty will use the macOS native Option+Key to enter Unicode -#: character behavior. This will break any Alt+Key keyboard shortcuts -#: in your terminal programs, but you can use the macOS Unicode input -#: technique. You can use the values: left, right or both to use only -#: the left, right or both Option keys as Alt, instead. Note that -#: kitty itself always treats Option the same as Alt. This means you -#: cannot use this option to configure different kitty shortcuts for -#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using -#: Option/Alt+Key will take priority, so that any such key presses -#: will not be passed to terminal programs running inside kitty. -#: Changing this option by reloading the config is not supported. - -# macos_hide_from_tasks no - -#: Hide the kitty window from running tasks on macOS (⌘+Tab and the -#: Dock). Changing this option by reloading the config is not -#: supported. - -# macos_quit_when_last_window_closed no - -#: Have kitty quit when all the top-level windows are closed on macOS. -#: By default, kitty will stay running, even with no open windows, as -#: is the expected behavior on macOS. - -# macos_window_resizable yes - -#: Disable this if you want kitty top-level OS windows to not be -#: resizable on macOS. - -# macos_thicken_font 0 - -#: Draw an extra border around the font with the given width, to -#: increase legibility at small font sizes on macOS. For example, a -#: value of 0.75 will result in rendering that looks similar to sub- -#: pixel antialiasing at common font sizes. Note that in modern kitty, -#: this option is obsolete (although still supported). Consider using -#: text_composition_strategy instead. - -# macos_traditional_fullscreen no - -#: Use the macOS traditional full-screen transition, that is faster, -#: but less pretty. - -# macos_show_window_title_in all - -#: Control where the window title is displayed on macOS. A value of -#: window will show the title of the currently active window at the -#: top of the macOS window. A value of menubar will show the title of -#: the currently active window in the macOS global menu bar, making -#: use of otherwise wasted space. A value of all will show the title -#: in both places, and none hides the title. See -#: macos_menubar_title_max_length for how to control the length of the -#: title in the menu bar. - -# macos_menubar_title_max_length 0 - -#: The maximum number of characters from the window title to show in -#: the macOS global menu bar. Values less than one means that there is -#: no maximum limit. - -# macos_custom_beam_cursor no - -#: Use a custom mouse cursor for macOS that is easier to see on both -#: light and dark backgrounds. Nowadays, the default macOS cursor -#: already comes with a white border. WARNING: this might make your -#: mouse cursor invisible on dual GPU machines. Changing this option -#: by reloading the config is not supported. - -# macos_colorspace srgb - -#: The colorspace in which to interpret terminal colors. The default -#: of srgb will cause colors to match those seen in web browsers. The -#: value of default will use whatever the native colorspace of the -#: display is. The value of displayp3 will use Apple's special -#: snowflake display P3 color space, which will result in over -#: saturated (brighter) colors with some color shift. Reloading -#: configuration will change this value only for newly created OS -#: windows. - -# linux_display_server auto - -#: Choose between Wayland and X11 backends. By default, an appropriate -#: backend based on the system state is chosen automatically. Set it -#: to x11 or wayland to force the choice. Changing this option by -#: reloading the config is not supported. - -#: }}} - -#: Keyboard shortcuts {{{ - -#: Keys are identified simply by their lowercase Unicode characters. -#: For example: a for the A key, [ for the left square bracket key, -#: etc. For functional keys, such as Enter or Escape, the names are -#: present at Functional key definitions -#: . -#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt -#: (opt, option, ⌥), super (cmd, command, ⌘). See also: GLFW mods -#: - -#: On Linux you can also use XKB key names to bind keys that are not -#: supported by GLFW. See XKB keys -#: for a list of key names. The name to use is the part -#: after the XKB_KEY_ prefix. Note that you can only use an XKB key -#: name for keys that are not known as GLFW keys. - -#: Finally, you can use raw system key codes to map keys, again only -#: for keys that are not known as GLFW keys. To see the system key -#: code for a key, start kitty with the kitty --debug-input option, -#: kitty will output some debug text for every key event. In that text -#: look for native_code, the value of that becomes the key name in the -#: shortcut. For example: - -#: .. code-block:: none - -#: on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a' - -#: Here, the key name for the A key is 0x61 and you can use it with:: - -#: map ctrl+0x61 something - -#: to map Ctrl+A to something. - -#: You can use the special action no_op to unmap a keyboard shortcut -#: that is assigned in the default configuration:: - -#: map kitty_mod+space no_op - -#: If you would like kitty to completely ignore a key event, not even -#: sending it to the program running in the terminal, map it to -#: discard_event:: - -#: map kitty_mod+f1 discard_event - -#: You can combine multiple actions to be triggered by a single -#: shortcut with combine action, using the syntax below:: - -#: map key combine action1 action2 action3 ... - -#: For example:: - -#: map kitty_mod+e combine : new_window : next_layout - -#: This will create a new window and switch to the next available -#: layout. - -#: You can use multi-key shortcuts with the syntax shown below:: - -#: map key1>key2>key3 action - -#: For example:: - -#: map ctrl+f>2 set_font_size 20 - -#: The full list of actions that can be mapped to key presses is -#: available here . - -# kitty_mod ctrl+shift - -#: Special modifier key alias for default shortcuts. You can change -#: the value of this option to alter all default shortcuts that use -#: kitty_mod. - -# clear_all_shortcuts no - -#: Remove all shortcut definitions up to this point. Useful, for -#: instance, to remove the default shortcuts. - -# action_alias - -#: E.g. action_alias launch_tab launch --type=tab --cwd=current - -action_alias zoom combine : toggle_layout stack : scroll_prompt_to_bottom - -#: Define action aliases to avoid repeating the same options in -#: multiple mappings. Aliases can be defined for any action and will -#: be expanded recursively. For example, the above alias allows you to -#: create mappings to launch a new tab in the current working -#: directory without duplication:: - -#: map f1 launch_tab vim -#: map f2 launch_tab emacs - -#: Similarly, to alias kitten invocation:: - -#: action_alias hints kitten hints --hints-offset=0 - -# kitten_alias - -#: E.g. kitten_alias hints hints --hints-offset=0 - -#: Like action_alias above, but specifically for kittens. Generally, -#: prefer to use action_alias. This option is a legacy version, -#: present for backwards compatibility. It causes all invocations of -#: the aliased kitten to be substituted. So the example above will -#: cause all invocations of the hints kitten to have the --hints- -#: offset=0 option applied. - -#: Clipboard {{{ - -#: Copy to clipboard - -# map kitty_mod+c copy_to_clipboard -# map cmd+c copy_to_clipboard - -#:: There is also a copy_or_interrupt action that can be optionally -#:: mapped to Ctrl+C. It will copy only if there is a selection and -#:: send an interrupt otherwise. Similarly, -#:: copy_and_clear_or_interrupt will copy and clear the selection or -#:: send an interrupt if there is no selection. - -#: Paste from clipboard - -# map kitty_mod+v paste_from_clipboard -# map cmd+v paste_from_clipboard - -#: Paste from selection - -# map kitty_mod+s paste_from_selection -# map shift+insert paste_from_selection - -#: Pass selection to program - -# map kitty_mod+o pass_selection_to_program - -#:: You can also pass the contents of the current selection to any -#:: program with pass_selection_to_program. By default, the system's -#:: open program is used, but you can specify your own, the selection -#:: will be passed as a command line argument to the program. For -#:: example:: - -#:: map kitty_mod+o pass_selection_to_program firefox - -#:: You can pass the current selection to a terminal program running -#:: in a new kitty window, by using the @selection placeholder:: - -#:: map kitty_mod+y new_window less @selection - -#: }}} - -#: Scrolling {{{ - -#: Scroll line up - -# map kitty_mod+up scroll_line_up -# map kitty_mod+k scroll_line_up -# map opt+cmd+page_up scroll_line_up -# map cmd+up scroll_line_up - -#: Scroll line down - -# map kitty_mod+down scroll_line_down -# map kitty_mod+j scroll_line_down -# map opt+cmd+page_down scroll_line_down -# map cmd+down scroll_line_down - -#: Scroll page up - -# map kitty_mod+page_up scroll_page_up -# map cmd+page_up scroll_page_up - -#: Scroll page down - -# map kitty_mod+page_down scroll_page_down -# map cmd+page_down scroll_page_down - -#: Scroll to top - -# map kitty_mod+home scroll_home -# map cmd+home scroll_home - -#: Scroll to bottom - -# map kitty_mod+end scroll_end -# map cmd+end scroll_end - -#: Scroll to previous shell prompt - -# map kitty_mod+z scroll_to_prompt -1 - -#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last -#:: jumped to or the last clicked position. Requires shell -#:: integration -#:: to work. - -#: Scroll to next shell prompt - -# map kitty_mod+x scroll_to_prompt 1 - -#: Browse scrollback buffer in pager - -# map kitty_mod+h show_scrollback - -#:: You can pipe the contents of the current screen and history -#:: buffer as STDIN to an arbitrary program using launch --stdin- -#:: source. For example, the following opens the scrollback buffer in -#:: less in an overlay window:: - -#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R - -#:: For more details on piping screen and buffer contents to external -#:: programs, see launch . - -#: Browse output of the last shell command in pager - -# map kitty_mod+g show_last_command_output - -#:: You can also define additional shortcuts to get the command -#:: output. For example, to get the first command output on screen:: - -#:: map f1 show_first_command_output_on_screen - -#:: To get the command output that was last accessed by a keyboard -#:: action or mouse action:: - -#:: map f1 show_last_visited_command_output - -#:: You can pipe the output of the last command run in the shell -#:: using the launch action. For example, the following opens the -#:: output in less in an overlay window:: - -#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R - -#:: To get the output of the first command on the screen, use -#:: @first_cmd_output_on_screen. To get the output of the last jumped -#:: to command, use @last_visited_cmd_output. - -#:: Requires shell integration -#:: to work. - -#: }}} - -#: Window management {{{ - -#: New window -# -# map ctrl+j neighboring_window down map ctrl+k neighboring_window up @@ -1966,207 +58,85 @@ map --when-focus-on var:IS_NVIM alt+k map --when-focus-on var:IS_NVIM alt+h map --when-focus-on var:IS_NVIM alt+l - -# map kitty_mod+enter new_window +map kitty_mod+enter launch --cwd=root # map cmd+enter new_window -map ctrl+space>enter new_window -map ctrl+space>s launch --location=vsplit --cwd=root -map ctrl+space>v launch --location=split --cwd=root -map ctrl+space>ctrl+s launch --location=vsplit -map ctrl+space>ctrl+v launch --location=split - - -#:: You can open a new kitty window running an arbitrary program, for -#:: example:: - -#:: map kitty_mod+y launch mutt - -#:: You can open a new window with the current working directory set -#:: to the working directory of the current window using:: - -#:: map ctrl+alt+enter launch --cwd=current - -#:: You can open a new window that is allowed to control kitty via -#:: the kitty remote control facility with launch --allow-remote- -#:: control. Any programs running in that window will be allowed to -#:: control kitty. For example:: - -#:: map ctrl+enter launch --allow-remote-control some_program - -#:: You can open a new window next to the currently active window or -#:: as the first window, with:: - -#:: map ctrl+n launch --location=neighbor -#:: map ctrl+f launch --location=first - -#:: For more details, see launch -#:: . - -map ctrl+space>g launch --cwd=current --type=overlay --var lazy_float=true lazygit -map ctrl+p>ctrl+p launch --cwd=current --type=background fish -c 'split_run --restart' -map ctrl+space>p launch --cwd=current --type=overlay fish -c 'split_run --mask' - -#: New OS window - -# map kitty_mod+n new_os_window -# map cmd+n new_os_window - -#:: Works like new_window above, except that it opens a top-level OS -#:: window. In particular you can use new_os_window_with_cwd to open -#:: a window with the current working directory. #: Close window # map kitty_mod+w close_window # map shift+cmd+d close_window -#: Next window - # map kitty_mod+] next_window - -#: Previous window - # map kitty_mod+[ previous_window -#: Move window forward - # map kitty_mod+f move_window_forward - -#: Move window backward - # map kitty_mod+b move_window_backward -#: Move window to top - # map kitty_mod+` move_window_to_top -#: Start resizing window - # map kitty_mod+r start_resizing_window # map cmd+r start_resizing_window -#: First window - # map kitty_mod+1 first_window # map cmd+1 first_window -#: Second window - # map kitty_mod+2 second_window # map cmd+2 second_window -#: Third window - # map kitty_mod+3 third_window # map cmd+3 third_window -#: Fourth window - # map kitty_mod+4 fourth_window # map cmd+4 fourth_window -#: Fifth window - # map kitty_mod+5 fifth_window # map cmd+5 fifth_window -#: Sixth window - # map kitty_mod+6 sixth_window # map cmd+6 sixth_window -#: Seventh window - # map kitty_mod+7 seventh_window # map cmd+7 seventh_window -#: Eighth window - # map kitty_mod+8 eighth_window # map cmd+8 eighth_window -#: Ninth window - # map kitty_mod+9 ninth_window # map cmd+9 ninth_window -#: Tenth window - # map kitty_mod+0 tenth_window #: Visually select and focus window -# map kitty_mod+f7 focus_visible_window map ctrl+space>tab focus_visible_window - -#:: Display overlay numbers and alphabets on the window, and switch -#:: the focus to the window when you press the key. When there are -#:: only two windows, the focus will be switched directly without -#:: displaying the overlay. You can change the overlay characters and -#:: their order with option visual_window_select_characters. - -#: Visually swap window with another - -# map kitty_mod+f8 swap_with_window map ctrl+space>ctrl+tab swap_with_window - -#:: Works like focus_visible_window above, but swaps the window. - map ctrl+space>ctrl+shift+tab detach_window ask -#: }}} - #: Tab management {{{ -#: Next tab - # map kitty_mod+right next_tab # map shift+cmd+] next_tab # map ctrl+tab next_tab -#: Previous tab - # map kitty_mod+left previous_tab # map shift+cmd+[ previous_tab # map ctrl+shift+tab previous_tab -#: New tab - -# map kitty_mod+t new_tab -# map cmd+t new_tab -map ctrl+space>t new_tab_with_cwd -map ctrl+space>n new_tab_with_cwd -map ctrl+space>shift+t new_tab -map ctrl+space>shift+n new_tab - -#: Close tab +map kitty_mod+t new_tab_with_cwd +# map cmd+t new_tab_with_cwd # map kitty_mod+q close_tab # map cmd+w close_tab -#: Close OS window - # map shift+cmd+w close_os_window - -#: Move tab forward - +# # map kitty_mod+. move_tab_forward - -#: Move tab backward - # map kitty_mod+, move_tab_backward -#: Set tab title - # map kitty_mod+alt+t set_tab_title # map shift+cmd+i set_tab_title map ctrl+space>shift+r set_tab_title - -#: You can also create shortcuts to go to specific tabs, with 1 being -#: the first tab, 2 the second tab and -1 being the previously active -#: tab, and any number larger than the last tab being the last tab:: - map ctrl+space>1 goto_tab 1 map ctrl+space>2 goto_tab 2 map ctrl+space>3 goto_tab 3 @@ -2178,336 +148,43 @@ map ctrl+space>8 goto_tab 8 map ctrl+space>9 goto_tab 9 map ctrl+space>0 goto_tab 10 -#: Just as with new_window above, you can also pass the name of -#: arbitrary commands to run when using new_tab and new_tab_with_cwd. -#: Finally, if you want the new tab to open next to the current tab -#: rather than at the end of the tabs list, use:: - -#: map ctrl+t new_tab !neighbor [optional cmd to run] -#: }}} - -#: Layout management {{{ - -#: Next layout - # map kitty_mod+l next_layout map ctrl+space>ctrl+l next_layout - - -#: You can also create shortcuts to switch to specific layouts:: - -#: map ctrl+alt+t goto_layout tall -#: map ctrl+alt+s goto_layout stack - -#: Similarly, to switch back to the previous layout:: - -#: map ctrl+alt+p last_used_layout - -#: There is also a toggle_layout action that switches to the named -#: layout or back to the previous layout if in the named layout. -#: Useful to temporarily "zoom" the active window by switching to the -#: stack layout:: - -#: map ctrl+alt+z toggle_layout stack -map ctrl+space>m zoom - -#: }}} - -#: Font sizes {{{ - -#: You can change the font size for all top-level kitty OS windows at -#: a time or only the current one. - -#: Increase font size - -# map kitty_mod+equal change_font_size all +2.0 -# map kitty_mod+plus change_font_size all +2.0 -# map kitty_mod+kp_add change_font_size all +2.0 -# map cmd+plus change_font_size all +2.0 -# map cmd+equal change_font_size all +2.0 -# map shift+cmd+equal change_font_size all +2.0 - -#: Decrease font size - -# map kitty_mod+minus change_font_size all -2.0 -# map kitty_mod+kp_subtract change_font_size all -2.0 -# map cmd+minus change_font_size all -2.0 -# map shift+cmd+minus change_font_size all -2.0 - -#: Reset font size - -# map kitty_mod+backspace change_font_size all 0 -# map cmd+0 change_font_size all 0 - - -#: To setup shortcuts for specific font sizes:: - -#: map kitty_mod+f6 change_font_size all 10.0 - -#: To setup shortcuts to change only the current OS window's font -#: size:: - -#: map kitty_mod+f6 change_font_size current 10.0 -#: }}} - -#: Select and act on visible text {{{ - -#: Use the hints kitten to select text and either pass it to an -#: external program or insert it into the terminal or copy it to the -#: clipboard. - -#: Open URL +map kitty_mod+m zoom # map kitty_mod+e open_url_with_hints -#:: Open a currently visible URL using the keyboard. The program used -#:: to open the URL is specified in open_url_with. - #: Insert selected path - # map kitty_mod+p>f kitten hints --type path --program - -#:: Select a path/filename and insert it into the terminal. Useful, -#:: for instance to run git commands on a filename output from a -#:: previous git command. - #: Open selected path - # map kitty_mod+p>shift+f kitten hints --type path -#:: Select a path/filename and open it with the default open program. - #: Insert selected line - # map kitty_mod+p>l kitten hints --type line --program - -#:: Select a line of text and insert it into the terminal. Useful for -#:: the output of things like: `ls -1`. - #: Insert selected word - # map kitty_mod+p>w kitten hints --type word --program - -#:: Select words and insert into terminal. - #: Insert selected hash - # map kitty_mod+p>h kitten hints --type hash --program - -#:: Select something that looks like a hash and insert it into the -#:: terminal. Useful with git, which uses SHA1 hashes to identify -#:: commits. - #: Open the selected file at the selected line - # map kitty_mod+p>n kitten hints --type linenum -#:: Select something that looks like filename:linenum and open it in -#:: vim at the specified line number. - #: Open the selected hyperlink - # map kitty_mod+p>y kitten hints --type hyperlink -#:: Select a hyperlink (i.e. a URL that has been marked as such by -#:: the terminal program, for example, by `ls --hyperlink=auto`). - - -#: The hints kitten has many more modes of operation that you can map -#: to different shortcuts. For a full description see hints kitten -#: . -#: }}} - -#: Miscellaneous {{{ - -#: Show documentation - # map kitty_mod+f1 show_kitty_doc overview -#: Toggle fullscreen - -# map kitty_mod+f11 toggle_fullscreen -# map ctrl+cmd+f toggle_fullscreen - -#: Toggle maximized - -# map kitty_mod+f10 toggle_maximized - -#: Toggle macOS secure keyboard entry - -# map opt+cmd+s toggle_macos_secure_keyboard_entry - -#: Unicode input - -# map kitty_mod+u kitten unicode_input -# map ctrl+cmd+space kitten unicode_input - -#: Edit config file - -# map kitty_mod+f2 edit_config_file -# map cmd+, edit_config_file - -#: Open the kitty command shell - -# map kitty_mod+escape kitty_shell window - -#:: Open the kitty shell in a new window / tab / overlay / os_window -#:: to control kitty using commands. - -#: Increase background opacity - -# map kitty_mod+a>m set_background_opacity +0.1 - -#: Decrease background opacity - -# map kitty_mod+a>l set_background_opacity -0.1 - -#: Make background fully opaque - -# map kitty_mod+a>1 set_background_opacity 1 - -#: Reset background opacity - -# map kitty_mod+a>d set_background_opacity default - -#: Reset the terminal - -# map kitty_mod+delete clear_terminal reset active -# map opt+cmd+r clear_terminal reset active - -#:: You can create shortcuts to clear/reset the terminal. For -#:: example:: - -#:: # Reset the terminal -#:: map f1 clear_terminal reset active -#:: # Clear the terminal screen by erasing all contents -#:: map f1 clear_terminal clear active -#:: # Clear the terminal scrollback by erasing it -#:: map f1 clear_terminal scrollback active -#:: # Scroll the contents of the screen into the scrollback -#:: map f1 clear_terminal scroll active -#:: # Clear everything up to the line with the cursor -#:: map f1 clear_terminal to_cursor active - -#:: If you want to operate on all kitty windows instead of just the -#:: current one, use all instead of active. - -#:: Some useful functions that can be defined in the shell rc files -#:: to perform various kinds of clearing of the current window: - -#:: .. code-block:: sh - -#:: clear-only-screen() { -#:: printf "\e[H\e[2J" -#:: } - -#:: clear-screen-and-scrollback() { -#:: printf "\e[H\e[3J" -#:: } - -#:: clear-screen-saving-contents-in-scrollback() { -#:: printf "\e[H\e[22J" -#:: } - -#:: For instance, using these escape codes, it is possible to remap -#:: Ctrl+L to both scroll the current screen contents into the -#:: scrollback buffer and clear the screen, instead of just clearing -#:: the screen. For ZSH, in ~/.zshrc, add: - -#:: .. code-block:: zsh - -#:: ctrl_l() { -#:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" -#:: builtin zle .reset-prompt -#:: builtin zle -R -#:: } -#:: zle -N ctrl_l -#:: bindkey '^l' ctrl_l - -#: Clear up to cursor line - -# map cmd+k clear_terminal to_cursor active - #: Reload kitty.conf # map kitty_mod+f5 load_config_file # map ctrl+cmd+, load_config_file map ctrl+space>ctrl+r load_config_file -#:: Reload kitty.conf, applying any changes since the last time it -#:: was loaded. Note that a handful of options cannot be dynamically -#:: changed and require a full restart of kitty. Particularly, when -#:: changing shortcuts for actions located on the macOS global menu -#:: bar, a full restart is needed. You can also map a keybinding to -#:: load a different config file, for example:: -#:: map f5 load_config /path/to/alternative/kitty.conf - -#:: Note that all options from the original kitty.conf are discarded, -#:: in other words the new configuration *replace* the old ones. - -#: Debug kitty configuration - -# map kitty_mod+f6 debug_config -# map opt+cmd+, debug_config - -#:: Show details about exactly what configuration kitty is running -#:: with and its host environment. Useful for debugging issues. - -#: Send arbitrary text on key presses - -#:: E.g. map ctrl+shift+alt+h send_text all Hello World - -#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the -#:: client program when pressing specified shortcut keys. For -#:: example:: - -#:: map ctrl+alt+a send_text all Special text - -#:: This will send "Special text" when you press the Ctrl+Alt+A key -#:: combination. The text to be sent decodes ANSI C escapes -#:: so you can use escapes like \e to send control -#:: codes or \u21fb to send Unicode characters (or you can just input -#:: the Unicode characters directly as UTF-8 text). You can use -#:: `kitten show_key` to get the key escape codes you want to -#:: emulate. - -#:: The first argument to send_text is the keyboard modes in which to -#:: activate the shortcut. The possible values are normal, -#:: application, kitty or a comma separated combination of them. The -#:: modes normal and application refer to the DECCKM cursor key mode -#:: for terminals, and kitty refers to the kitty extended keyboard -#:: protocol. The special value all means all of them. - -#:: Some more examples:: - -#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) -#:: map ctrl+alt+a send_text normal Word\e[H -#:: map ctrl+alt+a send_text application Word\eOH -#:: # Run a command at a shell prompt (like typing the command and pressing Enter) -#:: map ctrl+alt+a send_text normal,application some command with arguments\r - -#: Open kitty Website - -# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ - -#: Hide macOS kitty application - -# map cmd+h hide_macos_app - -#: Hide macOS other applications - -# map opt+cmd+h hide_macos_other_apps - -#: Minimize macOS window - -# map cmd+m minimize_macos_window - -#: Quit kitty - -# map cmd+q quit - -#: }}} - -#: }}} +#: Launch custom programs +map ctrl+space>g launch --cwd=current --type=overlay --var lazy_float=true lazygit +map ctrl+p>ctrl+p launch --cwd=current --type=background fish -c 'split_run --restart' +map ctrl+space>p launch --cwd=current --type=overlay fish -c 'split_run --mask' diff --git a/configs/wezterm/wezterm.lua b/configs/wezterm/wezterm.lua index 1e573da..77322fb 100644 --- a/configs/wezterm/wezterm.lua +++ b/configs/wezterm/wezterm.lua @@ -4,10 +4,12 @@ local wezterm = require("wezterm") -- This will hold the configuration. local config = wezterm.config_builder() +config.enable_wayland = true + -- This is where you actually apply your config choices -- For example, changing the color scheme: -config.color_scheme = "Catppuccin Mocha" +-- config.color_scheme = "Catppuccin Mocha" config.font = wezterm.font("JetBrainsMono Nerd Font") config.integrated_title_button_style = "Gnome" From 86ec8531d08e65e3f90a7ee78315d04565b56eb6 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 29 Sep 2025 13:00:26 -0300 Subject: [PATCH 136/152] add groups to hyprland --- configs/hypr/base/hyprland.conf | 38 +++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index 9da59cd..4fbcbdd 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -62,8 +62,8 @@ general { gaps_out = 10 border_size = 2 - col.active_border = $teal $teal - col.inactive_border = $surface1 $surface1 + col.active_border = rgba($tealAlphadd) + col.inactive_border = rgba($surface1Alphadd) # snap { # enabled = true @@ -93,6 +93,24 @@ animations { gesture = 3, horizontal, workspace +group { + merge_floated_into_tiled_on_groupbar = true + + col.border_active = $teal $teal + col.border_inactive = $surface1 $surface1 + + groupbar { + gradients = true, + text_color = $base + text_color_inactive = $text + col.active = rgba($tealAlphadd) + col.inactive = rgba($surface1Alphadd) + + gaps_in = 0 + gaps_out = 0 + } +} + misc { enable_swallow = true swallow_regex = ^(Alacritty|kitty|footclient)$ @@ -106,7 +124,7 @@ misc { master { new_status = slave mfact = 0.5 - # slave_count_for_center_master = 4 + slave_count_for_center_master = 0 } # ╭──────────────────────────────────────────────────────────╮ @@ -132,6 +150,9 @@ workspace = 7, monitor:HDMI-A-2, persistent:true workspace = 8, monitor:HDMI-A-2, persistent:true workspace = 9, monitor:HDMI-A-2, persistent:true +workspace = w[t1], layoutopt:orientation:center +workspace = w[t2-4], layoutopt:orientation:left + # ╭──────────────────────────────────────────────────────────╮ # │ Keybindings │ # ╰──────────────────────────────────────────────────────────╯ @@ -171,16 +192,19 @@ bind = $mainMod, f, fullscreen, 1 # preserve gaps and bar bind = $mainMod SHIFT, f, fullscreen, 0 # use whole screen bind = $mainMod SHIFT, s, toggleswallow +bind = $mainMod, t, changegroupactive +bind = $mainMod SHIFT, t, togglegroup + # ── Focus ───────────────────────────────────────────────────────────── bind = $mainMod, h, movefocus, l bind = $mainMod, j, movefocus, d bind = $mainMod, k, movefocus, u bind = $mainMod, l, movefocus, r -bind = $mainMod + SHIFT, h, movewindow, l -bind = $mainMod + SHIFT, j, movewindow, d -bind = $mainMod + SHIFT, k, movewindow, u -bind = $mainMod + SHIFT, l, movewindow, r +bind = $mainMod + SHIFT, h, movewindoworgroup, l +bind = $mainMod + SHIFT, j, movewindoworgroup, d +bind = $mainMod + SHIFT, k, movewindoworgroup, u +bind = $mainMod + SHIFT, l, movewindoworgroup, r bind = $mainMod, bar, workspace, previous bind = $mainMod CTRL, bar, focusmonitor, +1 From 45a3700b5133e8a4cbcd565ec256b7a66469e08a Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 2 Oct 2025 16:53:57 -0300 Subject: [PATCH 137/152] minor updates --- configs/kitty/kitty.conf | 4 +++- configs/mise/config.toml | 1 + configs/uwsm/env | 2 ++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/configs/kitty/kitty.conf b/configs/kitty/kitty.conf index c0778e6..d3b2d18 100644 --- a/configs/kitty/kitty.conf +++ b/configs/kitty/kitty.conf @@ -58,7 +58,8 @@ map --when-focus-on var:IS_NVIM alt+k map --when-focus-on var:IS_NVIM alt+h map --when-focus-on var:IS_NVIM alt+l -map kitty_mod+enter launch --cwd=root +map kitty_mod+enter new_window_with_cwd +map ctrl+space>ctrl+enter launch --cwd=root # map cmd+enter new_window #: Close window @@ -123,6 +124,7 @@ map ctrl+space>ctrl+shift+tab detach_window ask # map ctrl+shift+tab previous_tab map kitty_mod+t new_tab_with_cwd +map ctrl+space>ctrl+t launch --cwd=root --type=tab # map cmd+t new_tab_with_cwd # map kitty_mod+q close_tab diff --git a/configs/mise/config.toml b/configs/mise/config.toml index b129270..34c8e14 100644 --- a/configs/mise/config.toml +++ b/configs/mise/config.toml @@ -44,6 +44,7 @@ usage = "latest" yazi = "latest" zoxide = "latest" watchexec = "latest" +"npm:@hoppscotch/cli" = "latest" [settings] lockfile = true diff --git a/configs/uwsm/env b/configs/uwsm/env index d2e4a6b..609644d 100644 --- a/configs/uwsm/env +++ b/configs/uwsm/env @@ -10,3 +10,5 @@ export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/rbw/ssh-agent-socket export EDITOR=nvim export VISUAL=nvim + +export TERMINAL=/usr/bin/kitty From 64cfab7d4047ae4a2c36fcb92c1e5f72efbf9016 Mon Sep 17 00:00:00 2001 From: aleidk Date: Tue, 7 Oct 2025 09:31:38 -0300 Subject: [PATCH 138/152] minor update --- configs/hypr/work-laptop/hyprland.conf | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configs/hypr/work-laptop/hyprland.conf b/configs/hypr/work-laptop/hyprland.conf index f2186fd..d33dcc3 100644 --- a/configs/hypr/work-laptop/hyprland.conf +++ b/configs/hypr/work-laptop/hyprland.conf @@ -11,3 +11,5 @@ monitorv2 { exec-once = [workspace 1 silent] uwsm app -a brave_work -- brave --profile-directory="Default" # work profile exec-once = [workspace 6 silent] uwsm app -- brave -a brave_personal --profile-directory="Profile 2" # personal profile + +windowrulev2 = tile, class:com-eviware-soapui-SoapUI From 3129cc7beec841883ad0b948d956f19c877edae5 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 9 Oct 2025 16:39:15 -0300 Subject: [PATCH 139/152] minor update --- bin/mb_csv.fish | 28 ++++++++++++++++++++++++++ configs/hypr/work-laptop/hyprland.conf | 1 - 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 bin/mb_csv.fish diff --git a/bin/mb_csv.fish b/bin/mb_csv.fish new file mode 100644 index 0000000..9e864c8 --- /dev/null +++ b/bin/mb_csv.fish @@ -0,0 +1,28 @@ + +set -l artist_id $argv[1] + +set -l total 999 +set -l offset 0 + +set -l out "" + + +set query '.["release-groups"][] | [(.["artist-credit"] | (map(.name) | join(";") )), .title, .["first-release-date"], .["primary-type"], (.["secondary-types"] | join(";")), "https://musicbrainz.org/release-group/" + .id] | @csv' + +while test $offset -lt $total; + echo "fetching offset $offset of $total" + + set -l json (curl -SsL -H "Accept: application/json" "http://musicbrainz.org/ws/2/release-group?inc=artist-credits+aliases&release-group-status=website-default&artist=$artist_id&offset=$offset" | tee /tmp/foo.json) + + set total (echo $json | jq -r '.["release-group-count"]') + set offset (math $offset + 25) + + set -l csv (echo $json | jq -r $query | string collect -N) + + set out (string collect -N $out $csv) +end + + +echo $out | wl-copy -n + +echo $out diff --git a/configs/hypr/work-laptop/hyprland.conf b/configs/hypr/work-laptop/hyprland.conf index d33dcc3..6588cd8 100644 --- a/configs/hypr/work-laptop/hyprland.conf +++ b/configs/hypr/work-laptop/hyprland.conf @@ -12,4 +12,3 @@ monitorv2 { exec-once = [workspace 1 silent] uwsm app -a brave_work -- brave --profile-directory="Default" # work profile exec-once = [workspace 6 silent] uwsm app -- brave -a brave_personal --profile-directory="Profile 2" # personal profile -windowrulev2 = tile, class:com-eviware-soapui-SoapUI From 7c1b64881b15fe40da0a270b685b83664185e71b Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 9 Oct 2025 18:03:52 -0300 Subject: [PATCH 140/152] minor updatre --- configs/hypr/base/hyprland.conf | 3 --- configs/hypr/work-laptop/hyprland.conf | 3 +++ configs/mise/config.toml | 3 +++ configs/nvim/lua/aleidk/options.lua | 3 ++- configs/nvim/lua/aleidk/plugins/formatter.lua | 1 + configs/nvim/lua/aleidk/plugins/linters.lua | 1 + configs/nvim/lua/aleidk/plugins/treesitter.lua | 2 +- configs/yazi/keymap.toml | 1 + configs/yazi/yazi.toml | 5 +++-- 9 files changed, 15 insertions(+), 7 deletions(-) diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index 4fbcbdd..f66a0a4 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -150,9 +150,6 @@ workspace = 7, monitor:HDMI-A-2, persistent:true workspace = 8, monitor:HDMI-A-2, persistent:true workspace = 9, monitor:HDMI-A-2, persistent:true -workspace = w[t1], layoutopt:orientation:center -workspace = w[t2-4], layoutopt:orientation:left - # ╭──────────────────────────────────────────────────────────╮ # │ Keybindings │ # ╰──────────────────────────────────────────────────────────╯ diff --git a/configs/hypr/work-laptop/hyprland.conf b/configs/hypr/work-laptop/hyprland.conf index 6588cd8..4bc1b56 100644 --- a/configs/hypr/work-laptop/hyprland.conf +++ b/configs/hypr/work-laptop/hyprland.conf @@ -12,3 +12,6 @@ monitorv2 { exec-once = [workspace 1 silent] uwsm app -a brave_work -- brave --profile-directory="Default" # work profile exec-once = [workspace 6 silent] uwsm app -- brave -a brave_personal --profile-directory="Profile 2" # personal profile +workspace = w[t1], layoutopt:orientation:center +workspace = w[t2-4], layoutopt:orientation:left + diff --git a/configs/mise/config.toml b/configs/mise/config.toml index 34c8e14..0c6b009 100644 --- a/configs/mise/config.toml +++ b/configs/mise/config.toml @@ -45,6 +45,9 @@ yazi = "latest" zoxide = "latest" watchexec = "latest" "npm:@hoppscotch/cli" = "latest" +kotlin = "latest" +gradle = "latest" +"npm:@immich/cli" = "latest" [settings] lockfile = true diff --git a/configs/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua index eb0f4419..2334a40 100644 --- a/configs/nvim/lua/aleidk/options.lua +++ b/configs/nvim/lua/aleidk/options.lua @@ -31,7 +31,7 @@ opt.ignorecase = true -- Ignore case opt.inccommand = 'split' -- Preview substitutions live, as you type! opt.mouse = "a" -- Enable mouse mode opt.nrformats = 'blank,bin,hex' -opt.number = true -- Print line number +opt.number = true -- Print line number opt.pumblend = 10 -- Popup blend opt.pumheight = 10 -- Maximum number of entries in a popup -- opt.relativenumber = true -- Relative line numbers @@ -168,6 +168,7 @@ vim.lsp.enable({ "hyprls", "intelephense", "jsonls", + "kotlin_lsp", "lua_ls", "nushell", "pyright", diff --git a/configs/nvim/lua/aleidk/plugins/formatter.lua b/configs/nvim/lua/aleidk/plugins/formatter.lua index 91b09b4..be07723 100644 --- a/configs/nvim/lua/aleidk/plugins/formatter.lua +++ b/configs/nvim/lua/aleidk/plugins/formatter.lua @@ -15,6 +15,7 @@ return { css = { "biome" }, go = { "gofumpt", "goimports_reviser", "golines" }, html = { "djlint", "prettierd", stop_after_first = true }, + kotlin = { "ktlint" }, htmldjango = { "djlint", stop_after_first = true }, javascript = { "biome" }, javascriptreact = { "biome" }, diff --git a/configs/nvim/lua/aleidk/plugins/linters.lua b/configs/nvim/lua/aleidk/plugins/linters.lua index 4e13ecd..f73dc84 100644 --- a/configs/nvim/lua/aleidk/plugins/linters.lua +++ b/configs/nvim/lua/aleidk/plugins/linters.lua @@ -9,6 +9,7 @@ return { lint.linters_by_ft = { -- astro = { "eslint_d" }, + kotlin = { "ktlint" }, python = { "ruff" }, sh = { "shellcheck" }, NeogitCommitMessage = { "gitlint" }, diff --git a/configs/nvim/lua/aleidk/plugins/treesitter.lua b/configs/nvim/lua/aleidk/plugins/treesitter.lua index caab40c..012ccd0 100644 --- a/configs/nvim/lua/aleidk/plugins/treesitter.lua +++ b/configs/nvim/lua/aleidk/plugins/treesitter.lua @@ -21,7 +21,7 @@ return { init = function() -- HACK: for filetypes that doesn't start treesitter hightlight on it's own vim.api.nvim_create_autocmd("FileType", { - pattern = { "gleam", "go" }, + pattern = { "gleam", "go", "kotlin" }, callback = function() vim.treesitter.start() end, diff --git a/configs/yazi/keymap.toml b/configs/yazi/keymap.toml index bcecc1e..c20f2ca 100644 --- a/configs/yazi/keymap.toml +++ b/configs/yazi/keymap.toml @@ -44,6 +44,7 @@ prepend_keymap = [ { on = ["", "k"], run = "shell 'ya pub-to 0 TransferUpload --list \"$@\"'", desc = "Upload with transfer.nvim" }, { on = ["", "d"], run = ["shell 'ya pub-to 0 DiffRemote --orphan --list \"$@\"'", "quit"], desc = "Diff with transfer.nvim" }, { on = ["", ""], run = ["shell 'ya pub-to 0 TransferDirDiff --list \"$@\"'"], desc = "Diff directory with transfer.nvim" }, + ] [input] diff --git a/configs/yazi/yazi.toml b/configs/yazi/yazi.toml index 8c7ce85..96b9bac 100644 --- a/configs/yazi/yazi.toml +++ b/configs/yazi/yazi.toml @@ -4,7 +4,7 @@ [mgr] ratio = [1, 3, 4] -sort_by = "alphabetical" +sort_by = "natural" sort_sensitive = false sort_reverse = false sort_dir_first = true @@ -32,6 +32,7 @@ open = [{ run = 'xdg-open "$@"', desc = "Open", for = "linux" }, { run = 'open " reveal = [{ run = 'open -R "$1"', desc = "Reveal", for = "macos" }, { run = 'explorer /select, "%1"', orphan = true, desc = "Reveal", for = "windows" }, { run = '''exiftool "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show EXIF", for = "unix" }] extract = [{ run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" }, { run = 'ya pub extract --list %*', desc = "Extract here", for = "windows" }] play = [{ run = 'mpv "$@"', orphan = true, for = "unix" }, { run = 'mpv "%1"', orphan = true, for = "windows" }, { run = '''mediainfo "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show media info", for = "unix" }] +upload_img = [{ run = 'immich upload --recursive "$@" || read -n 1 -p "press anything to exit"', desc = "Upload image to Immich server", for = "linux", block = true }] [open] rules = [ @@ -46,7 +47,7 @@ rules = [ { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", use = ["extract", "reveal"] }, # Image - { mime = "image/*", use = ["open", "reveal"] }, + { mime = "image/*", use = ["open", "upload_img"] }, # Media { mime = "{audio,video}/*", use = ["play", "open", "reveal"] }, From 5b5e426d947a32b042dc51fce514e2cb1f12372b Mon Sep 17 00:00:00 2001 From: aleidk Date: Sun, 26 Oct 2025 16:19:47 -0300 Subject: [PATCH 141/152] add niri config --- .dotter/global.toml | 1 + configs/hypr/almighty/hyprland.conf | 14 + configs/hypr/base/hyprland.conf | 12 +- configs/niri/config.kdl | 443 ++++++++++++++++++ configs/nvim/lua/aleidk/plugins/formatter.lua | 1 + configs/waybar/config.jsonc | 27 +- configs/waybar/style.css | 6 + 7 files changed, 501 insertions(+), 3 deletions(-) create mode 100644 configs/niri/config.kdl diff --git a/.dotter/global.toml b/.dotter/global.toml index e1a70cd..a137e13 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -21,6 +21,7 @@ depends = [] "configs/mako" = "~/.config/mako" "configs/mise" = "~/.config/mise" "configs/mpv" = "~/.config/mpv" +"configs/niri" = "~/.config/niri" "configs/nvim" = "~/.config/nvim" "configs/rofi" = "~/.config/rofi" "configs/swappy" = "~/.config/swappy" diff --git a/configs/hypr/almighty/hyprland.conf b/configs/hypr/almighty/hyprland.conf index fa8857d..759261a 100644 --- a/configs/hypr/almighty/hyprland.conf +++ b/configs/hypr/almighty/hyprland.conf @@ -7,3 +7,17 @@ monitorv2 { supports_wide_color = true supports_hdr = true } + +monitorv2 { + output = desc:LG Electronics LG ULTRAWIDE 406NTRL99958 + mode = 3440x1440@159.96 + position = auto + supports_wide_color = 1 + supports_hdr = 1 +} + +workspace = 1, monitor:DP-1, persistent:true +workspace = 2, monitor:DP-1, persistent:true +workspace = 3, monitor:DP-1, persistent:true +workspace = 4, monitor:DP-1, persistent:true +workspace = 5, monitor:DP-1, persistent:true diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf index f66a0a4..0ac45f0 100644 --- a/configs/hypr/base/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -72,13 +72,20 @@ general { layout = master } -# decoration { +decoration { # rounding = 2 # drop_shadow = true # shadow_range = 4 # shadow_render_power = 3 # col.shadow = rgba($baseAlphaee) -# } + blur { + enabled = false + } + + shadow { + enabled = false + } +} animations { enabled = true @@ -118,6 +125,7 @@ misc { mouse_move_focuses_monitor = false animate_manual_resizes = false + vrr = 0 } # ── Layouts ─────────────────────────────────────────────────────────── diff --git a/configs/niri/config.kdl b/configs/niri/config.kdl new file mode 100644 index 0000000..06185e2 --- /dev/null +++ b/configs/niri/config.kdl @@ -0,0 +1,443 @@ +input { + keyboard { + xkb { + layout "latam" + options "caps:escape" + } + // Enable numlock on startup, omitting this setting disables it. + numlock + } + // Next sections include libinput settings. + // Omitting settings disables them, or leaves them at their default values. + // All commented-out settings here are examples, not defaults. + touchpad { + // off + tap + // dwt + // dwtp + // drag false + // drag-lock + natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "two-finger" + // disabled-on-external-mouse + } + mouse { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "no-scroll" + + } + trackpoint { + // off + // natural-scroll + // accel-speed 0.2 + // accel-profile "flat" + // scroll-method "on-button-down" + // scroll-button 273 + // scroll-button-lock + // middle-emulation + + } + // warp-mouse-to-focus + focus-follows-mouse +} +output "DP-1" { + variable-refresh-rate on-demand=true +} +layout { + gaps 10 + always-center-single-column + center-focused-column "never" + preset-column-widths { + // The default preset widths are 1/3, 1/2 and 2/3 of the output. + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + preset-window-heights { + + } + default-column-width { + + } + focus-ring { + // Uncomment this line to disable the focus ring. + // off + // How many logical pixels the ring extends out from the windows. + width 2 + active-color "#7fc8ff" + inactive-color "#505050" + } +} +spawn-at-startup "/usr/lib/pam_kwallet_init" +spawn-at-startup "udieskiiw" +spawn-at-startup "brave" +// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: +// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" +hotkey-overlay { + skip-at-startup +} +// Uncomment this line to ask the clients to omit their client-side decorations if possible. +// If the client will specifically ask for CSD, the request will be honored. +// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. +// This option will also fix border/focus ring drawing behind some semitransparent windows. +// After enabling or disabling this, you need to restart the apps for this to take effect. +// prefer-no-csd +screenshot-path null +animations { + // Uncomment to turn off all animations. + // off + + // Slow down all animations by this factor. Values below 1 speed them up instead. + // slowdown 3.0 + +} +window-rule { + // This regular expression is intentionally made as specific as possible, + // since this is the default config, and we want no false positives. + // You can get away with just app-id="wezterm" if you want. + match app-id="^org\\.wezfurlong\\.wezterm$" + default-column-width { + + } +} +window-rule { + match app-id="firefox$" title="^Picture-in-Picture$" + open-floating true +} +window-rule { + match app-id="^org\\.keepassxc\\.KeePassXC$" + match app-id="^org\\.gnome\\.World\\.Secrets$" + // block-out-from "screen-capture" + // Use this instead if you want them visible on third-party screenshot tools. + block-out-from "screencast" +} +window-rule { + match app-id="brave-browser" + match at-startup=true + default-column-width { + proportion 0.75 + } +} +window-rule { + geometry-corner-radius 4 + clip-to-geometry true +} +binds { + Mod+Shift+Slash { + show-hotkey-overlay + } + Mod+Return hotkey-overlay-title="Open a Terminal: kitty" { + spawn "kitty" + } + Mod+D hotkey-overlay-title="Run an Application: Rofi" { + spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}" + } + XF86AudioRaiseVolume allow-when-locked=true { + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+" + } + XF86AudioLowerVolume allow-when-locked=true { + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-" + } + XF86AudioMute allow-when-locked=true { + spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + } + XF86AudioMicMute allow-when-locked=true { + spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + } + XF86MonBrightnessUp allow-when-locked=true { + spawn "brightnessctl" "--class=backlight" "set" "+10%" + } + XF86MonBrightnessDown allow-when-locked=true { + spawn "brightnessctl" "--class=backlight" "set" "10%-" + } + // Open/close the Overview: a zoomed-out view of workspaces and windows. + // You can also move the mouse into the top-left hot corner, + // or do a four-finger swipe up on a touchpad. + Mod+A repeat=false { + toggle-overview + } + Mod+Shift+Q repeat=false { + close-window + } + Mod+Tab { + focus-column-right-or-first + } + Mod+shift+Tab { + focus-column-left-or-last + } + Mod+Left { + focus-column-left + } + Mod+Down { + focus-window-or-workspace-down + } + Mod+Up { + focus-window-or-workspace-up + } + Mod+Right { + focus-column-right + } + Mod+H { + focus-column-left + } + Mod+J { + focus-window-or-workspace-down + } + Mod+K { + focus-window-or-workspace-up + } + Mod+L { + focus-column-right + } + Mod+Shift+Left { + move-column-left + } + Mod+Shift+Down { + move-window-down-or-to-workspace-down + } + Mod+Shift+Up { + move-window-up-or-to-workspace-up + } + Mod+Shift+Right { + move-column-right + } + Mod+Shift+H { + move-column-left + } + Mod+Shift+J { + move-window-down-or-to-workspace-down + } + Mod+Shift+K { + move-window-up-or-to-workspace-up + } + Mod+Shift+L { + move-column-right + } + Mod+Home { + focus-column-first + } + Mod+End { + focus-column-last + } + Mod+Ctrl+Home { + move-column-to-first + } + Mod+Ctrl+End { + move-column-to-last + } + Mod+WheelScrollDown cooldown-ms=150 { + focus-column-right + } + Mod+WheelScrollUp cooldown-ms=150 { + focus-column-left + } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { + move-column-to-workspace-down + } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { + move-column-to-workspace-up + } + Mod+WheelScrollRight { + focus-column-right + } + Mod+WheelScrollLeft { + focus-column-left + } + Mod+Ctrl+WheelScrollRight { + move-column-right + } + Mod+Ctrl+WheelScrollLeft { + move-column-left + } + Mod+Shift+WheelScrollDown cooldown-ms=150 { + focus-workspace-down + } + Mod+Shift+WheelScrollUp cooldown-ms=150 { + focus-workspace-up + } + Mod+Ctrl+Shift+WheelScrollDown { + move-column-right + } + Mod+Ctrl+Shift+WheelScrollUp { + move-column-left + } + // Similarly, you can bind touchpad scroll "ticks". + // Touchpad scrolling is continuous, so for these binds it is split into + // discrete intervals. + // These binds are also affected by touchpad's natural-scroll, so these + // example binds are "inverted", since we have natural-scroll enabled for + // touchpads by default. + // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + Mod+1 { + focus-workspace 1 + } + Mod+2 { + focus-workspace 2 + } + Mod+3 { + focus-workspace 3 + } + Mod+4 { + focus-workspace 4 + } + Mod+5 { + focus-workspace 5 + } + Mod+6 { + focus-workspace 6 + } + Mod+7 { + focus-workspace 7 + } + Mod+8 { + focus-workspace 8 + } + Mod+9 { + focus-workspace 9 + } + Mod+Shift+1 { + move-window-to-workspace 1 + } + Mod+Shift+2 { + move-window-to-workspace 2 + } + Mod+Shift+3 { + move-window-to-workspace 3 + } + Mod+Shift+4 { + move-window-to-workspace 4 + } + Mod+Shift+5 { + move-window-to-workspace 5 + } + Mod+Shift+6 { + move-window-to-workspace 6 + } + Mod+Shift+7 { + move-window-to-workspace 7 + } + Mod+Shift+8 { + move-window-to-workspace 8 + } + Mod+Shift+9 { + move-window-to-workspace 9 + } + // Switches focus between the current and the previous workspace. + Mod+Bar { + focus-workspace-previous + } + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. + Mod+BraceLeft { + consume-or-expel-window-left + } + Mod+BraceRight { + consume-or-expel-window-right + } + // Consume one window from the right to the bottom of the focused column. + Mod+Comma { + consume-window-into-column + } + // Expel the bottom window from the focused column to the right. + Mod+Period { + expel-window-from-column + } + Mod+R { + switch-preset-column-width + } + // Cycling through the presets in reverse order is also possible. + // Mod+R { switch-preset-column-width-back; } + Mod+Shift+R { + switch-preset-window-height + } + Mod+Ctrl+R { + reset-window-height + } + Mod+F { + maximize-column + } + Mod+Shift+F { + fullscreen-window + } + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { + expand-column-to-available-width + } + Mod+C { + center-column + } + // Center all fully visible columns on screen. + Mod+Ctrl+C { + center-visible-columns + } + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { + set-column-width "-10%" + } + Mod+Plus { + set-column-width "+10%" + } + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { + set-window-height "-10%" + } + Mod+Shift+Equal { + set-window-height "+10%" + } + // Move the focused window between the floating and the tiling layout. + Mod+Shift+Space { + toggle-window-floating + } + Mod+Space { + switch-focus-between-floating-and-tiling + } + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+W { + toggle-column-tabbed-display + } + Print { + screenshot + } + Shift+Ctrl+Print { + screenshot-screen + } + Shift+Print { + screenshot-window + } + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + Mod+Escape allow-inhibiting=false { + toggle-keyboard-shortcuts-inhibit + } + // The quit action will show a confirmation dialog to avoid accidental exits. + Mod+Shift+E { + quit + } + Ctrl+Alt+Delete { + quit + } +} + diff --git a/configs/nvim/lua/aleidk/plugins/formatter.lua b/configs/nvim/lua/aleidk/plugins/formatter.lua index be07723..f7add11 100644 --- a/configs/nvim/lua/aleidk/plugins/formatter.lua +++ b/configs/nvim/lua/aleidk/plugins/formatter.lua @@ -16,6 +16,7 @@ return { go = { "gofumpt", "goimports_reviser", "golines" }, html = { "djlint", "prettierd", stop_after_first = true }, kotlin = { "ktlint" }, + kdl = { "kdlfmt" }, htmldjango = { "djlint", stop_after_first = true }, javascript = { "biome" }, javascriptreact = { "biome" }, diff --git a/configs/waybar/config.jsonc b/configs/waybar/config.jsonc index 163c48e..6c52cb8 100644 --- a/configs/waybar/config.jsonc +++ b/configs/waybar/config.jsonc @@ -9,7 +9,7 @@ "margin-left": 10, "margin-right": 10, - "modules-left": ["hyprland/workspaces"], + "modules-left": ["niri/workspaces", "niri/window"], "modules-center": ["clock"], "modules-right": [ "tray", @@ -23,6 +23,21 @@ ], "hyprland/workspaces": { + "all-outputs": false, + "format": "{icon}", + "format-icons": { + "1": "", + "2": "", + "3": "", + "9": "", + "10": "󰌳", + "default": "" + }, + "sort-by-number": true, + "active-only": false + }, + + "niri/workspaces": { "all-outputs": false, "format": "{icon}", "format-icons": { @@ -38,6 +53,16 @@ "sort-by-number": true, "active-only": false }, + + "niri/window": { + "format": "{app_id}: {title}", + "rewrite": { + "(.*): (.*)": "$2", + "brave-browser: (.*) - Brave": "🌎 $1", + "Kitty: (.*)": " $1" + } + }, + "backlight": { "format": "󱩖 {percent}% ", "device": "intel_backlight", diff --git a/configs/waybar/style.css b/configs/waybar/style.css index 9345d25..edf8db6 100644 --- a/configs/waybar/style.css +++ b/configs/waybar/style.css @@ -14,6 +14,12 @@ border-radius:5px; } +#window { + border-radius: 20px; + padding-left: 10px; + padding-right: 10px; +} + #workspaces button{ padding: .25rem .5rem; margin-right: .5rem; From a923539c85389fdcd240a1fb51718d47336b79a0 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 27 Oct 2025 11:39:38 -0300 Subject: [PATCH 142/152] update niri config --- .dotter/aleidk-work-laptop.toml | 26 + .dotter/global.toml | 6 +- configs/mako/config | 1 + configs/niri/config.kdl | 871 +++++++++++++++------------- configs/nvim/lua/aleidk/options.lua | 1 + kdlfmt.kdl | 3 + 6 files changed, 494 insertions(+), 414 deletions(-) create mode 100644 kdlfmt.kdl diff --git a/.dotter/aleidk-work-laptop.toml b/.dotter/aleidk-work-laptop.toml index 05fd1ac..b1fe098 100644 --- a/.dotter/aleidk-work-laptop.toml +++ b/.dotter/aleidk-work-laptop.toml @@ -4,4 +4,30 @@ packages = ["default"] [files] "configs/hypr/work-laptop/hyprland.conf" = "~/.config/hypr/include/work-laptop.conf" + +[files."configs/niri/config.kdl"] +target = "~/.config/niri/config.kdl" +type = "template" +append = """ +window-rule { + match app-id="brave-work" + open-on-workspace "1" + open-focused true + + default-column-width { + proportion 0.5 + } +} +window-rule { + match app-id="brave-personal" + open-on-workspace "2" + open-focused false + + default-column-width { + proportion 0.5 + } +} + +""" + [variables] diff --git a/.dotter/global.toml b/.dotter/global.toml index a137e13..9fe01c6 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -4,7 +4,7 @@ default_target_type = "symbolic" [helpers] [default] -depends = [] +depends = ["niri"] [default.files] "configs/fish" = "~/.config/fish" @@ -21,7 +21,6 @@ depends = [] "configs/mako" = "~/.config/mako" "configs/mise" = "~/.config/mise" "configs/mpv" = "~/.config/mpv" -"configs/niri" = "~/.config/niri" "configs/nvim" = "~/.config/nvim" "configs/rofi" = "~/.config/rofi" "configs/swappy" = "~/.config/swappy" @@ -37,3 +36,6 @@ depends = [] [default.variables] + +[niri.files] +"configs/niri" = "~/.config/niri" diff --git a/configs/mako/config b/configs/mako/config index 1b7531f..7a78949 100644 --- a/configs/mako/config +++ b/configs/mako/config @@ -1,4 +1,5 @@ default-timeout=5000 +anchor=top-center # Colors diff --git a/configs/niri/config.kdl b/configs/niri/config.kdl index 06185e2..9581911 100644 --- a/configs/niri/config.kdl +++ b/configs/niri/config.kdl @@ -1,37 +1,455 @@ +// ╭─────────────────────────────────────────────────────────╮ +// │ Windows Rules │ +// ╰─────────────────────────────────────────────────────────╯ +window-rule { + // This regular expression is intentionally made as specific as possible, + // since this is the default config, and we want no false positives. + // You can get away with just app-id="wezterm" if you want. + match app-id="^org\\.wezfurlong\\.wezterm$" + default-column-width { + + } +} +// Floatin Windows +window-rule { + match app-id="firefox$" title="^Picture-in-Picture$" + match app-id="^brave-.*-Default$" + // Extensions popup open-floating true +} +window-rule { + match app-id="^org\\.keepassxc\\.KeePassXC$" + match app-id="^org\\.gnome\\.World\\.Secrets$" + // block-out-from "screen-capture" + // Use this instead if you want them visible on third-party screenshot tools. + block-out-from "screencast" +} +window-rule { + match app-id="brave-browser" + match at-startup=true + default-column-width { + proportion 0.75 + } +} +window-rule { + match title="^Meet: .*" app-id="brave-browser" + open-floating true +} +window-rule { + geometry-corner-radius 4 + clip-to-geometry true +} +// ╭─────────────────────────────────────────────────────────╮ +// │ Auto Start Apps │ +// ╰─────────────────────────────────────────────────────────╯ +spawn-at-startup "/usr/lib/pam_kwallet_init" +spawn-at-startup "udieskie" +spawn-at-startup "brave" +// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: +// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" +// ╭─────────────────────────────────────────────────────────╮ +// │ System Config │ +// ╰─────────────────────────────────────────────────────────╯ +// ── Layout Config ─────────────────────────────────────────────────── +layout { + gaps 10 + always-center-single-column + center-focused-column "never" + preset-column-widths { + // The default preset widths are 1/3, 1/2 and 2/3 of the output. + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + preset-window-heights { + + } + default-column-width { + proportion 0.5 + } + focus-ring { + // Uncomment this line to disable the focus ring. + // off + // How many logical pixels the ring extends out from the windows. + width 2 + active-color "#7fc8ff" + inactive-color "#505050" + } +} +// ── Keybindings ───────────────────────────────────────────────────── +binds { + Mod+Shift+Slash { + show-hotkey-overlay + } + Mod+Return hotkey-overlay-title="Open a Terminal: kitty" { + spawn "kitty" + } + Mod+D hotkey-overlay-title="Run an Application: Rofi" { + spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}" + } + XF86AudioRaiseVolume allow-when-locked=true { + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+" + } + XF86AudioLowerVolume allow-when-locked=true { + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-" + } + XF86AudioMute allow-when-locked=true { + spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + } + XF86AudioMicMute allow-when-locked=true { + spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + } + XF86MonBrightnessUp allow-when-locked=true { + spawn "brightnessctl" "--class=backlight" "set" "+10%" + } + XF86MonBrightnessDown allow-when-locked=true { + spawn "brightnessctl" "--class=backlight" "set" "10%-" + } + // Open/close the Overview: a zoomed-out view of workspaces and windows. + // You can also move the mouse into the top-left hot corner, + // or do a four-finger swipe up on a touchpad. + Mod+A repeat=false { + toggle-overview + } + Mod+Shift+Q repeat=false { + close-window + } + Mod+Tab { + focus-column-right-or-first + } + Mod+shift+Tab { + focus-column-left-or-last + } + Mod+Left { + focus-column-left + } + Mod+Down { + focus-window-or-workspace-down + } + Mod+Up { + focus-window-or-workspace-up + } + Mod+Right { + focus-column-right + } + Mod+H { + focus-column-left + } + Mod+J { + focus-window-or-workspace-down + } + Mod+K { + focus-window-or-workspace-up + } + Mod+L { + focus-column-right + } + Mod+Shift+Left { + move-column-left + } + Mod+Shift+Down { + move-window-down-or-to-workspace-down + } + Mod+Shift+Up { + move-window-up-or-to-workspace-up + } + Mod+Shift+Right { + move-column-right + } + Mod+Shift+H { + move-column-left + } + Mod+Shift+J { + move-window-down-or-to-workspace-down + } + Mod+Shift+K { + move-window-up-or-to-workspace-up + } + Mod+Shift+L { + move-column-right + } + Mod+Home { + focus-column-first + } + Mod+End { + focus-column-last + } + Mod+Ctrl+Home { + move-column-to-first + } + Mod+Ctrl+End { + move-column-to-last + } + Mod+WheelScrollDown cooldown-ms=150 { + focus-column-right + } + Mod+WheelScrollUp cooldown-ms=150 { + focus-column-left + } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { + move-column-to-workspace-down + } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { + move-column-to-workspace-up + } + Mod+WheelScrollRight { + focus-column-right + } + Mod+WheelScrollLeft { + focus-column-left + } + Mod+Ctrl+WheelScrollRight { + move-column-right + } + Mod+Ctrl+WheelScrollLeft { + move-column-left + } + Mod+Shift+WheelScrollDown cooldown-ms=150 { + focus-workspace-down + } + Mod+Shift+WheelScrollUp cooldown-ms=150 { + focus-workspace-up + } + Mod+Ctrl+Shift+WheelScrollDown { + move-column-right + } + Mod+Ctrl+Shift+WheelScrollUp { + move-column-left + } + // Similarly, you can bind touchpad scroll "ticks". + // Touchpad scrolling is continuous, so for these binds it is split into + // discrete intervals. + // These binds are also affected by touchpad's natural-scroll, so these + // example binds are "inverted", since we have natural-scroll enabled for + // touchpads by default. + // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + Mod+1 { + focus-workspace 1 + } + Mod+2 { + focus-workspace 2 + } + Mod+3 { + focus-workspace 3 + } + Mod+4 { + focus-workspace 4 + } + Mod+5 { + focus-workspace 5 + } + Mod+6 { + focus-workspace 6 + } + Mod+7 { + focus-workspace 7 + } + Mod+8 { + focus-workspace 8 + } + Mod+9 { + focus-workspace 9 + } + Mod+Shift+1 { + move-window-to-workspace 1 + } + Mod+Shift+2 { + move-window-to-workspace 2 + } + Mod+Shift+3 { + move-window-to-workspace 3 + } + Mod+Shift+4 { + move-window-to-workspace 4 + } + Mod+Shift+5 { + move-window-to-workspace 5 + } + Mod+Shift+6 { + move-window-to-workspace 6 + } + Mod+Shift+7 { + move-window-to-workspace 7 + } + Mod+Shift+8 { + move-window-to-workspace 8 + } + Mod+Shift+9 { + move-window-to-workspace 9 + } + // Switches focus between the current and the previous workspace. + Mod+Bar { + focus-workspace-previous + } + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. + Mod+BraceLeft { + consume-or-expel-window-left + } + Mod+BraceRight { + consume-or-expel-window-right + } + // Consume one window from the right to the bottom of the focused column. + Mod+Comma { + consume-window-into-column + } + // Expel the bottom window from the focused column to the right. + Mod+Period { + expel-window-from-column + } + Mod+R { + switch-preset-column-width + } + // Cycling through the presets in reverse order is also possible. + // Mod+R { switch-preset-column-width-back; } + Mod+Shift+R { + switch-preset-window-height + } + Mod+Ctrl+R { + reset-window-height + } + Mod+F { + maximize-column + } + Mod+Shift+F { + fullscreen-window + } + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { + expand-column-to-available-width + } + Mod+C { + center-column + } + // Center all fully visible columns on screen. + Mod+Ctrl+C { + center-visible-columns + } + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { + set-column-width "-10%" + } + Mod+Plus { + set-column-width "+10%" + } + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { + set-window-height "-10%" + } + Mod+Shift+Equal { + set-window-height "+10%" + } + // Move the focused window between the floating and the tiling layout. + Mod+Shift+Space { + toggle-window-floating + } + Mod+Space { + switch-focus-between-floating-and-tiling + } + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+W { + toggle-column-tabbed-display + } + Print { + screenshot + } + Shift+Print { + screenshot-window + } + Shift+Ctrl+Print hotkey-overlay-title="Edit image in Clipboard" { + spawn-sh "wl-paste | swappy -f -" + } + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + Mod+Escape allow-inhibiting=false { + toggle-keyboard-shortcuts-inhibit + } + // The quit action will show a confirmation dialog to avoid accidental exits. + Mod+Shift+E { + quit + } + Ctrl+Alt+Delete { + quit + } +} +// ── Environment Variables ─────────────────────────────────────────── +environment { + QT_STYLE_OVERRIDE "kvantum" + QT_AUTO_SCREEN_SCALE_FACTOR "1" + QT_QPA_PLATFORM "wayland;xcb" + QT_WAYLAND_DISABLE_WINDOWDECORATION "1" + QT_QPA_PLATFORMTHEME "qt5ct" + MOZ_ENABLE_WAYLAND "1" + XCURSOR_SIZE "24" + GTK_THEME "catppuccin-macchiato-teal-standard-default" + SSH_AUTH_SOCK "$XDG_RUNTIME_DIR/rbw/ssh-agent-socket" + EDITOR "nvim" + VISUAL "nvim" + TERMINAL "/usr/bin/kitty" +} +// ── Display Options ───────────────────────────────────────────────── +output "eDP-1" { + off +} +output "HDMI-A-1" { + scale 1 + mode "3440x1440" +} +output "DP-1" { + variable-refresh-rate on-demand=true +} +// ── Input Options ─────────────────────────────────────────────────── input { - keyboard { - xkb { - layout "latam" - options "caps:escape" - } - // Enable numlock on startup, omitting this setting disables it. - numlock + keyboard { + xkb { + layout "latam" + options "caps:escape" } - // Next sections include libinput settings. - // Omitting settings disables them, or leaves them at their default values. - // All commented-out settings here are examples, not defaults. - touchpad { - // off - tap - // dwt - // dwtp - // drag false - // drag-lock - natural-scroll + // Enable numlock on startup, omitting this setting disables it. + numlock + } + // Next sections include libinput settings. + // Omitting settings disables them, or leaves them at their default values. + // All commented-out settings here are examples, not defaults. + touchpad { + // off + tap + // dwt + // dwtp + // drag false + // drag-lock + natural-scroll // accel-speed 0.2 // accel-profile "flat" // scroll-method "two-finger" // disabled-on-external-mouse - } - mouse { + } + mouse { // off // natural-scroll // accel-speed 0.2 // accel-profile "flat" // scroll-method "no-scroll" - } - trackpoint { + } + trackpoint { // off // natural-scroll // accel-speed 0.2 @@ -41,53 +459,11 @@ input { // scroll-button-lock // middle-emulation - } - // warp-mouse-to-focus - focus-follows-mouse + } + // warp-mouse-to-focus + focus-follows-mouse } -output "DP-1" { - variable-refresh-rate on-demand=true -} -layout { - gaps 10 - always-center-single-column - center-focused-column "never" - preset-column-widths { - // The default preset widths are 1/3, 1/2 and 2/3 of the output. - proportion 0.33333 - proportion 0.5 - proportion 0.66667 - } - preset-window-heights { - - } - default-column-width { - - } - focus-ring { - // Uncomment this line to disable the focus ring. - // off - // How many logical pixels the ring extends out from the windows. - width 2 - active-color "#7fc8ff" - inactive-color "#505050" - } -} -spawn-at-startup "/usr/lib/pam_kwallet_init" -spawn-at-startup "udieskiiw" -spawn-at-startup "brave" -// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: -// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" -hotkey-overlay { - skip-at-startup -} -// Uncomment this line to ask the clients to omit their client-side decorations if possible. -// If the client will specifically ask for CSD, the request will be honored. -// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. -// This option will also fix border/focus ring drawing behind some semitransparent windows. -// After enabling or disabling this, you need to restart the apps for this to take effect. -// prefer-no-csd -screenshot-path null +// ── Animations ────────────────────────────────────────────────────── animations { // Uncomment to turn off all animations. // off @@ -96,348 +472,19 @@ animations { // slowdown 3.0 } -window-rule { - // This regular expression is intentionally made as specific as possible, - // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. - match app-id="^org\\.wezfurlong\\.wezterm$" - default-column-width { - - } -} -window-rule { - match app-id="firefox$" title="^Picture-in-Picture$" - open-floating true -} -window-rule { - match app-id="^org\\.keepassxc\\.KeePassXC$" - match app-id="^org\\.gnome\\.World\\.Secrets$" - // block-out-from "screen-capture" - // Use this instead if you want them visible on third-party screenshot tools. - block-out-from "screencast" -} -window-rule { - match app-id="brave-browser" - match at-startup=true - default-column-width { - proportion 0.75 - } -} -window-rule { - geometry-corner-radius 4 - clip-to-geometry true -} -binds { - Mod+Shift+Slash { - show-hotkey-overlay - } - Mod+Return hotkey-overlay-title="Open a Terminal: kitty" { - spawn "kitty" - } - Mod+D hotkey-overlay-title="Run an Application: Rofi" { - spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}" - } - XF86AudioRaiseVolume allow-when-locked=true { - spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+" - } - XF86AudioLowerVolume allow-when-locked=true { - spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-" - } - XF86AudioMute allow-when-locked=true { - spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - } - XF86AudioMicMute allow-when-locked=true { - spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" - } - XF86MonBrightnessUp allow-when-locked=true { - spawn "brightnessctl" "--class=backlight" "set" "+10%" - } - XF86MonBrightnessDown allow-when-locked=true { - spawn "brightnessctl" "--class=backlight" "set" "10%-" - } - // Open/close the Overview: a zoomed-out view of workspaces and windows. - // You can also move the mouse into the top-left hot corner, - // or do a four-finger swipe up on a touchpad. - Mod+A repeat=false { - toggle-overview - } - Mod+Shift+Q repeat=false { - close-window - } - Mod+Tab { - focus-column-right-or-first - } - Mod+shift+Tab { - focus-column-left-or-last - } - Mod+Left { - focus-column-left - } - Mod+Down { - focus-window-or-workspace-down - } - Mod+Up { - focus-window-or-workspace-up - } - Mod+Right { - focus-column-right - } - Mod+H { - focus-column-left - } - Mod+J { - focus-window-or-workspace-down - } - Mod+K { - focus-window-or-workspace-up - } - Mod+L { - focus-column-right - } - Mod+Shift+Left { - move-column-left - } - Mod+Shift+Down { - move-window-down-or-to-workspace-down - } - Mod+Shift+Up { - move-window-up-or-to-workspace-up - } - Mod+Shift+Right { - move-column-right - } - Mod+Shift+H { - move-column-left - } - Mod+Shift+J { - move-window-down-or-to-workspace-down - } - Mod+Shift+K { - move-window-up-or-to-workspace-up - } - Mod+Shift+L { - move-column-right - } - Mod+Home { - focus-column-first - } - Mod+End { - focus-column-last - } - Mod+Ctrl+Home { - move-column-to-first - } - Mod+Ctrl+End { - move-column-to-last - } - Mod+WheelScrollDown cooldown-ms=150 { - focus-column-right - } - Mod+WheelScrollUp cooldown-ms=150 { - focus-column-left - } - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { - move-column-to-workspace-down - } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { - move-column-to-workspace-up - } - Mod+WheelScrollRight { - focus-column-right - } - Mod+WheelScrollLeft { - focus-column-left - } - Mod+Ctrl+WheelScrollRight { - move-column-right - } - Mod+Ctrl+WheelScrollLeft { - move-column-left - } - Mod+Shift+WheelScrollDown cooldown-ms=150 { - focus-workspace-down - } - Mod+Shift+WheelScrollUp cooldown-ms=150 { - focus-workspace-up - } - Mod+Ctrl+Shift+WheelScrollDown { - move-column-right - } - Mod+Ctrl+Shift+WheelScrollUp { - move-column-left - } - // Similarly, you can bind touchpad scroll "ticks". - // Touchpad scrolling is continuous, so for these binds it is split into - // discrete intervals. - // These binds are also affected by touchpad's natural-scroll, so these - // example binds are "inverted", since we have natural-scroll enabled for - // touchpads by default. - // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } - // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } - Mod+1 { - focus-workspace 1 - } - Mod+2 { - focus-workspace 2 - } - Mod+3 { - focus-workspace 3 - } - Mod+4 { - focus-workspace 4 - } - Mod+5 { - focus-workspace 5 - } - Mod+6 { - focus-workspace 6 - } - Mod+7 { - focus-workspace 7 - } - Mod+8 { - focus-workspace 8 - } - Mod+9 { - focus-workspace 9 - } - Mod+Shift+1 { - move-window-to-workspace 1 - } - Mod+Shift+2 { - move-window-to-workspace 2 - } - Mod+Shift+3 { - move-window-to-workspace 3 - } - Mod+Shift+4 { - move-window-to-workspace 4 - } - Mod+Shift+5 { - move-window-to-workspace 5 - } - Mod+Shift+6 { - move-window-to-workspace 6 - } - Mod+Shift+7 { - move-window-to-workspace 7 - } - Mod+Shift+8 { - move-window-to-workspace 8 - } - Mod+Shift+9 { - move-window-to-workspace 9 - } - // Switches focus between the current and the previous workspace. - Mod+Bar { - focus-workspace-previous - } - // The following binds move the focused window in and out of a column. - // If the window is alone, they will consume it into the nearby column to the side. - // If the window is already in a column, they will expel it out. - Mod+BraceLeft { - consume-or-expel-window-left - } - Mod+BraceRight { - consume-or-expel-window-right - } - // Consume one window from the right to the bottom of the focused column. - Mod+Comma { - consume-window-into-column - } - // Expel the bottom window from the focused column to the right. - Mod+Period { - expel-window-from-column - } - Mod+R { - switch-preset-column-width - } - // Cycling through the presets in reverse order is also possible. - // Mod+R { switch-preset-column-width-back; } - Mod+Shift+R { - switch-preset-window-height - } - Mod+Ctrl+R { - reset-window-height - } - Mod+F { - maximize-column - } - Mod+Shift+F { - fullscreen-window - } - // Expand the focused column to space not taken up by other fully visible columns. - // Makes the column "fill the rest of the space". - Mod+Ctrl+F { - expand-column-to-available-width - } - Mod+C { - center-column - } - // Center all fully visible columns on screen. - Mod+Ctrl+C { - center-visible-columns - } - // Finer width adjustments. - // This command can also: - // * set width in pixels: "1000" - // * adjust width in pixels: "-5" or "+5" - // * set width as a percentage of screen width: "25%" - // * adjust width as a percentage of screen width: "-10%" or "+10%" - // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, - // set-column-width "100" will make the column occupy 200 physical screen pixels. - Mod+Minus { - set-column-width "-10%" - } - Mod+Plus { - set-column-width "+10%" - } - // Finer height adjustments when in column with other windows. - Mod+Shift+Minus { - set-window-height "-10%" - } - Mod+Shift+Equal { - set-window-height "+10%" - } - // Move the focused window between the floating and the tiling layout. - Mod+Shift+Space { - toggle-window-floating - } - Mod+Space { - switch-focus-between-floating-and-tiling - } - // Toggle tabbed column display mode. - // Windows in this column will appear as vertical tabs, - // rather than stacked on top of each other. - Mod+W { - toggle-column-tabbed-display - } - Print { - screenshot - } - Shift+Ctrl+Print { - screenshot-screen - } - Shift+Print { - screenshot-window - } - // Applications such as remote-desktop clients and software KVM switches may - // request that niri stops processing the keyboard shortcuts defined here - // so they may, for example, forward the key presses as-is to a remote machine. - // It's a good idea to bind an escape hatch to toggle the inhibitor, - // so a buggy application can't hold your session hostage. - // - // The allow-inhibiting=false property can be applied to other binds as well, - // which ensures niri always processes them, even when an inhibitor is active. - Mod+Escape allow-inhibiting=false { - toggle-keyboard-shortcuts-inhibit - } - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+E { - quit - } - Ctrl+Alt+Delete { - quit - } -} +// ── Misc ──────────────────────────────────────────────────────────── +cursor { + xcursor-theme "catppuccin-macchiato-lavender-cursors" + xcursor-size 24 +} +hotkey-overlay { + skip-at-startup +} +// Uncomment this line to ask the clients to omit their client-side decorations if possible. +// If the client will specifically ask for CSD, the request will be honored. +// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. +// This option will also fix border/focus ring drawing behind some semitransparent windows. +// After enabling or disabling this, you need to restart the apps for this to take effect. +// prefer-no-csd +screenshot-path null diff --git a/configs/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua index 2334a40..da04eeb 100644 --- a/configs/nvim/lua/aleidk/options.lua +++ b/configs/nvim/lua/aleidk/options.lua @@ -36,6 +36,7 @@ opt.pumblend = 10 -- Popup blend opt.pumheight = 10 -- Maximum number of entries in a popup -- opt.relativenumber = true -- Relative line numbers opt.scrolloff = 15 -- Lines of context +opt.sidescrolloff = 25 -- Columns of context opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } opt.shiftround = true -- Round indent opt.shiftwidth = 2 -- Size of an indent diff --git a/kdlfmt.kdl b/kdlfmt.kdl new file mode 100644 index 0000000..69d621c --- /dev/null +++ b/kdlfmt.kdl @@ -0,0 +1,3 @@ +indent_size 2 +use_tabs #false + From 713fb48d8dd6db87739b0ccad8769d86466880d5 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 27 Oct 2025 11:39:38 -0300 Subject: [PATCH 143/152] update niri config --- .dotter/aleidk-work-laptop.toml | 26 + .dotter/global.toml | 7 +- configs/mako/config | 1 + configs/niri/config.kdl | 871 +++++++++++++++------------- configs/nvim/lua/aleidk/options.lua | 1 + configs/zed | 1 + kdlfmt.kdl | 3 + 7 files changed, 496 insertions(+), 414 deletions(-) create mode 120000 configs/zed create mode 100644 kdlfmt.kdl diff --git a/.dotter/aleidk-work-laptop.toml b/.dotter/aleidk-work-laptop.toml index 05fd1ac..b1fe098 100644 --- a/.dotter/aleidk-work-laptop.toml +++ b/.dotter/aleidk-work-laptop.toml @@ -4,4 +4,30 @@ packages = ["default"] [files] "configs/hypr/work-laptop/hyprland.conf" = "~/.config/hypr/include/work-laptop.conf" + +[files."configs/niri/config.kdl"] +target = "~/.config/niri/config.kdl" +type = "template" +append = """ +window-rule { + match app-id="brave-work" + open-on-workspace "1" + open-focused true + + default-column-width { + proportion 0.5 + } +} +window-rule { + match app-id="brave-personal" + open-on-workspace "2" + open-focused false + + default-column-width { + proportion 0.5 + } +} + +""" + [variables] diff --git a/.dotter/global.toml b/.dotter/global.toml index a137e13..36b6ef0 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -4,7 +4,7 @@ default_target_type = "symbolic" [helpers] [default] -depends = [] +depends = ["niri"] [default.files] "configs/fish" = "~/.config/fish" @@ -21,7 +21,6 @@ depends = [] "configs/mako" = "~/.config/mako" "configs/mise" = "~/.config/mise" "configs/mpv" = "~/.config/mpv" -"configs/niri" = "~/.config/niri" "configs/nvim" = "~/.config/nvim" "configs/rofi" = "~/.config/rofi" "configs/swappy" = "~/.config/swappy" @@ -34,6 +33,10 @@ depends = [] "configs/wpaperd" = "~/.config/wpaperd" "configs/yazi" = "~/.config/yazi" "configs/systemd" = "~/.config/systemd" +"configs/zed" = "~/.config/zed" [default.variables] + +[niri.files] +"configs/niri" = "~/.config/niri" diff --git a/configs/mako/config b/configs/mako/config index 1b7531f..7a78949 100644 --- a/configs/mako/config +++ b/configs/mako/config @@ -1,4 +1,5 @@ default-timeout=5000 +anchor=top-center # Colors diff --git a/configs/niri/config.kdl b/configs/niri/config.kdl index 06185e2..9581911 100644 --- a/configs/niri/config.kdl +++ b/configs/niri/config.kdl @@ -1,37 +1,455 @@ +// ╭─────────────────────────────────────────────────────────╮ +// │ Windows Rules │ +// ╰─────────────────────────────────────────────────────────╯ +window-rule { + // This regular expression is intentionally made as specific as possible, + // since this is the default config, and we want no false positives. + // You can get away with just app-id="wezterm" if you want. + match app-id="^org\\.wezfurlong\\.wezterm$" + default-column-width { + + } +} +// Floatin Windows +window-rule { + match app-id="firefox$" title="^Picture-in-Picture$" + match app-id="^brave-.*-Default$" + // Extensions popup open-floating true +} +window-rule { + match app-id="^org\\.keepassxc\\.KeePassXC$" + match app-id="^org\\.gnome\\.World\\.Secrets$" + // block-out-from "screen-capture" + // Use this instead if you want them visible on third-party screenshot tools. + block-out-from "screencast" +} +window-rule { + match app-id="brave-browser" + match at-startup=true + default-column-width { + proportion 0.75 + } +} +window-rule { + match title="^Meet: .*" app-id="brave-browser" + open-floating true +} +window-rule { + geometry-corner-radius 4 + clip-to-geometry true +} +// ╭─────────────────────────────────────────────────────────╮ +// │ Auto Start Apps │ +// ╰─────────────────────────────────────────────────────────╯ +spawn-at-startup "/usr/lib/pam_kwallet_init" +spawn-at-startup "udieskie" +spawn-at-startup "brave" +// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: +// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" +// ╭─────────────────────────────────────────────────────────╮ +// │ System Config │ +// ╰─────────────────────────────────────────────────────────╯ +// ── Layout Config ─────────────────────────────────────────────────── +layout { + gaps 10 + always-center-single-column + center-focused-column "never" + preset-column-widths { + // The default preset widths are 1/3, 1/2 and 2/3 of the output. + proportion 0.33333 + proportion 0.5 + proportion 0.66667 + } + preset-window-heights { + + } + default-column-width { + proportion 0.5 + } + focus-ring { + // Uncomment this line to disable the focus ring. + // off + // How many logical pixels the ring extends out from the windows. + width 2 + active-color "#7fc8ff" + inactive-color "#505050" + } +} +// ── Keybindings ───────────────────────────────────────────────────── +binds { + Mod+Shift+Slash { + show-hotkey-overlay + } + Mod+Return hotkey-overlay-title="Open a Terminal: kitty" { + spawn "kitty" + } + Mod+D hotkey-overlay-title="Run an Application: Rofi" { + spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}" + } + XF86AudioRaiseVolume allow-when-locked=true { + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+" + } + XF86AudioLowerVolume allow-when-locked=true { + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-" + } + XF86AudioMute allow-when-locked=true { + spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + } + XF86AudioMicMute allow-when-locked=true { + spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + } + XF86MonBrightnessUp allow-when-locked=true { + spawn "brightnessctl" "--class=backlight" "set" "+10%" + } + XF86MonBrightnessDown allow-when-locked=true { + spawn "brightnessctl" "--class=backlight" "set" "10%-" + } + // Open/close the Overview: a zoomed-out view of workspaces and windows. + // You can also move the mouse into the top-left hot corner, + // or do a four-finger swipe up on a touchpad. + Mod+A repeat=false { + toggle-overview + } + Mod+Shift+Q repeat=false { + close-window + } + Mod+Tab { + focus-column-right-or-first + } + Mod+shift+Tab { + focus-column-left-or-last + } + Mod+Left { + focus-column-left + } + Mod+Down { + focus-window-or-workspace-down + } + Mod+Up { + focus-window-or-workspace-up + } + Mod+Right { + focus-column-right + } + Mod+H { + focus-column-left + } + Mod+J { + focus-window-or-workspace-down + } + Mod+K { + focus-window-or-workspace-up + } + Mod+L { + focus-column-right + } + Mod+Shift+Left { + move-column-left + } + Mod+Shift+Down { + move-window-down-or-to-workspace-down + } + Mod+Shift+Up { + move-window-up-or-to-workspace-up + } + Mod+Shift+Right { + move-column-right + } + Mod+Shift+H { + move-column-left + } + Mod+Shift+J { + move-window-down-or-to-workspace-down + } + Mod+Shift+K { + move-window-up-or-to-workspace-up + } + Mod+Shift+L { + move-column-right + } + Mod+Home { + focus-column-first + } + Mod+End { + focus-column-last + } + Mod+Ctrl+Home { + move-column-to-first + } + Mod+Ctrl+End { + move-column-to-last + } + Mod+WheelScrollDown cooldown-ms=150 { + focus-column-right + } + Mod+WheelScrollUp cooldown-ms=150 { + focus-column-left + } + Mod+Ctrl+WheelScrollDown cooldown-ms=150 { + move-column-to-workspace-down + } + Mod+Ctrl+WheelScrollUp cooldown-ms=150 { + move-column-to-workspace-up + } + Mod+WheelScrollRight { + focus-column-right + } + Mod+WheelScrollLeft { + focus-column-left + } + Mod+Ctrl+WheelScrollRight { + move-column-right + } + Mod+Ctrl+WheelScrollLeft { + move-column-left + } + Mod+Shift+WheelScrollDown cooldown-ms=150 { + focus-workspace-down + } + Mod+Shift+WheelScrollUp cooldown-ms=150 { + focus-workspace-up + } + Mod+Ctrl+Shift+WheelScrollDown { + move-column-right + } + Mod+Ctrl+Shift+WheelScrollUp { + move-column-left + } + // Similarly, you can bind touchpad scroll "ticks". + // Touchpad scrolling is continuous, so for these binds it is split into + // discrete intervals. + // These binds are also affected by touchpad's natural-scroll, so these + // example binds are "inverted", since we have natural-scroll enabled for + // touchpads by default. + // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } + // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } + Mod+1 { + focus-workspace 1 + } + Mod+2 { + focus-workspace 2 + } + Mod+3 { + focus-workspace 3 + } + Mod+4 { + focus-workspace 4 + } + Mod+5 { + focus-workspace 5 + } + Mod+6 { + focus-workspace 6 + } + Mod+7 { + focus-workspace 7 + } + Mod+8 { + focus-workspace 8 + } + Mod+9 { + focus-workspace 9 + } + Mod+Shift+1 { + move-window-to-workspace 1 + } + Mod+Shift+2 { + move-window-to-workspace 2 + } + Mod+Shift+3 { + move-window-to-workspace 3 + } + Mod+Shift+4 { + move-window-to-workspace 4 + } + Mod+Shift+5 { + move-window-to-workspace 5 + } + Mod+Shift+6 { + move-window-to-workspace 6 + } + Mod+Shift+7 { + move-window-to-workspace 7 + } + Mod+Shift+8 { + move-window-to-workspace 8 + } + Mod+Shift+9 { + move-window-to-workspace 9 + } + // Switches focus between the current and the previous workspace. + Mod+Bar { + focus-workspace-previous + } + // The following binds move the focused window in and out of a column. + // If the window is alone, they will consume it into the nearby column to the side. + // If the window is already in a column, they will expel it out. + Mod+BraceLeft { + consume-or-expel-window-left + } + Mod+BraceRight { + consume-or-expel-window-right + } + // Consume one window from the right to the bottom of the focused column. + Mod+Comma { + consume-window-into-column + } + // Expel the bottom window from the focused column to the right. + Mod+Period { + expel-window-from-column + } + Mod+R { + switch-preset-column-width + } + // Cycling through the presets in reverse order is also possible. + // Mod+R { switch-preset-column-width-back; } + Mod+Shift+R { + switch-preset-window-height + } + Mod+Ctrl+R { + reset-window-height + } + Mod+F { + maximize-column + } + Mod+Shift+F { + fullscreen-window + } + // Expand the focused column to space not taken up by other fully visible columns. + // Makes the column "fill the rest of the space". + Mod+Ctrl+F { + expand-column-to-available-width + } + Mod+C { + center-column + } + // Center all fully visible columns on screen. + Mod+Ctrl+C { + center-visible-columns + } + // Finer width adjustments. + // This command can also: + // * set width in pixels: "1000" + // * adjust width in pixels: "-5" or "+5" + // * set width as a percentage of screen width: "25%" + // * adjust width as a percentage of screen width: "-10%" or "+10%" + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, + // set-column-width "100" will make the column occupy 200 physical screen pixels. + Mod+Minus { + set-column-width "-10%" + } + Mod+Plus { + set-column-width "+10%" + } + // Finer height adjustments when in column with other windows. + Mod+Shift+Minus { + set-window-height "-10%" + } + Mod+Shift+Equal { + set-window-height "+10%" + } + // Move the focused window between the floating and the tiling layout. + Mod+Shift+Space { + toggle-window-floating + } + Mod+Space { + switch-focus-between-floating-and-tiling + } + // Toggle tabbed column display mode. + // Windows in this column will appear as vertical tabs, + // rather than stacked on top of each other. + Mod+W { + toggle-column-tabbed-display + } + Print { + screenshot + } + Shift+Print { + screenshot-window + } + Shift+Ctrl+Print hotkey-overlay-title="Edit image in Clipboard" { + spawn-sh "wl-paste | swappy -f -" + } + // Applications such as remote-desktop clients and software KVM switches may + // request that niri stops processing the keyboard shortcuts defined here + // so they may, for example, forward the key presses as-is to a remote machine. + // It's a good idea to bind an escape hatch to toggle the inhibitor, + // so a buggy application can't hold your session hostage. + // + // The allow-inhibiting=false property can be applied to other binds as well, + // which ensures niri always processes them, even when an inhibitor is active. + Mod+Escape allow-inhibiting=false { + toggle-keyboard-shortcuts-inhibit + } + // The quit action will show a confirmation dialog to avoid accidental exits. + Mod+Shift+E { + quit + } + Ctrl+Alt+Delete { + quit + } +} +// ── Environment Variables ─────────────────────────────────────────── +environment { + QT_STYLE_OVERRIDE "kvantum" + QT_AUTO_SCREEN_SCALE_FACTOR "1" + QT_QPA_PLATFORM "wayland;xcb" + QT_WAYLAND_DISABLE_WINDOWDECORATION "1" + QT_QPA_PLATFORMTHEME "qt5ct" + MOZ_ENABLE_WAYLAND "1" + XCURSOR_SIZE "24" + GTK_THEME "catppuccin-macchiato-teal-standard-default" + SSH_AUTH_SOCK "$XDG_RUNTIME_DIR/rbw/ssh-agent-socket" + EDITOR "nvim" + VISUAL "nvim" + TERMINAL "/usr/bin/kitty" +} +// ── Display Options ───────────────────────────────────────────────── +output "eDP-1" { + off +} +output "HDMI-A-1" { + scale 1 + mode "3440x1440" +} +output "DP-1" { + variable-refresh-rate on-demand=true +} +// ── Input Options ─────────────────────────────────────────────────── input { - keyboard { - xkb { - layout "latam" - options "caps:escape" - } - // Enable numlock on startup, omitting this setting disables it. - numlock + keyboard { + xkb { + layout "latam" + options "caps:escape" } - // Next sections include libinput settings. - // Omitting settings disables them, or leaves them at their default values. - // All commented-out settings here are examples, not defaults. - touchpad { - // off - tap - // dwt - // dwtp - // drag false - // drag-lock - natural-scroll + // Enable numlock on startup, omitting this setting disables it. + numlock + } + // Next sections include libinput settings. + // Omitting settings disables them, or leaves them at their default values. + // All commented-out settings here are examples, not defaults. + touchpad { + // off + tap + // dwt + // dwtp + // drag false + // drag-lock + natural-scroll // accel-speed 0.2 // accel-profile "flat" // scroll-method "two-finger" // disabled-on-external-mouse - } - mouse { + } + mouse { // off // natural-scroll // accel-speed 0.2 // accel-profile "flat" // scroll-method "no-scroll" - } - trackpoint { + } + trackpoint { // off // natural-scroll // accel-speed 0.2 @@ -41,53 +459,11 @@ input { // scroll-button-lock // middle-emulation - } - // warp-mouse-to-focus - focus-follows-mouse + } + // warp-mouse-to-focus + focus-follows-mouse } -output "DP-1" { - variable-refresh-rate on-demand=true -} -layout { - gaps 10 - always-center-single-column - center-focused-column "never" - preset-column-widths { - // The default preset widths are 1/3, 1/2 and 2/3 of the output. - proportion 0.33333 - proportion 0.5 - proportion 0.66667 - } - preset-window-heights { - - } - default-column-width { - - } - focus-ring { - // Uncomment this line to disable the focus ring. - // off - // How many logical pixels the ring extends out from the windows. - width 2 - active-color "#7fc8ff" - inactive-color "#505050" - } -} -spawn-at-startup "/usr/lib/pam_kwallet_init" -spawn-at-startup "udieskiiw" -spawn-at-startup "brave" -// To run a shell command (with variables, pipes, etc.), use spawn-sh-at-startup: -// spawn-sh-at-startup "qs -c ~/source/qs/MyAwesomeShell" -hotkey-overlay { - skip-at-startup -} -// Uncomment this line to ask the clients to omit their client-side decorations if possible. -// If the client will specifically ask for CSD, the request will be honored. -// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. -// This option will also fix border/focus ring drawing behind some semitransparent windows. -// After enabling or disabling this, you need to restart the apps for this to take effect. -// prefer-no-csd -screenshot-path null +// ── Animations ────────────────────────────────────────────────────── animations { // Uncomment to turn off all animations. // off @@ -96,348 +472,19 @@ animations { // slowdown 3.0 } -window-rule { - // This regular expression is intentionally made as specific as possible, - // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. - match app-id="^org\\.wezfurlong\\.wezterm$" - default-column-width { - - } -} -window-rule { - match app-id="firefox$" title="^Picture-in-Picture$" - open-floating true -} -window-rule { - match app-id="^org\\.keepassxc\\.KeePassXC$" - match app-id="^org\\.gnome\\.World\\.Secrets$" - // block-out-from "screen-capture" - // Use this instead if you want them visible on third-party screenshot tools. - block-out-from "screencast" -} -window-rule { - match app-id="brave-browser" - match at-startup=true - default-column-width { - proportion 0.75 - } -} -window-rule { - geometry-corner-radius 4 - clip-to-geometry true -} -binds { - Mod+Shift+Slash { - show-hotkey-overlay - } - Mod+Return hotkey-overlay-title="Open a Terminal: kitty" { - spawn "kitty" - } - Mod+D hotkey-overlay-title="Run an Application: Rofi" { - spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}" - } - XF86AudioRaiseVolume allow-when-locked=true { - spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+" - } - XF86AudioLowerVolume allow-when-locked=true { - spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-" - } - XF86AudioMute allow-when-locked=true { - spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - } - XF86AudioMicMute allow-when-locked=true { - spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" - } - XF86MonBrightnessUp allow-when-locked=true { - spawn "brightnessctl" "--class=backlight" "set" "+10%" - } - XF86MonBrightnessDown allow-when-locked=true { - spawn "brightnessctl" "--class=backlight" "set" "10%-" - } - // Open/close the Overview: a zoomed-out view of workspaces and windows. - // You can also move the mouse into the top-left hot corner, - // or do a four-finger swipe up on a touchpad. - Mod+A repeat=false { - toggle-overview - } - Mod+Shift+Q repeat=false { - close-window - } - Mod+Tab { - focus-column-right-or-first - } - Mod+shift+Tab { - focus-column-left-or-last - } - Mod+Left { - focus-column-left - } - Mod+Down { - focus-window-or-workspace-down - } - Mod+Up { - focus-window-or-workspace-up - } - Mod+Right { - focus-column-right - } - Mod+H { - focus-column-left - } - Mod+J { - focus-window-or-workspace-down - } - Mod+K { - focus-window-or-workspace-up - } - Mod+L { - focus-column-right - } - Mod+Shift+Left { - move-column-left - } - Mod+Shift+Down { - move-window-down-or-to-workspace-down - } - Mod+Shift+Up { - move-window-up-or-to-workspace-up - } - Mod+Shift+Right { - move-column-right - } - Mod+Shift+H { - move-column-left - } - Mod+Shift+J { - move-window-down-or-to-workspace-down - } - Mod+Shift+K { - move-window-up-or-to-workspace-up - } - Mod+Shift+L { - move-column-right - } - Mod+Home { - focus-column-first - } - Mod+End { - focus-column-last - } - Mod+Ctrl+Home { - move-column-to-first - } - Mod+Ctrl+End { - move-column-to-last - } - Mod+WheelScrollDown cooldown-ms=150 { - focus-column-right - } - Mod+WheelScrollUp cooldown-ms=150 { - focus-column-left - } - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { - move-column-to-workspace-down - } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { - move-column-to-workspace-up - } - Mod+WheelScrollRight { - focus-column-right - } - Mod+WheelScrollLeft { - focus-column-left - } - Mod+Ctrl+WheelScrollRight { - move-column-right - } - Mod+Ctrl+WheelScrollLeft { - move-column-left - } - Mod+Shift+WheelScrollDown cooldown-ms=150 { - focus-workspace-down - } - Mod+Shift+WheelScrollUp cooldown-ms=150 { - focus-workspace-up - } - Mod+Ctrl+Shift+WheelScrollDown { - move-column-right - } - Mod+Ctrl+Shift+WheelScrollUp { - move-column-left - } - // Similarly, you can bind touchpad scroll "ticks". - // Touchpad scrolling is continuous, so for these binds it is split into - // discrete intervals. - // These binds are also affected by touchpad's natural-scroll, so these - // example binds are "inverted", since we have natural-scroll enabled for - // touchpads by default. - // Mod+TouchpadScrollDown { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02+"; } - // Mod+TouchpadScrollUp { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.02-"; } - Mod+1 { - focus-workspace 1 - } - Mod+2 { - focus-workspace 2 - } - Mod+3 { - focus-workspace 3 - } - Mod+4 { - focus-workspace 4 - } - Mod+5 { - focus-workspace 5 - } - Mod+6 { - focus-workspace 6 - } - Mod+7 { - focus-workspace 7 - } - Mod+8 { - focus-workspace 8 - } - Mod+9 { - focus-workspace 9 - } - Mod+Shift+1 { - move-window-to-workspace 1 - } - Mod+Shift+2 { - move-window-to-workspace 2 - } - Mod+Shift+3 { - move-window-to-workspace 3 - } - Mod+Shift+4 { - move-window-to-workspace 4 - } - Mod+Shift+5 { - move-window-to-workspace 5 - } - Mod+Shift+6 { - move-window-to-workspace 6 - } - Mod+Shift+7 { - move-window-to-workspace 7 - } - Mod+Shift+8 { - move-window-to-workspace 8 - } - Mod+Shift+9 { - move-window-to-workspace 9 - } - // Switches focus between the current and the previous workspace. - Mod+Bar { - focus-workspace-previous - } - // The following binds move the focused window in and out of a column. - // If the window is alone, they will consume it into the nearby column to the side. - // If the window is already in a column, they will expel it out. - Mod+BraceLeft { - consume-or-expel-window-left - } - Mod+BraceRight { - consume-or-expel-window-right - } - // Consume one window from the right to the bottom of the focused column. - Mod+Comma { - consume-window-into-column - } - // Expel the bottom window from the focused column to the right. - Mod+Period { - expel-window-from-column - } - Mod+R { - switch-preset-column-width - } - // Cycling through the presets in reverse order is also possible. - // Mod+R { switch-preset-column-width-back; } - Mod+Shift+R { - switch-preset-window-height - } - Mod+Ctrl+R { - reset-window-height - } - Mod+F { - maximize-column - } - Mod+Shift+F { - fullscreen-window - } - // Expand the focused column to space not taken up by other fully visible columns. - // Makes the column "fill the rest of the space". - Mod+Ctrl+F { - expand-column-to-available-width - } - Mod+C { - center-column - } - // Center all fully visible columns on screen. - Mod+Ctrl+C { - center-visible-columns - } - // Finer width adjustments. - // This command can also: - // * set width in pixels: "1000" - // * adjust width in pixels: "-5" or "+5" - // * set width as a percentage of screen width: "25%" - // * adjust width as a percentage of screen width: "-10%" or "+10%" - // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, - // set-column-width "100" will make the column occupy 200 physical screen pixels. - Mod+Minus { - set-column-width "-10%" - } - Mod+Plus { - set-column-width "+10%" - } - // Finer height adjustments when in column with other windows. - Mod+Shift+Minus { - set-window-height "-10%" - } - Mod+Shift+Equal { - set-window-height "+10%" - } - // Move the focused window between the floating and the tiling layout. - Mod+Shift+Space { - toggle-window-floating - } - Mod+Space { - switch-focus-between-floating-and-tiling - } - // Toggle tabbed column display mode. - // Windows in this column will appear as vertical tabs, - // rather than stacked on top of each other. - Mod+W { - toggle-column-tabbed-display - } - Print { - screenshot - } - Shift+Ctrl+Print { - screenshot-screen - } - Shift+Print { - screenshot-window - } - // Applications such as remote-desktop clients and software KVM switches may - // request that niri stops processing the keyboard shortcuts defined here - // so they may, for example, forward the key presses as-is to a remote machine. - // It's a good idea to bind an escape hatch to toggle the inhibitor, - // so a buggy application can't hold your session hostage. - // - // The allow-inhibiting=false property can be applied to other binds as well, - // which ensures niri always processes them, even when an inhibitor is active. - Mod+Escape allow-inhibiting=false { - toggle-keyboard-shortcuts-inhibit - } - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+E { - quit - } - Ctrl+Alt+Delete { - quit - } -} +// ── Misc ──────────────────────────────────────────────────────────── +cursor { + xcursor-theme "catppuccin-macchiato-lavender-cursors" + xcursor-size 24 +} +hotkey-overlay { + skip-at-startup +} +// Uncomment this line to ask the clients to omit their client-side decorations if possible. +// If the client will specifically ask for CSD, the request will be honored. +// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. +// This option will also fix border/focus ring drawing behind some semitransparent windows. +// After enabling or disabling this, you need to restart the apps for this to take effect. +// prefer-no-csd +screenshot-path null diff --git a/configs/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua index 2334a40..da04eeb 100644 --- a/configs/nvim/lua/aleidk/options.lua +++ b/configs/nvim/lua/aleidk/options.lua @@ -36,6 +36,7 @@ opt.pumblend = 10 -- Popup blend opt.pumheight = 10 -- Maximum number of entries in a popup -- opt.relativenumber = true -- Relative line numbers opt.scrolloff = 15 -- Lines of context +opt.sidescrolloff = 25 -- Columns of context opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } opt.shiftround = true -- Round indent opt.shiftwidth = 2 -- Size of an indent diff --git a/configs/zed b/configs/zed new file mode 120000 index 0000000..2283778 --- /dev/null +++ b/configs/zed @@ -0,0 +1 @@ +/home/aleidk/.config/dotfiles/Configs/zed/.config/zed \ No newline at end of file diff --git a/kdlfmt.kdl b/kdlfmt.kdl new file mode 100644 index 0000000..69d621c --- /dev/null +++ b/kdlfmt.kdl @@ -0,0 +1,3 @@ +indent_size 2 +use_tabs #false + From e9edfb922a530703deb90bfb0889d024dd1e86a9 Mon Sep 17 00:00:00 2001 From: aleidk Date: Mon, 3 Nov 2025 09:37:13 -0300 Subject: [PATCH 144/152] add quick term support --- configs/ghostty/config | 5 +- configs/kitty/quick-access-terminal.conf | 120 +++++++++++++++++++++++ configs/lazygit/config.yml | 26 ++--- configs/niri/config.kdl | 20 +++- 4 files changed, 153 insertions(+), 18 deletions(-) create mode 100644 configs/kitty/quick-access-terminal.conf diff --git a/configs/ghostty/config b/configs/ghostty/config index 4d1ff59..fa8602d 100644 --- a/configs/ghostty/config +++ b/configs/ghostty/config @@ -1,7 +1,10 @@ -theme = catppuccin-macchiato +theme = Catppuccin Macchiato +font-family = JetBrainsMono Nerd Font # Common +keybind = global:ctrl+shift+x=toggle_quick_terminal + keybind = ctrl+space>o=write_selection_file:open keybind = ctrl+space>shift+o=write_selection_file:paste diff --git a/configs/kitty/quick-access-terminal.conf b/configs/kitty/quick-access-terminal.conf new file mode 100644 index 0000000..3d3949b --- /dev/null +++ b/configs/kitty/quick-access-terminal.conf @@ -0,0 +1,120 @@ +lines 30 + +#: The number of lines shown in the panel. Ignored for background, +#: centered, and vertical panels. If it has the suffix px then it sets +#: the height of the panel in pixels instead of lines. + +columns 200 + +#: The number of columns shown in the panel. Ignored for background, +#: centered, and horizontal panels. If it has the suffix px then it +#: sets the width of the panel in pixels instead of columns. + +edge top + +#: Which edge of the screen to place the panel on. Note that some +#: window managers (such as i3) do not support placing docked windows +#: on the left and right edges. The value background means make the +#: panel the "desktop wallpaper". Note that when using sway if you set +#: a background in your sway config it will cover the background drawn +#: using this kitten. Additionally, there are three more values: +#: center, center-sized and none. The value center anchors the panel +#: to all sides and covers the entire display (on macOS the part of +#: the display not covered by titlebar and dock). The panel can be +#: shrunk and placed using the margin parameters. The value none +#: anchors the panel to the top left corner and should be placed using +#: the margin parameters. Its size is set by lines and columns. The +#: value center-sized is just like none except that the panel is +#: centered instead of in the top left corner and the margins have no +#: effect. + +background_opacity 1 + +#: The background opacity of the window. This works the same as the +#: kitty option of the same name, it is present here as it has a +#: different default value for the quick access terminal. + +# hide_on_focus_loss no + +#: Hide the window when it loses keyboard focus automatically. Using +#: this option will force focus_policy to on-demand. + +# grab_keyboard no + +#: Grab the keyboard. This means global shortcuts defined in the OS +#: will be passed to kitty instead. Useful if you want to create an OS +#: modal window. How well this works depends on the OS/window +#: manager/desktop environment. On Wayland it works only if the +#: compositor implements the inhibit-keyboard-shortcuts protocol +#: . On macOS Apple doesn't allow applications to grab the +#: keyboard without special permissions, so it doesn't work. + +margin_left 50 + +#: Set the left margin for the panel, in pixels. Has no effect for +#: right edge panels. Only works on macOS and Wayland compositors that +#: supports the wlr layer shell protocol. + +margin_right 50 + +#: Set the right margin for the panel, in pixels. Has no effect for +#: left edge panels. Only works on macOS and Wayland compositors that +#: supports the wlr layer shell protocol. + +margin_top 10 + +#: Set the top margin for the panel, in pixels. Has no effect for +#: bottom edge panels. Only works on macOS and Wayland compositors +#: that supports the wlr layer shell protocol. + +# margin_bottom 0 + +#: Set the bottom margin for the panel, in pixels. Has no effect for +#: top edge panels. Only works on macOS and Wayland compositors that +#: supports the wlr layer shell protocol. + +# kitty_conf + +#: Path to config file to use for kitty when drawing the window. Can +#: be specified multiple times. By default, the normal kitty.conf is +#: used. Relative paths are resolved with respect to the kitty config +#: directory. + +kitty_override window_padding_width=0 8 + +#: Override individual kitty configuration options, can be specified +#: multiple times. Syntax: kitty_override name=value. For example: +#: kitty_override font_size=20. + +app_id kitty-quick-access + +#: On Wayland set the namespace of the layer shell surface. On X11 set +#: the WM_CLASS assigned to the quick access window. (Linux only) + +# output_name + +#: The panel can only be displayed on a single monitor (output) at a +#: time. This allows you to specify which output is used, by name. If +#: not specified the compositor will choose an output automatically, +#: typically the last output the user interacted with or the primary +#: monitor. Run kitten panel --output-name list to get a list of +#: available outputs. Use listjson for a json encoded output. Note +#: that on Wayland the output can only be set at panel creation time, +#: it cannot be changed after creation, nor is there anyway to display +#: a single panel on all outputs. Please complain to the Wayland +#: developers about this. + +# start_as_hidden no + +#: Whether to start the quick access terminal hidden. Useful if you +#: are starting it as part of system startup. + +# focus_policy exclusive + +#: On a Wayland compositor that supports the wlr layer shell protocol, +#: specify the focus policy for keyboard interactivity with the panel. +#: Please refer to the wlr layer shell protocol documentation for more +#: details. Note that different Wayland compositors behave very +#: differently with exclusive, your mileage may vary. On macOS, +#: exclusive and on-demand are currently the same. diff --git a/configs/lazygit/config.yml b/configs/lazygit/config.yml index d596e42..2d38e28 100644 --- a/configs/lazygit/config.yml +++ b/configs/lazygit/config.yml @@ -155,18 +155,18 @@ gui: # Config relating to git git: # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md - paging: - # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never' - colorArg: always - # e.g. - # diff-so-fancy - # delta --dark --paging=never - # ydiff -p cat -s --wrap --width={{columnWidth}} - pager: "" - # If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager). - useConfig: true - # e.g. 'difft --color=always' - externalDiffCommand: "" + pagers: + - # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never' + colorArg: always + # e.g. + # diff-so-fancy + # delta --dark --paging=never + # ydiff -p cat -s --wrap --width={{columnWidth}} + pager: "" + # If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager). + useConfig: true + # e.g. 'difft --color=always' + externalDiffCommand: "" # Config relating to committing commit: # If true, pass '--signoff' flag when committing @@ -406,7 +406,7 @@ keybinding: viewResetOptions: D fetch: f toggleTreeView: '`' - openMergeTool: M + openMergeOptions: M openStatusFilter: copyFileInfoToClipboard: "y" branches: diff --git a/configs/niri/config.kdl b/configs/niri/config.kdl index 9581911..c33f17d 100644 --- a/configs/niri/config.kdl +++ b/configs/niri/config.kdl @@ -38,6 +38,16 @@ window-rule { geometry-corner-radius 4 clip-to-geometry true } +layer-rule { + match namespace="kitty-quick-access" + geometry-corner-radius 12 + shadow { + on + spread 10 + softness 20 + offset x=-10 y=10 + } +} // ╭─────────────────────────────────────────────────────────╮ // │ Auto Start Apps │ // ╰─────────────────────────────────────────────────────────╯ @@ -83,6 +93,12 @@ binds { Mod+Return hotkey-overlay-title="Open a Terminal: kitty" { spawn "kitty" } + Mod+Shift+Return hotkey-overlay-title="Open Quick Terminal" { + spawn "kitten" "quick_access_terminal" + } + Mod+Shift+E hotkey-overlay-title="Open Code Editor" { + spawn-sh "kitten quick_access_terminal --instance-group editor-choice fish -c \"zeditor (zoxide query -i)\"" + } Mod+D hotkey-overlay-title="Run an Application: Rofi" { spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}" } @@ -381,10 +397,6 @@ binds { Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit } - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+E { - quit - } Ctrl+Alt+Delete { quit } From 14d8aed4a224b1991ca21e2908f02651e727f342 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 5 Nov 2025 09:44:48 -0300 Subject: [PATCH 145/152] update hypridle for niri --- configs/hypr/base/hypridle.conf | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/configs/hypr/base/hypridle.conf b/configs/hypr/base/hypridle.conf index a4b4f88..d96ac12 100644 --- a/configs/hypr/base/hypridle.conf +++ b/configs/hypr/base/hypridle.conf @@ -1,7 +1,7 @@ general { - lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. - before_sleep_cmd = loginctl lock-session # lock before suspend. - after_sleep_cmd = hyprctl dispatch dpms on # to avoid having to press a key twice to turn on the display. + lock_cmd = pidof hyprlock || hyprlock # avoid starting multiple hyprlock instances. + before_sleep_cmd = loginctl lock-session # lock before suspend. + after_sleep_cmd = niri msg action power-on-monitors # to avoid having to press a key twice to turn on the display. } listener { @@ -23,9 +23,9 @@ listener { } listener { - timeout = 330 # 5.5min - on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed - on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired. + timeout = 330 # 5.5min + on-timeout = niri msg action power-off-monitors # screen off when timeout has passed + on-resume = niri msg action power-on-monitors && brightnessctl -r # screen on when activity is detected after timeout has fired. } listener { From 47deec465646e8e38d7909ad6e99214e2d7c360a Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 6 Nov 2025 11:03:57 -0300 Subject: [PATCH 146/152] minor niri updates --- configs/niri/config.kdl | 6 ++ configs/niri/fix_float.py | 124 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 configs/niri/fix_float.py diff --git a/configs/niri/config.kdl b/configs/niri/config.kdl index c33f17d..190037a 100644 --- a/configs/niri/config.kdl +++ b/configs/niri/config.kdl @@ -16,6 +16,11 @@ window-rule { match app-id="^brave-.*-Default$" // Extensions popup open-floating true } +// Full width window +window-rule { + match app-id="beekeeper-studio" + open-maximized true +} window-rule { match app-id="^org\\.keepassxc\\.KeePassXC$" match app-id="^org\\.gnome\\.World\\.Secrets$" @@ -51,6 +56,7 @@ layer-rule { // ╭─────────────────────────────────────────────────────────╮ // │ Auto Start Apps │ // ╰─────────────────────────────────────────────────────────╯ +spawn-at-startup "./fix_float.py" spawn-at-startup "/usr/lib/pam_kwallet_init" spawn-at-startup "udieskie" spawn-at-startup "brave" diff --git a/configs/niri/fix_float.py b/configs/niri/fix_float.py new file mode 100644 index 0000000..7090668 --- /dev/null +++ b/configs/niri/fix_float.py @@ -0,0 +1,124 @@ +#!/usr/bin/python3 +""" +Like open-float, but dynamically. Floats a window when it matches the rules. + +Some windows don't have the right title and app-id when they open, and only set +them afterward. This script is like open-float for those windows. + +Usage: fill in the RULES array below, then run the script. +""" + +import json +import os +import re +from dataclasses import dataclass, field +from socket import AF_UNIX, SHUT_WR, socket + + +@dataclass(kw_only=True) +class Match: + title: str | None = None + app_id: str | None = None + + def matches(self, window): + if self.title is None and self.app_id is None: + return False + + matched = True + + if self.title is not None: + matched &= re.search(self.title, window["title"]) is not None + if self.app_id is not None: + matched &= re.search(self.app_id, window["app_id"]) is not None + + return matched + + +@dataclass +class Rule: + match: list[Match] = field(default_factory=list) + exclude: list[Match] = field(default_factory=list) + + def matches(self, window): + if len(self.match) > 0 and not any(m.matches(window) for m in self.match): + return False + if any(m.matches(window) for m in self.exclude): + return False + + return True + + +# Write your rules here. One Rule() = one window-rule {}. +RULES = [ + # window-rule {} with one match. + Rule([Match(title="Bitwarden", app_id="^brave-.*-Default$")]), + # window-rule {} with one match and one exclude. + # Rule( + # [Match(title="rs")], + # exclude=[Match(app_id="Alacritty")], + # ), + # window-rule {} with two matches. + # Rule( + # [ + # Match(app_id="^foot$"), + # Match(app_id="^mpv$"), + # ] + # ), +] + + +if len(RULES) == 0: + print("fill in the RULES list, then run the script") + exit() + + +niri_socket = socket(AF_UNIX) +niri_socket.connect(os.environ["NIRI_SOCKET"]) +file = niri_socket.makefile("rw") + +_ = file.write('"EventStream"') +file.flush() +niri_socket.shutdown(SHUT_WR) + +windows = {} + + +def send(request): + with socket(AF_UNIX) as niri_socket: + niri_socket.connect(os.environ["NIRI_SOCKET"]) + file = niri_socket.makefile("rw") + _ = file.write(json.dumps(request)) + file.flush() + + +def float(id: int): + send({"Action": {"MoveWindowToFloating": {"id": id}}}) + send({"Action": {"SetWindowWidth": {"id": id, "change": {"SetProportion": 20}}}}) + send({"Action": {"SetWindowHeight": {"id": id, "change": {"SetProportion": 50}}}}) + + +def update_matched(win): + win["matched"] = False + if existing := windows.get(win["id"]): + win["matched"] = existing["matched"] + + matched_before = win["matched"] + win["matched"] = any(r.matches(win) for r in RULES) + if win["matched"] and not matched_before: + print(f"floating title={win['title']}, app_id={win['app_id']}") + float(win["id"]) + + +for line in file: + event = json.loads(line) + + if changed := event.get("WindowsChanged"): + for win in changed["windows"]: + update_matched(win) + windows = {win["id"]: win for win in changed["windows"]} + elif changed := event.get("WindowOpenedOrChanged"): + win = changed["window"] + update_matched(win) + windows[win["id"]] = win + elif changed := event.get("WindowClosed"): + del windows[changed["id"]] From d0ffade8ce8c250155f10323920e7487895826bc Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 12 Nov 2025 13:45:07 -0300 Subject: [PATCH 147/152] update lsp config --- configs/nvim/lazy-lock.json | 5 +++-- configs/nvim/lua/aleidk/options.lua | 18 ++---------------- configs/nvim/lua/aleidk/plugins/init.lua | 11 +++++++---- 3 files changed, 12 insertions(+), 22 deletions(-) diff --git a/configs/nvim/lazy-lock.json b/configs/nvim/lazy-lock.json index 35fbf0e..f7066e1 100644 --- a/configs/nvim/lazy-lock.json +++ b/configs/nvim/lazy-lock.json @@ -11,7 +11,8 @@ "hardtime.nvim": { "branch": "main", "commit": "3541ad24faff78274669eceaf130502eb7f1261a" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, - "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "b1d9a914b02ba5660f1e272a03314b31d4576fe2" }, + "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, "mini.nvim": { "branch": "main", "commit": "94cae4660a8b2d95dbbd56e1fbc6fcfa2716d152" }, "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" }, "nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" }, @@ -19,7 +20,7 @@ "nvim-dap-view": { "branch": "main", "commit": "390dae6bf67f3342ebb481159932ef0fe54822ba" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, - "nvim-lspconfig": { "branch": "master", "commit": "f47cd681d7cb6048876a2e908b6d8ba1e530d152" }, + "nvim-lspconfig": { "branch": "master", "commit": "c8503e63c6afab3ed34b49865a4a4edbb1ebf4a8" }, "nvim-treesitter": { "branch": "main", "commit": "802195d8f1980db25a7a39a55f9a25df21756c73" }, "nvim-treesitter-context": { "branch": "master", "commit": "66a9b5fa9e806918b5fe3dba00c6cce7e230abd2" }, "nvim-treesitter-textobjects": { "branch": "main", "commit": "1b2d85d3de6114c4bcea89ffb2cd1ce9e3a19931" }, diff --git a/configs/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua index da04eeb..3e2a011 100644 --- a/configs/nvim/lua/aleidk/options.lua +++ b/configs/nvim/lua/aleidk/options.lua @@ -142,6 +142,8 @@ vim.filetype.add({ pattern = { -- INFO: Match filenames like - ".env.example", ".env.local" and so on ["%.env%.[%w_.-]+"] = "dotenv", + ["compose.*%.ya?ml"] = "yaml.docker-compose", + ["docker-compose.*%.ya?ml"] = "yaml.docker-compose", [".*%.blade%.php"] = "blade", [".*%.hurl.*"] = "hurl", [".*/hypr/.*%.conf"] = "hyprlang", @@ -160,22 +162,6 @@ vim.lsp.config("rust-analyzer", { } }) -vim.lsp.enable({ - "bashls", - "biome", - "fish_lsp", - "gleam", - "gopls", - "hyprls", - "intelephense", - "jsonls", - "kotlin_lsp", - "lua_ls", - "nushell", - "pyright", - "ruff", - -- "rust_analyzer", -- managed by rustacean.nvim -}) vim.lsp.inlay_hint.enable(true) diff --git a/configs/nvim/lua/aleidk/plugins/init.lua b/configs/nvim/lua/aleidk/plugins/init.lua index 948f2b3..245f048 100644 --- a/configs/nvim/lua/aleidk/plugins/init.lua +++ b/configs/nvim/lua/aleidk/plugins/init.lua @@ -1,10 +1,13 @@ return { - 'neovim/nvim-lspconfig', - 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically { - "mason-org/mason.nvim", - opts = {} + "mason-org/mason-lspconfig.nvim", + opts = {}, + dependencies = { + { "mason-org/mason.nvim", opts = {} }, + "neovim/nvim-lspconfig", + }, }, + 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically { "ckolkey/ts-node-action", dependencies = { "nvim-treesitter" }, From 0c60392b1f992e4bc9fee9375694f72eb2c63f1c Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 21 Nov 2025 09:08:15 -0300 Subject: [PATCH 148/152] minor update --- configs/niri/config.kdl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/niri/config.kdl b/configs/niri/config.kdl index 190037a..68c2792 100644 --- a/configs/niri/config.kdl +++ b/configs/niri/config.kdl @@ -32,7 +32,7 @@ window-rule { match app-id="brave-browser" match at-startup=true default-column-width { - proportion 0.75 + proportion 0.5 } } window-rule { From fc134591c2413fdd86cfb7c48733ff99453bce36 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 26 Nov 2025 10:05:55 -0300 Subject: [PATCH 149/152] add function to source .env files in fish --- configs/fish/functions/envsource.fish | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 configs/fish/functions/envsource.fish diff --git a/configs/fish/functions/envsource.fish b/configs/fish/functions/envsource.fish new file mode 100644 index 0000000..af570e4 --- /dev/null +++ b/configs/fish/functions/envsource.fish @@ -0,0 +1,7 @@ +function envsource + for line in (cat $argv | grep -v '^#') + set item (string split -m 1 '=' $line) + set -gx $item[1] $item[2] + echo "Exported key $item[1]" + end +end From a85aa9ee0f4181a3a442f5dc92b767735169b055 Mon Sep 17 00:00:00 2001 From: aleidk Date: Wed, 10 Dec 2025 16:42:29 -0300 Subject: [PATCH 150/152] add arch setup justfile --- .justfile | 49 +++++++++++++++++++ bootstrap/pkgs_arch.txt | 72 ++++++++++++++++++++++++++++ configs/nvim/init.lua | 1 + configs/nvim/lua/aleidk/commands.lua | 11 +++++ 4 files changed, 133 insertions(+) create mode 100644 .justfile create mode 100644 bootstrap/pkgs_arch.txt create mode 100644 configs/nvim/lua/aleidk/commands.lua diff --git a/.justfile b/.justfile new file mode 100644 index 0000000..af46a10 --- /dev/null +++ b/.justfile @@ -0,0 +1,49 @@ +packages_file := quote(justfile_directory() / "bootstrap/pkgs_arch.txt") + +bootstrap: setup_pacman setup_paru install_packages + + +install_packages: update_packages + paru -S --needed --noconfirm - < {{ packages_file }} + +update_packages: + paru -Syu --noconfirm + +clean_orphans: + -sudo pacman -Qdtq | sudo pacman -Rns - + @echo "\n\n{{ BLUE }}The following files are not owned by any package anymore:{{ NORMAL }}" + +# setup sudo: +# sudo loop +# show asterisk on password + +setup_pacman: + # add automatic updates + sudo sed -i \ + -e 's/#\?ParallelDownloads = [0-9]\+/ParallelDownloads = {{ num_cpus() }}/' \ + -e 's/#\?Color\+/Color/' \ + -e 's/#\?ILoveCandy\+/ILoveCandy/' \ + -e 's/#\?VerbosePkgLists\+/VerbosePkgLists/' \ + /etc/pacman.conf + +setup_paru: + #!/usr/bin/env bash + set -euxo pipefail + + if ! command -v paru &> /dev/null ; then + tmp=$(mktemp -d) + sudo pacman -S --needed base-devel + git clone https://aur.archlinux.org/paru.git "$tmp" + cd "$tmp" + makepkg -si + cd - + rm -rf "$tmp" + fi + + sudo sed -i \ + -e 's/#\?BottomUp\+/BottomUp/' \ + -e 's/#\?SudoLoop\+/SudoLoop/' \ + -e 's/#\?CombinedUpgrade\+/CombinedUpgrade/' \ + -e 's/#\?CleanAfter\+/CleanAfter/' \ + -e 's/#\?NewsOnUpgrade\+/NewsOnUpgrade/' \ + /etc/paru.conf diff --git a/bootstrap/pkgs_arch.txt b/bootstrap/pkgs_arch.txt new file mode 100644 index 0000000..705fde1 --- /dev/null +++ b/bootstrap/pkgs_arch.txt @@ -0,0 +1,72 @@ +age +atuin +brave-bin +bun-bin +catppuccin-cursors-macchiato +catppuccin-gtk-theme-macchiato +catppuccin-sddm-theme-macchiato +celluloid +deno +dotter-rs-bin +dunst +eza +fish +flatpak +fzf +git +gitleaks +gnome-disk-utility +just +kitty +kvantum +kvantum-theme-catppuccin-git +lazygit +limine +limine-mkinitcpio-hook +limine-snapper-sync +lostfiles +lxappearance +ly +nautilus +nautilus-admin-gtk4 +nautilus-image-converter +nautilus-open-any-terminal +neovim +noto-fonts +noto-fonts-cjk +noto-fonts-emoji +paccache-hook +plymouth-theme-catppuccin-macchiato-git +podman +pre-commit +pwvucontrol +qt5-wayland +qt6-wayland +rofi +rofi-rbw +rofimoji +rsync +sops +swappy +tailscale +tealdeer +trash-cli +ttf-dejavu +ttf-fira-code +ttf-fira-mono +ttf-fira-sans +ttf-firacode-nerd +ttf-jetbrains-mono-nerd +ttf-ms-win11-auto +ttf-nerd-fonts-symbols-mono +ttf-nunito +ttf-opensans +ttf-roboto +ttf-roboto-mono-nerd +udiskie +vim +wget +yazi +zed +zip +zoxide diff --git a/configs/nvim/init.lua b/configs/nvim/init.lua index ea65040..b926841 100644 --- a/configs/nvim/init.lua +++ b/configs/nvim/init.lua @@ -16,6 +16,7 @@ end vim.opt.rtp:prepend(lazypath) require("aleidk.options") +require("aleidk.commands") require("aleidk.autocmds") require("aleidk.keymaps") diff --git a/configs/nvim/lua/aleidk/commands.lua b/configs/nvim/lua/aleidk/commands.lua new file mode 100644 index 0000000..8fd969b --- /dev/null +++ b/configs/nvim/lua/aleidk/commands.lua @@ -0,0 +1,11 @@ +vim.api.nvim_create_user_command("SopsDecrypt", function(args) + vim.cmd([[! sops decrypt -i %]]) +end, { + desc = "Decrypt current file with sops", +}) + +vim.api.nvim_create_user_command("SopsEncrypt", function(args) + vim.cmd([[! sops encrypt -i %]]) +end, { + desc = "Decrypt current file with sops", +}) From 20f68e1dee1f37d26aaf536ec1a3197f5ea00b57 Mon Sep 17 00:00:00 2001 From: aleidk Date: Fri, 12 Dec 2025 12:18:47 -0300 Subject: [PATCH 151/152] update niri for multi monitor support --- .dotter/aleidk-work-laptop.toml | 27 +------------------------ .dotter/global.toml | 2 +- .stylua.toml | 2 +- configs/niri/{ => base}/config.kdl | 19 +++++++----------- configs/niri/base/include/.gitkeep | 0 configs/niri/work-laptop/local.kdl | 32 ++++++++++++++++++++++++++++++ 6 files changed, 42 insertions(+), 40 deletions(-) rename configs/niri/{ => base}/config.kdl (97%) create mode 100644 configs/niri/base/include/.gitkeep create mode 100644 configs/niri/work-laptop/local.kdl diff --git a/.dotter/aleidk-work-laptop.toml b/.dotter/aleidk-work-laptop.toml index b1fe098..66baeae 100644 --- a/.dotter/aleidk-work-laptop.toml +++ b/.dotter/aleidk-work-laptop.toml @@ -3,31 +3,6 @@ packages = ["default"] [files] "configs/hypr/work-laptop/hyprland.conf" = "~/.config/hypr/include/work-laptop.conf" - - -[files."configs/niri/config.kdl"] -target = "~/.config/niri/config.kdl" -type = "template" -append = """ -window-rule { - match app-id="brave-work" - open-on-workspace "1" - open-focused true - - default-column-width { - proportion 0.5 - } -} -window-rule { - match app-id="brave-personal" - open-on-workspace "2" - open-focused false - - default-column-width { - proportion 0.5 - } -} - -""" +"configs/niri/work-laptop/local.kdl" = "~/.config/niri/include/local.kdl" [variables] diff --git a/.dotter/global.toml b/.dotter/global.toml index 36b6ef0..ff29554 100644 --- a/.dotter/global.toml +++ b/.dotter/global.toml @@ -39,4 +39,4 @@ depends = ["niri"] [default.variables] [niri.files] -"configs/niri" = "~/.config/niri" +"configs/niri/base" = "~/.config/niri" diff --git a/.stylua.toml b/.stylua.toml index f0f7a59..c38f62a 100644 --- a/.stylua.toml +++ b/.stylua.toml @@ -1,7 +1,7 @@ syntax = "All" column_width = 120 line_endings = "Unix" -indent_type = "indent_type" +indent_type = "Spaces" indent_width = 2 quote_style = "AutoPreferDouble" call_parentheses = "Always" diff --git a/configs/niri/config.kdl b/configs/niri/base/config.kdl similarity index 97% rename from configs/niri/config.kdl rename to configs/niri/base/config.kdl index 68c2792..4f340da 100644 --- a/configs/niri/config.kdl +++ b/configs/niri/base/config.kdl @@ -1,10 +1,11 @@ +include "include/local.kdl" // ╭─────────────────────────────────────────────────────────╮ // │ Windows Rules │ // ╰─────────────────────────────────────────────────────────╯ window-rule { // This regular expression is intentionally made as specific as possible, // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. + // You can get away with just app-id="wezterm" f you want. match app-id="^org\\.wezfurlong\\.wezterm$" default-column-width { @@ -109,10 +110,10 @@ binds { spawn "rofi" "-show" "drun" "-run-command" "uwsm app -- {cmd}" } XF86AudioRaiseVolume allow-when-locked=true { - spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+" + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.025+" } XF86AudioLowerVolume allow-when-locked=true { - spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-" + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.025-" } XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" @@ -151,10 +152,10 @@ binds { focus-window-or-workspace-up } Mod+Right { - focus-column-right + focus-column-or-monitor-right } Mod+H { - focus-column-left + focus-column-or-monitor-left } Mod+J { focus-window-or-workspace-down @@ -163,7 +164,7 @@ binds { focus-window-or-workspace-up } Mod+L { - focus-column-right + focus-column-or-monitor-right } Mod+Shift+Left { move-column-left @@ -423,16 +424,10 @@ environment { TERMINAL "/usr/bin/kitty" } // ── Display Options ───────────────────────────────────────────────── -output "eDP-1" { - off -} output "HDMI-A-1" { scale 1 mode "3440x1440" } -output "DP-1" { - variable-refresh-rate on-demand=true -} // ── Input Options ─────────────────────────────────────────────────── input { keyboard { diff --git a/configs/niri/base/include/.gitkeep b/configs/niri/base/include/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/configs/niri/work-laptop/local.kdl b/configs/niri/work-laptop/local.kdl new file mode 100644 index 0000000..0e93f89 --- /dev/null +++ b/configs/niri/work-laptop/local.kdl @@ -0,0 +1,32 @@ +window-rule { + match app-id="brave-work" + open-on-workspace "1" + open-focused true + default-column-width { + proportion 0.5 + } +} +window-rule { + match app-id="brave-personal" + open-on-workspace "2" + open-focused false + default-column-width { + proportion 0.5 + } +} +output "HDMI-A-1" { + scale 1 + mode "3440x1440" + focus-at-startup + position x=1920 y=0 +} +output "eDP-1" { + mode "1920x1080@60.000" + position x=0 y=720 + layout { + default-column-width { + proportion 1.0 + } + } +} + From 6fa42a7c2da0367e1d07f9f2a62c19b48adf0314 Mon Sep 17 00:00:00 2001 From: aleidk Date: Thu, 18 Dec 2025 09:20:46 -0300 Subject: [PATCH 152/152] mini update nvim config --- configs/fish/config.fish | 2 - configs/nvim/lua/aleidk/options.lua | 79 ++++++++++--------- .../lua/aleidk/plugins/language-support.lua | 45 +++++------ configs/nvim/lua/aleidk/plugins/training.lua | 25 +++--- 4 files changed, 78 insertions(+), 73 deletions(-) diff --git a/configs/fish/config.fish b/configs/fish/config.fish index cbde320..9f5e5f6 100644 --- a/configs/fish/config.fish +++ b/configs/fish/config.fish @@ -2,7 +2,5 @@ if status is-interactive # Commands to run in interactive sessions can go here zoxide init --cmd cd fish | source atuin init fish | source - - mise activate fish | source end diff --git a/configs/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua index 3e2a011..cf76fb6 100644 --- a/configs/nvim/lua/aleidk/options.lua +++ b/configs/nvim/lua/aleidk/options.lua @@ -10,54 +10,54 @@ vim.o.diffopt = "vertical,closeoff,filler" local opt = vim.opt vim.schedule(function() - vim.opt.clipboard = 'unnamedplus' + vim.opt.clipboard = "unnamedplus" end) -- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages -- vim.o.exrc = true -- vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. -- vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } -opt.autowrite = true -- Enable auto write -opt.breakindent = true -- Every wrapped line will continue visually indented +opt.autowrite = true -- Enable auto write +opt.breakindent = true -- Every wrapped line will continue visually indented opt.completeopt = "menu,menuone,noselect" -opt.conceallevel = 2 -- Hide * markup for bold and italic -opt.confirm = true -- Confirm to save changes before exiting modified buffer -opt.cursorline = true -- Enable highlighting of the current line -opt.expandtab = true -- Use spaces instead of tabs +opt.conceallevel = 2 -- Hide * markup for bold and italic +opt.confirm = true -- Confirm to save changes before exiting modified buffer +opt.cursorline = true -- Enable highlighting of the current line +opt.expandtab = true -- Use spaces instead of tabs opt.formatoptions = "jcroqlnt" -- tcqj opt.grepformat = "%f:%l:%c:%m" opt.grepprg = "rg --vimgrep" -opt.ignorecase = true -- Ignore case -opt.inccommand = 'split' -- Preview substitutions live, as you type! -opt.mouse = "a" -- Enable mouse mode -opt.nrformats = 'blank,bin,hex' -opt.number = true -- Print line number -opt.pumblend = 10 -- Popup blend -opt.pumheight = 10 -- Maximum number of entries in a popup +opt.ignorecase = true -- Ignore case +opt.inccommand = "split" -- Preview substitutions live, as you type! +opt.mouse = "a" -- Enable mouse mode +opt.nrformats = "blank,bin,hex" +opt.number = true -- Print line number +opt.pumblend = 10 -- Popup blend +opt.pumheight = 10 -- Maximum number of entries in a popup -- opt.relativenumber = true -- Relative line numbers -opt.scrolloff = 15 -- Lines of context -opt.sidescrolloff = 25 -- Columns of context +opt.scrolloff = 15 -- Lines of context +opt.sidescrolloff = 25 -- Columns of context opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } -opt.shiftround = true -- Round indent -opt.shiftwidth = 2 -- Size of an indent -opt.showmode = false -- Don't show mode since we have a statusline -opt.sidescrolloff = 8 -- Columns of context -opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time -opt.smartcase = true -- Don't ignore case with capitals -opt.smartindent = true -- Insert indents automatically +opt.shiftround = true -- Round indent +opt.shiftwidth = 2 -- Size of an indent +opt.showmode = false -- Don't show mode since we have a statusline +opt.sidescrolloff = 8 -- Columns of context +opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time +opt.smartcase = true -- Don't ignore case with capitals +opt.smartindent = true -- Insert indents automatically opt.spelllang = { "en" } -opt.splitbelow = true -- Put new windows below current -opt.splitright = true -- Put new windows right of current -opt.tabstop = 2 -- Number of spaces tabs count for +opt.splitbelow = true -- Put new windows below current +opt.splitright = true -- Put new windows right of current +opt.tabstop = 2 -- Number of spaces tabs count for opt.termguicolors = true -- True color support opt.undofile = true opt.undolevels = 10000 -opt.updatetime = 200 -- Save swap file and trigger CursorHold +opt.updatetime = 200 -- Save swap file and trigger CursorHold opt.wildmode = "longest,list:full" -- Command-line completion mode -opt.winminwidth = 5 -- Minimum window width -opt.wrap = false -- Disable line wrap -vim.o.completeopt = 'noselect,menu,menuone,noinsert,popup' -vim.o.winborder = 'rounded' +opt.winminwidth = 5 -- Minimum window width +opt.wrap = false -- Disable line wrap +vim.o.completeopt = "noselect,menu,menuone,noinsert,popup" +vim.o.winborder = "rounded" vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" @@ -130,18 +130,18 @@ vim.filetype.add({ mdx = "mdx", log = "log", conf = "conf", - env = "dotenv", + -- env = "dotenv", }, -- Detect and apply filetypes based on the entire filename filename = { - [".env"] = "dotenv", + -- [".env"] = "dotenv", ["env"] = "dotenv", ["tsconfig.json"] = "jsonc", }, -- Detect and apply filetypes based on certain patterns of the filenames pattern = { -- INFO: Match filenames like - ".env.example", ".env.local" and so on - ["%.env%.[%w_.-]+"] = "dotenv", + -- ["%.env%.[%w_.-]+"] = "dotenv", ["compose.*%.ya?ml"] = "yaml.docker-compose", ["docker-compose.*%.ya?ml"] = "yaml.docker-compose", [".*%.blade%.php"] = "blade", @@ -157,11 +157,16 @@ vim.filetype.add({ vim.lsp.config("rust-analyzer", { tools = { code_actions = { - ui_select_fallback = true - } - } + ui_select_fallback = true, + }, + }, }) +vim.g.markdown_fenced_languages = { + "ts=typescript", +} + +vim.lsp.enable("denols") vim.lsp.inlay_hint.enable(true) diff --git a/configs/nvim/lua/aleidk/plugins/language-support.lua b/configs/nvim/lua/aleidk/plugins/language-support.lua index c47309b..bee76db 100644 --- a/configs/nvim/lua/aleidk/plugins/language-support.lua +++ b/configs/nvim/lua/aleidk/plugins/language-support.lua @@ -1,24 +1,25 @@ return { - { - 'mrcjkb/rustaceanvim', - version = '^6', -- Recommended - lazy = false, -- This plugin is already lazy - }, - { - -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins - -- used for completion, annotations and signatures of Neovim apis - 'folke/lazydev.nvim', - ft = 'lua', - opts = { - library = { - -- Load luvit types when the `vim.uv` word is found - { path = "${3rd}/luv/library", words = { "vim%.uv" } } - }, - }, - }, - { - "pmizio/typescript-tools.nvim", - dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, - opts = {}, - } + { + "mrcjkb/rustaceanvim", + version = "^6", -- Recommended + lazy = false, -- This plugin is already lazy + }, + { + -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins + -- used for completion, annotations and signatures of Neovim apis + "folke/lazydev.nvim", + ft = "lua", + opts = { + library = { + -- Load luvit types when the `vim.uv` word is found + { path = "${3rd}/luv/library", words = { "vim%.uv" } }, + }, + }, + }, + { + "pmizio/typescript-tools.nvim", + enabled = false, + dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, + opts = {}, + }, } diff --git a/configs/nvim/lua/aleidk/plugins/training.lua b/configs/nvim/lua/aleidk/plugins/training.lua index 6eb3bfc..47012a6 100644 --- a/configs/nvim/lua/aleidk/plugins/training.lua +++ b/configs/nvim/lua/aleidk/plugins/training.lua @@ -1,14 +1,15 @@ return { - { - "m4xshen/hardtime.nvim", - lazy = false, - dependencies = { "MunifTanjim/nui.nvim" }, - keys = { - { "uH", "Hardtime toggle", desc = "Toggle hardtime" } - }, - opts = { - max_count = 10, - disable_mouse = false, - }, - }, + { + "m4xshen/hardtime.nvim", + lazy = false, + dependencies = { "MunifTanjim/nui.nvim" }, + keys = { + { "uH", "Hardtime toggle", desc = "Toggle hardtime" }, + }, + opts = { + max_count = 10, + disable_mouse = false, + restriction_mode = "hint", + }, + }, }