From c2786c7f9632e0da513c8306959fba970c9861cb Mon Sep 17 00:00:00 2001 From: Avinal Kumar Date: Thu, 26 Mar 2026 12:07:53 +0530 Subject: [PATCH] feat: major update to all configs - move older config to archive Signed-off-by: Avinal Kumar --- .config/alacritty/alacritty.toml | 109 ++---- .config/atuin/config.toml | 200 ++-------- .config/gh/config.yml | 3 +- .config/gh/hosts.yml | 5 - .config/ghostty/config | 79 ++-- .config/ghostty/themes/vim_dark_high_contrast | 24 ++ .config/ghostty/themes/vim_high_contrast | 26 ++ .config/helix/config.toml | 3 +- .config/helix/ignore | 14 +- .config/helix/languages.toml | 50 ++- .config/lazygit/config.yml | 50 +++ .config/zellij/config.kdl | 354 +++++------------- .config/zellij/layouts/compact-hx.kdl | 10 +- .config/zellij/layouts/compact-ide.kdl | 18 - .config/zellij/layouts/ide-full.kdl | 25 ++ .config/zellij/layouts/ide-layout.kdl | 8 +- .config/zellij/layouts/ide.kdl | 22 -- .config/zellij/layouts/terminal.kdl | 10 +- .gitconfig | 24 +- .gitignore | 8 + .local/bin/hx-pick | 26 ++ .stow-local-ignore | 6 +- .zshrc | 228 ++++------- {.config => archive/.config}/dunst/dunstrc | 0 .../.config}/environment.d/sway.conf | 0 .../.config}/nvim/.stylua.toml | 0 {.config => archive/.config}/nvim/LICENSE | 0 {.config => archive/.config}/nvim/init.lua | 0 .../.config}/nvim/lazy-lock.json | 0 .../nvim/lua/custom/plugins/colorizer.lua | 0 .../.config}/nvim/lua/custom/plugins/init.lua | 0 .../nvim/lua/custom/plugins/tailwind.lua | 0 .../nvim/lua/custom/plugins/themes.lua | 0 .../.config}/nvim/lua/keymaps.lua | 0 .../.config}/nvim/lua/kickstart/health.lua | 0 .../nvim/lua/kickstart/plugins/autopairs.lua | 0 .../nvim/lua/kickstart/plugins/cmp.lua | 0 .../nvim/lua/kickstart/plugins/conform.lua | 0 .../nvim/lua/kickstart/plugins/debug.lua | 0 .../nvim/lua/kickstart/plugins/gitsigns.lua | 0 .../lua/kickstart/plugins/indent_line.lua | 0 .../nvim/lua/kickstart/plugins/lint.lua | 0 .../nvim/lua/kickstart/plugins/lspconfig.lua | 0 .../nvim/lua/kickstart/plugins/mini.lua | 0 .../nvim/lua/kickstart/plugins/neo-tree.lua | 0 .../nvim/lua/kickstart/plugins/telescope.lua | 0 .../lua/kickstart/plugins/todo-comments.lua | 0 .../nvim/lua/kickstart/plugins/treesitter.lua | 0 .../nvim/lua/kickstart/plugins/which-key.lua | 0 .../.config}/nvim/lua/lazy-bootstrap.lua | 0 .../.config}/nvim/lua/lazy-plugins.lua | 0 .../.config}/nvim/lua/options.lua | 0 {.config => archive/.config}/rofi/config.rasi | 0 .../.config}/rofi/themes/cherry.rasi | 0 .../.config}/rofi/themes/paper-float.rasi | 0 .../.config}/rofi/themes/squared.rasi | 0 {.config => archive/.config}/starship.toml | 0 {.config => archive/.config}/sway/config | 0 .../sway/config.d/60-bindings-screenshot.conf | 0 .../.config}/sway/volume-notification | 0 .../.config}/waybar/config.jsonc | 0 .../.config}/waybar/scripts/dunst.sh | 0 .../.config}/waybar/scripts/get-weather.sh | 0 .../.config}/waybar/scripts/wakatime.sh | 0 {.config => archive/.config}/waybar/style.css | 0 themes/apply-theme.sh | 301 +++++++++++++++ themes/palettes/vim_dark_high_contrast.sh | 50 +++ 67 files changed, 881 insertions(+), 772 deletions(-) delete mode 100644 .config/gh/hosts.yml create mode 100644 .config/ghostty/themes/vim_dark_high_contrast create mode 100644 .config/ghostty/themes/vim_high_contrast create mode 100644 .config/lazygit/config.yml delete mode 100644 .config/zellij/layouts/compact-ide.kdl create mode 100644 .config/zellij/layouts/ide-full.kdl delete mode 100644 .config/zellij/layouts/ide.kdl create mode 100644 .gitignore create mode 100755 .local/bin/hx-pick rename {.config => archive/.config}/dunst/dunstrc (100%) rename {.config => archive/.config}/environment.d/sway.conf (100%) rename {.config => archive/.config}/nvim/.stylua.toml (100%) rename {.config => archive/.config}/nvim/LICENSE (100%) rename {.config => archive/.config}/nvim/init.lua (100%) rename {.config => archive/.config}/nvim/lazy-lock.json (100%) rename {.config => archive/.config}/nvim/lua/custom/plugins/colorizer.lua (100%) rename {.config => archive/.config}/nvim/lua/custom/plugins/init.lua (100%) rename {.config => archive/.config}/nvim/lua/custom/plugins/tailwind.lua (100%) rename {.config => archive/.config}/nvim/lua/custom/plugins/themes.lua (100%) rename {.config => archive/.config}/nvim/lua/keymaps.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/health.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/autopairs.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/cmp.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/conform.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/debug.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/gitsigns.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/indent_line.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/lint.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/lspconfig.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/mini.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/neo-tree.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/telescope.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/todo-comments.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/treesitter.lua (100%) rename {.config => archive/.config}/nvim/lua/kickstart/plugins/which-key.lua (100%) rename {.config => archive/.config}/nvim/lua/lazy-bootstrap.lua (100%) rename {.config => archive/.config}/nvim/lua/lazy-plugins.lua (100%) rename {.config => archive/.config}/nvim/lua/options.lua (100%) rename {.config => archive/.config}/rofi/config.rasi (100%) rename {.config => archive/.config}/rofi/themes/cherry.rasi (100%) rename {.config => archive/.config}/rofi/themes/paper-float.rasi (100%) rename {.config => archive/.config}/rofi/themes/squared.rasi (100%) rename {.config => archive/.config}/starship.toml (100%) rename {.config => archive/.config}/sway/config (100%) rename {.config => archive/.config}/sway/config.d/60-bindings-screenshot.conf (100%) rename {.config => archive/.config}/sway/volume-notification (100%) rename {.config => archive/.config}/waybar/config.jsonc (100%) rename {.config => archive/.config}/waybar/scripts/dunst.sh (100%) rename {.config => archive/.config}/waybar/scripts/get-weather.sh (100%) rename {.config => archive/.config}/waybar/scripts/wakatime.sh (100%) rename {.config => archive/.config}/waybar/style.css (100%) create mode 100755 themes/apply-theme.sh create mode 100644 themes/palettes/vim_dark_high_contrast.sh diff --git a/.config/alacritty/alacritty.toml b/.config/alacritty/alacritty.toml index 6374845..d290499 100644 --- a/.config/alacritty/alacritty.toml +++ b/.config/alacritty/alacritty.toml @@ -1,104 +1,49 @@ [window] padding = { x = 7, y = 5 } dynamic_padding = true -decorations = "Buttonless" dynamic_title = false [font] -normal = { family = "Monaspace Neon", style = "Regular" } -bold = { family = "Monaspace Neon", style = "Bold" } -italic = { family = "Monaspace Neon", style = "Italic" } -bold_italic = { family = "Monaspace Neon", style = "Bold Italic" } -size = 15 - -[terminal.shell] -program = "zellij" -args = ["-l", "welcome"] - -# Nightfox Alacritty Colors -## name: carbonfox -## upstream: https://github.com/edeneast/nightfox.nvim/raw/main/extra/carbonfox/alacritty.toml +normal = { family = "Iosevka Term", style = "Regular" } +bold = { family = "Iosevka Term", style = "Bold" } +italic = { family = "Iosevka Term", style = "Italic" } +bold_italic = { family = "Iosevka Term", style = "Bold Italic" } +size = 14 [colors.primary] -background = "#161616" -foreground = "#f2f4f8" -dim_foreground = "#b6b8bb" -bright_foreground = "#f9fbff" +background = "#111111" +foreground = "#c1c9d2" [colors.cursor] -text = "#f2f4f8" -cursor = "#b6b8bb" - -[colors.vi_mode_cursor] -text = "#f2f4f8" -cursor = "#33b1ff" - -[colors.search.matches] -foreground = "#f2f4f8" -background = "#525253" - -[colors.search.focused_match] -foreground = "#f2f4f8" -background = "#3ddbd9" - -[colors.footer_bar] -foreground = "#f2f4f8" -background = "#353535" - -[colors.hints.start] -foreground = "#f2f4f8" -background = "#3ddbd9" - -[colors.hints.end] -foreground = "#f2f4f8" -background = "#353535" +text = "#111111" +cursor = "#c1c9d2" [colors.selection] -text = "#f2f4f8" -background = "#2a2a2a" +text = "#ffffff" +background = "#3e4043" [colors.normal] -black = "#282828" -red = "#ee5396" -green = "#25be6a" -yellow = "#f8e17c" -blue = "#33b1ff" -magenta = "#be95ff" -cyan = "#3ddbd9" -white = "#dfdfe0" +black = "#000000" +red = "#ed5f74" +green = "#1ea672" +yellow = "#d97917" +blue = "#688ef1" +magenta = "#c96ed0" +cyan = "#3a97d4" +white = "#e3e8ee" [colors.bright] -black = "#484848" -red = "#f16da6" -green = "#46c880" -yellow = "#f8e17c" -blue = "#52bdff" -magenta = "#c8a5ff" -cyan = "#2dc7c4" -white = "#e4e4e5" - -[colors.dim] -black = "#222222" -red = "#ca4780" -green = "#1fa25a" -yellow = "#f8e17c" -blue = "#2b96d9" -magenta = "#a27fd9" -cyan = "#07a19e" -white = "#bebebe" - -[[colors.indexed_colors]] -index = 16 -color = "#3ddbd9" - -[[colors.indexed_colors]] -index = 17 -color = "#ff7eb6" +black = "#697386" +red = "#fbb5b2" +green = "#85d996" +yellow = "#efc078" +blue = "#9fcdff" +magenta = "#f0b4e4" +cyan = "#7fd3ed" +white = "#ffffff" [cursor] style = { shape = "Underline", blinking = "On" } -vi_mode_style = { shape = "Block", blinking = "Off" } [selection] save_to_clipboard = true - diff --git a/.config/atuin/config.toml b/.config/atuin/config.toml index 36e4bc4..6bd4cbc 100644 --- a/.config/atuin/config.toml +++ b/.config/atuin/config.toml @@ -1,200 +1,66 @@ -## 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" +## Sync +sync_address = "http://pifive.neon-universe.ts.net:8392" -## 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" +## Search +search_mode = "daemon-fuzzy" -## 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 = "http://pifive.neon-universe.ts.net:8888" - -## 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 = "fulltext" - -## which filter mode to use -## possible values: global, host, session, directory -filter_mode = "host" - -## With workspace filtering enabled, Atuin will filter for commands executed -## in any directory within a git repository tree (default: false) +# Smart filter: workspace in git repos, falls to directory outside, then session +# Workspace mode is auto-skipped when not in a git repo +filter_mode = "workspace" +filter_mode_shell_up_key_binding = "session" workspaces = true -## 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 +## UI style = "compact" - -## the maximum number of lines the interface should take up -## set it to 0 to always go full screen inline_height = 9 - -## 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 = false - -## 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 = 1 - -## use ctrl instead of alt as the shortcut modifier key for numerical UI shortcuts -## alt-0 .. alt-9 -# ctrl_n_shortcuts = false - -## default history list format - can also be specified with the --format arg -# history_format = "{time}\t{command}\t{duration}" - -## prevent commands matching any of these regexes from being written to history. -## Note that these regular expressions are unanchored, i.e. if they don't start -## with ^ or end with $, they'll match anywhere in the command. -## For details on the supported regular expression syntax, see -## https://docs.rs/regex/latest/regex/#syntax -# history_filter = [ -# "^secret-cmd", -# "^innocuous-cmd .*--secret=.+", -# ] - -## prevent commands run with cwd matching any of these regexes from being written -## to history. Note that these regular expressions are unanchored, i.e. if they don't -## start with ^ or end with $, they'll match anywhere in CWD. -## For details on the supported regular expression syntax, see -## https://docs.rs/regex/latest/regex/#syntax -# cwd_filter = [ -# "^/very/secret/area", -# ] - -## Configure the maximum height of the preview to show. -## Useful when you have long scripts in your history that you want to distinguish -## by more than the first few lines. -# max_preview_height = 4 - -## Configure whether or not to show the help row, which includes the current Atuin -## version (and whether an update is available), a keymap hint, and the total -## amount of commands in your history. show_help = false - -## Configure whether or not to show tabs for search and inspect show_tabs = false - -## 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. +show_preview = true +max_preview_height = 4 enter_accept = true -## 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" +## Score tuning for daemon-fuzzy: favor recent commands slightly +[search] +filters = ["workspace", "directory", "session", "host", "global"] +recency_score_multiplier = 2.0 +frequency_score_multiplier = 1.0 +frecency_score_multiplier = 1.5 -## 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 +## Filter secrets and noisy commands from history +history_filter = [ + "^export .*(KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL).*=", + "^set .*(KEY|TOKEN|SECRET|PASSWORD|CREDENTIAL).*=", +] [stats] -## Set commands where we should consider the subcommand for statistics. Eg, kubectl get vs just kubectl common_subcommands = [ + "brew", "cargo", "dnf", "docker", + "gh", "git", "go", "ip", "kubectl", "npm", + "oc", "podman", "port", "systemctl", - "tmux", "zellij", "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 = false +scroll_exits = false [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 + +[daemon] +enabled = true +autostart = true + +[preview] +strategy = "auto" diff --git a/.config/gh/config.yml b/.config/gh/config.yml index 6b07b59..aaef732 100644 --- a/.config/gh/config.yml +++ b/.config/gh/config.yml @@ -3,7 +3,7 @@ version: 1 # What protocol to use when performing git operations. Supported values: ssh, https git_protocol: ssh # What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment. -editor: nvim +editor: hx # When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled prompt: enabled # A pager program to send command output to, e.g. "less". Set the value to "cat" to disable the pager. @@ -11,6 +11,7 @@ pager: less # Aliases allow you to create nicknames for gh commands aliases: co: pr checkout + pc: pr create # The path to a unix socket through which send HTTP connections. If blank, HTTP traffic will be handled by net/http.DefaultTransport. http_unix_socket: # What web browser gh should use when opening URLs. If blank, will refer to environment. diff --git a/.config/gh/hosts.yml b/.config/gh/hosts.yml deleted file mode 100644 index 892b0e0..0000000 --- a/.config/gh/hosts.yml +++ /dev/null @@ -1,5 +0,0 @@ -github.com: - git_protocol: ssh - users: - avinal: - user: avinal diff --git a/.config/ghostty/config b/.config/ghostty/config index e07ec96..4942ada 100644 --- a/.config/ghostty/config +++ b/.config/ghostty/config @@ -1,30 +1,67 @@ -# Font related configs -font-family = "Monaspace Neon" -font-size = "14" -adjust-underline-position = "1" -adjust-underline-thickness = "1" -#adjust-cell-width = "5%" -#adjust-cell-height = "5%" -adjust-box-thickness = "1" +# Font +font-family = "Iosevka Term" +font-size = 14 +font-feature = "calt" +font-feature = "liga" +adjust-underline-position = 1 +adjust-underline-thickness = 1 +adjust-box-thickness = 1 +bold-is-bright = true +freetype-load-flags = hinting,autohint,light # Appearance -# theme = "Oxocarbon" -theme = "Raycast_Dark" -# title = "Ghostty" +theme = "vim_dark_high_contrast" window-decoration = true +window-padding-x = 4 +window-padding-y = 2 +window-padding-balance = true +mouse-hide-while-typing = true +unfocused-split-opacity = 0.85 +resize-overlay = after-first +resize-overlay-position = bottom-right -# Cursor setting -cursor-style = "underline" +# Cursor +cursor-style = block_hollow +cursor-style-blink = false cursor-click-to-move = true -cursor-color = "cyan" -cursor-text = "cyan" -# cursor-invert-fg-bg = true -# adjust-cursor-thickness = "2" +cursor-color = cyan +cursor-text = cyan -# Shell setting -shell-integration = "zsh" +# Shell +shell-integration = zsh shell-integration-features = true # Clipboard -clipboard-read = "allow" -clipboard-write = "allow" +clipboard-read = allow +clipboard-write = allow +copy-on-select = clipboard + +# Scrollback (10MB per surface) +scrollback-limit = 10000000 + +# Links +link-url = true + +# Notifications for long commands (KDE supports this natively) +notify-on-command-finish = unfocused +notify-on-command-finish-after = 10s + +# Window behavior +confirm-close-surface = true +window-inherit-working-directory = true +window-save-state = always + +# Quick terminal (toggle with a keybind) +quick-terminal-position = top +quick-terminal-size = 40% +quick-terminal-autohide = false + +# GTK/Linux specific +gtk-titlebar = false +gtk-tabs-location = hidden +gtk-single-instance = true + +# Keybinds +keybind = ctrl+grave_accent=toggle_quick_terminal +keybind = ctrl+shift+t=new_tab +keybind = ctrl+shift+n=new_window diff --git a/.config/ghostty/themes/vim_dark_high_contrast b/.config/ghostty/themes/vim_dark_high_contrast new file mode 100644 index 0000000..7e4c747 --- /dev/null +++ b/.config/ghostty/themes/vim_dark_high_contrast @@ -0,0 +1,24 @@ +palette = 0=#000000 +palette = 1=#ed5f74 +palette = 2=#1ea672 +palette = 3=#d97917 +palette = 4=#688ef1 +palette = 5=#c96ed0 +palette = 6=#3a97d4 +palette = 7=#e3e8ee + +palette = 8=#697386 +palette = 9=#fbb5b2 +palette = 10=#85d996 +palette = 11=#efc078 +palette = 12=#9fcdff +palette = 13=#f0b4e4 +palette = 14=#7fd3ed +palette = 15=#ffffff + +background = #000000 +foreground = #c1c9d2 +cursor-color = #c1c9d2 +cursor-text = #111111 +selection-background = #3e4043 +selection-foreground = #ffffff diff --git a/.config/ghostty/themes/vim_high_contrast b/.config/ghostty/themes/vim_high_contrast new file mode 100644 index 0000000..456cffb --- /dev/null +++ b/.config/ghostty/themes/vim_high_contrast @@ -0,0 +1,26 @@ +# Ghostty theme adapted from Helix palette + +palette = 0=#000000 +palette = 1=#ed5f74 +palette = 2=#1ea672 +palette = 3=#d97917 +palette = 4=#688ef1 +palette = 5=#c96ed0 +palette = 6=#3a97d4 +palette = 7=#e3e8ee + +palette = 8=#697386 +palette = 9=#fbb5b2 +palette = 10=#85d996 +palette = 11=#efc078 +palette = 12=#9fcdff +palette = 13=#f0b4e4 +palette = 14=#7fd3ed +palette = 15=#ffffff + +background = #111111 +foreground = #c1c9d2 +cursor-color = #c1c9d2 +cursor-text = #111111 +selection-background = #3e4043 +selection-foreground = #ffffff diff --git a/.config/helix/config.toml b/.config/helix/config.toml index 0741fe1..4365acb 100644 --- a/.config/helix/config.toml +++ b/.config/helix/config.toml @@ -1,4 +1,4 @@ -theme = "carbonfox" +theme = "vim_dark_high_contrast" [editor] rulers = [80, 100] @@ -9,6 +9,7 @@ bufferline = "multiple" color-modes = true end-of-line-diagnostics = "hint" popup-border = "popup" +scrolloff = 2 [editor.soft-wrap] enable = true diff --git a/.config/helix/ignore b/.config/helix/ignore index 508f6d4..03b9ad7 100644 --- a/.config/helix/ignore +++ b/.config/helix/ignore @@ -1,5 +1,15 @@ # Global ignore files - -# For golang +# Dependencies vendor/ +node_modules/ + +# Build artifacts +target/ +dist/ +build/ +_build/ +__pycache__/ + +# Version control +.git/ diff --git a/.config/helix/languages.toml b/.config/helix/languages.toml index 28c33df..de5cb4f 100644 --- a/.config/helix/languages.toml +++ b/.config/helix/languages.toml @@ -9,6 +9,14 @@ command = "wakatime-ls" [language-server.yaml-language-server.config.yaml] format = { enable = true } validation = true +schemaStore = { enable = true } + +[language-server.yaml-language-server.config.yaml.schemas] +"https://json.schemastore.org/github-workflow.json" = ".github/workflows/*.{yml,yaml}" +"https://raw.githubusercontent.com/ansible-community/schemas/main/f/ansible-tasks.json" = "roles/{tasks,handlers}/*.{yml,yaml}" +"https://raw.githubusercontent.com/redhat-developer/vscode-tekton/refs/heads/main/scheme/tekton.dev/v1beta1_Task.json" = "tasks/*.{yml,yaml}" +"https://raw.githubusercontent.com/redhat-developer/vscode-tekton/refs/heads/main/scheme/tekton.dev/v1_Pipeline.json" = "pipelines/*.{yml,yaml}" +"https://raw.githubusercontent.com/redhat-developer/vscode-tekton/refs/heads/main/scheme/tekton.dev/v1_PipelineRun.json" = ".tekton/*.{yml,yaml}" [[language]] name = "c" @@ -46,21 +54,45 @@ name = "bash" language-servers = ["bash-language-server", "wakatime"] [[language]] -name = "html" -language-servers = ["wakatime"] +name = "python" +language-servers = ["pylsp", "wakatime"] +auto-format = true +[[language]] +name = "rust" +language-servers = ["rust-analyzer", "wakatime"] +auto-format = true + +[[language]] +name = "typescript" +language-servers = ["typescript-language-server", "wakatime"] +auto-format = true + +[[language]] +name = "javascript" +language-servers = ["typescript-language-server", "wakatime"] +auto-format = true + +[[language]] +name = "html" +language-servers = ["vscode-html-language-server", "wakatime"] + +[[language]] +name = "css" +language-servers = ["vscode-css-language-server", "wakatime"] [[language]] name = "lua" -language-servers = ["wakatime"] - - -# [[language]] -# name = "docker" -# language-servers = ["wakatime"] +language-servers = ["lua-language-server", "wakatime"] +[[language]] +name = "dockerfile" +language-servers = ["docker-langserver", "wakatime"] [[language]] name = "json" -language-servers = ["wakatime"] +language-servers = ["vscode-json-language-server", "wakatime"] +[[language]] +name = "toml" +language-servers = ["taplo", "wakatime"] diff --git a/.config/lazygit/config.yml b/.config/lazygit/config.yml new file mode 100644 index 0000000..e6518be --- /dev/null +++ b/.config/lazygit/config.yml @@ -0,0 +1,50 @@ +gui: + showBottomLine: false + showPanelJumps: true + showCommandLog: false + showRandomTip: false + nerdFontsVersion: "" + showFileIcons: false + border: rounded + filterMode: fuzzy + showDivergenceFromBaseBranch: arrowAndNumber + animateExplosion: false + theme: + activeBorderColor: + - "#3a97d4" + - bold + inactiveBorderColor: + - "#697386" + selectedLineBgColor: + - "#3e4043" + optionsTextColor: + - "#3a97d4" + unstagedChangesColor: + - "#ed5f74" + defaultFgColor: + - "#c1c9d2" + +git: + autoFetch: true + autoRefresh: true + branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} -- +os: + editor: hx + editPreset: helix +customCommands: + - key: "C" + context: files + command: git commit -m '{{index .PromptResponses 0}}' -m '{{index .PromptResponses 1}}' + description: "Commit with body" + prompts: + - type: input + title: "Summary" + - type: input + title: "Description" + - key: "b" + context: files + command: git checkout -b {{index .PromptResponses 0}} + description: "New branch from here" + prompts: + - type: input + title: "Branch name" diff --git a/.config/zellij/config.kdl b/.config/zellij/config.kdl index 5533717..a9f85b3 100644 --- a/.config/zellij/config.kdl +++ b/.config/zellij/config.kdl @@ -1,7 +1,3 @@ -// -// THIS FILE WAS AUTOGENERATED BY ZELLIJ, THE PREVIOUS FILE AT THIS LOCATION WAS COPIED TO: /home/avinal/.config/zellij/config.kdl.bak -// - keybinds clear-defaults=true { locked { bind "Ctrl space" { SwitchToMode "normal"; } @@ -101,6 +97,12 @@ keybinds clear-defaults=true { bind "Alt ]" { NextSwapLayout; } bind "Alt n" { NewPane; } bind "Alt q" { Quit; } + bind "Alt f" { + LaunchPlugin "filepicker" { + floating true + close_on_selection true + }; + } } shared_except "locked" "move" { bind "Alt m" { SwitchToMode "move"; } @@ -170,120 +172,121 @@ keybinds clear-defaults=true { bind "|" { NewPane "right"; SwitchToMode "normal"; } } } + themes { - carbonfox { + vim_dark_high_contrast { text_unselected { - base 255 255 255 - background 53 53 53 - emphasis_0 255 168 123 - emphasis_1 61 219 217 - emphasis_2 37 190 106 - emphasis_3 190 149 255 + base 193 201 210 + background 62 64 67 + emphasis_0 237 95 116 + emphasis_1 58 151 212 + emphasis_2 30 166 114 + emphasis_3 201 110 208 } text_selected { base 255 255 255 - background 42 42 42 - emphasis_0 255 168 123 - emphasis_1 61 219 217 - emphasis_2 37 190 106 - emphasis_3 190 149 255 + background 62 64 67 + emphasis_0 237 95 116 + emphasis_1 58 151 212 + emphasis_2 30 166 114 + emphasis_3 201 110 208 } ribbon_selected { - base 53 53 53 - background 37 190 106 - emphasis_0 238 83 150 - emphasis_1 255 168 123 - emphasis_2 190 149 255 - emphasis_3 51 177 255 + base 17 17 17 + background 30 166 114 + emphasis_0 237 95 116 + emphasis_1 217 121 23 + emphasis_2 201 110 208 + emphasis_3 104 142 241 } ribbon_unselected { - base 53 53 53 - background 242 244 248 - emphasis_0 238 83 150 - emphasis_1 255 255 255 - emphasis_2 51 177 255 - emphasis_3 190 149 255 + base 17 17 17 + background 227 232 238 + emphasis_0 237 95 116 + emphasis_1 193 201 210 + emphasis_2 104 142 241 + emphasis_3 201 110 208 } table_title { - base 37 190 106 + base 30 166 114 background 0 - emphasis_0 255 168 123 - emphasis_1 61 219 217 - emphasis_2 37 190 106 - emphasis_3 190 149 255 + emphasis_0 237 95 116 + emphasis_1 58 151 212 + emphasis_2 30 166 114 + emphasis_3 201 110 208 } table_cell_selected { base 255 255 255 - background 42 42 42 - emphasis_0 255 168 123 - emphasis_1 61 219 217 - emphasis_2 37 190 106 - emphasis_3 190 149 255 + background 62 64 67 + emphasis_0 237 95 116 + emphasis_1 58 151 212 + emphasis_2 30 166 114 + emphasis_3 201 110 208 } table_cell_unselected { - base 255 255 255 - background 53 53 53 - emphasis_0 255 168 123 - emphasis_1 61 219 217 - emphasis_2 37 190 106 - emphasis_3 190 149 255 + base 193 201 210 + background 62 64 67 + emphasis_0 237 95 116 + emphasis_1 58 151 212 + emphasis_2 30 166 114 + emphasis_3 201 110 208 } list_selected { base 255 255 255 - background 42 42 42 - emphasis_0 255 168 123 - emphasis_1 61 219 217 - emphasis_2 37 190 106 - emphasis_3 190 149 255 + background 62 64 67 + emphasis_0 237 95 116 + emphasis_1 58 151 212 + emphasis_2 30 166 114 + emphasis_3 201 110 208 } list_unselected { - base 255 255 255 - background 53 53 53 - emphasis_0 255 168 123 - emphasis_1 61 219 217 - emphasis_2 37 190 106 - emphasis_3 190 149 255 + base 193 201 210 + background 62 64 67 + emphasis_0 237 95 116 + emphasis_1 58 151 212 + emphasis_2 30 166 114 + emphasis_3 201 110 208 } frame_selected { - base 37 190 106 + base 30 166 114 background 0 - emphasis_0 255 168 123 - emphasis_1 61 219 217 - emphasis_2 190 149 255 + emphasis_0 237 95 116 + emphasis_1 58 151 212 + emphasis_2 201 110 208 emphasis_3 0 } frame_highlight { - base 255 168 123 + base 217 121 23 background 0 - emphasis_0 255 168 123 - emphasis_1 255 168 123 - emphasis_2 255 168 123 - emphasis_3 255 168 123 + emphasis_0 217 121 23 + emphasis_1 217 121 23 + emphasis_2 217 121 23 + emphasis_3 217 121 23 } exit_code_success { - base 37 190 106 + base 30 166 114 background 0 - emphasis_0 61 219 217 - emphasis_1 53 53 53 - emphasis_2 190 149 255 - emphasis_3 51 177 255 + emphasis_0 58 151 212 + emphasis_1 62 64 67 + emphasis_2 201 110 208 + emphasis_3 104 142 241 } exit_code_error { - base 238 83 150 + base 237 95 116 background 0 - emphasis_0 248 225 124 + emphasis_0 217 121 23 emphasis_1 0 emphasis_2 0 emphasis_3 0 } multiplayer_user_colors { - player_1 190 149 255 - player_2 51 177 255 + player_1 201 110 208 + player_2 104 142 241 player_3 0 - player_4 248 225 124 - player_5 61 219 217 + player_4 217 121 23 + player_5 58 151 212 player_6 0 - player_7 238 83 150 + player_7 237 95 116 player_8 0 player_9 0 player_10 0 @@ -291,8 +294,6 @@ themes { } } -// Plugin aliases - can be used to change the implementation of Zellij -// changing these requires a restart to take effect plugins { about location="zellij:about" compact-bar location="zellij:compact-bar" @@ -310,200 +311,21 @@ plugins { } } -// Plugins to load in the background when a new session starts -// eg. "file:/path/to/my-plugin.wasm" -// eg. "https://example.com/my-plugin.wasm" -load_plugins { -} - -// Use a simplified UI without special fonts (arrow glyphs) -// Options: -// - true -// - false (Default) -// simplified_ui false - -// Choose the theme that is specified in the themes section. -// Default: default -// -theme "carbonfox" - -// Choose the base input mode of zellij. -// Default: normal -// -// default_mode "locked" - -// Choose the path to the default shell that zellij will use for opening new panes -// Default: $SHELL -// -// default_shell "fish" - -// Choose the path to override cwd that zellij will use for opening new panes -// -// default_cwd "/tmp" - -// The name of the default layout to load on startup -// Default: "default" -// +theme "vim_dark_high_contrast" default_layout "terminal" - -// The folder in which Zellij will look for layouts -// (Requires restart) -// -// layout_dir "/tmp" - -// The folder in which Zellij will look for themes -// (Requires restart) -// -// theme_dir "/tmp" - -// Toggle enabling the mouse mode. -// On certain configurations, or terminals this could -// potentially interfere with copying text. -// Options: -// - true (default) -// - false -// -// mouse_mode false - -// Toggle having pane frames around the panes -// Options: -// - true (default, enabled) -// - false -// -// pane_frames false - -// When attaching to an existing session with other users, -// should the session be mirrored (true) -// or should each user have their own cursor (false) -// (Requires restart) -// Default: false -// -// mirror_session true - -// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP -// eg. when terminal window with an active zellij session is closed -// (Requires restart) -// Options: -// - detach (Default) -// - quit -// -// on_force_close "quit" - -// Configure the scroll back buffer size -// This is the number of lines zellij stores for each pane in the scroll back -// buffer. Excess number of lines are discarded in a FIFO fashion. -// (Requires restart) -// Valid values: positive integers -// Default value: 10000 -// scroll_buffer_size 100000 - -// Provide a command to execute when copying text. The text will be piped to -// the stdin of the program to perform the copy. This can be used with -// terminal emulators which do not support the OSC 52 ANSI control sequence -// that will be used by default if this option is not set. -// Examples: -// -// copy_command "xclip -selection clipboard" // x11 -// copy_command "wl-copy" // wayland -// copy_command "pbcopy" // osx -// -// copy_command "pbcopy" - -// Choose the destination for copied text -// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard. -// Does not apply when using copy_command. -// Options: -// - system (default) -// - primary -// -// copy_clipboard "primary" - -// Enable automatic copying (and clearing) of selection when releasing mouse -// Default: true -// copy_on_select true - -// Path to the default editor to use to edit pane scrollbuffer -// Default: $EDITOR or $VISUAL -scrollback_editor "/usr/local/bin/hx" - -// A fixed name to always give the Zellij session. -// Consider also setting `attach_to_session true,` -// otherwise this will error if such a session exists. -// Default: -// -// session_name "My singleton session" - -// When `session_name` is provided, attaches to that session -// if it is already running or creates it otherwise. -// Default: false -// -// attach_to_session true - -// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible -// Options: -// - true (default) -// - false -// -// auto_layout false - -// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected -// Options: -// - true (default) -// - false -// +scrollback_editor "hx" session_serialization true - -// Whether pane viewports are serialized along with the session, default is false -// Options: -// - true -// - false (default) -// serialize_pane_viewport true - -// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0 -// defaults to the scrollback size. If this number is higher than the scrollback size, it will -// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true. -// scrollback_lines_to_serialize 100000 - -// Enable or disable the rendering of styled and colored underlines (undercurl). -// May need to be disabled for certain unsupported terminals -// (Requires restart) -// Default: true -// -// styled_underlines false - -// How often in seconds sessions are serialized -// -// serialization_interval 10000 - -// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know -// metadata info on this session) -// (Requires restart) -// Default: false -// disable_session_metadata false - -// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it) -// (Requires restart) -// Default: true (if the host terminal supports it) -// -// support_kitty_keyboard_protocol false - -// Whether to stack panes when resizing beyond a certain size -// Default: true -// -// stacked_resize false - -// Whether to show tips on startup -// Default: true -// show_startup_tips false - -// Whether to show release notes on first version run -// Default: true -// -// show_release_notes false + +web_client { + cursor_blink false + cursor_style "block" + cursor_inactive_style "outline" + font "Iosevka Fixed" +} diff --git a/.config/zellij/layouts/compact-hx.kdl b/.config/zellij/layouts/compact-hx.kdl index 6426eb9..d84dd93 100644 --- a/.config/zellij/layouts/compact-hx.kdl +++ b/.config/zellij/layouts/compact-hx.kdl @@ -1,4 +1,9 @@ layout { + pane { + borderless true + size 1 + plugin location="zellij:compact-bar" + } pane split_direction="horizontal" { pane { command "hx" @@ -11,9 +16,4 @@ layout { size "25%" } } - pane { - borderless true - size 1 - plugin location="zellij:compact-bar" - } } diff --git a/.config/zellij/layouts/compact-ide.kdl b/.config/zellij/layouts/compact-ide.kdl deleted file mode 100644 index 3e6f0ec..0000000 --- a/.config/zellij/layouts/compact-ide.kdl +++ /dev/null @@ -1,18 +0,0 @@ -layout { - pane { - borderless true - size 1 - plugin location="zellij:compact-bar" - } - pane split_direction="horizontal" { - pane { - edit "." - focus true - size "75%" - borderless true - } - pane { - size "25%" - } - } -} diff --git a/.config/zellij/layouts/ide-full.kdl b/.config/zellij/layouts/ide-full.kdl new file mode 100644 index 0000000..e8487cc --- /dev/null +++ b/.config/zellij/layouts/ide-full.kdl @@ -0,0 +1,25 @@ +layout { + pane { + borderless true + size 1 + plugin location="zellij:compact-bar" + } + pane split_direction="vertical" { + pane { + command "hx-pick" + args "." + focus true + size "60%" + borderless true + } + pane stacked=true { + pane { + name "LazyGit" + command "lazygit" + } + pane { + name "Terminal" + } + } + } +} diff --git a/.config/zellij/layouts/ide-layout.kdl b/.config/zellij/layouts/ide-layout.kdl index e7e9b70..cd64459 100644 --- a/.config/zellij/layouts/ide-layout.kdl +++ b/.config/zellij/layouts/ide-layout.kdl @@ -1,4 +1,9 @@ layout { + pane { + borderless true + size 1 + plugin location="zellij:compact-bar" + } pane split_direction="vertical" { pane { edit "." @@ -16,7 +21,4 @@ layout { } } } - pane borderless=true size=1 { - plugin location="zellij:compact-bar" - } } diff --git a/.config/zellij/layouts/ide.kdl b/.config/zellij/layouts/ide.kdl deleted file mode 100644 index d82180f..0000000 --- a/.config/zellij/layouts/ide.kdl +++ /dev/null @@ -1,22 +0,0 @@ -layout { - tab_template name="ui" { - pane { - borderless true - size 1 - plugin location="zellij:compact-bar" - } - children - } - - default_tab_template { - pane { - borderless true - size 1 - plugin location="zellij:compact-bar" - } - pane { - pane - pane - } - } -} diff --git a/.config/zellij/layouts/terminal.kdl b/.config/zellij/layouts/terminal.kdl index e854e9b..809caa3 100644 --- a/.config/zellij/layouts/terminal.kdl +++ b/.config/zellij/layouts/terminal.kdl @@ -1,12 +1,12 @@ layout { - pane split_direction="vertical" { - pane { - name "Terminal" - } - } pane { borderless true size 1 plugin location="zellij:compact-bar" } + pane split_direction="vertical" { + pane { + name "Terminal" + } + } } diff --git a/.gitconfig b/.gitconfig index 30846f5..310f46d 100644 --- a/.gitconfig +++ b/.gitconfig @@ -1,5 +1,5 @@ [init] - templateDir = /home/avinal/.git-template + templateDir = ~/.git-template [rh-pre-commit] checkSecrets = true enableLocalConfig = false @@ -12,17 +12,21 @@ [gpg] program = gpg [credential] - helper = store + helper = /usr/libexec/git-core/git-credential-libsecret [core] editor = hx +[merge] + conflictstyle = zdiff3 +[diff] + colorMoved = default [rh-pre-commit "commit-msg"] signOff = true [sendemail] - smtpServer = smtp.gmail.com - smtpEncryption = tls - smtpServerPort = 587 - confirm = always - suppresscc = self - smtpUser = avinal.xlvii@gmail.com - from = "Avinal Kumar " - cc = "Avinal Kumar " + smtpServer = smtp.gmail.com + smtpEncryption = tls + smtpServerPort = 587 + confirm = always + suppresscc = self + smtpUser = avinal.xlvii@gmail.com + from = "Avinal Kumar " + cc = "Avinal Kumar " diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..22564f7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +*.bak +**/state.yml +**/*.log + +# Secrets - never commit these +.wakatime.cfg +.config/gh/hosts.yml +pikvm/vnc diff --git a/.local/bin/hx-pick b/.local/bin/hx-pick new file mode 100755 index 0000000..59f46b7 --- /dev/null +++ b/.local/bin/hx-pick @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# hx-pick: loop between file picker and helix +# Select a file -> edit in helix -> back to picker on exit +# Press Esc/Ctrl-C in the picker to drop to a normal shell + +dir="${1:-.}" +cd "$dir" || exit 1 + +while true; do + file=$(find . -type f \ + -not -path './.git/*' \ + -not -path '*/node_modules/*' \ + -not -path '*/vendor/*' \ + -not -path '*/__pycache__/*' \ + -not -path '*/target/*' \ + -not -path '*/.build/*' \ + | sort \ + | fzf --height=100% --layout=reverse --border=rounded \ + --prompt="Edit > " \ + --header="Esc to exit to shell" \ + --preview='head -100 {}' \ + --preview-window=right:50%:wrap) + + [ -z "$file" ] && break + hx "$file" +done diff --git a/.stow-local-ignore b/.stow-local-ignore index 0f905d7..1d1c893 100644 --- a/.stow-local-ignore +++ b/.stow-local-ignore @@ -22,7 +22,11 @@ _darcs ^/LICENSE.* ^/COPYING -# Ignore secrets +# Ignore non-config items +archive +themes .wakatime.cfg logid bootstrap +themetest.md +pikvm diff --git a/.zshrc b/.zshrc index df44f8f..dfe2066 100644 --- a/.zshrc +++ b/.zshrc @@ -1,174 +1,94 @@ -# If you come from bash you might have to change your $PATH. -export PATH=$HOME/bin:/usr/local/bin:$HOME/.local/bin:$PATH -export PATH=$PATH:/usr/local/go/bin -export PATH=$PATH:/home/avinal/go/bin -export PATH=$PATH:/home/linuxbrew/.linuxbrew/bin -export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" +# === Environment === export XDG_DATA_HOME="$HOME/.local/share" export XDG_CONFIG_HOME="$HOME/.config" export XDG_STATE_HOME="$HOME/.local/state" export XDG_CACHE_HOME="$HOME/.cache" -export TINYGOROOT="$HOME/tinygo" + +export PATH="$HOME/bin:$HOME/.local/bin:/usr/local/bin:$PATH" +export PATH="$PATH:/usr/local/go/bin:$HOME/go/bin" +export PATH="$PATH:$HOME/tinygo/bin" +export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH" + +export EDITOR='hx' export OC_EDITOR="hx" -# Generated for envman. Do not edit. -[ -s "$HOME/.config/envman/load.sh" ] && source "$HOME/.config/envman/load.sh" - -export NVM_DIR="$HOME/.nvm" -[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm -[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion -#Path to your oh-my-zsh installation. - -export ZSH="$HOME/.oh-my-zsh" - -# Set name of the theme to load --- if set to "random", it will -# load a random theme each time oh-my-zsh is loaded, in which case, -# to know which specific one was loaded, run: echo $RANDOM_THEME -# See https://github.com/ohmyzsh/ohmyzsh/wiki/Themes -ZSH_THEME="robbyrussell" - -# Set list of themes to pick from when loading at random -# Setting this variable when ZSH_THEME=random will cause zsh to load -# a theme from this variable instead of looking in $ZSH/themes/ -# If set to an empty array, this variable will have no effect. -# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" ) - -# Uncomment the following line to use case-sensitive completion. -CASE_SENSITIVE="true" - -# Uncomment the following line to use hyphen-insensitive completion. -# Case-sensitive completion must be off. _ and - will be interchangeable. -# HYPHEN_INSENSITIVE="true" - -# Uncomment one of the following lines to change the auto-update behavior -# zstyle ':omz:update' mode disabled # disable automatic updates -# zstyle ':omz:update' mode auto # update automatically without asking -# zstyle ':omz:update' mode reminder # just remind me to update when it's time - -# Uncomment the following line to change how often to auto-update (in days). -# zstyle ':omz:update' frequency 13 - -# Uncomment the following line if pasting URLs and other text is messed up. -# DISABLE_MAGIC_FUNCTIONS="true" -# -# Uncomment the following line to disable colors in ls. -# DISABLE_LS_COLORS="true" - -# Uncomment the following line to disable auto-setting terminal title. -# DISABLE_AUTO_TITLE="true" - -# Uncomment the following line to enable command auto-correction. -# ENABLE_CORRECTION="true" - -# Uncomment the following line to display red dots whilst waiting for completion. -# You can also set it to another string to have that shown instead of the default red dots. -# e.g. COMPLETION_WAITING_DOTS="%F{yellow}waiting...%f" -# Caution: this setting can cause issues with multiline prompts in zsh < 5.7.1 (see #5765) -# COMPLETION_WAITING_DOTS="true" - -# Uncomment the following line if you want to disable marking untracked files -# under VCS as dirty. This makes repository status check for large repositories -# much, much faster. -# DISABLE_UNTRACKED_FILES_DIRTY="true" - -# Uncomment the following line if you want to change the command execution time -# stamp shown in the history command output. -# You can set one of the optional three formats: -# "mm/dd/yyyy"|"dd.mm.yyyy"|"yyyy-mm-dd" -# or set a custom format using the strftime function format specifications, -# see 'man strftime' for details. -# HIST_STAMPS="mm/dd/yyyy" - -# Would you like to use another custom folder than $ZSH/custom? -# ZSH_CUSTOM=/path/to/new-custom-folder - -# Which plugins would you like to load? -# Standard plugins can be found in $ZSH/plugins/ -# Custom plugins may be added to $ZSH_CUSTOM/plugins/ -# Example format: plugins=(rails git textmate ruby lighthouse) -# Add wisely, as too many plugins slow down shell startup. -# - -plugins=( - git - zsh-autosuggestions - zsh-syntax-highlighting - dirhistory - history - kubectl - docker - wakatime - golang - fzf - fzf-tab -) - -source $ZSH/oh-my-zsh.sh - -# User configuration - +export SSH_AUTH_SOCK="/run/user/$(id -u)/keyring/ssh" export MANPATH="/usr/local/man:$MANPATH" +export FZF_DEFAULT_OPTS='--height 25% --layout=reverse --border' -# You may need to manually set your language environment +# Claude Code +export CLAUDE_CODE_USE_VERTEX=1 +export CLOUD_ML_REGION=us-east5 +export ANTHROPIC_VERTEX_PROJECT_ID=$GCP_PRODUCT_ID -## SSH auth -export SSH_AUTH_SOCK=/run/user/1000/keyring/ssh +# === Zinit === +ZINIT_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/zinit/zinit.git" +if [ ! -d "$ZINIT_HOME" ]; then + mkdir -p "$(dirname "$ZINIT_HOME")" + git clone https://github.com/zdharma-continuum/zinit.git "$ZINIT_HOME" +fi +source "${ZINIT_HOME}/zinit.zsh" +# OMZ core libs +zinit snippet OMZL::async_prompt.zsh +zinit snippet OMZL::git.zsh +zinit snippet OMZL::prompt_info_functions.zsh +zinit snippet OMZL::theme-and-appearance.zsh +zinit snippet OMZL::key-bindings.zsh +zinit snippet OMZL::clipboard.zsh +zinit snippet OMZT::robbyrussell -# export LANG=en_US.UTF-8 +# Plugins +zinit light zsh-users/zsh-autosuggestions +zinit light zsh-users/zsh-syntax-highlighting +zinit light Aloxaf/fzf-tab -# Preferred editor for local and remote sessions -# if [[ -n $SSH_CONNECTION ]]; then -# export EDITOR='vim' -# else -# export EDITOR='mvim' -# fi +# OMZ plugin snippets for completions and aliases +zinit snippet OMZP::git +zinit snippet OMZP::kubectl +zinit snippet OMZP::golang -# Completion settings +# Docker completions (plugin has a subdirectory, needs ice) +zinit ice as"completion" +zinit snippet OMZP::docker/completions/_docker + +# Wakatime (separate repo, not a standard OMZ plugin) +zinit light sobolevn/wakatime-zsh-plugin + +# === Completions === +autoload -Uz compinit && compinit +zinit cdreplay -q + +CASE_SENSITIVE="true" zstyle ':completion:*' matcher-list 'm:{a-z}={A-Za-z}' zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" zstyle ':completion:*' menu no zstyle ':fzf-tab:complete:cd:*' fzf-preview 'ls --color $realpath' zstyle ':fzf-tab:complete:__zoxide_z:*' fzf-preview 'ls --color $realpath' -# Compilation flags -# export ARCHFLAGS="-arch x86_64" - -# Utilities for toolbox -#function _toolbox_code() { - #if [ -f /run/.containerenv ] && [ -f /run/.toolboxenv ]; then - #if cat /run/.containerenv | sed -n '2 p' | awk -F '"' 'NF>2{print $2}' | grep $1; -#alias toolbox-code='function _toolbox_code(){if [ -f /run/.containerenv ] && [ -f /run/.toolboxenv ]; then - -# Set personal aliases, overriding those provided by oh-my-zsh libs, -# plugins, and themes. Aliases can be placed here, though oh-my-zsh -# users are encouraged to define aliases within the ZSH_CUSTOM folder. -# For a full list of active aliases, run `alias`. -# -# Example aliases -# alias zshconfig="mate ~/.zshrc" -# alias ohmyzsh="mate ~/.oh-my-zsh" -# - -## Custom Functions -znew() { - local layout_name="$1" - local tab_name="$2" - local folder_name="$3" - - zellij action new-tab --layout "$layout_name" --name "$tab_name" --cwd "$folder_name" -} - - -export FZF_DEFAULT_OPTS='--height 25% --layout=reverse --border' - -alias work-git='git config user.email "avinal@redhat.com"' -# eval "$(starship init zsh)" -eval "$(zoxide init zsh)" -# eval "$(fzf --zsh)" -eval "$(atuin init zsh)" - - - +# === Tool Initialization === eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)" -. "$HOME/.atuin/bin/env" +export NVM_DIR="$HOME/.nvm" +[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" +[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" + +# Atuin env (adds ~/.atuin/bin to PATH) +[ -f "$HOME/.atuin/bin/env" ] && . "$HOME/.atuin/bin/env" + +eval "$(zoxide init zsh)" +unalias zi 2>/dev/null; alias zi='__zoxide_zi' +eval "$(atuin init zsh)" + +# Atuin as autosuggestion strategy (must be after atuin init) +export ZSH_AUTOSUGGEST_STRATEGY=(atuin history completion) + +# Accept autosuggestion word-by-word with Ctrl+Right +bindkey '^[[1;5C' forward-word + +# === Functions === +znew() { + zellij action new-tab --layout "$1" --name "$2" --cwd "$3" +} + +# === Aliases === +alias work-git='git config user.email "avinal@redhat.com"' diff --git a/.config/dunst/dunstrc b/archive/.config/dunst/dunstrc similarity index 100% rename from .config/dunst/dunstrc rename to archive/.config/dunst/dunstrc diff --git a/.config/environment.d/sway.conf b/archive/.config/environment.d/sway.conf similarity index 100% rename from .config/environment.d/sway.conf rename to archive/.config/environment.d/sway.conf diff --git a/.config/nvim/.stylua.toml b/archive/.config/nvim/.stylua.toml similarity index 100% rename from .config/nvim/.stylua.toml rename to archive/.config/nvim/.stylua.toml diff --git a/.config/nvim/LICENSE b/archive/.config/nvim/LICENSE similarity index 100% rename from .config/nvim/LICENSE rename to archive/.config/nvim/LICENSE diff --git a/.config/nvim/init.lua b/archive/.config/nvim/init.lua similarity index 100% rename from .config/nvim/init.lua rename to archive/.config/nvim/init.lua diff --git a/.config/nvim/lazy-lock.json b/archive/.config/nvim/lazy-lock.json similarity index 100% rename from .config/nvim/lazy-lock.json rename to archive/.config/nvim/lazy-lock.json diff --git a/.config/nvim/lua/custom/plugins/colorizer.lua b/archive/.config/nvim/lua/custom/plugins/colorizer.lua similarity index 100% rename from .config/nvim/lua/custom/plugins/colorizer.lua rename to archive/.config/nvim/lua/custom/plugins/colorizer.lua diff --git a/.config/nvim/lua/custom/plugins/init.lua b/archive/.config/nvim/lua/custom/plugins/init.lua similarity index 100% rename from .config/nvim/lua/custom/plugins/init.lua rename to archive/.config/nvim/lua/custom/plugins/init.lua diff --git a/.config/nvim/lua/custom/plugins/tailwind.lua b/archive/.config/nvim/lua/custom/plugins/tailwind.lua similarity index 100% rename from .config/nvim/lua/custom/plugins/tailwind.lua rename to archive/.config/nvim/lua/custom/plugins/tailwind.lua diff --git a/.config/nvim/lua/custom/plugins/themes.lua b/archive/.config/nvim/lua/custom/plugins/themes.lua similarity index 100% rename from .config/nvim/lua/custom/plugins/themes.lua rename to archive/.config/nvim/lua/custom/plugins/themes.lua diff --git a/.config/nvim/lua/keymaps.lua b/archive/.config/nvim/lua/keymaps.lua similarity index 100% rename from .config/nvim/lua/keymaps.lua rename to archive/.config/nvim/lua/keymaps.lua diff --git a/.config/nvim/lua/kickstart/health.lua b/archive/.config/nvim/lua/kickstart/health.lua similarity index 100% rename from .config/nvim/lua/kickstart/health.lua rename to archive/.config/nvim/lua/kickstart/health.lua diff --git a/.config/nvim/lua/kickstart/plugins/autopairs.lua b/archive/.config/nvim/lua/kickstart/plugins/autopairs.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/autopairs.lua rename to archive/.config/nvim/lua/kickstart/plugins/autopairs.lua diff --git a/.config/nvim/lua/kickstart/plugins/cmp.lua b/archive/.config/nvim/lua/kickstart/plugins/cmp.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/cmp.lua rename to archive/.config/nvim/lua/kickstart/plugins/cmp.lua diff --git a/.config/nvim/lua/kickstart/plugins/conform.lua b/archive/.config/nvim/lua/kickstart/plugins/conform.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/conform.lua rename to archive/.config/nvim/lua/kickstart/plugins/conform.lua diff --git a/.config/nvim/lua/kickstart/plugins/debug.lua b/archive/.config/nvim/lua/kickstart/plugins/debug.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/debug.lua rename to archive/.config/nvim/lua/kickstart/plugins/debug.lua diff --git a/.config/nvim/lua/kickstart/plugins/gitsigns.lua b/archive/.config/nvim/lua/kickstart/plugins/gitsigns.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/gitsigns.lua rename to archive/.config/nvim/lua/kickstart/plugins/gitsigns.lua diff --git a/.config/nvim/lua/kickstart/plugins/indent_line.lua b/archive/.config/nvim/lua/kickstart/plugins/indent_line.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/indent_line.lua rename to archive/.config/nvim/lua/kickstart/plugins/indent_line.lua diff --git a/.config/nvim/lua/kickstart/plugins/lint.lua b/archive/.config/nvim/lua/kickstart/plugins/lint.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/lint.lua rename to archive/.config/nvim/lua/kickstart/plugins/lint.lua diff --git a/.config/nvim/lua/kickstart/plugins/lspconfig.lua b/archive/.config/nvim/lua/kickstart/plugins/lspconfig.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/lspconfig.lua rename to archive/.config/nvim/lua/kickstart/plugins/lspconfig.lua diff --git a/.config/nvim/lua/kickstart/plugins/mini.lua b/archive/.config/nvim/lua/kickstart/plugins/mini.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/mini.lua rename to archive/.config/nvim/lua/kickstart/plugins/mini.lua diff --git a/.config/nvim/lua/kickstart/plugins/neo-tree.lua b/archive/.config/nvim/lua/kickstart/plugins/neo-tree.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/neo-tree.lua rename to archive/.config/nvim/lua/kickstart/plugins/neo-tree.lua diff --git a/.config/nvim/lua/kickstart/plugins/telescope.lua b/archive/.config/nvim/lua/kickstart/plugins/telescope.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/telescope.lua rename to archive/.config/nvim/lua/kickstart/plugins/telescope.lua diff --git a/.config/nvim/lua/kickstart/plugins/todo-comments.lua b/archive/.config/nvim/lua/kickstart/plugins/todo-comments.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/todo-comments.lua rename to archive/.config/nvim/lua/kickstart/plugins/todo-comments.lua diff --git a/.config/nvim/lua/kickstart/plugins/treesitter.lua b/archive/.config/nvim/lua/kickstart/plugins/treesitter.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/treesitter.lua rename to archive/.config/nvim/lua/kickstart/plugins/treesitter.lua diff --git a/.config/nvim/lua/kickstart/plugins/which-key.lua b/archive/.config/nvim/lua/kickstart/plugins/which-key.lua similarity index 100% rename from .config/nvim/lua/kickstart/plugins/which-key.lua rename to archive/.config/nvim/lua/kickstart/plugins/which-key.lua diff --git a/.config/nvim/lua/lazy-bootstrap.lua b/archive/.config/nvim/lua/lazy-bootstrap.lua similarity index 100% rename from .config/nvim/lua/lazy-bootstrap.lua rename to archive/.config/nvim/lua/lazy-bootstrap.lua diff --git a/.config/nvim/lua/lazy-plugins.lua b/archive/.config/nvim/lua/lazy-plugins.lua similarity index 100% rename from .config/nvim/lua/lazy-plugins.lua rename to archive/.config/nvim/lua/lazy-plugins.lua diff --git a/.config/nvim/lua/options.lua b/archive/.config/nvim/lua/options.lua similarity index 100% rename from .config/nvim/lua/options.lua rename to archive/.config/nvim/lua/options.lua diff --git a/.config/rofi/config.rasi b/archive/.config/rofi/config.rasi similarity index 100% rename from .config/rofi/config.rasi rename to archive/.config/rofi/config.rasi diff --git a/.config/rofi/themes/cherry.rasi b/archive/.config/rofi/themes/cherry.rasi similarity index 100% rename from .config/rofi/themes/cherry.rasi rename to archive/.config/rofi/themes/cherry.rasi diff --git a/.config/rofi/themes/paper-float.rasi b/archive/.config/rofi/themes/paper-float.rasi similarity index 100% rename from .config/rofi/themes/paper-float.rasi rename to archive/.config/rofi/themes/paper-float.rasi diff --git a/.config/rofi/themes/squared.rasi b/archive/.config/rofi/themes/squared.rasi similarity index 100% rename from .config/rofi/themes/squared.rasi rename to archive/.config/rofi/themes/squared.rasi diff --git a/.config/starship.toml b/archive/.config/starship.toml similarity index 100% rename from .config/starship.toml rename to archive/.config/starship.toml diff --git a/.config/sway/config b/archive/.config/sway/config similarity index 100% rename from .config/sway/config rename to archive/.config/sway/config diff --git a/.config/sway/config.d/60-bindings-screenshot.conf b/archive/.config/sway/config.d/60-bindings-screenshot.conf similarity index 100% rename from .config/sway/config.d/60-bindings-screenshot.conf rename to archive/.config/sway/config.d/60-bindings-screenshot.conf diff --git a/.config/sway/volume-notification b/archive/.config/sway/volume-notification similarity index 100% rename from .config/sway/volume-notification rename to archive/.config/sway/volume-notification diff --git a/.config/waybar/config.jsonc b/archive/.config/waybar/config.jsonc similarity index 100% rename from .config/waybar/config.jsonc rename to archive/.config/waybar/config.jsonc diff --git a/.config/waybar/scripts/dunst.sh b/archive/.config/waybar/scripts/dunst.sh similarity index 100% rename from .config/waybar/scripts/dunst.sh rename to archive/.config/waybar/scripts/dunst.sh diff --git a/.config/waybar/scripts/get-weather.sh b/archive/.config/waybar/scripts/get-weather.sh similarity index 100% rename from .config/waybar/scripts/get-weather.sh rename to archive/.config/waybar/scripts/get-weather.sh diff --git a/.config/waybar/scripts/wakatime.sh b/archive/.config/waybar/scripts/wakatime.sh similarity index 100% rename from .config/waybar/scripts/wakatime.sh rename to archive/.config/waybar/scripts/wakatime.sh diff --git a/.config/waybar/style.css b/archive/.config/waybar/style.css similarity index 100% rename from .config/waybar/style.css rename to archive/.config/waybar/style.css diff --git a/themes/apply-theme.sh b/themes/apply-theme.sh new file mode 100755 index 0000000..9ad31fc --- /dev/null +++ b/themes/apply-theme.sh @@ -0,0 +1,301 @@ +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +DOTFILES_DIR="$(dirname "$SCRIPT_DIR")" + +usage() { + echo "Usage: $0 " + echo "" + echo "Available palettes:" + for f in "$SCRIPT_DIR/palettes/"*.sh; do + basename "$f" .sh + done + exit 1 +} + +[[ $# -lt 1 ]] && usage + +PALETTE="$SCRIPT_DIR/palettes/$1.sh" +[[ ! -f "$PALETTE" ]] && echo "Palette '$1' not found." && usage + +source "$PALETTE" + +strip() { echo "${1#\#}"; } + +# RGB decimal from hex (for zellij) +rgb() { + local hex="${1#\#}" + printf "%d %d %d" "0x${hex:0:2}" "0x${hex:2:2}" "0x${hex:4:2}" +} + +echo "Applying theme: $THEME_NAME" +echo "================================" + +# --- Ghostty theme --- +GHOSTTY_THEME="$DOTFILES_DIR/.config/ghostty/themes/$THEME_NAME" +cat > "$GHOSTTY_THEME" << EOF +palette = 0=$BLACK +palette = 1=$RED +palette = 2=$GREEN +palette = 3=$YELLOW +palette = 4=$BLUE +palette = 5=$MAGENTA +palette = 6=$CYAN +palette = 7=$WHITE + +palette = 8=$BRIGHT_BLACK +palette = 9=$BRIGHT_RED +palette = 10=$BRIGHT_GREEN +palette = 11=$BRIGHT_YELLOW +palette = 12=$BRIGHT_BLUE +palette = 13=$BRIGHT_MAGENTA +palette = 14=$BRIGHT_CYAN +palette = 15=$BRIGHT_WHITE + +background = $BG +foreground = $FG +cursor-color = $CURSOR +cursor-text = $BG +selection-background = $SELECTION_BG +selection-foreground = $SELECTION_FG +EOF + +# Update ghostty config to reference this theme +sed -i "s/^theme = .*/theme = \"$THEME_NAME\"/" "$DOTFILES_DIR/.config/ghostty/config" +echo "[ok] Ghostty theme: $GHOSTTY_THEME" + +# --- Helix --- +sed -i "s/^theme = .*/theme = \"$HELIX_THEME\"/" "$DOTFILES_DIR/.config/helix/config.toml" +echo "[ok] Helix theme: $HELIX_THEME" + +# --- Alacritty --- +ALACRITTY="$DOTFILES_DIR/.config/alacritty/alacritty.toml" +if [[ -f "$ALACRITTY" ]]; then + cat > "$ALACRITTY" << EOF +[window] +padding = { x = 7, y = 5 } +dynamic_padding = true +dynamic_title = false + +[font] +normal = { family = "Iosevka Term", style = "Regular" } +bold = { family = "Iosevka Term", style = "Bold" } +italic = { family = "Iosevka Term", style = "Italic" } +bold_italic = { family = "Iosevka Term", style = "Bold Italic" } +size = 14 + +[colors.primary] +background = "$BG" +foreground = "$FG" + +[colors.cursor] +text = "$BG" +cursor = "$CURSOR" + +[colors.selection] +text = "$SELECTION_FG" +background = "$SELECTION_BG" + +[colors.normal] +black = "$BLACK" +red = "$RED" +green = "$GREEN" +yellow = "$YELLOW" +blue = "$BLUE" +magenta = "$MAGENTA" +cyan = "$CYAN" +white = "$WHITE" + +[colors.bright] +black = "$BRIGHT_BLACK" +red = "$BRIGHT_RED" +green = "$BRIGHT_GREEN" +yellow = "$BRIGHT_YELLOW" +blue = "$BRIGHT_BLUE" +magenta = "$BRIGHT_MAGENTA" +cyan = "$BRIGHT_CYAN" +white = "$BRIGHT_WHITE" + +[cursor] +style = { shape = "Underline", blinking = "On" } + +[selection] +save_to_clipboard = true +EOF + echo "[ok] Alacritty colors updated" +fi + +# --- Lazygit --- +LAZYGIT="$DOTFILES_DIR/.config/lazygit/config.yml" +if [[ -f "$LAZYGIT" ]]; then + python3 -c " +import sys, re + +config = open('$LAZYGIT').read() + +new_theme = ''' theme: + activeBorderColor: + - \"$ACCENT\" + - bold + inactiveBorderColor: + - \"$MUTED\" + selectedLineBgColor: + - \"$SURFACE\" + optionsTextColor: + - \"$CYAN\" + unstagedChangesColor: + - \"$RED\" + defaultFgColor: + - \"$FG\"''' + +config = re.sub( + r' theme:.*?(?=\n\w|\ngit:|\ncustomCommands:|\nos:)', + new_theme + '\n', + config, + flags=re.DOTALL +) +open('$LAZYGIT', 'w').write(config) +" + echo "[ok] Lazygit theme updated" +fi + +# --- Zellij --- +ZELLIJ="$DOTFILES_DIR/.config/zellij/config.kdl" +if [[ -f "$ZELLIJ" ]]; then + python3 -c " +import re + +config = open('$ZELLIJ').read() + +new_theme = '''themes { + $THEME_NAME { + text_unselected { + base $(rgb "$FG") + background $(rgb "$SURFACE") + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$CYAN") + emphasis_2 $(rgb "$GREEN") + emphasis_3 $(rgb "$MAGENTA") + } + text_selected { + base $(rgb "$BRIGHT_WHITE") + background $(rgb "$SELECTION_BG") + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$CYAN") + emphasis_2 $(rgb "$GREEN") + emphasis_3 $(rgb "$MAGENTA") + } + ribbon_selected { + base $(rgb "$BG") + background $(rgb "$GREEN") + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$YELLOW") + emphasis_2 $(rgb "$MAGENTA") + emphasis_3 $(rgb "$BLUE") + } + ribbon_unselected { + base $(rgb "$BG") + background $(rgb "$WHITE") + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$FG") + emphasis_2 $(rgb "$BLUE") + emphasis_3 $(rgb "$MAGENTA") + } + table_title { + base $(rgb "$GREEN") + background 0 + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$CYAN") + emphasis_2 $(rgb "$GREEN") + emphasis_3 $(rgb "$MAGENTA") + } + table_cell_selected { + base $(rgb "$BRIGHT_WHITE") + background $(rgb "$SELECTION_BG") + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$CYAN") + emphasis_2 $(rgb "$GREEN") + emphasis_3 $(rgb "$MAGENTA") + } + table_cell_unselected { + base $(rgb "$FG") + background $(rgb "$SURFACE") + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$CYAN") + emphasis_2 $(rgb "$GREEN") + emphasis_3 $(rgb "$MAGENTA") + } + list_selected { + base $(rgb "$BRIGHT_WHITE") + background $(rgb "$SELECTION_BG") + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$CYAN") + emphasis_2 $(rgb "$GREEN") + emphasis_3 $(rgb "$MAGENTA") + } + list_unselected { + base $(rgb "$FG") + background $(rgb "$SURFACE") + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$CYAN") + emphasis_2 $(rgb "$GREEN") + emphasis_3 $(rgb "$MAGENTA") + } + frame_selected { + base $(rgb "$GREEN") + background 0 + emphasis_0 $(rgb "$RED") + emphasis_1 $(rgb "$CYAN") + emphasis_2 $(rgb "$MAGENTA") + emphasis_3 0 + } + frame_highlight { + base $(rgb "$YELLOW") + background 0 + emphasis_0 $(rgb "$YELLOW") + emphasis_1 $(rgb "$YELLOW") + emphasis_2 $(rgb "$YELLOW") + emphasis_3 $(rgb "$YELLOW") + } + exit_code_success { + base $(rgb "$GREEN") + background 0 + emphasis_0 $(rgb "$CYAN") + emphasis_1 $(rgb "$SURFACE") + emphasis_2 $(rgb "$MAGENTA") + emphasis_3 $(rgb "$BLUE") + } + exit_code_error { + base $(rgb "$RED") + background 0 + emphasis_0 $(rgb "$YELLOW") + emphasis_1 0 + emphasis_2 0 + emphasis_3 0 + } + multiplayer_user_colors { + player_1 $(rgb "$MAGENTA") + player_2 $(rgb "$BLUE") + player_3 0 + player_4 $(rgb "$YELLOW") + player_5 $(rgb "$CYAN") + player_6 0 + player_7 $(rgb "$RED") + player_8 0 + player_9 0 + player_10 0 + } + } +}''' + +config = re.sub(r'themes \{.*?\n\}', new_theme, config, flags=re.DOTALL) +config = re.sub(r'theme \".*?\"', 'theme \"$THEME_NAME\"', config) +open('$ZELLIJ', 'w').write(config) +" + echo "[ok] Zellij theme: $THEME_NAME" +fi + +echo "================================" +echo "Done! Restart your tools to see changes." +echo "Helix theme is set in config, no restart needed for new files." diff --git a/themes/palettes/vim_dark_high_contrast.sh b/themes/palettes/vim_dark_high_contrast.sh new file mode 100644 index 0000000..68366cc --- /dev/null +++ b/themes/palettes/vim_dark_high_contrast.sh @@ -0,0 +1,50 @@ +# vim_dark_high_contrast - from Helix editor theme +# Source: /usr/lib64/helix/runtime/themes/vim_dark_high_contrast.toml + +THEME_NAME="vim_dark_high_contrast" +HELIX_THEME="vim_dark_high_contrast" + +# Base +BG="#000000" +FG="#c1c9d2" +CURSOR="#c1c9d2" +SELECTION_BG="#3e4043" +SELECTION_FG="#ffffff" + +# Normal colors +BLACK="#000000" +RED="#ed5f74" +GREEN="#1ea672" +YELLOW="#d97917" +BLUE="#688ef1" +MAGENTA="#c96ed0" +CYAN="#3a97d4" +WHITE="#e3e8ee" + +# Bright colors +BRIGHT_BLACK="#697386" +BRIGHT_RED="#fbb5b2" +BRIGHT_GREEN="#85d996" +BRIGHT_YELLOW="#efc078" +BRIGHT_BLUE="#9fcdff" +BRIGHT_MAGENTA="#f0b4e4" +BRIGHT_CYAN="#7fd3ed" +BRIGHT_WHITE="#ffffff" + +# Dark/muted variants (for backgrounds, subtle highlights) +DARK_RED="#742833" +DARK_GREEN="#00643c" +DARK_YELLOW="#6e3500" +DARK_BLUE="#2c4074" +DARK_MAGENTA="#602864" +DARK_CYAN="#144c71" +DARK_WHITE="#3e4043" + +# Semantic +ACCENT="$CYAN" +SUCCESS="$GREEN" +WARNING="$YELLOW" +ERROR="$RED" +INFO="$BLUE" +MUTED="$BRIGHT_BLACK" +SURFACE="$DARK_WHITE"