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/.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/.stylua.toml b/.stylua.toml index f0f7a59..c38f62a 100644 --- a/.stylua.toml +++ b/.stylua.toml @@ -1,7 +1,7 @@ syntax = "All" column_width = 120 line_endings = "Unix" -indent_type = "indent_type" +indent_type = "Spaces" indent_width = 2 quote_style = "AutoPreferDouble" call_parentheses = "Always" diff --git a/Configs/foot/.config/foot/foot.ini b/Configs/foot/.config/foot/foot.ini deleted file mode 100644 index dc7c809..0000000 --- a/Configs/foot/.config/foot/foot.ini +++ /dev/null @@ -1,197 +0,0 @@ -# -*- conf -*- - -# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd) -# term=foot (or xterm-256color if built with -Dterminfo=disabled) -# login-shell=no - -include=~/.config/foot/themes/catppuccin/catppuccin-macchiato.conf - -# app-id=foot -# title=foot -# locked-title=no - -font=JetBrainsMono NF:style=Regular:size=11 -font-bold=JetBrainsMono NF:style=Bold:size=11 -font-italic=JetBrainsMono NF:style=Italic:size=11 -font-bold-italic=JetBrainsMono NF:style=Bold Italic:size=11 -# line-height= -# letter-spacing=0 -# horizontal-letter-offset=0 -# vertical-letter-offset=0 -# underline-offset= -# box-drawings-uses-font-glyphs=no -# dpi-aware=auto - -# initial-window-size-pixels=700x500 # Or, -# initial-window-size-chars= -# initial-window-mode=windowed -pad=10x10 -# resize-delay-ms=100 - -# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body} - -# bold-text-in-bright=no -# word-delimiters=,│`|:"'()[]{}<> -# selection-target=primary -# workers= - -[environment] -# name=value - -[bell] -# urgent=no -# notify=no -# command= -# command-focused=no - -[scrollback] -# lines=1000 -# multiplier=3.0 -# indicator-position=relative -# indicator-format= - -[url] -# launch=xdg-open ${url} -# label-letters=sadfjklewcmpgh -# osc8-underline=url-mode -# protocols=http, https, ftp, ftps, file, gemini, gopher -# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[] - -[cursor] -# style=block -# color= -# blink=no -# beam-thickness=1.5 -# underline-thickness= - -[mouse] -# hide-when-typing=no -# alternate-scroll-mode=yes - -[colors] -alpha=0.9 -# foreground=dcdccc -# background=111111 - -## Normal/regular colors (color palette 0-7) -# regular0=222222 # black -# regular1=cc9393 # red -# regular2=7f9f7f # green -# regular3=d0bf8f # yellow -# regular4=6ca0a3 # blue -# regular5=dc8cc3 # magenta -# regular6=93e0e3 # cyan -# regular7=dcdccc # white - -## Bright colors (color palette 8-15) -# bright0=666666 # bright black -# bright1=dca3a3 # bright red -# bright2=bfebbf # bright green -# bright3=f0dfaf # bright yellow -# bright4=8cd0d3 # bright blue -# bright5=fcace3 # bright magenta -# bright6=b3ffff # bright cyan -# bright7=ffffff # bright white - -## dimmed colors (see foot.ini(5) man page) -# dim0= -# ... -# dim7= - -## The remaining 256-color palette -# 16 = <256-color palette #16> -# ... -# 255 = <256-color palette #255> - -## Misc colors -# selection-foreground= -# selection-background= -# jump-labels= # black-on-yellow -# scrollback-indicator= # black-on-bright-blue -# search-box-no-match= # black-on-red -# search-box-match= # black-on-yellow -# urls= - -[csd] -preferred=none -# size=26 -# font= -# color= -# hide-when-typing=no -# border-width=0 -# border-color= -# button-width=26 -# button-color= -# button-minimize-color= -# button-maximize-color= -# button-close-color= - -[key-bindings] -# scrollback-up-page=Shift+Page_Up -# scrollback-up-half-page=none -# scrollback-up-line=none -# scrollback-down-page=Shift+Page_Down -# scrollback-down-half-page=none -# scrollback-down-line=none -# clipboard-copy=Control+Shift+c XF86Copy -# clipboard-paste=Control+Shift+v XF86Paste -# primary-paste=Shift+Insert -# search-start=Control+Shift+r -# font-increase=Control+plus Control+equal Control+KP_Add -# font-decrease=Control+minus Control+KP_Subtract -# font-reset=Control+0 Control+KP_0 -# spawn-terminal=Control+Shift+n -# minimize=none -# maximize=none -# fullscreen=none -# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none -# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none -# pipe-selected=[xargs -r firefox] none -# show-urls-launch=Control+Shift+u -# show-urls-copy=none -# show-urls-persistent=none -# prompt-prev=Control+Shift+z -# prompt-next=Control+Shift+x -# unicode-input=none -# noop=none - -[search-bindings] -# cancel=Control+g Control+c Escape -# commit=Return -# find-prev=Control+r -# find-next=Control+s -# cursor-left=Left Control+b -# cursor-left-word=Control+Left Mod1+b -# cursor-right=Right Control+f -# cursor-right-word=Control+Right Mod1+f -# cursor-home=Home Control+a -# cursor-end=End Control+e -# delete-prev=BackSpace -# delete-prev-word=Mod1+BackSpace Control+BackSpace -# delete-next=Delete -# delete-next-word=Mod1+d Control+Delete -# extend-to-word-boundary=Control+w -# extend-to-next-whitespace=Control+Shift+w -# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste -# primary-paste=Shift+Insert -# unicode-input=none - -[url-bindings] -# cancel=Control+g Control+c Control+d Escape -# toggle-url-visible=t - -[text-bindings] -# \x03=Mod4+c # Map Super+c -> Ctrl+c - -[mouse-bindings] -# selection-override-modifiers=Shift -# primary-paste=BTN_MIDDLE -# select-begin=BTN_LEFT -# select-begin-block=Control+BTN_LEFT -# select-extend=BTN_RIGHT -# select-extend-character-wise=Control+BTN_RIGHT -# select-word=BTN_LEFT-2 -# select-word-whitespace=Control+BTN_LEFT-2 -# select-row=BTN_LEFT-3 - -# vim: ft=dosini diff --git a/Configs/foot/.config/foot/themes/catppuccin/LICENSE b/Configs/foot/.config/foot/themes/catppuccin/LICENSE deleted file mode 100644 index 006383b..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2021 Catppuccin - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Configs/foot/.config/foot/themes/catppuccin/README.md b/Configs/foot/.config/foot/themes/catppuccin/README.md deleted file mode 100644 index c5c1821..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/README.md +++ /dev/null @@ -1,32 +0,0 @@ -

- Logo
- - Catppuccin for Foot - -

- -

- - - -

- -

- -

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

-

Copyright © 2021-present Catppuccin Org -

diff --git a/Configs/foot/.config/foot/themes/catppuccin/assets/foot.png b/Configs/foot/.config/foot/themes/catppuccin/assets/foot.png deleted file mode 100644 index d70b151..0000000 Binary files a/Configs/foot/.config/foot/themes/catppuccin/assets/foot.png and /dev/null differ diff --git a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-frappe.conf b/Configs/foot/.config/foot/themes/catppuccin/catppuccin-frappe.conf deleted file mode 100644 index b345283..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-frappe.conf +++ /dev/null @@ -1,19 +0,0 @@ -[colors] -foreground=c6d0f5 # Text -background=303446 # Base -regular0=51576d # Surface 1 -regular1=e78284 # red -regular2=a6d189 # green -regular3=e5c890 # yellow -regular4=8caaee # blue -regular5=f4b8e4 # pink -regular6=81c8be # teal -regular7=b5bfe2 # Subtext 1 -bright0=626880 # Surface 2 -bright1=e78284 # red -bright2=a6d189 # green -bright3=e5c890 # yellow -bright4=8caaee # blue -bright5=f4b8e4 # pink -bright6=81c8be # teal -bright7=a5adce # Subtext 0 diff --git a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-latte.conf b/Configs/foot/.config/foot/themes/catppuccin/catppuccin-latte.conf deleted file mode 100644 index 94f571b..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-latte.conf +++ /dev/null @@ -1,19 +0,0 @@ -[colors] -foreground=4c4f69 # Text -background=eff1f5 # Base -regular0=5c5f77 # Subtext 1 -regular1=d20f39 # red -regular2=40a02b # green -regular3=df8e1d # yellow -regular4=1e66f5 # blue -regular5=ea76cb # pink -regular6=179299 # teal -regular7=acb0be # Surface 2 -bright0=6c6f85 # Subtext 0 -bright1=d20f39 # red -bright2=40a02b # green -bright3=df8e1d # yellow -bright4=1e66f5 # blue -bright5=ea76cb # pink -bright6=179299 # teal -bright7=bcc0cc # Surface 1 diff --git a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-macchiato.conf b/Configs/foot/.config/foot/themes/catppuccin/catppuccin-macchiato.conf deleted file mode 100644 index 934c1cb..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-macchiato.conf +++ /dev/null @@ -1,19 +0,0 @@ -[colors] -foreground=cad3f5 # Text -background=24273a # Base -regular0=494d64 # Surface 1 -regular1=ed8796 # red -regular2=a6da95 # green -regular3=eed49f # yellow -regular4=8aadf4 # blue -regular5=f5bde6 # pink -regular6=8bd5ca # teal -regular7=b8c0e0 # Subtext 1 -bright0=5b6078 # Surface 2 -bright1=ed8796 # red -bright2=a6da95 # green -bright3=eed49f # yellow -bright4=8aadf4 # blue -bright5=f5bde6 # pink -bright6=8bd5ca # teal -bright7=a5adcb # Subtext 0 diff --git a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-mocha.conf b/Configs/foot/.config/foot/themes/catppuccin/catppuccin-mocha.conf deleted file mode 100644 index 7fa18ed..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/catppuccin-mocha.conf +++ /dev/null @@ -1,19 +0,0 @@ -[colors] -foreground=cdd6f4 # Text -background=1e1e2e # Base -regular0=45475a # Surface 1 -regular1=f38ba8 # red -regular2=a6e3a1 # green -regular3=f9e2af # yellow -regular4=89b4fa # blue -regular5=f5c2e7 # pink -regular6=94e2d5 # teal -regular7=bac2de # Subtext 1 -bright0=585b70 # Surface 2 -bright1=f38ba8 # red -bright2=a6e3a1 # green -bright3=f9e2af # yellow -bright4=89b4fa # blue -bright5=f5c2e7 # pink -bright6=94e2d5 # teal -bright7=a6adc8 # Subtext 0 diff --git a/Configs/foot/.config/foot/themes/catppuccin/dot_editorconfig b/Configs/foot/.config/foot/themes/catppuccin/dot_editorconfig deleted file mode 100644 index d86ac02..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/dot_editorconfig +++ /dev/null @@ -1,34 +0,0 @@ -# EditorConfig helps developers define and maintain consistent -# coding styles between different editors and IDEs -# EditorConfig is awesome: https://EditorConfig.org - -root = true - -[*] -charset = utf-8 -indent_size = 2 -indent_style = space -end_of_line = lf -insert_final_newline = true -trim_trailing_whitespace = true - -# go -[*.go] -indent_style = tab -indent_size = 4 - -# python -[*.{ini,py,py.tpl,rst}] -indent_size = 4 - -# rust -[*.rs] -indent_size = 4 - -# documentation, utils -[*.{md,mdx,diff}] -trim_trailing_whitespace = false - -# windows shell scripts -[*.{cmd,bat,ps1}] -end_of_line = crlf diff --git a/Configs/foot/.config/foot/themes/catppuccin/dot_git b/Configs/foot/.config/foot/themes/catppuccin/dot_git deleted file mode 100644 index d893b83..0000000 --- a/Configs/foot/.config/foot/themes/catppuccin/dot_git +++ /dev/null @@ -1 +0,0 @@ -gitdir: ../../../../.git/modules/config/foot/themes/catppuccin diff --git a/Configs/helix/.config/helix/config.toml b/Configs/helix/.config/helix/config.toml deleted file mode 100644 index f1a4ddf..0000000 --- a/Configs/helix/.config/helix/config.toml +++ /dev/null @@ -1,65 +0,0 @@ -theme = "catppuccin_macchiato" - -[keys.normal.g] -u = "switch_to_lowercase" -U = "switch_to_uppercase" - -# LSP actions -[keys.normal.space.l] -j = "goto_next_diag" -k = "goto_prev_diag" - -# Git -[keys.normal.space.g] -g = [ - ":new", - ":insert-output lazygit", - ":buffer-close!", - ":redraw", - ":reload-all" -] - -[keys.normal.space] -e = [ - ':sh rm -f /tmp/unique-file', - ':insert-output yazi %{buffer_name} --chooser-file=/tmp/unique-file', - ':insert-output echo "\x1b[?1049h\x1b[?2004h" > /dev/tty', - ':open %sh{/bin/cat /tmp/unique-file}', - ':redraw', -] - -[editor] -line-number = "relative" -cursorline = true -color-modes = true -scrolloff = 15 -default-yank-register = "*" -bufferline = "multiple" -popup-border = "all" - - -[editor.cursor-shape] -insert = "bar" -normal = "block" -select = "underline" - -[editor.indent-guides] -render = true - -[editor.statusline] -left = ["mode", "spacer", "version-control", "file-type", "file-name","file-modification-indicator", "read-only-indicator", "spinner"] -center = [] -right = ["diagnostics", "position-percentage"] -mode.normal = "" -mode.insert = "" -mode.select = "" - -[editor.file-picker] -hidden = false - -[editor.lsp] -display-inlay-hints = true - -[editor.inline-diagnostics] -cursor-line = "hint" -other-lines = "error" diff --git a/Configs/helix/.config/helix/languages.toml b/Configs/helix/.config/helix/languages.toml deleted file mode 100644 index 036911f..0000000 --- a/Configs/helix/.config/helix/languages.toml +++ /dev/null @@ -1,3 +0,0 @@ - -[[language]] -name = "rust" diff --git a/Configs/kitty/.config/kitty/kitty.conf b/Configs/kitty/.config/kitty/kitty.conf deleted file mode 100644 index ee876ca..0000000 --- a/Configs/kitty/.config/kitty/kitty.conf +++ /dev/null @@ -1,2511 +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 fat:bias=70,tall:bias=55,stack - -#: The enabled window layouts. A comma separated list of layout names. -#: The special value all means all layouts. The first listed layout -#: will be used as the startup layout. Default configuration is all -#: layouts in alphabetical order. For a list of available layouts, see -#: the layouts . - -# window_resize_step_cells 2 -# window_resize_step_lines 2 - -#: The step size (in units of cell width/cell height) to use when -#: resizing kitty windows in a layout with the shortcut -#: start_resizing_window. The cells value is used for horizontal -#: resizing, and the lines value is used for vertical resizing. - -# window_border_width 0.5pt - -#: The width of window borders. Can be either in pixels (px) or pts -#: (pt). Values in pts will be rounded to the nearest number of pixels -#: based on screen resolution. If not specified, the unit is assumed -#: to be pts. Note that borders are displayed only when more than one -#: window is visible. They are meant to separate multiple windows. - -# draw_minimal_borders yes - -#: Draw only the minimum borders needed. This means that only the -#: borders that separate the window from a neighbor are drawn. Note -#: that setting a non-zero window_margin_width overrides this and -#: causes all borders to be drawn. - -# window_margin_width 0 - -#: The window margin (in pts) (blank area outside the border). A -#: single value sets all four sides. Two values set the vertical and -#: horizontal sides. Three values set top, horizontal and bottom. Four -#: values set top, right, bottom and left. - -# single_window_margin_width -1 - -#: The window margin to use when only a single window is visible (in -#: pts). Negative values will cause the value of window_margin_width -#: to be used instead. A single value sets all four sides. Two values -#: set the vertical and horizontal sides. Three values set top, -#: horizontal and bottom. Four values set top, right, bottom and left. - -# window_padding_width 0 - -#: The window padding (in pts) (blank area between the text and the -#: window border). A single value sets all four sides. Two values set -#: the vertical and horizontal sides. Three values set top, horizontal -#: and bottom. Four values set top, right, bottom and left. - -# single_window_padding_width -1 - -#: The window padding to use when only a single window is visible (in -#: pts). Negative values will cause the value of window_padding_width -#: to be used instead. A single value sets all four sides. Two values -#: set the vertical and horizontal sides. Three values set top, -#: horizontal and bottom. Four values set top, right, bottom and left. - -# placement_strategy center - -#: When the window size is not an exact multiple of the cell size, the -#: cell area of the terminal window will have some extra padding on -#: the sides. You can control how that padding is distributed with -#: this option. Using a value of center means the cell area will be -#: placed centrally. A value of top-left means the padding will be -#: only at the bottom and right edges. - -# active_border_color #00ff00 - -#: The color for the border of the active window. Set this to none to -#: not draw borders around the active window. - -# inactive_border_color #cccccc - -#: The color for the border of inactive windows. - -# bell_border_color #ff5a00 - -#: The color for the border of inactive windows in which a bell has -#: occurred. - -# inactive_text_alpha 1.0 - -#: Fade the text in inactive windows by the specified amount (a number -#: between zero and one, with zero being fully faded). - -hide_window_decorations yes - -#: Hide the window decorations (title-bar and window borders) with -#: yes. On macOS, titlebar-only and titlebar-and-corners can be used -#: to only hide the titlebar and the rounded corners. Whether this -#: works and exactly what effect it has depends on the window -#: manager/operating system. Note that the effects of changing this -#: option when reloading config are undefined. When using titlebar- -#: only, it is useful to also set window_margin_width and -#: placement_strategy to prevent the rounded corners from clipping -#: text. Or use titlebar-and-corners. - -# window_logo_path none - -#: Path to a logo image. Must be in PNG format. Relative paths are -#: interpreted relative to the kitty config directory. The logo is -#: displayed in a corner of every kitty window. The position is -#: controlled by window_logo_position. Individual windows can be -#: configured to have different logos either using the launch action -#: or the remote control facility. - -# window_logo_position bottom-right - -#: Where to position the window logo in the window. The value can be -#: one of: top-left, top, top-right, left, center, right, bottom-left, -#: bottom, bottom-right. - -# window_logo_alpha 0.5 - -#: The amount the logo should be faded into the background. With zero -#: being fully faded and one being fully opaque. - -# resize_debounce_time 0.1 0.5 - -#: The time to wait before redrawing the screen during a live resize -#: of the OS window, when no new resize events have been received, -#: i.e. when resizing is either paused or finished. On platforms such -#: as macOS, where the operating system sends events corresponding to -#: the start and end of a live resize, the second number is used for -#: redraw-after-pause since kitty can distinguish between a pause and -#: end of resizing. On such systems the first number is ignored and -#: redraw is immediate after end of resize. On other systems the -#: first number is used so that kitty is "ready" quickly after the end -#: of resizing, while not also continuously redrawing, to save energy. - -# resize_in_steps no - -#: Resize the OS window in steps as large as the cells, instead of -#: with the usual pixel accuracy. Combined with initial_window_width -#: and initial_window_height in number of cells, this option can be -#: used to keep the margins as small as possible when resizing the OS -#: window. Note that this does not currently work on Wayland. - -# visual_window_select_characters 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ - -#: The list of characters for visual window selection. For example, -#: for selecting a window to focus on with focus_visible_window. The -#: value should be a series of unique numbers or alphabets, case -#: insensitive, from the set 0-9A-Z\-=[];',./\\`. Specify your -#: preference as a string of characters. - -confirm_os_window_close 0 - -#: Ask for confirmation when closing an OS window or a tab with at -#: least this number of kitty windows in it by window manager (e.g. -#: clicking the window close button or pressing the operating system -#: shortcut to close windows) or by the close_tab action. A value of -#: zero disables confirmation. This confirmation also applies to -#: requests to quit the entire application (all OS windows, via the -#: quit action). Negative values are converted to positive ones, -#: however, with shell_integration enabled, using negative values -#: means windows sitting at a shell prompt are not counted, only -#: windows where some command is currently running. Note that if you -#: want confirmation when closing individual windows, you can map the -#: close_window_with_confirmation action. - -#: }}} - -#: Tab bar {{{ - -tab_bar_edge top - -#: The edge to show the tab bar on, top or bottom. - -# tab_bar_margin_width 0.0 - -#: The margin to the left and right of the tab bar (in pts). - -# tab_bar_margin_height 0.0 0.0 - -#: The margin above and below the tab bar (in pts). The first number -#: is the margin between the edge of the OS Window and the tab bar. -#: The second number is the margin between the tab bar and the -#: contents of the current tab. - -tab_bar_style separator - -#: The tab bar style, can be one of: - -#: fade -#: Each tab's edges fade into the background color. (See also tab_fade) -#: slant -#: Tabs look like the tabs in a physical file. -#: separator -#: Tabs are separated by a configurable separator. (See also -#: tab_separator) -#: powerline -#: Tabs are shown as a continuous line with "fancy" separators. -#: (See also tab_powerline_style) -#: custom -#: A user-supplied Python function called draw_tab is loaded from the file -#: tab_bar.py in the kitty config directory. For examples of how to -#: write such a function, see the functions named draw_tab_with_* in -#: kitty's source code: kitty/tab_bar.py. See also -#: this discussion -#: for examples from kitty users. -#: hidden -#: The tab bar is hidden. If you use this, you might want to create -#: a mapping for the select_tab action which presents you with a list of -#: tabs and allows for easy switching to a tab. - -tab_bar_align center - -#: The horizontal alignment of the tab bar, can be one of: left, -#: center, right. - -tab_bar_min_tabs 1 - -#: The minimum number of tabs that must exist before the tab bar is -#: shown. - -# tab_switch_strategy previous - -#: The algorithm to use when switching to a tab when the current tab -#: is closed. The default of previous will switch to the last used -#: tab. A value of left will switch to the tab to the left of the -#: closed tab. A value of right will switch to the tab to the right of -#: the closed tab. A value of last will switch to the right-most tab. - -# tab_fade 0.25 0.5 0.75 1 - -#: Control how each tab fades into the background when using fade for -#: the tab_bar_style. Each number is an alpha (between zero and one) -#: that controls how much the corresponding cell fades into the -#: background, with zero being no fade and one being full fade. You -#: can change the number of cells used by adding/removing entries to -#: this list. - -tab_separator " │ " - -#: The separator between tabs in the tab bar when using separator as -#: the tab_bar_style. - -# tab_powerline_style angled - -#: The powerline separator style between tabs in the tab bar when -#: using powerline as the tab_bar_style, can be one of: angled, -#: slanted, round. - -tab_activity_symbol " " - -#: Some text or a Unicode symbol to show on the tab if a window in the -#: tab that does not have focus has some activity. If you want to use -#: leading or trailing spaces, surround the text with quotes. See -#: tab_title_template for how this is rendered. - -# tab_title_max_length 0 - -#: The maximum number of cells that can be used to render the text in -#: a tab. A value of zero means that no limit is applied. - -tab_title_template "{fmt.fg.orange}{bell_symbol}{activity_symbol}{fmt.fg.tab}{'' if layout_name == 'stack' else '' if layout_name == 'fat' else '' if layout_name == 'tall' else ' '} {index}:{title}" - -#: A template to render the tab title. The default just renders the -#: title with optional symbols for bell and activity. If you wish to -#: include the tab-index as well, use something like: {index}:{title}. -#: Useful if you have shortcuts mapped for goto_tab N. If you prefer -#: to see the index as a superscript, use {sup.index}. All data -#: available is: - -#: title -#: The current tab title. -#: index -#: The tab index usable with goto_tab N goto_tab shortcuts. -#: layout_name -#: The current layout name. -#: num_windows -#: The number of windows in the tab. -#: num_window_groups -#: The number of window groups (a window group is a window and all of its overlay windows) in the tab. -#: tab.active_wd -#: The working directory of the currently active window in the tab -#: (expensive, requires syscall). Use active_oldest_wd to get -#: the directory of the oldest foreground process rather than the newest. -#: tab.active_exe -#: The name of the executable running in the foreground of the currently -#: active window in the tab (expensive, requires syscall). Use -#: active_oldest_exe for the oldest foreground process. -#: max_title_length -#: The maximum title length available. - -#: Note that formatting is done by Python's string formatting -#: machinery, so you can use, for instance, {layout_name[:2].upper()} -#: to show only the first two letters of the layout name, upper-cased. -#: If you want to style the text, you can use styling directives, for -#: example: -#: `{fmt.fg.red}red{fmt.fg.tab}normal{fmt.bg._00FF00}greenbg{fmt.bg.tab}`. -#: Similarly, for bold and italic: -#: `{fmt.bold}bold{fmt.nobold}normal{fmt.italic}italic{fmt.noitalic}`. -#: Note that for backward compatibility, if {bell_symbol} or -#: {activity_symbol} are not present in the template, they are -#: prepended to it. - -# active_tab_title_template none - -#: Template to use for active tabs. If not specified falls back to -#: tab_title_template. - -# active_tab_foreground #000 -# active_tab_background #eee -# active_tab_font_style bold-italic -# inactive_tab_foreground #444 -# inactive_tab_background #999 -# inactive_tab_font_style normal - -#: Tab bar colors and styles. - -# tab_bar_background none - -#: Background color for the tab bar. Defaults to using the terminal -#: background color. - -# tab_bar_margin_color none - -#: Color for the tab bar margin area. Defaults to using the terminal -#: background color for margins above and below the tab bar. For side -#: margins the default color is chosen to match the background color -#: of the neighboring tab. - -#: }}} - -#: Color scheme {{{ - -# foreground #dddddd -# background #000000 - -#: The foreground and background colors. - -# background_opacity 0.8 - -#: The opacity of the background. A number between zero and one, where -#: one is opaque and zero is fully transparent. This will only work if -#: supported by the OS (for instance, when using a compositor under -#: X11). Note that it only sets the background color's opacity in -#: cells that have the same background color as the default terminal -#: background, so that things like the status bar in vim, powerline -#: prompts, etc. still look good. But it means that if you use a color -#: theme with a background color in your editor, it will not be -#: rendered as transparent. Instead you should change the default -#: background color in your kitty config and not use a background -#: color in the editor color scheme. Or use the escape codes to set -#: the terminals default colors in a shell script to launch your -#: editor. Be aware that using a value less than 1.0 is a (possibly -#: significant) performance hit. When using a low value for this -#: setting, it is desirable that you set the background color to a -#: color the matches the general color of the desktop background, for -#: best text rendering. If you want to dynamically change -#: transparency of windows, set dynamic_background_opacity to yes -#: (this is off by default as it has a performance cost). Changing -#: this option when reloading the config will only work if -#: dynamic_background_opacity was enabled in the original config. - -# background_blur 0 - -#: Set to a positive value to enable background blur (blurring of the -#: visuals behind a transparent window) on platforms that support it. -#: Only takes effect when background_opacity is less than one. On -#: macOS, this will also control the blur radius (amount of blurring). -#: Setting it to too high a value will cause severe performance issues -#: and/or rendering artifacts. Usually, values up to 64 work well. -#: Note that this might cause performance issues, depending on how the -#: platform implements it, so use with care. Currently supported on -#: macOS and KDE under X11. - -# background_image none - -#: Path to a background image. Must be in PNG format. - -# background_image_layout tiled - -#: Whether to tile, scale or clamp the background image. The value can -#: be one of tiled, mirror-tiled, scaled, clamped, centered or -#: cscaled. The scaled and cscaled values scale the image to the -#: window size, with cscaled preserving the image aspect ratio. - -# background_image_linear no - -#: When background image is scaled, whether linear interpolation -#: should be used. - -# dynamic_background_opacity no - -#: Allow changing of the background_opacity dynamically, using either -#: keyboard shortcuts (increase_background_opacity and -#: decrease_background_opacity) or the remote control facility. -#: Changing this option by reloading the config is not supported. - -# background_tint 0.0 - -#: How much to tint the background image by the background color. This -#: option makes it easier to read the text. Tinting is done using the -#: current background color for each window. This option applies only -#: if background_opacity is set and transparent windows are supported -#: or background_image is set. - -# background_tint_gaps 1.0 - -#: How much to tint the background image at the window gaps by the -#: background color, after applying background_tint. Since this is -#: multiplicative with background_tint, it can be used to lighten the -#: tint over the window gaps for a *separated* look. - -# dim_opacity 0.4 - -#: How much to dim text that has the DIM/FAINT attribute set. One -#: means no dimming and zero means fully dimmed (i.e. invisible). - -# selection_foreground #000000 -# selection_background #fffacd - -#: The foreground and background colors for text selected with the -#: mouse. Setting both of these to none will cause a "reverse video" -#: effect for selections, where the selection will be the cell text -#: color and the text will become the cell background color. Setting -#: only selection_foreground to none will cause the foreground color -#: to be used unchanged. Note that these colors can be overridden by -#: the program running in the terminal. - -#: The color table {{{ - -#: The 256 terminal colors. There are 8 basic colors, each color has a -#: dull and bright version, for the first 16 colors. You can set the -#: remaining 240 colors as color16 to color255. - -# color0 #000000 -# color8 #767676 - -#: black - -# color1 #cc0403 -# color9 #f2201f - -#: red - -# color2 #19cb00 -# color10 #23fd00 - -#: green - -# color3 #cecb00 -# color11 #fffd00 - -#: yellow - -# color4 #0d73cc -# color12 #1a8fff - -#: blue - -# color5 #cb1ed1 -# color13 #fd28ff - -#: magenta - -# color6 #0dcdcd -# color14 #14ffff - -#: cyan - -# color7 #dddddd -# color15 #ffffff - -#: white - -# mark1_foreground black - -#: Color for marks of type 1 - -# mark1_background #98d3cb - -#: Color for marks of type 1 (light steel blue) - -# mark2_foreground black - -#: Color for marks of type 2 - -# mark2_background #f2dcd3 - -#: Color for marks of type 1 (beige) - -# mark3_foreground black - -#: Color for marks of type 3 - -# mark3_background #f274bc - -#: Color for marks of type 3 (violet) - -#: }}} - -#: }}} - -#: Advanced {{{ - -# shell . - -#: The shell program to execute. The default value of . means to use -#: whatever shell is set as the default shell for the current user. -#: Note that on macOS if you change this, you might need to add -#: --login and --interactive to ensure that the shell starts in -#: interactive mode and reads its startup rc files. Environment -#: variables are expanded in this setting. - -# editor . - -#: The terminal based text editor (such as vim or nano) to use when -#: editing the kitty config file or similar tasks. - -#: The default value of . means to use the environment variables -#: VISUAL and EDITOR in that order. If these variables aren't set, -#: kitty will run your shell ($SHELL -l -i -c env) to see if your -#: shell startup rc files set VISUAL or EDITOR. If that doesn't work, -#: kitty will cycle through various known editors (vim, emacs, etc.) -#: and take the first one that exists on your system. - -# close_on_child_death no - -#: Close the window when the child process (shell) exits. With the -#: default value no, the terminal will remain open when the child -#: exits as long as there are still processes outputting to the -#: terminal (for example disowned or backgrounded processes). When -#: enabled with yes, the window will close as soon as the child -#: process exits. Note that setting it to yes means that any -#: background processes still using the terminal can fail silently -#: because their stdout/stderr/stdin no longer work. - -# remote_control_password - -#: Allow other programs to control kitty using passwords. This option -#: can be specified multiple times to add multiple passwords. If no -#: passwords are present kitty will ask the user for permission if a -#: program tries to use remote control with a password. A password can -#: also *optionally* be associated with a set of allowed remote -#: control actions. For example:: - -#: remote_control_password "my passphrase" get-colors set-colors focus-window focus-tab - -#: Only the specified actions will be allowed when using this -#: password. Glob patterns can be used too, for example:: - -#: remote_control_password "my passphrase" set-tab-* resize-* - -#: To get a list of available actions, run:: - -#: kitten @ --help - -#: A set of actions to be allowed when no password is sent can be -#: specified by using an empty password. For example:: - -#: remote_control_password "" *-colors - -#: Finally, the path to a python module can be specified that provides -#: a function is_cmd_allowed that is used to check every remote -#: control command. For example:: - -#: remote_control_password "my passphrase" my_rc_command_checker.py - -#: Relative paths are resolved from the kitty configuration directory. -#: See rc_custom_auth for details. - -allow_remote_control yes - -#: Allow other programs to control kitty. If you turn this on, other -#: programs can control all aspects of kitty, including sending text -#: to kitty windows, opening new windows, closing windows, reading the -#: content of windows, etc. Note that this even works over SSH -#: connections. The default setting of no prevents any form of remote -#: control. The meaning of the various values are: - -#: password -#: Remote control requests received over both the TTY device and the socket -#: are confirmed based on passwords, see remote_control_password. - -#: socket-only -#: Remote control requests received over a socket are accepted -#: unconditionally. Requests received over the TTY are denied. -#: See listen_on. - -#: socket -#: Remote control requests received over a socket are accepted -#: unconditionally. Requests received over the TTY are confirmed based on -#: password. - -#: no -#: Remote control is completely disabled. - -#: yes -#: Remote control requests are always accepted. - -listen_on unix:@mykitty - -#: Listen to the specified socket for remote control connections. Note -#: that this will apply to all kitty instances. It can be overridden -#: by the kitty --listen-on command line option. For UNIX sockets, -#: such as unix:${TEMP}/mykitty or unix:@mykitty (on Linux). -#: Environment variables are expanded and relative paths are resolved -#: with respect to the temporary directory. If {kitty_pid} is present, -#: then it is replaced by the PID of the kitty process, otherwise the -#: PID of the kitty process is appended to the value, with a hyphen. -#: For TCP sockets such as tcp:localhost:0 a random port is always -#: used even if a non-zero port number is specified. See the help for -#: kitty --listen-on for more details. Note that this will be ignored -#: unless allow_remote_control is set to either: yes, socket or -#: socket-only. Changing this option by reloading the config is not -#: supported. - -# env - -#: Specify the environment variables to be set in all child processes. -#: Using the name with an equal sign (e.g. env VAR=) will set it to -#: the empty string. Specifying only the name (e.g. env VAR) will -#: remove the variable from the child process' environment. Note that -#: environment variables are expanded recursively, for example:: - -#: env VAR1=a -#: env VAR2=${HOME}/${VAR1}/b - -#: The value of VAR2 will be /a/b. - -# watcher - -#: Path to python file which will be loaded for watchers -#: . Can be -#: specified more than once to load multiple watchers. The watchers -#: will be added to every kitty window. Relative paths are resolved -#: relative to the kitty config directory. Note that reloading the -#: config will only affect windows created after the reload. - -# exe_search_path - -#: Control where kitty finds the programs to run. The default search -#: order is: First search the system wide PATH, then ~/.local/bin and -#: ~/bin. If still not found, the PATH defined in the login shell -#: after sourcing all its startup files is tried. Finally, if present, -#: the PATH specified by the env option is tried. - -#: This option allows you to prepend, append, or remove paths from -#: this search order. It can be specified multiple times for multiple -#: paths. A simple path will be prepended to the search order. A path -#: that starts with the + sign will be append to the search order, -#: after ~/bin above. A path that starts with the - sign will be -#: removed from the entire search order. For example:: - -#: exe_search_path /some/prepended/path -#: exe_search_path +/some/appended/path -#: exe_search_path -/some/excluded/path - -# update_check_interval 24 - -#: The interval to periodically check if an update to kitty is -#: available (in hours). If an update is found, a system notification -#: is displayed informing you of the available update. The default is -#: to check every 24 hours, set to zero to disable. Update checking is -#: only done by the official binary builds. Distro packages or source -#: builds do not do update checking. Changing this option by reloading -#: the config is not supported. - -# startup_session none - -#: Path to a session file to use for all kitty instances. Can be -#: overridden by using the kitty --session =none command line option -#: for individual instances. See sessions -#: in the kitty -#: documentation for details. Note that relative paths are interpreted -#: with respect to the kitty config directory. Environment variables -#: in the path are expanded. Changing this option by reloading the -#: config is not supported. - -# clipboard_control write-clipboard write-primary read-clipboard-ask read-primary-ask - -#: Allow programs running in kitty to read and write from the -#: clipboard. You can control exactly which actions are allowed. The -#: possible actions are: write-clipboard, read-clipboard, write- -#: primary, read-primary, read-clipboard-ask, read-primary-ask. The -#: default is to allow writing to the clipboard and primary selection -#: and to ask for permission when a program tries to read from the -#: clipboard. Note that disabling the read confirmation is a security -#: risk as it means that any program, even the ones running on a -#: remote server via SSH can read your clipboard. See also -#: clipboard_max_size. - -# clipboard_max_size 512 - -#: The maximum size (in MB) of data from programs running in kitty -#: that will be stored for writing to the system clipboard. A value of -#: zero means no size limit is applied. See also clipboard_control. - -# file_transfer_confirmation_bypass - -#: The password that can be supplied to the file transfer kitten -#: to skip the -#: transfer confirmation prompt. This should only be used when -#: initiating transfers from trusted computers, over trusted networks -#: or encrypted transports, as it allows any programs running on the -#: remote machine to read/write to the local filesystem, without -#: permission. - -# allow_hyperlinks yes - -#: Process hyperlink escape sequences (OSC 8). If disabled OSC 8 -#: escape sequences are ignored. Otherwise they become clickable -#: links, that you can click with the mouse or by using the hints -#: kitten . The -#: special value of ask means that kitty will ask before opening the -#: link when clicked. - -# shell_integration enabled - -#: Enable shell integration on supported shells. This enables features -#: such as jumping to previous prompts, browsing the output of the -#: previous command in a pager, etc. on supported shells. Set to -#: disabled to turn off shell integration, completely. It is also -#: possible to disable individual features, set to a space separated -#: list of these values: no-rc, no-cursor, no-title, no-cwd, no- -#: prompt-mark, no-complete, no-sudo. See Shell integration -#: for details. - -# allow_cloning ask - -#: Control whether programs running in the terminal can request new -#: windows to be created. The canonical example is clone-in-kitty -#: . -#: By default, kitty will ask for permission for each clone request. -#: Allowing cloning unconditionally gives programs running in the -#: terminal (including over SSH) permission to execute arbitrary code, -#: as the user who is running the terminal, on the computer that the -#: terminal is running on. - -# clone_source_strategies venv,conda,env_var,path - -#: Control what shell code is sourced when running clone-in-kitty in -#: the newly cloned window. The supported strategies are: - -#: venv -#: Source the file $VIRTUAL_ENV/bin/activate. This is used by the -#: Python stdlib venv module and allows cloning venvs automatically. -#: conda -#: Run conda activate $CONDA_DEFAULT_ENV. This supports the virtual -#: environments created by conda. -#: env_var -#: Execute the contents of the environment variable -#: KITTY_CLONE_SOURCE_CODE with eval. -#: path -#: Source the file pointed to by the environment variable -#: KITTY_CLONE_SOURCE_PATH. - -#: This option must be a comma separated list of the above values. -#: Only the first valid match, in the order specified, is sourced. - -# term xterm-kitty - -#: The value of the TERM environment variable to set. Changing this -#: can break many terminal programs, only change it if you know what -#: you are doing, not because you read some advice on "Stack Overflow" -#: to change it. The TERM variable is used by various programs to get -#: information about the capabilities and behavior of the terminal. If -#: you change it, depending on what programs you run, and how -#: different the terminal you are changing it to is, various things -#: from key-presses, to colors, to various advanced features may not -#: work. Changing this option by reloading the config will only affect -#: newly created windows. - -# forward_stdio no - -#: Forward STDOUT and STDERR of the kitty process to child processes -#: as file descriptors 3 and 4. This is useful for debugging as it -#: allows child processes to print to kitty's STDOUT directly. For -#: example, echo hello world >&3 in a shell will print to the parent -#: kitty's STDOUT. When enabled, this also sets the -#: KITTY_STDIO_FORWARDED=3 environment variable so child processes -#: know about the forwarding. - -# menu_map - -#: Specify entries for various menus in kitty. Currently only the -#: global menubar on macOS is supported. For example:: - -#: menu_map global "Actions::Launch something special" launch --hold --type=os-window sh -c "echo hello world" - -#: This will create a menu entry named "Launch something special" in -#: an "Actions" menu in the macOS global menubar. Sub-menus can be -#: created by adding more levels separated by ::. - -#: }}} - -#: OS specific tweaks {{{ -wayland_titlebar_color background - -#: The color of the kitty window's titlebar on Wayland systems with -#: client side window decorations such as GNOME. A value of system -#: means to use the default system color, a value of background means -#: to use the background color of the currently active window and -#: finally you can use an arbitrary color, such as #12af59 or red. - -# macos_titlebar_color system - -#: The color of the kitty window's titlebar on macOS. A value of -#: system means to use the default system color, light or dark can -#: also be used to set it explicitly. A value of background means to -#: use the background color of the currently active window and finally -#: you can use an arbitrary color, such as #12af59 or red. WARNING: -#: This option works by using a hack when arbitrary color (or -#: background) is configured, as there is no proper Cocoa API for it. -#: It sets the background color of the entire window and makes the -#: titlebar transparent. As such it is incompatible with -#: background_opacity. If you want to use both, you are probably -#: better off just hiding the titlebar with hide_window_decorations. - -# macos_option_as_alt no - -#: Use the Option key as an Alt key on macOS. With this set to no, -#: kitty will use the macOS native Option+Key to enter Unicode -#: character behavior. This will break any Alt+Key keyboard shortcuts -#: in your terminal programs, but you can use the macOS Unicode input -#: technique. You can use the values: left, right or both to use only -#: the left, right or both Option keys as Alt, instead. Note that -#: kitty itself always treats Option the same as Alt. This means you -#: cannot use this option to configure different kitty shortcuts for -#: Option+Key vs. Alt+Key. Also, any kitty shortcuts using -#: Option/Alt+Key will take priority, so that any such key presses -#: will not be passed to terminal programs running inside kitty. -#: Changing this option by reloading the config is not supported. - -# macos_hide_from_tasks no - -#: Hide the kitty window from running tasks on macOS (⌘+Tab and the -#: Dock). Changing this option by reloading the config is not -#: supported. - -# macos_quit_when_last_window_closed no - -#: Have kitty quit when all the top-level windows are closed on macOS. -#: By default, kitty will stay running, even with no open windows, as -#: is the expected behavior on macOS. - -# macos_window_resizable yes - -#: Disable this if you want kitty top-level OS windows to not be -#: resizable on macOS. - -# macos_thicken_font 0 - -#: Draw an extra border around the font with the given width, to -#: increase legibility at small font sizes on macOS. For example, a -#: value of 0.75 will result in rendering that looks similar to sub- -#: pixel antialiasing at common font sizes. Note that in modern kitty, -#: this option is obsolete (although still supported). Consider using -#: text_composition_strategy instead. - -# macos_traditional_fullscreen no - -#: Use the macOS traditional full-screen transition, that is faster, -#: but less pretty. - -# macos_show_window_title_in all - -#: Control where the window title is displayed on macOS. A value of -#: window will show the title of the currently active window at the -#: top of the macOS window. A value of menubar will show the title of -#: the currently active window in the macOS global menu bar, making -#: use of otherwise wasted space. A value of all will show the title -#: in both places, and none hides the title. See -#: macos_menubar_title_max_length for how to control the length of the -#: title in the menu bar. - -# macos_menubar_title_max_length 0 - -#: The maximum number of characters from the window title to show in -#: the macOS global menu bar. Values less than one means that there is -#: no maximum limit. - -# macos_custom_beam_cursor no - -#: Use a custom mouse cursor for macOS that is easier to see on both -#: light and dark backgrounds. Nowadays, the default macOS cursor -#: already comes with a white border. WARNING: this might make your -#: mouse cursor invisible on dual GPU machines. Changing this option -#: by reloading the config is not supported. - -# macos_colorspace srgb - -#: The colorspace in which to interpret terminal colors. The default -#: of srgb will cause colors to match those seen in web browsers. The -#: value of default will use whatever the native colorspace of the -#: display is. The value of displayp3 will use Apple's special -#: snowflake display P3 color space, which will result in over -#: saturated (brighter) colors with some color shift. Reloading -#: configuration will change this value only for newly created OS -#: windows. - -# linux_display_server auto - -#: Choose between Wayland and X11 backends. By default, an appropriate -#: backend based on the system state is chosen automatically. Set it -#: to x11 or wayland to force the choice. Changing this option by -#: reloading the config is not supported. - -#: }}} - -#: Keyboard shortcuts {{{ - -#: Keys are identified simply by their lowercase Unicode characters. -#: For example: a for the A key, [ for the left square bracket key, -#: etc. For functional keys, such as Enter or Escape, the names are -#: present at Functional key definitions -#: . -#: For modifier keys, the names are ctrl (control, ⌃), shift (⇧), alt -#: (opt, option, ⌥), super (cmd, command, ⌘). See also: GLFW mods -#: - -#: On Linux you can also use XKB key names to bind keys that are not -#: supported by GLFW. See XKB keys -#: for a list of key names. The name to use is the part -#: after the XKB_KEY_ prefix. Note that you can only use an XKB key -#: name for keys that are not known as GLFW keys. - -#: Finally, you can use raw system key codes to map keys, again only -#: for keys that are not known as GLFW keys. To see the system key -#: code for a key, start kitty with the kitty --debug-input option, -#: kitty will output some debug text for every key event. In that text -#: look for native_code, the value of that becomes the key name in the -#: shortcut. For example: - -#: .. code-block:: none - -#: on_key_input: glfw key: 0x61 native_code: 0x61 action: PRESS mods: none text: 'a' - -#: Here, the key name for the A key is 0x61 and you can use it with:: - -#: map ctrl+0x61 something - -#: to map Ctrl+A to something. - -#: You can use the special action no_op to unmap a keyboard shortcut -#: that is assigned in the default configuration:: - -#: map kitty_mod+space no_op - -#: If you would like kitty to completely ignore a key event, not even -#: sending it to the program running in the terminal, map it to -#: discard_event:: - -#: map kitty_mod+f1 discard_event - -#: You can combine multiple actions to be triggered by a single -#: shortcut with combine action, using the syntax below:: - -#: map key combine action1 action2 action3 ... - -#: For example:: - -#: map kitty_mod+e combine : new_window : next_layout - -#: This will create a new window and switch to the next available -#: layout. - -#: You can use multi-key shortcuts with the syntax shown below:: - -#: map key1>key2>key3 action - -#: For example:: - -#: map ctrl+f>2 set_font_size 20 - -#: The full list of actions that can be mapped to key presses is -#: available here . - -# kitty_mod ctrl+shift - -#: Special modifier key alias for default shortcuts. You can change -#: the value of this option to alter all default shortcuts that use -#: kitty_mod. - -# clear_all_shortcuts no - -#: Remove all shortcut definitions up to this point. Useful, for -#: instance, to remove the default shortcuts. - -# action_alias - -#: E.g. action_alias launch_tab launch --type=tab --cwd=current - -action_alias zoom combine : toggle_layout stack : scroll_prompt_to_bottom - -#: Define action aliases to avoid repeating the same options in -#: multiple mappings. Aliases can be defined for any action and will -#: be expanded recursively. For example, the above alias allows you to -#: create mappings to launch a new tab in the current working -#: directory without duplication:: - -#: map f1 launch_tab vim -#: map f2 launch_tab emacs - -#: Similarly, to alias kitten invocation:: - -#: action_alias hints kitten hints --hints-offset=0 - -# kitten_alias - -#: E.g. kitten_alias hints hints --hints-offset=0 - -#: Like action_alias above, but specifically for kittens. Generally, -#: prefer to use action_alias. This option is a legacy version, -#: present for backwards compatibility. It causes all invocations of -#: the aliased kitten to be substituted. So the example above will -#: cause all invocations of the hints kitten to have the --hints- -#: offset=0 option applied. - -#: Clipboard {{{ - -#: Copy to clipboard - -# map kitty_mod+c copy_to_clipboard -# map cmd+c copy_to_clipboard - -#:: There is also a copy_or_interrupt action that can be optionally -#:: mapped to Ctrl+C. It will copy only if there is a selection and -#:: send an interrupt otherwise. Similarly, -#:: copy_and_clear_or_interrupt will copy and clear the selection or -#:: send an interrupt if there is no selection. - -#: Paste from clipboard - -# map kitty_mod+v paste_from_clipboard -# map cmd+v paste_from_clipboard - -#: Paste from selection - -# map kitty_mod+s paste_from_selection -# map shift+insert paste_from_selection - -#: Pass selection to program - -# map kitty_mod+o pass_selection_to_program - -#:: You can also pass the contents of the current selection to any -#:: program with pass_selection_to_program. By default, the system's -#:: open program is used, but you can specify your own, the selection -#:: will be passed as a command line argument to the program. For -#:: example:: - -#:: map kitty_mod+o pass_selection_to_program firefox - -#:: You can pass the current selection to a terminal program running -#:: in a new kitty window, by using the @selection placeholder:: - -#:: map kitty_mod+y new_window less @selection - -#: }}} - -#: Scrolling {{{ - -#: Scroll line up - -# map kitty_mod+up scroll_line_up -# map kitty_mod+k scroll_line_up -# map opt+cmd+page_up scroll_line_up -# map cmd+up scroll_line_up - -#: Scroll line down - -# map kitty_mod+down scroll_line_down -# map kitty_mod+j scroll_line_down -# map opt+cmd+page_down scroll_line_down -# map cmd+down scroll_line_down - -#: Scroll page up - -# map kitty_mod+page_up scroll_page_up -# map cmd+page_up scroll_page_up - -#: Scroll page down - -# map kitty_mod+page_down scroll_page_down -# map cmd+page_down scroll_page_down - -#: Scroll to top - -# map kitty_mod+home scroll_home -# map cmd+home scroll_home - -#: Scroll to bottom - -# map kitty_mod+end scroll_end -# map cmd+end scroll_end - -#: Scroll to previous shell prompt - -# map kitty_mod+z scroll_to_prompt -1 - -#:: Use a parameter of 0 for scroll_to_prompt to scroll to the last -#:: jumped to or the last clicked position. Requires shell -#:: integration -#:: to work. - -#: Scroll to next shell prompt - -# map kitty_mod+x scroll_to_prompt 1 - -#: Browse scrollback buffer in pager - -# map kitty_mod+h show_scrollback - -#:: You can pipe the contents of the current screen and history -#:: buffer as STDIN to an arbitrary program using launch --stdin- -#:: source. For example, the following opens the scrollback buffer in -#:: less in an overlay window:: - -#:: map f1 launch --stdin-source=@screen_scrollback --stdin-add-formatting --type=overlay less +G -R - -#:: For more details on piping screen and buffer contents to external -#:: programs, see launch . - -#: Browse output of the last shell command in pager - -# map kitty_mod+g show_last_command_output - -#:: You can also define additional shortcuts to get the command -#:: output. For example, to get the first command output on screen:: - -#:: map f1 show_first_command_output_on_screen - -#:: To get the command output that was last accessed by a keyboard -#:: action or mouse action:: - -#:: map f1 show_last_visited_command_output - -#:: You can pipe the output of the last command run in the shell -#:: using the launch action. For example, the following opens the -#:: output in less in an overlay window:: - -#:: map f1 launch --stdin-source=@last_cmd_output --stdin-add-formatting --type=overlay less +G -R - -#:: To get the output of the first command on the screen, use -#:: @first_cmd_output_on_screen. To get the output of the last jumped -#:: to command, use @last_visited_cmd_output. - -#:: Requires shell integration -#:: to work. - -#: }}} - -#: Window management {{{ - -#: New window -# -# - -map ctrl+j neighboring_window down -map ctrl+k neighboring_window up -map ctrl+h neighboring_window left -map ctrl+l neighboring_window right - -# Unset the mapping to pass the keys to neovim -map --when-focus-on var:IS_NVIM ctrl+j -map --when-focus-on var:IS_NVIM ctrl+k -map --when-focus-on var:IS_NVIM ctrl+h -map --when-focus-on var:IS_NVIM ctrl+l - -# the 3 here is the resize amount, adjust as needed -map alt+j kitten relative_resize.py down 3 -map alt+k kitten relative_resize.py up 3 -map alt+h kitten relative_resize.py left 3 -map alt+l kitten relative_resize.py right 3 - -map --when-focus-on var:IS_NVIM alt+j -map --when-focus-on var:IS_NVIM alt+k -map --when-focus-on var:IS_NVIM alt+h -map --when-focus-on var:IS_NVIM alt+l - - -# map kitty_mod+enter new_window -# map cmd+enter new_window -map ctrl+space>enter new_window -map ctrl+space>s launch --location=vsplit --cwd=root -map ctrl+space>v launch --location=split --cwd=root -map ctrl+space>ctrl+s launch --location=vsplit -map ctrl+space>ctrl+v launch --location=split - - -#:: You can open a new kitty window running an arbitrary program, for -#:: example:: - -#:: map kitty_mod+y launch mutt - -#:: You can open a new window with the current working directory set -#:: to the working directory of the current window using:: - -#:: map ctrl+alt+enter launch --cwd=current - -#:: You can open a new window that is allowed to control kitty via -#:: the kitty remote control facility with launch --allow-remote- -#:: control. Any programs running in that window will be allowed to -#:: control kitty. For example:: - -#:: map ctrl+enter launch --allow-remote-control some_program - -#:: You can open a new window next to the currently active window or -#:: as the first window, with:: - -#:: map ctrl+n launch --location=neighbor -#:: map ctrl+f launch --location=first - -#:: For more details, see launch -#:: . - -map ctrl+space>g launch --cwd=current --type=overlay lazygit - -#: New OS window - -# map kitty_mod+n new_os_window -# map cmd+n new_os_window - -#:: Works like new_window above, except that it opens a top-level OS -#:: window. In particular you can use new_os_window_with_cwd to open -#:: a window with the current working directory. - -#: Close window - -# map kitty_mod+w close_window -# map shift+cmd+d close_window - -#: Next window - -# map kitty_mod+] next_window - -#: Previous window - -# map kitty_mod+[ previous_window - -#: Move window forward - -# map kitty_mod+f move_window_forward - -#: Move window backward - -# map kitty_mod+b move_window_backward - -#: Move window to top - -# map kitty_mod+` move_window_to_top - -#: Start resizing window - -# map kitty_mod+r start_resizing_window -# map cmd+r start_resizing_window - -#: First window - -# map kitty_mod+1 first_window -# map cmd+1 first_window - -#: Second window - -# map kitty_mod+2 second_window -# map cmd+2 second_window - -#: Third window - -# map kitty_mod+3 third_window -# map cmd+3 third_window - -#: Fourth window - -# map kitty_mod+4 fourth_window -# map cmd+4 fourth_window - -#: Fifth window - -# map kitty_mod+5 fifth_window -# map cmd+5 fifth_window - -#: Sixth window - -# map kitty_mod+6 sixth_window -# map cmd+6 sixth_window - -#: Seventh window - -# map kitty_mod+7 seventh_window -# map cmd+7 seventh_window - -#: Eighth window - -# map kitty_mod+8 eighth_window -# map cmd+8 eighth_window - -#: Ninth window - -# map kitty_mod+9 ninth_window -# map cmd+9 ninth_window - -#: Tenth window - -# map kitty_mod+0 tenth_window - -#: Visually select and focus window - -# map kitty_mod+f7 focus_visible_window -map ctrl+space>tab focus_visible_window - -#:: Display overlay numbers and alphabets on the window, and switch -#:: the focus to the window when you press the key. When there are -#:: only two windows, the focus will be switched directly without -#:: displaying the overlay. You can change the overlay characters and -#:: their order with option visual_window_select_characters. - -#: Visually swap window with another - -# map kitty_mod+f8 swap_with_window -map ctrl+space>ctrl+tab swap_with_window - -#:: Works like focus_visible_window above, but swaps the window. - -map ctrl+space>ctrl+shift+tab detach_window ask - -#: }}} - -#: Tab management {{{ - -#: Next tab - -# map kitty_mod+right next_tab -# map shift+cmd+] next_tab -# map ctrl+tab next_tab - -#: Previous tab - -# map kitty_mod+left previous_tab -# map shift+cmd+[ previous_tab -# map ctrl+shift+tab previous_tab - -#: New tab - -# map kitty_mod+t new_tab -# map cmd+t new_tab -map ctrl+space>t new_tab_with_cwd -map ctrl+space>n new_tab_with_cwd -map ctrl+space>shift+t new_tab -map ctrl+space>shift+n new_tab - -#: Close tab - -# map kitty_mod+q close_tab -# map cmd+w close_tab - -#: Close OS window - -# map shift+cmd+w close_os_window - -#: Move tab forward - -# map kitty_mod+. move_tab_forward - -#: Move tab backward - -# map kitty_mod+, move_tab_backward - -#: Set tab title - -# map kitty_mod+alt+t set_tab_title -# map shift+cmd+i set_tab_title -map ctrl+space>shift+r set_tab_title - - -#: You can also create shortcuts to go to specific tabs, with 1 being -#: the first tab, 2 the second tab and -1 being the previously active -#: tab, and any number larger than the last tab being the last tab:: - -map ctrl+space>1 goto_tab 1 -map ctrl+space>2 goto_tab 2 -map ctrl+space>3 goto_tab 3 -map ctrl+space>4 goto_tab 4 -map ctrl+space>5 goto_tab 5 -map ctrl+space>6 goto_tab 6 -map ctrl+space>7 goto_tab 7 -map ctrl+space>8 goto_tab 8 -map ctrl+space>9 goto_tab 9 -map ctrl+space>0 goto_tab 10 - -#: Just as with new_window above, you can also pass the name of -#: arbitrary commands to run when using new_tab and new_tab_with_cwd. -#: Finally, if you want the new tab to open next to the current tab -#: rather than at the end of the tabs list, use:: - -#: map ctrl+t new_tab !neighbor [optional cmd to run] -#: }}} - -#: Layout management {{{ - -#: Next layout - -# map kitty_mod+l next_layout -map ctrl+space>ctrl+l next_layout - - -#: You can also create shortcuts to switch to specific layouts:: - -#: map ctrl+alt+t goto_layout tall -#: map ctrl+alt+s goto_layout stack - -#: Similarly, to switch back to the previous layout:: - -#: map ctrl+alt+p last_used_layout - -#: There is also a toggle_layout action that switches to the named -#: layout or back to the previous layout if in the named layout. -#: Useful to temporarily "zoom" the active window by switching to the -#: stack layout:: - -#: map ctrl+alt+z toggle_layout stack -map ctrl+space>m zoom - -#: }}} - -#: Font sizes {{{ - -#: You can change the font size for all top-level kitty OS windows at -#: a time or only the current one. - -#: Increase font size - -# map kitty_mod+equal change_font_size all +2.0 -# map kitty_mod+plus change_font_size all +2.0 -# map kitty_mod+kp_add change_font_size all +2.0 -# map cmd+plus change_font_size all +2.0 -# map cmd+equal change_font_size all +2.0 -# map shift+cmd+equal change_font_size all +2.0 - -#: Decrease font size - -# map kitty_mod+minus change_font_size all -2.0 -# map kitty_mod+kp_subtract change_font_size all -2.0 -# map cmd+minus change_font_size all -2.0 -# map shift+cmd+minus change_font_size all -2.0 - -#: Reset font size - -# map kitty_mod+backspace change_font_size all 0 -# map cmd+0 change_font_size all 0 - - -#: To setup shortcuts for specific font sizes:: - -#: map kitty_mod+f6 change_font_size all 10.0 - -#: To setup shortcuts to change only the current OS window's font -#: size:: - -#: map kitty_mod+f6 change_font_size current 10.0 -#: }}} - -#: Select and act on visible text {{{ - -#: Use the hints kitten to select text and either pass it to an -#: external program or insert it into the terminal or copy it to the -#: clipboard. - -#: Open URL - -# map kitty_mod+e open_url_with_hints - -#:: Open a currently visible URL using the keyboard. The program used -#:: to open the URL is specified in open_url_with. - -#: Insert selected path - -# map kitty_mod+p>f kitten hints --type path --program - - -#:: Select a path/filename and insert it into the terminal. Useful, -#:: for instance to run git commands on a filename output from a -#:: previous git command. - -#: Open selected path - -# map kitty_mod+p>shift+f kitten hints --type path - -#:: Select a path/filename and open it with the default open program. - -#: Insert selected line - -# map kitty_mod+p>l kitten hints --type line --program - - -#:: Select a line of text and insert it into the terminal. Useful for -#:: the output of things like: `ls -1`. - -#: Insert selected word - -# map kitty_mod+p>w kitten hints --type word --program - - -#:: Select words and insert into terminal. - -#: Insert selected hash - -# map kitty_mod+p>h kitten hints --type hash --program - - -#:: Select something that looks like a hash and insert it into the -#:: terminal. Useful with git, which uses SHA1 hashes to identify -#:: commits. - -#: Open the selected file at the selected line - -# map kitty_mod+p>n kitten hints --type linenum - -#:: Select something that looks like filename:linenum and open it in -#:: vim at the specified line number. - -#: Open the selected hyperlink - -# map kitty_mod+p>y kitten hints --type hyperlink - -#:: Select a hyperlink (i.e. a URL that has been marked as such by -#:: the terminal program, for example, by `ls --hyperlink=auto`). - - -#: The hints kitten has many more modes of operation that you can map -#: to different shortcuts. For a full description see hints kitten -#: . -#: }}} - -#: Miscellaneous {{{ - -#: Show documentation - -# map kitty_mod+f1 show_kitty_doc overview - -#: Toggle fullscreen - -# map kitty_mod+f11 toggle_fullscreen -# map ctrl+cmd+f toggle_fullscreen - -#: Toggle maximized - -# map kitty_mod+f10 toggle_maximized - -#: Toggle macOS secure keyboard entry - -# map opt+cmd+s toggle_macos_secure_keyboard_entry - -#: Unicode input - -# map kitty_mod+u kitten unicode_input -# map ctrl+cmd+space kitten unicode_input - -#: Edit config file - -# map kitty_mod+f2 edit_config_file -# map cmd+, edit_config_file - -#: Open the kitty command shell - -# map kitty_mod+escape kitty_shell window - -#:: Open the kitty shell in a new window / tab / overlay / os_window -#:: to control kitty using commands. - -#: Increase background opacity - -# map kitty_mod+a>m set_background_opacity +0.1 - -#: Decrease background opacity - -# map kitty_mod+a>l set_background_opacity -0.1 - -#: Make background fully opaque - -# map kitty_mod+a>1 set_background_opacity 1 - -#: Reset background opacity - -# map kitty_mod+a>d set_background_opacity default - -#: Reset the terminal - -# map kitty_mod+delete clear_terminal reset active -# map opt+cmd+r clear_terminal reset active - -#:: You can create shortcuts to clear/reset the terminal. For -#:: example:: - -#:: # Reset the terminal -#:: map f1 clear_terminal reset active -#:: # Clear the terminal screen by erasing all contents -#:: map f1 clear_terminal clear active -#:: # Clear the terminal scrollback by erasing it -#:: map f1 clear_terminal scrollback active -#:: # Scroll the contents of the screen into the scrollback -#:: map f1 clear_terminal scroll active -#:: # Clear everything up to the line with the cursor -#:: map f1 clear_terminal to_cursor active - -#:: If you want to operate on all kitty windows instead of just the -#:: current one, use all instead of active. - -#:: Some useful functions that can be defined in the shell rc files -#:: to perform various kinds of clearing of the current window: - -#:: .. code-block:: sh - -#:: clear-only-screen() { -#:: printf "\e[H\e[2J" -#:: } - -#:: clear-screen-and-scrollback() { -#:: printf "\e[H\e[3J" -#:: } - -#:: clear-screen-saving-contents-in-scrollback() { -#:: printf "\e[H\e[22J" -#:: } - -#:: For instance, using these escape codes, it is possible to remap -#:: Ctrl+L to both scroll the current screen contents into the -#:: scrollback buffer and clear the screen, instead of just clearing -#:: the screen. For ZSH, in ~/.zshrc, add: - -#:: .. code-block:: zsh - -#:: ctrl_l() { -#:: builtin print -rn -- $'\r\e[0J\e[H\e[22J' >"$TTY" -#:: builtin zle .reset-prompt -#:: builtin zle -R -#:: } -#:: zle -N ctrl_l -#:: bindkey '^l' ctrl_l - -#: Clear up to cursor line - -# map cmd+k clear_terminal to_cursor active - -#: Reload kitty.conf - -# map kitty_mod+f5 load_config_file -# map ctrl+cmd+, load_config_file -map ctrl+space>ctrl+r load_config_file - -#:: Reload kitty.conf, applying any changes since the last time it -#:: was loaded. Note that a handful of options cannot be dynamically -#:: changed and require a full restart of kitty. Particularly, when -#:: changing shortcuts for actions located on the macOS global menu -#:: bar, a full restart is needed. You can also map a keybinding to -#:: load a different config file, for example:: - -#:: map f5 load_config /path/to/alternative/kitty.conf - -#:: Note that all options from the original kitty.conf are discarded, -#:: in other words the new configuration *replace* the old ones. - -#: Debug kitty configuration - -# map kitty_mod+f6 debug_config -# map opt+cmd+, debug_config - -#:: Show details about exactly what configuration kitty is running -#:: with and its host environment. Useful for debugging issues. - -#: Send arbitrary text on key presses - -#:: E.g. map ctrl+shift+alt+h send_text all Hello World - -#:: You can tell kitty to send arbitrary (UTF-8) encoded text to the -#:: client program when pressing specified shortcut keys. For -#:: example:: - -#:: map ctrl+alt+a send_text all Special text - -#:: This will send "Special text" when you press the Ctrl+Alt+A key -#:: combination. The text to be sent decodes ANSI C escapes -#:: so you can use escapes like \e to send control -#:: codes or \u21fb to send Unicode characters (or you can just input -#:: the Unicode characters directly as UTF-8 text). You can use -#:: `kitten show_key` to get the key escape codes you want to -#:: emulate. - -#:: The first argument to send_text is the keyboard modes in which to -#:: activate the shortcut. The possible values are normal, -#:: application, kitty or a comma separated combination of them. The -#:: modes normal and application refer to the DECCKM cursor key mode -#:: for terminals, and kitty refers to the kitty extended keyboard -#:: protocol. The special value all means all of them. - -#:: Some more examples:: - -#:: # Output a word and move the cursor to the start of the line (like typing and pressing Home) -#:: map ctrl+alt+a send_text normal Word\e[H -#:: map ctrl+alt+a send_text application Word\eOH -#:: # Run a command at a shell prompt (like typing the command and pressing Enter) -#:: map ctrl+alt+a send_text normal,application some command with arguments\r - -#: Open kitty Website - -# map shift+cmd+/ open_url https://sw.kovidgoyal.net/kitty/ - -#: Hide macOS kitty application - -# map cmd+h hide_macos_app - -#: Hide macOS other applications - -# map opt+cmd+h hide_macos_other_apps - -#: Minimize macOS window - -# map cmd+m minimize_macos_window - -#: Quit kitty - -# map cmd+q quit - -#: }}} - -#: }}} diff --git a/Configs/lazygit/.config/lazygit/config.yml b/Configs/lazygit/.config/lazygit/config.yml deleted file mode 100644 index 55e13ca..0000000 --- a/Configs/lazygit/.config/lazygit/config.yml +++ /dev/null @@ -1,495 +0,0 @@ -# Config relating to the Lazygit UI -gui: - # The number of lines you scroll by when scrolling the main window - scrollHeight: 2 - # If true, allow scrolling past the bottom of the content in the main window - scrollPastBottom: true - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin - scrollOffMargin: 2 - # One of: 'margin' (default) | 'jump' - scrollOffBehavior: margin - # If true, capture mouse events. - # When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS. - mouseEvents: true - # If true, do not show a warning when discarding changes in the staging view. - skipDiscardChangeWarning: false - # If true, do not show warning when applying/popping the stash - skipStashWarning: false - # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. - skipNoStagedFilesWarning: false - # If true, do not show a warning when rewording a commit via an external editor - skipRewordInEditorWarning: false - # Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section. - # Number from 0 to 1.0. - sidePanelWidth: 0.3333 - # If true, increase the height of the focused side window; creating an accordion effect. - expandFocusedSidePanel: false - # The weight of the expanded side panel, relative to the other panels. 2 means - # twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true. - expandedSidePanelWeight: 2 - # Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split. - # Options are: - # - 'horizontal': split the window horizontally - # - 'vertical': split the window vertically - # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically - mainPanelSplitMode: flexible - # How the window is split when in half screen mode (i.e. after hitting '+' once). - # Possible values: - # - 'left': split the window horizontally (side panel on the left, main view on the right) - # - 'top': split the window vertically (side panel on top, main view below) - enlargedSideViewLocation: left - # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' - language: auto - # Format used when displaying time e.g. commit time. - # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format - timeFormat: 02 Jan 06 - # Format used when displaying time if the time is less than 24 hours ago. - # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format - shortTimeFormat: 3:04PM - # Config relating to colors and styles. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes - theme: - activeBorderColor: - - '#8bd5ca' - - bold - inactiveBorderColor: - - '#a5adcb' - optionsTextColor: - - '#8aadf4' - selectedLineBgColor: - - '#363a4f' - cherryPickedCommitBgColor: - - '#494d64' - cherryPickedCommitFgColor: - - '#8bd5ca' - unstagedChangesColor: - - '#ed8796' - defaultFgColor: - - '#cad3f5' - searchingActiveBorderColor: - - '#eed49f' - # Background color of selected line when view doesn't have focus. - inactiveViewSelectedLineBgColor: - - bold - # Foreground color of marked base commit (for rebase) - markedBaseCommitFgColor: - - blue - # Background color of marked base commit (for rebase) - markedBaseCommitBgColor: - - yellow - authorColors: - '*': '#b7bdf8' - # Config relating to the commit length indicator - commitLength: - # If true, show an indicator of commit message length - show: true - # If true, show the '5 of 20' footer at the bottom of list views - showListFooter: true - # If true, display the files in the file views as a tree. If false, display the files as a flat list. - # This can be toggled from within Lazygit with the '~' key, but that will not change the default. - showFileTree: true - # If true, show a random tip in the command log when Lazygit starts - showRandomTip: true - # If true, show the command log - showCommandLog: true - # If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action. - showBottomLine: true - # If true, show jump-to-window keybindings in window titles. - showPanelJumps: true - # Deprecated: use nerdFontsVersion instead - showIcons: false - # Nerd fonts version to use. - # One of: '2' | '3' | empty string (default) - # If empty, do not show icons. - nerdFontsVersion: "3" - # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. - showFileIcons: true - # Length of author name in (non-expanded) commits view. 2 means show initials only. - commitAuthorShortLength: 2 - # Length of author name in expanded commits view. 2 means show initials only. - commitAuthorLongLength: 17 - # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. - commitHashLength: 8 - # If true, show commit hashes alongside branch names in the branches view. - showBranchCommitHash: false - # Whether to show the divergence from the base branch in the branches view. - # One of: 'none' | 'onlyArrow' | 'arrowAndNumber' - showDivergenceFromBaseBranch: none - # Height of the command log view - commandLogSize: 8 - # Whether to split the main window when viewing file changes. - # One of: 'auto' | 'always' - # If 'auto', only split the main window when a file has both staged and unstaged changes - splitDiff: auto - # Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default). - # One of: 'normal' (default) | 'half' | 'full' - screenMode: normal - # Window border style. - # One of 'rounded' (default) | 'single' | 'double' | 'hidden' - border: rounded - # If true, show a seriously epic explosion animation when nuking the working tree. - animateExplosion: true - # Whether to stack UI components on top of each other. - # One of 'auto' (default) | 'always' | 'never' - portraitMode: auto - # How things are filtered when typing '/'. - # One of 'substring' (default) | 'fuzzy' - filterMode: fuzzy - # Config relating to the spinner. - spinner: - # The frames of the spinner animation. - frames: - - '|' - - / - - '-' - - \ - # The "speed" of the spinner in milliseconds. - rate: 50 - # Status panel view. - # One of 'dashboard' (default) | 'allBranchesLog' - statusPanelView: dashboard - # If true, jump to the Files panel after popping a stash - switchToFilesAfterStashPop: true - # If true, jump to the Files panel after applying a stash - switchToFilesAfterStashApply: true -# Config relating to git -git: - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md - paging: - # Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never' - colorArg: always - # e.g. - # diff-so-fancy - # delta --dark --paging=never - # ydiff -p cat -s --wrap --width={{columnWidth}} - pager: "" - # If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager). - useConfig: true - # e.g. 'difft --color=always' - externalDiffCommand: "" - # Config relating to committing - commit: - # If true, pass '--signoff' flag when committing - signOff: false - # Automatic WYSIWYG wrapping of the commit message as you type - autoWrapCommitMessage: true - # If autoWrapCommitMessage is true, the width to wrap to - autoWrapWidth: 72 - # Config relating to merging - merging: - # If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang - # Only applicable to unix users. - manualCommit: false - # Extra args passed to `git merge`, e.g. --no-ff - args: "" - # The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders. - squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}} - # list of branches that are considered 'main' branches, used when displaying commits - mainBranches: - - master - - main - # Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP' - skipHookPrefix: WIP - # If true, periodically fetch from remote - autoFetch: true - # If true, periodically refresh files and submodules - autoRefresh: true - # If true, pass the --all arg to git fetch - fetchAll: true - # If true, lazygit will automatically stage files that used to have merge - # conflicts but no longer do; and it will also ask you if you want to - # continue a merge or rebase if you've resolved all conflicts. If false, it - # won't do either of these things. - autoStageResolvedConflicts: true - # Command used when displaying the current branch git log in the main window - branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} -- - # Command used to display git log of all branches in the main window. - # Deprecated: User `allBranchesLogCmds` instead. - allBranchesLogCmd: git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium - # If true, do not spawn a separate process when using GPG - overrideGpg: false - # If true, do not allow force pushes - disableForcePushing: false - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix - # commitPrefix: - # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" - # pattern: "" - - # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " - # replace: "" - - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix - branchPrefix: "" - # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 - # (This should really be under 'gui', not 'git') - parseEmoji: true - # Config for showing the log in the commits view - log: - # One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default' - # 'topo-order' makes it easier to read the git log graph, but commits may not - # appear chronologically. See https://git-scm.com/docs/ - # - # Deprecated: Configure this with `Log menu -> Commit sort order` ( in the commits window by default). - order: topo-order - # This determines whether the git graph is rendered in the commits panel - # One of 'always' | 'never' | 'when-maximised' - # - # Deprecated: Configure this with `Log menu -> Show git graph` ( in the commits window by default). - showGraph: always - # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) - showWholeGraph: false - # When copying commit hashes to the clipboard, truncate them to this - # length. Set to 40 to disable truncation. - truncateCopiedCommitHashesTo: 12 -# 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: "" - # Command for editing a file at a given line number. Should contain - # "{{filename}}", and may optionally contain "{{line}}". - editAtLine: "" - # Same as EditAtLine, except that the command needs to wait until the - # window is closed. - editAtLineAndWait: "" - # For opening a directory in an editor - openDirInEditor: "" - # A built-in preset that sets all of the above settings. Supported presets - # are defined in the getPreset function in editor_presets.go. - editPreset: "nvim-remote" - # Command for opening a file, as if the file is double-clicked. Should - # contain "{{filename}}", but doesn't support "{{line}}". - open: "xdg-open {{filename}} >/dev/null" - # Command for opening a link. Should contain "{{link}}". - openLink: "" - # EditCommand is the command for editing a file. - # Deprecated: use Edit instead. Note that semantics are different: - # EditCommand is just the command itself, whereas Edit contains a - # "{{filename}}" variable. - editCommand: "" - # EditCommandTemplate is the command template for editing a file - # Deprecated: use EditAtLine instead. - editCommandTemplate: "" - # OpenCommand is the command for opening a file - # Deprecated: use Open instead. - openCommand: "" - # OpenLinkCommand is the command for opening a link - # Deprecated: use OpenLink instead. - openLinkCommand: "" - # CopyToClipboardCmd is the command for copying to clipboard. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard - copyToClipboardCmd: "" - # ReadFromClipboardCmd is the command for reading the clipboard. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard - readFromClipboardCmd: "" -# If true, don't display introductory popups upon opening Lazygit. -disableStartupPopups: false -# What to do when opening Lazygit outside of a git repo. -# - 'prompt': (default) ask whether to initialize a new repo or open in the most recent repo -# - 'create': initialize a new repo -# - 'skip': open most recent repo -# - 'quit': exit Lazygit -notARepository: quit -# If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit. -promptToReturnFromSubprocess: true -# Keybindings -keybinding: - universal: - quit: q - quit-alt1: - return: - quitWithoutChangingDirectory: Q - togglePanel: - prevItem: - nextItem: - prevItem-alt: k - nextItem-alt: j - prevPage: ',' - nextPage: . - scrollLeft: H - scrollRight: L - gotoTop: < - gotoBottom: '>' - toggleRangeSelect: v - rangeSelectDown: - rangeSelectUp: - prevBlock: - nextBlock: - prevBlock-alt: h - nextBlock-alt: l - nextBlock-alt2: - prevBlock-alt2: - jumpToBlock: - - "1" - - "2" - - "3" - - "4" - - "5" - nextMatch: "n" - prevMatch: "N" - startSearch: / - optionMenu: - optionMenu-alt1: '?' - select: - goInto: - confirm: - confirmInEditor: - remove: d - new: "n" - edit: e - openFile: o - scrollUpMain: - scrollDownMain: - scrollUpMain-alt1: K - scrollDownMain-alt1: J - scrollUpMain-alt2: - scrollDownMain-alt2: - executeShellCommand: ':' - createRebaseOptionsMenu: m - # 'Files' appended for legacy reasons - pushFiles: P - # 'Files' appended for legacy reasons - pullFiles: p - refresh: R - createPatchOptionsMenu: - nextTab: ']' - prevTab: '[' - nextScreenMode: + - prevScreenMode: _ - undo: z - redo: - filteringMenu: - diffingMenu: W - diffingMenu-alt: - copyToClipboard: - openRecentRepos: - submitEditorText: - extrasMenu: '@' - toggleWhitespaceInDiffView: - increaseContextInDiffView: '}' - decreaseContextInDiffView: '{' - increaseRenameSimilarityThreshold: ) - decreaseRenameSimilarityThreshold: ( - openDiffTool: - status: - checkForUpdate: u - recentRepos: - allBranchesLogGraph: a - files: - commitChanges: c - commitChangesWithoutHook: w - amendLastCommit: A - commitChangesWithEditor: C - findBaseCommitForFixup: - confirmDiscard: x - ignoreFile: i - refreshFiles: r - stashAllChanges: s - viewStashOptions: S - toggleStagedAll: a - viewResetOptions: D - fetch: f - toggleTreeView: '`' - openMergeTool: M - openStatusFilter: - copyFileInfoToClipboard: "y" - branches: - createPullRequest: o - viewPullRequestOptions: O - copyPullRequestURL: - checkoutBranchByName: c - forceCheckoutBranch: F - rebaseBranch: r - renameBranch: R - mergeIntoCurrentBranch: M - viewGitFlowOptions: i - fastForward: f - createTag: T - pushTag: P - setUpstream: u - fetchRemote: f - sortOrder: s - worktrees: - viewWorktreeOptions: w - commits: - squashDown: s - renameCommit: r - renameCommitWithEditor: R - viewResetOptions: g - markCommitAsFixup: f - createFixupCommit: F - squashAboveCommits: S - moveDownCommit: - moveUpCommit: - amendToCommit: A - resetCommitAuthor: a - pickCommit: p - revertCommit: t - cherryPickCopy: C - pasteCommits: V - markCommitAsBaseForRebase: B - tagCommit: T - checkoutCommit: - resetCherryPick: - copyCommitAttributeToClipboard: "y" - openLogMenu: - openInBrowser: o - viewBisectOptions: b - startInteractiveRebase: i - amendAttribute: - resetAuthor: a - setAuthor: A - addCoAuthor: c - stash: - popStash: g - renameStash: r - commitFiles: - checkoutCommitFile: c - main: - toggleSelectHunk: a - pickBothHunks: b - editSelectHunk: E - submodules: - init: i - update: u - bulkMenu: b - commitMessage: - commitMenu: -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/Configs/mise/.config/mise/config.toml b/Configs/mise/.config/mise/config.toml deleted file mode 100644 index 33a93e4..0000000 --- a/Configs/mise/.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/Configs/nvim/.config/nvim/after/queries/blade/highlights.scm b/Configs/nvim/.config/nvim/after/queries/blade/highlights.scm deleted file mode 100644 index 29bec30..0000000 --- a/Configs/nvim/.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/Configs/nvim/.config/nvim/after/queries/blade/injections.scm b/Configs/nvim/.config/nvim/after/queries/blade/injections.scm deleted file mode 100644 index 0fde1fd..0000000 --- a/Configs/nvim/.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/Configs/nvim/.config/nvim/init.lua b/Configs/nvim/.config/nvim/init.lua deleted file mode 100644 index 2925f22..0000000 --- a/Configs/nvim/.config/nvim/init.lua +++ /dev/null @@ -1,7 +0,0 @@ --- Loadnoptions before anything -require("aleidk.options") - -require("aleidk.lazy") - -require("aleidk.keymaps") -require("aleidk.autocmds") diff --git a/Configs/nvim/.config/nvim/lazy-lock.json b/Configs/nvim/.config/nvim/lazy-lock.json deleted file mode 100644 index 507d965..0000000 --- a/Configs/nvim/.config/nvim/lazy-lock.json +++ /dev/null @@ -1,57 +0,0 @@ -{ - "LuaSnip": { "branch": "master", "commit": "0f7bbce41ea152a94d12aea286f2ce98e63c0f58" }, - "blink.cmp": { "branch": "main", "commit": "81069e3955a8b4d5063287a2a6a47a844e9ca2cb" }, - "blink.compat": { "branch": "main", "commit": "08943fdf2eb00432d6205db6d0239434135416bd" }, - "catppuccin": { "branch": "main", "commit": "faf15ab0201b564b6368ffa47b56feefc92ce3f4" }, - "ccc.nvim": { "branch": "main", "commit": "7c639042583c7bdc7ce2e37e5a0e0aa6d0659c6a" }, - "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "a203480a350b03092e473bf3001733d547160a73" }, - "copilot-lualine": { "branch": "main", "commit": "f40450c3e138766026327e7807877ea860618258" }, - "dressing.nvim": { "branch": "master", "commit": "fc78a3ca96f4db9f8893bb7e2fd9823e0780451b" }, - "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" }, - "gitsigns.nvim": { "branch": "main", "commit": "5f808b5e4fef30bd8aca1b803b4e555da07fc412" }, - "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, - "indent-blankline.nvim": { "branch": "master", "commit": "7871a88056f7144defca9c931e311a3134c5d509" }, - "lazy.nvim": { "branch": "main", "commit": "56ead98e05bb37a4ec28930a54d836d033cf00f2" }, - "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, - "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, - "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "43894adcf10bb1190c2184bd7c1750e8ea2b3dce" }, - "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, - "mini.clue": { "branch": "main", "commit": "8e329f586a7cfd06085859066a4b60965fc4ecce" }, - "mini.comment": { "branch": "main", "commit": "03c13e37318bdb18481311c0ac1adc9ed731caf1" }, - "mini.surround": { "branch": "main", "commit": "0e67c4bc147f2a15cee94e7c94dcc0e115b9f55e" }, - "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" }, - "noice.nvim": { "branch": "main", "commit": "c6f6fb178ebe9b4fd90383de743c3399f8c3a37c" }, - "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, - "nvim-autopairs": { "branch": "master", "commit": "b464658e9b880f463b9f7e6ccddd93fb0013f559" }, - "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" }, - "nvim-lspconfig": { "branch": "master", "commit": "4ae9796c4e95ca84ec77946a9f9089b8f1a3eec9" }, - "nvim-notify": { "branch": "master", "commit": "fbef5d32be8466dd76544a257d3f3dce20082a07" }, - "nvim-treesitter": { "branch": "master", "commit": "8d4fdc5e47e2a4e00179e43f56221250ce365973" }, - "nvim-treesitter-context": { "branch": "master", "commit": "6b081ea63a3711243d11540ce28ccdb6f35ecd33" }, - "nvim-treesitter-textobjects": { "branch": "master", "commit": "ad8f0a472148c3e0ae9851e26a722ee4e29b1595" }, - "nvim-ts-autotag": { "branch": "main", "commit": "e239a560f338be31337e7abc3ee42515daf23f5e" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" }, - "nvim-web-devicons": { "branch": "master", "commit": "edbe0a65cfacbbfff6a4a1e98ddd60c28c560509" }, - "overseer.nvim": { "branch": "master", "commit": "10ee48ff96c8d1049efb278ea4c8cf9f3b0e4326" }, - "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "remote-nvim.nvim": { "branch": "main", "commit": "66fc20fd259401c7bb6ac5189ecb6283c2eb65d2" }, - "remote-sshfs.nvim": { "branch": "main", "commit": "03f6c40c4032eeb1ab91368e06db9c3f3a97a75d" }, - "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" }, - "smart-splits.nvim": { "branch": "master", "commit": "fc7bb00fe67ab504356bed4310d23c2e4cb4b06b" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, - "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, - "treesj": { "branch": "main", "commit": "03415ac60791d48e120a80d37e080744faf3ac15" }, - "trouble.nvim": { "branch": "main", "commit": "46cf952fc115f4c2b98d4e208ed1e2dce08c9bf6" }, - "ts-node-action": { "branch": "master", "commit": "6d3b60754fd87963d70eadaa2f77873b447eac26" }, - "typescript-tools.nvim": { "branch": "master", "commit": "346062e8cd06e82776b60785a040dfbbdcb6de77" }, - "undotree": { "branch": "master", "commit": "78b5241191852ffa9bb5da5ff2ee033160798c3b" }, - "vim-dadbod": { "branch": "master", "commit": "fe5a55e92b2dded7c404006147ef97fb073d8b1b" }, - "vim-dadbod-completion": { "branch": "master", "commit": "da0e75c09c27a82aad078d993bb1b2f4afd43427" }, - "vim-dadbod-ui": { "branch": "master", "commit": "28a16902cb2134c934b85da5250033ee43b0dee5" }, - "vim-illuminate": { "branch": "master", "commit": "5eeb7951fc630682c322e88a9bbdae5c224ff0aa" }, - "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "yazi.nvim": { "branch": "main", "commit": "053867916a9be3cb46f84b6f095ee731bbddd213" } -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/autocmds.lua b/Configs/nvim/.config/nvim/lua/aleidk/autocmds.lua deleted file mode 100644 index 22c9fbd..0000000 --- a/Configs/nvim/.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/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua b/Configs/nvim/.config/nvim/lua/aleidk/keymaps.lua deleted file mode 100644 index fde7c73..0000000 --- a/Configs/nvim/.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/Configs/nvim/.config/nvim/lua/aleidk/lazy.lua b/Configs/nvim/.config/nvim/lua/aleidk/lazy.lua deleted file mode 100644 index 5557918..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/lazy.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Bootstrap lazy.nvim --- Load this file after options has been set - -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end -end -vim.opt.rtp:prepend(lazypath) - --- enabled_plugins is injected as a local variable in the top of the file by the dotfile manager --- See: .dotter/global.toml inside [nvim.files] & [nvim.variables] table -require("lazy").setup({ - spec = { - { import = "aleidk.plugins-core" }, - { import = "aleidk.plugins-base" }, - { import = "aleidk.plugins-ide" }, - }, - - install = { colorscheme = { "catppuccin" } }, - -- checker = { enabled = true }, -}) - -return { - enabled_plugins -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/options.lua b/Configs/nvim/.config/nvim/lua/aleidk/options.lua deleted file mode 100644 index c51504c..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/options.lua +++ /dev/null @@ -1,135 +0,0 @@ --- [[ Setting options ]] --- See `:help vim.o` - --- Set as the leader key -vim.g.mapleader = " " -vim.g.maplocalleader = " " - -vim.o.diffopt = "vertical,closeoff,filler" - -local opt = vim.opt - --- stylua: ignore -opt.autowrite = true -- Enable auto write -opt.clipboard = "unnamedplus" -- Sync with system clipboard -opt.completeopt = "menu,menuone,noselect" -opt.conceallevel = 2 -- Hide * markup for bold and italic -opt.confirm = true -- Confirm to save changes before exiting modified buffer -opt.cursorline = true -- Enable highlighting of the current line -opt.expandtab = true -- Use spaces instead of tabs -opt.formatoptions = "jcroqlnt" -- tcqj -opt.grepformat = "%f:%l:%c:%m" -opt.grepprg = "rg --vimgrep" -opt.ignorecase = true -- Ignore case -opt.inccommand = "nosplit" -- preview incremental substitute -opt.laststatus = 0 -opt.list = true -- Show some invisible characters (tabs... -opt.mouse = "a" -- Enable mouse mode -opt.number = true -- Print line number -opt.pumblend = 10 -- Popup blend -opt.pumheight = 10 -- Maximum number of entries in a popup -opt.relativenumber = true -- Relative line numbers -opt.scrolloff = 15 -- Lines of context -opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize" } -opt.shiftround = true -- Round indent -opt.shiftwidth = 2 -- Size of an indent --- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages -opt.showmode = false -- Dont show mode since we have a statusline -opt.sidescrolloff = 8 -- Columns of context -opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time -opt.smartcase = true -- Don't ignore case with capitals -opt.smartindent = true -- Insert indents automatically -opt.spelllang = { "en" } -opt.splitbelow = true -- Put new windows below current -opt.splitright = true -- Put new windows right of current -opt.tabstop = 2 -- Number of spaces tabs count for -opt.termguicolors = true -- True color support -opt.timeoutlen = 300 -opt.undofile = true -opt.undolevels = 10000 -opt.updatetime = 200 -- Save swap file and trigger CursorHold -opt.wildmode = "longest,list:full" -- Command-line completion mode -opt.winminwidth = 5 -- Minimum window width -opt.wrap = false -- Disable line wrap - -vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" - -local fn = vim.fn - --- Quickfix customization -function _G.qftf(info) - local items - local ret = {} - -- The name of item in list is based on the directory of quickfix window. - -- Change the directory for quickfix window make the name of item shorter. - -- It's a good opportunity to change current directory in quickfixtextfunc :) - -- - -- local alterBufnr = fn.bufname('#') -- alternative buffer is the buffer before enter qf window - -- local root = getRootByAlterBufnr(alterBufnr) - -- vim.cmd(('noa lcd %s'):format(fn.fnameescape(root))) - -- - if info.quickfix == 1 then - items = fn.getqflist({ id = info.id, items = 0 }).items - else - items = fn.getloclist(info.winid, { id = info.id, items = 0 }).items - end - local limit = 31 - local fnameFmt1, fnameFmt2 = "%-" .. limit .. "s", "…%." .. (limit - 1) .. "s" - local validFmt = "%s │%5d:%-3d│%s %s" - for i = info.start_idx, info.end_idx do - local e = items[i] - local fname = "" - local str - if e.valid == 1 then - if e.bufnr > 0 then - fname = fn.bufname(e.bufnr) - if fname == "" then - fname = "[No Name]" - else - fname = fname:gsub("^" .. vim.env.HOME, "~") - end - -- char in fname may occur more than 1 width, ignore this issue in order to keep performance - if #fname <= limit then - fname = fnameFmt1:format(fname) - else - fname = fnameFmt2:format(fname:sub(1 - limit)) - end - end - local lnum = e.lnum > 99999 and -1 or e.lnum - local col = e.col > 999 and -1 or e.col - local qtype = e.type == "" and "" or " " .. e.type:sub(1, 1):upper() - str = validFmt:format(fname, lnum, col, qtype, e.text) - else - str = e.text - end - table.insert(ret, str) - end - return ret -end - --- TODO: how to customize? -vim.o.qftf = "{info -> v:lua._G.qftf(info)}" - -vim.filetype.add({ - -- Detect and assign filetype based on the extension of the filename - extension = { - mdx = "mdx", - log = "log", - conf = "conf", - env = "dotenv", - }, - -- Detect and apply filetypes based on the entire filename - filename = { - [".env"] = "dotenv", - ["env"] = "dotenv", - ["tsconfig.json"] = "jsonc", - }, - -- Detect and apply filetypes based on certain patterns of the filenames - pattern = { - -- INFO: Match filenames like - ".env.example", ".env.local" and so on - ["%.env%.[%w_.-]+"] = "dotenv", - [".*%.blade%.php"] = "blade", - [".*%.hurl.*"] = "hurl", - [".*/hypr/.*%.conf"] = "hyprlang", - }, -}) diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/auto-pairs.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/auto-pairs.lua deleted file mode 100644 index 883891d..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/auto-pairs.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "windwp/nvim-autopairs", - event = "InsertEnter", - config = true, - opts = {}, -- this is equalent to setup({}) function -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/bookmarks.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/bookmarks.lua deleted file mode 100644 index a68f973..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/bookmarks.lua +++ /dev/null @@ -1,38 +0,0 @@ -local function select_or_create(search) - local grapple = require("grapple") - - if grapple.exists(search) then - grapple.select(search) - else - grapple.tag() - end -end - -return { - "cbochs/grapple.nvim", - dependencies = { - { "nvim-tree/nvim-web-devicons", lazy = true }, - }, - lazy = false, - cmd = "Grapple", - config = function() - local telescope = require("telescope") - telescope.load_extension("grapple") - end, - keys = { - { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, - { "D", "Grapple reset", desc = "Delete all bookmarks" }, - { "t", "Grapple toggle_tags", desc = "Toggle bookmarks window" }, - { "T", "Grapple toggle_scopes", desc = "Toggle scopes window" }, - { "n", "Grapple cycle forward", desc = "Next bookmark" }, - { "N", "Grapple cycle backward", desc = "Prev bookmark" }, - { "j", function() select_or_create({ index = 1 }) end, desc = "Go or create bookmark 1" }, - { "k", function() select_or_create({ index = 2 }) end, desc = "Go or create bookmark 2" }, - { "l", function() select_or_create({ index = 3 }) end, desc = "Go or create bookmark 3" }, - { "ñ", function() select_or_create({ index = 4 }) end, desc = "Go or create bookmark 4" }, - { "J", "Grapple tag index=1", desc = "Override bookmark 1" }, - { "K", "Grapple tag index=2", desc = "Override bookmark 2" }, - { "L", "Grapple tag index=3", desc = "Override bookmark 3" }, - { "Ñ", "Grapple tag index=4", desc = "Override bookmark 4" }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/comments.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/comments.lua deleted file mode 100644 index edd3413..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/comments.lua +++ /dev/null @@ -1,28 +0,0 @@ -return { - { - "echasnovski/mini.comment", - version = "*", - event = "VeryLazy", - dependencies = { - { "nvim-treesitter/nvim-treesitter-context" }, - }, - opts = { - options = { - custom_commentstring = function() - return require("ts_context_commentstring.internal").calculate_commentstring() - or vim.bo.commentstring - end, - }, - }, - }, - { - "LudoPinelli/comment-box.nvim", - opts = { - outer_blank_lines = true, - }, - keys = { - { "gcb", function() require("comment-box").lcbox() end, { desc = "Create a comment box", mode = { "n", "v" }, } }, - { "gcl", function() require("comment-box").llline() end, { desc = "Create a comment line", mode = { "n", "v" }, } }, - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/file-explorer.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/file-explorer.lua deleted file mode 100644 index 2f76b72..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/file-explorer.lua +++ /dev/null @@ -1,33 +0,0 @@ -return { - "mikavilpas/yazi.nvim", - keys = { - { - "e", - "Yazi", - desc = "Open yazi at the current file", - }, - { - -- Open in the current working directory - "E", - "Yazi cwd", - desc = "Open the file manager in nvim's working directory", - }, - }, - opts = { - -- if you want to open yazi instead of netrw, see below for more info - open_for_directories = true, - open_multiple_tabs = true, - floating_window_scaling_factor = 1, - keymaps = { - show_help = '', - open_file_in_vertical_split = '', - open_file_in_horizontal_split = '', - open_file_in_tab = '', - grep_in_directory = '', - cycle_open_buffers = '', - copy_relative_path_to_selected_files = '', - send_to_quickfix_list = '', - change_working_directory = "", - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/indent-blankline.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/indent-blankline.lua deleted file mode 100644 index f529305..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/indent-blankline.lua +++ /dev/null @@ -1,30 +0,0 @@ -return { - -- Add indentation guides even on blank lines - "lukas-reineke/indent-blankline.nvim", - dependencies = { "nvim-treesitter/nvim-treesitter" }, - main = "ibl", - opts = { - -- char = "▏", - indent = { - char = "│", - tab_char = "│", - }, - scope = { - enabled = true, - }, - exclude = { - filetypes = { - "help", - "alpha", - "dashboard", - "neo-tree", - "Trouble", - "lazy", - "mason", - "notify", - "toggleterm", - "lazyterm", - }, - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/treesitter.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/treesitter.lua deleted file mode 100644 index c0077f4..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/treesitter.lua +++ /dev/null @@ -1,90 +0,0 @@ -return { - -- Highlight, edit, and navigate code - "nvim-treesitter/nvim-treesitter", - event = { "BufReadPost", "BufNewFile", "BufWritePre", "VeryLazy" }, - dependencies = { - "nvim-treesitter/nvim-treesitter-textobjects", - "JoosepAlviste/nvim-ts-context-commentstring", - "nvim-treesitter/nvim-treesitter-context", - { "windwp/nvim-ts-autotag", opts = {} }, - }, - build = ":TSUpdate", - config = function() - ---@diagnostic disable-next-line: missing-fields - require("nvim-treesitter.configs").setup({ - -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) - auto_install = true, - highlight = { enable = true }, - indent = { enable = true }, - incremental_selection = { - enable = true, - }, - textobjects = { - select = { - enable = true, - lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim - keymaps = { - -- You can use the capture groups defined in textobjects.scm - ["aa"] = "@parameter.outer", - ["ia"] = "@parameter.inner", - ["af"] = "@function.outer", - ["if"] = "@function.inner", - ["ac"] = "@class.outer", - ["ic"] = "@class.inner", - }, - }, - move = { - enable = true, - set_jumps = true, -- whether to set jumps in the jumplist - goto_previous = { -- current or last start of object - ["[["] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, - ["[f"] = "@function.outer", - ["[c"] = "@class.outer", - }, - goto_next = { -- next object end - ["]]"] = { query = "@local.scope", query_group = "locals", desc = "Next scope" }, - ["]f"] = "@function.outer", -- current function end - ["]c"] = "@class.outer", - }, - }, - swap = { - enable = true, - swap_next = { - ["ln"] = "@parameter.inner", - }, - swap_previous = { - ["lN"] = "@parameter.inner", - }, - }, - }, - -- autotag = { enable = true }, - }) - - require('ts_context_commentstring').setup { - enable_autocmd = false, - } - - local ts_repeat_move = require "nvim-treesitter.textobjects.repeatable_move" - - -- Repeat movement with ; and , - -- ensure , goes forward and ; goes backward regardless of the last direction - vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_next) - vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move_previous) - - -- Optionally, make builtin f, F, t, T also repeatable with ; and , - vim.keymap.set({ "n", "x", "o" }, "f", ts_repeat_move.builtin_f_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "F", ts_repeat_move.builtin_F_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "t", ts_repeat_move.builtin_t_expr, { expr = true }) - vim.keymap.set({ "n", "x", "o" }, "T", ts_repeat_move.builtin_T_expr, { expr = true }) - - vim.keymap.set("n", "[u", function() - require("treesitter-context").go_to_context() - end, { silent = true, noremap = true, desc = "Go up when context is out of view" }) - - vim.opt.foldmethod = "expr" - vim.opt.foldexpr = "nvim_treesitter#foldexpr()" - - -- Uncoment this line to disable auto folding on file open - vim.cmd("set nofoldenable") - end, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/ui.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/ui.lua deleted file mode 100644 index b587ebb..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/ui.lua +++ /dev/null @@ -1,217 +0,0 @@ -local icons = require("aleidk.constants").icons - -return { - { - "rcarriga/nvim-notify", - opts = { - render = "compact", - fps = "60", - timeout = 2000, - stages = "slide", - icons = { - DEBUG = "", - TRACE = "✎", - ERROR = icons.diagnostics.Error, - INFO = icons.diagnostics.Info, - WARN = icons.diagnostics.Warn, - } - } - }, - { - -- better imputs - "stevearc/dressing.nvim", - opts = { - input = { - -- handle by noice - enabled = false, - }, - }, - }, - { - "folke/noice.nvim", - event = "VeryLazy", - dependencies = { - "MunifTanjim/nui.nvim", - "rcarriga/nvim-notify", - }, - ---@type NoiceConfig - opts = { - presets = { - bottom_search = true, - long_message_to_split = true, - inc_rename = true, - lsp_doc_border = true, - }, - lsp = { - override = { - -- override the default lsp markdown formatter with Noice - ["vim.lsp.util.convert_input_to_markdown_lines"] = true, - -- override the lsp markdown formatter with Noice - ["vim.lsp.util.stylize_markdown"] = true, - -- override cmp documentation with Noice (needs the other options to work) - ["cmp.entry.get_documentation"] = true, - }, - message = { - view = "mini", - view_search = false, - }, - progress = { - view = "mini_left" - } - }, - ---@type NoiceRouteConfig[] - routes = { - { - -- Don't show these messages - opts = { skip = true }, - filter = { - any = { - { - event = "msg_show", - kind = "search_count", - }, - { - event = "msg_show", - kind = "", - find = "written", -- file saved msg - }, - { - event = "msg_show", - kind = "", - find = "yazi.nvim", - }, - { - event = "msg_show", - kind = "", - find = "%d+ (more|fewer) lines", -- undo/redo msg - }, - } - }, - }, - { - filter = { - event = "notify", - min_height = 15 - }, - view = 'popup', - }, - { - filter = { - event = "notify", - kind = "info" - }, - view = 'mini' - }, - }, - ---@type NoiceConfigViews - views = { - notify = { - merge = true - }, - cmdline_popup = { - position = { - row = 5, - col = "50%", - }, - size = { - width = 60, - height = "auto", - }, - }, - popupmenu = { - relative = "editor", - position = { - row = 8, - col = "50%", - }, - size = { - width = 60, - height = 10, - }, - border = { - style = "rounded", - padding = { 0, 1 }, - }, - win_options = { - winhighlight = { Normal = "Normal", FloatBorder = "DiagnosticInfo" }, - }, - }, - mini_left = { - backend = "mini", - relative = "editor", - align = "left", - timeout = 2000, - reverse = true, - focusable = false, - position = { - row = -1, - col = 0, - }, - size = { - width = "auto", - height = "auto", - max_height = 10, - }, - border = { - style = "none", - }, - zindex = 60, - win_options = { - winbar = "", - foldenable = false, - winblend = 30, - winhighlight = { - Normal = "NoiceMini", - IncSearch = "", - CurSearch = "", - Search = "", - }, - }, - }, - }, - }, - -- stylua: ignore - keys = { - { - "", - function() require("noice").redirect(vim.fn.getcmdline()) end, - mode = "c", - desc = - "Redirect Cmdline" - }, - { - "um", - function() require("noice").cmd("last") end, - desc = - "Messages last" - }, - { - "uM", - function() require("noice").cmd("history") end, - desc = - "Messages all" - }, - { "uX", function() require("noice").cmd("dismiss") end, desc = "Message dismiss all" }, - { - "", - function() if not require("noice.lsp").scroll(4) then return "" end end, - silent = true, - expr = true, - desc = - "Scroll forward", - mode = { - "i", "n", "s" } - }, - { - "", - function() if not require("noice.lsp").scroll(-4) then return "" end end, - silent = true, - expr = true, - desc = - "Scroll backward", - mode = { - "i", "n", "s" } - }, - }, - } -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/undo-tree.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/undo-tree.lua deleted file mode 100644 index ba5adb4..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-base/undo-tree.lua +++ /dev/null @@ -1,13 +0,0 @@ -return { - { - "mbbill/undotree", - config = function() - vim.g.undotree_WindowLayout = 2 - vim.g.undotree_ShortIndicators = 1 - vim.g.undotree_SetFocusWhenToggle = 1 - end, - keys = { - { "fu", vim.cmd.UndotreeToggle, desc = "Undo tree" }, - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/colorscheme.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/colorscheme.lua deleted file mode 100644 index af5c7fc..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/colorscheme.lua +++ /dev/null @@ -1,57 +0,0 @@ -return { -- Change colors.none if not using a transparent background - "catppuccin/nvim", - name = "catppuccin", - priority = 1000, - config = function() - local utils = require("catppuccin.utils.colors") - - local opts = { - flavour = "macchiato", - transparent_background = true, - integrations = { - aerial = true, - blink_cmp = true, - cmp = true, - gitsigns = true, - indent_blankline = { enabled = true, scope_color = "text", }, - lsp_trouble = true, - mason = true, - noice = true, - notify = true, - }, - custom_highlights = function(colors) - return { - -- Fix colors for cmp - Pmenu = { bg = colors.none, blend = 0 }, - FloatBorder = { bg = colors.none }, - CmpItemMenu = { fg = colors.text, bg = colors.none }, - -- dadbod-ui - NotificationInfo = { bg = colors.none, fg = colors.text }, - NotificationWarning = { bg = colors.none, fg = colors.yellow }, - NotificationError = { bg = colors.none, fg = colors.red }, - - -- for word diff in previews - GitSignsAddInline = { - fg = colors.teal, - bg = utils.darken(colors.teal, 0.4), - style = { "bold" }, - }, - GitSignsDeleteInline = { - fg = colors.red, - bg = utils.darken(colors.red, 0.4), - style = { "bold" }, - }, - GitSignsChangeInline = { - fg = colors.mauve, - bg = utils.darken(colors.mauve, 0.4), - style = { "bold" }, - }, - GitSignsDeleteVirtLn = { bg = colors.none, fg = colors.red }, - } - end, - } - - require("catppuccin").setup(opts) - vim.cmd.colorscheme("catppuccin-macchiato") - end, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/init.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/init.lua deleted file mode 100644 index 3501757..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/init.lua +++ /dev/null @@ -1,22 +0,0 @@ -return { - -- Detect tabstop and shiftwidth automatically - "tpope/vim-sleuth", - { "nvim-tree/nvim-web-devicons", lazy = true }, - { - -- Highlight word under cursor - "RRethy/vim-illuminate", - event = { "BufReadPost", "BufNewFile" }, - opts = { - delay = 200, - filetypes_denylist = { - 'dirbuf', - 'dirvish', - 'fugitive', - 'aerial', - }, - }, - config = function(_, opts) - require("illuminate").configure(opts) - end, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/key-help.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/key-help.lua deleted file mode 100644 index b9c705f..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/key-help.lua +++ /dev/null @@ -1,85 +0,0 @@ -return { - "echasnovski/mini.clue", - version = "*", - event = "VeryLazy", - config = function() - local miniclue = require("mini.clue") - miniclue.setup({ - triggers = { - -- Leader triggers - { mode = "n", keys = "" }, - { mode = "v", keys = "" }, - { mode = "x", keys = "" }, - - -- Built-in completion - { mode = "i", keys = "" }, - - -- `g` key - { mode = "n", keys = "g" }, - { mode = "x", keys = "g" }, - - -- Marks - { mode = "n", keys = "'" }, - { mode = "n", keys = "`" }, - { mode = "x", keys = "'" }, - { mode = "x", keys = "`" }, - - -- Registers - { mode = "n", keys = '"' }, - { mode = "x", keys = '"' }, - { mode = "i", keys = "" }, - { mode = "c", keys = "" }, - - -- Window commands - { mode = "n", keys = "" }, - - -- `z` key - { mode = "n", keys = "z" }, - { mode = "x", keys = "z" }, - }, - - -- Add a "postkeys" value to activate those keys after others - clues = { - miniclue.gen_clues.builtin_completion(), - miniclue.gen_clues.g(), - miniclue.gen_clues.marks(), - miniclue.gen_clues.registers(), - miniclue.gen_clues.windows(), - miniclue.gen_clues.z(), - - { mode = "n", keys = "", desc = "+Bookmarks" }, - { mode = "n", keys = "n", postkeys = "" }, - { mode = "n", keys = "N", postkeys = "" }, - { mode = "n", keys = "b", desc = "+Buffers" }, - { mode = "n", keys = "bh", postkeys = "b" }, - { mode = "n", keys = "bl", postkeys = "b" }, - { mode = "n", keys = "f", desc = "+Find" }, - { mode = "n", keys = "g", desc = "+Git" }, - { mode = "n", keys = "l", desc = "+LSP" }, - { mode = "n", keys = "r", desc = "+Replace" }, - { mode = "n", keys = "u", desc = "+UI & Config" }, - { mode = "n", keys = "un", desc = "+Noice" }, - { mode = "n", keys = "w", desc = "+Workspace" }, - { mode = "n", keys = "p", desc = "+Run stuff" }, - { mode = "n", keys = "z", desc = "+ZK" }, - { mode = "v", keys = "z", desc = "+ZK" }, - { mode = "v", keys = "a", desc = "+AI" }, - { mode = "n", keys = "a", desc = "+AI" }, - { mode = "n", keys = "g?", desc = "+Print Debug" }, - }, - - -- Clue window settings - window = { - -- Floating window config - config = { - width = "auto", - }, - -- Delay before showing clue window - delay = 200, - -- Keys to scroll inside the clue window - scroll_down = "", - scroll_up = "", - }, - }) - end, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/lualine.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/lualine.lua deleted file mode 100644 index 34e872e..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/lualine.lua +++ /dev/null @@ -1,189 +0,0 @@ -return { - "nvim-lualine/lualine.nvim", - lazy = false, - dependencies = { - "nvim-tree/nvim-web-devicons", - "cbochs/grapple.nvim", - { 'AndreM222/copilot-lualine' } - }, - opts = function() - local icons = require("aleidk.constants").icons - local palete = require("catppuccin.palettes").get_palette "macchiato" - - local function diff_source() - local gitsigns = vim.b.gitsigns_status_dict - if gitsigns then - return { - added = gitsigns.added, - modified = gitsigns.changed, - removed = gitsigns.removed, - } - end - end - - local function position_scrollbar(str) - local sbar = { "▁▁", "▂▂", "▃▃", "▄▄", "▅▅", "▆▆", "▇▇", "██" } - - local curr_line = vim.api.nvim_win_get_cursor(0)[1] - local lines = vim.api.nvim_buf_line_count(0) - local i = math.floor((curr_line - 1) / lines * #sbar) + 1 - return str .. " " .. sbar[i] - end - - local codecompanion_status = require("lualine.component"):extend() - - codecompanion_status.processing = false - codecompanion_status.spinner_index = 1 - - local spinner_symbols = require("copilot-lualine.spinners").bouncing_bar - - -- Initializer - function codecompanion_status:init(options) - codecompanion_status.super.init(self, options) - - local group = vim.api.nvim_create_augroup("CodeCompanionHooks", {}) - - vim.api.nvim_create_autocmd({ "User" }, { - pattern = "CodeCompanionRequest*", - group = group, - callback = function(request) - if request.match == "CodeCompanionRequestStarted" then - self.processing = true - elseif request.match == "CodeCompanionRequestFinished" then - self.processing = false - end - end, - }) - end - - -- Function that runs every time statusline is updated - function codecompanion_status:update_status() - if self.processing then - self.spinner_index = (self.spinner_index % #spinner_symbols) + 1 - return spinner_symbols[self.spinner_index] - else - return nil - end - end - - return { - options = { - theme = "catppuccin", - globalstatus = true, - disabled_filetypes = { statusline = { "dashboard", "alpha" } }, - component_separators = "", - section_separators = "", - }, - sections = { - lualine_a = { - { - "mode", - padding = 0, - fmt = function() - return " " - end, - }, - }, - lualine_b = {}, - lualine_c = { - { "branch", icon = icons.git.branch }, - { - "diff", - symbols = { - added = icons.git.added, - modified = icons.git.modified, - removed = icons.git.removed, - }, - source = diff_source, - }, - { codecompanion_status }, - { - "diagnostics", - symbols = { - error = icons.diagnostics.Error, - warn = icons.diagnostics.Warn, - info = icons.diagnostics.Info, - hint = icons.diagnostics.Hint, - }, - }, - "filetype", - { - "filename", - path = 1, - symbols = { - modified = "●", -- Text to show when the buffer is modified - alternate_file = "#", -- Text to show to identify the alternate file - directory = "", -- Text to show when the buffer is a directory - }, - }, - }, - lualine_x = { - { - "overseer", - }, - { - function() - return require("grapple").statusline() - end, - }, - { - "copilot", - cond = function() - return vim.bo.filetype ~= "codecompanion" - end, - show_colors = true, - symbols = { - status = { - icons = { - enabled = " ", - sleep = " ", -- auto-trigger disabled - disabled = " ", - warning = " ", - unknown = " " - }, - hl = { - enabled = palete.teal, - sleep = palete.lavender, - disabled = palete.subtext0, - warning = palete.peach, - unknown = palete.red - } - }, - spinners = spinner_symbols, - spinner_color = palete.mauve - }, - }, - }, - lualine_y = { - { - -- Macro recording status - function() - return require("noice").api.status.mode.get() - end, - cond = function() - return package.loaded["noice"] and require("noice").api.status.mode.has() - end, - }, - { "searchcount" }, - { "location" }, - { - "progress", - fmt = position_scrollbar, - separator = " ", - padding = 0, - }, - }, - lualine_z = {}, - }, - extensions = { - "lazy", - "fzf", - "man", - "mason", - "quickfix", - "trouble", - "toggleterm", - }, - } - end, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/markdown.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/markdown.lua deleted file mode 100644 index 19e36a2..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/markdown.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - { - "MeanderingProgrammer/markdown.nvim", - name = "render-markdown", -- Only needed if you have another plugin named markdown.nvim - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.nvim' }, -- if you use the mini.nvim suite - -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins - dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" }, -- if you prefer nvim-web-devicons - opts = { - file_types = { 'markdown', 'copilot-chat' }, - sign = { - enabled = false, - }, - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/surround.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/surround.lua deleted file mode 100644 index 2cbb1d3..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/surround.lua +++ /dev/null @@ -1,6 +0,0 @@ -return { - "echasnovski/mini.surround", - disabled = true, - version = "*", - opts = {}, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/telescope.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/telescope.lua deleted file mode 100644 index 5b2a218..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/telescope.lua +++ /dev/null @@ -1,83 +0,0 @@ --- Fuzzy Finder (files, lsp, etc) -return { - "nvim-telescope/telescope.nvim", - branch = "0.1.x", - dependencies = { - { "nvim-lua/plenary.nvim" }, - { - -- Blazingly Fast Fuzzy Finder Algorithm for Telescope - "nvim-telescope/telescope-fzf-native.nvim", - build = "make", - cond = function() - return vim.fn.executable("make") == 1 - end, - }, - }, - config = function() - local actions = require("telescope.actions") - local telescope = require("telescope") - local builtin = require("telescope.builtin") - - local opts = { - defaults = { - prompt_prefix = " ", - selection_caret = " ", - layout_strategy = "flex", - mappings = { - i = { - [""] = actions.preview_scrolling_up, - [""] = actions.preview_scrolling_down, - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - [""] = actions.file_vsplit, - [""] = actions.file_split, - [""] = actions.close, - [""] = actions.send_to_qflist + actions.open_qflist, - [""] = actions.send_selected_to_qflist + actions.open_qflist, - [""] = require("trouble.sources.telescope").open, - [""] = require("trouble.sources.telescope").open, - [""] = actions.which_key, - }, - }, - }, - pickers = { - find_files = { - hidden = true, - }, - }, - } - telescope.setup(opts) - - -- Enable telescope fzf native, if installed - pcall(telescope.load_extension, "fzf") - - vim.keymap.set("n", "fb", builtin.buffers, { desc = "Find buffers" }) - vim.keymap.set("n", "ff", builtin.find_files, { desc = "Find files" }) - vim.keymap.set("n", "fF", function() - builtin.find_files({ hidden = true, no_ignore = true }) - end, { desc = "Find all files" }) - - -- Search inside files - vim.keymap.set("n", "fw", builtin.grep_string, { desc = "Find word under cursor" }) - vim.keymap.set("n", "fW", builtin.live_grep, { desc = "Find word (live grep)" }) - - -- Help - vim.keymap.set("n", "fc", builtin.command_history, { desc = "Find in commands history" }) - vim.keymap.set("n", "fC", builtin.commands, { desc = "Find a command" }) - vim.keymap.set("n", "fh", builtin.help_tags, { desc = "Find Help" }) - vim.keymap.set("n", "fk", builtin.keymaps, { desc = "Find Keymaps" }) - - -- Git - vim.keymap.set("n", "gb", builtin.git_branches, { desc = "Change branch" }) - - -- Diagnosticos - -- Disabled, handle by trouble - -- vim.keymap.set("n", "fD", function() - -- builtin.diagnostics({ bufnr = 0 }) - -- end, { desc = "Find diagnostics (Telescope)" }) - -- vim.keymap.set("n", "fD", function() - -- builtin.diagnostics({ bufnr = nil }) - -- end, { desc = "Find diagnostics in workspace (Telescope)" }) - -- vim.keymap.set("n", "fz", builtin.spell_suggest, { desc = "Find spell suggestion" }) - end, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/todo-comments.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/todo-comments.lua deleted file mode 100644 index d9044cd..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/todo-comments.lua +++ /dev/null @@ -1,12 +0,0 @@ -return { - "folke/todo-comments.nvim", - cmd = { "TodoTrouble", "TodoTelescope" }, - event = { "BufReadPost", "BufNewFile" }, - config = true, - keys = { - { "]t", function() require("todo-comments").jump_next() end, desc = "Next todo comment" }, - { "[t", function() require("todo-comments").jump_prev() end, desc = "Previous todo comment" }, - { "ft", "TodoTrouble", desc = "Find todos (Trouble)" }, - { "fT", "TodoTelescope", desc = "Find todos (Telescope)" }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/color-picker.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/color-picker.lua deleted file mode 100644 index 626f66f..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/color-picker.lua +++ /dev/null @@ -1,14 +0,0 @@ -return { - { - -- Color Picker - "uga-rosa/ccc.nvim", - opts = { - auto_enable = true, - lsp = true, - }, - keys = { - { "uc", "CccPick", desc = "Open Color picker" }, - { "uC", "CccHighlighterToggle", desc = "Toggle Color highlight" }, - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/completion.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/completion.lua deleted file mode 100644 index 4153d4d..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/completion.lua +++ /dev/null @@ -1,92 +0,0 @@ -return { - "saghen/blink.cmp", - lazy = false, - version = "*", - dependencies = { - "rafamadriz/friendly-snippets", - "folke/lazydev.nvim", - { "saghen/blink.compat", version = "*", }, - }, - opts = function() - local window_options = { - border = "rounded", - winblend = vim.o.pumblend, - } - - ---@module 'blink.cmp' - ---@type blink.cmp.Config - return { - sources = { - providers = { - dadbod = { name = "Dadbod", module = "vim_dadbod_completion.blink" }, - lazydev = { name = "LazyDev", module = "lazydev.integrations.blink" }, - luasnip = { - name = 'luasnip', - module = 'blink.compat.source', - score_offset = -3, - opts = { - use_show_condition = false, - show_autosnippets = true, - }, - }, - }, - -- nvim-cmp sources - compat = {}, - completion = { - enabled_providers = { - "lsp", - "path", - "snippets", - "buffer", - "dadbod", - "lazydev", - }, - }, - }, - accept = { - auto_brackets = { enabled = true }, - expand_snippet = function(snippet) require('luasnip').lsp_expand(snippet) end, - }, - -- trigger = { signature_help = { enabled = true } }, - keymap = { - preset = "enter", - [""] = { 'select_next', 'fallback' }, - [""] = { 'select_prev', 'fallback' }, - [""] = { 'scroll_documentation_up', 'fallback' }, - [""] = { 'scroll_documentation_down', 'fallback' }, - }, - highlight = { - -- sets the fallback highlight groups to nvim-cmp's highlight groups - -- useful for when your theme doesn't support blink.cmp - -- will be removed in a future release, assuming themes add support - use_nvim_cmp_as_default = false, - }, - -- set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font' - -- adjusts spacing to ensure icons are aligned - nerd_font_variant = "mono", - windows = { - autocomplete = vim.tbl_extend("force", window_options, { - selection = "manual", - ---@type blink.cmp.Draw - draw = { - components = { - kind_icon = { - text = function(ctx) - return ctx.kind_icon .. ctx.icon_gap - end, - } - } - } - }), - documentation = vim.tbl_extend("force", window_options, { - auto_show = true, - winblend = 0, - }), - ghost_text = { - enabled = true, - }, - }, - kind_icons = require("aleidk.constants").icons.kinds, - } - end -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/database.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/database.lua deleted file mode 100644 index 175697b..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/database.lua +++ /dev/null @@ -1,44 +0,0 @@ -return { - "kristijanhusak/vim-dadbod-ui", - dependencies = { - { "tpope/vim-dadbod", lazy = true }, - { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, - }, - cmd = { - "DBUI", - "DBUIToggle", - "DBUIAddConnection", - "DBUIFindBuffer", - }, - keys = { - { "ud", "DBUIToggle", desc = "Toggle DB UI" }, - }, - init = function() - -- Your DBUI configuration - vim.g.db_ui_use_nerd_fonts = 1 - vim.g.db_ui_force_echo_notifications = 1 - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - command = [[setlocal omnifunc=vim_dadbod_completion#omni]], - }) - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - callback = function() - ---@diagnostic disable-next-line: missing-fields - require("cmp").setup.buffer({ - sources = { { name = "vim-dadbod-completion" }, { name = "buffer" } }, - }) - end, - }) - end, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/doc-gen.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/doc-gen.lua deleted file mode 100644 index 199ce62..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/doc-gen.lua +++ /dev/null @@ -1,15 +0,0 @@ -return { - "danymat/neogen", - opts = { snippet_engine = "luasnip" }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - version = "*", -- stable releases - keys = { - { - "gcd", - function() - require("neogen").generate() - end, - desc = "Generate comment docstring", - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/formatter.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/formatter.lua deleted file mode 100644 index 2406d75..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/formatter.lua +++ /dev/null @@ -1,124 +0,0 @@ -return { - "stevearc/conform.nvim", - event = { "BufWritePre" }, - cmd = { "ConformInfo" }, - opts = { - -- log_level = vim.log.levels.DEBUG, - - -- See aviable formatters in: https://github.com/stevearc/conform.nvim#formatters - -- Formatters can be installed by mason - formatters_by_ft = { - -- Conform will run multiple formatters sequentially - -- Use a stop_after_first = true to run only the first available formatter - -- Use the "_" filetype to run formatters on filetypes that don't - -- have other formatters configured. - ["_"] = { "trim_whitespace" }, - blade = { "blade-formatter" }, - css = { "biome" }, - go = { "gofumpt", "goimports_reviser", "golines" }, - html = { "djlint", "prettierd", stop_after_first = true }, - htmldjango = { "djlint", stop_after_first = true }, - javascript = { "biome" }, - javascriptreact = { "biome" }, - json = { "biome" }, - jsonc = { "biome" }, - lua = { "stylua" }, - markdown = { "markdownlint" }, - nim = { "nimpretty" }, - php = { "pint" }, - python = { "ruff_format", "ruff_organize_imports" }, - scss = { "prettierd", "prettier", stop_after_first = true }, - sh = { "shfmt" }, - toml = { "taplo" }, - typescript = { "biome" }, - typescriptreact = { "biome" }, - xml = { "lemminx" }, - zsh = { "shfmt" }, - sql = { "sleek" } - }, - formatters = { - djlint = { - prepend_args = { - "--format-css", - "--indent-css", - "2", - "--format-js", - "--indent-js", - "2", - "--indent", - "2", - "--preserve-blank-lines", - "--quiet" - } - } - }, - format_on_save = function(bufnr) - -- Disable with a global or buffer-local variable - if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then - return - end - - return { timeout_ms = 2000, lsp_fallback = true } - end, - }, - config = function(_, opts) - require("conform").setup(opts) - - local function toggleAutoFormat() - -- to make this global, change b to g - if vim.b.disable_autoformat == nil then - vim.b.disable_autoformat = true - print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) - return - end - - vim.b.disable_autoformat = not vim.b.disable_autoformat - print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) - end - - MAP("n", "uf", toggleAutoFormat, "Toggle auto format") - - vim.api.nvim_create_user_command("Fmt", function(args) - local range = nil - if args.count ~= -1 then - local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] - range = { - start = { args.line1, 0 }, - ["end"] = { args.line2, end_line:len() }, - } - end - - local function callback(err, did_edit) - if not did_edit then - vim.notify("The file was not formatted:\n" .. tostring(err), vim.log.levels.ERROR) - return - end - - if args.bang then - vim.cmd("w") - end - end - - require("conform").format( - { - async = true, - lsp_format = "fallback", - range = range, - formatters = args.fargs - }, - callback - ) - end, { - range = true, - bang = true, - force = true, - desc = "Format the document", - nargs = '*', - -- complete = function() - -- local formatters = require('conform').formatters_by_ft - -- - -- return vim.tbl_keys(formatters) - -- end - }) - end, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/git.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/git.lua deleted file mode 100644 index f34672f..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/git.lua +++ /dev/null @@ -1,52 +0,0 @@ -local const = require("aleidk.constants") - -return { - { - "lewis6991/gitsigns.nvim", - event = { "BufReadPre", "BufNewFile" }, - opts = { - -- See `:help gitsigns.txt` - signcolumn = true, -- Toggle with `:Gitsigns toggle_signs` - numhl = true, -- Toggle with `:Gitsigns toggle_numhl` - linehl = false, -- Toggle with `:Gitsigns toggle_linehl` - word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff` - signs = { - add = { text = const.icons.git.added }, - change = { text = const.icons.git.modified }, - delete = { text = const.icons.git.removed }, - topdelete = { text = const.icons.git.removed }, - changedelete = { text = const.icons.git.removed }, - untracked = { text = "▎" }, - }, - signs_staged = { - add = { text = const.icons.git.added }, - change = { text = const.icons.git.modified }, - delete = { text = const.icons.git.removed }, - topdelete = { text = const.icons.git.removed }, - changedelete = { text = const.icons.git.removed }, - untracked = { text = "▎" }, - }, - on_attach = function(buffer) - local gs = package.loaded.gitsigns - - local function map(mode, l, r, desc) - vim.keymap.set(mode, "g" .. l, r, { buffer = buffer, desc = desc }) - end - - -- stylua: ignore start - map("n", "j", gs.next_hunk, "Next Hunk") - map("n", "k", gs.prev_hunk, "Prev Hunk") - map({ "n", "v" }, "s", ":Gitsigns stage_hunk", "Stage Hunk") - map({ "n", "v" }, "r", ":Gitsigns reset_hunk", "Reset Hunk") - map("n", "u", gs.undo_stage_hunk, "Undo Stage Hunk") - map("n", "R", gs.reset_buffer, "Reset Buffer") - map("n", "", gs.preview_hunk, "Preview Hunk") - map("n", "l", function() gs.blame_line({ full = true }) end, "Blame Line") - map("n", "L", gs.toggle_current_line_blame, "Toggle current line blame") - map("n", "d", gs.toggle_word_diff, "Toggle word diff") - map("n", "h", "diffget", "Diff This with last commit") - map("n", "l", "diffput", "Diff This with last commit") - end, - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/init.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/init.lua deleted file mode 100644 index 286bfc6..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/init.lua +++ /dev/null @@ -1,21 +0,0 @@ -return { - { - "ckolkey/ts-node-action", - dependencies = { "nvim-treesitter" }, - opts = {}, - keys = { - { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } - } - }, - { - "Wansmer/treesj", - cmd = { "TSJToggle" }, - keys = { - { "lm", "TSJToggle", desc = "Toggle treesitter join" }, - }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - opts = { - use_default_keymaps = true, - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/lsp.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/lsp.lua deleted file mode 100644 index 9f3e308..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/lsp.lua +++ /dev/null @@ -1,229 +0,0 @@ -return { - -- LSP Plugins - { - -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins - -- used for completion, annotations and signatures of Neovim apis - 'folke/lazydev.nvim', - ft = 'lua', - opts = { - library = { - -- Load luvit types when the `vim.uv` word is found - { path = 'luvit-meta/library', words = { 'vim%.uv' } }, - }, - }, - }, - { "Bilal2453/luvit-meta", lazy = true }, -- optional `vim.uv` typings - { - -- LSP Configuration & Plugins - "neovim/nvim-lspconfig", - event = { "BufReadPost", "BufNewFile", "BufWritePre" }, - dependencies = { - -- Automatically install LSPs to stdpath for neovim - { "williamboman/mason.nvim", config = true }, - "williamboman/mason-lspconfig.nvim", - { 'saghen/blink.cmp' } -- autocompletion - }, - - config = function() - -- LSP settings. - local on_attach = function(_, bufnr) - local nmap = function(keys, func, desc) - if desc then - desc = "LSP: " .. desc - end - - vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc }) - end - - nmap("lr", vim.lsp.buf.rename, "Rename") - -- stylua: ignore - vim.keymap.set({ "n", "x", "v" }, "la", vim.lsp.buf.code_action, { buffer = bufnr, desc = "Code Action" }) - nmap("ld", vim.lsp.buf.type_definition, "Go to type definition") - nmap("lf", function() - vim.lsp.buf.format() - end, "Format") - - nmap("gd", vim.lsp.buf.definition, "Go to definition") - nmap("gr", require("telescope.builtin").lsp_references, "Goto References") - nmap("gI", vim.lsp.buf.implementation, "Go to Implementation") - - -- See `:help K` for why this keymap - nmap("K", vim.lsp.buf.hover, "Hover Documentation") - -- nmap("", vim.lsp.buf.signature_help, "Signature Documentation") - - -- Lesser used LSP functionality - nmap("gD", vim.lsp.buf.declaration, "Goto Declaration") - - nmap("lj", vim.diagnostic.goto_next, "Go to next diagnostic") - nmap("lk", vim.diagnostic.goto_prev, "Go to prev diagnostic") - nmap("lK", function() - -- execute twice to enter the float inmediatly - vim.diagnostic.open_float() - vim.diagnostic.open_float() - end, "Hover current diagnostic") - - -- Create a command `:Format` local to the LSP buffer - vim.api.nvim_buf_create_user_command(bufnr, "Format", function(_) - vim.lsp.buf.format() - end, { desc = "Format current buffer with LSP" }) - end - - -- Enable the following language servers - -- To see options and cofigurations `:help lspconfig-all` - local servers = { - astro = {}, - bashls = {}, - biome = { - single_file_support = true, - }, - cssls = {}, - dockerls = {}, - emmet_ls = { - filetypes = { - "astro", - "css", - "eruby", - "html", - "htmldjango", - "javascriptreact", - "less", - "pug", - "sass", - "scss", - "svelte", - "typescriptreact", - "vue", - "htmlangular", - "php", - "blade" - }, - }, - harper_ls = {}, - html = {}, - hyprls = {}, - marksman = {}, - phpactor = {}, - gopls = { - settings = { - gopls = { - completeUnimported = true, - usePlaceholders = true, - analyses = { - unusedparams = true, - }, - }, - }, - }, - ruff = {}, - rust_analyzer = { - settings = { - ["rust-analyzer"] = { - imports = { - granularity = { - group = "module", - }, - prefix = "self", - }, - cargo = { - buildScripts = { - enable = true, - }, - }, - procMacro = { - enable = true, - }, - }, - }, - }, - sqlls = {}, - taplo = {}, - yamlls = { - settings = { - yaml = { - schemas = {}, - customTags = { - "!vault" -- ansible encrypted vars support - } - } - }, - }, - lua_ls = { - settings = { - Lua = { - completion = { - callSnippet = 'Replace', - }, - diagnostics = { disable = { 'missing-fields' } }, - }, - }, - }, - } - - -- nvim-cmp supports additional completion capabilities, so broadcast that to servers - local capabilities = vim.lsp.protocol.make_client_capabilities() - capabilities = require("blink.cmp").get_lsp_capabilities(capabilities) - - -- Ensure the servers above are installed - local mason_lspconfig = require("mason-lspconfig") - - mason_lspconfig.setup({ - ensure_installed = vim.tbl_keys(servers), - automatic_installation = false, - }) - - mason_lspconfig.setup_handlers({ - function(server_name) - local _border = "single" - - local default_config = { - capabilities = capabilities, - on_attach = on_attach, - handlers = { - ["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - border = _border, - }), - ["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { - border = _border, - max_width = 200, - max_height = 200, - focus = true, - }), - }, - } - - require("lspconfig")[server_name].setup( - vim.tbl_deep_extend("force", default_config, servers[server_name] or {}) - ) - end, - }) - - vim.diagnostic.config({ - update_in_insert = false, - underline = true, - float = { - source = true - }, - virtual_text = { - severity = vim.diagnostic.severity.ERROR, - source = true, - spacing = -1, - prefix = nil, - format = function(diagnostic) - -- show small error code instead of whole error that probably won't fit in the screen - -- to see the whole error use other keybindings - return tostring(diagnostic.code) - end, - virt_text_hide = true - }, - severity_sort = true, - }) - - -- Customize gutter icons - local signs = require("aleidk.constants").icons.diagnostics - for type, icon in pairs(signs) do - local hl = "DiagnosticSign" .. type - vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) - end - end, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/luasnip.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/luasnip.lua deleted file mode 100644 index 5f4e132..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/luasnip.lua +++ /dev/null @@ -1,27 +0,0 @@ -return { - "L3MON4D3/LuaSnip", - dependencies = { - "rafamadriz/friendly-snippets", - config = function() - require("luasnip.loaders.from_vscode").lazy_load() - end, - }, - opts = { - history = true, - delete_check_events = "TextChanged", - }, - -- stylua: ignore - keys = { - { - "", - function() - return require("luasnip").jumpable(1) and "luasnip-jump-next" or "" - end, - expr = true, - silent = true, - mode = "i", - }, - { "", function() require("luasnip").jump(1) end, mode = "s" }, - { "", function() require("luasnip").jump(-1) end, mode = { "i", "s" } }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua deleted file mode 100644 index 30f9134..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/remote-sshfs.lua +++ /dev/null @@ -1,59 +0,0 @@ -return { - { - "nosduco/remote-sshfs.nvim", - dependencies = { "nvim-telescope/telescope.nvim" }, - cmd = { "RemoteSSHFSConnect" }, - config = function() - require("remote-sshfs").setup({}) - require("telescope").load_extension("remote-sshfs") - end, - }, - { - "amitds1997/remote-nvim.nvim", - version = "*", -- Pin to GitHub releases - dependencies = { - "nvim-lua/plenary.nvim", -- For standard functions - "MunifTanjim/nui.nvim", -- To build the plugin UI - "nvim-telescope/telescope.nvim", -- For picking b/w different remote methods - }, - opts = { - remote = { - copy_dirs = { - data = { - base = vim.fn.stdpath("data"), -- Path from where data has to be copied. You can choose to copy entire path or subdirectories inside using `dirs` - dirs = { "lazy" }, -- Directories inside `base` to copy over. If this is set to string "*"; it means entire `base` should be copied over - compression = { - enabled = true, -- Should data be compressed before uploading - additional_opts = { "--exclude-vcs" }, -- Any arguments that can be passed to `tar` for compression can be specified here to improve your compression - }, - }, - -- cache = { - -- base = vim.fn.stdpath("cache"), - -- dirs = {}, - -- compression = { - -- enabled = true, - -- }, - -- }, - state = { - base = vim.fn.stdpath("state"), - dirs = {}, - compression = { - enabled = true, - }, - }, - }, - }, - client_callback = function(port, workspace_config) - local cmd = ("tmux new-window 'nvim --server localhost:%s --remote-ui' && tmux select-window -t:$"):format(port) - vim.fn.jobstart(cmd, { - detach = true, - on_exit = function(job_id, exit_code, event_type) - -- This function will be called when the job exits - print("Client", job_id, "exited with code", exit_code, "Event type:", event_type) - end, - }) - end, - }, - config = true, - } -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/task-runner.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/task-runner.lua deleted file mode 100644 index d91d74e..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/task-runner.lua +++ /dev/null @@ -1,171 +0,0 @@ -local function term_get_effective_line_count(bufnr) - local linecount = vim.api.nvim_buf_line_count(bufnr) - - local non_blank_lines = linecount - for i = linecount, 1, -1 do - local line = vim.api.nvim_buf_get_lines(bufnr, i - 1, i, true)[1] - non_blank_lines = i - if line ~= "" then - break - end - end - return non_blank_lines -end - --- This is a copy of the original util function of overseer with the change that --- vim.api.nvim_win_set_cursor(winid, { lnum, 0 }) column is set to 0 so the output is visible --- the rest is the same -local scroll_to_end = function(winid) - winid = winid or 0 - local bufnr = vim.api.nvim_win_get_buf(winid) - local lnum = vim.api.nvim_buf_line_count(bufnr) - -- Hack: terminal buffers add a bunch of empty lines at the end. We need to ignore them so that - -- we don't end up scrolling off the end of the useful output. - local not_much_output = lnum < vim.o.lines + 6 - if vim.bo[bufnr].buftype == "terminal" and not_much_output then - lnum = term_get_effective_line_count(bufnr) - end - local scrolloff = vim.api.nvim_get_option_value("scrolloff", { scope = "local", win = winid }) - vim.api.nvim_set_option_value("scrolloff", 0, { scope = "local", win = winid }) - vim.api.nvim_win_set_cursor(winid, { lnum, 0 }) - vim.api.nvim_set_option_value("scrolloff", scrolloff, { scope = "local", win = winid }) -end - -local open_split = function(task, horizontal) - local original_window = vim.api.nvim_get_current_win() - if horizontal then - -- horizontal split across all vertical splits - vim.cmd([[botright split]]) - else - -- vertical split across all horizontal splits - vim.cmd([[vert botright split]]) - end - - -- Update tasks buffer options - vim.api.nvim_win_set_buf(0, task:get_bufnr()) - vim.api.nvim_set_option_value("number", false, { scope = "local", win = 0 }) - vim.api.nvim_set_option_value("relativenumber", false, { scope = "local", win = 0 }) - vim.api.nvim_set_option_value("signcolumn", "no", { scope = "local", win = 0 }) - scroll_to_end(0) - - -- Go back to the original window - vim.api.nvim_set_current_win(original_window) -end - -return { - "stevearc/overseer.nvim", - keys = { - { "pO", "OverseerQuickAction hsplit", desc = "Open task in a hsplit" }, - { - "pQ", - "OverseerQuickAction close winOverseerQuickAction dispose", - desc = "Close and dispose task's windows", - }, - { "pW", "OverseerQuickAction unwatch", desc = "Unwatch task" }, - { "pf", "OverseerQuickAction open float", desc = "Open task in a float window" }, - { "pl", "OverseerLoadBundle", desc = "Load tasks" }, - { "pm", "OverseerTaskAction", desc = "Manage task" }, - { "po", "OverseerQuickAction vsplit", desc = "Open task in a vsplit" }, - { "pp", "OverseerRun", desc = "Run task" }, - { - "pP", - function() - local overseer = require('overseer') - overseer.run_template({}, function(task) - if task then - task:add_components({ "restart_on_save" }) - overseer.run_action(task, "hsplit") - end - end) - end, - desc = "Run task and watch it" - }, - { "pq", "OverseerQuickAction close win", desc = "Close task's windows" }, - { "ps", "OverseerSaveBundle", desc = "Save tasks" }, - { "pt", "OverseerToggle", desc = "Toggle tasks list" }, - { "pw", "OverseerQuickAction watch", desc = "Watch task" }, - }, - opts = { - templates = { - "cargo", - "cargo-make", - "composer", - "deno", - "just", - "mage", - "make", - "mix", - "npm", - "rake", - "task", - "tox", - "vscode", - }, - actions = { - ["hsplit"] = { - desc = "open terminal in a horizontal split", - condition = function(task) - local bufnr = task:get_bufnr() - return bufnr and vim.api.nvim_buf_is_valid(bufnr) - end, - run = function(task) - open_split(task, true) - end, - }, - ["vsplit"] = { - desc = "open terminal in a vertical split", - condition = function(task) - local bufnr = task:get_bufnr() - return bufnr and vim.api.nvim_buf_is_valid(bufnr) - end, - run = function(task) - open_split(task, false) - end, - }, - ["close win"] = { - desc = "open terminal in a vertical split", - condition = function(task) - local bufnr = task:get_bufnr() - return bufnr and vim.api.nvim_buf_is_valid(bufnr) - end, - run = function(task) - local buf = task:get_bufnr() - -- iterar sobre todas las windows y ver si la window tiene attach el buf que quiero cerrar - for _, win in ipairs(vim.api.nvim_list_wins()) do - if buf == vim.api.nvim_win_get_buf(win) then - vim.api.nvim_win_close(win, false) - end - end - end, - }, - }, - task_list = { - direction = "bottom", - bindings = { - ["?"] = "ShowHelp", - ["g?"] = "ShowHelp", - [""] = "RunAction", - [""] = "Edit", - ["o"] = "Open", - [""] = "OpenVsplit", - [""] = "OpenSplit", - [""] = "OpenFloat", - [""] = "OpenQuickFix", - [""] = "TogglePreview", - ["p"] = "TogglePreview", - [""] = "IncreaseAllDetail", - [""] = "DecreaseAllDetail", - ["L"] = "IncreaseDetail", - ["H"] = "DecreaseDetail", - ["["] = "DecreaseWidth", - ["]"] = "IncreaseWidth", - ["{"] = "PrevTask", - ["}"] = "NextTask", - [""] = "ScrollOutputUp", - [""] = "ScrollOutputDown", - ["q"] = "Close", - ["d"] = "OverseerQuickAction dispose", - }, - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/trouble.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/trouble.lua deleted file mode 100644 index b7a17bf..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/trouble.lua +++ /dev/null @@ -1,93 +0,0 @@ ----@module 'trouble' - -return { - "folke/trouble.nvim", - dependencies = { "nvim-tree/nvim-web-devicons" }, - cmd = { "Trouble" }, - keys = { - { - "fD", - "Trouble diagnostics open", - desc = "Find diagnostics (Trouble)", - }, - { - "fd", - "Trouble diagnostics open filter.buf=0", - desc = "Find buffer diagnostics (Trouble)", - }, - { - "ll", - "Trouble symbols open", - desc = "Symbols (Trouble)", - }, - { - "li", - "Trouble lsp open", - desc = "LSP info of node (Trouble)", - }, - { - "fq", - "Trouble qflist open", - desc = "Quickfix List (Trouble)", - }, - }, - opts = function() - ---@type trouble.Window.opts - local win_opts = { - -- size = { width = 30, height = 0.5 }, - minimal = true, - border = "rounded", - position = "bottom", - } - - ---@type trouble.Config - return { - focus = true, - - ---@type trouble.Window.opts - preview = { - type = "split", - relative = "win", - position = "top", - }, - - ---@type table - keys = { - [""] = "jump_close", - [""] = "jump", - ["<2-leftmouse>"] = "jump", - [""] = "jump_split_close", - [""] = "jump_vsplit_close", - ["v"] = "jump_split_close", - ["s"] = "jump_vsplit_close", - [""] = "cancel", -- hack to fool myself into thinking I move to the avobe window - ["a"] = function(view, ctx) - -- TODO: this is not possible until this issue is solved - -- https://github.com/neovim/neovim/issues/31206 - local trouble = require("trouble") - view:action("jump_only") - - vim.lsp.buf.code_action() - - trouble.focus(view, ctx) - end, - }, - win = win_opts, - ---@type table - modes = { - symbols = { - focus = true, - win = win_opts - }, - lsp_references = { - focus = true, - win = win_opts - }, - lsp = { - focus = true, - win = win_opts - }, - } - } - end -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua b/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua deleted file mode 100644 index 7f106b0..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/typescript-tools.lua +++ /dev/null @@ -1,18 +0,0 @@ -return { - "pmizio/typescript-tools.nvim", - dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, - opts = { - init_options = { - preferences = { - disableSuggestions = true, - }, - }, - settings = { - -- array of strings("fix_all"|"add_missing_imports"|"remove_unused"| - -- "remove_unused_imports"|"organize_imports") -- or string "all" - -- to include all supported code actions - -- specify commands exposed as code_actions - expose_as_code_action = "all", - }, - }, -} diff --git a/Configs/nvim/.config/nvim/lua/aleidk/utils.lua b/Configs/nvim/.config/nvim/lua/aleidk/utils.lua deleted file mode 100644 index 96d3f8f..0000000 --- a/Configs/nvim/.config/nvim/lua/aleidk/utils.lua +++ /dev/null @@ -1,7 +0,0 @@ -local M = {} - -function M.plugin_should_be_enabled() - print("Plugin should be enabled") -end - -return M diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json b/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json deleted file mode 100644 index ddcd7d2..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lazy-lock.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "catppuccin": { "branch": "main", "commit": "5b5e3aef9ad7af84f463d17b5479f06b87d5c429" }, - "comment-box.nvim": { "branch": "main", "commit": "06bb771690bc9df0763d14769b779062d8f12bc5" }, - "conform.nvim": { "branch": "master", "commit": "b1a75324ddf96b7bb84963a297b1ed334db087c0" }, - "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, - "fzf-lua": { "branch": "main", "commit": "6488ada2f376e47789391dc353b6d91a3f9de6f6" }, - "grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" }, - "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, - "mini.nvim": { "branch": "main", "commit": "0420076298c4457f200c2de468f65d080597a347" }, - "neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, - "nvim-lint": { "branch": "master", "commit": "93b8040115c9114dac1047311763bef275e752dc" }, - "nvim-lspconfig": { "branch": "master", "commit": "ff6471d4f837354d8257dfa326b031dd8858b16e" }, - "nvim-treesitter": { "branch": "master", "commit": "9be6836ebeb88a536055bf1ce0961eef68da4bc6" }, - "nvim-treesitter-context": { "branch": "master", "commit": "93b29a32d5f4be10e39226c6b796f28d68a8b483" }, - "nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, - "nvim-web-devicons": { "branch": "master", "commit": "4c3a5848ee0b09ecdea73adcd2a689190aeb728c" }, - "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "remote-sshfs.nvim": { "branch": "main", "commit": "1ae5784bf0729c8b03cb7fe6561508a673c9adc8" }, - "render-markdown": { "branch": "main", "commit": "92256e02db70c474f97fc461b6b6bc4aff7a499a" }, - "telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" }, - "trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" }, - "ts-node-action": { "branch": "master", "commit": "bfaa787cc85d753af3c19245b4142ed727a534b5" }, - "typescript-tools.nvim": { "branch": "master", "commit": "e0887c1e336edbb01243e9f1e60d74b0bc0a2bed" }, - "vim-dadbod": { "branch": "master", "commit": "9f0ca8bcef704659820a95c3bbd2c262583a66a1" }, - "vim-dadbod-completion": { "branch": "master", "commit": "a8dac0b3cf6132c80dc9b18bef36d4cf7a9e1fe6" }, - "vim-dadbod-ui": { "branch": "master", "commit": "685e75b34ee0e12f92ec4507ea8bb7f1aaa936e5" }, - "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, - "yazi.nvim": { "branch": "main", "commit": "aae26f6794c2afe2054a0782fb0ff07b2cd2876c" } -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lsp/rust_analyzer.lua b/Configs/nvim_unstable/.config/nvim_unstable/lsp/rust_analyzer.lua deleted file mode 100644 index b2b8a12..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lsp/rust_analyzer.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - cmd = { "rust-analyzer" }, - filetypes = { 'rust' }, - root_markers = { "cargo.toml" }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua deleted file mode 100644 index 54e2c9b..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/autocmds.lua +++ /dev/null @@ -1,19 +0,0 @@ -vim.api.nvim_create_autocmd('LspAttach', { - callback = function(args) - local client = vim.lsp.get_client_by_id(args.data.client_id) - - if not client then - return - end - - -- Prefer LSP folding if client supports it - if client:supports_method('textDocument/foldingRange') then - local win = vim.api.nvim_get_current_win() - vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' - end - - if client:supports_method 'textDocument/completion' then - vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true }) - end - end, -}) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/constants.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/constants.lua deleted file mode 100644 index 52cdd9f..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/constants.lua +++ /dev/null @@ -1,63 +0,0 @@ -return { - icons = { - misc = { - pint = " ", - }, - dap = { - Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" }, - Breakpoint = " ", - BreakpointCondition = " ", - BreakpointRejected = { " ", "DiagnosticError" }, - LogPoint = ".>", - }, - diagnostics = { - Error = " ", - Warn = " ", - Hint = " ", - Info = " ", - }, - git = { - added = " ", - modified = " ", - removed = " ", - branch = "", - }, - kinds = { - Array = " ", - Boolean = " ", - Class = " ", - Color = " ", - Constant = " ", - Constructor = " ", - Copilot = " ", - Enum = " ", - EnumMember = " ", - Event = " ", - Field = " ", - File = " ", - Folder = " ", - Function = " ", - Interface = " ", - Key = " ", - Keyword = " ", - Method = " ", - Module = " ", - Namespace = " ", - Null = " ", - Number = " ", - Object = " ", - Operator = " ", - Package = " ", - Property = " ", - Reference = " ", - Snippet = " ", - String = " ", - Struct = " ", - Text = " ", - TypeParameter = " ", - Unit = " ", - Value = " ", - Variable = " ", - }, - }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/database.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/database.lua deleted file mode 100644 index 175697b..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/database.lua +++ /dev/null @@ -1,44 +0,0 @@ -return { - "kristijanhusak/vim-dadbod-ui", - dependencies = { - { "tpope/vim-dadbod", lazy = true }, - { "kristijanhusak/vim-dadbod-completion", ft = { "sql", "mysql", "plsql" }, lazy = true }, - }, - cmd = { - "DBUI", - "DBUIToggle", - "DBUIAddConnection", - "DBUIFindBuffer", - }, - keys = { - { "ud", "DBUIToggle", desc = "Toggle DB UI" }, - }, - init = function() - -- Your DBUI configuration - vim.g.db_ui_use_nerd_fonts = 1 - vim.g.db_ui_force_echo_notifications = 1 - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - command = [[setlocal omnifunc=vim_dadbod_completion#omni]], - }) - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - callback = function() - ---@diagnostic disable-next-line: missing-fields - require("cmp").setup.buffer({ - sources = { { name = "vim-dadbod-completion" }, { name = "buffer" } }, - }) - end, - }) - end, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua deleted file mode 100644 index 2cb4e71..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/formatter.lua +++ /dev/null @@ -1,121 +0,0 @@ -return { - "stevearc/conform.nvim", - event = { "BufWritePre" }, - cmd = { "ConformInfo" }, - opts = { - -- See available formatters in: https://github.com/stevearc/conform.nvim#formatters - -- Formatters can be installed by mason - formatters_by_ft = { - -- Conform will run multiple formatters sequentially - -- Use a stop_after_first = true to run only the first available formatters - -- Use the "_" filetype to run formatters on filetypes that don't - -- have other formatters configured. - ["_"] = { "trim_whitespace" }, - blade = { "blade-formatter" }, - css = { "biome" }, - go = { "gofumpt", "goimports_reviser", "golines" }, - html = { "djlint", "prettierd", stop_after_first = true }, - htmldjango = { "djlint", stop_after_first = true }, - javascript = { "biome" }, - javascriptreact = { "biome" }, - json = { "biome" }, - jsonc = { "biome" }, - lua = { "stylua" }, - markdown = { "markdownlint" }, - php = { "pint" }, - python = { "ruff_format", "ruff_organize_imports" }, - scss = { "biome", "prettierd", "prettier", stop_after_first = true }, - sh = { "shfmt" }, - toml = { "taplo" }, - typescript = { "biome" }, - typescriptreact = { "biome" }, - xml = { "lemminx" }, - zsh = { "shfmt" }, - sql = { "sleek" } - }, - formatters = { - djlint = { - prepend_args = { - "--format-css", - "--indent-css", - "2", - "--format-js", - "--indent-js", - "2", - "--indent", - "2", - "--preserve-blank-lines", - "--quiet" - } - } - }, - format_on_save = function(bufnr) - -- Disable with a global or buffer-local variable - if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then - return - end - - return { timeout_ms = 2000, lsp_fallback = true } - end, - }, - config = function(_, opts) - require("conform").setup(opts) - - local function toggleAutoFormat() - -- to make this global, change b to g - if vim.b.disable_autoformat == nil then - vim.b.disable_autoformat = true - print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) - return - end - - vim.b.disable_autoformat = not vim.b.disable_autoformat - print("Autoformat set to: " .. tostring(not vim.b.disable_autoformat)) - end - - MAP("n", "uf", toggleAutoFormat, "Toggle auto format") - - vim.api.nvim_create_user_command("Fmt", function(args) - local range = nil - if args.count ~= -1 then - local end_line = vim.api.nvim_buf_get_lines(0, args.line2 - 1, args.line2, true)[1] - range = { - start = { args.line1, 0 }, - ["end"] = { args.line2, end_line:len() }, - } - end - - local function callback(err, did_edit) - if not did_edit then - vim.notify("The file was not formatted:\n" .. tostring(err), vim.log.levels.ERROR) - return - end - - if args.bang then - vim.cmd("w") - end - end - - require("conform").format( - { - async = true, - lsp_format = "fallback", - range = range, - formatters = args.fargs - }, - callback - ) - end, { - range = true, - bang = true, - force = true, - desc = "Format the document", - nargs = '*', - -- complete = function() - -- local formatters = require('conform').formatters_by_ft - -- - -- return vim.tbl_keys(formatters) - -- end - }) - end, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua deleted file mode 100644 index f529305..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/indent-blankline.lua +++ /dev/null @@ -1,30 +0,0 @@ -return { - -- Add indentation guides even on blank lines - "lukas-reineke/indent-blankline.nvim", - dependencies = { "nvim-treesitter/nvim-treesitter" }, - main = "ibl", - opts = { - -- char = "▏", - indent = { - char = "│", - tab_char = "│", - }, - scope = { - enabled = true, - }, - exclude = { - filetypes = { - "help", - "alpha", - "dashboard", - "neo-tree", - "Trouble", - "lazy", - "mason", - "notify", - "toggleterm", - "lazyterm", - }, - }, - }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua deleted file mode 100644 index 1f62383..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/init.lua +++ /dev/null @@ -1,24 +0,0 @@ -return { - 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically - { "nvim-tree/nvim-web-devicons", lazy = true }, - { - "ckolkey/ts-node-action", - dependencies = { "nvim-treesitter" }, - opts = {}, - keys = { - { "ls", function() require("ts-node-action").node_action() end, desc = "Node Action" } - } - }, - { - -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins - -- used for completion, annotations and signatures of Neovim apis - 'folke/lazydev.nvim', - ft = 'lua', - opts = { - library = { - -- Load luvit types when the `vim.uv` word is found - { path = "${3rd}/luv/library", words = { "vim%.uv" } } - }, - }, - }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua deleted file mode 100644 index 06aec9f..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/linters.lua +++ /dev/null @@ -1,25 +0,0 @@ -return { - "mfussenegger/nvim-lint", - event = "VeryLazy", - config = function() - local lint = require("lint") - - lint.linters.gitlint.stdin = true - lint.linters.gitlint.args = { "--contrib", "contrib-title-conventional-commits", "--msg-filename", "-" } - - lint.linters_by_ft = { - -- astro = { "eslint_d" }, - python = { "ruff" }, - sh = { "shellcheck" }, - NeogitCommitMessage = { "gitlint" }, - gitcommit = { "gitlint" }, - markdown = { "markdownlint" }, - } - - vim.api.nvim_create_autocmd({ "BufWritePost" }, { - callback = function() - require("lint").try_lint() - end, - }) - end, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua deleted file mode 100644 index 8c11bc1..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/remote-sshfs.lua +++ /dev/null @@ -1,7 +0,0 @@ -return { - { - "nosduco/remote-sshfs.nvim", - dependencies = { "nvim-telescope/telescope.nvim" }, - cmd = { "RemoteSSHFSConnect" }, - }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/treesitter.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/treesitter.lua deleted file mode 100644 index c677f4f..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/treesitter.lua +++ /dev/null @@ -1,19 +0,0 @@ -return { - "nvim-treesitter/nvim-treesitter", - event = { "BufReadPost", "BufNewFile", "BufWritePre", "VeryLazy" }, - 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 }, - }, -} diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua b/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua deleted file mode 100644 index 7f106b0..0000000 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/typescript-tools.lua +++ /dev/null @@ -1,18 +0,0 @@ -return { - "pmizio/typescript-tools.nvim", - dependencies = { "nvim-lua/plenary.nvim", "neovim/nvim-lspconfig" }, - opts = { - init_options = { - preferences = { - disableSuggestions = true, - }, - }, - settings = { - -- array of strings("fix_all"|"add_missing_imports"|"remove_unused"| - -- "remove_unused_imports"|"organize_imports") -- or string "all" - -- to include all supported code actions - -- specify commands exposed as code_actions - expose_as_code_action = "all", - }, - }, -} diff --git a/Configs/vimiv/.config/vimiv/keys.conf b/Configs/vimiv/.config/vimiv/keys.conf deleted file mode 100644 index 628b2d3..0000000 --- a/Configs/vimiv/.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/Configs/wpaperd/.config/wpaperd/config.toml b/Configs/wpaperd/.config/wpaperd/config.toml deleted file mode 100644 index 92febf9..0000000 --- a/Configs/wpaperd/.config/wpaperd/config.toml +++ /dev/null @@ -1,7 +0,0 @@ -[default] -duration = "10m" -mode = "center" -sorting = "ascending" - -[any] -path = "~/Pictures/Wallpapers/" diff --git a/Configs/yazi/.config/yazi/package.toml b/Configs/yazi/.config/yazi/package.toml deleted file mode 100644 index 7629b7a..0000000 --- a/Configs/yazi/.config/yazi/package.toml +++ /dev/null @@ -1,24 +0,0 @@ -[[plugin.deps]] -use = "yazi-rs/plugins:full-border" -rev = "5186af7" -hash = "ae9e1d0c6bfd68cdebc98cc684c22b45" - -[[plugin.deps]] -use = "GianniBYoung/rsync" -rev = "3f431aa" -hash = "1854a5a30d23e84bc8df24700f27957b" - -[[plugin.deps]] -use = "Ape/simple-status" -rev = "d0da104" -hash = "68603fdd1dcaf415227e2c77a9317947" - -[[plugin.deps]] -use = "yazi-rs/plugins:smart-enter" -rev = "5186af7" -hash = "aef2b1a805b80cce573bb766f1459d88" - -[[flavor.deps]] -use = "yazi-rs/flavors:catppuccin-macchiato" -rev = "df95930" -hash = "c34feed32d555e79ab9a0c0a7bdda2be" diff --git a/Configs/yazi/.config/yazi/theme.toml b/Configs/yazi/.config/yazi/theme.toml deleted file mode 100644 index 000a93b..0000000 --- a/Configs/yazi/.config/yazi/theme.toml +++ /dev/null @@ -1,2 +0,0 @@ -[flavor] -use = "catppuccin-macchiato" diff --git a/Configs/zed/.config/zed/keymap.json b/Configs/zed/.config/zed/keymap.json deleted file mode 100644 index c175302..0000000 --- a/Configs/zed/.config/zed/keymap.json +++ /dev/null @@ -1,183 +0,0 @@ -[ - { - "context": "Editor && (vim_mode == normal || vim_mode == visual) && !VimWaiting && !menu", - "bindings": { - // Git - - // Toggle inlay hints - "space u i": "editor::ToggleInlayHints", - - // NOTE: Toggle Zen mode, not fully working yet - "space u z": "workspace::ToggleZoom", - - // Open recent project - "space f p": "projects::OpenRecent", - // Search word under cursor - "space f w": "pane::DeploySearch", - - // Chat with AI - "space a c": "assistant::ToggleFocus", - - // Go to file with `gf` - "g f": "editor::OpenExcerpts" - } - }, - { - // move context menus with Ctrl + hjkl in completions - "context": "(vim_mode == normal || vim_mode == insert) && (showing_code_actions || showing_completions)", - "bindings": { - "ctrl-h": "editor::ContextMenuPrev", - "ctrl-j": "editor::ContextMenuNext", - "ctrl-k": "editor::ContextMenuPrev", - "ctrl-l": "editor::ContextMenuNext" - } - }, - { - "context": "Editor && (vim_mode == normal || vim_mode == insert)", - "bindings": { - "ctrl-shift-v": "editor::Paste" - } - }, - { - // move context menus with Ctrl + hjkl in menus - "context": "Picker || menu", - "bindings": { - "ctrl-h": "menu::SelectPrev", - "ctrl-j": "menu::SelectNext", - "ctrl-k": "menu::SelectPrev", - "ctrl-l": "menu::SelectNext" - } - }, - { - "context": "Editor && VimControl && !VimWaiting && !menu", - "bindings": { - "|": "pane::SplitVertical", - - // Window movement bindings - // Ctrl jklk to move between panes - "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], - "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"], - "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], - "ctrl-j": ["workspace::ActivatePaneInDirection", "Down"], - - "space e": "pane::RevealInProjectPanel", - - // +LSP - "space l a": "editor::ToggleCodeActions", - "space l r": "editor::Rename", - "g d": "editor::GoToDefinition", - "g D": "editor::GoToDefinitionSplit", - "g i": "editor::GoToImplementation", - "g I": "editor::GoToImplementationSplit", - "g t": "editor::GoToTypeDefinition", - "g T": "editor::GoToTypeDefinitionSplit", - "g r": "editor::FindAllReferences", - "space l j": "editor::GoToDiagnostic", - "space l k": "editor::GoToPrevDiagnostic", - - // Symbol search - "space f o": "outline::Toggle", - "space f O": "project_symbols::Toggle", - - // Diagnostic - "space f q": "diagnostics::Deploy", - - // +Git - // Git prev/next hunk - "space g j": "editor::GoToHunk", - "space g k": "editor::GoToPrevHunk", - - // + Buffers - // Switch between buffers - "shift-h": "pane::ActivatePrevItem", - "shift-l": "pane::ActivateNextItem", - - // Close active panel - "space b c": "pane::CloseActiveItem", - "space b d": "pane::CloseActiveItem", - // Close other items - "space b o": "pane::CloseInactiveItems", - // Save file - "ctrl-s": "workspace::Save", - // File finder - "space f f": "file_finder::Toggle", - // Project search - "space f W": "pane::DeploySearch" - } - }, - { - "context": "Editor && vim_mode == visual", - "bindings": { - "shift-j": "editor::MoveLineDown", - "shift-k": "editor::MoveLineUp" - } - }, - // Empty pane, set of keybindings that are available when there is no active editor - { - "context": "(EmptyPane || SharedScreen) && vim_mode != insert", - "bindings": { - // Open file finder - "space f f": "file_finder::Toggle", - // Open recent project - "space f p": "projects::OpenRecent" - } - }, - { - "context": "Workspace", - "bindings": { - "ctrl-t": "terminal_panel::ToggleFocus" - } - }, - { - "context": "Terminal", - "bindings": { - "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], - "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"], - "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], - "ctrl-j": ["workspace::ActivatePaneInDirection", "Down"] - } - }, - // File panel (netrw) - { - "context": "ProjectPanel && not_editing", - "bindings": { - "a": "project_panel::NewFile", - "A": "project_panel::NewDirectory", - "r": "project_panel::Rename", - "d": "project_panel::Delete", - "x": "project_panel::Cut", - "c": "project_panel::Copy", - "p": "project_panel::Paste", - "y": "project_panel::CopyRelativePath", - "Y": "project_panel::CopyPath", - "o": ["project_panel::Open", "workspace::toggleLeftDock"], - // Close project panel as project file panel on the right - // Navigate between panel - "ctrl-h": ["workspace::ActivatePaneInDirection", "Left"], - "ctrl-l": ["workspace::ActivatePaneInDirection", "Right"], - "ctrl-k": ["workspace::ActivatePaneInDirection", "Up"], - "ctrl-j": ["workspace ::ActivatePaneInDirection", "Down"], - "space e": "workspace::ToggleLeftDock" - } - }, - // Panel nagivation - { - "context": "Dock", - "bindings": { - "ctrl-w h": ["workspace::ActivatePaneInDirection", "Left"], - "ctrl-w l": ["workspace::ActivatePaneInDirection", "Right"], - "ctrl-w k": ["workspace::ActivatePaneInDirection", "Up"], - "ctrl-w j": ["workspace::ActivatePaneInDirection", "Down"] - } - } - // Subword motion is not working really nice with `ciw`, disable for now - // { - // "context": "VimControl && !menu", - // "bindings": { - // "w": "vim::NextSubwordStart", - // "b": "vim::PreviousSubwordStart", - // "e": "vim::NextSubwordEnd", - // "g e": "vim::PreviousSubwordEnd" - // } - // } -] diff --git a/Configs/zed/.config/zed/private_settings.json b/Configs/zed/.config/zed/private_settings.json deleted file mode 100644 index b0308e0..0000000 --- a/Configs/zed/.config/zed/private_settings.json +++ /dev/null @@ -1,73 +0,0 @@ -// Zed settings -// -// For information on how to configure Zed, see the Zed -// documentation: https://zed.dev/docs/configuring-zed -// -// To see all of Zed's default settings without changing your -// custom settings, run `zed: open default settings` from the -// command palette (cmd-shift-p / ctrl-shift-p) -{ - "assistant": { - "default_model": { - "provider": "copilot_chat", - "model": "gpt-4o" - }, - "version": "2" - }, - "vim_mode": true, - "ui_font_size": 16, - "buffer_font_size": 16, - "buffer_font_family": "JetBrainsMono Nerd Font", - "cursor_blink": true, - "use_multiline_find": true, - "use_smartcase_search": true, - "relative_line_numbers": true, - "scroll_beyond_last_line": "vertical_scroll_margin", - "vertical_scroll_margin": 15, - "theme": { - "mode": "system", - "light": "One Light", - "dark": "Catppuccin Macchiato" - }, - "tab_bar": { - "show": true, - "show_nav_history_buttons": false - }, - "tabs": { - "file_icons": true, - "git_status": true - }, - "git": { - "git_gutter": "tracked_files", - "inline_blame": { - "enabled": false - } - }, - "indent_guides": { - "coloring": "indent_aware" - }, - "terminal": { - "copy_on_select": true, - "button": true - }, - "hover_popover_enabled": true, - "inlay_hints": { - "enabled": true - }, - "preview_tabs": { - "enabled": true, - "enable_preview_from_code_navigation": true, - "enable_preview_from_file_finder": false - }, - "scrollbar": { - "show": "auto", - "cursors": false, - "git_diff": false, - "search_results": true, - "selected_symbol": true, - "diagnostics": true - }, - "command_aliases": { - "q": "pane: close all items" - } -} diff --git a/Configs/zsh/zshrc b/Configs/zsh/zshrc deleted file mode 100644 index 2650df6..0000000 --- a/Configs/zsh/zshrc +++ /dev/null @@ -1,203 +0,0 @@ - -# ╭──────────────────────────────────────────────────────────╮ -# │ ZSH Config │ -# ╰──────────────────────────────────────────────────────────╯ - -# ╭──────────────────────────────────────────────────────────╮ -# │ 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" - -# source catppuccin theme for zsh-syntax-highlighting -zinit snippet "https://raw.githubusercontent.com/catppuccin/zsh-syntax-highlighting/main/themes/catppuccin_macchiato-zsh-syntax-highlighting.zsh" - -# ╭──────────────────────────────────────────────────────────╮ -# │ ZSH plugins │ -# ╰──────────────────────────────────────────────────────────╯ - -zinit light zsh-users/zsh-syntax-highlighting -zinit light zsh-users/zsh-completions -zinit light zsh-users/zsh-autosuggestions - -{{ #if dotter.packages.fzf }} -zinit light Aloxaf/fzf-tab -{{ /if }} - -# ╭──────────────────────────────────────────────────────────╮ -# │ Oh My Zsh snippets │ -# ╰──────────────────────────────────────────────────────────╯ -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 - -# 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 │ -# ╰──────────────────────────────────────────────────────────╯ -HISTSIZE=5000 -HISTFILE=~/.zsh_history -SAVEHIST=$HISTSIZE -HISTDUP=erase -setopt appendhistory -setopt sharehistory -setopt hist_ignore_space -setopt hist_ignore_all_dups -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}" - -{{ #if dotter.packages.fzf }} - -zstyle ':completion:*' menu no -zstyle ':fzf-tab:*' show-group full -zstyle ':fzf-tab:*' continuous-trigger '/' -zstyle ':fzf-tab:*' fzf-flags --height=10% --layout=reverse --info=inline --ansi -i --preview-window=right:60%:wrap - -# ── Previewers ─────────────────────────────────────────────────────── - -# Directories -zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview \ - 'eza -lha --color=always --icons --git --no-permissions --tree --level 3 --group-directories-first --total-size $realpath' -zstyle ':fzf-tab:complete:cd:*' fzf-preview \ - 'eza -lha --color=always --icons --git --no-permissions --tree --level 3 --group-directories-first --total-size $realpath' - -# systemctl -zstyle ':fzf-tab:complete:systemctl-*:*' fzf-preview 'SYSTEMD_COLORS=1 systemctl status $word' - -# git -zstyle ':fzf-tab:complete:git-(add|diff|restore):*' fzf-preview \ - 'git diff $word | bat -plman --color=always' -zstyle ':fzf-tab:complete:git-log:*' fzf-preview \ - 'git log --decorate --graph --color=always $word' -zstyle ':fzf-tab:complete:git-help:*' fzf-preview \ - 'git help $word | bat -plman --color=always' -zstyle ':fzf-tab:complete:git-show:*' fzf-preview \ - 'case "$group" in - "commit tag") git show --color=always $word ;; - *) git show --color=always $word | bat -plman --color=always ;; - esac' -zstyle ':fzf-tab:complete:git-checkout:*' fzf-preview \ - 'case "$group" in - "modified file") git diff $word | bat -plman --color=always ;; - "recent commit object name") git show --color=always $word | bat -plman --color=always ;; - *) git log --decorate --graph --color=always $word ;; - esac' - -# TLDR - zstyle ':fzf-tab:complete:tldr:argument-1' fzf-preview 'tldr --color always $word' - -{{ /if }} - -# ╭──────────────────────────────────────────────────────────╮ -# │ ZSH Options │ -# ╰──────────────────────────────────────────────────────────╯ -setopt EXTENDED_GLOB -setopt DOT_GLOB -setopt GLOB_DOTS - -# ╭──────────────────────────────────────────────────────────╮ -# │ Source other files │ -# ╰──────────────────────────────────────────────────────────╯ - -{{ #if dotter.packages.fzf }} -source $HOME/.config/fzf/fzfrc -{{ /if }} - -# this prevents errors and not loading some files -for file in $HOME/.config/zsh/**/*.zsh; do - source $file -done - -# ╭──────────────────────────────────────────────────────────╮ -# │ Init external programs │ -# ╰──────────────────────────────────────────────────────────╯ - -{{ #if dotter.packages.fzf }} -eval "$(fzf --zsh)" -{{ /if ~}} - -{{ #if (is_executable "zoxide") }} -eval "$(zoxide init --cmd cd zsh)" -{{ /if ~}} - -{{ #if dotter.packages.starship }} -eval "$(starship init zsh)" -{{ /if ~}} - -{{ #if (is_executable "mise") }} -eval "$(mise activate zsh)" -{{ /if ~}} 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 53b172b..566f550 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,12 @@ Please ensure the that git is installed and you have an ssh key registered, then execute the following command: +```bash +curl -SsL https://git.alecodes.page/alecodes/dots/raw/branch/main/bootstrap/bootstrap.sh | bash +``` + +Optionally, manually clone the repo to `~/.config/dotfiles/` and then execute: + ```bash curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash diff --git a/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/Configs/alacritty/.config/alacritty/alacritty.toml b/configs/alacritty/alacritty.toml similarity index 100% rename from Configs/alacritty/.config/alacritty/alacritty.toml rename to configs/alacritty/alacritty.toml diff --git a/Configs/alacritty/.config/alacritty/alacritty.yml b/configs/alacritty/alacritty.yml similarity index 100% rename from Configs/alacritty/.config/alacritty/alacritty.yml rename to configs/alacritty/alacritty.yml diff --git a/Configs/alacritty/.config/alacritty/themes/.keep b/configs/alacritty/themes/.keep similarity index 100% rename from Configs/alacritty/.config/alacritty/themes/.keep rename to configs/alacritty/themes/.keep diff --git a/configs/atuin/config.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/Configs/bat/.config/bat/config b/configs/bat/config similarity index 100% rename from Configs/bat/.config/bat/config rename to configs/bat/config diff --git a/configs/containers/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/Configs/foot/.config/foot/themes/catppuccin/assets/empty_dot_gitkeep b/configs/fish/functions/aliases.fish similarity index 100% rename from Configs/foot/.config/foot/themes/catppuccin/assets/empty_dot_gitkeep 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/Configs/fzf/.config/fzf/forgitrc b/configs/fzf/forgitrc similarity index 100% rename from Configs/fzf/.config/fzf/forgitrc rename to configs/fzf/forgitrc diff --git a/Configs/fzf/.config/fzf/fzfrc b/configs/fzf/fzfrc similarity index 100% rename from Configs/fzf/.config/fzf/fzfrc rename to configs/fzf/fzfrc diff --git a/Configs/fzf/.config/fzf/widgets/alias_widget.zsh b/configs/fzf/widgets/alias_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/alias_widget.zsh rename to configs/fzf/widgets/alias_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/atuin-history_widget.zsh b/configs/fzf/widgets/atuin-history_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/atuin-history_widget.zsh rename to configs/fzf/widgets/atuin-history_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/cd-recent-dir_widget.zsh b/configs/fzf/widgets/cd-recent-dir_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/cd-recent-dir_widget.zsh rename to configs/fzf/widgets/cd-recent-dir_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/cd_widget.zsh b/configs/fzf/widgets/cd_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/cd_widget.zsh rename to configs/fzf/widgets/cd_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/dictionary_widget.zsh b/configs/fzf/widgets/dictionary_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/dictionary_widget.zsh rename to configs/fzf/widgets/dictionary_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/fzf-rg-launcher.zsh b/configs/fzf/widgets/fzf-rg-launcher.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/fzf-rg-launcher.zsh rename to configs/fzf/widgets/fzf-rg-launcher.zsh diff --git a/Configs/fzf/.config/fzf/widgets/locate_widget.zsh b/configs/fzf/widgets/locate_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/locate_widget.zsh rename to configs/fzf/widgets/locate_widget.zsh diff --git a/Configs/fzf/.config/fzf/widgets/man_widget.zsh b/configs/fzf/widgets/man_widget.zsh similarity index 100% rename from Configs/fzf/.config/fzf/widgets/man_widget.zsh rename to configs/fzf/widgets/man_widget.zsh diff --git a/Configs/ghostty/.config/ghostty/config b/configs/ghostty/config similarity index 95% rename from Configs/ghostty/.config/ghostty/config rename to configs/ghostty/config index 4d1ff59..fa8602d 100644 --- a/Configs/ghostty/.config/ghostty/config +++ b/configs/ghostty/config @@ -1,7 +1,10 @@ -theme = catppuccin-macchiato +theme = Catppuccin Macchiato +font-family = JetBrainsMono Nerd Font # Common +keybind = global:ctrl+shift+x=toggle_quick_terminal + keybind = ctrl+space>o=write_selection_file:open keybind = ctrl+space>shift+o=write_selection_file:paste diff --git a/Configs/git/.config/git/config b/configs/git/config similarity index 100% rename from Configs/git/.config/git/config rename to configs/git/config diff --git a/Configs/git/.config/git/ignore b/configs/git/ignore similarity index 75% rename from Configs/git/.config/git/ignore rename to configs/git/ignore index 6417329..df7b329 100644 --- a/Configs/git/.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/Configs/hypr/.config/hypr/executable_gdm-wrapper.sh b/configs/hypr/base/executable_gdm-wrapper.sh similarity index 100% rename from Configs/hypr/.config/hypr/executable_gdm-wrapper.sh rename to configs/hypr/base/executable_gdm-wrapper.sh diff --git a/configs/hypr/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/.config/hypr/hyprland.conf b/configs/hypr/base/hyprland.conf similarity index 79% rename from Configs/hypr/.config/hypr/hyprland.conf rename to configs/hypr/base/hyprland.conf index 8d66b6b..0ac45f0 100644 --- a/Configs/hypr/.config/hypr/hyprland.conf +++ b/configs/hypr/base/hyprland.conf @@ -11,16 +11,14 @@ # ╰──────────────────────────────────────────────────────────╯ # ── System apps ───────────────────────────────────────────────────────── -exec-once = pipewire +# exec-once = pipewire +exec-once = /usr/lib/pam_kwallet_init exec-once = udieskie -exec-once = /usr/libexec/polkit-gnome-authentication-agent-1 exec-once = hyprctl setcursor catppuccin-macchiato-lavender-cursors 24 # ── Utils ─────────────────────────────────────────────────────────────── -exec-once = ~/.cargo/bin/wpaperd -d -exec-once = waybar -exec-once = hyprpaper -exec-once = mako +exec-once = wpaperd -d +exec-once = swaync --skip-system-css # ╭──────────────────────────────────────────────────────────╮ # │ Config │ @@ -28,14 +26,17 @@ exec-once = mako # 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 -# Some default env vars. -env = XCURSOR_SIZE,24 -env = QT_STYLE_OVERRIDE,kvantum +# Workaround for wrong wpaperd texture on vertical screen +# https://github.com/hyprwm/Hyprland/issues/9408#issuecomment-2661608482 +render { + expand_undersized_textures = false +} # ── Input devides ───────────────────────────────────────────────────── input { @@ -45,12 +46,13 @@ input { kb_options = caps:escape kb_rules = - follow_mouse = 2 + follow_mouse = 1 touchpad { natural_scroll = true } + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. } @@ -60,8 +62,8 @@ general { gaps_out = 10 border_size = 2 - col.active_border = $teal $teal - col.inactive_border = $surface1 $surface1 + col.active_border = rgba($tealAlphadd) + col.inactive_border = rgba($surface1Alphadd) # snap { # enabled = true @@ -71,11 +73,18 @@ general { } decoration { - rounding = 2 - drop_shadow = true - shadow_range = 4 - shadow_render_power = 3 - col.shadow = rgba($baseAlphaee) +# rounding = 2 +# drop_shadow = true +# shadow_range = 4 +# shadow_render_power = 3 +# col.shadow = rgba($baseAlphaee) + blur { + enabled = false + } + + shadow { + enabled = false + } } animations { @@ -89,24 +98,41 @@ animations { animation = specialWorkspace, 1, 8, default, fade } -gestures { - workspace_swipe = true - workspace_swipe_invert = false +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 = false - # swallow_regex = "" + 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 = 4 + slave_count_for_center_master = 0 } # ╭──────────────────────────────────────────────────────────╮ @@ -115,6 +141,7 @@ master { windowrulev2 = float, class:org.gnome.Nautilus windowrulev2 = float, class:xdg-desktop-portal-gtk +windowrulev2 = float, class:brave title:(.+)wants to save # ╭───────────────────────────────────────────────────────────╮ # │ Workspaces rules │ @@ -126,10 +153,10 @@ workspace = 3, monitor:HDMI-A-1, persistent:true workspace = 4, monitor:HDMI-A-1, persistent:true workspace = 5, monitor:HDMI-A-1, persistent:true -workspace = 6, monitor:eDP-1, persistent:true -workspace = 7, monitor:eDP-1, persistent:true -workspace = 8, monitor:eDP-1, persistent:true -workspace = 9, monitor:eDP-1, persistent:true +workspace = 6, monitor:HDMI-A-2, persistent:true +workspace = 7, monitor:HDMI-A-2, persistent:true +workspace = 8, monitor:HDMI-A-2, persistent:true +workspace = 9, monitor:HDMI-A-2, persistent:true # ╭──────────────────────────────────────────────────────────╮ # │ Keybindings │ @@ -138,20 +165,22 @@ workspace = 9, monitor:eDP-1, persistent:true $mainMod = SUPER # $menu = bemenu-run -iwn --binding vim --vim-esc-exits --scrollbar autohide --fixed-height --counter always -l 20 -P '>' -p 'Open:' -B 2 -R 5 --cw '5x' --fn 'JetBrainsMono 13' --bdr '##$tealAlpha' --ab '##$baseAlpha' --af '##$textAlpha' --fb '##$baseAlpha' --ff '##$textAlpha' --cf '##$mauveAlpha' --hb '##$surface0Alpha' --hf '##$tealAlpha' --nb '##$baseAlpha' --nf '##$textAlpha' --tb '##$mauveAlpha' --tf '##$baseAlpha' --scb '##$surface0Alpha' --scf '##$mauveAlpha' -$menu = rofi -show drun +$menu = rofi -show drun -run-command "uwsm app -- {cmd}" # ── Spawn ───────────────────────────────────────────────────────────── -bind = $mainMod SHIFT, E, exit, -bind = $mainMod, return, exec, kitty +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 = $mainMod, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy -# screenshot area -bind = $mainMod SHIFT, Print, exec, grim -g "$(slurp -d)" - | wl-copy +bind = SHIFT, Print, exec, grim -g "$(hyprctl activewindow -j | jq -r '"\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"')" - | wl-copy && notify-send "Screenshot taken!" # screenshot area and edit it -bind = $mainMod CTRL, Print, exec, grim -g "$(slurp -d)" - | swappy -f - +bind = SHIFT CTRL, Print, exec, grim -g "$(slurp -d)" - | swappy -f - && notify-send "Screenshot taken!" +# screenshot area +bind = , Print, exec, grim -g "$(slurp -d)" - | wl-copy && notify-send "Screenshot taken!" bind = , XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%+ bind = , XF86AudioLowerVolume, exec, wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 5%- @@ -161,12 +190,15 @@ bind = , XF86AudioPlay, exec, playerctl play-pause bind = , XF86AudioNext, exec, playerctl next bind = , XF86AudioPrev, exec, playerctl previous bind = , XF86MonBrightnessUp, exec, brightnessctl set +5% -bind = , XF86MonBrightnessDown, exec, brightnessctl set 5%- # ── Window Options ──────────────────────────────────────────────────── bind = $mainMod SHIFT, space, togglefloating, bind = $mainMod, f, fullscreen, 1 # preserve gaps and bar bind = $mainMod SHIFT, f, fullscreen, 0 # use whole screen +bind = $mainMod SHIFT, s, toggleswallow + +bind = $mainMod, t, changegroupactive +bind = $mainMod SHIFT, t, togglegroup # ── Focus ───────────────────────────────────────────────────────────── bind = $mainMod, h, movefocus, l @@ -174,10 +206,10 @@ bind = $mainMod, j, movefocus, d bind = $mainMod, k, movefocus, u bind = $mainMod, l, movefocus, r -bind = $mainMod + SHIFT, h, movewindow, l -bind = $mainMod + SHIFT, j, movewindow, d -bind = $mainMod + SHIFT, k, movewindow, u -bind = $mainMod + SHIFT, l, movewindow, r +bind = $mainMod + SHIFT, h, movewindoworgroup, l +bind = $mainMod + SHIFT, j, movewindoworgroup, d +bind = $mainMod + SHIFT, k, movewindoworgroup, u +bind = $mainMod + SHIFT, l, movewindoworgroup, r bind = $mainMod, bar, workspace, previous bind = $mainMod CTRL, bar, focusmonitor, +1 @@ -208,6 +240,9 @@ bind = $mainMod, 7, workspace, 7 bind = $mainMod, 8, workspace, 8 bind = $mainMod, 9, workspace, 9 +bind = $mainMod, Next, workspace, +1 +bind = $mainMod, Prior, workspace, -1 + bind = $mainMod SHIFT, 1, movetoworkspace, 1 bind = $mainMod SHIFT, 2, movetoworkspace, 2 bind = $mainMod SHIFT, 3, movetoworkspace, 3 diff --git a/configs/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/Configs/hypr/.config/hypr/hyprpaper.conf b/configs/hypr/base/hyprpaper.conf similarity index 100% rename from Configs/hypr/.config/hypr/hyprpaper.conf rename to configs/hypr/base/hyprpaper.conf diff --git a/Configs/yazi/.config/yazi/plugins/.keep b/configs/hypr/base/include/.gitkeep similarity index 100% rename from Configs/yazi/.config/yazi/plugins/.keep rename to configs/hypr/base/include/.gitkeep diff --git a/Configs/hypr/.config/hypr/theme.conf b/configs/hypr/base/theme.conf similarity index 100% rename from Configs/hypr/.config/hypr/theme.conf rename to configs/hypr/base/theme.conf diff --git a/configs/hypr/work-laptop/hyprland.conf b/configs/hypr/work-laptop/hyprland.conf new file mode 100644 index 0000000..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/Configs/kitty/.config/kitty/current-theme.conf b/configs/kitty/current-theme.conf similarity index 100% rename from Configs/kitty/.config/kitty/current-theme.conf rename to configs/kitty/current-theme.conf diff --git a/configs/kitty/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/Configs/kitty/.config/kitty/private_kitty.conf.bak b/configs/kitty/private_kitty.conf.bak similarity index 100% rename from Configs/kitty/.config/kitty/private_kitty.conf.bak rename to configs/kitty/private_kitty.conf.bak diff --git a/configs/kitty/quick-access-terminal.conf b/configs/kitty/quick-access-terminal.conf new file mode 100644 index 0000000..3d3949b --- /dev/null +++ b/configs/kitty/quick-access-terminal.conf @@ -0,0 +1,120 @@ +lines 30 + +#: The number of lines shown in the panel. Ignored for background, +#: centered, and vertical panels. If it has the suffix px then it sets +#: the height of the panel in pixels instead of lines. + +columns 200 + +#: The number of columns shown in the panel. Ignored for background, +#: centered, and horizontal panels. If it has the suffix px then it +#: sets the width of the panel in pixels instead of columns. + +edge top + +#: Which edge of the screen to place the panel on. Note that some +#: window managers (such as i3) do not support placing docked windows +#: on the left and right edges. The value background means make the +#: panel the "desktop wallpaper". Note that when using sway if you set +#: a background in your sway config it will cover the background drawn +#: using this kitten. Additionally, there are three more values: +#: center, center-sized and none. The value center anchors the panel +#: to all sides and covers the entire display (on macOS the part of +#: the display not covered by titlebar and dock). The panel can be +#: shrunk and placed using the margin parameters. The value none +#: anchors the panel to the top left corner and should be placed using +#: the margin parameters. Its size is set by lines and columns. The +#: value center-sized is just like none except that the panel is +#: centered instead of in the top left corner and the margins have no +#: effect. + +background_opacity 1 + +#: The background opacity of the window. This works the same as the +#: kitty option of the same name, it is present here as it has a +#: different default value for the quick access terminal. + +# hide_on_focus_loss no + +#: Hide the window when it loses keyboard focus automatically. Using +#: this option will force focus_policy to on-demand. + +# grab_keyboard no + +#: Grab the keyboard. This means global shortcuts defined in the OS +#: will be passed to kitty instead. Useful if you want to create an OS +#: modal window. How well this works depends on the OS/window +#: manager/desktop environment. On Wayland it works only if the +#: compositor implements the inhibit-keyboard-shortcuts protocol +#: . On macOS Apple doesn't allow applications to grab the +#: keyboard without special permissions, so it doesn't work. + +margin_left 50 + +#: Set the left margin for the panel, in pixels. Has no effect for +#: right edge panels. Only works on macOS and Wayland compositors that +#: supports the wlr layer shell protocol. + +margin_right 50 + +#: Set the right margin for the panel, in pixels. Has no effect for +#: left edge panels. Only works on macOS and Wayland compositors that +#: supports the wlr layer shell protocol. + +margin_top 10 + +#: Set the top margin for the panel, in pixels. Has no effect for +#: bottom edge panels. Only works on macOS and Wayland compositors +#: that supports the wlr layer shell protocol. + +# margin_bottom 0 + +#: Set the bottom margin for the panel, in pixels. Has no effect for +#: top edge panels. Only works on macOS and Wayland compositors that +#: supports the wlr layer shell protocol. + +# kitty_conf + +#: Path to config file to use for kitty when drawing the window. Can +#: be specified multiple times. By default, the normal kitty.conf is +#: used. Relative paths are resolved with respect to the kitty config +#: directory. + +kitty_override window_padding_width=0 8 + +#: Override individual kitty configuration options, can be specified +#: multiple times. Syntax: kitty_override name=value. For example: +#: kitty_override font_size=20. + +app_id kitty-quick-access + +#: On Wayland set the namespace of the layer shell surface. On X11 set +#: the WM_CLASS assigned to the quick access window. (Linux only) + +# output_name + +#: The panel can only be displayed on a single monitor (output) at a +#: time. This allows you to specify which output is used, by name. If +#: not specified the compositor will choose an output automatically, +#: typically the last output the user interacted with or the primary +#: monitor. Run kitten panel --output-name list to get a list of +#: available outputs. Use listjson for a json encoded output. Note +#: that on Wayland the output can only be set at panel creation time, +#: it cannot be changed after creation, nor is there anyway to display +#: a single panel on all outputs. Please complain to the Wayland +#: developers about this. + +# start_as_hidden no + +#: Whether to start the quick access terminal hidden. Useful if you +#: are starting it as part of system startup. + +# focus_policy exclusive + +#: On a Wayland compositor that supports the wlr layer shell protocol, +#: specify the focus policy for keyboard interactivity with the panel. +#: Please refer to the wlr layer shell protocol documentation for more +#: details. Note that different Wayland compositors behave very +#: differently with exclusive, your mileage may vary. On macOS, +#: exclusive and on-demand are currently the same. diff --git a/configs/lazygit/config.yml b/configs/lazygit/config.yml new file mode 100644 index 0000000..2d38e28 --- /dev/null +++ b/configs/lazygit/config.yml @@ -0,0 +1,494 @@ +# Config relating to the Lazygit UI +gui: + # The number of lines you scroll by when scrolling the main window + scrollHeight: 2 + # If true, allow scrolling past the bottom of the content in the main window + scrollPastBottom: true + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin + scrollOffMargin: 2 + # One of: 'margin' (default) | 'jump' + scrollOffBehavior: margin + # If true, capture mouse events. + # When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS. + mouseEvents: true + # If true, do not show a warning when discarding changes in the staging view. + skipDiscardChangeWarning: false + # If true, do not show warning when applying/popping the stash + skipStashWarning: false + # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. + skipNoStagedFilesWarning: false + # If true, do not show a warning when rewording a commit via an external editor + skipRewordInEditorWarning: false + # Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section. + # Number from 0 to 1.0. + sidePanelWidth: 0.3333 + # If true, increase the height of the focused side window; creating an accordion effect. + expandFocusedSidePanel: false + # The weight of the expanded side panel, relative to the other panels. 2 means + # twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true. + expandedSidePanelWeight: 2 + # Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split. + # Options are: + # - 'horizontal': split the window horizontally + # - 'vertical': split the window vertically + # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically + mainPanelSplitMode: flexible + # How the window is split when in half screen mode (i.e. after hitting '+' once). + # Possible values: + # - 'left': split the window horizontally (side panel on the left, main view on the right) + # - 'top': split the window vertically (side panel on top, main view below) + enlargedSideViewLocation: left + # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' + language: auto + # Format used when displaying time e.g. commit time. + # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format + timeFormat: 02 Jan 06 + # Format used when displaying time if the time is less than 24 hours ago. + # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format + shortTimeFormat: 3:04PM + # Config relating to colors and styles. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes + theme: + activeBorderColor: + - '#8bd5ca' + - bold + inactiveBorderColor: + - '#a5adcb' + optionsTextColor: + - '#8aadf4' + selectedLineBgColor: + - '#363a4f' + cherryPickedCommitBgColor: + - '#494d64' + cherryPickedCommitFgColor: + - '#8bd5ca' + unstagedChangesColor: + - '#ed8796' + defaultFgColor: + - '#cad3f5' + searchingActiveBorderColor: + - '#eed49f' + # Background color of selected line when view doesn't have focus. + inactiveViewSelectedLineBgColor: + - bold + # Foreground color of marked base commit (for rebase) + markedBaseCommitFgColor: + - blue + # Background color of marked base commit (for rebase) + markedBaseCommitBgColor: + - yellow + authorColors: + '*': '#b7bdf8' + # Config relating to the commit length indicator + commitLength: + # If true, show an indicator of commit message length + show: true + # If true, show the '5 of 20' footer at the bottom of list views + showListFooter: true + # If true, display the files in the file views as a tree. If false, display the files as a flat list. + # This can be toggled from within Lazygit with the '~' key, but that will not change the default. + showFileTree: true + # If true, show a random tip in the command log when Lazygit starts + showRandomTip: true + # If true, show the command log + showCommandLog: true + # If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action. + showBottomLine: true + # If true, show jump-to-window keybindings in window titles. + showPanelJumps: true + # Deprecated: use nerdFontsVersion instead + showIcons: false + # Nerd fonts version to use. + # One of: '2' | '3' | empty string (default) + # If empty, do not show icons. + nerdFontsVersion: "3" + # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. + showFileIcons: true + # Length of author name in (non-expanded) commits view. 2 means show initials only. + commitAuthorShortLength: 2 + # Length of author name in expanded commits view. 2 means show initials only. + commitAuthorLongLength: 17 + # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. + commitHashLength: 8 + # If true, show commit hashes alongside branch names in the branches view. + showBranchCommitHash: false + # Whether to show the divergence from the base branch in the branches view. + # One of: 'none' | 'onlyArrow' | 'arrowAndNumber' + showDivergenceFromBaseBranch: none + # Height of the command log view + commandLogSize: 8 + # Whether to split the main window when viewing file changes. + # One of: 'auto' | 'always' + # If 'auto', only split the main window when a file has both staged and unstaged changes + splitDiff: auto + # Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default). + # One of: 'normal' (default) | 'half' | 'full' + screenMode: normal + # Window border style. + # One of 'rounded' (default) | 'single' | 'double' | 'hidden' + border: rounded + # If true, show a seriously epic explosion animation when nuking the working tree. + animateExplosion: true + # Whether to stack UI components on top of each other. + # One of 'auto' (default) | 'always' | 'never' + portraitMode: auto + # How things are filtered when typing '/'. + # One of 'substring' (default) | 'fuzzy' + filterMode: fuzzy + # Config relating to the spinner. + spinner: + # The frames of the spinner animation. + frames: + - '|' + - / + - '-' + - \ + # The "speed" of the spinner in milliseconds. + rate: 50 + # Status panel view. + # One of 'dashboard' (default) | 'allBranchesLog' + statusPanelView: dashboard + # If true, jump to the Files panel after popping a stash + switchToFilesAfterStashPop: true + # If true, jump to the Files panel after applying a stash + switchToFilesAfterStashApply: true +# Config relating to git +git: + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md + 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}} -- + # If true, do not spawn a separate process when using GPG + overrideGpg: false + # If true, do not allow force pushes + disableForcePushing: false + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix + # commitPrefix: + # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" + # pattern: "" + + # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " + # replace: "" + + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix + branchPrefix: "" + # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 + # (This should really be under 'gui', not 'git') + parseEmoji: true + # Config for showing the log in the commits view + log: + # One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default' + # 'topo-order' makes it easier to read the git log graph, but commits may not + # appear chronologically. See https://git-scm.com/docs/ + # + # Deprecated: Configure this with `Log menu -> Commit sort order` ( in the commits window by default). + order: topo-order + # This determines whether the git graph is rendered in the commits panel + # One of 'always' | 'never' | 'when-maximised' + # + # Deprecated: Configure this with `Log menu -> Show git graph` ( in the commits window by default). + showGraph: always + # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) + showWholeGraph: false + # When copying commit hashes to the clipboard, truncate them to this + # length. Set to 40 to disable truncation. + truncateCopiedCommitHashesTo: 12 + 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: "nvim -- {{filename}} && kitten @ close-window -m var:lazy_float=true --ignore-no-match" + # Command for editing a file at a given line number. Should contain + # "{{filename}}", and may optionally contain "{{line}}". + editAtLine: "nvim +{{line}} -- {{filename}} && kitten @ close-window -m var:lazy_float=true --ignore-no-match" + # Same as EditAtLine, except that the command needs to wait until the + # window is closed. + editAtLineAndWait: "" + # For opening a directory in an editor + openDirInEditor: "" + # A built-in preset that sets all of the above settings. Supported presets + # are defined in the getPreset function in editor_presets.go. + editPreset: "nvim" + # Command for opening a file, as if the file is double-clicked. Should + # contain "{{filename}}", but doesn't support "{{line}}". + open: "xdg-open {{filename}} >/dev/null" + # Command for opening a link. Should contain "{{link}}". + openLink: "" + # EditCommand is the command for editing a file. + # Deprecated: use Edit instead. Note that semantics are different: + # EditCommand is just the command itself, whereas Edit contains a + # "{{filename}}" variable. + editCommand: "" + # EditCommandTemplate is the command template for editing a file + # Deprecated: use EditAtLine instead. + editCommandTemplate: "" + # OpenCommand is the command for opening a file + # Deprecated: use Open instead. + openCommand: "" + # OpenLinkCommand is the command for opening a link + # Deprecated: use OpenLink instead. + openLinkCommand: "" + # CopyToClipboardCmd is the command for copying to clipboard. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard + copyToClipboardCmd: "" + # ReadFromClipboardCmd is the command for reading the clipboard. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard + readFromClipboardCmd: "" +# If true, don't display introductory popups upon opening Lazygit. +disableStartupPopups: false +# What to do when opening Lazygit outside of a git repo. +# - '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: false +# Keybindings +keybinding: + universal: + quit: q + quit-alt1: + return: + quitWithoutChangingDirectory: Q + togglePanel: + prevItem: + nextItem: + prevItem-alt: k + nextItem-alt: j + prevPage: ',' + nextPage: . + scrollLeft: H + scrollRight: L + gotoTop: < + gotoBottom: '>' + toggleRangeSelect: v + rangeSelectDown: + rangeSelectUp: + prevBlock: + nextBlock: + prevBlock-alt: h + nextBlock-alt: l + nextBlock-alt2: + prevBlock-alt2: + jumpToBlock: + - "1" + - "2" + - "3" + - "4" + - "5" + nextMatch: "n" + prevMatch: "N" + startSearch: / + optionMenu: + optionMenu-alt1: '?' + select: + goInto: + confirm: + confirmInEditor: + remove: d + new: "n" + edit: e + openFile: o + scrollUpMain: + scrollDownMain: + scrollUpMain-alt1: K + scrollDownMain-alt1: J + scrollUpMain-alt2: + scrollDownMain-alt2: + executeShellCommand: ':' + createRebaseOptionsMenu: m + # 'Files' appended for legacy reasons + pushFiles: P + # 'Files' appended for legacy reasons + pullFiles: p + refresh: R + createPatchOptionsMenu: + nextTab: ']' + prevTab: '[' + nextScreenMode: + + prevScreenMode: _ + undo: z + redo: + filteringMenu: + diffingMenu: W + diffingMenu-alt: + copyToClipboard: + openRecentRepos: + submitEditorText: + extrasMenu: '@' + toggleWhitespaceInDiffView: + increaseContextInDiffView: '}' + decreaseContextInDiffView: '{' + increaseRenameSimilarityThreshold: ) + decreaseRenameSimilarityThreshold: ( + openDiffTool: + status: + checkForUpdate: u + recentRepos: + allBranchesLogGraph: a + files: + commitChanges: c + commitChangesWithoutHook: w + amendLastCommit: A + commitChangesWithEditor: C + findBaseCommitForFixup: + confirmDiscard: x + ignoreFile: i + refreshFiles: r + stashAllChanges: s + viewStashOptions: S + toggleStagedAll: a + viewResetOptions: D + fetch: f + toggleTreeView: '`' + openMergeOptions: M + openStatusFilter: + copyFileInfoToClipboard: "y" + branches: + createPullRequest: o + viewPullRequestOptions: O + copyPullRequestURL: + checkoutBranchByName: c + forceCheckoutBranch: F + rebaseBranch: r + renameBranch: R + mergeIntoCurrentBranch: M + viewGitFlowOptions: i + fastForward: f + createTag: T + pushTag: P + setUpstream: u + fetchRemote: f + sortOrder: s + worktrees: + viewWorktreeOptions: w + commits: + squashDown: s + renameCommit: r + renameCommitWithEditor: R + viewResetOptions: g + markCommitAsFixup: f + createFixupCommit: F + squashAboveCommits: S + moveDownCommit: + moveUpCommit: + amendToCommit: A + resetCommitAuthor: a + pickCommit: p + revertCommit: t + cherryPickCopy: C + pasteCommits: V + markCommitAsBaseForRebase: B + tagCommit: T + checkoutCommit: + resetCherryPick: + copyCommitAttributeToClipboard: "y" + openLogMenu: + openInBrowser: o + viewBisectOptions: b + startInteractiveRebase: i + amendAttribute: + resetAuthor: a + setAuthor: A + addCoAuthor: c + stash: + popStash: g + renameStash: r + commitFiles: + checkoutCommitFile: c + main: + toggleSelectHunk: a + pickBothHunks: b + editSelectHunk: E + submodules: + init: i + update: u + bulkMenu: b + commitMessage: + commitMenu: +customCommands: + - key: "C" + command: 'cog commit "{{ .Form.Type }} {{ .Form.Description }}" {{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}' + description: "Commit with cocogitto" + context: "files" + prompts: + - type: "menuFromCommand" + title: "Select the commit type" + key: "Type" + command: > + bash -c "cog commit --help | sed -n 's/.*\\[possible values: \\(.*\\)\\].*/\\1/p' | tr ', ' '\\n' | sed '/^$/d' | sort" + + - type: "input" + title: "Enter the scope(s) of this change" + key: "Scopes" + - type: "input" + title: "Enter a short description of the change" + key: "Description" + - type: "confirm" + title: "Is the commit message correct?" + body: "{{ .Form.Type }}{{if .Form.Scopes}}({{ .Form.Scopes }}){{end}}: {{ .Form.Description }}" diff --git a/Configs/mako/.config/mako/config b/configs/mako/config similarity index 90% rename from Configs/mako/.config/mako/config rename to configs/mako/config index 1b7531f..7a78949 100644 --- a/Configs/mako/.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/Configs/zed/.config/zed/themes/.keep b/configs/mise/mise.lock similarity index 100% rename from Configs/zed/.config/zed/themes/.keep rename to configs/mise/mise.lock diff --git a/Configs/mpv/.config/mpv/encoding.rst b/configs/mpv/encoding.rst similarity index 100% rename from Configs/mpv/.config/mpv/encoding.rst rename to configs/mpv/encoding.rst diff --git a/Configs/mpv/.config/mpv/input.conf b/configs/mpv/input.conf similarity index 100% rename from Configs/mpv/.config/mpv/input.conf rename to configs/mpv/input.conf diff --git a/Configs/mpv/.config/mpv/mplayer-input.conf b/configs/mpv/mplayer-input.conf similarity index 100% rename from Configs/mpv/.config/mpv/mplayer-input.conf rename to configs/mpv/mplayer-input.conf diff --git a/Configs/mpv/.config/mpv/mpv.conf b/configs/mpv/mpv.conf similarity index 100% rename from Configs/mpv/.config/mpv/mpv.conf rename to configs/mpv/mpv.conf diff --git a/Configs/mpv/.config/mpv/restore-old-bindings.conf b/configs/mpv/restore-old-bindings.conf similarity index 100% rename from Configs/mpv/.config/mpv/restore-old-bindings.conf rename to configs/mpv/restore-old-bindings.conf diff --git a/Configs/mpv/.config/mpv/script-opts/mpv_thumbnail_script.conf b/configs/mpv/script-opts/mpv_thumbnail_script.conf similarity index 100% rename from Configs/mpv/.config/mpv/script-opts/mpv_thumbnail_script.conf rename to configs/mpv/script-opts/mpv_thumbnail_script.conf diff --git a/Configs/mpv/.config/mpv/scripts/mpv-i3-floating-centered.lua b/configs/mpv/scripts/mpv-i3-floating-centered.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv-i3-floating-centered.lua rename to configs/mpv/scripts/mpv-i3-floating-centered.lua diff --git a/Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_client_osc.lua b/configs/mpv/scripts/mpv_thumbnail_script_client_osc.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_client_osc.lua rename to configs/mpv/scripts/mpv_thumbnail_script_client_osc.lua diff --git a/Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua b/configs/mpv/scripts/mpv_thumbnail_script_server-1.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server-1.lua rename to configs/mpv/scripts/mpv_thumbnail_script_server-1.lua diff --git a/Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server-2.lua b/configs/mpv/scripts/mpv_thumbnail_script_server-2.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server-2.lua rename to configs/mpv/scripts/mpv_thumbnail_script_server-2.lua diff --git a/Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server.lua b/configs/mpv/scripts/mpv_thumbnail_script_server.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/mpv_thumbnail_script_server.lua rename to configs/mpv/scripts/mpv_thumbnail_script_server.lua diff --git a/Configs/mpv/.config/mpv/scripts/pause-indicator.lua b/configs/mpv/scripts/pause-indicator.lua similarity index 100% rename from Configs/mpv/.config/mpv/scripts/pause-indicator.lua rename to configs/mpv/scripts/pause-indicator.lua diff --git a/Configs/mpv/.config/mpv/tech-overview.txt b/configs/mpv/tech-overview.txt similarity index 100% rename from Configs/mpv/.config/mpv/tech-overview.txt rename to configs/mpv/tech-overview.txt diff --git a/configs/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/configs/niri/base/include/.gitkeep b/configs/niri/base/include/.gitkeep new file mode 100644 index 0000000..e69de29 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_unstable/.config/nvim_unstable/init.lua b/configs/nvim/init.lua similarity index 91% rename from Configs/nvim_unstable/.config/nvim_unstable/init.lua rename to configs/nvim/init.lua index 329586b..b926841 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/init.lua +++ b/configs/nvim/init.lua @@ -16,6 +16,8 @@ end vim.opt.rtp:prepend(lazypath) require("aleidk.options") +require("aleidk.commands") +require("aleidk.autocmds") require("aleidk.keymaps") -- Setup lazy.nvim @@ -28,5 +30,5 @@ require("lazy").setup({ -- colorscheme that will be used when installing plugins. install = { colorscheme = { "habamax" } }, -- automatically check for plugin updates - checker = { enabled = true }, + -- checker = { enabled = true }, }) diff --git a/configs/nvim/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/Configs/nvim/.config/nvim/lua/aleidk/constants.lua b/configs/nvim/lua/aleidk/constants.lua similarity index 100% rename from Configs/nvim/.config/nvim/lua/aleidk/constants.lua rename to configs/nvim/lua/aleidk/constants.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/keymaps.lua b/configs/nvim/lua/aleidk/keymaps.lua similarity index 80% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/keymaps.lua rename to configs/nvim/lua/aleidk/keymaps.lua index f7a3019..148c5f6 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/keymaps.lua +++ b/configs/nvim/lua/aleidk/keymaps.lua @@ -31,4 +31,11 @@ vim.keymap.set("n", "", "j", { desc = "Move to bottom window", silent vim.keymap.set("n", "", "k", { desc = "Move to top window", silent = true }) vim.keymap.set("n", "", "l", { desc = "Move to right window", silent = true }) --- stylua: ignore end +-- LSP + +vim.keymap.set("n", "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_unstable/.config/nvim_unstable/lua/aleidk/options.lua b/configs/nvim/lua/aleidk/options.lua similarity index 62% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua rename to configs/nvim/lua/aleidk/options.lua index ed7f0bf..cf76fb6 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/options.lua +++ b/configs/nvim/lua/aleidk/options.lua @@ -10,54 +10,54 @@ vim.o.diffopt = "vertical,closeoff,filler" local opt = vim.opt vim.schedule(function() - vim.opt.clipboard = 'unnamedplus' + vim.opt.clipboard = "unnamedplus" end) -vim.o.winborder = 'rounded' +-- opt.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages +-- vim.o.exrc = true +-- vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. +-- vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } +opt.autowrite = true -- Enable auto write opt.breakindent = true -- Every wrapped line will continue visually indented -opt.autowrite = true -- Enable auto write --- opt.completeopt = "menu,menuone,noselect" -vim.o.completeopt = 'noselect,menu,menuone,noinsert,popup' -opt.conceallevel = 2 -- Hide * markup for bold and italic -opt.confirm = true -- Confirm to save changes before exiting modified buffer -opt.cursorline = true -- Enable highlighting of the current line -opt.expandtab = true -- Use spaces instead of tabs +opt.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 -vim.opt.list = true -- Sets how neovim will display certain whitespace characters in the editor. -vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } -opt.mouse = "a" -- Enable mouse mode -opt.number = true -- Print line number -opt.pumblend = 10 -- Popup blend -opt.pumheight = 10 -- Maximum number of entries in a popup -opt.relativenumber = true -- Relative line numbers -opt.scrolloff = 15 -- Lines of context +opt.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.shortmess:append({ W = true, I = true, c = true }) -- INFO: this control the format of some messages -opt.showmode = false -- Don't show mode since we have a statusline -opt.sidescrolloff = 8 -- Columns of context -opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time -opt.smartcase = true -- Don't ignore case with capitals -opt.smartindent = true -- Insert indents automatically +opt.shiftround = true -- Round indent +opt.shiftwidth = 2 -- Size of an indent +opt.showmode = false -- Don't show mode since we have a statusline +opt.sidescrolloff = 8 -- Columns of context +opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time +opt.smartcase = true -- Don't ignore case with capitals +opt.smartindent = true -- Insert indents automatically opt.spelllang = { "en" } -opt.splitbelow = true -- Put new windows below current -opt.splitright = true -- Put new windows right of current -opt.tabstop = 2 -- Number of spaces tabs count for -opt.termguicolors = true -- True color support -opt.timeoutlen = 300 +opt.splitbelow = true -- Put new windows below current +opt.splitright = true -- Put new windows right of current +opt.tabstop = 2 -- Number of spaces tabs count for +opt.termguicolors = true -- True color support opt.undofile = true opt.undolevels = 10000 -opt.updatetime = 200 -- Save swap file and trigger CursorHold +opt.updatetime = 200 -- Save swap file and trigger CursorHold opt.wildmode = "longest,list:full" -- Command-line completion mode -opt.winminwidth = 5 -- Minimum window width -opt.wrap = false -- Disable line wrap -vim.opt.inccommand = 'split' -- Preview substitutions live, as you type! +opt.winminwidth = 5 -- Minimum window width +opt.wrap = false -- Disable line wrap +vim.o.completeopt = "noselect,menu,menuone,noinsert,popup" +vim.o.winborder = "rounded" vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" @@ -130,18 +130,20 @@ vim.filetype.add({ mdx = "mdx", log = "log", conf = "conf", - env = "dotenv", + -- env = "dotenv", }, -- Detect and apply filetypes based on the entire filename filename = { - [".env"] = "dotenv", + -- [".env"] = "dotenv", ["env"] = "dotenv", ["tsconfig.json"] = "jsonc", }, -- Detect and apply filetypes based on certain patterns of the filenames pattern = { -- INFO: Match filenames like - ".env.example", ".env.local" and so on - ["%.env%.[%w_.-]+"] = "dotenv", + -- ["%.env%.[%w_.-]+"] = "dotenv", + ["compose.*%.ya?ml"] = "yaml.docker-compose", + ["docker-compose.*%.ya?ml"] = "yaml.docker-compose", [".*%.blade%.php"] = "blade", [".*%.hurl.*"] = "hurl", [".*/hypr/.*%.conf"] = "hyprlang", @@ -152,10 +154,22 @@ vim.filetype.add({ -- │ LSP │ -- ╰─────────────────────────────────────────────────────────╯ -vim.lsp.enable({ - "rust_analyzer" +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 } + virtual_lines = { current_line = true }, }) diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua b/configs/nvim/lua/aleidk/plugins/bookmarks.lua similarity index 93% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua rename to configs/nvim/lua/aleidk/plugins/bookmarks.lua index a68f973..f5e8aee 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/bookmarks.lua +++ b/configs/nvim/lua/aleidk/plugins/bookmarks.lua @@ -13,12 +13,7 @@ return { dependencies = { { "nvim-tree/nvim-web-devicons", lazy = true }, }, - lazy = false, cmd = "Grapple", - config = function() - local telescope = require("telescope") - telescope.load_extension("grapple") - end, keys = { { "a", "Grapple toggle", desc = "Toggle bookmark for current file" }, { "D", "Grapple reset", desc = "Delete all bookmarks" }, diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua b/configs/nvim/lua/aleidk/plugins/colorscheme.lua similarity index 82% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua rename to configs/nvim/lua/aleidk/plugins/colorscheme.lua index 2eef16c..2237d69 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/colorscheme.lua +++ b/configs/nvim/lua/aleidk/plugins/colorscheme.lua @@ -51,6 +51,11 @@ return { -- Change colors.none if not using a transparent background style = { "bold" }, }, GitSignsDeleteVirtLn = { bg = colors.none, fg = colors.red }, + + MiniJump2dDim = { fg = colors.surface1 }, + MiniJump2dSpot = { bg = colors.base, fg = colors.teal, style = { "bold", "underline" } }, + MiniJump2dSpotAhead = { bg = colors.base, fg = colors.teal, style = { "bold", "underline" } }, + MiniJump2dSpotUnique = { bg = colors.base, fg = colors.teal, style = { "bold", "underline" } }, } end, } diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/comments.lua b/configs/nvim/lua/aleidk/plugins/comments.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/comments.lua rename to configs/nvim/lua/aleidk/plugins/comments.lua 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_unstable/.config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua b/configs/nvim/lua/aleidk/plugins/file-explorer.lua similarity index 71% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua rename to configs/nvim/lua/aleidk/plugins/file-explorer.lua index 6499ad7..8631829 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/file-explorer.lua +++ b/configs/nvim/lua/aleidk/plugins/file-explorer.lua @@ -1,8 +1,18 @@ 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", + "e", "Yazi", desc = "Open yazi at the current file", }, 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_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua b/configs/nvim/lua/aleidk/plugins/fzf.lua similarity index 78% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua rename to configs/nvim/lua/aleidk/plugins/fzf.lua index 991d804..c1549ed 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/fzf.lua +++ b/configs/nvim/lua/aleidk/plugins/fzf.lua @@ -1,7 +1,21 @@ return { "ibhagwan/fzf-lua", + lazy = false, -- Required to register vim.ui.select() wrapper dependencies = { "echasnovski/mini.nvim" }, - opts = {}, + 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" }, 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/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/linters.lua b/configs/nvim/lua/aleidk/plugins/linters.lua similarity index 78% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/linters.lua rename to configs/nvim/lua/aleidk/plugins/linters.lua index 06aec9f..f73dc84 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-ide/linters.lua +++ b/configs/nvim/lua/aleidk/plugins/linters.lua @@ -9,11 +9,16 @@ return { lint.linters_by_ft = { -- 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_unstable/.config/nvim_unstable/lua/aleidk/plugins/markdown.lua b/configs/nvim/lua/aleidk/plugins/markdown.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/markdown.lua rename to configs/nvim/lua/aleidk/plugins/markdown.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua b/configs/nvim/lua/aleidk/plugins/mini.lua similarity index 66% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua rename to configs/nvim/lua/aleidk/plugins/mini.lua index 88f6bbe..ca46956 100644 --- a/Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/mini.lua +++ b/configs/nvim/lua/aleidk/plugins/mini.lua @@ -6,33 +6,57 @@ return { }, config = function() require('mini.icons').setup() - require('mini.bracketed').setup() -- [] movement for various stuff + + 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() -- Extend f, F, t, T + require('mini.jump').setup({ + mappings = { + repeat_jump = "" + } + }) -- Extend f, F, t, T + require('mini.jump2d').setup( + { + spotter = require('mini.jump2d').gen_pattern_spotter('[^%s%p]+', 'start'), + view = { + dim = true, + n_steps_ahead = 2 + }, + allowed_lines = { + blank = false, + cursor_at = false + }, + } + ) require('mini.surround').setup() require('mini.operators').setup() - require('mini.pairs').setup() + require('mini.pairs').setup({ + modes = { command = true } + }) + require('mini.splitjoin').setup() require("mini.align").setup({}) - require('mini.animate').setup() - require('mini.notify').setup({ - -- Notifications about LSP progress - lsp_progress = { - -- Whether to enable showing - enable = false, - } - }) + -- require('mini.animate').setup() + require('mini.notify').setup() vim.notify = require('mini.notify').make_notify() - require('mini.starter').setup() - require('mini.statusline').setup({}) + 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({}) - local rhs = 'lua MiniGit.show_at_cursor()' - vim.keymap.set({ 'n', 'x' }, 'gs', rhs, { desc = 'Show at cursor', silent = true }) + vim.keymap.set({ 'n', 'x' }, 'gs', 'lua MiniGit.show_at_cursor()', + { desc = 'Show at cursor', silent = true }) local starter = require('mini.starter') starter.setup({ @@ -40,6 +64,7 @@ return { evaluate_single = true, items = { starter.sections.recent_files(10, true), + starter.sections.sessions(5, true), starter.sections.pick(), starter.sections.builtin_actions(), }, @@ -56,19 +81,6 @@ return { }, }) - require('mini.files').setup({ - mappings = { - go_in = 'L', - go_in_plus = 'l', - }, - windows = { - preview = true, - width_preview = 75, - } - }) - vim.keymap.set('n', 'e', ":lua MiniFiles.open(vim.api.nvim_buf_get_name(0))", - { desc = 'Show at cursor', silent = true }) - require('mini.move').setup({ mappings = { -- Move visual selection in Visual mode @@ -155,12 +167,17 @@ return { { mode = "n", keys = "b", desc = "+Buffers" }, { mode = "n", keys = "bh", postkeys = "b" }, { mode = "n", keys = "bl", postkeys = "b" }, + { mode = "n", keys = "d", desc = "+Debugger" }, + { mode = "n", keys = "dh", postkeys = "d" }, + { mode = "n", keys = "dJ", postkeys = "d" }, + { mode = "n", keys = "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 = "un", desc = "+Noice" }, { mode = "n", keys = "w", desc = "+Workspace" }, { mode = "n", keys = "p", desc = "+Run stuff" }, { mode = "n", keys = "z", desc = "+ZK" }, @@ -197,5 +214,35 @@ return { hex_color = hipatterns.gen_highlighter.hex_color(), }, }) + + require('mini.sessions').setup({ + autowrite = false + }) + vim.keymap.set('n', 'us', function() + local default_name = require('mini.sessions').get_latest() or "Session.vim" + vim.ui.input({ prompt = "Session name: ", default = default_name }, function(input) + if input == nil then + return + end + require('mini.sessions').write(input) + end) + end, + { desc = 'Save session', silent = true }) + vim.keymap.set('n', 'uS', function() require('mini.sessions').read() end, + { desc = 'Load session (latest)', silent = true }) + + vim.api.nvim_create_user_command("SessionSelect", function() + require('mini.sessions').select('read') + end, {}) + + vim.api.nvim_create_user_command("SessionDelete", function() + require('mini.sessions').select('delete') + end, {}) + + + 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/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/smart-splits.lua b/configs/nvim/lua/aleidk/plugins/smart-splits.lua similarity index 92% rename from Configs/nvim/.config/nvim/lua/aleidk/plugins-core/smart-splits.lua rename to configs/nvim/lua/aleidk/plugins/smart-splits.lua index a11d29e..c619888 100644 --- a/Configs/nvim/.config/nvim/lua/aleidk/plugins-core/smart-splits.lua +++ b/configs/nvim/lua/aleidk/plugins/smart-splits.lua @@ -1,6 +1,3 @@ --- Move to windows with Ctrl and hjkl --- Resize to windows with Alt and hjkl --- Tmux aware return { "mrjones2014/smart-splits.nvim", lazy = false, 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_unstable/.config/nvim_unstable/lua/aleidk/plugins/trouble.lua b/configs/nvim/lua/aleidk/plugins/trouble.lua similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/lua/aleidk/plugins/trouble.lua rename to configs/nvim/lua/aleidk/plugins/trouble.lua diff --git a/Configs/nvim_unstable/.config/nvim_unstable/snippets/global.json b/configs/nvim/snippets/global.json similarity index 100% rename from Configs/nvim_unstable/.config/nvim_unstable/snippets/global.json rename to configs/nvim/snippets/global.json diff --git a/Configs/rofi/.config/rofi/config.rasi b/configs/rofi/config.rasi similarity index 100% rename from Configs/rofi/.config/rofi/config.rasi rename to configs/rofi/config.rasi diff --git a/configs/rofi/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/.config/rofi/theme.rasi b/configs/rofi/theme.rasi similarity index 93% rename from Configs/rofi/.config/rofi/theme.rasi rename to configs/rofi/theme.rasi index 4e0263b..e07bb8b 100644 --- a/Configs/rofi/.config/rofi/theme.rasi +++ b/configs/rofi/theme.rasi @@ -81,7 +81,6 @@ listview { border: 0; margin: 10px 0px 0px 20px; columns: 1; - lines: 5; background-color: @bg-col; spacing: 10px; scrollbar: true; @@ -137,15 +136,14 @@ button selected { } message { + border: 0; + margin: 10px 20px 0px 20px; background-color: @surface0; - margin: 2px; - padding: 2px; - border-radius: 5px; + border-radius: @border-rad; } textbox { padding: 6px; - margin: 20px 0px 0px 20px; - text-color: @blue; - background-color: #fff; + text-color: @fg-col; + font: "JetBrainsMono Nerd Font 10"; } diff --git a/Configs/sesh/.config/sesh/sesh.toml b/configs/sesh/sesh.toml similarity index 100% rename from Configs/sesh/.config/sesh/sesh.toml rename to configs/sesh/sesh.toml diff --git a/Configs/starship/.config/starship.toml b/configs/starship/starship.toml similarity index 98% rename from Configs/starship/.config/starship.toml rename to configs/starship/starship.toml index cf03107..4f1fe65 100644 --- a/Configs/starship/.config/starship.toml +++ b/configs/starship/starship.toml @@ -41,6 +41,9 @@ deleted = '[ \($count\)](red) ' [golang] symbol = " " +[aws] +disabled = true + [palettes.catppuccin_macchiato] rosewater = "#f4dbd6" flamingo = "#f0c6c6" diff --git a/Configs/swappy/.config/swappy/config b/configs/swappy/config similarity index 100% rename from Configs/swappy/.config/swappy/config rename to configs/swappy/config diff --git a/configs/swaync/config.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/Configs/tmux/.config/tmux.conf b/configs/tmux/tmux.conf similarity index 100% rename from Configs/tmux/.config/tmux.conf rename to configs/tmux/tmux.conf diff --git a/configs/uwsm/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/configs/vimiv/keys.conf b/configs/vimiv/keys.conf new file mode 100644 index 0000000..e69de29 diff --git a/Configs/vimiv/.config/vimiv/styles/default b/configs/vimiv/styles/default similarity index 100% rename from Configs/vimiv/.config/vimiv/styles/default rename to configs/vimiv/styles/default diff --git a/Configs/vimiv/.config/vimiv/styles/material-darker b/configs/vimiv/styles/material-darker similarity index 100% rename from Configs/vimiv/.config/vimiv/styles/material-darker rename to configs/vimiv/styles/material-darker diff --git a/Configs/vimiv/.config/vimiv/vimiv.conf b/configs/vimiv/vimiv.conf similarity index 100% rename from Configs/vimiv/.config/vimiv/vimiv.conf rename to configs/vimiv/vimiv.conf diff --git a/Configs/waybar/.config/waybar/config.jsonc b/configs/waybar/config.jsonc similarity index 73% rename from Configs/waybar/.config/waybar/config.jsonc rename to configs/waybar/config.jsonc index c2b5320..6c52cb8 100644 --- a/Configs/waybar/.config/waybar/config.jsonc +++ b/configs/waybar/config.jsonc @@ -9,20 +9,35 @@ "margin-left": 10, "margin-right": 10, - "modules-left": ["hyprland/workspaces"], + "modules-left": ["niri/workspaces", "niri/window"], "modules-center": ["clock"], "modules-right": [ "tray", "idle_inhibitor", - "network", + // "network", "bluetooth", "backlight", "wireplumber", "battery", - "custom/power" + "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": { @@ -38,6 +53,16 @@ "sort-by-number": true, "active-only": false }, + + "niri/window": { + "format": "{app_id}: {title}", + "rewrite": { + "(.*): (.*)": "$2", + "brave-browser: (.*) - Brave": "🌎 $1", + "Kitty: (.*)": " $1" + } + }, + "backlight": { "format": "󱩖 {percent}% ", "device": "intel_backlight", @@ -129,5 +154,25 @@ }, "tray": { "show-passive-items": true + }, + "custom/notification": { + "tooltip": false, + "format": "{} {icon}", + "format-icons": { + "notification": "", + "none": "", + "dnd-notification": "", + "dnd-none": "", + "inhibited-notification": "", + "inhibited-none": "", + "dnd-inhibited-notification": "", + "dnd-inhibited-none": "" + }, + "return-type": "json", + "exec-if": "which swaync-client", + "exec": "swaync-client -swb", + "on-click": "swaync-client -t -sw", + "on-click-right": "swaync-client -d -sw", + "escape": true } } diff --git a/Configs/waybar/.config/waybar/style-bkp.css b/configs/waybar/style-bkp.css similarity index 100% rename from Configs/waybar/.config/waybar/style-bkp.css rename to configs/waybar/style-bkp.css diff --git a/Configs/waybar/.config/waybar/style.css b/configs/waybar/style.css similarity index 84% rename from Configs/waybar/.config/waybar/style.css rename to configs/waybar/style.css index 43618ce..edf8db6 100644 --- a/Configs/waybar/.config/waybar/style.css +++ b/configs/waybar/style.css @@ -1,8 +1,9 @@ @import "./themes/catppuccin-macchiato.css"; *{ - font-size: 0.9rem; - font-family: JetBrainsMono Roboto, Helvetica, Arial, sans-serif; + font-size: 13px; + font-family: Open Sans, JetBrainsMono Nerd Font; + font-weight: 500; color: @text; } #waybar { @@ -13,6 +14,12 @@ border-radius:5px; } +#window { + border-radius: 20px; + padding-left: 10px; + padding-right: 10px; +} + #workspaces button{ padding: .25rem .5rem; margin-right: .5rem; @@ -89,7 +96,7 @@ box.modules-right { } #custom-power{ -color:#c47fd5; -margin-right:10px; -padding-right:14px; + color:#c47fd5; + margin-right:10px; + padding-right:14px; } diff --git a/Configs/waybar/.config/waybar/sway-bar.sh b/configs/waybar/sway-bar.sh similarity index 100% rename from Configs/waybar/.config/waybar/sway-bar.sh rename to configs/waybar/sway-bar.sh diff --git a/Configs/waybar/.config/waybar/themes/catppuccin-macchiato.css b/configs/waybar/themes/catppuccin-macchiato.css similarity index 100% rename from Configs/waybar/.config/waybar/themes/catppuccin-macchiato.css rename to configs/waybar/themes/catppuccin-macchiato.css diff --git a/Configs/wezterm/.config/wezterm/wezterm.lua b/configs/wezterm/wezterm.lua similarity index 87% rename from Configs/wezterm/.config/wezterm/wezterm.lua rename to configs/wezterm/wezterm.lua index 1e573da..77322fb 100644 --- a/Configs/wezterm/.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/.config/wlogout/icons/hibernate.svg b/configs/wlogout/icons/hibernate.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/hibernate.svg rename to configs/wlogout/icons/hibernate.svg diff --git a/Configs/wlogout/.config/wlogout/icons/lock.svg b/configs/wlogout/icons/lock.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/lock.svg rename to configs/wlogout/icons/lock.svg diff --git a/Configs/wlogout/.config/wlogout/icons/logout.svg b/configs/wlogout/icons/logout.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/logout.svg rename to configs/wlogout/icons/logout.svg diff --git a/Configs/wlogout/.config/wlogout/icons/reboot.svg b/configs/wlogout/icons/reboot.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/reboot.svg rename to configs/wlogout/icons/reboot.svg diff --git a/Configs/wlogout/.config/wlogout/icons/shutdown.svg b/configs/wlogout/icons/shutdown.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/shutdown.svg rename to configs/wlogout/icons/shutdown.svg diff --git a/Configs/wlogout/.config/wlogout/icons/suspend.svg b/configs/wlogout/icons/suspend.svg similarity index 100% rename from Configs/wlogout/.config/wlogout/icons/suspend.svg rename to configs/wlogout/icons/suspend.svg diff --git a/Configs/wlogout/.config/wlogout/layout b/configs/wlogout/layout similarity index 88% rename from Configs/wlogout/.config/wlogout/layout rename to configs/wlogout/layout index 26b8bf4..3e4d2f4 100644 --- a/Configs/wlogout/.config/wlogout/layout +++ b/configs/wlogout/layout @@ -18,7 +18,7 @@ } { "label" : "shutdown", - "action" : "loginctl poweroff", + "action" : "systemctl -i poweroff", "text" : "Shutdown", "keybind" : "s" } @@ -30,7 +30,7 @@ } { "label" : "reboot", - "action" : "loginctl reboot", + "action" : "systemctl reboot", "text" : "Reboot", "keybind" : "r" } diff --git a/Configs/wlogout/.config/wlogout/style.css b/configs/wlogout/style.css similarity index 100% rename from Configs/wlogout/.config/wlogout/style.css rename to configs/wlogout/style.css diff --git a/configs/wpaperd/config.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/Configs/yazi/.config/yazi/init.lua b/configs/yazi/init.lua similarity index 100% rename from Configs/yazi/.config/yazi/init.lua rename to configs/yazi/init.lua diff --git a/Configs/yazi/.config/yazi/keymap.toml b/configs/yazi/keymap.toml similarity index 83% rename from Configs/yazi/.config/yazi/keymap.toml rename to configs/yazi/keymap.toml index af6a85d..c20f2ca 100644 --- a/Configs/yazi/.config/yazi/keymap.toml +++ b/configs/yazi/keymap.toml @@ -2,7 +2,7 @@ # If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. "$schema" = "https://yazi-rs.github.io/schemas/keymap.json" -[manager] +[mgr] prepend_keymap = [ { on = [""], run = "escape --all", desc = "Exit visual mode, clear selected, or cancel search" }, @@ -39,6 +39,12 @@ prepend_keymap = [ { on = ["g", "t"], run = "cd /tmp", desc = "Go to the temporary directory" }, { on = ["g", "r"], run = "shell 'ya emit cd \"$(git rev-parse --show-toplevel)\"'", desc = "Go to git root" }, { on = ["g", ""], run = "cd --interactive", desc = "Go to a directory interactively" }, + + { on = ["", "j"], run = "shell 'ya pub-to 0 TransferDownload --list \"$@\"'", desc = "Download with transfer.nvim" }, + { on = ["", "k"], run = "shell 'ya pub-to 0 TransferUpload --list \"$@\"'", desc = "Upload with transfer.nvim" }, + { on = ["", "d"], run = ["shell 'ya pub-to 0 DiffRemote --orphan --list \"$@\"'", "quit"], desc = "Diff with transfer.nvim" }, + { on = ["", ""], run = ["shell 'ya pub-to 0 TransferDirDiff --list \"$@\"'"], desc = "Diff directory with transfer.nvim" }, + ] [input] 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/configs/yazi/plugins/.keep b/configs/yazi/plugins/.keep new file mode 100644 index 0000000..e69de29 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/.config/yazi/yazi.toml b/configs/yazi/yazi.toml similarity index 94% rename from Configs/yazi/.config/yazi/yazi.toml rename to configs/yazi/yazi.toml index c5152a1..96b9bac 100644 --- a/Configs/yazi/.config/yazi/yazi.toml +++ b/configs/yazi/yazi.toml @@ -2,9 +2,9 @@ # If you encounter any issues, please make an issue at https://github.com/yazi-rs/schemas. "$schema" = "https://yazi-rs.github.io/schemas/yazi.json" -[manager] +[mgr] ratio = [1, 3, 4] -sort_by = "alphabetical" +sort_by = "natural" sort_sensitive = false sort_reverse = false sort_dir_first = true @@ -32,6 +32,7 @@ open = [{ run = 'xdg-open "$@"', desc = "Open", for = "linux" }, { run = 'open " reveal = [{ run = 'open -R "$1"', desc = "Reveal", for = "macos" }, { run = 'explorer /select, "%1"', orphan = true, desc = "Reveal", for = "windows" }, { run = '''exiftool "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show EXIF", for = "unix" }] extract = [{ run = 'ya pub extract --list "$@"', desc = "Extract here", for = "unix" }, { run = 'ya pub extract --list %*', desc = "Extract here", for = "windows" }] play = [{ run = 'mpv "$@"', orphan = true, for = "unix" }, { run = 'mpv "%1"', orphan = true, for = "windows" }, { run = '''mediainfo "$1"; echo "Press enter to exit"; read''', block = true, desc = "Show media info", for = "unix" }] +upload_img = [{ run = 'immich upload --recursive "$@" || read -n 1 -p "press anything to exit"', desc = "Upload image to Immich server", for = "linux", block = true }] [open] rules = [ @@ -46,10 +47,10 @@ rules = [ { mime = "application/x-{tar,bzip*,7z-compressed,xz,rar}", use = ["extract", "reveal"] }, # Image - { mime = "image/*", use = ["open", "reveal"] }, + { mime = "image/*", use = ["open", "upload_img"] }, # Media - { mime = "{audio,video}/*", use = ["play", "reveal"] }, + { mime = "{audio,video}/*", use = ["play", "open", "reveal"] }, { mime = "inode/x-empty", use = ["edit", "reveal"] }, # JSON 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/zellij/config.kdl b/configs/zellij/config.kdl similarity index 100% rename from Configs/zellij/.config/zellij/config.kdl rename to configs/zellij/config.kdl diff --git a/Configs/zellij/.config/zellij/layouts/code.kdl b/configs/zellij/layouts/code.kdl similarity index 100% rename from Configs/zellij/.config/zellij/layouts/code.kdl rename to configs/zellij/layouts/code.kdl diff --git a/Configs/zsh/.config/zsh/aliases/aliases.zsh b/configs/zsh/.config/zsh/aliases/aliases.zsh similarity index 89% rename from Configs/zsh/.config/zsh/aliases/aliases.zsh rename to configs/zsh/.config/zsh/aliases/aliases.zsh index 3076dc6..b3fa6e1 100644 --- a/Configs/zsh/.config/zsh/aliases/aliases.zsh +++ b/configs/zsh/.config/zsh/aliases/aliases.zsh @@ -42,7 +42,12 @@ alias \ alias \ pco='podman compose' \ - pps="podman ps --format 'table {{.ID}}\t{{.Names}}\t{{.State}}\t{{.Status}}\t{{.RunningFor}}'" + pps="podman ps --format 'table {{.ID}}\t{{.Names}}\t{{.State}}\t{{.Status}}\t{{.RunningFor}}'" \ + psd="/usr/lib/systemd/system-generators/podman-system-generator --user --dryrun | bat -l ini" + +alias \ + sysctl='sudo systemctl' \ + sysctl-user='systemctl --user' # Misc alias \ diff --git a/Configs/zsh/.config/zsh/aliases/configs.zsh b/configs/zsh/.config/zsh/aliases/configs.zsh similarity index 100% rename from Configs/zsh/.config/zsh/aliases/configs.zsh rename to configs/zsh/.config/zsh/aliases/configs.zsh diff --git a/Configs/zsh/.config/zsh/aliases/fzf.zsh b/configs/zsh/.config/zsh/aliases/fzf.zsh similarity index 100% rename from Configs/zsh/.config/zsh/aliases/fzf.zsh rename to configs/zsh/.config/zsh/aliases/fzf.zsh diff --git a/Configs/zsh/.config/zsh/aliases/nvim.zsh b/configs/zsh/.config/zsh/aliases/nvim.zsh similarity index 72% rename from Configs/zsh/.config/zsh/aliases/nvim.zsh rename to configs/zsh/.config/zsh/aliases/nvim.zsh index 4dc86ec..9cdb4b1 100644 --- a/Configs/zsh/.config/zsh/aliases/nvim.zsh +++ b/configs/zsh/.config/zsh/aliases/nvim.zsh @@ -1,8 +1,6 @@ alias \ vi='nvim' \ - vi-unstable='NVIM_APPNAME=nvim-unstable nvim' \ - vi-astro='NVIM_APPNAME=Distro-AstroNvim nvim' \ - vi-lazy='NVIM_APPNAME=LazyVim nvim' + vi-unstable='NVIM_APPNAME=nvim_unstable nvim' vis() { items=( diff --git a/Configs/zsh/.config/zsh/aliases/pnpm.zsh b/configs/zsh/.config/zsh/aliases/pnpm.zsh similarity index 100% rename from Configs/zsh/.config/zsh/aliases/pnpm.zsh rename to configs/zsh/.config/zsh/aliases/pnpm.zsh diff --git a/configs/zsh/.config/zsh/completion.zsh b/configs/zsh/.config/zsh/completion.zsh new file mode 100644 index 0000000..11e222f --- /dev/null +++ b/configs/zsh/.config/zsh/completion.zsh @@ -0,0 +1,101 @@ +# ╭──────────────────────────────────────────────────────────╮ +# │ Completion styling │ +# ╰──────────────────────────────────────────────────────────╯ + +[[ -d ${XDG_CACHE_HOME:-$HOME/.cache}/zsh ]] || mkdir -p ${XDG_CACHE_HOME:-$HOME/.cache}/zsh + +LS_COLORS='*~=0;38;2;91;96;120:bd=0;38;2;125;196;228;48;2;54;58;79:ca=0:cd=0;38;2;245;189;230;48;2;54;58;79:di=0;38;2;138;173;244:do=0;38;2;24;25;38;48;2;245;189;230:ex=1;38;2;237;135;150:fi=0:ln=0;38;2;245;189;230:mh=0:mi=0;38;2;24;25;38;48;2;237;135;150:no=0:or=0;38;2;24;25;38;48;2;237;135;150:ow=0:pi=0;38;2;24;25;38;48;2;138;173;244:rs=0:sg=0:so=0;38;2;24;25;38;48;2;245;189;230:st=0:su=0:tw=0:*.1=0;38;2;238;212;159:*.a=1;38;2;237;135;150:*.c=0;38;2;166;218;149:*.d=0;38;2;166;218;149:*.h=0;38;2;166;218;149:*.m=0;38;2;166;218;149:*.o=0;38;2;91;96;120:*.p=0;38;2;166;218;149:*.r=0;38;2;166;218;149:*.t=0;38;2;166;218;149:*.v=0;38;2;166;218;149:*.z=4;38;2;125;196;228:*.7z=4;38;2;125;196;228:*.ai=0;38;2;240;198;198:*.as=0;38;2;166;218;149:*.bc=0;38;2;91;96;120:*.bz=4;38;2;125;196;228:*.cc=0;38;2;166;218;149:*.cp=0;38;2;166;218;149:*.cr=0;38;2;166;218;149:*.cs=0;38;2;166;218;149:*.db=4;38;2;125;196;228:*.di=0;38;2;166;218;149:*.el=0;38;2;166;218;149:*.ex=0;38;2;166;218;149:*.fs=0;38;2;166;218;149:*.go=0;38;2;166;218;149:*.gv=0;38;2;166;218;149:*.gz=4;38;2;125;196;228:*.ha=0;38;2;166;218;149:*.hh=0;38;2;166;218;149:*.hi=0;38;2;91;96;120:*.hs=0;38;2;166;218;149:*.jl=0;38;2;166;218;149:*.js=0;38;2;166;218;149:*.ko=1;38;2;237;135;150:*.kt=0;38;2;166;218;149:*.la=0;38;2;91;96;120:*.ll=0;38;2;166;218;149:*.lo=0;38;2;91;96;120:*.ma=0;38;2;240;198;198:*.mb=0;38;2;240;198;198:*.md=0;38;2;238;212;159:*.mk=0;38;2;139;213;202:*.ml=0;38;2;166;218;149:*.mn=0;38;2;166;218;149:*.nb=0;38;2;166;218;149:*.nu=0;38;2;166;218;149:*.pl=0;38;2;166;218;149:*.pm=0;38;2;166;218;149:*.pp=0;38;2;166;218;149:*.ps=0;38;2;237;135;150:*.py=0;38;2;166;218;149:*.rb=0;38;2;166;218;149:*.rm=0;38;2;240;198;198:*.rs=0;38;2;166;218;149:*.sh=0;38;2;166;218;149:*.so=1;38;2;237;135;150:*.td=0;38;2;166;218;149:*.ts=0;38;2;166;218;149:*.ui=0;38;2;238;212;159:*.vb=0;38;2;166;218;149:*.wv=0;38;2;240;198;198:*.xz=4;38;2;125;196;228:*FAQ=0;38;2;36;39;58;48;2;238;212;159:*.3ds=0;38;2;240;198;198:*.3fr=0;38;2;240;198;198:*.3mf=0;38;2;240;198;198:*.adb=0;38;2;166;218;149:*.ads=0;38;2;166;218;149:*.aif=0;38;2;240;198;198:*.amf=0;38;2;240;198;198:*.ape=0;38;2;240;198;198:*.apk=4;38;2;125;196;228:*.ari=0;38;2;240;198;198:*.arj=4;38;2;125;196;228:*.arw=0;38;2;240;198;198:*.asa=0;38;2;166;218;149:*.asm=0;38;2;166;218;149:*.aux=0;38;2;91;96;120:*.avi=0;38;2;240;198;198:*.awk=0;38;2;166;218;149:*.bag=4;38;2;125;196;228:*.bak=0;38;2;91;96;120:*.bat=1;38;2;237;135;150:*.bay=0;38;2;240;198;198:*.bbl=0;38;2;91;96;120:*.bcf=0;38;2;91;96;120:*.bib=0;38;2;238;212;159:*.bin=4;38;2;125;196;228:*.blg=0;38;2;91;96;120:*.bmp=0;38;2;240;198;198:*.bsh=0;38;2;166;218;149:*.bst=0;38;2;238;212;159:*.bz2=4;38;2;125;196;228:*.c++=0;38;2;166;218;149:*.cap=0;38;2;240;198;198:*.cfg=0;38;2;238;212;159:*.cgi=0;38;2;166;218;149:*.clj=0;38;2;166;218;149:*.com=1;38;2;237;135;150:*.cpp=0;38;2;166;218;149:*.cr2=0;38;2;240;198;198:*.cr3=0;38;2;240;198;198:*.crw=0;38;2;240;198;198:*.css=0;38;2;166;218;149:*.csv=0;38;2;238;212;159:*.csx=0;38;2;166;218;149:*.cxx=0;38;2;166;218;149:*.dae=0;38;2;240;198;198:*.dcr=0;38;2;240;198;198:*.dcs=0;38;2;240;198;198:*.deb=4;38;2;125;196;228:*.def=0;38;2;166;218;149:*.dll=1;38;2;237;135;150:*.dmg=4;38;2;125;196;228:*.dng=0;38;2;240;198;198:*.doc=0;38;2;237;135;150:*.dot=0;38;2;166;218;149:*.dox=0;38;2;139;213;202:*.dpr=0;38;2;166;218;149:*.drf=0;38;2;240;198;198:*.dxf=0;38;2;240;198;198:*.eip=0;38;2;240;198;198:*.elc=0;38;2;166;218;149:*.elm=0;38;2;166;218;149:*.epp=0;38;2;166;218;149:*.eps=0;38;2;240;198;198:*.erf=0;38;2;240;198;198:*.erl=0;38;2;166;218;149:*.exe=1;38;2;237;135;150:*.exr=0;38;2;240;198;198:*.exs=0;38;2;166;218;149:*.fbx=0;38;2;240;198;198:*.fff=0;38;2;240;198;198:*.fls=0;38;2;91;96;120:*.flv=0;38;2;240;198;198:*.fnt=0;38;2;240;198;198:*.fon=0;38;2;240;198;198:*.fsi=0;38;2;166;218;149:*.fsx=0;38;2;166;218;149:*.gif=0;38;2;240;198;198:*.git=0;38;2;91;96;120:*.gpr=0;38;2;240;198;198:*.gvy=0;38;2;166;218;149:*.h++=0;38;2;166;218;149:*.hda=0;38;2;240;198;198:*.hip=0;38;2;240;198;198:*.hpp=0;38;2;166;218;149:*.htc=0;38;2;166;218;149:*.htm=0;38;2;238;212;159:*.hxx=0;38;2;166;218;149:*.ico=0;38;2;240;198;198:*.ics=0;38;2;237;135;150:*.idx=0;38;2;91;96;120:*.igs=0;38;2;240;198;198:*.iiq=0;38;2;240;198;198:*.ilg=0;38;2;91;96;120:*.img=4;38;2;125;196;228:*.inc=0;38;2;166;218;149:*.ind=0;38;2;91;96;120:*.ini=0;38;2;238;212;159:*.inl=0;38;2;166;218;149:*.ino=0;38;2;166;218;149:*.ipp=0;38;2;166;218;149:*.iso=4;38;2;125;196;228:*.jar=4;38;2;125;196;228:*.jpg=0;38;2;240;198;198:*.jsx=0;38;2;166;218;149:*.jxl=0;38;2;240;198;198:*.k25=0;38;2;240;198;198:*.kdc=0;38;2;240;198;198:*.kex=0;38;2;237;135;150:*.kra=0;38;2;240;198;198:*.kts=0;38;2;166;218;149:*.log=0;38;2;91;96;120:*.ltx=0;38;2;166;218;149:*.lua=0;38;2;166;218;149:*.m3u=0;38;2;240;198;198:*.m4a=0;38;2;240;198;198:*.m4v=0;38;2;240;198;198:*.mdc=0;38;2;240;198;198:*.mef=0;38;2;240;198;198:*.mid=0;38;2;240;198;198:*.mir=0;38;2;166;218;149:*.mkv=0;38;2;240;198;198:*.mli=0;38;2;166;218;149:*.mos=0;38;2;240;198;198:*.mov=0;38;2;240;198;198:*.mp3=0;38;2;240;198;198:*.mp4=0;38;2;240;198;198:*.mpg=0;38;2;240;198;198:*.mrw=0;38;2;240;198;198:*.msi=4;38;2;125;196;228:*.mtl=0;38;2;240;198;198:*.nef=0;38;2;240;198;198:*.nim=0;38;2;166;218;149:*.nix=0;38;2;238;212;159:*.nrw=0;38;2;240;198;198:*.obj=0;38;2;240;198;198:*.obm=0;38;2;240;198;198:*.odp=0;38;2;237;135;150:*.ods=0;38;2;237;135;150:*.odt=0;38;2;237;135;150:*.ogg=0;38;2;240;198;198:*.ogv=0;38;2;240;198;198:*.orf=0;38;2;240;198;198:*.org=0;38;2;238;212;159:*.otf=0;38;2;240;198;198:*.otl=0;38;2;240;198;198:*.out=0;38;2;91;96;120:*.pas=0;38;2;166;218;149:*.pbm=0;38;2;240;198;198:*.pcx=0;38;2;240;198;198:*.pdf=0;38;2;237;135;150:*.pef=0;38;2;240;198;198:*.pgm=0;38;2;240;198;198:*.php=0;38;2;166;218;149:*.pid=0;38;2;91;96;120:*.pkg=4;38;2;125;196;228:*.png=0;38;2;240;198;198:*.pod=0;38;2;166;218;149:*.ppm=0;38;2;240;198;198:*.pps=0;38;2;237;135;150:*.ppt=0;38;2;237;135;150:*.pro=0;38;2;139;213;202:*.ps1=0;38;2;166;218;149:*.psd=0;38;2;240;198;198:*.ptx=0;38;2;240;198;198:*.pxn=0;38;2;240;198;198:*.pyc=0;38;2;91;96;120:*.pyd=0;38;2;91;96;120:*.pyo=0;38;2;91;96;120:*.qoi=0;38;2;240;198;198:*.r3d=0;38;2;240;198;198:*.raf=0;38;2;240;198;198:*.rar=4;38;2;125;196;228:*.raw=0;38;2;240;198;198:*.rpm=4;38;2;125;196;228:*.rst=0;38;2;238;212;159:*.rtf=0;38;2;237;135;150:*.rw2=0;38;2;240;198;198:*.rwl=0;38;2;240;198;198:*.rwz=0;38;2;240;198;198:*.sbt=0;38;2;166;218;149:*.sql=0;38;2;166;218;149:*.sr2=0;38;2;240;198;198:*.srf=0;38;2;240;198;198:*.srw=0;38;2;240;198;198:*.stl=0;38;2;240;198;198:*.stp=0;38;2;240;198;198:*.sty=0;38;2;91;96;120:*.svg=0;38;2;240;198;198:*.swf=0;38;2;240;198;198:*.swp=0;38;2;91;96;120:*.sxi=0;38;2;237;135;150:*.sxw=0;38;2;237;135;150:*.tar=4;38;2;125;196;228:*.tbz=4;38;2;125;196;228:*.tcl=0;38;2;166;218;149:*.tex=0;38;2;166;218;149:*.tga=0;38;2;240;198;198:*.tgz=4;38;2;125;196;228:*.tif=0;38;2;240;198;198:*.tml=0;38;2;238;212;159:*.tmp=0;38;2;91;96;120:*.toc=0;38;2;91;96;120:*.tsx=0;38;2;166;218;149:*.ttf=0;38;2;240;198;198:*.txt=0;38;2;238;212;159:*.typ=0;38;2;238;212;159:*.usd=0;38;2;240;198;198:*.vcd=4;38;2;125;196;228:*.vim=0;38;2;166;218;149:*.vob=0;38;2;240;198;198:*.vsh=0;38;2;166;218;149:*.wav=0;38;2;240;198;198:*.wma=0;38;2;240;198;198:*.wmv=0;38;2;240;198;198:*.wrl=0;38;2;240;198;198:*.x3d=0;38;2;240;198;198:*.x3f=0;38;2;240;198;198:*.xlr=0;38;2;237;135;150:*.xls=0;38;2;237;135;150:*.xml=0;38;2;238;212;159:*.xmp=0;38;2;238;212;159:*.xpm=0;38;2;240;198;198:*.xvf=0;38;2;240;198;198:*.yml=0;38;2;238;212;159:*.zig=0;38;2;166;218;149:*.zip=4;38;2;125;196;228:*.zsh=0;38;2;166;218;149:*.zst=4;38;2;125;196;228:*TODO=1:*hgrc=0;38;2;139;213;202:*.avif=0;38;2;240;198;198:*.bash=0;38;2;166;218;149:*.braw=0;38;2;240;198;198:*.conf=0;38;2;238;212;159:*.dart=0;38;2;166;218;149:*.data=0;38;2;240;198;198:*.diff=0;38;2;166;218;149:*.docx=0;38;2;237;135;150:*.epub=0;38;2;237;135;150:*.fish=0;38;2;166;218;149:*.flac=0;38;2;240;198;198:*.h264=0;38;2;240;198;198:*.hack=0;38;2;166;218;149:*.heif=0;38;2;240;198;198:*.hgrc=0;38;2;139;213;202:*.html=0;38;2;238;212;159:*.iges=0;38;2;240;198;198:*.info=0;38;2;238;212;159:*.java=0;38;2;166;218;149:*.jpeg=0;38;2;240;198;198:*.json=0;38;2;238;212;159:*.less=0;38;2;166;218;149:*.lisp=0;38;2;166;218;149:*.lock=0;38;2;91;96;120:*.make=0;38;2;139;213;202:*.mojo=0;38;2;166;218;149:*.mpeg=0;38;2;240;198;198:*.nims=0;38;2;166;218;149:*.opus=0;38;2;240;198;198:*.orig=0;38;2;91;96;120:*.pptx=0;38;2;237;135;150:*.prql=0;38;2;166;218;149:*.psd1=0;38;2;166;218;149:*.psm1=0;38;2;166;218;149:*.purs=0;38;2;166;218;149:*.raku=0;38;2;166;218;149:*.rlib=0;38;2;91;96;120:*.sass=0;38;2;166;218;149:*.scad=0;38;2;166;218;149:*.scss=0;38;2;166;218;149:*.step=0;38;2;240;198;198:*.tbz2=4;38;2;125;196;228:*.tiff=0;38;2;240;198;198:*.toml=0;38;2;238;212;159:*.usda=0;38;2;240;198;198:*.usdc=0;38;2;240;198;198:*.usdz=0;38;2;240;198;198:*.webm=0;38;2;240;198;198:*.webp=0;38;2;240;198;198:*.woff=0;38;2;240;198;198:*.xbps=4;38;2;125;196;228:*.xlsx=0;38;2;237;135;150:*.yaml=0;38;2;238;212;159:*stdin=0;38;2;91;96;120:*v.mod=0;38;2;139;213;202:*.blend=0;38;2;240;198;198:*.cabal=0;38;2;166;218;149:*.cache=0;38;2;91;96;120:*.class=0;38;2;91;96;120:*.cmake=0;38;2;139;213;202:*.ctags=0;38;2;91;96;120:*.dylib=1;38;2;237;135;150:*.dyn_o=0;38;2;91;96;120:*.gcode=0;38;2;166;218;149:*.ipynb=0;38;2;166;218;149:*.mdown=0;38;2;238;212;159:*.patch=0;38;2;166;218;149:*.rmeta=0;38;2;91;96;120:*.scala=0;38;2;166;218;149:*.shtml=0;38;2;238;212;159:*.swift=0;38;2;166;218;149:*.toast=4;38;2;125;196;228:*.woff2=0;38;2;240;198;198:*.xhtml=0;38;2;238;212;159:*Icon\r=0;38;2;91;96;120:*LEGACY=0;38;2;36;39;58;48;2;238;212;159:*NOTICE=0;38;2;36;39;58;48;2;238;212;159:*README=0;38;2;36;39;58;48;2;238;212;159:*go.mod=0;38;2;139;213;202:*go.sum=0;38;2;91;96;120:*passwd=0;38;2;238;212;159:*shadow=0;38;2;238;212;159:*stderr=0;38;2;91;96;120:*stdout=0;38;2;91;96;120:*.bashrc=0;38;2;166;218;149:*.config=0;38;2;238;212;159:*.dyn_hi=0;38;2;91;96;120:*.flake8=0;38;2;139;213;202:*.gradle=0;38;2;166;218;149:*.groovy=0;38;2;166;218;149:*.ignore=0;38;2;139;213;202:*.matlab=0;38;2;166;218;149:*.nimble=0;38;2;166;218;149:*COPYING=0;38;2;147;154;183:*INSTALL=0;38;2;36;39;58;48;2;238;212;159:*LICENCE=0;38;2;147;154;183:*LICENSE=0;38;2;147;154;183:*TODO.md=1:*VERSION=0;38;2;36;39;58;48;2;238;212;159:*.alembic=0;38;2;240;198;198:*.desktop=0;38;2;238;212;159:*.gemspec=0;38;2;139;213;202:*.mailmap=0;38;2;139;213;202:*Doxyfile=0;38;2;139;213;202:*Makefile=0;38;2;139;213;202:*TODO.txt=1:*setup.py=0;38;2;139;213;202:*.DS_Store=0;38;2;91;96;120:*.cmake.in=0;38;2;139;213;202:*.fdignore=0;38;2;139;213;202:*.kdevelop=0;38;2;139;213;202:*.markdown=0;38;2;238;212;159:*.rgignore=0;38;2;139;213;202:*.tfignore=0;38;2;139;213;202:*CHANGELOG=0;38;2;36;39;58;48;2;238;212;159:*COPYRIGHT=0;38;2;147;154;183:*README.md=0;38;2;36;39;58;48;2;238;212;159:*bun.lockb=0;38;2;91;96;120:*configure=0;38;2;139;213;202:*.gitconfig=0;38;2;139;213;202:*.gitignore=0;38;2;139;213;202:*.localized=0;38;2;91;96;120:*.scons_opt=0;38;2;91;96;120:*.timestamp=0;38;2;91;96;120:*CODEOWNERS=0;38;2;139;213;202:*Dockerfile=0;38;2;238;212;159:*INSTALL.md=0;38;2;36;39;58;48;2;238;212;159:*README.txt=0;38;2;36;39;58;48;2;238;212;159:*SConscript=0;38;2;139;213;202:*SConstruct=0;38;2;139;213;202:*.cirrus.yml=0;38;2;166;218;149:*.gitmodules=0;38;2;139;213;202:*.synctex.gz=0;38;2;91;96;120:*.travis.yml=0;38;2;166;218;149:*INSTALL.txt=0;38;2;36;39;58;48;2;238;212;159:*LICENSE-MIT=0;38;2;147;154;183:*MANIFEST.in=0;38;2;139;213;202:*Makefile.am=0;38;2;139;213;202:*Makefile.in=0;38;2;91;96;120:*.applescript=0;38;2;166;218;149:*.fdb_latexmk=0;38;2;91;96;120:*.webmanifest=0;38;2;238;212;159:*CHANGELOG.md=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTING=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTORS=0;38;2;36;39;58;48;2;238;212;159:*appveyor.yml=0;38;2;166;218;149:*configure.ac=0;38;2;139;213;202:*.bash_profile=0;38;2;166;218;149:*.clang-format=0;38;2;139;213;202:*.editorconfig=0;38;2;139;213;202:*CHANGELOG.txt=0;38;2;36;39;58;48;2;238;212;159:*.gitattributes=0;38;2;139;213;202:*.gitlab-ci.yml=0;38;2;166;218;149:*CMakeCache.txt=0;38;2;91;96;120:*CMakeLists.txt=0;38;2;139;213;202:*LICENSE-APACHE=0;38;2;147;154;183:*pyproject.toml=0;38;2;139;213;202:*CODE_OF_CONDUCT=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTING.md=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTORS.md=0;38;2;36;39;58;48;2;238;212;159:*.sconsign.dblite=0;38;2;91;96;120:*CONTRIBUTING.txt=0;38;2;36;39;58;48;2;238;212;159:*CONTRIBUTORS.txt=0;38;2;36;39;58;48;2;238;212;159:*requirements.txt=0;38;2;139;213;202:*package-lock.json=0;38;2;91;96;120:*CODE_OF_CONDUCT.md=0;38;2;36;39;58;48;2;238;212;159:*.CFUserTextEncoding=0;38;2;91;96;120:*CODE_OF_CONDUCT.txt=0;38;2;36;39;58;48;2;238;212;159:*azure-pipelines.yml=0;38;2;166;218;149' + +export LS_COLORS + +setopt ALWAYS_TO_END # Move cursor to the end of a completed word. +setopt AUTO_LIST # Automatically list choices on ambiguous completion. +# setopt AUTO_MENU # Show completion menu on a successive tab press. +setopt AUTO_PARAM_SLASH # If completed parameter is a directory, add a trailing slash. +setopt COMPLETE_IN_WORD # Complete from both ends of a word. +setopt EXTENDED_GLOB # Needed for file modification glob modifiers with compinit. +setopt GLOB_COMPLETE # Triggers completion after glob instead of expanding it. +setopt LIST_PACKED # Smaller list +setopt PATH_DIRS # Perform path search even on command names with slashes. +unsetopt MENU_COMPLETE # Do not autoselect the first completion entry. +unsetopt FLOW_CONTROL # Disable start/stop characters in shell editor. + +zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} +zstyle ':completion:*' list-prompt '%S%M matches%s' + +# Use caching to make completion for commands such as dpkg and apt usable. +zstyle ':completion::complete:*' use-cache on +zstyle ':completion::complete:*' cache-path "${XDG_CACHE_HOME:-$HOME/.cache}/zsh/zcompcache" + +# # Case-insensitive (all), partial-word, and then substring completion. +# if zstyle -t ':zsh-utils:plugin:completion:*' case-sensitive; then +# zstyle ':completion:*' matcher-list 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' +# setopt CASE_GLOB +# else +# zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' +# unsetopt CASE_GLOB +# fi + +# Group matches and describe. +zstyle ':completion:*:*:*:*:*' menu yes select interactive search +zstyle ':completion:*:matches' group 'yes' +zstyle ':completion:*:options' description 'yes' +zstyle ':completion:*:options' auto-description '%d' +zstyle ':completion:*:corrections' format ' %F{red}-- %d (errors: %e) --%f' +zstyle ':completion:*:descriptions' format ' %F{purple}-- %d --%f' +zstyle ':completion:*:messages' format ' %F{green} -- %d --%f' +zstyle ':completion:*:warnings' format ' %F{yellow}-- no matches found --%f' +zstyle ':completion:*' complete-options true +zstyle ':completion:*' format ' %F{blue}-- %d --%f' +zstyle ':completion:*' group-name '' +zstyle ':completion:*' verbose yes +zstyle ':completion:*' keep-prefix true + +# Fuzzy match mistyped completions. +zstyle ':completion:*' completer _complete _match _approximate +zstyle ':completion:*:match:*' original only +zstyle ':completion:*:approximate:*' max-errors 1 numeric + +# Increase the number of errors based on the length of the typed word. But make +# sure to cap (at 7) the max-errors to avoid hanging. +zstyle -e ':completion:*:approximate:*' max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3>7?7:($#PREFIX+$#SUFFIX)/3))numeric)' + +# Don't complete unavailable commands. +zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))' + +# Array completion element sorting. +# zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters + +# Directories +# zstyle ':completion:*:*:cd:*' tag-order local-directories directory-stack path-directories +zstyle ':completion:*:*:cd:*:directory-stack' menu yes select +# zstyle ':completion:*:-tilde-:*' group-order 'named-directories' 'path-directories' 'users' 'expand' +zstyle ':completion:*' squeeze-slashes true +zstyle ':completion:*' special-dirs .. +zstyle ':completion:*' file-list all +zstyle ':completion:*' list-dirs-first true + +# History +zstyle ':completion:*:history-words' stop yes +zstyle ':completion:*:history-words' remove-all-dups yes +zstyle ':completion:*:history-words' list false +zstyle ':completion:*:history-words' menu yes + +# Environment Variables +zstyle ':completion::*:(-command-|export):*' fake-parameters ${${${_comps[(I)-value-*]#*,}%%,*}:#-*-} + +# Ignore multiple entries. +zstyle ':completion:*:(rm|kill|diff):*' ignore-line other +zstyle ':completion:*:rm:*' file-patterns '*:all-files' + +# Kill +zstyle ':completion:*:*:*:*:processes' command 'ps -u $LOGNAME -o pid,user,command -w' +zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;36=0=01' +zstyle ':completion:*:*:kill:*' menu yes select +zstyle ':completion:*:*:kill:*' force-list always +zstyle ':completion:*:*:kill:*' insert-ids single + +# complete manual by their section +zstyle ':completion:*:manuals' separate-sections true +zstyle ':completion:*:manuals.*' insert-sections true +zstyle ':completion:*:man:*' menu yes select diff --git a/Configs/zsh/.config/zsh/completions/_alacritty b/configs/zsh/.config/zsh/completions/_alacritty similarity index 100% rename from Configs/zsh/.config/zsh/completions/_alacritty rename to configs/zsh/.config/zsh/completions/_alacritty diff --git a/Configs/zsh/.config/zsh/completions/_cargo b/configs/zsh/.config/zsh/completions/_cargo similarity index 100% rename from Configs/zsh/.config/zsh/completions/_cargo rename to configs/zsh/.config/zsh/completions/_cargo diff --git a/Configs/zsh/.config/zsh/completions/_chezmoi b/configs/zsh/.config/zsh/completions/_chezmoi similarity index 100% rename from Configs/zsh/.config/zsh/completions/_chezmoi rename to configs/zsh/.config/zsh/completions/_chezmoi diff --git a/Configs/zsh/.config/zsh/completions/_cht b/configs/zsh/.config/zsh/completions/_cht similarity index 100% rename from Configs/zsh/.config/zsh/completions/_cht rename to configs/zsh/.config/zsh/completions/_cht diff --git a/Configs/zsh/.config/zsh/completions/_globdots b/configs/zsh/.config/zsh/completions/_globdots similarity index 100% rename from Configs/zsh/.config/zsh/completions/_globdots rename to configs/zsh/.config/zsh/completions/_globdots diff --git a/Configs/zsh/.config/zsh/completions/_just b/configs/zsh/.config/zsh/completions/_just similarity index 100% rename from Configs/zsh/.config/zsh/completions/_just rename to configs/zsh/.config/zsh/completions/_just diff --git a/Configs/zsh/.config/zsh/completions/_lsd b/configs/zsh/.config/zsh/completions/_lsd similarity index 100% rename from Configs/zsh/.config/zsh/completions/_lsd rename to configs/zsh/.config/zsh/completions/_lsd diff --git a/Configs/zsh/.config/zsh/completions/_rg b/configs/zsh/.config/zsh/completions/_rg similarity index 100% rename from Configs/zsh/.config/zsh/completions/_rg rename to configs/zsh/.config/zsh/completions/_rg diff --git a/Configs/zsh/.config/zsh/completions/_rtx b/configs/zsh/.config/zsh/completions/_rtx similarity index 100% rename from Configs/zsh/.config/zsh/completions/_rtx rename to configs/zsh/.config/zsh/completions/_rtx diff --git a/Configs/zsh/.config/zsh/completions/_rye b/configs/zsh/.config/zsh/completions/_rye similarity index 100% rename from Configs/zsh/.config/zsh/completions/_rye rename to configs/zsh/.config/zsh/completions/_rye diff --git a/Configs/zsh/.config/zsh/completions/_starship b/configs/zsh/.config/zsh/completions/_starship similarity index 100% rename from Configs/zsh/.config/zsh/completions/_starship rename to configs/zsh/.config/zsh/completions/_starship diff --git a/Configs/zsh/.config/zsh/completions/_tea b/configs/zsh/.config/zsh/completions/_tea similarity index 100% rename from Configs/zsh/.config/zsh/completions/_tea rename to configs/zsh/.config/zsh/completions/_tea diff --git a/Configs/zsh/.config/zsh/completions/_tldr b/configs/zsh/.config/zsh/completions/_tldr similarity index 100% rename from Configs/zsh/.config/zsh/completions/_tldr rename to configs/zsh/.config/zsh/completions/_tldr diff --git a/Configs/zsh/.config/zsh/completions/_zellij b/configs/zsh/.config/zsh/completions/_zellij similarity index 100% rename from Configs/zsh/.config/zsh/completions/_zellij rename to configs/zsh/.config/zsh/completions/_zellij diff --git a/Configs/zsh/.config/zsh/functions/fedora.zsh b/configs/zsh/.config/zsh/functions/fedora.zsh similarity index 100% rename from Configs/zsh/.config/zsh/functions/fedora.zsh rename to configs/zsh/.config/zsh/functions/fedora.zsh diff --git a/Configs/zsh/.config/zsh/functions/flatpak.zsh b/configs/zsh/.config/zsh/functions/flatpak.zsh similarity index 100% rename from Configs/zsh/.config/zsh/functions/flatpak.zsh rename to configs/zsh/.config/zsh/functions/flatpak.zsh diff --git a/Configs/zsh/.config/zsh/functions/functions.zsh b/configs/zsh/.config/zsh/functions/functions.zsh similarity index 100% rename from Configs/zsh/.config/zsh/functions/functions.zsh rename to configs/zsh/.config/zsh/functions/functions.zsh diff --git a/Configs/zsh/zprofile b/configs/zsh/.zprofile similarity index 52% rename from Configs/zsh/zprofile rename to configs/zsh/.zprofile index 7704fba..d187318 100644 --- a/Configs/zsh/zprofile +++ b/configs/zsh/.zprofile @@ -12,52 +12,30 @@ 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 -{{ #if (is_executable "npm") }} export NPM_PACKAGES="$HOME/.npm-packages" export NODE_PATH="$NPM_PACKAGES/lib/node_modules${NODE_PATH:+:$NODE_PATH}" - -# Unset manpath so we can inherit from /etc/manpath via the `manpath` -# command -unset MANPATH # delete if you already modified MANPATH elsewhere in your config -export MANPATH="$NPM_PACKAGES/share/man:$(manpath)" - update_path "$NPM_PACKAGES/bin" -{{ /if }} -{{ #if (is_executable "pnpm") }} export PNPM_HOME="$HOME/.local/share/pnpm" -export ESLINT_USE_FLAT_CONFIG=true update_path "$PNPM_HOME" -{{ /if }} -{{ #if (command_success "[ -d $HOME/.bun ]") }} export BUN_INSTALL="$HOME/.bun" update_path "$BUN_INSTALL/bin" # bun completions [ -s "/home/aleidk/.bun/_bun" ] && source "/home/aleidk/.bun/_bun" -{{ /if }} - -{{ #if (is_executable "rye") }} source "$HOME/.rye/env" -{{ /if }} -{{ #if (is_executable "cargo") }} -. "$HOME/.cargo/env" +# . "$HOME/.cargo/env" update_path "$HOME/.cargo/bin/" -{{ /if }} - -{{~ #if (eq (env_var "OS") "macos") }} -eval "$(/opt/homebrew/bin/brew shellenv)" -{{ /if ~}} - -{{ #if (command_success "[ -e /home/linuxbrew/.linuxbrew/bin/brew ]") }} -eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" -{{ /if ~}} diff --git a/configs/zsh/.zshrc b/configs/zsh/.zshrc new file mode 100644 index 0000000..6dca07a --- /dev/null +++ b/configs/zsh/.zshrc @@ -0,0 +1,88 @@ +# ╭──────────────────────────────────────────────────────────╮ +# │ ZSH Config │ +# ╰──────────────────────────────────────────────────────────╯ + +# ╭──────────────────────────────────────────────────────────╮ +# │ 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" + +# source catppuccin theme for zsh-syntax-highlighting +zinit snippet "https://raw.githubusercontent.com/catppuccin/zsh-syntax-highlighting/main/themes/catppuccin_macchiato-zsh-syntax-highlighting.zsh" + +# ╭──────────────────────────────────────────────────────────╮ +# │ ZSH plugins │ +# ╰──────────────────────────────────────────────────────────╯ + +# 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 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 snippet OMZP::colored-man-pages +zinit snippet OMZP::systemd + +# ╭──────────────────────────────────────────────────────────╮ +# │ History │ +# ╰──────────────────────────────────────────────────────────╯ +HISTSIZE=5000 +HISTFILE=~/.zsh_history +SAVEHIST=$HISTSIZE +HISTDUP=erase +setopt appendhistory +setopt sharehistory +setopt hist_ignore_space +setopt hist_ignore_all_dups +setopt hist_save_no_dups +setopt hist_ignore_dups +setopt hist_find_no_dups + +# ╭──────────────────────────────────────────────────────────╮ +# │ Source other files │ +# ╰──────────────────────────────────────────────────────────╯ + +# this prevents errors and not loading some files +for file in $HOME/.config/zsh/**/*.zsh; do + 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 "$(zoxide init --cmd cd zsh)" + +# . "$HOME/.atuin/bin/env" + +eval "$(atuin init zsh)" + +. "$HOME/.local/share/../bin/env" 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 +