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/aleidk-work-laptop.toml b/.dotter/aleidk-work-laptop.toml new file mode 100644 index 0000000..66baeae --- /dev/null +++ b/.dotter/aleidk-work-laptop.toml @@ -0,0 +1,8 @@ +includes = [] +packages = ["default"] + +[files] +"configs/hypr/work-laptop/hyprland.conf" = "~/.config/hypr/include/work-laptop.conf" +"configs/niri/work-laptop/local.kdl" = "~/.config/niri/include/local.kdl" + +[variables] 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/.dotter/global.toml b/.dotter/global.toml new file mode 100644 index 0000000..ff29554 --- /dev/null +++ b/.dotter/global.toml @@ -0,0 +1,42 @@ +[settings] +default_target_type = "symbolic" + +[helpers] + +[default] +depends = ["niri"] + +[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/wezterm" = "~/.config/wezterm" +"configs/wlogout" = "~/.config/wlogout" +"configs/wpaperd" = "~/.config/wpaperd" +"configs/yazi" = "~/.config/yazi" +"configs/systemd" = "~/.config/systemd" +"configs/zed" = "~/.config/zed" + + +[default.variables] + +[niri.files] +"configs/niri/base" = "~/.config/niri" 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/.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/.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/.stylua.toml b/.stylua.toml new file mode 100644 index 0000000..c38f62a --- /dev/null +++ b/.stylua.toml @@ -0,0 +1,12 @@ +syntax = "All" +column_width = 120 +line_endings = "Unix" +indent_type = "Spaces" +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/.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/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 diff --git a/README.md b/README.md index a11cb3d..566f550 100644 --- a/README.md +++ b/README.md @@ -6,5 +6,15 @@ Please ensure the that git is installed and you have an ssh key registered, then execute the following command: ```bash -sh -c "$(curl -fsLS get.chezmoi.io)" -- -b $HOME/.local/bin init --apply aleee-idk/dots +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 + +cargo binstall --git https://github.com/RaphGL/Tuckr.git + +tuckr set \* ``` 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/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/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/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 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/.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/.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/chezmoi/dot_config/foot/foot.ini b/chezmoi/dot_config/foot/foot.ini deleted file mode 100644 index dc7c809..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/foot/themes/catppuccin/LICENSE b/chezmoi/dot_config/foot/themes/catppuccin/LICENSE deleted file mode 100644 index 006383b..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/foot/themes/catppuccin/README.md b/chezmoi/dot_config/foot/themes/catppuccin/README.md deleted file mode 100644 index c5c1821..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/foot/themes/catppuccin/assets/foot.png b/chezmoi/dot_config/foot/themes/catppuccin/assets/foot.png deleted file mode 100644 index d70b151..0000000 Binary files a/chezmoi/dot_config/foot/themes/catppuccin/assets/foot.png and /dev/null differ diff --git a/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-frappe.conf b/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-frappe.conf deleted file mode 100644 index b345283..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-latte.conf b/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-latte.conf deleted file mode 100644 index 94f571b..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-macchiato.conf b/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-macchiato.conf deleted file mode 100644 index 934c1cb..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-mocha.conf b/chezmoi/dot_config/foot/themes/catppuccin/catppuccin-mocha.conf deleted file mode 100644 index 7fa18ed..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/foot/themes/catppuccin/dot_editorconfig b/chezmoi/dot_config/foot/themes/catppuccin/dot_editorconfig deleted file mode 100644 index d86ac02..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/foot/themes/catppuccin/dot_git b/chezmoi/dot_config/foot/themes/catppuccin/dot_git deleted file mode 100644 index d893b83..0000000 --- a/chezmoi/dot_config/foot/themes/catppuccin/dot_git +++ /dev/null @@ -1 +0,0 @@ -gitdir: ../../../../.git/modules/config/foot/themes/catppuccin diff --git a/chezmoi/dot_config/hypr/hyprland.conf b/chezmoi/dot_config/hypr/hyprland.conf deleted file mode 100644 index b484ab6..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/kitty/kitty.conf b/chezmoi/dot_config/kitty/kitty.conf deleted file mode 100644 index a40a1bf..0000000 --- a/chezmoi/dot_config/kitty/kitty.conf +++ /dev/null @@ -1,2458 +0,0 @@ -# vim:fileencoding=utf-8:foldmethod=marker - -# 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 * - -#: 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 bottom - -#: 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 fade - -#: 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 left - -#: The horizontal alignment of the tab bar, can be one of: left, -#: center, right. - -# tab_bar_min_tabs 2 - -#: 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 none - -#: 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.red}{bell_symbol}{activity_symbol}{fmt.fg.tab}{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 socket-only - -#: 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:/tmp/kitty - -#: 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 - -#: 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 kitty_mod+enter new_window -# map cmd+enter new_window - -#:: 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 -#:: . - -#: 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 - -#:: 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 - -#:: Works like focus_visible_window above, but swaps the window. - -#: }}} - -#: 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 - -#: Close tab - -# 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 - - -#: 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 - -#: 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 - - -#: 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 -#: }}} - -#: 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+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 - -#:: 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 - -#: }}} - -#: }}} - - - diff --git a/chezmoi/dot_config/mise/config.toml b/chezmoi/dot_config/mise/config.toml deleted file mode 100644 index 981db02..0000000 --- a/chezmoi/dot_config/mise/config.toml +++ /dev/null @@ -1,11 +0,0 @@ -[tools] -node = 'lts' -# python = {version='3', virtualenv='.venv'} -python = {version='3'} # setting virtualenv adds a virtualenv in every directory -php = "8.2" -go = "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") diff --git a/chezmoi/dot_config/nvim/after/queries/blade/highlights.scm b/chezmoi/dot_config/nvim/after/queries/blade/highlights.scm deleted file mode 100644 index 29bec30..0000000 --- a/chezmoi/dot_config/nvim/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/chezmoi/dot_config/nvim/after/queries/blade/injections.scm b/chezmoi/dot_config/nvim/after/queries/blade/injections.scm deleted file mode 100644 index 0fde1fd..0000000 --- a/chezmoi/dot_config/nvim/after/queries/blade/injections.scm +++ /dev/null @@ -1,3 +0,0 @@ -((php) @injection.content - (#set! injection.combined) - (#set! injection.language php)) diff --git a/chezmoi/dot_config/nvim/init.lua b/chezmoi/dot_config/nvim/init.lua deleted file mode 100644 index a9b3bcc..0000000 --- a/chezmoi/dot_config/nvim/init.lua +++ /dev/null @@ -1,26 +0,0 @@ --- 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.keymaps") -require("aleidk.autocmds") diff --git a/chezmoi/dot_config/nvim/lua/aleidk/autocmds.lua b/chezmoi/dot_config/nvim/lua/aleidk/autocmds.lua deleted file mode 100644 index 22c9fbd..0000000 --- a/chezmoi/dot_config/nvim/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/chezmoi/dot_config/nvim/lua/aleidk/keymaps.lua b/chezmoi/dot_config/nvim/lua/aleidk/keymaps.lua deleted file mode 100644 index fde7c73..0000000 --- a/chezmoi/dot_config/nvim/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/chezmoi/dot_config/nvim/lua/aleidk/options.lua b/chezmoi/dot_config/nvim/lua/aleidk/options.lua deleted file mode 100644 index cd81c12..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/options.lua +++ /dev/null @@ -1,76 +0,0 @@ --- [[ Setting options ]] --- See `:help vim.o` - --- Set as the leader key -vim.g.mapleader = " " -vim.g.maplocalleader = " " - -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 }) -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" - -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", - }, -}) diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/ai.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/ai.lua deleted file mode 100644 index 9969c9c..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/ai.lua +++ /dev/null @@ -1,78 +0,0 @@ -return { - "olimorris/codecompanion.nvim", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-treesitter/nvim-treesitter", - { - "zbirenbaum/copilot.lua", - cmd = "Copilot", - event = "InsertEnter", - config = function() - require("copilot").setup({ - suggestion = { enabled = false }, - panel = { enabled = true, auto_refresh = true }, - }) - 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 = " " - } - } - }, - keys = { - { - "at", - function() - require("codecompanion").toggle() - end, - desc = "Toggle AI chat", - mode = { "n", "v" } - }, - { - "aa", - "CodeCompanion", - desc = "Run an inline prompt", - mode = { "n", "v" } - }, - { - "aA", - function() - require("codecompanion").actions() - end, - desc = "Open AI actions", - mode = { "n", "v" } - }, - { - "av", - function() - require("codecompanion").add() - end, - desc = "Add visual selection to chat", - mode = "v" - }, - { - "ae", - function() - require("codecompanion").prompt("explain") - end, - desc = "Explain code", - mode = "v" - }, - } -} - diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/auto-pairs.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/auto-pairs.lua deleted file mode 100644 index 2355082..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/auto-pairs.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - "windwp/nvim-autopairs", - event = "InsertEnter", - opts = {}, -- this is equalent to setup({}) function -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/colorscheme.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/colorscheme.lua deleted file mode 100644 index 5f126e9..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/colorscheme.lua +++ /dev/null @@ -1,39 +0,0 @@ -return { -- Change colors.none if not using a transparent background - "catppuccin/nvim", - priority = 1000, - lazy = false, - opts = { - flavour = "macchiato", - transparent_background = true, - integrations = { - cmp = true, - notify = true, - harpoon = false, - mason = true, - neogit = true, - noice = true, - hop = true, - lsp_trouble = true, - indent_blankline = { - enabled = 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(_, opts) - require("catppuccin").setup(opts) - vim.cmd.colorscheme("catppuccin") - end, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/comments.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/comments.lua deleted file mode 100644 index e9e3be9..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/comments.lua +++ /dev/null @@ -1,49 +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", - 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, - }, - { - "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/chezmoi/dot_config/nvim/lua/aleidk/plugins/completion.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/completion.lua deleted file mode 100644 index a267bfd..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/completion.lua +++ /dev/null @@ -1,120 +0,0 @@ ----@diagnostic disable: missing-fields -return { - "hrsh7th/nvim-cmp", - version = false, -- last release is way too old - event = "InsertEnter", - 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 - }, - }, - 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 = { - border = "rounded", - side_padding = 1, - -- fix colors for catppuccin colorscheme - winhighlight = "Normal:Pmenu,FloatBorder:FloatBorder,CursorLine:PmenuSel,Search:None", - } - local opts = { - visible_docs = false, - completion = { - completeopt = "menu,menuone,noinsert", - }, - snippet = { - expand = function(args) - require("luasnip").lsp_expand(args.body) - 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, - }), - }), - 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, - }, - }, - } - - cmp.setup(opts) - end, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/dashboard.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/dashboard.lua deleted file mode 100644 index db755d4..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/nvim/lua/aleidk/plugins/database.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/database.lua deleted file mode 100644 index 941e717..0000000 --- a/chezmoi/dot_config/nvim/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/chezmoi/dot_config/nvim/lua/aleidk/plugins/debugprint.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/debugprint.lua deleted file mode 100644 index 757dbb1..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/nvim/lua/aleidk/plugins/dressing.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/dressing.lua deleted file mode 100644 index 9d2a5e4..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/dressing.lua +++ /dev/null @@ -1,10 +0,0 @@ -return { - -- better imputs - "stevearc/dressing.nvim", - opts = { - input = { - -- handle by noice - enabled = false, - }, - }, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/file-browser.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/file-browser.lua deleted file mode 100644 index f90f761..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/nvim/lua/aleidk/plugins/file-explorer.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/file-explorer.lua deleted file mode 100644 index 2fe15eb..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/file-explorer.lua +++ /dev/null @@ -1,66 +0,0 @@ -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, - }, - }, - keys = { - { - "e", - function() - require("tfm").open() - end, - desc = "TFM", - }, - { - "mh", - function() - local tfm = require("tfm") - tfm.open(nil, tfm.OPEN_MODE.split) - end, - desc = "TFM - horizontal split", - }, - { - "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", - }, - }, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/formatter.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/formatter.lua deleted file mode 100644 index 2da9aec..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/formatter.lua +++ /dev/null @@ -1,120 +0,0 @@ -return { - "stevearc/conform.nvim", - event = "VeryLazy", - 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 = { "prettierd", "prettier" }, - 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 }, - lua = { "stylua" }, - markdown = { "markdownlint" }, - nim = { "nimpretty" }, - php = { "pint" }, - 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 }, - 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) - - 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/chezmoi/dot_config/nvim/lua/aleidk/plugins/git.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/git.lua deleted file mode 100644 index db22509..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/git.lua +++ /dev/null @@ -1,114 +0,0 @@ -return { - { - "lewis6991/gitsigns.nvim", - event = { "BufReadPre", "BufNewFile" }, - opts = { - -- See `:help gitsigns.txt` - signs = { - add = { text = "▎" }, - change = { text = "▎" }, - delete = { text = "" }, - topdelete = { text = "" }, - changedelete = { text = "▎" }, - 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", "d", gs.diffthis, "Diff This") - 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", - }, - }, - }, - - { - "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/chezmoi/dot_config/nvim/lua/aleidk/plugins/http.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/http.lua deleted file mode 100644 index 7c7516e..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/nvim/lua/aleidk/plugins/indent-blankline.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/indent-blankline.lua deleted file mode 100644 index 95b4c4f..0000000 --- a/chezmoi/dot_config/nvim/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", - event = { "BufReadPost", "BufNewFile" }, - 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/chezmoi/dot_config/nvim/lua/aleidk/plugins/init.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/init.lua deleted file mode 100644 index 8dbb557..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/init.lua +++ /dev/null @@ -1,99 +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" }, - }, - }, - -- 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" }, - 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", - }, - }, - }, - - { - "olexsmir/gopher.nvim", - ft = "go", - build = function() - vim.cmd([[silent! GoInstallDeps]]) - end, - }, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/key-help.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/key-help.lua deleted file mode 100644 index b9c705f..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/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/chezmoi/dot_config/nvim/lua/aleidk/plugins/lsp.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/lsp.lua deleted file mode 100644 index 8512c8d..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/lsp.lua +++ /dev/null @@ -1,215 +0,0 @@ -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 = {} }, - }, - - 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: 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, - }, - }, - }, - }, - ruff = {}, - rust_analyzer = { - settings = { - ["rust-analyzer"] = { - imports = { - granularity = { - group = "module", - }, - prefix = "self", - }, - cargo = { - buildScripts = { - 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", - }, - }, - }, - }, - }, - } - - -- 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") - - mason_lspconfig.setup({ - ensure_installed = vim.tbl_keys(servers), - automatic_installation = { exclude = { "astro", "phpactor", "gopls", "rust_analyzer", "sqlls" } }, - }) - - 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, - }), - }, - } - - 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/chezmoi/dot_config/nvim/lua/aleidk/plugins/lualine.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/lualine.lua deleted file mode 100644 index 0e79c78..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/lualine.lua +++ /dev/null @@ -1,230 +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 }, - { - "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 - }, - }, - { codecompanion_status }, - { - "overseer", - }, - { - -- 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, - }, - }, - lualine_x = { - { - function() - return require("grapple").statusline() - end, - }, - }, - lualine_y = { - { "searchcount" }, - { "location" }, - { - "progress", - fmt = position_scrollbar, - separator = " ", - padding = 0, - }, - }, - 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", - }, - } - end, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/luasnip.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/luasnip.lua deleted file mode 100644 index 5f4e132..0000000 --- a/chezmoi/dot_config/nvim/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/chezmoi/dot_config/nvim/lua/aleidk/plugins/markdown.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/markdown.lua deleted file mode 100644 index 8a53320..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/markdown.lua +++ /dev/null @@ -1,44 +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', 'codecompanion' }, - sign = { - enabled = false, - }, - }, - }, - { - "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/chezmoi/dot_config/nvim/lua/aleidk/plugins/mason.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/mason.lua deleted file mode 100644 index cee4bfd..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/mason.lua +++ /dev/null @@ -1,18 +0,0 @@ -return { - "williamboman/mason.nvim", - cmd = "Mason", - keys = { { "um", "Mason", desc = "Mason" } }, - build = ":MasonUpdate", - opts = { - ensure_installed = { - "blue", - "ruff", - "eslint_d", - "markdownlint", - "nimlsp", - "prettierd", - "shellcheck", - "stylua", - }, - }, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/noice.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/noice.lua deleted file mode 100644 index 0ab9d7c..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/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/chezmoi/dot_config/nvim/lua/aleidk/plugins/pretty-fold.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/pretty-fold.lua deleted file mode 100644 index 665525c..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/nvim/lua/aleidk/plugins/quickfix.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/quickfix.lua deleted file mode 100644 index 7ce267a..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/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/chezmoi/dot_config/nvim/lua/aleidk/plugins/remote-sshfs.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/remote-sshfs.lua deleted file mode 100644 index d4975cb..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/remote-sshfs.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "nosduco/remote-sshfs.nvim", - dependencies = { "nvim-telescope/telescope.nvim" }, - config = function() - require("remote-sshfs").setup({}) - require("telescope").load_extension("remote-sshfs") - end, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/sessions.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/sessions.lua deleted file mode 100644 index d6e19a8..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/nvim/lua/aleidk/plugins/surround.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/surround.lua deleted file mode 100644 index 2cbb1d3..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/surround.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "echasnovski/mini.surround", - disabled = true, - version = "*", - opts = {}, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/task-runner.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/task-runner.lua deleted file mode 100644 index 97b9d26..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/task-runner.lua +++ /dev/null @@ -1,145 +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) - 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 }) - 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" }, - { "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 = { - ["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/chezmoi/dot_config/nvim/lua/aleidk/plugins/telescope.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/telescope.lua deleted file mode 100644 index f6bb853..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/telescope.lua +++ /dev/null @@ -1,90 +0,0 @@ --- Fuzzy Finder (files, lsp, etc) -return { - "nvim-telescope/telescope.nvim", - version = "*", - event = "VeryLazy", - 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 = "vertical", - layout_config = { vertical = { height = 0.99, mirror = true, prompt_position = "top" } }, - 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, - [""] = function(...) - return require("trouble.providers.telescope").open_with_trouble(...) - end, - [""] = function(...) - return require("trouble.providers.telescope").open_selected_with_trouble(...) - end, - }, - }, - }, - } - telescope.setup(opts) - - -- Enable telescope fzf native, if installed - pcall(telescope.load_extension, "fzf") - - -- 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() - 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/chezmoi/dot_config/nvim/lua/aleidk/plugins/todo-comments.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/todo-comments.lua deleted file mode 100644 index 33f2372..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/todo-comments.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - "folke/todo-comments.nvim", - cmd = { "TodoTrouble", "TodoTelescope" }, - event = { "BufReadPost", "BufNewFile" }, - config = true, - -- stylua: ignore - 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/chezmoi/dot_config/nvim/lua/aleidk/plugins/treesitter.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/treesitter.lua deleted file mode 100644 index 6246d99..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/treesitter.lua +++ /dev/null @@ -1,110 +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({ - -- 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 }, - 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_next_start = { - ["]m"] = "@function.outer", - ["]]"] = "@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", - }, - }, - swap = { - enable = true, - swap_next = { - ["a"] = "@parameter.inner", - }, - swap_previous = { - ["A"] = "@parameter.inner", - }, - }, - }, - -- autotag = { enable = true }, - }) - - require('ts_context_commentstring').setup { - enable_autocmd = false, - } - - vim.opt.foldmethod = "expr" - vim.opt.foldexpr = "nvim_treesitter#foldexpr()" - - -- 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/chezmoi/dot_config/nvim/lua/aleidk/plugins/trouble.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/trouble.lua deleted file mode 100644 index 86b58a9..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/trouble.lua +++ /dev/null @@ -1,24 +0,0 @@ -return { - "folke/trouble.nvim", - dependencies = { "nvim-tree/nvim-web-devicons" }, - cmd = { "TroubleToggle", "Trouble" }, - keys = { - { "fq", "TroubleToggle", desc = "Toggle trouble" }, - { "fd", "TroubleToggle workspace_diagnostics", desc = "Find diagnostics" }, - { - "fD", - "TroubleToggle document_diagnostics", - desc = "Find diagnostics in workspace", - }, - }, - config = function() - require("trouble").setup({ - mode = "document_diagnostics", - action_keys = { - open_split = "s", - open_vsplit = "v", - open_tab = "t", - }, - }) - end, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/ts-node-action.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/ts-node-action.lua deleted file mode 100644 index 1dc970d..0000000 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/ts-node-action.lua +++ /dev/null @@ -1,23 +0,0 @@ -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, - }, - { - "Wansmer/treesj", - cmd = { "TSJToggle" }, - keys = { - { "lm", "TSJToggle", desc = "Toggle treesitter join" }, - }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - opts = { - use_default_keymaps = true, - }, - }, -} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/zen.lua b/chezmoi/dot_config/nvim/lua/aleidk/plugins/zen.lua deleted file mode 100644 index 14374e5..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/nvim/original_lazy-lock.json b/chezmoi/dot_config/nvim/original_lazy-lock.json deleted file mode 100644 index 11840da..0000000 --- a/chezmoi/dot_config/nvim/original_lazy-lock.json +++ /dev/null @@ -1,80 +0,0 @@ -{ - "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" }, - "chezmoi.vim": { "branch": "main", "commit": "10f2692791b5e512a2c1bb4dc560b42ca5bf71fd" }, - "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" }, - "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" }, - "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" }, - "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" }, - "lazygit.nvim": { "branch": "main", "commit": "dc56df433bfbf107fee0139e187eb9750878fa84" }, - "lualine.nvim": { "branch": "master", "commit": "6a40b530539d2209f7dc0492f3681c8c126647ad" }, - "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": { "branch": "main", "commit": "7946d1a195c66fed38b3e34f9fa8e0c5a2da0700" }, - "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" }, - "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" }, - "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" }, - "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" }, - "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-ui": { "branch": "master", "commit": "f74a31e8c6c5a9dccc63450a09d5cd64a9294330" }, - "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, - "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, - "zen-mode.nvim": { "branch": "main", "commit": "2694c5a2bc4dc26c7a9e74b9e2b812920c90a830" }, - "zk-nvim": { "branch": "main", "commit": "dbf4eeab55b08856c9d6b6722dbff39630bb35eb" } -} 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/php-cs-fixer-conf.php b/chezmoi/dot_config/php-cs-fixer-conf.php deleted file mode 100644 index d9bed33..0000000 --- a/chezmoi/dot_config/php-cs-fixer-conf.php +++ /dev/null @@ -1,5 +0,0 @@ -setIndent(" "); diff --git a/chezmoi/dot_config/pycodestyle b/chezmoi/dot_config/pycodestyle deleted file mode 100644 index 62e7381..0000000 --- a/chezmoi/dot_config/pycodestyle +++ /dev/null @@ -1,2 +0,0 @@ -[pycodestyle] -max-line-length = 100 diff --git a/chezmoi/dot_config/river/executable_init b/chezmoi/dot_config/river/executable_init deleted file mode 100644 index 4f28cd0..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/river/init.lua b/chezmoi/dot_config/river/init.lua deleted file mode 100644 index cd73a7c..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/river/logger.lua b/chezmoi/dot_config/river/logger.lua deleted file mode 100644 index 4f43c93..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/river/river.lua b/chezmoi/dot_config/river/river.lua deleted file mode 100644 index 5cbc9e4..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/starship.toml b/chezmoi/dot_config/starship.toml deleted file mode 100644 index 8b3da4d..0000000 --- a/chezmoi/dot_config/starship.toml +++ /dev/null @@ -1,149 +0,0 @@ -# Get editor completions based on the config schema -"$schema" = 'https://starship.rs/config-schema.json' - -# Inserts a blank line between shell prompts -add_newline = true - -# 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' - -[aws] -symbol = " " - -[buf] -symbol = " " - -[c] -symbol = " " - -[conda] -symbol = " " - -[dart] -symbol = " " - -[directory] -read_only = " " - -[docker_context] -symbol = " " - -[elixir] -symbol = " " - -[elm] -symbol = " " - -[fossil_branch] -symbol = " " - -[git_branch] -symbol = " " - -[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 = "🅢 " diff --git a/chezmoi/dot_config/sway/config b/chezmoi/dot_config/sway/config deleted file mode 100644 index 8e7d066..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/sway/executable_autorotate b/chezmoi/dot_config/sway/executable_autorotate deleted file mode 100644 index b734d9c..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/sway/executable_lock.sh b/chezmoi/dot_config/sway/executable_lock.sh deleted file mode 100644 index 2cef125..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/vimiv/keys.conf b/chezmoi/dot_config/vimiv/keys.conf deleted file mode 100644 index 628b2d3..0000000 --- a/chezmoi/dot_config/vimiv/keys.conf +++ /dev/null @@ -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! - diff --git a/chezmoi/dot_config/waybar/config b/chezmoi/dot_config/waybar/config deleted file mode 100644 index ef406f2..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/waybar/themes/catppuccin/LICENSE b/chezmoi/dot_config/waybar/themes/catppuccin/LICENSE deleted file mode 100644 index 006383b..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/waybar/themes/catppuccin/README.md b/chezmoi/dot_config/waybar/themes/catppuccin/README.md deleted file mode 100644 index 8144e63..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/waybar/themes/catppuccin/assets/frappe.webp b/chezmoi/dot_config/waybar/themes/catppuccin/assets/frappe.webp deleted file mode 100644 index 7c7fea9..0000000 Binary files a/chezmoi/dot_config/waybar/themes/catppuccin/assets/frappe.webp and /dev/null differ diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/latte.webp b/chezmoi/dot_config/waybar/themes/catppuccin/assets/latte.webp deleted file mode 100644 index 7e549fd..0000000 Binary files a/chezmoi/dot_config/waybar/themes/catppuccin/assets/latte.webp and /dev/null differ diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/macchiato.webp b/chezmoi/dot_config/waybar/themes/catppuccin/assets/macchiato.webp deleted file mode 100644 index 53d7fa7..0000000 Binary files a/chezmoi/dot_config/waybar/themes/catppuccin/assets/macchiato.webp and /dev/null differ diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/mocha.webp b/chezmoi/dot_config/waybar/themes/catppuccin/assets/mocha.webp deleted file mode 100644 index 970778d..0000000 Binary files a/chezmoi/dot_config/waybar/themes/catppuccin/assets/mocha.webp and /dev/null differ diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/assets/preview.webp b/chezmoi/dot_config/waybar/themes/catppuccin/assets/preview.webp deleted file mode 100644 index 5e18fe9..0000000 Binary files a/chezmoi/dot_config/waybar/themes/catppuccin/assets/preview.webp and /dev/null differ diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/dot_catppuccin.yaml b/chezmoi/dot_config/waybar/themes/catppuccin/dot_catppuccin.yaml deleted file mode 100644 index 0b1a5a0..0000000 --- a/chezmoi/dot_config/waybar/themes/catppuccin/dot_catppuccin.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# A catppuccin RC for waybar. In beta, specs may change. -app_name: waybar -binary_name: waybar -installation: - location: - macos: %appdata%/waybar/ - linux: %appdata%/waybar/ - flavours: - all: - default: - - themes/ - latte: - default: - - themes/latte.css - frappe: - default: - - themes/frappe.css - macchiato: - default: - - themes/macchiato.css - mocha: - default: - - themes/mocha.css - to: ./ - one_flavour: false - comments: "Add `@import \"$HOME/.config/waybar/.css\";` to include the file in your style.css" diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/dot_editorconfig b/chezmoi/dot_config/waybar/themes/catppuccin/dot_editorconfig deleted file mode 100644 index d86ac02..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/waybar/themes/catppuccin/dot_git b/chezmoi/dot_config/waybar/themes/catppuccin/dot_git deleted file mode 100644 index b8f00b3..0000000 --- a/chezmoi/dot_config/waybar/themes/catppuccin/dot_git +++ /dev/null @@ -1 +0,0 @@ -gitdir: ../../../../.git/modules/Waybar Catppuccin Theme diff --git a/chezmoi/dot_config/waybar/themes/catppuccin/themes/frappe.css b/chezmoi/dot_config/waybar/themes/catppuccin/themes/frappe.css deleted file mode 100644 index 18520fb..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/waybar/themes/catppuccin/themes/latte.css b/chezmoi/dot_config/waybar/themes/catppuccin/themes/latte.css deleted file mode 100644 index 085cc3e..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/waybar/themes/catppuccin/themes/macchiato.css b/chezmoi/dot_config/waybar/themes/catppuccin/themes/macchiato.css deleted file mode 100644 index 6880473..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/waybar/themes/catppuccin/themes/mocha.css b/chezmoi/dot_config/waybar/themes/catppuccin/themes/mocha.css deleted file mode 100644 index 98e218a..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/yazi/keymap.toml b/chezmoi/dot_config/yazi/keymap.toml deleted file mode 100644 index 6e42a49..0000000 --- a/chezmoi/dot_config/yazi/keymap.toml +++ /dev/null @@ -1,293 +0,0 @@ -# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. -# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. -"$schema" = "https://yazi-rs.github.io/schemas/keymap.json" - -[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" }, - - # 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 = [ "" ], 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 = [ "select --state=none", "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" }, - - # 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" }, - - # 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 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 = [ ",", "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 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" }, - - # 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" } -] - -[select] - -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" }, -] diff --git a/chezmoi/dot_config/yazi/original_package.toml b/chezmoi/dot_config/yazi/original_package.toml deleted file mode 100644 index cecdf3a..0000000 --- a/chezmoi/dot_config/yazi/original_package.toml +++ /dev/null @@ -1,5 +0,0 @@ -[plugin] -deps = [{ use = "yazi-rs/plugins:full-border", rev = "39f2753" }] - -[flavor] -deps = [{ use = "yazi-rs/flavors:catppuccin-macchiato", rev = "2d7dd2a" }] 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/yazi/theme.toml b/chezmoi/dot_config/yazi/theme.toml deleted file mode 100644 index 000a93b..0000000 --- a/chezmoi/dot_config/yazi/theme.toml +++ /dev/null @@ -1,2 +0,0 @@ -[flavor] -use = "catppuccin-macchiato" diff --git a/chezmoi/dot_config/yazi/yazi.toml b/chezmoi/dot_config/yazi/yazi.toml deleted file mode 100644 index 8eb7d53..0000000 --- a/chezmoi/dot_config/yazi/yazi.toml +++ /dev/null @@ -1,203 +0,0 @@ -# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. -# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. -"$schema" = "https://yazi-rs.github.io/schemas/yazi.json" - -[manager] -ratio = [ 1, 3, 4 ] -sort_by = "alphabetical" -sort_sensitive = 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}" - -[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 ] - -[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" }, -] - -[open] -rules = [ - # Folder - { name = "*/", use = [ "edit", "open", "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" ] }, - - # Image - { mime = "image/*", use = [ "open", "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" ] }, - - # Empty file - { mime = "inode/x-empty", use = [ "edit", "reveal" ] }, - - # Fallback - { mime = "*", use = [ "open", "reveal" ] }, -] - -[tasks] -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" }, -] -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" }, -] -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" }, -] - -[input] -cursor_blink = false - -# cd -cd_title = "Change directory:" -cd_origin = "top-center" -cd_offset = [ 0, 2, 50, 3 ] - -# create -create_title = "Create:" -create_origin = "hovered" -create_offset = [ 0, 1, 50, 3 ] - -# rename -rename_title = "Rename:" -rename_origin = "hovered" -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 ] - -# delete -delete_title = "Delete {n} selected file{s} permanently? (y/N)" -delete_origin = "hovered" -delete_offset = [ 0, 2, 50, 3 ] - -# filter -filter_title = "Filter:" -filter_origin = "hovered" -filter_offset = [ 0, 2, 50, 3 ] - -# find -find_title = [ "Find next:", "Find previous:" ] -find_origin = "hovered" -find_offset = [ 0, 2, 50, 3 ] - -# search -search_title = "Search via {n}:" -search_origin = "hovered" -search_offset = [ 0, 2, 50, 3 ] - -# shell -shell_title = [ "Shell:", "Shell (block):" ] -shell_origin = "center" -shell_offset = [ 0, 2, 50, 3 ] - -# overwrite -overwrite_title = "Overwrite an existing file? (y/N)" -overwrite_origin = "center" -overwrite_offset = [ 0, 2, 50, 3 ] - -# quit -quit_title = "{n} task{s} running, sure to quit? (y/N)" -quit_origin = "center" -quit_offset = [ 0, 2, 50, 3 ] - -[select] -open_title = "Open with:" -open_origin = "hovered" -open_offset = [ 0, 1, 50, 7 ] - -[which] -sort_by = "none" -sort_sensitive = false -sort_reverse = false -sort_translit = false - -[log] -enabled = false diff --git a/chezmoi/dot_config/zed/keymap.json b/chezmoi/dot_config/zed/keymap.json deleted file mode 100644 index c175302..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/zed/private_settings.json b/chezmoi/dot_config/zed/private_settings.json deleted file mode 100644 index b0308e0..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/zellij/config.kdl b/chezmoi/dot_config/zellij/config.kdl deleted file mode 100644 index 6f6cd13..0000000 --- a/chezmoi/dot_config/zellij/config.kdl +++ /dev/null @@ -1,274 +0,0 @@ -// If you'd like to override the default keybindings completely, be sure to change "keybinds" to "keybinds clear-defaults=true" -keybinds clear-defaults=true { - normal { - // uncomment this and adjust key if using copy_on_select=false - // bind "Alt c" { Copy; } - } - 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"; } - } - 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"; } - } - 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; } - } - 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; } - } - 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 "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"; } - } - session { - bind "Ctrl o" { SwitchToMode "Normal"; } - bind "Ctrl s" { SwitchToMode "Scroll"; } - bind "q" { Quit; } - bind "d" { Detach; } - } - 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"; } - bind "Alt -" { Resize "Decrease"; } - bind "Alt [" { PreviousSwapLayout; } - bind "Alt ]" { NextSwapLayout; } - } - shared_except "normal" "locked" { - bind "Enter" "Esc" { SwitchToMode "Normal"; } - } - shared_except "pane" "locked" { - bind "Ctrl p" { SwitchToMode "Pane"; } - } - shared_except "resize" "locked" { - bind "Ctrl n" { SwitchToMode "Resize"; } - } - shared_except "scroll" "locked" { - bind "Ctrl s" { SwitchToMode "Scroll"; } - } - shared_except "session" "locked" { - bind "Ctrl o" { SwitchToMode "Session"; } - } - shared_except "tab" "locked" { - bind "Ctrl t" { SwitchToMode "Tab"; } - } - shared_except "move" "locked" { - bind "Ctrl h" { SwitchToMode "Move"; } - } - shared_except "tmux" "locked" { - bind "Ctrl b" { SwitchToMode "Tmux"; } - } -} - -plugins { - tab-bar { path "tab-bar"; } - status-bar { path "status-bar"; } - strider { path "strider"; } - compact-bar { path "compact-bar"; } -} - -// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP -// eg. when terminal window with an active zellij session is closed -// 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" - -// 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 -// that will be used by default if this option is not set. -// Examples: -// -// copy_command "xclip -selection clipboard" // x11 -// copy_command "wl-copy" // wayland -// copy_command "pbcopy" // osx - -// 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 -// Default: true -// -// copy_on_select false - -// 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) -// 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" diff --git a/chezmoi/dot_config/zellij/themes/catppuccin.kdl b/chezmoi/dot_config/zellij/themes/catppuccin.kdl deleted file mode 100644 index 7e2ce47..0000000 --- a/chezmoi/dot_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 - } -} diff --git a/chezmoi/dot_config/zk/config.toml b/chezmoi/dot_config/zk/config.toml deleted file mode 100644 index e97936f..0000000 --- a/chezmoi/dot_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/chezmoi/dot_config/alacritty/alacritty.toml b/configs/alacritty/alacritty.toml similarity index 100% rename from chezmoi/dot_config/alacritty/alacritty.toml rename to configs/alacritty/alacritty.toml diff --git a/chezmoi/dot_config/alacritty/alacritty.yml b/configs/alacritty/alacritty.yml similarity index 100% rename from chezmoi/dot_config/alacritty/alacritty.yml rename to configs/alacritty/alacritty.yml diff --git a/chezmoi/dot_config/alacritty/themes/.keep b/configs/alacritty/themes/.keep similarity index 100% rename from chezmoi/dot_config/alacritty/themes/.keep rename to configs/alacritty/themes/.keep diff --git a/configs/atuin/config.toml b/configs/atuin/config.toml new file mode 100644 index 0000000..d8dd788 --- /dev/null +++ b/configs/atuin/config.toml @@ -0,0 +1,277 @@ +## 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 = "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" +## 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", +# ] + +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. +# 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/themes/catppuccin-macchiato-teal.toml b/configs/atuin/themes/catppuccin-macchiato-teal.toml new file mode 100644 index 0000000..7c657c1 --- /dev/null +++ b/configs/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/.bash_profile b/configs/bash/.bash_profile new file mode 100644 index 0000000..87c43fa --- /dev/null +++ b/configs/bash/.bash_profile @@ -0,0 +1,44 @@ +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/" + +. "$HOME/.atuin/bin/env" + +if [ -f ~/.bashrc ]; then + . ~/.bashrc +fi + +. "$HOME/.local/share/../bin/env" diff --git a/configs/bash/.bashrc b/configs/bash/.bashrc new file mode 100644 index 0000000..ff5d68d --- /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/chezmoi/dot_config/bat/config b/configs/bat/config similarity index 100% rename from chezmoi/dot_config/bat/config rename to configs/bat/config diff --git a/configs/containers/systemd/dev-databases.pod b/configs/containers/systemd/dev-databases.pod new file mode 100644 index 0000000..c11ff1b --- /dev/null +++ b/configs/containers/systemd/dev-databases.pod @@ -0,0 +1,4 @@ +[Pod] +PodName=databases +PublishPort=9090:3000 +PublishPort=5432:5432 diff --git a/configs/containers/systemd/dev-dbui.container b/configs/containers/systemd/dev-dbui.container new file mode 100644 index 0000000..6a8b0f1 --- /dev/null +++ b/configs/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/systemd/dev-postgres.container b/configs/containers/systemd/dev-postgres.container new file mode 100644 index 0000000..cd54380 --- /dev/null +++ b/configs/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/fish/completions/.config/fish/config.fish b/configs/fish/completions/.config/fish/config.fish new file mode 100644 index 0000000..d714361 --- /dev/null +++ b/configs/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/completions/.config/fish/fish_variables b/configs/fish/completions/.config/fish/fish_variables new file mode 100644 index 0000000..74b1ee1 --- /dev/null +++ b/configs/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/completions/atuin.fish b/configs/fish/completions/atuin.fish new file mode 100644 index 0000000..79c9944 --- /dev/null +++ b/configs/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/completions/fish-lsp.fish b/configs/fish/completions/fish-lsp.fish new file mode 100644 index 0000000..28713a9 --- /dev/null +++ b/configs/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/completions/fisher.fish b/configs/fish/completions/fisher.fish new file mode 100644 index 0000000..6d23ce4 --- /dev/null +++ b/configs/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/completions/mise.fish b/configs/fish/completions/mise.fish new file mode 100644 index 0000000..9b7072e --- /dev/null +++ b/configs/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 b/configs/fish/config.fish new file mode 100644 index 0000000..9f5e5f6 --- /dev/null +++ b/configs/fish/config.fish @@ -0,0 +1,6 @@ +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/fish/fish_variables b/configs/fish/fish_variables new file mode 100644 index 0000000..2a3c309 --- /dev/null +++ b/configs/fish/fish_variables @@ -0,0 +1,116 @@ +# 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_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\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 +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 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 +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/functions/_pure_check_availability.fish b/configs/fish/functions/_pure_check_availability.fish new file mode 100644 index 0000000..3f6bfd8 --- /dev/null +++ b/configs/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/functions/_pure_check_for_new_release.fish b/configs/fish/functions/_pure_check_for_new_release.fish new file mode 100644 index 0000000..9704bc8 --- /dev/null +++ b/configs/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/functions/_pure_detect_container_by_cgroup_method.fish b/configs/fish/functions/_pure_detect_container_by_cgroup_method.fish new file mode 100644 index 0000000..30b29dd --- /dev/null +++ b/configs/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/functions/_pure_detect_container_by_pid_method.fish b/configs/fish/functions/_pure_detect_container_by_pid_method.fish new file mode 100644 index 0000000..f515051 --- /dev/null +++ b/configs/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/functions/_pure_format_time.fish b/configs/fish/functions/_pure_format_time.fish new file mode 100644 index 0000000..140f72f --- /dev/null +++ b/configs/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/functions/_pure_get_prompt_symbol.fish b/configs/fish/functions/_pure_get_prompt_symbol.fish new file mode 100644 index 0000000..75c15e7 --- /dev/null +++ b/configs/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/functions/_pure_is_inside_container.fish b/configs/fish/functions/_pure_is_inside_container.fish new file mode 100644 index 0000000..594d3bb --- /dev/null +++ b/configs/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/functions/_pure_is_single_line_prompt.fish b/configs/fish/functions/_pure_is_single_line_prompt.fish new file mode 100644 index 0000000..f1efd4e --- /dev/null +++ b/configs/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/functions/_pure_k8s_context.fish b/configs/fish/functions/_pure_k8s_context.fish new file mode 100644 index 0000000..5bd9e1c --- /dev/null +++ b/configs/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/functions/_pure_k8s_namespace.fish b/configs/fish/functions/_pure_k8s_namespace.fish new file mode 100644 index 0000000..87e08c7 --- /dev/null +++ b/configs/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/functions/_pure_parse_directory.fish b/configs/fish/functions/_pure_parse_directory.fish new file mode 100644 index 0000000..f28924b --- /dev/null +++ b/configs/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/functions/_pure_parse_git_branch.fish b/configs/fish/functions/_pure_parse_git_branch.fish new file mode 100644 index 0000000..a666f2a --- /dev/null +++ b/configs/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/functions/_pure_place_iterm2_prompt_mark.fish b/configs/fish/functions/_pure_place_iterm2_prompt_mark.fish new file mode 100644 index 0000000..b999b7a --- /dev/null +++ b/configs/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/functions/_pure_prefix_root_prompt.fish b/configs/fish/functions/_pure_prefix_root_prompt.fish new file mode 100644 index 0000000..e9fb86f --- /dev/null +++ b/configs/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/functions/_pure_print_prompt.fish b/configs/fish/functions/_pure_print_prompt.fish new file mode 100644 index 0000000..91b9c90 --- /dev/null +++ b/configs/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/functions/_pure_print_prompt_rows.fish b/configs/fish/functions/_pure_print_prompt_rows.fish new file mode 100644 index 0000000..cc8555c --- /dev/null +++ b/configs/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/functions/_pure_prompt.fish b/configs/fish/functions/_pure_prompt.fish new file mode 100644 index 0000000..423768f --- /dev/null +++ b/configs/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/functions/_pure_prompt_aws_profile.fish b/configs/fish/functions/_pure_prompt_aws_profile.fish new file mode 100644 index 0000000..d4d0d2f --- /dev/null +++ b/configs/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/functions/_pure_prompt_beginning.fish b/configs/fish/functions/_pure_prompt_beginning.fish new file mode 100644 index 0000000..8b093db --- /dev/null +++ b/configs/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/functions/_pure_prompt_command_duration.fish b/configs/fish/functions/_pure_prompt_command_duration.fish new file mode 100644 index 0000000..0a2e231 --- /dev/null +++ b/configs/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/functions/_pure_prompt_container.fish b/configs/fish/functions/_pure_prompt_container.fish new file mode 100644 index 0000000..97a6056 --- /dev/null +++ b/configs/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/functions/_pure_prompt_current_folder.fish b/configs/fish/functions/_pure_prompt_current_folder.fish new file mode 100644 index 0000000..462d9b1 --- /dev/null +++ b/configs/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/functions/_pure_prompt_ending.fish b/configs/fish/functions/_pure_prompt_ending.fish new file mode 100644 index 0000000..ba92511 --- /dev/null +++ b/configs/fish/functions/_pure_prompt_ending.fish @@ -0,0 +1,3 @@ +function _pure_prompt_ending + echo (set_color normal)" " +end diff --git a/configs/fish/functions/_pure_prompt_first_line.fish b/configs/fish/functions/_pure_prompt_first_line.fish new file mode 100644 index 0000000..2361872 --- /dev/null +++ b/configs/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/functions/_pure_prompt_git.fish b/configs/fish/functions/_pure_prompt_git.fish new file mode 100644 index 0000000..6e3377d --- /dev/null +++ b/configs/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/functions/_pure_prompt_git_branch.fish b/configs/fish/functions/_pure_prompt_git_branch.fish new file mode 100644 index 0000000..777cd0e --- /dev/null +++ b/configs/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/functions/_pure_prompt_git_dirty.fish b/configs/fish/functions/_pure_prompt_git_dirty.fish new file mode 100644 index 0000000..0c92836 --- /dev/null +++ b/configs/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/functions/_pure_prompt_git_pending_commits.fish b/configs/fish/functions/_pure_prompt_git_pending_commits.fish new file mode 100644 index 0000000..6ae7c59 --- /dev/null +++ b/configs/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/functions/_pure_prompt_git_stash.fish b/configs/fish/functions/_pure_prompt_git_stash.fish new file mode 100644 index 0000000..531ceb4 --- /dev/null +++ b/configs/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/functions/_pure_prompt_jobs.fish b/configs/fish/functions/_pure_prompt_jobs.fish new file mode 100644 index 0000000..3a5181d --- /dev/null +++ b/configs/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/functions/_pure_prompt_k8s.fish b/configs/fish/functions/_pure_prompt_k8s.fish new file mode 100644 index 0000000..a283058 --- /dev/null +++ b/configs/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/functions/_pure_prompt_new_line.fish b/configs/fish/functions/_pure_prompt_new_line.fish new file mode 100644 index 0000000..7cfb4e4 --- /dev/null +++ b/configs/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/functions/_pure_prompt_nixdevshell.fish b/configs/fish/functions/_pure_prompt_nixdevshell.fish new file mode 100644 index 0000000..7f9c4bb --- /dev/null +++ b/configs/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/functions/_pure_prompt_ssh.fish b/configs/fish/functions/_pure_prompt_ssh.fish new file mode 100644 index 0000000..ab721df --- /dev/null +++ b/configs/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/functions/_pure_prompt_symbol.fish b/configs/fish/functions/_pure_prompt_symbol.fish new file mode 100644 index 0000000..120dd7d --- /dev/null +++ b/configs/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/functions/_pure_prompt_system_time.fish b/configs/fish/functions/_pure_prompt_system_time.fish new file mode 100644 index 0000000..49f134f --- /dev/null +++ b/configs/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/functions/_pure_prompt_vimode.fish b/configs/fish/functions/_pure_prompt_vimode.fish new file mode 100644 index 0000000..d95d806 --- /dev/null +++ b/configs/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/functions/_pure_prompt_virtualenv.fish b/configs/fish/functions/_pure_prompt_virtualenv.fish new file mode 100644 index 0000000..7b0f3aa --- /dev/null +++ b/configs/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/functions/_pure_set_color.fish b/configs/fish/functions/_pure_set_color.fish new file mode 100644 index 0000000..c05769a --- /dev/null +++ b/configs/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/functions/_pure_set_default.fish b/configs/fish/functions/_pure_set_default.fish new file mode 100644 index 0000000..d5c86a8 --- /dev/null +++ b/configs/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/functions/_pure_string_width.fish b/configs/fish/functions/_pure_string_width.fish new file mode 100644 index 0000000..0c1957b --- /dev/null +++ b/configs/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/functions/_pure_user_at_host.fish b/configs/fish/functions/_pure_user_at_host.fish new file mode 100644 index 0000000..e41cc67 --- /dev/null +++ b/configs/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/.gitmodules b/configs/fish/functions/aliases.fish similarity index 100% rename from .gitmodules rename to configs/fish/functions/aliases.fish diff --git a/configs/fish/functions/curl.fish b/configs/fish/functions/curl.fish new file mode 100644 index 0000000..bd18505 --- /dev/null +++ b/configs/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/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 diff --git a/configs/fish/functions/fish_greeting.fish b/configs/fish/functions/fish_greeting.fish new file mode 100644 index 0000000..878b30e --- /dev/null +++ b/configs/fish/functions/fish_greeting.fish @@ -0,0 +1,3 @@ +function fish_greeting + _pure_check_for_new_release +end diff --git a/configs/fish/functions/fish_mode_prompt.fish b/configs/fish/functions/fish_mode_prompt.fish new file mode 100644 index 0000000..428a658 --- /dev/null +++ b/configs/fish/functions/fish_mode_prompt.fish @@ -0,0 +1,2 @@ +function fish_mode_prompt +end diff --git a/configs/fish/functions/fish_prompt.fish b/configs/fish/functions/fish_prompt.fish new file mode 100644 index 0000000..0b21436 --- /dev/null +++ b/configs/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/functions/fish_title.fish b/configs/fish/functions/fish_title.fish new file mode 100644 index 0000000..859f630 --- /dev/null +++ b/configs/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/functions/fisher.fish b/configs/fish/functions/fisher.fish new file mode 100644 index 0000000..e915cb8 --- /dev/null +++ b/configs/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/functions/split_run.fish b/configs/fish/functions/split_run.fish new file mode 100644 index 0000000..7b9b42e --- /dev/null +++ b/configs/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/fish/functions/yy.fish b/configs/fish/functions/yy.fish new file mode 100644 index 0000000..c5ecb3e --- /dev/null +++ b/configs/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 diff --git a/configs/fish/themes/Catppuccin Frappe.theme b/configs/fish/themes/Catppuccin Frappe.theme new file mode 100644 index 0000000..b4c1994 --- /dev/null +++ b/configs/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/themes/Catppuccin Latte.theme b/configs/fish/themes/Catppuccin Latte.theme new file mode 100644 index 0000000..002dace --- /dev/null +++ b/configs/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/themes/Catppuccin Macchiato.theme b/configs/fish/themes/Catppuccin Macchiato.theme new file mode 100644 index 0000000..c8be912 --- /dev/null +++ b/configs/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/themes/Catppuccin Mocha.theme b/configs/fish/themes/Catppuccin Mocha.theme new file mode 100644 index 0000000..892a000 --- /dev/null +++ b/configs/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/chezmoi/dot_config/fzf/forgitrc b/configs/fzf/forgitrc similarity index 100% rename from chezmoi/dot_config/fzf/forgitrc rename to configs/fzf/forgitrc diff --git a/chezmoi/dot_config/fzf/fzfrc b/configs/fzf/fzfrc similarity index 100% rename from chezmoi/dot_config/fzf/fzfrc rename to configs/fzf/fzfrc diff --git a/chezmoi/dot_config/fzf/widgets/alias_widget.zsh b/configs/fzf/widgets/alias_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/alias_widget.zsh rename to configs/fzf/widgets/alias_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/atuin-history_widget.zsh b/configs/fzf/widgets/atuin-history_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/atuin-history_widget.zsh rename to configs/fzf/widgets/atuin-history_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/cd-recent-dir_widget.zsh b/configs/fzf/widgets/cd-recent-dir_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/cd-recent-dir_widget.zsh rename to configs/fzf/widgets/cd-recent-dir_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/cd_widget.zsh b/configs/fzf/widgets/cd_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/cd_widget.zsh rename to configs/fzf/widgets/cd_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/dictionary_widget.zsh b/configs/fzf/widgets/dictionary_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/dictionary_widget.zsh rename to configs/fzf/widgets/dictionary_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/fzf-rg-launcher.zsh b/configs/fzf/widgets/fzf-rg-launcher.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/fzf-rg-launcher.zsh rename to configs/fzf/widgets/fzf-rg-launcher.zsh diff --git a/chezmoi/dot_config/fzf/widgets/locate_widget.zsh b/configs/fzf/widgets/locate_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/locate_widget.zsh rename to configs/fzf/widgets/locate_widget.zsh diff --git a/chezmoi/dot_config/fzf/widgets/man_widget.zsh b/configs/fzf/widgets/man_widget.zsh similarity index 100% rename from chezmoi/dot_config/fzf/widgets/man_widget.zsh rename to configs/fzf/widgets/man_widget.zsh diff --git a/configs/ghostty/config b/configs/ghostty/config new file mode 100644 index 0000000..fa8602d --- /dev/null +++ b/configs/ghostty/config @@ -0,0 +1,95 @@ +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 + +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/chezmoi/dot_config/git/config b/configs/git/config similarity index 71% rename from chezmoi/dot_config/git/config rename to configs/git/config index 0c713a8..faff1ec 100644 --- a/chezmoi/dot_config/git/config +++ b/configs/git/config @@ -8,3 +8,9 @@ [includeIf "gitdir:~/Repos/Work/"] path = ~/.config/git/config-work +[merge] + autoStash = true + edit = no + ff = no +[rebase] + autoStash = true diff --git a/chezmoi/dot_config/git/ignore b/configs/git/ignore similarity index 75% rename from chezmoi/dot_config/git/ignore rename to configs/git/ignore index 6417329..df7b329 100644 --- a/chezmoi/dot_config/git/ignore +++ b/configs/git/ignore @@ -4,3 +4,6 @@ # PHP Stuff vendor .php-cs-fixer.cache + +# Neovim +Session.vim diff --git a/configs/hypr/almighty/hyprland.conf b/configs/hypr/almighty/hyprland.conf new file mode 100644 index 0000000..759261a --- /dev/null +++ b/configs/hypr/almighty/hyprland.conf @@ -0,0 +1,23 @@ +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 +} + +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/chezmoi/dot_config/hypr/executable_gdm-wrapper.sh b/configs/hypr/base/executable_gdm-wrapper.sh similarity index 100% rename from chezmoi/dot_config/hypr/executable_gdm-wrapper.sh rename to configs/hypr/base/executable_gdm-wrapper.sh diff --git a/configs/hypr/base/hypridle.conf b/configs/hypr/base/hypridle.conf new file mode 100644 index 0000000..d96ac12 --- /dev/null +++ b/configs/hypr/base/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 = niri msg action power-on-monitors # 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 = 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 { + timeout = 1800 # 30min + on-timeout = systemctl suspend # suspend pc +} diff --git a/configs/hypr/base/hyprland.conf b/configs/hypr/base/hyprland.conf new file mode 100644 index 0000000..0ac45f0 --- /dev/null +++ b/configs/hypr/base/hyprland.conf @@ -0,0 +1,267 @@ +# | |_| | | | | '_ \| '__| |/ _` | '_ \ / _` | +# | _ | |_| | |_) | | | | (_| | | | | (_| | +# |_| |_|\__, | .__/|_| |_|\__,_|_| |_|\__,_| +# |___/|_| +# +# ╰────────────────────────────────────────────────────────────────────╯ + + +# ╭──────────────────────────────────────────────────────────╮ +# │ 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 +exec-once = swaync --skip-system-css + +# ╭──────────────────────────────────────────────────────────╮ +# │ Config │ +# ╰──────────────────────────────────────────────────────────╯ + +# Source a file (multi-file configs) +source = ~/.config/hypr/theme.conf +source = ~/.config/hypr/include/*.conf + +# ── Monitors ────────────────────────────────────────────────────────── +monitor = , preferred, auto, 1 +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 = 1 + + 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 = rgba($tealAlphadd) + col.inactive_border = rgba($surface1Alphadd) + + # snap { + # enabled = true + # } + + layout = master +} + +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 + + 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 +} + +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)$ + # swallow_exception_regex = "" + + mouse_move_focuses_monitor = false + animate_manual_resizes = false + vrr = 0 +} + +# ── Layouts ─────────────────────────────────────────────────────────── +master { + new_status = slave + mfact = 0.5 + slave_count_for_center_master = 0 +} + +# ╭──────────────────────────────────────────────────────────╮ +# │ Windows rules │ +# ╰──────────────────────────────────────────────────────────╯ + +windowrulev2 = float, class:org.gnome.Nautilus +windowrulev2 = float, class:xdg-desktop-portal-gtk +windowrulev2 = float, class:brave title:(.+)wants to save + +# ╭───────────────────────────────────────────────────────────╮ +# │ 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, uwsm app -- 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 +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 + +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, 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 +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, 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 +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/base/hyprlock.conf b/configs/hypr/base/hyprlock.conf new file mode 100644 index 0000000..a907bd4 --- /dev/null +++ b/configs/hypr/base/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/chezmoi/dot_config/hypr/hyprpaper.conf b/configs/hypr/base/hyprpaper.conf similarity index 100% rename from chezmoi/dot_config/hypr/hyprpaper.conf rename to configs/hypr/base/hyprpaper.conf diff --git a/chezmoi/dot_config/foot/themes/catppuccin/assets/empty_dot_gitkeep b/configs/hypr/base/include/.gitkeep similarity index 100% rename from chezmoi/dot_config/foot/themes/catppuccin/assets/empty_dot_gitkeep rename to configs/hypr/base/include/.gitkeep diff --git a/configs/hypr/base/theme.conf b/configs/hypr/base/theme.conf new file mode 100644 index 0000000..a179511 --- /dev/null +++ b/configs/hypr/base/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 diff --git a/configs/hypr/work-laptop/hyprland.conf b/configs/hypr/work-laptop/hyprland.conf new file mode 100644 index 0000000..4bc1b56 --- /dev/null +++ b/configs/hypr/work-laptop/hyprland.conf @@ -0,0 +1,17 @@ +monitor = eDP-1, disable + +monitorv2 { + output = HDMI-A-1 + mode = 3440x1440@49.99Hz + position = auto + scale = 1 + 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 + +workspace = w[t1], layoutopt:orientation:center +workspace = w[t2-4], layoutopt:orientation:left + diff --git a/configs/jetbrains/ideavimrc b/configs/jetbrains/ideavimrc new file mode 100644 index 0000000..770198e --- /dev/null +++ b/configs/jetbrains/ideavimrc @@ -0,0 +1,153 @@ +" .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=10 +set autoindent +set relativenumber +set showcmd +set showmode +set ideajoin +set startofline + +" search +set hlsearch +set incsearch +set smartcase + +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 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" + +" 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 +sethandler a:ide +sethandler n:vim i-v:ide +sethandler a:vim i:ide + +" Don't use Ex mode, use Q for formatting. +map Q gq +" Prevent movement +nmap +vmap +vmap p "_dP +vmap J (MoveStatementDown) +vmap K (MoveStatementUp) +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" + +nmap fa (GotoAction) + +nmap fl (GotoSymbol) + +"" code jump +" nmap gd (GotoSuperMethod) +" nmap gD (GotoDeclaration) +" nmap gy (GotoTypeDeclaration) +" nmap gri (GotoImplementation) +" nmap grr (FindUsages) +" nmap lR (FindUsages) + +nmap lj (GotoNextError) +nmap lk (GotoPreviousError) + +"" editing +let g:WhichKeyDesc_Commentary = "gc Comment" +" nmap gco o(CommentByLineComment) +" nmap gcO O(CommentByLineComment) + +nmap lf (ReformatCode) +vmap lf (ReformatCode) +nmap lr (RenameElement) + +" Actions +nmap ps (QuickList.SSH Actions) + +"" 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 (CloseContent) +nmap bC (CloseAllEditors) + +"" 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) + +"" UI +map z (ToggleDistractionFreeMode) + +"" 快速关闭上次搜索结果高亮 +nmap :nohlsearch \ No newline at end of file diff --git a/configs/keebs/Corne Choc.vil b/configs/keebs/Corne Choc.vil new file mode 100644 index 0000000..c2bb01b --- /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_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 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 0000000..47447c1 Binary files /dev/null and b/configs/keebs/keebart_corne_choc_pro_standard_vial.uf2 differ diff --git a/configs/keebs/sofle RGB.vil b/configs/keebs/sofle RGB.vil new file mode 100644 index 0000000..a9df287 --- /dev/null +++ b/configs/keebs/sofle RGB.vil @@ -0,0 +1 @@ +{"version": 1, "uid": 12888985424971681029, "layout": [[["KC_GRAVE", "KC_1", "KC_2", "KC_3", "KC_4", "KC_5"], ["LT4(KC_TAB)", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T"], ["RCTL_T(KC_ESCAPE)", "LGUI_T(KC_A)", "LALT_T(KC_S)", "LSFT_T(KC_D)", "LCTL_T(KC_F)", "KC_G"], ["KC_LSHIFT", "KC_Z", "KC_X", "KC_C", "KC_V", "KC_B"], ["KC_LALT", "KC_LCTRL", "KC_LGUI", "KC_SPACE", "0x7e40", "KC_MUTE"], ["KC_MINUS", "KC_0", "KC_9", "KC_8", "KC_7", "KC_6"], ["KC_LBRACKET", "KC_P", "KC_O", "KC_I", "KC_U", "KC_Y"], ["KC_BSPACE", "RGUI_T(KC_SCOLON)", "LALT_T(KC_L)", "RSFT_T(KC_K)", "RCTL_T(KC_J)", "KC_H"], ["KC_RSHIFT", "KC_SLASH", "KC_DOT", "KC_COMMA", "KC_M", "KC_N"], ["KC_RALT", "KC_RCTRL", "KC_RGUI", "KC_ENTER", "0x7e41", "KC_NO"]], [["LSFT(KC_GRAVE)", "LSFT(KC_1)", "LSFT(KC_2)", "LSFT(KC_3)", "LSFT(KC_4)", "LSFT(KC_5)"], ["KC_TRNS", "KC_EQUAL", "LSFT(KC_MINUS)", "LSFT(KC_QUOTE)", "LSFT(KC_NONUS_HASH)", "KC_MINUS"], ["KC_TRNS", "KC_NONUS_BSLASH", "LSFT(KC_NONUS_BSLASH)", "LSFT(KC_8)", "LSFT(KC_9)", "LSFT(KC_2)"], ["KC_TRNS", "LSFT(KC_EQUAL)", "LSFT(KC_1)", "KC_QUOTE", "KC_NONUS_HASH", "RALT(KC_NONUS_HASH)"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["LSFT(KC_MINUS)", "LSFT(KC_0)", "LSFT(KC_9)", "LSFT(KC_8)", "LSFT(KC_7)", "LSFT(KC_6)"], ["RALT(KC_QUOTE)", "RALT(KC_MINUS)", "KC_SLASH", "KC_RBRACKET", "LSFT(KC_7)", "LSFT(KC_RBRACKET)"], ["KC_TRNS", "RALT(KC_RBRACKET)", "LSFT(KC_0)", "LSFT(KC_3)", "LSFT(KC_4)", "KC_GRAVE"], ["KC_TRNS", "LSFT(KC_SLASH)", "LSFT(KC_DOT)", "LSFT(KC_COMMA)", "LSFT(KC_5)", "LSFT(KC_6)"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"]], [["KC_F1", "KC_F2", "KC_F3", "KC_F4", "KC_F5", "KC_F6"], ["KC_TRNS", "KC_NO", "KC_NO", "LSFT(KC_PSCREEN)", "KC_PSCREEN", "KC_NO"], ["KC_TRNS", "KC_LGUI", "KC_LALT", "KC_LSHIFT", "KC_LCTRL", "KC_NO"], ["KC_TRNS", "KC_UNDO", "KC_CUT", "KC_COPY", "KC_PSTE", "KC_NO"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_F12", "KC_F11", "KC_F10", "KC_F9", "KC_F8", "KC_F7"], ["KC_BSPACE", "KC_LGUI", "KC_END", "KC_PGUP", "KC_PGDOWN", "KC_HOME"], ["KC_DELETE", "KC_VOLU", "KC_RIGHT", "KC_UP", "KC_DOWN", "KC_LEFT"], ["KC_NO", "KC_VOLD", "KC_MNXT", "KC_MPLY", "KC_MPRV", "KC_HOME"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"]], [["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["QK_BOOT", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["RGB_TOG", "RGB_HUI", "RGB_SAI", "RGB_VAI", "KC_TRNS", "KC_TRNS"], ["RGB_MOD", "RGB_HUD", "RGB_SAD", "RGB_VAD", "KC_NO", "KC_TRNS"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_TRNS"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "LCG(KC_RIGHT)", "KC_NO", "KC_NO", "LCG(KC_LEFT)"], ["KC_NO", "KC_NO", "KC_MNXT", "KC_MPLY", "KC_MPRV", "KC_NO"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_NO"]], [["KC_TRNS", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO"], ["KC_TRNS", "OSM(MOD_MEH)", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"], ["KC_NO", "KC_NO", "KC_KP_9", "KC_KP_8", "KC_KP_7", "KC_TRNS"], ["KC_NO", "LSFT(KC_8)", "KC_KP_6", "KC_KP_5", "KC_KP_4", "LSFT(KC_6)"], ["KC_BSPACE", "KC_EQUAL", "KC_KP_3", "KC_KP_2", "KC_KP_1", "KC_MINUS"], ["KC_TRNS", "KC_SLASH", "KC_KP_DOT", "KC_KP_0", "KC_KP_0", "LSFT(KC_EQUAL)"], ["KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"]]], "encoder_layout": [[["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["KC_TRNS", "KC_TRNS"], ["KC_TRNS", "KC_TRNS"]], [["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": -1, "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]], "combo": [], "key_override": [], "alt_repeat_key": [], "settings": {"1": 0, "2": 50, "3": 0, "4": 175, "5": 5, "6": 5000, "7": 200, "18": 10, "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/chezmoi/dot_config/kitty/current-theme.conf b/configs/kitty/current-theme.conf similarity index 100% rename from chezmoi/dot_config/kitty/current-theme.conf rename to configs/kitty/current-theme.conf diff --git a/configs/kitty/kitty.conf b/configs/kitty/kitty.conf new file mode 100644 index 0000000..d3b2d18 --- /dev/null +++ b/configs/kitty/kitty.conf @@ -0,0 +1,192 @@ +# vim:fileencoding=utf-8:foldmethod=marker + +# Catppuccin-Macchiato +include current-theme.conf + +font_family JetBrainsMono Nerd Font +font_size 12.0 + +bell_on_tab " " + +remember_window_size yes + +enabled_layouts fat:bias=70,tall:bias=55,stack + +hide_window_decorations yes + +confirm_os_window_close 0 + +tab_bar_edge top + +tab_bar_style separator + +tab_bar_align center + +tab_bar_min_tabs 1 + +tab_separator " │ " + +tab_activity_symbol " " + +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}" + +allow_remote_control yes +listen_on unix:@mykitty + +wayland_titlebar_color background + + +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_with_cwd +map ctrl+space>ctrl+enter launch --cwd=root +# map cmd+enter new_window + +#: Close window + +# map kitty_mod+w close_window +# map shift+cmd+d close_window + +# map kitty_mod+] next_window +# map kitty_mod+[ previous_window + +# map kitty_mod+f move_window_forward +# map kitty_mod+b move_window_backward + +# map kitty_mod+` move_window_to_top + +# map kitty_mod+r start_resizing_window +# map cmd+r start_resizing_window + +# map kitty_mod+1 first_window +# map cmd+1 first_window + +# map kitty_mod+2 second_window +# map cmd+2 second_window + +# map kitty_mod+3 third_window +# map cmd+3 third_window + +# map kitty_mod+4 fourth_window +# map cmd+4 fourth_window + +# map kitty_mod+5 fifth_window +# map cmd+5 fifth_window + +# map kitty_mod+6 sixth_window +# map cmd+6 sixth_window + +# map kitty_mod+7 seventh_window +# map cmd+7 seventh_window + +# map kitty_mod+8 eighth_window +# map cmd+8 eighth_window + +# map kitty_mod+9 ninth_window +# map cmd+9 ninth_window + +# map kitty_mod+0 tenth_window + +#: Visually select and focus window + +map ctrl+space>tab focus_visible_window +map ctrl+space>ctrl+tab swap_with_window +map ctrl+space>ctrl+shift+tab detach_window ask + +#: Tab management {{{ + +# map kitty_mod+right next_tab +# map shift+cmd+] next_tab +# map ctrl+tab next_tab + +# map kitty_mod+left previous_tab +# map shift+cmd+[ previous_tab +# 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 +# map cmd+w close_tab + +# map shift+cmd+w close_os_window +# +# map kitty_mod+. move_tab_forward +# map kitty_mod+, move_tab_backward + +# map kitty_mod+alt+t set_tab_title +# map shift+cmd+i set_tab_title +map ctrl+space>shift+r set_tab_title + +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 + +# map kitty_mod+l next_layout +map ctrl+space>ctrl+l next_layout +map kitty_mod+m zoom + +# map kitty_mod+e open_url_with_hints + +#: Insert selected path +# map kitty_mod+p>f kitten hints --type path --program - + +#: Open selected path +# map kitty_mod+p>shift+f kitten hints --type path + +#: Insert selected line +# map kitty_mod+p>l kitten hints --type line --program - + +#: Insert selected word +# map kitty_mod+p>w kitten hints --type word --program - + +#: Insert selected hash +# map kitty_mod+p>h kitten hints --type hash --program - + +#: Open the selected file at the selected line +# map kitty_mod+p>n kitten hints --type linenum + +#: Open the selected hyperlink +# map kitty_mod+p>y kitten hints --type hyperlink + +# map kitty_mod+f1 show_kitty_doc overview + +#: Reload kitty.conf + +# map kitty_mod+f5 load_config_file +# map ctrl+cmd+, load_config_file +map ctrl+space>ctrl+r load_config_file + + +#: 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/chezmoi/dot_config/kitty/private_kitty.conf.bak b/configs/kitty/private_kitty.conf.bak similarity index 100% rename from chezmoi/dot_config/kitty/private_kitty.conf.bak rename to configs/kitty/private_kitty.conf.bak 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/chezmoi/dot_config/lazygit/config.yml b/configs/lazygit/config.yml similarity index 88% rename from chezmoi/dot_config/lazygit/config.yml rename to configs/lazygit/config.yml index 422844f..2d38e28 100644 --- a/chezmoi/dot_config/lazygit/config.yml +++ b/configs/lazygit/config.yml @@ -1,70 +1,51 @@ -# 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: @@ -87,100 +68,73 @@ gui: - '#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 - + 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. @@ -189,113 +143,83 @@ gui: - / - '-' - \ - # 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: "" - + 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 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: "" + # 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' @@ -304,110 +228,86 @@ git: # # 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 - # 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 - # 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: "" - + 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: "" - # 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" - + 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. # - '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 - +promptToReturnFromSubprocess: false # Keybindings keybinding: universal: @@ -462,10 +362,8 @@ keybinding: scrollDownMain-alt2: executeShellCommand: ':' createRebaseOptionsMenu: m - # 'Files' appended for legacy reasons pushFiles: P - # 'Files' appended for legacy reasons pullFiles: p refresh: R @@ -508,7 +406,7 @@ keybinding: viewResetOptions: D fetch: f toggleTreeView: '`' - openMergeTool: M + openMergeOptions: M openStatusFilter: copyFileInfoToClipboard: "y" branches: @@ -573,3 +471,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/chezmoi/dot_config/mako/config b/configs/mako/config similarity index 90% rename from chezmoi/dot_config/mako/config rename to configs/mako/config index 1b7531f..7a78949 100644 --- a/chezmoi/dot_config/mako/config +++ b/configs/mako/config @@ -1,4 +1,5 @@ default-timeout=5000 +anchor=top-center # Colors diff --git a/configs/mise/config.toml b/configs/mise/config.toml new file mode 100644 index 0000000..0c6b009 --- /dev/null +++ b/configs/mise/config.toml @@ -0,0 +1,59 @@ +[tools] + +# ── Languages ───────────────────────────────────────────────────────── + +node = 'lts' +# python = {version='3', virtualenv='.venv'} +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" +watchexec = "latest" +"npm:@hoppscotch/cli" = "latest" +kotlin = "latest" +gradle = "latest" +"npm:@immich/cli" = "latest" + +[settings] +lockfile = true +experimental = true +idiomatic_version_file_enable_tools = ["python"] + +[settings.python] +uv_venv_auto = true +uv_venv_create_args = ['--seed'] diff --git a/chezmoi/dot_config/sway/themes/catppuccin/.keep b/configs/mise/mise.lock similarity index 100% rename from chezmoi/dot_config/sway/themes/catppuccin/.keep rename to configs/mise/mise.lock diff --git a/chezmoi/dot_config/mpv/encoding.rst b/configs/mpv/encoding.rst similarity index 100% rename from chezmoi/dot_config/mpv/encoding.rst rename to configs/mpv/encoding.rst diff --git a/chezmoi/dot_config/mpv/input.conf b/configs/mpv/input.conf similarity index 100% rename from chezmoi/dot_config/mpv/input.conf rename to configs/mpv/input.conf diff --git a/chezmoi/dot_config/mpv/mplayer-input.conf b/configs/mpv/mplayer-input.conf similarity index 100% rename from chezmoi/dot_config/mpv/mplayer-input.conf rename to configs/mpv/mplayer-input.conf diff --git a/chezmoi/dot_config/mpv/mpv.conf b/configs/mpv/mpv.conf similarity index 100% rename from chezmoi/dot_config/mpv/mpv.conf rename to configs/mpv/mpv.conf diff --git a/chezmoi/dot_config/mpv/restore-old-bindings.conf b/configs/mpv/restore-old-bindings.conf similarity index 100% rename from chezmoi/dot_config/mpv/restore-old-bindings.conf rename to configs/mpv/restore-old-bindings.conf diff --git a/chezmoi/dot_config/mpv/script-opts/mpv_thumbnail_script.conf b/configs/mpv/script-opts/mpv_thumbnail_script.conf similarity index 100% rename from chezmoi/dot_config/mpv/script-opts/mpv_thumbnail_script.conf rename to configs/mpv/script-opts/mpv_thumbnail_script.conf diff --git a/chezmoi/dot_config/mpv/scripts/mpv-i3-floating-centered.lua b/configs/mpv/scripts/mpv-i3-floating-centered.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/mpv-i3-floating-centered.lua rename to configs/mpv/scripts/mpv-i3-floating-centered.lua diff --git a/chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_client_osc.lua b/configs/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 configs/mpv/scripts/mpv_thumbnail_script_client_osc.lua diff --git a/chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server-1.lua b/configs/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 configs/mpv/scripts/mpv_thumbnail_script_server-1.lua diff --git a/chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server-2.lua b/configs/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 configs/mpv/scripts/mpv_thumbnail_script_server-2.lua diff --git a/chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server.lua b/configs/mpv/scripts/mpv_thumbnail_script_server.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/mpv_thumbnail_script_server.lua rename to configs/mpv/scripts/mpv_thumbnail_script_server.lua diff --git a/chezmoi/dot_config/mpv/scripts/pause-indicator.lua b/configs/mpv/scripts/pause-indicator.lua similarity index 100% rename from chezmoi/dot_config/mpv/scripts/pause-indicator.lua rename to configs/mpv/scripts/pause-indicator.lua diff --git a/chezmoi/dot_config/mpv/tech-overview.txt b/configs/mpv/tech-overview.txt similarity index 100% rename from chezmoi/dot_config/mpv/tech-overview.txt rename to configs/mpv/tech-overview.txt diff --git a/configs/niri/base/config.kdl b/configs/niri/base/config.kdl new file mode 100644 index 0000000..4f340da --- /dev/null +++ b/configs/niri/base/config.kdl @@ -0,0 +1,503 @@ +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" f 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 +} +// 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$" + // 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.5 + } +} +window-rule { + match title="^Meet: .*" app-id="brave-browser" + open-floating true +} +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 │ +// ╰─────────────────────────────────────────────────────────╯ +spawn-at-startup "./fix_float.py" +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+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}" + } + XF86AudioRaiseVolume allow-when-locked=true { + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.025+" + } + XF86AudioLowerVolume allow-when-locked=true { + spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.025-" + } + 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-or-monitor-right + } + Mod+H { + focus-column-or-monitor-left + } + Mod+J { + focus-window-or-workspace-down + } + Mod+K { + focus-window-or-workspace-up + } + Mod+L { + focus-column-or-monitor-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 + } + 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 "HDMI-A-1" { + scale 1 + mode "3440x1440" +} +// ── Input Options ─────────────────────────────────────────────────── +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 +} +// ── Animations ────────────────────────────────────────────────────── +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 + +} +// ── 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/chezmoi/dot_config/waybar/themes/catppuccin/assets/empty_dot_gitkeep b/configs/niri/base/include/.gitkeep similarity index 100% rename from chezmoi/dot_config/waybar/themes/catppuccin/assets/empty_dot_gitkeep rename to configs/niri/base/include/.gitkeep 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"]] 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 + } + } +} + diff --git a/configs/nvim/after/ftplugin/rust.lua b/configs/nvim/after/ftplugin/rust.lua new file mode 100644 index 0000000..e23cef2 --- /dev/null +++ b/configs/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/init.lua b/configs/nvim/init.lua new file mode 100644 index 0000000..b926841 --- /dev/null +++ b/configs/nvim/init.lua @@ -0,0 +1,34 @@ +-- 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.commands") +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/lazy-lock.json b/configs/nvim/lazy-lock.json new file mode 100644 index 0000000..f7066e1 --- /dev/null +++ b/configs/nvim/lazy-lock.json @@ -0,0 +1,39 @@ +{ + "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": "a203480a350b03092e473bf3001733d547160a73" }, + "flatten.nvim": { "branch": "main", "commit": "72527798e75b5e34757491947c2cb853ce21dc0e" }, + "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": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, + "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" }, + "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": "6b46370d02cd001509a765591a3ffc481b538794" }, + "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" }, + "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" }, + "rustaceanvim": { "branch": "master", "commit": "66398662c07d265b226897500ed50eafba3dffb4" }, + "smart-splits.nvim": { "branch": "master", "commit": "fc7bb00fe67ab504356bed4310d23c2e4cb4b06b" }, + "transfer.nvim": { "branch": "main", "commit": "ab12253c09f83a5b0b6ee108fc131be45abe446a" }, + "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": "053867916a9be3cb46f84b6f095ee731bbddd213" } +} diff --git a/configs/nvim/lua/aleidk/autocmds.lua b/configs/nvim/lua/aleidk/autocmds.lua new file mode 100644 index 0000000..9e7e188 --- /dev/null +++ b/configs/nvim/lua/aleidk/autocmds.lua @@ -0,0 +1,34 @@ +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/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", +}) diff --git a/chezmoi/dot_config/nvim/lua/aleidk/constants.lua b/configs/nvim/lua/aleidk/constants.lua similarity index 98% rename from chezmoi/dot_config/nvim/lua/aleidk/constants.lua rename to configs/nvim/lua/aleidk/constants.lua index 0d9495c..52cdd9f 100644 --- a/chezmoi/dot_config/nvim/lua/aleidk/constants.lua +++ b/configs/nvim/lua/aleidk/constants.lua @@ -29,7 +29,7 @@ return { Color = " ", Constant = " ", Constructor = " ", - Copilot = " ", + Copilot = " ", Enum = " ", EnumMember = " ", Event = " ", diff --git a/configs/nvim/lua/aleidk/keymaps.lua b/configs/nvim/lua/aleidk/keymaps.lua new file mode 100644 index 0000000..148c5f6 --- /dev/null +++ b/configs/nvim/lua/aleidk/keymaps.lua @@ -0,0 +1,41 @@ +-- 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 }) + +-- 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 }) +vim.keymap.set("n", "lk", function() vim.diagnostic.jump({ count = -1 }) end, + { desc = "Go to next diagnostic", silent = true }) diff --git a/configs/nvim/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua new file mode 100644 index 0000000..cf76fb6 --- /dev/null +++ b/configs/nvim/lua/aleidk/options.lua @@ -0,0 +1,175 @@ +-- [[ 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) + +-- 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 +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.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 +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.o.completeopt = "noselect,menu,menuone,noinsert,popup" +vim.o.winborder = "rounded" + +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", + ["compose.*%.ya?ml"] = "yaml.docker-compose", + ["docker-compose.*%.ya?ml"] = "yaml.docker-compose", + [".*%.blade%.php"] = "blade", + [".*%.hurl.*"] = "hurl", + [".*/hypr/.*%.conf"] = "hyprlang", + }, +}) + +-- ╭─────────────────────────────────────────────────────────╮ +-- │ LSP │ +-- ╰─────────────────────────────────────────────────────────╯ + +vim.lsp.config("rust-analyzer", { + tools = { + code_actions = { + ui_select_fallback = true, + }, + }, +}) + +vim.g.markdown_fenced_languages = { + "ts=typescript", +} + +vim.lsp.enable("denols") + +vim.lsp.inlay_hint.enable(true) + +vim.diagnostic.config({ + virtual_lines = { current_line = true }, +}) diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/bookmarks.lua b/configs/nvim/lua/aleidk/plugins/bookmarks.lua similarity index 99% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/bookmarks.lua rename to configs/nvim/lua/aleidk/plugins/bookmarks.lua index fe3a1a2..f5e8aee 100644 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/bookmarks.lua +++ b/configs/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/lua/aleidk/plugins/colorscheme.lua b/configs/nvim/lua/aleidk/plugins/colorscheme.lua new file mode 100644 index 0000000..2237d69 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/colorscheme.lua @@ -0,0 +1,66 @@ +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, + mini = { + enabled = true, + indentscope_color = "", + }, + }, + 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 }, + + 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, + } + + require("catppuccin").setup(opts) + vim.cmd.colorscheme("catppuccin-macchiato") + end, +} diff --git a/configs/nvim/lua/aleidk/plugins/comments.lua b/configs/nvim/lua/aleidk/plugins/comments.lua new file mode 100644 index 0000000..9137253 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/comments.lua @@ -0,0 +1,27 @@ +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" }, } }, + }, + }, + { + "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/configs/nvim/lua/aleidk/plugins/completion.lua b/configs/nvim/lua/aleidk/plugins/completion.lua new file mode 100644 index 0000000..1cd8b6f --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/completion.lua @@ -0,0 +1,64 @@ +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 = { + 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", + "lazydev", + }, + per_filetype = { + sql = { 'snippets', 'dadbod', 'buffer' }, + }, + }, + } + end +} diff --git a/configs/nvim/lua/aleidk/plugins/debug.lua b/configs/nvim/lua/aleidk/plugins/debug.lua new file mode 100644 index 0000000..1e4764c --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/debug.lua @@ -0,0 +1,98 @@ +return { + { + "mfussenegger/nvim-dap", + dependencies = { + { + "igorlfs/nvim-dap-view", + ---@module 'dap-view' + ---@type dapview.Config + opts = { + auto_toggle = true, + switchbuf = "useopen,uselast", + winbar = { + sections = { "watches", "scopes", "breakpoints", "repl", "console" }, + controls = { + enabled = true, + }, + }, + windows = { + terminal = { + start_hidden = true, + } + } + }, + }, + }, + config = function() + 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 = { + { + "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" }, + } + }, + { + "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/lua/aleidk/plugins/file-explorer.lua b/configs/nvim/lua/aleidk/plugins/file-explorer.lua new file mode 100644 index 0000000..8631829 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/file-explorer.lua @@ -0,0 +1,43 @@ +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", + "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/lua/aleidk/plugins/formatter.lua b/configs/nvim/lua/aleidk/plugins/formatter.lua new file mode 100644 index 0000000..f7add11 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/formatter.lua @@ -0,0 +1,124 @@ +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 }, + kotlin = { "ktlint" }, + kdl = { "kdlfmt" }, + 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) + + vim.api.nvim_create_autocmd("FileType", { + pattern = { "php" }, + callback = function(bufnr) + vim.b[bufnr].disable_autoformat = true + 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.b.disable_autoformat = not vim.b.disable_autoformat + print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) + end + + vim.keymap.set("n", "uf", toggleAutoFormat, { desc = "Toggle auto format", silent = true }) + + 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/lua/aleidk/plugins/fzf.lua b/configs/nvim/lua/aleidk/plugins/fzf.lua new file mode 100644 index 0000000..c1549ed --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/fzf.lua @@ -0,0 +1,35 @@ +return { + "ibhagwan/fzf-lua", + lazy = false, -- Required to register vim.ui.select() wrapper + dependencies = { "echasnovski/mini.nvim" }, + config = function() + 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 = { + { "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" }, + } +} diff --git a/configs/nvim/lua/aleidk/plugins/init.lua b/configs/nvim/lua/aleidk/plugins/init.lua new file mode 100644 index 0000000..245f048 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/init.lua @@ -0,0 +1,32 @@ +return { + { + "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" }, + opts = {}, + keys = { + { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } + } + }, + { + -- 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/lua/aleidk/plugins/language-support.lua b/configs/nvim/lua/aleidk/plugins/language-support.lua new file mode 100644 index 0000000..bee76db --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/language-support.lua @@ -0,0 +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", + enabled = false, + dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, + opts = {}, + }, +} diff --git a/chezmoi/dot_config/nvim/lua/aleidk/plugins/linters.lua b/configs/nvim/lua/aleidk/plugins/linters.lua similarity index 78% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/linters.lua rename to configs/nvim/lua/aleidk/plugins/linters.lua index 4ab5fdb..f73dc84 100644 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/linters.lua +++ b/configs/nvim/lua/aleidk/plugins/linters.lua @@ -8,16 +8,17 @@ 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" }, -- astro = { "eslint_d" }, + kotlin = { "ktlint" }, python = { "ruff" }, sh = { "shellcheck" }, 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/lua/aleidk/plugins/markdown.lua b/configs/nvim/lua/aleidk/plugins/markdown.lua new file mode 100644 index 0000000..9f9ea53 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/markdown.lua @@ -0,0 +1,14 @@ +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 + opts = { + file_types = { 'markdown' }, + sign = { + enabled = false, + }, + }, + }, +} diff --git a/configs/nvim/lua/aleidk/plugins/mini.lua b/configs/nvim/lua/aleidk/plugins/mini.lua new file mode 100644 index 0000000..ca46956 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/mini.lua @@ -0,0 +1,248 @@ +return { + 'echasnovski/mini.nvim', + version = '*', + dependencies = { + "rafamadriz/friendly-snippets", + }, + 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 } }, + }) + require("mini.ai").setup({}) + require('mini.cursorword').setup() -- Highlight word under cursor + require('mini.extra').setup() + 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({ + modes = { command = true } + }) + + require('mini.splitjoin').setup() + require("mini.align").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 }) + require('mini.statusline').setup() + require('mini.diff').setup({ view = { style = 'sign' } }) + + require('mini.git').setup({}) + + vim.keymap.set({ 'n', 'x' }, 'gs', 'lua MiniGit.show_at_cursor()', + { 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.sessions(5, 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.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 = "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" }, + { 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 = "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(), + }, + }) + + 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, {}) + + + vim.keymap.set('n', 'uz', function() + require('mini.misc').zoom() + end, + { desc = 'Toggle zoom', silent = true }) + end +} diff --git a/configs/nvim/lua/aleidk/plugins/remote-dev.lua b/configs/nvim/lua/aleidk/plugins/remote-dev.lua new file mode 100644 index 0000000..56774f8 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/remote-dev.lua @@ -0,0 +1,46 @@ +return { + { + "coffebar/transfer.nvim", + 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" }, + }, + config = function(_, opts) + require("transfer").setup(opts) + + 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/chezmoi/dot_config/nvim/lua/aleidk/plugins/smart-splits.lua b/configs/nvim/lua/aleidk/plugins/smart-splits.lua similarity index 92% rename from chezmoi/dot_config/nvim/lua/aleidk/plugins/smart-splits.lua rename to configs/nvim/lua/aleidk/plugins/smart-splits.lua index c58890c..c619888 100644 --- a/chezmoi/dot_config/nvim/lua/aleidk/plugins/smart-splits.lua +++ b/configs/nvim/lua/aleidk/plugins/smart-splits.lua @@ -1,8 +1,7 @@ --- 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 = { { diff --git a/configs/nvim/lua/aleidk/plugins/training.lua b/configs/nvim/lua/aleidk/plugins/training.lua new file mode 100644 index 0000000..47012a6 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/training.lua @@ -0,0 +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, + restriction_mode = "hint", + }, + }, +} diff --git a/configs/nvim/lua/aleidk/plugins/treesitter.lua b/configs/nvim/lua/aleidk/plugins/treesitter.lua new file mode 100644 index 0000000..012ccd0 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/treesitter.lua @@ -0,0 +1,60 @@ +return { + { + "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", "go", "kotlin" }, + 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") + + ts_obj.setup({ + move = { + set_jumps = true, + }, + }) + + 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, + }, +} diff --git a/configs/nvim/lua/aleidk/plugins/trouble.lua b/configs/nvim/lua/aleidk/plugins/trouble.lua new file mode 100644 index 0000000..dbcb527 --- /dev/null +++ b/configs/nvim/lua/aleidk/plugins/trouble.lua @@ -0,0 +1,97 @@ +---@module 'trouble' + +return { + "folke/trouble.nvim", + dependencies = { "echasnovski/mini.nvim", "ibhagwan/fzf-lua" }, + 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() + 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 }, + 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/snippets/global.json b/configs/nvim/snippets/global.json new file mode 100644 index 0000000..7f89b11 --- /dev/null +++ b/configs/nvim/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"] + } +} diff --git a/configs/rofi/config.rasi b/configs/rofi/config.rasi new file mode 100644 index 0000000..a3bf301 --- /dev/null +++ b/configs/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/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 new file mode 100644 index 0000000..e07bb8b --- /dev/null +++ b/configs/rofi/theme.rasi @@ -0,0 +1,149 @@ +/* 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; + 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 { + border: 0; + margin: 10px 20px 0px 20px; + background-color: @surface0; + border-radius: @border-rad; +} + +textbox { + padding: 6px; + text-color: @fg-col; + font: "JetBrainsMono Nerd Font 10"; +} diff --git a/chezmoi/dot_config/sesh/sesh.toml b/configs/sesh/sesh.toml similarity index 87% rename from chezmoi/dot_config/sesh/sesh.toml rename to configs/sesh/sesh.toml index 23c1186..5ae5bbe 100644 --- a/chezmoi/dot_config/sesh/sesh.toml +++ b/configs/sesh/sesh.toml @@ -5,7 +5,7 @@ startup_command = "ls" [[session]] name = "Dotfiles" -path = "~/.local/share/chezmoi/" +path = "~/Repos/Private/dots" startup_command = "nvim -c ':Telescope find_files'" [[session]] diff --git a/configs/starship/starship.toml b/configs/starship/starship.toml new file mode 100644 index 0000000..4f1fe65 --- /dev/null +++ b/configs/starship/starship.toml @@ -0,0 +1,73 @@ +# 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 = false + +[character] # The name of the module we are configuring is 'character' +success_symbol = '[➜](bold green)' +error_symbol = '[➜](bold red)' + +[container] +symbol = "󰆧" +style = 'mauve' +format = '[$symbol \[$name\]]($style) ' + +[git_branch] +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 = " " + +[aws] +disabled = true + +[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/chezmoi/dot_config/swappy/config b/configs/swappy/config similarity index 100% rename from chezmoi/dot_config/swappy/config rename to configs/swappy/config diff --git a/configs/swaync/config.json b/configs/swaync/config.json new file mode 100644 index 0000000..1ab7b9c --- /dev/null +++ b/configs/swaync/config.json @@ -0,0 +1,159 @@ +{ + "$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": { + "buttons-per-row": 5, + "actions": [ + { + "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": "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": " ", + "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'" + }, + { + "label": "󰜉", + "command": "reboot", + "tooltip": "Reboot" + }, + { + "label": "⏻", + "command": "shutdown now", + "tooltip": "Power Off" + }, + { + "label": "󰍁", + "command": "hyprlock", + "tooltip": "Lock" + } + ] + } + } +} diff --git a/configs/swaync/style.css b/configs/swaync/style.css new file mode 100644 index 0000000..9183f18 --- /dev/null +++ b/configs/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/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 diff --git a/chezmoi/dot_config/tmux/tmux.conf b/configs/tmux/tmux.conf similarity index 68% rename from chezmoi/dot_config/tmux/tmux.conf rename to configs/tmux/tmux.conf index c24df25..8e62cd1 100644 --- a/chezmoi/dot_config/tmux/tmux.conf +++ b/configs/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 │ @@ -174,7 +221,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" @@ -188,17 +236,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" - -# ╭──────────────────────────────────────────────────────────╮ -# │ 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 diff --git a/configs/uwsm/env b/configs/uwsm/env new file mode 100644 index 0000000..609644d --- /dev/null +++ b/configs/uwsm/env @@ -0,0 +1,14 @@ +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 +export SSH_AUTH_SOCK=$XDG_RUNTIME_DIR/rbw/ssh-agent-socket + +export EDITOR=nvim +export VISUAL=nvim + +export TERMINAL=/usr/bin/kitty diff --git a/chezmoi/dot_config/yazi/plugins/.keep b/configs/vimiv/keys.conf similarity index 100% rename from chezmoi/dot_config/yazi/plugins/.keep rename to configs/vimiv/keys.conf diff --git a/chezmoi/dot_config/vimiv/styles/default b/configs/vimiv/styles/default similarity index 100% rename from chezmoi/dot_config/vimiv/styles/default rename to configs/vimiv/styles/default diff --git a/chezmoi/dot_config/vimiv/styles/material-darker b/configs/vimiv/styles/material-darker similarity index 100% rename from chezmoi/dot_config/vimiv/styles/material-darker rename to configs/vimiv/styles/material-darker diff --git a/chezmoi/dot_config/vimiv/vimiv.conf b/configs/vimiv/vimiv.conf similarity index 100% rename from chezmoi/dot_config/vimiv/vimiv.conf rename to configs/vimiv/vimiv.conf diff --git a/configs/waybar/config.jsonc b/configs/waybar/config.jsonc new file mode 100644 index 0000000..6c52cb8 --- /dev/null +++ b/configs/waybar/config.jsonc @@ -0,0 +1,178 @@ +{ + "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": ["niri/workspaces", "niri/window"], + "modules-center": ["clock"], + "modules-right": [ + "tray", + "idle_inhibitor", + // "network", + "bluetooth", + "backlight", + "wireplumber", + "battery", + "custom/notification" + ], + + "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": { + "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 + }, + + "niri/window": { + "format": "{app_id}: {title}", + "rewrite": { + "(.*): (.*)": "$2", + "brave-browser: (.*) - Brave": "🌎 $1", + "Kitty: (.*)": " $1" + } + }, + + "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": "wlogout" + }, + "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 + } +} diff --git a/chezmoi/dot_config/waybar/style.css b/configs/waybar/style-bkp.css similarity index 98% rename from chezmoi/dot_config/waybar/style.css rename to configs/waybar/style-bkp.css index 0781fd4..c6f1913 100644 --- a/chezmoi/dot_config/waybar/style.css +++ b/configs/waybar/style-bkp.css @@ -1,4 +1,4 @@ -@import "./themes/catppuccin/themes/macchiato.css"; +@import "./themes/catppuccin-macchiato.css"; @keyframes blink_red { to { diff --git a/configs/waybar/style.css b/configs/waybar/style.css new file mode 100644 index 0000000..edf8db6 --- /dev/null +++ b/configs/waybar/style.css @@ -0,0 +1,102 @@ +@import "./themes/catppuccin-macchiato.css"; + +*{ + font-size: 13px; + font-family: Open Sans, JetBrainsMono Nerd Font; + font-weight: 500; + color: @text; +} +#waybar { + background: transparent; + border-radius: 5px; +} +#workspaces{ + border-radius:5px; +} + +#window { + border-radius: 20px; + padding-left: 10px; + padding-right: 10px; +} + +#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, +box.modules-center, +box.modules-right { + border-radius: 6px; + background-color: @base; +} + +#network, +#backlight, +#wireplumber, +#clock, +#battery, +#idle_inhibitor, +#bluetooth, +#custom-power, +#custom-notification{ + padding: 0 0.6rem; +} + +#network, +#wireplumber, +#backlight, +#bluetooth{ + margin:0px; +} +#backlight, +#bluetooth{ + border-radius:0px; +} +#wireplumber{ + border-radius: 0px 5px 5px 0px; +} + +#idle_inhibitor, +#clock, +#workspaces, +#custom-lizzy, +#custom-power, +#battery, +#custom-notification{ + border-radius: 5px; +} + +#idle_inhibitor.activated{ + color:#e57474; +} + +#custom-power{ + color:#c47fd5; + margin-right:10px; + padding-right:14px; +} diff --git a/chezmoi/dot_config/sway/executable_sway-bar.sh b/configs/waybar/sway-bar.sh similarity index 100% rename from chezmoi/dot_config/sway/executable_sway-bar.sh rename to configs/waybar/sway-bar.sh diff --git a/configs/waybar/themes/catppuccin-macchiato.css b/configs/waybar/themes/catppuccin-macchiato.css new file mode 100644 index 0000000..112ee32 --- /dev/null +++ b/configs/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; diff --git a/chezmoi/dot_config/wezterm/wezterm.lua b/configs/wezterm/wezterm.lua similarity index 87% rename from chezmoi/dot_config/wezterm/wezterm.lua rename to configs/wezterm/wezterm.lua index 1e573da..77322fb 100644 --- a/chezmoi/dot_config/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" diff --git a/configs/wlogout/icons/hibernate.svg b/configs/wlogout/icons/hibernate.svg new file mode 100644 index 0000000..efd5a33 --- /dev/null +++ b/configs/wlogout/icons/hibernate.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/configs/wlogout/icons/lock.svg b/configs/wlogout/icons/lock.svg new file mode 100644 index 0000000..94d0705 --- /dev/null +++ b/configs/wlogout/icons/lock.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/configs/wlogout/icons/logout.svg b/configs/wlogout/icons/logout.svg new file mode 100644 index 0000000..2eb4984 --- /dev/null +++ b/configs/wlogout/icons/logout.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/configs/wlogout/icons/reboot.svg b/configs/wlogout/icons/reboot.svg new file mode 100644 index 0000000..de9fdc2 --- /dev/null +++ b/configs/wlogout/icons/reboot.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/configs/wlogout/icons/shutdown.svg b/configs/wlogout/icons/shutdown.svg new file mode 100644 index 0000000..1579c48 --- /dev/null +++ b/configs/wlogout/icons/shutdown.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/configs/wlogout/icons/suspend.svg b/configs/wlogout/icons/suspend.svg new file mode 100644 index 0000000..ae26ba2 --- /dev/null +++ b/configs/wlogout/icons/suspend.svg @@ -0,0 +1,7 @@ + + + + + Svg Vector Icons : http://www.onlinewebfonts.com/icon + + diff --git a/configs/wlogout/layout b/configs/wlogout/layout new file mode 100644 index 0000000..3e4d2f4 --- /dev/null +++ b/configs/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" : "systemctl -i poweroff", + "text" : "Shutdown", + "keybind" : "s" +} +{ + "label" : "suspend", + "action" : "loginctl suspend", + "text" : "Suspend", + "keybind" : "u" +} +{ + "label" : "reboot", + "action" : "systemctl reboot", + "text" : "Reboot", + "keybind" : "r" +} diff --git a/configs/wlogout/style.css b/configs/wlogout/style.css new file mode 100644 index 0000000..c0cb003 --- /dev/null +++ b/configs/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/configs/wpaperd/config.toml b/configs/wpaperd/config.toml new file mode 100644 index 0000000..8f60270 --- /dev/null +++ b/configs/wpaperd/config.toml @@ -0,0 +1,13 @@ +[default] +duration = "10m" +mode = "center" +sorting = "random" + +[any] +path = "~/Pictures/Wallpapers/" + +[HDMI-A-1] +path = "~/Pictures/Wallpapers/Landscape/" + +[HDMI-A-2] +path = "~/Pictures/Wallpapers/Portrait/" diff --git a/chezmoi/dot_config/yazi/init.lua b/configs/yazi/init.lua similarity index 100% rename from chezmoi/dot_config/yazi/init.lua rename to configs/yazi/init.lua diff --git a/configs/yazi/keymap.toml b/configs/yazi/keymap.toml new file mode 100644 index 0000000..c20f2ca --- /dev/null +++ b/configs/yazi/keymap.toml @@ -0,0 +1,54 @@ +# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. +# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. +"$schema" = "https://yazi-rs.github.io/schemas/keymap.json" + +[mgr] + +prepend_keymap = [ + { on = [""], run = "escape --all", desc = "Exit visual mode, clear selected, or cancel search" }, + + # 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 = "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" }, + + # Operation + { 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" }, + + # 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" }, + { 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" }, + + { 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] +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" }] diff --git a/configs/yazi/package.toml b/configs/yazi/package.toml new file mode 100644 index 0000000..a548b83 --- /dev/null +++ b/configs/yazi/package.toml @@ -0,0 +1,19 @@ +[[plugin.deps]] +use = "yazi-rs/plugins:full-border" +rev = "1ab21d4" +hash = "3996fc74044bc44144b323686f887e1" + +[[plugin.deps]] +use = "Ape/simple-status" +rev = "d0da104" +hash = "68603fdd1dcaf415227e2c77a9317947" + +[[plugin.deps]] +use = "yazi-rs/plugins:smart-enter" +rev = "1ab21d4" +hash = "56fdabc96fc1f4d53c96eb884b02a5be" + +[[flavor.deps]] +use = "yazi-rs/flavors:catppuccin-macchiato" +rev = "d3fd3a5" +hash = "e6c5beeb1da3199355734273ee452a7f" diff --git a/chezmoi/dot_config/zed/themes/.keep b/configs/yazi/plugins/.keep similarity index 100% rename from chezmoi/dot_config/zed/themes/.keep rename to configs/yazi/plugins/.keep diff --git a/configs/yazi/theme.toml b/configs/yazi/theme.toml new file mode 100644 index 0000000..e0dfd86 --- /dev/null +++ b/configs/yazi/theme.toml @@ -0,0 +1,3 @@ +[flavor] +light = "catppuccin-macchiato" +dark = "catppuccin-macchiato" diff --git a/configs/yazi/yazi.toml b/configs/yazi/yazi.toml new file mode 100644 index 0000000..96b9bac --- /dev/null +++ b/configs/yazi/yazi.toml @@ -0,0 +1,184 @@ +# A TOML linter such as https://taplo.tamasfe.dev/ can use this schema to validate your config. +# If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. +"$schema" = "https://yazi-rs.github.io/schemas/yazi.json" + +[mgr] +ratio = [1, 3, 4] +sort_by = "natural" +sort_sensitive = 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}" + +[preview] +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" }] +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 = [ + # Folder + { name = "*/", use = ["edit", "open", "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"] }, + + # Image + { mime = "image/*", use = ["open", "upload_img"] }, + + # Media + { mime = "{audio,video}/*", use = ["play", "open", "reveal"] }, + { mime = "inode/x-empty", use = ["edit", "reveal"] }, + + # JSON + { mime = "application/json", use = ["edit", "reveal"] }, + { mime = "*/javascript", use = ["edit", "reveal"] }, + + # Empty file + { mime = "inode/x-empty", use = ["edit", "reveal"] }, + + # Fallback + { mime = "*", use = ["open", "reveal"] }, +] + +[tasks] +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" }, +] +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" }, +] +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" }, +] + +[input] +cursor_blink = false + +# cd +cd_title = "Change directory:" +cd_origin = "top-center" +cd_offset = [0, 2, 50, 3] + +# create +create_title = ["Create:", "Create (dir):"] +create_origin = "hovered" +create_offset = [0, 1, 50, 3] + +# rename +rename_title = "Rename:" +rename_origin = "hovered" +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] + +# delete +delete_title = "Delete {n} selected file{s} permanently? (y/N)" +delete_origin = "hovered" +delete_offset = [0, 2, 50, 3] + +# filter +filter_title = "Filter:" +filter_origin = "hovered" +filter_offset = [0, 2, 50, 3] + +# find +find_title = ["Find next:", "Find previous:"] +find_origin = "hovered" +find_offset = [0, 2, 50, 3] + +# search +search_title = "Search via {n}:" +search_origin = "hovered" +search_offset = [0, 2, 50, 3] + +# shell +shell_title = ["Shell:", "Shell (block):"] +shell_origin = "center" +shell_offset = [0, 2, 50, 3] + +# overwrite +overwrite_title = "Overwrite an existing file? (y/N)" +overwrite_origin = "center" +overwrite_offset = [0, 2, 50, 3] + +# quit +quit_title = "{n} task{s} running, sure to quit? (y/N)" +quit_origin = "center" +quit_offset = [0, 2, 50, 3] + +[pick] +open_title = "Open with:" +open_origin = "hovered" +open_offset = [0, 1, 50, 7] + +[which] +sort_by = "none" +sort_sensitive = false +sort_reverse = false +sort_translit = false 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/configs/zellij/config.kdl b/configs/zellij/config.kdl new file mode 100644 index 0000000..1d12d77 --- /dev/null +++ b/configs/zellij/config.kdl @@ -0,0 +1,465 @@ +// +// 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 { + 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 space" { SwitchToMode "normal"; } + } + pane { + 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 "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 "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 "c" { SearchToggleOption "CaseSensitivity"; } + bind "n" { Search "down"; } + bind "o" { SearchToggleOption "WholeWord"; } + bind "p" { Search "up"; } + bind "w" { SearchToggleOption "Wrap"; } + } + session { + 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" + } + } + 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 =" { 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 "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 "locked" "renametab" "renamepane" { + bind "Ctrl q" { Quit; } + } + shared_except "locked" "entersearch" { + bind "enter" { SwitchToMode "locked"; } + } + shared_except "locked" "entersearch" "renametab" "renamepane" "prompt" "tmux" { + bind "Ctrl space" { SwitchToMode "locked"; } + } + shared_except "locked" "entersearch" "renametab" "renamepane" { + bind "esc" { SwitchToMode "locked"; } + } + shared_except "locked" "entersearch" "renametab" "renamepane" "move" { + bind "m" { SwitchToMode "move"; } + } + shared_except "locked" "entersearch" "search" "renametab" "renamepane" "session" { + bind "o" { SwitchToMode "session"; } + } + 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 { + 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" + +// 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 +// that will be used by default if this option is not set. +// Examples: +// +// 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 automatic copying (and clearing) of selection when releasing mouse +// Default: true +// +// copy_on_select true + +// Path to the default editor to use to edit pane scrollbuffer +// Default: $EDITOR or $VISUAL +// scrollback_editor "/usr/bin/vim" + +// 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 +// +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/configs/zellij/layouts/code.kdl b/configs/zellij/layouts/code.kdl new file mode 100644 index 0000000..827ab05 --- /dev/null +++ b/configs/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/chezmoi/dot_config/zsh/aliases/aliases.zsh b/configs/zsh/.config/zsh/aliases/aliases.zsh similarity index 87% rename from chezmoi/dot_config/zsh/aliases/aliases.zsh rename to configs/zsh/.config/zsh/aliases/aliases.zsh index d0b7088..b3fa6e1 100644 --- a/chezmoi/dot_config/zsh/aliases/aliases.zsh +++ b/configs/zsh/.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" @@ -42,9 +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 tm="fzf-tmux-sessions" +alias \ + sysctl='sudo systemctl' \ + sysctl-user='systemctl --user' # Misc alias \ diff --git a/chezmoi/dot_config/zsh/aliases/configs.zsh b/configs/zsh/.config/zsh/aliases/configs.zsh similarity index 100% rename from chezmoi/dot_config/zsh/aliases/configs.zsh rename to configs/zsh/.config/zsh/aliases/configs.zsh diff --git a/chezmoi/dot_config/zsh/aliases/fzf.zsh b/configs/zsh/.config/zsh/aliases/fzf.zsh similarity index 100% rename from chezmoi/dot_config/zsh/aliases/fzf.zsh rename to configs/zsh/.config/zsh/aliases/fzf.zsh diff --git a/chezmoi/dot_config/zsh/aliases/nvim.zsh b/configs/zsh/.config/zsh/aliases/nvim.zsh similarity index 80% rename from chezmoi/dot_config/zsh/aliases/nvim.zsh rename to configs/zsh/.config/zsh/aliases/nvim.zsh index 5259ff9..9cdb4b1 100644 --- a/chezmoi/dot_config/zsh/aliases/nvim.zsh +++ b/configs/zsh/.config/zsh/aliases/nvim.zsh @@ -1,7 +1,6 @@ alias \ vi='nvim' \ - vi-astro='NVIM_APPNAME=Distro-AstroNvim nvim' \ - vi-lazy='NVIM_APPNAME=LazyVim nvim' + vi-unstable='NVIM_APPNAME=nvim_unstable nvim' vis() { items=( diff --git a/chezmoi/dot_config/zsh/aliases/pnpm.zsh b/configs/zsh/.config/zsh/aliases/pnpm.zsh similarity index 100% rename from chezmoi/dot_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 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/chezmoi/dot_config/zsh/completions/_alacritty b/configs/zsh/.config/zsh/completions/_alacritty similarity index 100% rename from chezmoi/dot_config/zsh/completions/_alacritty rename to configs/zsh/.config/zsh/completions/_alacritty diff --git a/chezmoi/dot_config/zsh/completions/_cargo b/configs/zsh/.config/zsh/completions/_cargo similarity index 100% rename from chezmoi/dot_config/zsh/completions/_cargo rename to configs/zsh/.config/zsh/completions/_cargo diff --git a/chezmoi/dot_config/zsh/completions/_chezmoi b/configs/zsh/.config/zsh/completions/_chezmoi similarity index 100% rename from chezmoi/dot_config/zsh/completions/_chezmoi rename to configs/zsh/.config/zsh/completions/_chezmoi diff --git a/chezmoi/dot_config/zsh/completions/_cht b/configs/zsh/.config/zsh/completions/_cht similarity index 100% rename from chezmoi/dot_config/zsh/completions/_cht rename to configs/zsh/.config/zsh/completions/_cht diff --git a/chezmoi/dot_config/zsh/completions/_globdots b/configs/zsh/.config/zsh/completions/_globdots similarity index 100% rename from chezmoi/dot_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 new file mode 100644 index 0000000..e84d9da --- /dev/null +++ b/configs/zsh/.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 diff --git a/chezmoi/dot_config/zsh/completions/_lsd b/configs/zsh/.config/zsh/completions/_lsd similarity index 100% rename from chezmoi/dot_config/zsh/completions/_lsd rename to configs/zsh/.config/zsh/completions/_lsd diff --git a/chezmoi/dot_config/zsh/completions/_rg b/configs/zsh/.config/zsh/completions/_rg similarity index 100% rename from chezmoi/dot_config/zsh/completions/_rg rename to configs/zsh/.config/zsh/completions/_rg diff --git a/chezmoi/dot_config/zsh/completions/_rtx b/configs/zsh/.config/zsh/completions/_rtx similarity index 100% rename from chezmoi/dot_config/zsh/completions/_rtx rename to configs/zsh/.config/zsh/completions/_rtx diff --git a/chezmoi/dot_config/zsh/completions/_rye b/configs/zsh/.config/zsh/completions/_rye similarity index 100% rename from chezmoi/dot_config/zsh/completions/_rye rename to configs/zsh/.config/zsh/completions/_rye diff --git a/chezmoi/dot_config/zsh/completions/_starship b/configs/zsh/.config/zsh/completions/_starship similarity index 100% rename from chezmoi/dot_config/zsh/completions/_starship rename to configs/zsh/.config/zsh/completions/_starship diff --git a/chezmoi/dot_config/zsh/completions/_tea b/configs/zsh/.config/zsh/completions/_tea similarity index 100% rename from chezmoi/dot_config/zsh/completions/_tea rename to configs/zsh/.config/zsh/completions/_tea diff --git a/chezmoi/dot_config/zsh/completions/_tldr b/configs/zsh/.config/zsh/completions/_tldr similarity index 100% rename from chezmoi/dot_config/zsh/completions/_tldr rename to configs/zsh/.config/zsh/completions/_tldr diff --git a/chezmoi/dot_config/zsh/completions/_zellij b/configs/zsh/.config/zsh/completions/_zellij similarity index 100% rename from chezmoi/dot_config/zsh/completions/_zellij rename to configs/zsh/.config/zsh/completions/_zellij diff --git a/chezmoi/dot_config/zsh/functions/fedora.zsh b/configs/zsh/.config/zsh/functions/fedora.zsh similarity index 100% rename from chezmoi/dot_config/zsh/functions/fedora.zsh rename to configs/zsh/.config/zsh/functions/fedora.zsh diff --git a/chezmoi/dot_config/zsh/functions/flatpak.zsh b/configs/zsh/.config/zsh/functions/flatpak.zsh similarity index 100% rename from chezmoi/dot_config/zsh/functions/flatpak.zsh rename to configs/zsh/.config/zsh/functions/flatpak.zsh diff --git a/chezmoi/dot_config/zsh/functions/functions.zsh b/configs/zsh/.config/zsh/functions/functions.zsh similarity index 88% rename from chezmoi/dot_config/zsh/functions/functions.zsh rename to configs/zsh/.config/zsh/functions/functions.zsh index 425aa0c..9e03b70 100644 --- a/chezmoi/dot_config/zsh/functions/functions.zsh +++ b/configs/zsh/.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" } diff --git a/chezmoi/executable_dot_zprofile.tmpl b/configs/zsh/.zprofile similarity index 51% rename from chezmoi/executable_dot_zprofile.tmpl rename to configs/zsh/.zprofile index c4db92a..d187318 100644 --- a/chezmoi/executable_dot_zprofile.tmpl +++ b/configs/zsh/.zprofile @@ -5,38 +5,37 @@ 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 -export OPENAI_API_KEY="{{ .openAIKey }}" + +# 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" -export ESLINT_USE_FLAT_CONFIG=true -. "$HOME/.cargo/env" +update_path "$PNPM_HOME" + +export BUN_INSTALL="$HOME/.bun" +update_path "$BUN_INSTALL/bin" + +# bun completions +[ -s "/home/aleidk/.bun/_bun" ] && source "/home/aleidk/.bun/_bun" + 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" +# . "$HOME/.cargo/env" 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 [[ $OSTYPE =~ 'darwin' ]]; then - eval "$(/opt/homebrew/bin/brew shellenv)" -fi diff --git a/chezmoi/executable_dot_zshrc b/configs/zsh/.zshrc similarity index 55% rename from chezmoi/executable_dot_zshrc rename to configs/zsh/.zshrc index 75a2f88..6dca07a 100644 --- a/chezmoi/executable_dot_zshrc +++ b/configs/zsh/.zshrc @@ -1,4 +1,3 @@ - # ╭──────────────────────────────────────────────────────────╮ # │ ZSH Config │ # ╰──────────────────────────────────────────────────────────╯ @@ -6,9 +5,14 @@ # ╭──────────────────────────────────────────────────────────╮ # │ Preoload stuff │ # ╰──────────────────────────────────────────────────────────╯ + # 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" @@ -19,77 +23,23 @@ 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 -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 │ # ╰──────────────────────────────────────────────────────────╯ @@ -105,38 +55,34 @@ 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:complete:cd:*' fzf-preview 'ls --color $realpath' -zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath' - - -# ╭──────────────────────────────────────────────────────────╮ -# │ 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)" -eval "$(mise activate zsh)" + +# . "$HOME/.atuin/bin/env" + +eval "$(atuin init zsh)" + +. "$HOME/.local/share/../bin/env" 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 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 + diff --git a/scripts/backup b/scripts/backup deleted file mode 100755 index 7a9c037..0000000 --- a/scripts/backup +++ /dev/null @@ -1,150 +0,0 @@ -#!/usr/bin/env bash - -set -Eeuo pipefail -shopt -s nullglob - -source "$DOTS/config/zsh/config/colors.zsh" && define_colors - -LOCAL_BACKUP_PATH="$HOME/Drives/Backups/auto-backups/" -REMOTE_BACKUP_PATH="auto-backups" -RCLONE_CLOUD_NAME="GDrive" - -DATE_FORMAT="+%F" - -# sources can be any rsync accepted path -SOURCES=( - "$HOME/Drives/Stuff/Pictures/" - "$HOME/Drives/Stuff/Music/" - "root@berry.net:/home/aleidk/services/" -) - -MAX_BACKUPS=10 - -ensure_path_exist() { - path="$1" - shift - - if [[ ! -d "$path" ]]; then - echo -e "Path ${RED}$path${RST} doesn't exist, ${GRN}creating...${RST}" - mkdir -p "$path" - fi -} - -backup() { - src="$1" - shift - dst="$LOCAL_BACKUP_PATH" - - name="$(basename "$src")" - dst="${dst}${name}" - date=$(date "$DATE_FORMAT") - - # Config - SNAP="${dst}/${date}" - LAST="${dst}/last" - PARTIAL="${dst}/.partial_${date}" - - # Check partial backups (failed) - - if [[ -d "$SNAP" && ! -d "$PARTIAL" ]]; then - echo -e "${MGN}${DIM}Backup for $date already crated, skiping...${RST}" - return - else - echo -e "Backing up ${BLU}$dst${RST}" - fi - - # shellcheck disable=2086 - rsync \ - --fake-super \ - --compress \ - --mkpath \ - --archive \ - --human-readable \ - --delete \ - --filter='dir-merge /.sync-exclude' \ - --exclude="**/.sync-exclude" \ - --partial \ - --partial-dir="$PARTIAL" \ - --info=none,progress2 \ - --link-dest="$LAST" \ - "$src" "$SNAP" - - # Update symlink to last backup - rm -f "$LAST" - ln -s "$SNAP" "$LAST" - - # clean failed backups - for dir in $dst/.partial_*; do - date="$(echo "$dir" | cut -d "_" -f 2)" - rm -r "$dir" "${dst:?}/${date}" - done - echo -e "" -} - -delete_old() { - src="$1" - shift - dst="$LOCAL_BACKUP_PATH" - - name="$(basename "$src")" - dst="${dst}${name}" - - bkp_count="$(fd -t d --exact-depth 1 . "$dst" | wc -l)" - - while [[ $bkp_count -gt $MAX_BACKUPS ]]; do - oldest_dir="$(fd -t d --exact-depth 1 . "$dst" | sort | head -n 1)" - - echo -e "Max backups exceed for ${BLU}$name${RST}, deleting ${RED}$(basename "$oldest_dir")${RST}..." - - rm -rf "$oldest_dir" - - bkp_count="$(fd -t d --exact-depth 1 . "${dst}" | wc -l)" - done - - echo "" -} - -sync() { - config="$(rclone config dump 2>/dev/null | jq ".$RCLONE_CLOUD_NAME // empty")" - - if [[ -z "$config" ]]; then - echo -e "${RED}${SHL}No Rclone configuration! skiping sync.${RST}${EHL}\n" - return - fi - - for dir in $LOCAL_BACKUP_PATH/*; do - name="$(basename "$dir")" - remote_path="${RCLONE_CLOUD_NAME}:${REMOTE_BACKUP_PATH}/${name}" - newest="$(fd -t d --exact-depth 1 . "$dir" | sort -r | head -n 1)" - today=$(date "$DATE_FORMAT") - - if [[ "$today" == "$(rclone cat "${remote_path}/.last-sync" 2>/dev/null)" ]]; then - echo -e "${MGN}${DIM}Last sync ${BLU}for${RST} $name was today, skiping...${RST}" - continue - else - echo -e "Syncthing latest backup for ${BLU}$name${RST} in ${RED}$remote_path${RST}" - fi - - rclone sync \ - --copy-links \ - --progress \ - --stats-one-line \ - "$newest" "$remote_path" - - echo "$today" | rclone rcat "${remote_path}/.last-sync" - done - - echo "" -} - -ensure_path_exist "$LOCAL_BACKUP_PATH" - -for path in "${SOURCES[@]}"; do - backup "$path" - delete_old "$path" -done - -# Sync to MEGA -# sync - -echo -e "${GRN}Backups done!${RST}" diff --git a/scripts/check-dependencies b/scripts/check-dependencies deleted file mode 100755 index 78c4320..0000000 --- a/scripts/check-dependencies +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env bash - -set -Eeuo pipefail - -# Return 1 if any of the arguments is missing - -for dep in "$@"; do - if ! (command -v "$dep" &>/dev/null || systemctl -q list-unit-files "${dep}.service" &>/dev/null); then - echo -e "${dep} not found!" - exit 1 - fi -done diff --git a/scripts/check-tools b/scripts/check-tools deleted file mode 100755 index 4188c4d..0000000 --- a/scripts/check-tools +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env bash -source "${DOTS}/config/zsh/config/colors.zsh" -define_colors - -# linux cli/tui tools and apps that i use - -declare -A tools -tools=( - [alacritty]=" --version" - [bat]="󰭟 --version" - [btop]=" --version" - [dust]=" --version" - [exa]=" --version" - [fd]="--version" - [fzf]="c --version" - [git]=" --version" - [librewolf]=" --version" - [mpv]=" --version" - [neofetch]=" --version" - [nvim]=" --version" - [rg]=" --version" - [starship]="󱓞 --version" - [tldr]=" --version" - [tmux]=" -V" - [zsh]=" --version" -) - -mapfile -t sorted_tools < <(echo "${!tools[@]}" | tr ' ' '\n' | sort) -printf "${BLD}%-18s %-10s %-10s\n" "Tools" "Status" "Version" -printf "%s\n${RST}" "-----------------------------------------------" - -for tool in "${sorted_tools[@]}"; do - IFS=' ' read -r -a tool_data <<<"${tools[$tool]}" - if command -v "$tool" &>/dev/null; then - version=$("$tool" "${tool_data[1]}" 2>/dev/null | awk '{ - for (i = 1; i <= NF; i++) { - if ($i ~ /[0-9]+.[0-9]+([.][0-9]+)?/) { - print $i; - exit; - } - } - }') - printf "${BLU}${tool_data[0]}${RST}${BLD} %-18s ${GRN}%-10s ${RST}${YLW}%-10s\n${RST}" \ - "$tool" "" "$version" - else - printf "${CYN}${tool_data[0]}${RST}${BLD} %-18s ${RED}%-10s ${BLK}%-10s\n${RST}" \ - "$tool" "" "command not found" - fi -done diff --git a/scripts/cloud_sync b/scripts/cloud_sync deleted file mode 100755 index 570191e..0000000 --- a/scripts/cloud_sync +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env bash - -RCLONE_CLOUD_NAME='GDrive' - -declare -A SOURCES -# key local, value remote -SOURCES["$HOME/Drives/Stuff/Pictures"]="/01_Personal/01_Pictures" -SOURCES["$HOME/Drives/Stuff/Music"]="/01_Personal/02_Music" -SOURCES["$HOME/Drives/Backups/auto-backups/services/last"]="/80_Backups/Services" - -config="$(rclone config dump 2>/dev/null | jq ".$RCLONE_CLOUD_NAME // empty")" - -if [[ -z "$config" ]]; then - echo -e "${RED}${SHL}No Rclone configuration! skiping sync.${RST}${EHL}\n" - return -fi - -for i in "${!SOURCES[@]}"; do - local=$i - remote=${SOURCES[$i]} - - rclone bisync \ - --copy-links \ - --progress \ - --resync \ - --stats-one-line \ - "$local" "${RCLONE_CLOUD_NAME}:${remote}" -done diff --git a/scripts/download-mega-extract b/scripts/download-mega-extract deleted file mode 100755 index 0c6b197..0000000 --- a/scripts/download-mega-extract +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash - -format=$1 -shift -path=$1 -shift -link=$1 -shift - -check-dependencies megatools zenity unzip - -if [[ -z $link ]]; then - echo "A link from mega is required" - exit 1 -fi - -if [[ -z $path ]]; then - path="$(zenity --file-selection --directory)" -fi - -if [[ -z $path ]]; then - path="$(zenity --file-selection --directory)" -fi - -extract_zip() { - file_path="$path/$file" - unzip -q -d "$path" "$file_path" - rm "$file_path" -} - -echo "Downloading file..." - -file="$(megatools dl --no-progress --print-names --path "$path" "$link")" - -case "$format" in -zip) - extract_zip "$file" - ;; -*) - echo default - ;; -esac - -echo "Done!" diff --git a/scripts/fzf-dnf b/scripts/fzf-dnf deleted file mode 100755 index ca01278..0000000 --- a/scripts/fzf-dnf +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/bash -readonly basename="$(basename "$0")" - -if ! hash fzf &> /dev/null; then - printf 'Error: Missing dep: fzf is required to use %s.\n' "${basename}" >&2 - exit 64 -fi - -#Colors -declare -r esc=$'\033' -declare -r BLUE="${esc}[1m${esc}[34m" -declare -r RED="${esc}[31m" -declare -r GREEN="${esc}[32m" -declare -r YELLOW="${esc}[33m" -declare -r CYAN="${esc}[36m" -# Base commands -readonly QRY="dnf --cacheonly --quiet repoquery " -readonly PRVW="dnf --cacheonly --quiet --color=always info" -readonly QRY_PRFX=' ' -readonly QRY_SFFX=' > ' -# Install mode -readonly INS_QRYS="${QRY} --qf '${CYAN}%{name}'" -readonly INS_PRVW="${PRVW}" -readonly INS_PRMPT="${CYAN}${QRY_PRFX}Install packages${QRY_SFFX}" -# Remove mode -readonly RMV_QRYS="${QRY} --installed --qf '${RED}%{name}'" -readonly RMV_PRVW="${PRVW} --installed" -readonly RMV_PRMPT="${RED}${QRY_PRFX}Remove packages${QRY_SFFX}" -# Remove-userinstalled mode -readonly RUI_QRYS="${QRY} --userinstalled --qf '${YELLOW}%{name}'" -readonly RUI_PRVW="${PRVW} --installed" -readonly RUI_PRMPT="${YELLOW}${QRY_PRFX}Remove User-Installed${QRY_SFFX}" -# Updates mode -readonly UPD_QRY="${QRY} --upgrades --qf '${GREEN}%{name}'" -readonly UPD_QRYS="if [[ $(${UPD_QRY} | wc -c) -ne 0 ]]; then ${UPD_QRY}; else echo ${GREEN}No updates available.; echo Try refreshing metadata cache...; fi" -readonly UPD_PRVW="${PRVW}" -readonly UPD_PRMPT="${GREEN}${QRY_PRFX}Upgrade packages${QRY_SFFX}" - -mapfile -d '' fhelp <<-EOF - - "${basename}" - Interactive package manager for Fedora - - Alt-i Install mode (default) - Alt-r Remove mode - Alt-e Remove User-Installed mode - Alt-u Updates mode - Alt-m Update package metadata cache - - Enter Confirm selection - Tab Mark package () - Shift-Tab Unmark package - Ctrl-a Select all - - ? Help (this page) - ESC Quit -EOF - -declare tmp_file -if tmp_file="$(mktemp --tmpdir "${basename}".XXXXXX)"; then - printf 'in' > "${tmp_file}" && - SHELL='/bin/bash' \ - FZF_DEFAULT_COMMAND="${INS_QRYS}" \ - fzf \ - --ansi \ - --multi \ - --query=$* \ - --header=" ${basename} | Press Alt+? for help or ESC to quit" \ - --header-first \ - --prompt="${INS_PRMPT}" \ - --marker=' ' \ - --preview-window='right,67%,wrap' \ - --preview="${INS_PRVW} {1}" \ - --bind="enter:execute(if grep -q 'in' \"${tmp_file}\"; then sudo dnf install {+}; - elif grep -q 'rm' \"${tmp_file}\"; then sudo dnf remove {+}; \ - elif grep -q 'up' \"${tmp_file}\"; then sudo dnf upgrade {+}; fi; \ - read -s -r -n1 -p $'\n${BLUE}Press any key to continue...' && printf '\n')" \ - --bind="alt-i:unbind(alt-i)+reload(${INS_QRYS})+change-preview(${INS_PRVW} {1})+change-prompt(${INS_PRMPT})+execute-silent(printf 'in' > \"${tmp_file}\")+first+rebind(alt-r,alt-e,alt-u)" \ - --bind="alt-r:unbind(alt-r)+reload(${RMV_QRYS})+change-preview(${RMV_PRVW} {1})+change-prompt(${RMV_PRMPT})+execute-silent(printf 'rm' > \"${tmp_file}\")+first+rebind(alt-i,alt-e,alt-u)" \ - --bind="alt-e:unbind(alt-e)+reload(${RUI_QRYS})+change-preview(${RUI_PRVW} {1})+change-prompt(${RUI_PRMPT})+execute-silent(printf 'rm' > \"${tmp_file}\")+first+rebind(alt-i,alt-r,alt-u)" \ - --bind="alt-u:unbind(alt-u)+reload(${UPD_QRYS})+change-preview(${UPD_PRVW} {1})+change-prompt(${UPD_PRMPT})+execute-silent(printf 'up' > \"${tmp_file}\")+first+rebind(alt-i,alt-r,alt-e)" \ - --bind="alt-m:execute(sudo dnf makecache;read -s -r -n1 -p $'\n${BLUE}Press any key to continue...' && printf '\n')" \ - --bind="alt-?:preview(printf \"${fhelp[0]}\")" \ - --bind="ctrl-a:select-all" - - rm -f "${tmp_file}" &> /dev/null -else - printf 'Error: Failed to create tmp file. $TMPDIR (or /tmp if $TMPDIR is unset) may not be writable.\n' >&2 - exit 65 -fi diff --git a/scripts/fzf-fj b/scripts/fzf-fj deleted file mode 100755 index 4b06626..0000000 --- a/scripts/fzf-fj +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -# ╭──────────────────────────────────────────────────────────╮ -# │ Interactivie Issue management of forgejo │ -# ╰──────────────────────────────────────────────────────────╯ - -host="git.alecodes.page" -repo="$(git remote get-url origin | rev | cut -d '/' -f -2 | rev | cut -d '.' -f 1)" -cache="$(mktemp --directory)" - -# --preview "[[ -e $cache/{1}.md ]] && bat $cache/{1}.md || fj --host $host issue view \"${repo}$(echo {1} | tr -d ':')\" | tee $cache/{1}.md" \ - -# TODO: Add more keybindings to interact with issues -fj --host "$host" issue search --repo "$repo" | tail -n +2 | - fzf \ - --preview "id=\"$(echo "{1}" | tr -cd "[:digit:]")\"; [[ -e $cache/$id ]] && bat $cache/$id || fj --host $host issue view ${repo}#$id | tee $cache/$id" \ - --bind "ctrl-r:execute-silent(rm -f $cache/{1})+refresh-preview" \ - --bind "ctrl-o:execute-silent(tea open {1})" - -rm -rf "$cache" diff --git a/scripts/fzf-flatpak b/scripts/fzf-flatpak deleted file mode 100755 index 39a3522..0000000 --- a/scripts/fzf-flatpak +++ /dev/null @@ -1,175 +0,0 @@ -#!/usr/bin/env sh -# CLR=$(for i in {0..7}; do echo "tput setaf $i"; done) -BLK=\$(tput setaf 0); RED=\$(tput setaf 1); GRN=\$(tput setaf 2); YLW=\$(tput setaf 3); BLU=\$(tput setaf 4); -MGN=\$(tput setaf 5); CYN=\$(tput setaf 6); WHT=\$(tput setaf 7); BLD=\$(tput bold); RST=\$(tput sgr0); - -AWK_COLOR_VAR=" -v BLK=${BLK} -v RED=${RED} -v GRN=${GRN} -v YLW=${YLW} -v BLU=${BLU} -v MGN=${MGN} -v CYN=${CYN} -v WHT=${WHT} -v BLD=${BLD} -v RST=${RST}" - -FZF_FLATPAK_HELP="$( - cat <<-EOF - - ${BLU}${BLD}Fzf-Flatpak.sh - - ${BLU}${BLD}M-f M-i ${RST}${CYN}Install apps (flathub repo) - ${BLU}${BLD}M-f M-u ${RST}${CYN}Uninstall apps - ${BLU}${BLD}M-f M-r ${RST}${CYN}Run apps - - ${BLU}${BLD}M-? ${RST}${CYN}Help (this page) - ${BLU}${BLD}ESC ${RST}${CYN}Exit -EOF -)" - -if [[ $- =~ i ]]; then - #----------------------------------------------------------------------------------------------------------------------------------------------------------------- - _fzf_flatpak_fzf() { - fzf-tmux -p85% -- \ - --tiebreak=begin \ - -m --ansi --nth=1.. \ - --color='header:italic:underline' \ - --color='fg+:blue,border:blue' \ - --layout=reverse --height=50% --border \ - --preview-window "nohidden,50%,<50(down,60%,border-rounded)" \ - --bind "del:execute(flatpak remove --unused > /dev/tty; read -r)" \ - --bind="alt-?:preview(printf \"${FZF_FLATPAK_HELP}\")" "$@" - } - - _fzf_flatpak_check() { - which flatpak > /dev/null 2>&1 && return - - [[ -n $TMUX ]] && tmux display-message "Flatpak Isn't Installed" - return 1 - } - - __fzf_flatpak=${BASH_SOURCE[0]:-${(%):-%x}} - __fzf_flatpak=$(readlink -f "$__fzf_flatpak" 2> /dev/null || /usr/bin/ruby --disable-gems -e 'puts File.expand_path(ARGV.first)' "$__fzf_flatpak" 2> /dev/null) - - _fzf_flatpak_install() { - _fzf_flatpak_check || return - flatpak remote-ls flathub --cached --columns=app,name,description 2>/dev/null \ - | awk -v cyn=$(tput setaf 6) -v blu=$(tput setaf 4) -v bld=$(tput bold) -v res=$(tput sgr0) \ - '{ - app_info=""; - for(i=3;i<=NF;i++){ - app_info=app_info" "$i - }; print blu bld $2" -" res cyn app_info "|" $1}' \ - | column -t -s "|" -R 3 \ - | _fzf_flatpak_fzf \ - --prompt=" Install > " \ - --header=$'M-u: Update / Del: Remove Unused \n\n' \ - --preview "flatpak --system remote-info flathub {-1} | awk $AWK_COLOR_VAR -F\":\" '{print YLW BLD \$1 RST MGN \$2}'" \ - --bind="alt-u:execute(flatpak update > /dev/tty; read -r)" \ - --bind="alt-m:change-preview(flatpak metadata {-1})" \ - --bind "enter:execute(flatpak install flathub {+-1} > /dev/tty)+clear-screen" "$@" - } - - # _fzf_flatpak_remotes?() { - # flatpak remotes --columns=name | tail -n +1 - # } - - # _fzf_flatpak_format_installed_lists() { - # local color1 color2 bold reset - # color1="$1" - # color2="$2" - # bold="$(tput bold)" - # reset="$(tput sgr0)" - # awk -v c1="$color1" -v c2="$color2" -v bld="$bold" -v res="$reset" \ - # '{ - # app_id=""; - # for(i=2;i<=NF;i++){ - # app_id=app_id" "$i - # }; print bld c1 app_id " && - " res c2 $1}' \ - # | column -t -s "&&" - # } - - _fzf_flatpak_installed_lists() { - awk -v cyn=$(tput setaf 6) -v blu=$(tput setaf 4) -v bld=$(tput bold) -v res=$(tput sgr0) \ - '{ - app_id=""; - for(i=2;i<=NF;i++){ - app_id=app_id" "$i - }; print bld cyn app_id " && - " res blu $1}' \ - | column -t -s "&&" - } - - _fzf_flatpak_uninstall_lists() { - awk -v mgn=$(tput setaf 5) -v red=$(tput setaf 1) -v bld=$(tput bold) -v res=$(tput sgr0) \ - '{ - app_id=""; - for(i=2;i<=NF;i++){ - app_id=app_id" "$i - }; print bld mgn app_id " && - " res red $1}' \ - | column -t -s "&&" - } - - _fzf_flatpak_installed_lists-applications() { - flatpak list --app --columns=application,name | _fzf_flatpak_installed_lists - } - - _fzf_flatpak_uninstall_lists_with_runtimes() { - flatpak list --columns=application,name | _fzf_flatpak_uninstall_lists - } - - # `flatpak run` only accepts one argument so it isn't possible to run multiple apps - _fzf_flatpak_fzf_installed_lists() { - _fzf_flatpak_fzf \ - --header=$'M-u: Uninstall / Del: Remove Unused / F4: Kill / M-r: Run\n\n' \ - --bind "f4:execute(flatpak kill {+-1})" \ - --bind "alt-r:change-prompt( Run > )+execute-silent(touch /tmp/run && rm -r /tmp/uns)" \ - --bind "alt-u:change-prompt( Uninstall > )+execute-silent(touch /tmp/uns && rm -r /tmp/run)" \ - --bind "enter:execute( - if [ -f /tmp/uns ]; then - flatpak uninstall {+-1} > /dev/tty; - elif [ -f /tmp/run ]; then - flatpak run {-1} > /dev/null; - fi - )" "$@" - rm -f /tmp/{uns,run} &> /dev/null - } - - _fzf_flatpak_uninstall() { - _fzf_flatpak_check || return - touch /tmp/uns - _fzf_flatpak_uninstall_lists_with_runtimes | _fzf_flatpak_fzf_installed_lists \ - --prompt=" Uninstall > " \ - --preview "flatpak info {-1} | awk $AWK_COLOR_VAR -F\":\" '{print RED BLD \$1 RST MGN \$2}'" \ - } - - _fzf_flatpak_run_apps() { - _fzf_flatpak_check || return - touch /tmp/run - _fzf_flatpak_installed_lists-applications | _fzf_flatpak_fzf_installed_lists \ - --prompt=" Run > " \ - --preview "flatpak info {-1} | awk $AWK_COLOR_VAR -F\":\" '{print CYN BLD \$1 RST BLU \$2}'" \ - } - - if [[ -n "${BASH_VERSION:-}" ]]; then - __fzf_flatpak_init() { - bind '"\er": redraw-current-line' - local o - for o in "$@"; do - bind '"\M-f\M-'${o:0:1}'": "`_fzf_flatpak_'$o'`\e\M-e\er"' - bind '"\M-f'${o:0:1}'": "`_fzf_flatpak_'$o'`\e\M-e\er"' - done - } - elif [[ -n "${ZSH_VERSION:-}" ]]; then - __fzf_flatpak_join() { - local item - while read item; do - echo -n "${(q)item} " - done - } - - __fzf_flatpak_init() { - local o - zle - for o in "$@"; do - eval "fzf-flatpak-$o-widget() { local result=\$(_fzf_flatpak_$o | __fzf_flatpak_join); zle && { zle reset-prompt; zle -R }; LBUFFER+=\$result }" - eval "zle -N fzf-flatpak-$o-widget" - eval "bindkey '^[f^[${o[1]}' fzf-flatpak-$o-widget" - eval "bindkey '^[f[${o[1]}' fzf-flatpak-$o-widget" - done - } - fi - __fzf_flatpak_init install uninstall run_apps - #----------------------------------------------------------------------------------------------------------------------------------------------------------------- -fi diff --git a/scripts/fzf-nf-icon b/scripts/fzf-nf-icon deleted file mode 100755 index 0f9feb5..0000000 --- a/scripts/fzf-nf-icon +++ /dev/null @@ -1,30 +0,0 @@ -#!/usr/bin/env bash -if [ "$(uname -s)" == "Linux" ]; then - NF_LS_DIR="$HOME/.cache/fzf/nf-ls" -elif [ "$(uname -s)" == "Darwin" ]; then - NF_LS_DIR="/Library/Caches/fzf/nf-ls" -fi - -get_nf_cheat_sheets() { - echo -ne "$( - curl -s https://www.nerdfonts.com/cheat-sheet | - grep -o '
.*
' | - 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