From 42e56f83208f32f2e0b10066740e9e0ea1346897 Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Fri, 19 Sep 2025 23:16:07 +0000 Subject: [PATCH 01/15] neovim light theme --- config/linux-dev/nvim/colors/invero.lua | 97 ++++++++++++++++ config/linux-dev/nvim/lazy-lock.json | 36 +++--- config/linux-dev/nvim/lua/config/lazy.lua | 9 +- config/linux-dev/nvim/lua/config/options.lua | 9 +- .../nvim/lua/plugins/colorscheme.lua | 11 -- config/linux-dev/nvim/lua/plugins/lsp.lua | 12 +- .../linux-dev/nvim/lua/plugins/neo-tree.lua | 108 +++++++++++++----- .../linux-dev/nvim/lua/plugins/telescope.lua | 9 +- config/linux-dev/nvim/lua/utils/palette.lua | 51 +++++++++ 9 files changed, 268 insertions(+), 74 deletions(-) create mode 100644 config/linux-dev/nvim/colors/invero.lua delete mode 100644 config/linux-dev/nvim/lua/plugins/colorscheme.lua create mode 100644 config/linux-dev/nvim/lua/utils/palette.lua diff --git a/config/linux-dev/nvim/colors/invero.lua b/config/linux-dev/nvim/colors/invero.lua new file mode 100644 index 0000000..aad10f2 --- /dev/null +++ b/config/linux-dev/nvim/colors/invero.lua @@ -0,0 +1,97 @@ +-- colors/inStatusLinevero.lua + +local palette = require("utils.palette") + +-- reset highlights +vim.cmd("hi clear") +if vim.fn.exists("syntax_on") == 1 then + vim.cmd("syntax reset") +end + +vim.opt.background = "light" +vim.g.colors_name = "invero" + +local colors = { + -- neutrals + base = palette[255], -- #eeeeee, white (bg) + surface = palette[253], -- #dadada, light gray (cursor line bg) + text = palette[238], -- #444444, dark gray (terminal fg) + muted = palette[247], -- #9e9e9e, gray (comments, line numbers, dividers) + accent = palette[27], -- #005fff, standard blue (cursor, dirs) + accent_light = palette[153], -- #afd7ff light sky blue (selection bg) + syntax = palette[60], -- #5f5f87, slate / gray-blue (syntax fg) + red = palette[196], -- #ff0000, red + orange = palette[166], -- #d75f00, orange + orange_light = palette[180], -- #ffd7af, orange light + yellow = palette[184], -- #ffd75f, yellow + green = palette[34], -- #00af5f, green + none = "NONE" -- no color / transparent +} + +local theme = { + Normal = { fg = colors.text, bg = colors.none }, + LineNr = { fg = colors.muted }, + CursorLineNr = { fg = colors.accent, bold = true }, + CursorLine = { bg = colors.surface }, + Visual = { bg = colors.accent_light }, + Search = { fg = colors.orange }, + CurSearch = { fg = colors.base, bg = colors.orange, bold = true }, + IncSearch = { fg = colors.base, bg = colors.orange, bold = true }, + WinSeparator = { fg = colors.muted }, + StatusLine = { fg = colors.text, bg = colors.none }, + TabLine = { fg = colors.red }, + TabLineSel = { fg = colors.red, bold = true }, + TabLineFill = { bg = colors.red }, + + -- Telescope + TelescopeBorder = { fg = colors.muted }, + TelescopePromptPrefix = { fg = colors.accent }, + TelescopeSelection = { bg = colors.surface }, + + -- Neo-tree + NeoTreeDirectoryName = { fg = colors.accent }, + NeoTreeFileName = { fg = colors.text }, + -- NeoTreeNormal = { bg = colors.muted }, + -- NeoTreeNormalNC = { bg = colors.muted }, +} + +-- apply theme groups +for group, opts in pairs(theme) do + vim.api.nvim_set_hl(0, group, opts) +end + +-- apply Tree-sitter defaults: all base4, comments special-case +local highlights = vim.fn.getcompletion("@", "highlight") +for _, hl in ipairs(highlights) do + vim.api.nvim_set_hl(0, hl, { fg = colors.syntax }) +end + +vim.api.nvim_set_hl(0, "@comment", { fg = colors.muted, italic = true }) + +vim.api.nvim_create_autocmd({ "WinEnter" }, { + callback = function() vim.wo.cursorline = true end, +}) +vim.api.nvim_create_autocmd({ "WinLeave" }, { + callback = function() vim.wo.cursorline = false end, +}) + +-- TEST >> + + +vim.opt.laststatus = 3 +vim.opt.fillchars:append({ stl = '─', stlnc = '─' }) + +-- vim.o.statusline = " " +-- vim.api.nvim_set_hl(0, "WinSeparator", { bg = colors.surface }) -- vertical bg +-- vim.api.nvim_set_hl(0, "StatusLine", { bg = colors.surface }) -- horizontal bg +-- vim.api.nvim_set_hl(0, "StatusLineNC", { bg = colors.surface }) -- horizontal bg + +-- vim.api.nvim_create_autocmd("FileType", { +-- pattern = "neo-tree", +-- callback = function(ev) +-- -- force your own winhighlight +-- vim.api.nvim_win_set_option(ev.win, "winhighlight", "WinSeparator:WinSeparator") +-- -- force fillchars +-- vim.wo[ev.win].fillchars = "vert:│,horiz:─,horizup:┴,horizdown:┬,vertleft:├,vertright:┤,verthoriz:┼" +-- end, +-- }) diff --git a/config/linux-dev/nvim/lazy-lock.json b/config/linux-dev/nvim/lazy-lock.json index af593bc..13a1be8 100644 --- a/config/linux-dev/nvim/lazy-lock.json +++ b/config/linux-dev/nvim/lazy-lock.json @@ -1,24 +1,22 @@ { - "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "conform.nvim": { "branch": "master", "commit": "d28ccf945374edd9f1c34a82f6c22261dbd8ab98" }, - "fidget.nvim": { "branch": "main", "commit": "e2a175c2abe2d4f65357da1c98c59a5cfb2b543f" }, - "harpoon": { "branch": "harpoon2", "commit": "a84ab829eaf3678b586609888ef52f7779102263" }, + "cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" }, + "cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" }, + "conform.nvim": { "branch": "master", "commit": "b4aab989db276993ea5dcb78872be494ce546521" }, + "fidget.nvim": { "branch": "main", "commit": "4d5858bd4c471c895060e1b9f3575f1551184dc5" }, + "harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" }, "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "4d0e5b49363cac187326998b96aa6a2884e0e89b" }, - "mason.nvim": { "branch": "main", "commit": "e2f7f9044ec30067bc11800a9e266664b88cda22" }, - "neo-tree.nvim": { "branch": "main", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" }, - "nui.nvim": { "branch": "main", "commit": "b58e2bfda5cea347c9d58b7f11cf3012c7b3953f" }, - "nvim-autopairs": { "branch": "master", "commit": "ee297f215e95a60b01fde33275cc3c820eddeebe" }, - "nvim-cmp": { "branch": "main", "commit": "f17d9b4394027ff4442b298398dfcaab97e40c4f" }, - "nvim-lspconfig": { "branch": "master", "commit": "bc6ada4b0892b7f10852c0b8ca7209fd39a6d754" }, - "nvim-treesitter": { "branch": "master", "commit": "7dc8aabe86db8c2f23520e8334f7584f83e84342" }, - "nvim-ts-autotag": { "branch": "main", "commit": "1cca23c9da708047922d3895a71032bc0449c52d" }, - "nvim-web-devicons": { "branch": "master", "commit": "e87554285f581047b1bf236794b0eb812b444b87" }, - "plenary.nvim": { "branch": "master", "commit": "2d9b06177a975543726ce5c73fca176cedbffe9d" }, - "rose-pine": { "branch": "main", "commit": "91548dca53b36dbb9d36c10f114385f759731be1" }, - "schemastore.nvim": { "branch": "main", "commit": "f8d6e9068861888651f68958521b1958314aac41" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "25c11854aa25558ee6c03432edfa0df0217324be" }, + "mason.nvim": { "branch": "main", "commit": "d66c60e17dd6fd8165194b1d14d21f7eb2c1697a" }, + "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, + "nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" }, + "nvim-lspconfig": { "branch": "master", "commit": "d9879110d0422a566fa01d732556f4d5515e1738" }, + "nvim-tree.lua": { "branch": "master", "commit": "321bc61580fd066b76861c32de3319c3a6d089e7" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, + "nvim-web-devicons": { "branch": "master", "commit": "6e51ca170563330e063720449c21f43e27ca0bc1" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "schemastore.nvim": { "branch": "main", "commit": "0fccf9234acfd981867cbd42c4101829e6808790" }, + "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" } } diff --git a/config/linux-dev/nvim/lua/config/lazy.lua b/config/linux-dev/nvim/lua/config/lazy.lua index 26e5007..81c94d1 100644 --- a/config/linux-dev/nvim/lua/config/lazy.lua +++ b/config/linux-dev/nvim/lua/config/lazy.lua @@ -8,4 +8,11 @@ if not (vim.uv or vim.loop).fs_stat(lazypath) then end ---@diagnostic disable-next-line: undefined-field vim.opt.rtp:prepend(lazypath) -require('lazy').setup('plugins') +require("lazy").setup({ + spec = { { import = "plugins" } }, + ui = { + backdrop = 100, + border = "rounded" + }, +}) + diff --git a/config/linux-dev/nvim/lua/config/options.lua b/config/linux-dev/nvim/lua/config/options.lua index 3d15a57..d9ceca3 100644 --- a/config/linux-dev/nvim/lua/config/options.lua +++ b/config/linux-dev/nvim/lua/config/options.lua @@ -8,14 +8,12 @@ vim.g.have_nerd_font = true -- Add vertical line -- vim.opt.colorcolumn = "100" +-- vim.opt.laststatus = 3 vim.opt.signcolumn = "no" -- Enable TrueColor vim.opt.termguicolors = true --- Disable Neovim background -vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) -vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" }) -- Scroll lines/columns vim.opt.mousescroll = "hor:1,ver:1" @@ -42,7 +40,7 @@ vim.opt.relativenumber = true vim.opt.mouse = "a" -- Full path on status line -vim.opt.statusline = "%F%m%r%h%w%=%l,%c %P" +vim.opt.statusline = "> %F%m%r%h%w %= %l,%c %P " -- Sync clipboard between OS and Neovim vim.schedule(function() @@ -94,3 +92,6 @@ vim.diagnostic.config({ [vim.diagnostic.severity.HINT] = 1, } }) + +-- Now load the colorscheme (this will trigger the autocmd) +vim.cmd.colorscheme("invero") diff --git a/config/linux-dev/nvim/lua/plugins/colorscheme.lua b/config/linux-dev/nvim/lua/plugins/colorscheme.lua deleted file mode 100644 index e1d5dc5..0000000 --- a/config/linux-dev/nvim/lua/plugins/colorscheme.lua +++ /dev/null @@ -1,11 +0,0 @@ -return { - "rose-pine/neovim", - name = "rose-pine", - config = function() - require("rose-pine").setup({ - disable_background = true, - disable_float_background = true, - }) - vim.cmd("colorscheme rose-pine") - end, -} diff --git a/config/linux-dev/nvim/lua/plugins/lsp.lua b/config/linux-dev/nvim/lua/plugins/lsp.lua index 8da5003..4fbd4eb 100644 --- a/config/linux-dev/nvim/lua/plugins/lsp.lua +++ b/config/linux-dev/nvim/lua/plugins/lsp.lua @@ -21,14 +21,20 @@ return { "neovim/nvim-lspconfig", dependencies = { - { "williamboman/mason.nvim", config = true }, - "williamboman/mason-lspconfig.nvim", + { "williamboman/mason.nvim", version = "1.8.0", config = true }, + { "williamboman/mason-lspconfig.nvim", version = "1.31.0"}, { "j-hui/fidget.nvim", opts = {} }, -- side fidget showing status "hrsh7th/cmp-nvim-lsp", -- completion "b0o/schemastore.nvim", }, config = function() - require("mason").setup() + require("mason").setup({ + ui = { + border = "rounded", + backdrop = 0 + }, + }) + require("mason-lspconfig").setup() local lspconfig = require("lspconfig") diff --git a/config/linux-dev/nvim/lua/plugins/neo-tree.lua b/config/linux-dev/nvim/lua/plugins/neo-tree.lua index 93f0cd2..4a2a6d5 100644 --- a/config/linux-dev/nvim/lua/plugins/neo-tree.lua +++ b/config/linux-dev/nvim/lua/plugins/neo-tree.lua @@ -1,33 +1,79 @@ return { - "nvim-neo-tree/neo-tree.nvim", - version = "*", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-tree/nvim-web-devicons", - "MunifTanjim/nui.nvim", - }, - cmd = "Neotree", - keys = { - { "et", ":Neotree position=left toggle", desc = "Explorer Toggle", silent = true }, - { "E", ":Neotree focus", desc = "Explorer Focus", silent = true }, - { "ef", ":Neotree float", desc = "Explorer Float", silent = true }, - { "eb", ":Neotree buffers", desc = "Explorer Buffers", silent = true }, - { "eg", ":Neotree git_status", desc = "Explorer Git", silent = true }, - }, - opts = { - filesystem = { - follow_current_file = { - enabled = true, -- Enable this feature - leave_dirs_open = true, -- Leave directories open when following - }, - filtered_items = { - visible = true, - }, - window = { - mappings = { - ["e"] = "close_window", - }, - }, - }, - }, + "nvim-tree/nvim-tree.lua", + version = "*", + lazy = false, + keys = { + { "et", ":NvimTreeToggle", desc = "Explorer Toggle", silent = true }, + }, + config = function() + require("nvim-tree").setup { + renderer = { + icons = { + show = { + file = false, + folder = false, + folder_arrow = false, + git = false, + modified = false, + hidden = false, + diagnostics = false, + bookmarks = false, + }, + }, + }, + } + end, } + +-- return { +-- "nvim-neo-tree/neo-tree.nvim", +-- version = "*", +-- dependencies = { +-- "nvim-lua/plenary.nvim", +-- "nvim-tree/nvim-web-devicons", +-- "MunifTanjim/nui.nvim", +-- }, +-- cmd = "Neotree", +-- keys = { +-- { "et", ":Neotree position=left toggle", desc = "Explorer Toggle", silent = true }, +-- { "E", ":Neotree focus", desc = "Explorer Focus", silent = true }, +-- { "ef", ":Neotree float", desc = "Explorer Float", silent = true }, +-- { "eb", ":Neotree buffers", desc = "Explorer Buffers", silent = true }, +-- { "eg", ":Neotree git_status", desc = "Explorer Git", silent = true }, +-- }, +-- opts = { +-- event_handlers = { +-- { +-- event = require("neo-tree.ui.events").NEO_TREE_WINDOW_AFTER_OPEN, +-- handler = function(args) +-- if args and args.winid and vim.api.nvim_win_is_valid(args.winid) then +-- vim.api.nvim_win_set_option(args.winid, "colorcolumn", "") +-- vim.api.nvim_win_set_option(args.winid, "signcolumn", "no") +-- end +-- end, +-- }, +-- }, +-- popup_border_style = "single", +-- window = { +-- mappings = { +-- ["e"] = "close_window", +-- }, +-- }, +-- default_component_configs = { +-- icon = { enabled = false }, +-- git_status = { symbols = {}, align = "none" }, +-- name = { trailing_slash = true } +-- }, +-- enable_git_status = false, +-- enable_diagnostics = false, +-- filesystem = { +-- follow_current_file = { +-- enabled = true, -- Enable this feature +-- leave_dirs_open = true, -- Leave directories open when following +-- }, +-- filtered_items = { +-- visible = true, +-- } +-- }, +-- }, +-- } diff --git a/config/linux-dev/nvim/lua/plugins/telescope.lua b/config/linux-dev/nvim/lua/plugins/telescope.lua index d2f9359..5695c71 100644 --- a/config/linux-dev/nvim/lua/plugins/telescope.lua +++ b/config/linux-dev/nvim/lua/plugins/telescope.lua @@ -59,11 +59,10 @@ return { -- Fuzzy Finder (files, lsp, etc) defaults = { layout_strategy = "vertical", layout_config = { - -- vertical = { width = 0.5 } - -- horizontal = { - -- width = 0.9, - -- preview_width = 0.5, - -- }, + width = { 0.95, max = 100 }, + height = 0.95, + preview_cutoff = 1, + preview_height = 0.7 }, mappings = { n = { diff --git a/config/linux-dev/nvim/lua/utils/palette.lua b/config/linux-dev/nvim/lua/utils/palette.lua new file mode 100644 index 0000000..387b4b5 --- /dev/null +++ b/config/linux-dev/nvim/lua/utils/palette.lua @@ -0,0 +1,51 @@ +local function xterm256_palette() + local colors = {} + + -- 0–15: system colors (manual) + local ansi = { + "#000000", -- 0 black + "#d70000", -- 1 red + "#5f8700", -- 2 green + "#af8700", -- 3 yellow/brown + "#005faf", -- 4 blue + "#5f5faf", -- 5 magenta/indigo + "#008787", -- 6 cyan + "#bcbcbc", -- 7 light gray + + "#808080", -- 8 dark gray + "#ff5f5f", -- 9 bright red + "#87d75f", -- 10 bright green + "#ffd700", -- 11 bright yellow + "#5f87d7", -- 12 bright blue + "#8787ff", -- 13 bright magenta + "#5fd7d7", -- 14 bright cyan + "#ffffff", -- 15 white + } + for i, hex in ipairs(ansi) do + colors[i-1] = hex + end + + -- 16–231: 6x6x6 cube + local steps = {0, 95, 135, 175, 215, 255} + local idx = 16 + for r = 1,6 do + for g = 1,6 do + for b = 1,6 do + colors[idx] = string.format("#%02x%02x%02x", steps[r], steps[g], steps[b]) + idx = idx + 1 + end + end + end + + -- 232–255: grayscale + for gray = 0,23 do + local level = 8 + gray * 10 + colors[idx] = string.format("#%02x%02x%02x", level, level, level) + idx = idx + 1 + end + + return colors +end + +return xterm256_palette() + -- 2.45.2 From f4c3f380786810cee724df48a3448e9b77ccb9f1 Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Fri, 19 Sep 2025 23:19:21 +0000 Subject: [PATCH 02/15] linux-dev tmux with divider --- config.json | 2 +- config/linux-dev/tmux | 71 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 config/linux-dev/tmux diff --git a/config.json b/config.json index c032c86..91c7a1c 100644 --- a/config.json +++ b/config.json @@ -87,7 +87,7 @@ }, { "package": "tmux", - "install": "sudo apt install -y tmux" + "link": { "from": "linux-dev/tmux", "to": "~/.tmux.conf" } }, { "package": "nvim", diff --git a/config/linux-dev/tmux b/config/linux-dev/tmux new file mode 100644 index 0000000..cb351ae --- /dev/null +++ b/config/linux-dev/tmux @@ -0,0 +1,71 @@ +# Change the prefix from 'C-b' to 'C-Space' +unbind C-b +set-option -g prefix C-Space +bind-key C-Space send-prefix +set-option -g set-clipboard on + + +#set -g default-terminal "tmux-256color" +#set -as terminal-features ",*:RGB" +set-option -a terminal-features 'xterm-256color:RGB' +set-option -sg escape-time 10 +set-option -g repeat-time 0 +set-option -g focus-events on + +# Set the base index for windows and panes to 1 instead of 0 +set -g base-index 1 +setw -g pane-base-index 1 + +# Increase scrollback buffer size +set -g history-limit 10000 + +# Light theme with transparent background +set -g status-style bg=default,fg='#4c4f69' +set -g status-left '#[fg=blue,bold][#S] ' +set -g status-left-length 50 +set -g status-right '' + +# set -g pane-border-status bottom # or 'bottom' if status is at top +# set -g pane-border-format '─' # This will fill the entire width automatically + +# Window status format - light theme with terminal blue +setw -g window-status-format '#[fg=#6c6f85]#I#[fg=#9ca0b0]:#[fg=#4c4f69]#W#[fg=#9ca0b0]#F' +setw -g window-status-current-format '#[fg=blue,bold]#I#[fg=#9ca0b0]:#[fg=blue,bold]#W#[fg=#9ca0b0]#F' + +# Pane border - light theme +set -g pane-border-style fg='#ccd0da' +set -g pane-active-border-style fg=blue + +# Message text - light theme +set -g message-style bg='#eff1f5',fg=blue + +# Copy mode colors - light theme +setw -g mode-style bg='#acb0be',fg='#4c4f69' + +# Enable mouse support +setw -g mouse on + +# Fix scroll. Use N3 instead of N1 to make it quicker +bind-key -T copy-mode-vi WheelUpPane send -N1 -X scroll-up +bind-key -T copy-mode-vi WheelDownPane send -N1 -X scroll-down + +# Update terminal titles +set-option -g set-titles off + +# Use vim keybindings in copy mode +setw -g mode-keys vi + +# Setup 'v' to begin selection as in Vim +bind -T copy-mode-vi v send-keys -X begin-selection + +# Pane navigation using vim-like keys +bind -r k select-pane -U +bind -r j select-pane -D +bind -r h select-pane -L +bind -r l select-pane -R + +# Automatically renumber windows when one is closed +set -g renumber-windows on + +# Reload tmux config +bind r source-file ~/.tmux.conf \; display "Reloaded!" -- 2.45.2 From dd738ade403769650a7cae756cd4e2d3a3fa118c Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Thu, 25 Sep 2025 07:22:36 +0000 Subject: [PATCH 03/15] update --- config/linux-dev/nvim/colors/invero.lua | 98 +-------- config/linux-dev/nvim/init.lua | 7 +- config/linux-dev/nvim/lua/config/autocmds.lua | 37 ++++ config/linux-dev/nvim/lua/config/options.lua | 30 +-- .../linux-dev/nvim/lua/plugins/neo-tree.lua | 79 -------- .../linux-dev/nvim/lua/plugins/nvim-tree.lua | 187 ++++++++++++++++++ .../linux-dev/nvim/lua/plugins/telescope.lua | 51 +---- .../nvim/lua/themes/invero/colors.lua | 19 ++ .../nvim/lua/themes/invero/groups/editor.lua | 37 ++++ .../invero/groups/integrations/nvim-tree.lua | 13 ++ .../invero/groups/integrations/telescope.lua | 13 ++ .../groups/integrations/tree-sitter.lua | 19 ++ .../nvim/lua/themes/invero/groups/syntax.lua | 9 + .../lua/themes/invero/groups/terminal.lua | 31 +++ .../linux-dev/nvim/lua/themes/invero/init.lua | 12 ++ .../nvim/lua/themes/invero/palette.lua | 37 ++++ .../nvim/lua/themes/invero/setup.lua | 79 ++++++++ config/linux-dev/nvim/lua/utils/palette.lua | 51 ----- config/linux-dev/tmux | 7 +- 19 files changed, 516 insertions(+), 300 deletions(-) create mode 100644 config/linux-dev/nvim/lua/config/autocmds.lua delete mode 100644 config/linux-dev/nvim/lua/plugins/neo-tree.lua create mode 100644 config/linux-dev/nvim/lua/plugins/nvim-tree.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/colors.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/groups/editor.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/groups/integrations/nvim-tree.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/groups/terminal.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/init.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/palette.lua create mode 100644 config/linux-dev/nvim/lua/themes/invero/setup.lua delete mode 100644 config/linux-dev/nvim/lua/utils/palette.lua diff --git a/config/linux-dev/nvim/colors/invero.lua b/config/linux-dev/nvim/colors/invero.lua index aad10f2..c3f6a36 100644 --- a/config/linux-dev/nvim/colors/invero.lua +++ b/config/linux-dev/nvim/colors/invero.lua @@ -1,97 +1 @@ --- colors/inStatusLinevero.lua - -local palette = require("utils.palette") - --- reset highlights -vim.cmd("hi clear") -if vim.fn.exists("syntax_on") == 1 then - vim.cmd("syntax reset") -end - -vim.opt.background = "light" -vim.g.colors_name = "invero" - -local colors = { - -- neutrals - base = palette[255], -- #eeeeee, white (bg) - surface = palette[253], -- #dadada, light gray (cursor line bg) - text = palette[238], -- #444444, dark gray (terminal fg) - muted = palette[247], -- #9e9e9e, gray (comments, line numbers, dividers) - accent = palette[27], -- #005fff, standard blue (cursor, dirs) - accent_light = palette[153], -- #afd7ff light sky blue (selection bg) - syntax = palette[60], -- #5f5f87, slate / gray-blue (syntax fg) - red = palette[196], -- #ff0000, red - orange = palette[166], -- #d75f00, orange - orange_light = palette[180], -- #ffd7af, orange light - yellow = palette[184], -- #ffd75f, yellow - green = palette[34], -- #00af5f, green - none = "NONE" -- no color / transparent -} - -local theme = { - Normal = { fg = colors.text, bg = colors.none }, - LineNr = { fg = colors.muted }, - CursorLineNr = { fg = colors.accent, bold = true }, - CursorLine = { bg = colors.surface }, - Visual = { bg = colors.accent_light }, - Search = { fg = colors.orange }, - CurSearch = { fg = colors.base, bg = colors.orange, bold = true }, - IncSearch = { fg = colors.base, bg = colors.orange, bold = true }, - WinSeparator = { fg = colors.muted }, - StatusLine = { fg = colors.text, bg = colors.none }, - TabLine = { fg = colors.red }, - TabLineSel = { fg = colors.red, bold = true }, - TabLineFill = { bg = colors.red }, - - -- Telescope - TelescopeBorder = { fg = colors.muted }, - TelescopePromptPrefix = { fg = colors.accent }, - TelescopeSelection = { bg = colors.surface }, - - -- Neo-tree - NeoTreeDirectoryName = { fg = colors.accent }, - NeoTreeFileName = { fg = colors.text }, - -- NeoTreeNormal = { bg = colors.muted }, - -- NeoTreeNormalNC = { bg = colors.muted }, -} - --- apply theme groups -for group, opts in pairs(theme) do - vim.api.nvim_set_hl(0, group, opts) -end - --- apply Tree-sitter defaults: all base4, comments special-case -local highlights = vim.fn.getcompletion("@", "highlight") -for _, hl in ipairs(highlights) do - vim.api.nvim_set_hl(0, hl, { fg = colors.syntax }) -end - -vim.api.nvim_set_hl(0, "@comment", { fg = colors.muted, italic = true }) - -vim.api.nvim_create_autocmd({ "WinEnter" }, { - callback = function() vim.wo.cursorline = true end, -}) -vim.api.nvim_create_autocmd({ "WinLeave" }, { - callback = function() vim.wo.cursorline = false end, -}) - --- TEST >> - - -vim.opt.laststatus = 3 -vim.opt.fillchars:append({ stl = '─', stlnc = '─' }) - --- vim.o.statusline = " " --- vim.api.nvim_set_hl(0, "WinSeparator", { bg = colors.surface }) -- vertical bg --- vim.api.nvim_set_hl(0, "StatusLine", { bg = colors.surface }) -- horizontal bg --- vim.api.nvim_set_hl(0, "StatusLineNC", { bg = colors.surface }) -- horizontal bg - --- vim.api.nvim_create_autocmd("FileType", { --- pattern = "neo-tree", --- callback = function(ev) --- -- force your own winhighlight --- vim.api.nvim_win_set_option(ev.win, "winhighlight", "WinSeparator:WinSeparator") --- -- force fillchars --- vim.wo[ev.win].fillchars = "vert:│,horiz:─,horizup:┴,horizdown:┬,vertleft:├,vertright:┤,verthoriz:┼" --- end, --- }) +require("themes.invero").load() diff --git a/config/linux-dev/nvim/init.lua b/config/linux-dev/nvim/init.lua index 94396f2..2157826 100644 --- a/config/linux-dev/nvim/init.lua +++ b/config/linux-dev/nvim/init.lua @@ -1,3 +1,4 @@ -require('config.options') -- vim options -require('config.keymaps') -- keymaps -require('config.lazy') -- plugin manager and plugins +require('config.options') +require('config.keymaps') +require('config.lazy') +require("config.autocmds") diff --git a/config/linux-dev/nvim/lua/config/autocmds.lua b/config/linux-dev/nvim/lua/config/autocmds.lua new file mode 100644 index 0000000..1d8f7f9 --- /dev/null +++ b/config/linux-dev/nvim/lua/config/autocmds.lua @@ -0,0 +1,37 @@ +-- Highlight when yanking (copying) text +vim.api.nvim_create_autocmd("TextYankPost", { + callback = function() + vim.highlight.on_yank() + end, +}) + +-- cursorline only on active window +vim.api.nvim_create_autocmd({ "WinEnter" }, { + callback = function() + local ft = vim.bo.filetype + if ft ~= "NvimTree" then + vim.wo.cursorline = true + end + end, +}) +vim.api.nvim_create_autocmd({ "WinLeave" }, { + callback = function() + local ft = vim.bo.filetype + if ft ~= "NvimTree" then + vim.wo.cursorline = false + end + end, +}) + +-- Reload Invero colorscheme without restarting Neovim +vim.api.nvim_create_user_command("ReloadInvero", function() + -- clear the cached modules so require() reloads them + for k in pairs(package.loaded) do + if k:match("^themes%.invero") then + package.loaded[k] = nil + end + end + + -- reload the colorscheme + vim.cmd("colorscheme invero") +end, { desc = "Reload the Invero theme" }) diff --git a/config/linux-dev/nvim/lua/config/options.lua b/config/linux-dev/nvim/lua/config/options.lua index d9ceca3..a028c3b 100644 --- a/config/linux-dev/nvim/lua/config/options.lua +++ b/config/linux-dev/nvim/lua/config/options.lua @@ -3,17 +3,16 @@ vim.g.mapleader = " " vim.g.maplocalleader = " " -- Use Nerd Font -vim.g.have_nerd_font = true +vim.g.have_nerd_font = false -- Add vertical line -- vim.opt.colorcolumn = "100" --- vim.opt.laststatus = 3 +vim.opt.laststatus = 3 vim.opt.signcolumn = "no" -- Enable TrueColor -vim.opt.termguicolors = true - +vim.opt.termguicolors = false -- Scroll lines/columns vim.opt.mousescroll = "hor:1,ver:1" @@ -40,7 +39,9 @@ vim.opt.relativenumber = true vim.opt.mouse = "a" -- Full path on status line -vim.opt.statusline = "> %F%m%r%h%w %= %l,%c %P " +vim.opt.statusline = "%= %F%m%r%h%w ─ (%l,%c %P) %=" +vim.opt.fillchars:append({ stl = '─', stlnc = '─' }) + -- Sync clipboard between OS and Neovim vim.schedule(function() @@ -76,22 +77,5 @@ vim.opt.guicursor = "n-v-i-c:block" -- Minimal number of screen lines to keep above and below the cursor vim.opt.scrolloff = 10 --- Highlight when yanking (copying) text -vim.api.nvim_create_autocmd("TextYankPost", { - callback = function() - vim.highlight.on_yank() - end, -}) - -vim.diagnostic.config({ - severity_sort = true, - severities = { - [vim.diagnostic.severity.ERROR] = 4, - [vim.diagnostic.severity.WARN] = 3, - [vim.diagnostic.severity.INFO] = 2, - [vim.diagnostic.severity.HINT] = 1, - } -}) - --- Now load the colorscheme (this will trigger the autocmd) +-- Load the colorscheme vim.cmd.colorscheme("invero") diff --git a/config/linux-dev/nvim/lua/plugins/neo-tree.lua b/config/linux-dev/nvim/lua/plugins/neo-tree.lua deleted file mode 100644 index 4a2a6d5..0000000 --- a/config/linux-dev/nvim/lua/plugins/neo-tree.lua +++ /dev/null @@ -1,79 +0,0 @@ -return { - "nvim-tree/nvim-tree.lua", - version = "*", - lazy = false, - keys = { - { "et", ":NvimTreeToggle", desc = "Explorer Toggle", silent = true }, - }, - config = function() - require("nvim-tree").setup { - renderer = { - icons = { - show = { - file = false, - folder = false, - folder_arrow = false, - git = false, - modified = false, - hidden = false, - diagnostics = false, - bookmarks = false, - }, - }, - }, - } - end, -} - --- return { --- "nvim-neo-tree/neo-tree.nvim", --- version = "*", --- dependencies = { --- "nvim-lua/plenary.nvim", --- "nvim-tree/nvim-web-devicons", --- "MunifTanjim/nui.nvim", --- }, --- cmd = "Neotree", --- keys = { --- { "et", ":Neotree position=left toggle", desc = "Explorer Toggle", silent = true }, --- { "E", ":Neotree focus", desc = "Explorer Focus", silent = true }, --- { "ef", ":Neotree float", desc = "Explorer Float", silent = true }, --- { "eb", ":Neotree buffers", desc = "Explorer Buffers", silent = true }, --- { "eg", ":Neotree git_status", desc = "Explorer Git", silent = true }, --- }, --- opts = { --- event_handlers = { --- { --- event = require("neo-tree.ui.events").NEO_TREE_WINDOW_AFTER_OPEN, --- handler = function(args) --- if args and args.winid and vim.api.nvim_win_is_valid(args.winid) then --- vim.api.nvim_win_set_option(args.winid, "colorcolumn", "") --- vim.api.nvim_win_set_option(args.winid, "signcolumn", "no") --- end --- end, --- }, --- }, --- popup_border_style = "single", --- window = { --- mappings = { --- ["e"] = "close_window", --- }, --- }, --- default_component_configs = { --- icon = { enabled = false }, --- git_status = { symbols = {}, align = "none" }, --- name = { trailing_slash = true } --- }, --- enable_git_status = false, --- enable_diagnostics = false, --- filesystem = { --- follow_current_file = { --- enabled = true, -- Enable this feature --- leave_dirs_open = true, -- Leave directories open when following --- }, --- filtered_items = { --- visible = true, --- } --- }, --- }, --- } diff --git a/config/linux-dev/nvim/lua/plugins/nvim-tree.lua b/config/linux-dev/nvim/lua/plugins/nvim-tree.lua new file mode 100644 index 0000000..3109785 --- /dev/null +++ b/config/linux-dev/nvim/lua/plugins/nvim-tree.lua @@ -0,0 +1,187 @@ +return { + "nvim-tree/nvim-tree.lua", + version = "*", + lazy = false, + keys = { + { "et", ":NvimTreeToggle", desc = "Explorer Toggle", silent = true }, + }, + config = function() + require("nvim-tree").setup { + hijack_cursor = true, + disable_netrw = true, + hijack_netrw = true, + hijack_unnamed_buffer_when_opening = true, + root_dirs = { ".git", "package.json" }, + prefer_startup_root = true, + sync_root_with_cwd = true, + reload_on_bufenter = true, + respect_buf_cwd = true, + view = { + centralize_selection = false, + cursorline = true, + cursorlineopt = "both", + debounce_delay = 15, + side = "left", + preserve_window_proportions = false, + number = false, + relativenumber = false, + signcolumn = "no", + width = 30, + }, + renderer = { + add_trailing = false, + group_empty = false, + full_name = false, + root_folder_label = false, + special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" }, + symlink_destination = true, + icons = { + padding = "", + glyphs = { + folder = { + arrow_closed = "+", + arrow_open = "-", + }, + }, + show = { + file = false, + folder = false, + folder_arrow = true, + git = false, + modified = false, + hidden = false, + diagnostics = false, + bookmarks = false, + }, + } + }, + hijack_directories = { + enable = true, + auto_open = true, + }, + update_focused_file = { + enable = true, + update_root = { + enable = true, + ignore_list = {}, + }, + exclude = false, + }, + filters = { + enable = true, + git_ignored = true, + dotfiles = false, + git_clean = false, + no_buffer = false, + no_bookmark = false, + custom = {}, + exclude = {}, + }, + live_filter = { + prefix = "[FILTER]: ", + always_show_folders = true, + }, + filesystem_watchers = { + enable = true, + debounce_delay = 50, + ignore_dirs = { + -- C / C++ + "/.ccls-cache", + "/build", + "/out", + "/cmake-build-*", + + -- Node.js / Web + "/node_modules", + "/dist", + "/.next", + "/.nuxt", + "/coverage", + "/storybook-static", + + -- Rust + "/target", + + -- Java / JVM + "/target", -- (Maven) + "/build", -- (Gradle) + "/out", -- (IDEA / javac) + + -- Python + "/.venv", + "/venv", + "/__pycache__", + "/.mypy_cache", + "/.pytest_cache", + + -- Go + "/bin", + "/pkg", + + -- General + "/tmp", + "/.cache", + "/.idea", + "/.vscode", + "/logs", + } + }, + trash = { + cmd = "gio trash", + }, + } + end, +} + +-- return { +-- "nvim-neo-tree/neo-tree.nvim", +-- version = "*", +-- dependencies = { +-- "nvim-lua/plenary.nvim", +-- "nvim-tree/nvim-web-devicons", +-- "MunifTanjim/nui.nvim", +-- }, +-- cmd = "Neotree", +-- keys = { +-- { "et", ":Neotree position=left toggle", desc = "Explorer Toggle", silent = true }, +-- { "E", ":Neotree focus", desc = "Explorer Focus", silent = true }, +-- { "ef", ":Neotree float", desc = "Explorer Float", silent = true }, +-- { "eb", ":Neotree buffers", desc = "Explorer Buffers", silent = true }, +-- { "eg", ":Neotree git_status", desc = "Explorer Git", silent = true }, +-- }, +-- opts = { +-- event_handlers = { +-- { +-- event = require("neo-tree.ui.events").NEO_TREE_WINDOW_AFTER_OPEN, +-- handler = function(args) +-- if args and args.winid and vim.api.nvim_win_is_valid(args.winid) then +-- vim.api.nvim_win_set_option(args.winid, "colorcolumn", "") +-- vim.api.nvim_win_set_option(args.winid, "signcolumn", "no") +-- end +-- end, +-- }, +-- }, +-- popup_border_style = "single", +-- window = { +-- mappings = { +-- ["e"] = "close_window", +-- }, +-- }, +-- default_component_configs = { +-- icon = { enabled = false }, +-- git_status = { symbols = {}, align = "none" }, +-- name = { trailing_slash = true } +-- }, +-- enable_git_status = false, +-- enable_diagnostics = false, +-- filesystem = { +-- follow_current_file = { +-- enabled = true, -- Enable this feature +-- leave_dirs_open = true, -- Leave directories open when following +-- }, +-- filtered_items = { +-- visible = true, +-- } +-- }, +-- }, +-- } diff --git a/config/linux-dev/nvim/lua/plugins/telescope.lua b/config/linux-dev/nvim/lua/plugins/telescope.lua index 5695c71..7fb2cba 100644 --- a/config/linux-dev/nvim/lua/plugins/telescope.lua +++ b/config/linux-dev/nvim/lua/plugins/telescope.lua @@ -1,68 +1,30 @@ local remap = require("utils.remap") -return { -- Fuzzy Finder (files, lsp, etc) +return { "nvim-telescope/telescope.nvim", event = "VimEnter", branch = "0.1.x", dependencies = { "nvim-lua/plenary.nvim", - { -- If encountering errors, see telescope-fzf-native README for installation instructions + { "nvim-telescope/telescope-fzf-native.nvim", - - -- `build` is used to run some command when the plugin is installed/updated. - -- This is only run then, not every time Neovim starts up. build = "make", - - -- `cond` is a condition used to determine whether this plugin should be - -- installed and loaded. cond = function() return vim.fn.executable("make") == 1 end, }, { "nvim-telescope/telescope-ui-select.nvim" }, - - -- Useful for getting pretty icons, but requires a Nerd Font. { "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font }, }, config = function() - -- Telescope is a fuzzy finder that comes with a lot of different things that - -- it can fuzzy find! It's more than just a "file finder", it can search - -- many different aspects of Neovim, your workspace, LSP, and more! - -- - -- The easiest way to use Telescope, is to start by doing something like: - -- :Telescope help_tags - -- - -- After running this command, a window will open up and you're able to - -- type in the prompt window. You'll see a list of `help_tags` options and - -- a corresponding preview of the help. - -- - -- Two important keymaps to use while in Telescope are: - -- - Insert mode: - -- - Normal mode: ? - -- - -- This opens a window that shows you all of the keymaps for the current - -- Telescope picker. This is really useful to discover what Telescope can - -- do as well as how to actually do it! - - -- [[ Configure Telescope ]] - -- See `:help telescope` and `:help telescope.setup()` require("telescope").setup({ - -- You can put your default mappings / updates / etc. in here - -- All the info you're looking for is in `:help telescope.setup()` - -- - -- defaults = { - -- mappings = { - -- i = { [''] = 'to_fuzzy_refine' }, - -- }, - -- }, - -- pickers = {} defaults = { layout_strategy = "vertical", layout_config = { - width = { 0.95, max = 100 }, - height = 0.95, - preview_cutoff = 1, - preview_height = 0.7 + width = { 0.95, max = 100 }, + height = 0.95, + preview_cutoff = 1, + preview_height = 0.7, }, mappings = { n = { @@ -72,7 +34,6 @@ return { -- Fuzzy Finder (files, lsp, etc) }, }) - -- Enable Telescope extensions if they are installed pcall(require("telescope").load_extension, "fzf") pcall(require("telescope").load_extension, "ui-select") diff --git a/config/linux-dev/nvim/lua/themes/invero/colors.lua b/config/linux-dev/nvim/lua/themes/invero/colors.lua new file mode 100644 index 0000000..4a39106 --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/colors.lua @@ -0,0 +1,19 @@ +local M = {} + +function M.get(P) + local colors = { + base = P.white, + surface = P.gray_light, + text = P.black, + muted = P.gray, + accent = P.blue, + accent_light = P.blue_light, + syntax = 60, + none = "NONE", + } + + return vim.tbl_extend("force", P, colors) +end + +return M + diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua b/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua new file mode 100644 index 0000000..b59fe1f --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua @@ -0,0 +1,37 @@ +local M = {} + +function M.get(C) + return { + Normal = { fg = C.text, bg = C.none }, + LineNr = { fg = C.muted }, + CursorLineNr = { fg = C.accent, bold = true }, + CursorLine = { bg = C.surface }, + Visual = { bg = C.accent_light }, + + Search = { fg = C.yellow }, + CurSearch = { fg = C.base, bg = C.yellow, bold = true }, + IncSearch = { fg = C.base, bg = C.yellow, bold = true }, + + MatchParen = { fg = C.base, bg = C.accent }, + EndOfBuffer = { fg = C.base }, -- End-of-buffer marker (~ lines) + + WinSeparator = { fg = C.muted }, + StatusLine = { fg = C.muted, bg = C.none }, -- Active statusline (where filename) + MsgArea = { fg = C.text, bg = C.none }, -- Command-line / message area + MsgSeparator = { fg = C.text, bg = C.surface }, -- Separator for messages + ModeMsg = { fg = C.text }, + + TabLine = { fg = C.muted }, -- Unselected tab + TabLineSel = { fg = C.text, bold = true }, -- Selected tab + TabLineFill = { bg = C.none }, -- Empty space in the tabline + + -- DiagnosticError = { undercurl = true, sp = C.red }, + -- DiagnosticWarn = { undercurl = true, sp = C.yellow }, + -- DiagnosticInfo = { underline = true, sp = C.accent }, + -- DiagnosticHint = { underline = true, sp = C.green }, + + Directory = { fg = C.accent }, + } +end + +return M diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/nvim-tree.lua b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/nvim-tree.lua new file mode 100644 index 0000000..cd2b791 --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/nvim-tree.lua @@ -0,0 +1,13 @@ +local M = {} + +function M.get(C) + return { + NvimTreeFolderIcon = { fg = C.accent }, + NvimTreeRootFolder = { fg = C.text, bold = true }, + -- NvimTreeOpenedHL = { bg = C.surface }, + } +end + +return M + + diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua new file mode 100644 index 0000000..798aaf0 --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua @@ -0,0 +1,13 @@ +local M = {} + +function M.get(C) + return { + -- TelescopeBorder = { fg = C.muted, bg = C.green }, + -- TelescopeNormal = { fg = C.text, bg = C.base, ctermbg = 1 }, + TelescopePrompt = { fg = C.text, bg = C.base, ctermbg = 1 }, + -- TelescopePromptPrefix = { fg = C.accent, bg = C.red }, + -- TelescopeSelection = { bg = C.surface }, + } +end + +return M diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua new file mode 100644 index 0000000..f9c27ff --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua @@ -0,0 +1,19 @@ +local M = {} + +function M.get(C) + local theme = { + ["@comment"] = { fg = C.muted, italic = true }, + } + + for _, hl in ipairs(vim.fn.getcompletion("@", "highlight")) do + if theme[hl] == nil then + theme[hl] = { fg = C.syntax } + end + end + + return theme +end + +return M + + diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua b/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua new file mode 100644 index 0000000..0be0ac6 --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua @@ -0,0 +1,9 @@ +local M = {} + +-- fallback for vim without tree-sitter +function M.get(C) + return {} +end + +return M + diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/terminal.lua b/config/linux-dev/nvim/lua/themes/invero/groups/terminal.lua new file mode 100644 index 0000000..919f81f --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/groups/terminal.lua @@ -0,0 +1,31 @@ +local M = {} + +function M.get(C) + return { + terminal_color_0 = { fg = C.black }, + terminal_color_8 = { fg = C.black }, + + terminal_color_1 = { fg = C.red }, + terminal_color_9 = { fg = C.red }, + + terminal_color_2 = { fg = C.green }, + terminal_color_10 = { fg = C.green }, + + terminal_color_3 = { fg = C.yellow }, + terminal_color_11 = { fg = C.yellow }, + + terminal_color_4 = { fg = C.blue }, + terminal_color_12 = { fg = C.blue }, + + terminal_color_5 = { fg = C.magenta }, + terminal_color_13 = { fg = C.magenta }, + + terminal_color_6 = { fg = C.cyan }, + terminal_color_14 = { fg = C.cyan }, + + terminal_color_7 = { fg = C.white }, + terminal_color_15 = { fg = C.white }, + } +end + +return M diff --git a/config/linux-dev/nvim/lua/themes/invero/init.lua b/config/linux-dev/nvim/lua/themes/invero/init.lua new file mode 100644 index 0000000..f2db87c --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/init.lua @@ -0,0 +1,12 @@ +local M = { + name = "invero", + variant = "light", +} + +function M.load() + local setup = require("themes." .. M.name .. ".setup") + setup.reset(M) + setup.apply(M) +end + +return M diff --git a/config/linux-dev/nvim/lua/themes/invero/palette.lua b/config/linux-dev/nvim/lua/themes/invero/palette.lua new file mode 100644 index 0000000..b2aafde --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/palette.lua @@ -0,0 +1,37 @@ +local M = {} + +function M.get() + return { + black = 0, + gray = 247, + gray_light = 253, + red = 1, + green = 2, + yellow = 3, + yellow_light = 180, + blue = 4, + blue_light = 153, + magenta = 5, + cyan = 6, + white = 7, + } + + -- return { + -- black = 238, + -- gray = 247, + -- gray_light = 253, + -- red = 196, + -- green = 35, + -- yellow = 221, + -- orange = 166, + -- orange_light = 180, + -- blue = 27, + -- blue_light = 153, + -- magenta = 125, + -- cyan = 30, + -- white = 255, + -- } +end + +return M + diff --git a/config/linux-dev/nvim/lua/themes/invero/setup.lua b/config/linux-dev/nvim/lua/themes/invero/setup.lua new file mode 100644 index 0000000..8e59a55 --- /dev/null +++ b/config/linux-dev/nvim/lua/themes/invero/setup.lua @@ -0,0 +1,79 @@ +local M = {} + +function M.reset(theme) + vim.opt.background = (theme.variant == "light") and "light" or "dark" + vim.g.colors_name = theme.name +end + +local function list_integrations(theme_name) + local path = vim.fn.stdpath("config") .. "/lua/themes/" .. theme_name .. "/groups/integrations/" + + local files = {} + for name, type in vim.fs.dir(path) do + if type == "file" then + local mod_name = vim.fn.fnamemodify(name, ":r") + table.insert(files, mod_name) + end + end + return files +end + +function M.apply(theme) + local base = "themes." .. theme.name + local P = require(base .. ".palette").get() + local C = require(base .. ".colors").get(P) + + local modules = { + require(base .. ".groups.editor"), + require(base .. ".groups.syntax"), + require(base .. ".groups.terminal"), + } + + local exclude = theme.exclude_integrations or {} + + local function should_load(name) + return not vim.tbl_contains(exclude, name) + end + + -- auto-discover integrations + for _, plugin in ipairs(list_integrations(theme.name)) do + if should_load(plugin) then + local ok_mod, mod = pcall(require, base .. ".groups.integrations." .. plugin) + if ok_mod then + table.insert(modules, mod) + end + end + end + + -- Apply highlights + for _, mod in ipairs(modules) do + local groups = mod.get(C) or {} + for group, opts in pairs(groups) do + if type(opts) ~= "table" then + print("Non-table opts detected in group:", group, "value:", vim.inspect(opts)) + end + local hl = {} + + -- ALT: Use both scenarios + -- if type(v) == "number" then + -- hl.ctermfg = v + -- else + -- hl.fg = v + -- end + + for k, v in pairs(opts) do + if k == "fg" then + hl.ctermfg = v + elseif k == "bg" then + hl.ctermbg = v + else + hl[k] = v -- bold, italic, underline, sp, etc. + end + end + + vim.api.nvim_set_hl(0, group, hl) + end + end +end + +return M diff --git a/config/linux-dev/nvim/lua/utils/palette.lua b/config/linux-dev/nvim/lua/utils/palette.lua deleted file mode 100644 index 387b4b5..0000000 --- a/config/linux-dev/nvim/lua/utils/palette.lua +++ /dev/null @@ -1,51 +0,0 @@ -local function xterm256_palette() - local colors = {} - - -- 0–15: system colors (manual) - local ansi = { - "#000000", -- 0 black - "#d70000", -- 1 red - "#5f8700", -- 2 green - "#af8700", -- 3 yellow/brown - "#005faf", -- 4 blue - "#5f5faf", -- 5 magenta/indigo - "#008787", -- 6 cyan - "#bcbcbc", -- 7 light gray - - "#808080", -- 8 dark gray - "#ff5f5f", -- 9 bright red - "#87d75f", -- 10 bright green - "#ffd700", -- 11 bright yellow - "#5f87d7", -- 12 bright blue - "#8787ff", -- 13 bright magenta - "#5fd7d7", -- 14 bright cyan - "#ffffff", -- 15 white - } - for i, hex in ipairs(ansi) do - colors[i-1] = hex - end - - -- 16–231: 6x6x6 cube - local steps = {0, 95, 135, 175, 215, 255} - local idx = 16 - for r = 1,6 do - for g = 1,6 do - for b = 1,6 do - colors[idx] = string.format("#%02x%02x%02x", steps[r], steps[g], steps[b]) - idx = idx + 1 - end - end - end - - -- 232–255: grayscale - for gray = 0,23 do - local level = 8 + gray * 10 - colors[idx] = string.format("#%02x%02x%02x", level, level, level) - idx = idx + 1 - end - - return colors -end - -return xterm256_palette() - diff --git a/config/linux-dev/tmux b/config/linux-dev/tmux index cb351ae..33c8c74 100644 --- a/config/linux-dev/tmux +++ b/config/linux-dev/tmux @@ -5,9 +5,9 @@ bind-key C-Space send-prefix set-option -g set-clipboard on -#set -g default-terminal "tmux-256color" +set -g default-terminal "xterm-256color" #set -as terminal-features ",*:RGB" -set-option -a terminal-features 'xterm-256color:RGB' +# set-option -a terminal-features 'xterm-256color:RGB' set-option -sg escape-time 10 set-option -g repeat-time 0 set-option -g focus-events on @@ -27,6 +27,7 @@ set -g status-right '' # set -g pane-border-status bottom # or 'bottom' if status is at top # set -g pane-border-format '─' # This will fill the entire width automatically +# set -g pane-border-format '#[align=centre]╱╲' # Window status format - light theme with terminal blue setw -g window-status-format '#[fg=#6c6f85]#I#[fg=#9ca0b0]:#[fg=#4c4f69]#W#[fg=#9ca0b0]#F' @@ -35,6 +36,8 @@ setw -g window-status-current-format '#[fg=blue,bold]#I#[fg=#9ca0b0]:#[fg=blue,b # Pane border - light theme set -g pane-border-style fg='#ccd0da' set -g pane-active-border-style fg=blue +# set -g pane-border-style "fg=#ccd0da,bg=green" +# set -g pane-active-border-style "fg=blue,bg=green" # Message text - light theme set -g message-style bg='#eff1f5',fg=blue -- 2.45.2 From 23309c9a1200252b0380ad3acf388bf65a7d03b8 Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Thu, 25 Sep 2025 11:39:11 +0300 Subject: [PATCH 04/15] nvim --- config/linux-dev/nvim/lua/config/autocmds.lua | 38 ++++++++++--------- .../linux-dev/nvim/lua/plugins/telescope.lua | 2 +- .../invero/groups/integrations/telescope.lua | 3 +- .../groups/integrations/tree-sitter.lua | 5 +++ .../nvim/lua/themes/invero/setup.lua | 2 + 5 files changed, 30 insertions(+), 20 deletions(-) diff --git a/config/linux-dev/nvim/lua/config/autocmds.lua b/config/linux-dev/nvim/lua/config/autocmds.lua index 1d8f7f9..e603e43 100644 --- a/config/linux-dev/nvim/lua/config/autocmds.lua +++ b/config/linux-dev/nvim/lua/config/autocmds.lua @@ -5,23 +5,27 @@ vim.api.nvim_create_autocmd("TextYankPost", { end, }) --- cursorline only on active window -vim.api.nvim_create_autocmd({ "WinEnter" }, { - callback = function() - local ft = vim.bo.filetype - if ft ~= "NvimTree" then - vim.wo.cursorline = true - end - end, -}) -vim.api.nvim_create_autocmd({ "WinLeave" }, { - callback = function() - local ft = vim.bo.filetype - if ft ~= "NvimTree" then - vim.wo.cursorline = false - end - end, -}) + +-- Show cursorline only in the active window +-- vim.api.nvim_create_autocmd({ "WinEnter", "BufEnter" }, { +-- callback = function() +-- local ft = vim.bo.filetype +-- vim.notify("enter: " .. ft .. " - " .. vim.bo.buftype) +-- -- if not ft:match("^Telescope") and ft ~= "NvimTree" then +-- -- vim.wo.cursorline = true +-- -- end +-- end, +-- }) +-- +-- vim.api.nvim_create_autocmd({ "WinLeave", "BufLeave" }, { +-- callback = function() +-- local ft = vim.bo.filetype +-- vim.notify("exit: " .. ft .. " - " .. vim.bo.buftype) +-- -- if not ft:match("^Telescope") and ft ~= "NvimTree" then +-- -- vim.wo.cursorline = false +-- -- end +-- end, +-- }) -- Reload Invero colorscheme without restarting Neovim vim.api.nvim_create_user_command("ReloadInvero", function() diff --git a/config/linux-dev/nvim/lua/plugins/telescope.lua b/config/linux-dev/nvim/lua/plugins/telescope.lua index 7fb2cba..937cd95 100644 --- a/config/linux-dev/nvim/lua/plugins/telescope.lua +++ b/config/linux-dev/nvim/lua/plugins/telescope.lua @@ -14,7 +14,7 @@ return { end, }, { "nvim-telescope/telescope-ui-select.nvim" }, - { "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font }, + -- { "nvim-tree/nvim-web-devicons", enabled = vim.g.have_nerd_font }, }, config = function() require("telescope").setup({ diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua index 798aaf0..dd4dbd0 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua @@ -3,8 +3,7 @@ local M = {} function M.get(C) return { -- TelescopeBorder = { fg = C.muted, bg = C.green }, - -- TelescopeNormal = { fg = C.text, bg = C.base, ctermbg = 1 }, - TelescopePrompt = { fg = C.text, bg = C.base, ctermbg = 1 }, + TelescopePrompt = { fg = C.text, bg = C.green }, -- TelescopePromptPrefix = { fg = C.accent, bg = C.red }, -- TelescopeSelection = { bg = C.surface }, } diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua index f9c27ff..4ff2239 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua @@ -3,6 +3,11 @@ local M = {} function M.get(C) local theme = { ["@comment"] = { fg = C.muted, italic = true }, + ["@spell"] = { fg = C.syntax }, + ["@markup"] = { fg = C.syntax }, + ["@text"] = { fg = C.syntax }, + ["@property"] = { fg = C.syntax }, + ["@conceal"] = { fg = C.syntax }, } for _, hl in ipairs(vim.fn.getcompletion("@", "highlight")) do diff --git a/config/linux-dev/nvim/lua/themes/invero/setup.lua b/config/linux-dev/nvim/lua/themes/invero/setup.lua index 8e59a55..edf5628 100644 --- a/config/linux-dev/nvim/lua/themes/invero/setup.lua +++ b/config/linux-dev/nvim/lua/themes/invero/setup.lua @@ -63,8 +63,10 @@ function M.apply(theme) for k, v in pairs(opts) do if k == "fg" then + hl.fg = v hl.ctermfg = v elseif k == "bg" then + hl.bg = v hl.ctermbg = v else hl[k] = v -- bold, italic, underline, sp, etc. -- 2.45.2 From 14eac658970464986e43d0f3275d87a879c1f9ab Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Fri, 26 Sep 2025 00:52:00 +0000 Subject: [PATCH 05/15] neovim light theme working 1 --- config/linux-dev/nvim/lua/config/autocmds.lua | 112 +++++++- .../linux-dev/nvim/lua/plugins/nvim-tree.lua | 253 +++++++++--------- .../linux-dev/nvim/lua/plugins/treesitter.lua | 62 +++-- .../nvim/lua/themes/invero/colors.lua | 23 +- .../nvim/lua/themes/invero/groups/editor.lua | 15 +- .../invero/groups/integrations/nvim-tree.lua | 8 +- .../invero/groups/integrations/telescope.lua | 5 +- .../groups/integrations/tree-sitter.lua | 30 +-- .../nvim/lua/themes/invero/groups/syntax.lua | 33 ++- .../linux-dev/nvim/lua/themes/invero/init.lua | 12 +- .../nvim/lua/themes/invero/palette.lua | 77 +++--- .../nvim/lua/themes/invero/setup.lua | 11 +- 12 files changed, 371 insertions(+), 270 deletions(-) diff --git a/config/linux-dev/nvim/lua/config/autocmds.lua b/config/linux-dev/nvim/lua/config/autocmds.lua index e603e43..db7fb38 100644 --- a/config/linux-dev/nvim/lua/config/autocmds.lua +++ b/config/linux-dev/nvim/lua/config/autocmds.lua @@ -5,8 +5,96 @@ vim.api.nvim_create_autocmd("TextYankPost", { end, }) +---------------------------------------------- --- Show cursorline only in the active window +-- Reload ColorScheme by clearing cached modules +vim.api.nvim_create_user_command("ReloadColorscheme", function() + local current = vim.g.colors_name + if not current then + vim.notify("No colorscheme is currently set", vim.log.levels.WARN) + return + end + + -- clear only the cached modules for this theme + for k in pairs(package.loaded) do + if k:match("^themes%." .. current) then + package.loaded[k] = nil + end + end + + -- reload it + vim.cmd("colorscheme " .. current) + vim.notify("Reloaded " .. current .. " colorscheme", vim.log.levels.INFO) +end, { desc = "Reload the current colorscheme" }) + +---------------------------------------------- + +-- Command `:TSHighlightRoots` (works but uncomment only when used) +-- Description: +-- Collects all Tree-sitter highlight groups, resolves their links, +-- and outputs the unique root groups actually used (for theming/debugging). +-- +-- Usage: +-- :TSHighlightRoots → prints roots in the command line +-- :TSHighlightRoots → writes roots into (overwrites) +-- (filename supports `~` and tab-completion) +-- +-- local function resolve_link(name) +-- local seen = {} +-- while name and not seen[name] do +-- seen[name] = true +-- local hl = vim.api.nvim_get_hl(0, { name = name }) +-- if hl.link then +-- name = hl.link +-- else +-- return name +-- end +-- end +-- end +-- +-- vim.api.nvim_create_autocmd("VimEnter", { +-- callback = function() +-- vim.api.nvim_create_user_command("TSHighlightRoots", function(opts) +-- local roots = {} +-- for _, group in ipairs(vim.fn.getcompletion("@", "highlight")) do +-- local root = resolve_link(group) +-- if root then +-- roots[root] = true +-- end +-- end +-- +-- local output = { "Unique root highlight groups used by Tree-sitter:" } +-- for root in pairs(roots) do +-- table.insert(output, " " .. root) +-- end +-- +-- if opts.args ~= "" then +-- -- write to file +-- local filename = vim.fn.expand(opts.args) +-- local fd = assert(io.open(filename, "w")) +-- fd:write(table.concat(output, "\n")) +-- fd:close() +-- print("Wrote roots to " .. filename) +-- else +-- -- default: print to command line +-- for _, line in ipairs(output) do +-- print(line) +-- end +-- end +-- end, { +-- nargs = "?", -- allow 0 or 1 argument +-- complete = "file", -- tab-complete filenames +-- }) +-- end, +-- }) + +---------------------------------------------- +---------------------------------------------- +-- Useful tricks that do not fully work +---------------------------------------------- + +-- -- Show cursorline only in the active window +-- -- vim.api.nvim_create_autocmd({ "WinEnter", "BufEnter" }, { -- callback = function() -- local ft = vim.bo.filetype @@ -16,7 +104,7 @@ vim.api.nvim_create_autocmd("TextYankPost", { -- -- end -- end, -- }) --- + -- vim.api.nvim_create_autocmd({ "WinLeave", "BufLeave" }, { -- callback = function() -- local ft = vim.bo.filetype @@ -27,15 +115,13 @@ vim.api.nvim_create_autocmd("TextYankPost", { -- end, -- }) --- Reload Invero colorscheme without restarting Neovim -vim.api.nvim_create_user_command("ReloadInvero", function() - -- clear the cached modules so require() reloads them - for k in pairs(package.loaded) do - if k:match("^themes%.invero") then - package.loaded[k] = nil - end - end +---------------------------------------------- - -- reload the colorscheme - vim.cmd("colorscheme invero") -end, { desc = "Reload the Invero theme" }) +-- -- Associate filetype +-- +-- vim.api.nvim_create_autocmd("FileType", { +-- pattern = "text", +-- callback = function() +-- vim.bo.filetype = "markdown" +-- end, +-- }) diff --git a/config/linux-dev/nvim/lua/plugins/nvim-tree.lua b/config/linux-dev/nvim/lua/plugins/nvim-tree.lua index 3109785..9bca678 100644 --- a/config/linux-dev/nvim/lua/plugins/nvim-tree.lua +++ b/config/linux-dev/nvim/lua/plugins/nvim-tree.lua @@ -1,136 +1,137 @@ return { - "nvim-tree/nvim-tree.lua", - version = "*", - lazy = false, - keys = { - { "et", ":NvimTreeToggle", desc = "Explorer Toggle", silent = true }, - }, - config = function() - require("nvim-tree").setup { - hijack_cursor = true, - disable_netrw = true, - hijack_netrw = true, - hijack_unnamed_buffer_when_opening = true, - root_dirs = { ".git", "package.json" }, - prefer_startup_root = true, - sync_root_with_cwd = true, - reload_on_bufenter = true, - respect_buf_cwd = true, - view = { - centralize_selection = false, - cursorline = true, - cursorlineopt = "both", - debounce_delay = 15, - side = "left", - preserve_window_proportions = false, - number = false, - relativenumber = false, - signcolumn = "no", - width = 30, - }, - renderer = { - add_trailing = false, - group_empty = false, - full_name = false, - root_folder_label = false, - special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" }, - symlink_destination = true, - icons = { - padding = "", - glyphs = { - folder = { - arrow_closed = "+", - arrow_open = "-", - }, - }, - show = { - file = false, - folder = false, - folder_arrow = true, - git = false, - modified = false, - hidden = false, - diagnostics = false, - bookmarks = false, - }, - } - }, - hijack_directories = { - enable = true, - auto_open = true, - }, - update_focused_file = { - enable = true, - update_root = { - enable = true, - ignore_list = {}, - }, - exclude = false, - }, - filters = { - enable = true, - git_ignored = true, - dotfiles = false, - git_clean = false, - no_buffer = false, - no_bookmark = false, - custom = {}, - exclude = {}, - }, - live_filter = { - prefix = "[FILTER]: ", - always_show_folders = true, - }, - filesystem_watchers = { - enable = true, - debounce_delay = 50, - ignore_dirs = { - -- C / C++ - "/.ccls-cache", - "/build", - "/out", - "/cmake-build-*", + "nvim-tree/nvim-tree.lua", + version = "*", + lazy = false, + keys = { + { "et", ":NvimTreeToggle", desc = "Explorer Toggle", silent = true }, + }, + config = function() + require("nvim-tree").setup({ + hijack_cursor = true, + disable_netrw = true, + hijack_netrw = true, + hijack_unnamed_buffer_when_opening = true, + root_dirs = { ".git", "package.json" }, + prefer_startup_root = true, + sync_root_with_cwd = true, + reload_on_bufenter = true, + respect_buf_cwd = true, + view = { + centralize_selection = false, + cursorline = true, + cursorlineopt = "both", + debounce_delay = 15, + side = "left", + preserve_window_proportions = false, + number = false, + relativenumber = false, + signcolumn = "no", + width = 30, + }, + renderer = { + add_trailing = false, + group_empty = false, + full_name = false, + root_folder_label = false, + -- special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" }, + special_files = {}, -- keep to overwrite defaults + symlink_destination = true, + icons = { + padding = "", + glyphs = { + folder = { + arrow_closed = "+", + arrow_open = "-", + }, + }, + show = { + file = false, + folder = false, + folder_arrow = true, + git = false, + modified = false, + hidden = false, + diagnostics = false, + bookmarks = false, + }, + }, + }, + hijack_directories = { + enable = true, + auto_open = true, + }, + update_focused_file = { + enable = true, + update_root = { + enable = true, + ignore_list = {}, + }, + exclude = false, + }, + filters = { + enable = true, + git_ignored = true, + dotfiles = false, + git_clean = false, + no_buffer = false, + no_bookmark = false, + custom = {}, + exclude = {}, + }, + live_filter = { + prefix = "[FILTER]: ", + always_show_folders = true, + }, + filesystem_watchers = { + enable = true, + debounce_delay = 50, + ignore_dirs = { + -- C / C++ + "/.ccls-cache", + "/build", + "/out", + "/cmake-build-*", - -- Node.js / Web - "/node_modules", - "/dist", - "/.next", - "/.nuxt", - "/coverage", - "/storybook-static", + -- Node.js / Web + "/node_modules", + "/dist", + "/.next", + "/.nuxt", + "/coverage", + "/storybook-static", - -- Rust - "/target", + -- Rust + "/target", - -- Java / JVM - "/target", -- (Maven) - "/build", -- (Gradle) - "/out", -- (IDEA / javac) + -- Java / JVM + "/target", -- (Maven) + "/build", -- (Gradle) + "/out", -- (IDEA / javac) - -- Python - "/.venv", - "/venv", - "/__pycache__", - "/.mypy_cache", - "/.pytest_cache", + -- Python + "/.venv", + "/venv", + "/__pycache__", + "/.mypy_cache", + "/.pytest_cache", - -- Go - "/bin", - "/pkg", + -- Go + "/bin", + "/pkg", - -- General - "/tmp", - "/.cache", - "/.idea", - "/.vscode", - "/logs", - } - }, - trash = { - cmd = "gio trash", - }, - } - end, + -- General + "/tmp", + "/.cache", + "/.idea", + "/.vscode", + "/logs", + }, + }, + trash = { + cmd = "gio trash", + }, + }) + end, } -- return { diff --git a/config/linux-dev/nvim/lua/plugins/treesitter.lua b/config/linux-dev/nvim/lua/plugins/treesitter.lua index 253dc20..990e98c 100644 --- a/config/linux-dev/nvim/lua/plugins/treesitter.lua +++ b/config/linux-dev/nvim/lua/plugins/treesitter.lua @@ -1,34 +1,32 @@ return { - 'nvim-treesitter/nvim-treesitter', - build = 'TSUpdate', - main = 'nvim-treesitter.configs', - opts = { - ensure_installed = { - 'diff', - 'lua', - 'html', - 'css', - 'javascript', - 'typescript', - 'tsx', - 'markdown', - 'markdown_inline' - }, - auto_install = true, - highlight = { - enable = true, - }, - indent = { enable = true } - }, - config = function(_, opts) - require('nvim-treesitter.configs').setup(opts) - -- Add MDX filetype detection - vim.filetype.add({ - extension = { - mdx = 'markdown.mdx', - }, - }) - end, - + "nvim-treesitter/nvim-treesitter", + build = "TSUpdate", + main = "nvim-treesitter.configs", + opts = { + ensure_installed = { + "diff", + "lua", + "html", + "css", + "javascript", + "typescript", + "tsx", + "markdown", + "markdown_inline", + }, + auto_install = true, + highlight = { + enable = true, + }, + indent = { enable = true }, + }, + config = function(_, opts) + require("nvim-treesitter.configs").setup(opts) + -- Add MDX filetype detection + vim.filetype.add({ + extension = { + mdx = "markdown.mdx", + }, + }) + end, } - diff --git a/config/linux-dev/nvim/lua/themes/invero/colors.lua b/config/linux-dev/nvim/lua/themes/invero/colors.lua index 4a39106..28bf7bd 100644 --- a/config/linux-dev/nvim/lua/themes/invero/colors.lua +++ b/config/linux-dev/nvim/lua/themes/invero/colors.lua @@ -1,19 +1,18 @@ local M = {} function M.get(P) - local colors = { - base = P.white, - surface = P.gray_light, - text = P.black, - muted = P.gray, - accent = P.blue, - accent_light = P.blue_light, - syntax = 60, - none = "NONE", - } + local colors = { + base = P.white, + surface = P.gray_light, + text = P.black, + muted = P.gray, + accent = P.blue, + accent_light = P.blue_light, + syntax = P.slate_indigo, + none = "NONE", + } - return vim.tbl_extend("force", P, colors) + return vim.tbl_extend("force", P, colors) end return M - diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua b/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua index b59fe1f..a46e13d 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua @@ -3,16 +3,18 @@ local M = {} function M.get(C) return { Normal = { fg = C.text, bg = C.none }, + Directory = { fg = C.accent }, + Question = { fg = C.text }, LineNr = { fg = C.muted }, CursorLineNr = { fg = C.accent, bold = true }, CursorLine = { bg = C.surface }, Visual = { bg = C.accent_light }, Search = { fg = C.yellow }, - CurSearch = { fg = C.base, bg = C.yellow, bold = true }, - IncSearch = { fg = C.base, bg = C.yellow, bold = true }, + CurSearch = { fg = C.yellow, bg = C.none, bold = true }, + IncSearch = { fg = C.yellow, bg = C.none, bold = true }, - MatchParen = { fg = C.base, bg = C.accent }, + MatchParen = { fg = C.accent, bg = C.accent_light, bold = true }, EndOfBuffer = { fg = C.base }, -- End-of-buffer marker (~ lines) WinSeparator = { fg = C.muted }, @@ -24,13 +26,6 @@ function M.get(C) TabLine = { fg = C.muted }, -- Unselected tab TabLineSel = { fg = C.text, bold = true }, -- Selected tab TabLineFill = { bg = C.none }, -- Empty space in the tabline - - -- DiagnosticError = { undercurl = true, sp = C.red }, - -- DiagnosticWarn = { undercurl = true, sp = C.yellow }, - -- DiagnosticInfo = { underline = true, sp = C.accent }, - -- DiagnosticHint = { underline = true, sp = C.green }, - - Directory = { fg = C.accent }, } end diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/nvim-tree.lua b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/nvim-tree.lua index cd2b791..707adf2 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/nvim-tree.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/nvim-tree.lua @@ -1,13 +1,7 @@ local M = {} function M.get(C) - return { - NvimTreeFolderIcon = { fg = C.accent }, - NvimTreeRootFolder = { fg = C.text, bold = true }, - -- NvimTreeOpenedHL = { bg = C.surface }, - } + return {} end return M - - diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua index dd4dbd0..d5618b3 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/telescope.lua @@ -2,10 +2,7 @@ local M = {} function M.get(C) return { - -- TelescopeBorder = { fg = C.muted, bg = C.green }, - TelescopePrompt = { fg = C.text, bg = C.green }, - -- TelescopePromptPrefix = { fg = C.accent, bg = C.red }, - -- TelescopeSelection = { bg = C.surface }, + TelescopeMatching = { fg = C.yellow, bg = C.none, bold = true }, } end diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua index 4ff2239..b791f65 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/integrations/tree-sitter.lua @@ -1,24 +1,20 @@ local M = {} function M.get(C) - local theme = { - ["@comment"] = { fg = C.muted, italic = true }, - ["@spell"] = { fg = C.syntax }, - ["@markup"] = { fg = C.syntax }, - ["@text"] = { fg = C.syntax }, - ["@property"] = { fg = C.syntax }, - ["@conceal"] = { fg = C.syntax }, - } + return { + ["@constant.macro"] = { fg = C.syntax }, + ["@function.method"] = { fg = C.syntax }, + ["@type.qualifier"] = { fg = C.syntax }, + ["@variable.parameter"] = { fg = C.syntax }, + ["@variable"] = { fg = C.syntax }, + ["@type.definition"] = { fg = C.syntax }, + ["@markup.italic"] = { fg = C.syntax }, + ["@markup.strong"] = { fg = C.syntax }, + ["@markup.underline"] = { fg = C.syntax }, + ["@markup.strikethrough"] = { fg = C.syntax }, - for _, hl in ipairs(vim.fn.getcompletion("@", "highlight")) do - if theme[hl] == nil then - theme[hl] = { fg = C.syntax } - end - end - - return theme + ["@_jsx_attribute"] = { link = "Constant" }, + } end return M - - diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua b/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua index 0be0ac6..6f315cd 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua @@ -1,9 +1,36 @@ local M = {} --- fallback for vim without tree-sitter function M.get(C) - return {} + return { + Comment = { fg = C.muted, italic = true }, + + -- general + Constant = { fg = C.syntax }, + String = { fg = C.syntax }, + Function = { fg = C.syntax }, + Type = { fg = C.syntax }, + Statement = { fg = C.syntax }, + Identifier = { fg = C.syntax }, + Operator = { fg = C.syntax }, + PreProc = { fg = C.syntax }, + Special = { fg = C.syntax }, + Delimiter = { fg = C.syntax }, + Todo = { fg = C.syntax }, + Title = { fg = C.syntax }, + Underlined = { fg = C.syntax }, + + -- diffs + Added = { fg = C.green }, + Removed = { fg = C.red }, + Changed = { fg = C.yellow }, + + -- diagnostics + DiagnosticInfo = { fg = C.blue }, + DiagnosticWarn = { fg = C.yellow }, + DiagnosticError = { fg = C.red }, + DiagnosticDeprecated = { fg = C.magenta }, + DiagnosticUnderlineError = { fg = C.syntax, underline = true }, + } end return M - diff --git a/config/linux-dev/nvim/lua/themes/invero/init.lua b/config/linux-dev/nvim/lua/themes/invero/init.lua index f2db87c..c6f0068 100644 --- a/config/linux-dev/nvim/lua/themes/invero/init.lua +++ b/config/linux-dev/nvim/lua/themes/invero/init.lua @@ -1,12 +1,14 @@ local M = { - name = "invero", - variant = "light", + name = "invero", + variant = "light", + mode = "ansi", + exclude_integrations = {}, } function M.load() - local setup = require("themes." .. M.name .. ".setup") - setup.reset(M) - setup.apply(M) + local setup = require("themes." .. M.name .. ".setup") + setup.reset(M) + setup.apply(M) end return M diff --git a/config/linux-dev/nvim/lua/themes/invero/palette.lua b/config/linux-dev/nvim/lua/themes/invero/palette.lua index b2aafde..e8638b2 100644 --- a/config/linux-dev/nvim/lua/themes/invero/palette.lua +++ b/config/linux-dev/nvim/lua/themes/invero/palette.lua @@ -1,37 +1,52 @@ local M = {} -function M.get() - return { - black = 0, - gray = 247, - gray_light = 253, - red = 1, - green = 2, - yellow = 3, - yellow_light = 180, - blue = 4, - blue_light = 153, - magenta = 5, - cyan = 6, - white = 7, - } +local modes = { + ansi = { + black = 0, + red = 1, + green = 2, + yellow = 3, + blue = 4, + magenta = 5, + cyan = 6, + white = 7, + }, + default = { + black = 238, + red = 196, + green = 35, + yellow = 221, + blue = 27, + magenta = 125, + cyan = 30, + white = 255, + }, +} - -- return { - -- black = 238, - -- gray = 247, - -- gray_light = 253, - -- red = 196, - -- green = 35, - -- yellow = 221, - -- orange = 166, - -- orange_light = 180, - -- blue = 27, - -- blue_light = 153, - -- magenta = 125, - -- cyan = 30, - -- white = 255, - -- } +local shared_palette = { + gray = 247, + gray_light = 253, + orange = 166, + orange_light = 180, + yellow_light = 180, + blue_light = 153, + slate_indigo = 60, +} + +---Get color palette +---@param mode '"ansi"'|'"default"' +---@return table +function M.get(mode) + local mode_palette = modes[mode] + if not mode_palette then + vim.notify( + string.format('Invalid palette mode: "%s" (valid: ansi, default)', tostring(mode)), + vim.log.levels.WARN, + { title = "palette" } + ) + mode_palette = modes.default + end + return vim.tbl_extend("force", mode_palette, shared_palette) end return M - diff --git a/config/linux-dev/nvim/lua/themes/invero/setup.lua b/config/linux-dev/nvim/lua/themes/invero/setup.lua index edf5628..bf8bc05 100644 --- a/config/linux-dev/nvim/lua/themes/invero/setup.lua +++ b/config/linux-dev/nvim/lua/themes/invero/setup.lua @@ -20,7 +20,7 @@ end function M.apply(theme) local base = "themes." .. theme.name - local P = require(base .. ".palette").get() + local P = require(base .. ".palette").get(theme.mode) local C = require(base .. ".colors").get(P) local modules = { @@ -54,19 +54,10 @@ function M.apply(theme) end local hl = {} - -- ALT: Use both scenarios - -- if type(v) == "number" then - -- hl.ctermfg = v - -- else - -- hl.fg = v - -- end - for k, v in pairs(opts) do if k == "fg" then - hl.fg = v hl.ctermfg = v elseif k == "bg" then - hl.bg = v hl.ctermbg = v else hl[k] = v -- bold, italic, underline, sp, etc. -- 2.45.2 From f87edeefaca499cf5fbc454b586278e69cd13920 Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Fri, 26 Sep 2025 01:10:59 +0000 Subject: [PATCH 06/15] add comments --- config/linux-dev/nvim/init.lua | 24 ++++++++++++++++--- config/linux-dev/nvim/lua/config/autocmds.lua | 23 +++++++++--------- config/linux-dev/nvim/lua/config/options.lua | 3 +-- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/config/linux-dev/nvim/init.lua b/config/linux-dev/nvim/init.lua index 2157826..46251f0 100644 --- a/config/linux-dev/nvim/init.lua +++ b/config/linux-dev/nvim/init.lua @@ -1,4 +1,22 @@ -require('config.options') -require('config.keymaps') -require('config.lazy') +--[[ + Neovim Lua config: ways to set things + + - vim.opt : preferred modern API for options (handles lists, cleaner syntax) + - vim.g : global variables (leader key, plugin settings, disable builtins, etc.) + - vim.o : global-only option (rarely needed directly) + - vim.wo : window-local option (applies to current window only, use in autocmds) + - vim.bo : buffer-local option (applies to current buffer only, use in autocmds) + - vim.env : set environment variables (like PATH, LANG) + - vim.fn : call Vimscript functions (e.g. vim.fn.getcwd()) + - vim.cmd : run raw Vimscript/Ex commands (e.g. vim.cmd("colorscheme desert")) + - vim.api : low-level Neovim API (create autocmds, keymaps, buffer/window ops, etc.) + + TL;DR -> use vim.opt + vim.g in options.lua for defaults. + Use vim.wo/vim.bo only in context-specific tweaks (autocmds). + Use vim.env, vim.fn, vim.cmd, vim.api as needed for scripting. +]] + +require("config.options") +require("config.keymaps") +require("config.lazy") require("config.autocmds") diff --git a/config/linux-dev/nvim/lua/config/autocmds.lua b/config/linux-dev/nvim/lua/config/autocmds.lua index db7fb38..dd2f7da 100644 --- a/config/linux-dev/nvim/lua/config/autocmds.lua +++ b/config/linux-dev/nvim/lua/config/autocmds.lua @@ -29,16 +29,18 @@ end, { desc = "Reload the current colorscheme" }) ---------------------------------------------- --- Command `:TSHighlightRoots` (works but uncomment only when used) --- Description: --- Collects all Tree-sitter highlight groups, resolves their links, --- and outputs the unique root groups actually used (for theming/debugging). --- --- Usage: --- :TSHighlightRoots → prints roots in the command line --- :TSHighlightRoots → writes roots into (overwrites) --- (filename supports `~` and tab-completion) --- +--[[ +Command :TSHighlightRoots (works but uncomment only when used) + +Description: + Collects all Tree-sitter highlight groups, resolves their links, + and outputs the unique root groups actually used (for theming/debugging). + +Usage: + :TSHighlightRoots -> prints roots in the command line + :TSHighlightRoots -> writes roots into (overwrites) + (filename supports ~ and tab-completion) +]] -- local function resolve_link(name) -- local seen = {} -- while name and not seen[name] do @@ -88,7 +90,6 @@ end, { desc = "Reload the current colorscheme" }) -- end, -- }) ----------------------------------------------- ---------------------------------------------- -- Useful tricks that do not fully work ---------------------------------------------- diff --git a/config/linux-dev/nvim/lua/config/options.lua b/config/linux-dev/nvim/lua/config/options.lua index a028c3b..8cc412d 100644 --- a/config/linux-dev/nvim/lua/config/options.lua +++ b/config/linux-dev/nvim/lua/config/options.lua @@ -40,8 +40,7 @@ vim.opt.mouse = "a" -- Full path on status line vim.opt.statusline = "%= %F%m%r%h%w ─ (%l,%c %P) %=" -vim.opt.fillchars:append({ stl = '─', stlnc = '─' }) - +vim.opt.fillchars:append({ stl = "─", stlnc = "─" }) -- Sync clipboard between OS and Neovim vim.schedule(function() -- 2.45.2 From 2b028ae5d07c62d8d05d0d846b163c3558f780b4 Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Fri, 26 Sep 2025 02:44:53 +0000 Subject: [PATCH 07/15] add outline --- config/linux-dev/nvim/lua/themes/invero/colors.lua | 1 + config/linux-dev/nvim/lua/themes/invero/groups/editor.lua | 4 ++-- config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua | 6 ++++-- config/linux-dev/nvim/lua/themes/invero/palette.lua | 1 + 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/config/linux-dev/nvim/lua/themes/invero/colors.lua b/config/linux-dev/nvim/lua/themes/invero/colors.lua index 28bf7bd..e3758b5 100644 --- a/config/linux-dev/nvim/lua/themes/invero/colors.lua +++ b/config/linux-dev/nvim/lua/themes/invero/colors.lua @@ -4,6 +4,7 @@ function M.get(P) local colors = { base = P.white, surface = P.gray_light, + outline = P.gray_dark, text = P.black, muted = P.gray, accent = P.blue, diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua b/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua index a46e13d..3adae6b 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/editor.lua @@ -17,8 +17,8 @@ function M.get(C) MatchParen = { fg = C.accent, bg = C.accent_light, bold = true }, EndOfBuffer = { fg = C.base }, -- End-of-buffer marker (~ lines) - WinSeparator = { fg = C.muted }, - StatusLine = { fg = C.muted, bg = C.none }, -- Active statusline (where filename) + WinSeparator = { fg = C.outline }, + StatusLine = { fg = C.outline, bg = C.none }, -- Active statusline (where filename) MsgArea = { fg = C.text, bg = C.none }, -- Command-line / message area MsgSeparator = { fg = C.text, bg = C.surface }, -- Separator for messages ModeMsg = { fg = C.text }, diff --git a/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua b/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua index 6f315cd..e34bec4 100644 --- a/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua +++ b/config/linux-dev/nvim/lua/themes/invero/groups/syntax.lua @@ -3,10 +3,12 @@ local M = {} function M.get(C) return { Comment = { fg = C.muted, italic = true }, + String = { fg = C.green }, + Boolean = { fg = C.accent, bold = true, italic = true }, + Number = { fg = C.accent }, - -- general + -- syntax color Constant = { fg = C.syntax }, - String = { fg = C.syntax }, Function = { fg = C.syntax }, Type = { fg = C.syntax }, Statement = { fg = C.syntax }, diff --git a/config/linux-dev/nvim/lua/themes/invero/palette.lua b/config/linux-dev/nvim/lua/themes/invero/palette.lua index e8638b2..8ab1836 100644 --- a/config/linux-dev/nvim/lua/themes/invero/palette.lua +++ b/config/linux-dev/nvim/lua/themes/invero/palette.lua @@ -24,6 +24,7 @@ local modes = { } local shared_palette = { + gray_dark = 245, gray = 247, gray_light = 253, orange = 166, -- 2.45.2 From 926386095fd36904cb80422ba53478b7d9803bcb Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Mon, 15 Sep 2025 06:59:56 +0200 Subject: [PATCH 08/15] minor updates --- .../automatic_backups/karabiner_20250531.json | 43 ++++++++++ config/macos/karabiner/karabiner.json | 1 + config/shared/ghostty/config | 16 ++-- config/shared/nvim | 2 + config/shared/zsh | 83 +------------------ 5 files changed, 58 insertions(+), 87 deletions(-) create mode 100644 config/macos/karabiner/automatic_backups/karabiner_20250531.json diff --git a/config/macos/karabiner/automatic_backups/karabiner_20250531.json b/config/macos/karabiner/automatic_backups/karabiner_20250531.json new file mode 100644 index 0000000..672a8e8 --- /dev/null +++ b/config/macos/karabiner/automatic_backups/karabiner_20250531.json @@ -0,0 +1,43 @@ +{ + "profiles": [ + { + "devices": [ + { + "identifiers": { "is_keyboard": true }, + "simple_modifications": [ + { + "from": { "key_code": "non_us_backslash" }, + "to": [{ "key_code": "grave_accent_and_tilde" }] + } + ] + }, + { + "identifiers": { + "is_keyboard": true, + "product_id": 49164, + "vendor_id": 7276 + }, + "simple_modifications": [ + { + "from": { "key_code": "left_command" }, + "to": [{ "key_code": "left_option" }] + }, + { + "from": { "key_code": "left_option" }, + "to": [{ "key_code": "left_command" }] + } + ] + } + ], + "name": "Default profile", + "selected": true, + "simple_modifications": [ + { + "from": { "key_code": "caps_lock" }, + "to": [{ "key_code": "left_control" }] + } + ], + "virtual_hid_keyboard": { "keyboard_type_v2": "ansi" } + } + ] +} \ No newline at end of file diff --git a/config/macos/karabiner/karabiner.json b/config/macos/karabiner/karabiner.json index 672a8e8..52bcba2 100644 --- a/config/macos/karabiner/karabiner.json +++ b/config/macos/karabiner/karabiner.json @@ -1,4 +1,5 @@ { + "global": { "show_in_menu_bar": false }, "profiles": [ { "devices": [ diff --git a/config/shared/ghostty/config b/config/shared/ghostty/config index 2b20b3c..93c839a 100644 --- a/config/shared/ghostty/config +++ b/config/shared/ghostty/config @@ -1,4 +1,4 @@ -theme = catppuccin-frappe +theme = catppuccin-latte # Terminal term = "xterm-256color" @@ -9,9 +9,9 @@ font-size = 14 font-thicken = true # Cell width (affects letter spacing) -adjust-cell-width = -1 -adjust-cell-height = -1 -adjust-font-baseline = -1 +# adjust-cell-width = -1 +# adjust-cell-height = -1 +# adjust-font-baseline = -1 # Cursor cursor-style-blink = false @@ -32,8 +32,8 @@ window-width = 100 window-height = 26 window-padding-x = 4 window-padding-y = 2 -window-colorspace = display-p3 -macos-titlebar-style = native +# window-colorspace = display-p3 +# macos-titlebar-style = native #macos-titlebar-style = transparent @@ -42,8 +42,8 @@ macos-titlebar-style = native #window-padding-balance = true # Background -background-opacity = 1 -background-blur-radius = 0 +# background-opacity = 1 +# background-blur-radius = 0 diff --git a/config/shared/nvim b/config/shared/nvim index 863b000..ecae856 100644 --- a/config/shared/nvim +++ b/config/shared/nvim @@ -20,6 +20,8 @@ local function nmap(lhs, rhs, opts) map("n", lhs, rhs, opts) end local function imap(lhs, rhs, opts) map("i", lhs, rhs, opts) end local function vmap(lhs, rhs, opts) map("v", lhs, rhs, opts) end local function tmap(lhs, rhs, opts) map("t", lhs, rhs, opts) end +vim.opt.signcolumn = "no" + -- Map Leader vim.g.mapleader = " " diff --git a/config/shared/zsh b/config/shared/zsh index 79babb1..1e13a5f 100644 --- a/config/shared/zsh +++ b/config/shared/zsh @@ -1,81 +1,6 @@ -# Add /bin to path -export PATH="$PATH:$HOME/bin" - -# Set locales -export LANGUAGE="en_US:en" -export LANG=en_US.UTF-8 -export LC_ALL=en_US.UTF-8 - -autoload -Uz compinit && compinit # Autocomplete -zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case Insensitive - -setopt autocd # cd without it -setopt share_history - -# Set terminal title to hostname -echo -n -e "\033]0;SSH: $(hostname)\007" - -# Git prompt function -git_prompt_info() { - if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then - local branch=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --short HEAD) - echo " %F{green}($branch)%f" - fi -} - -# Set up the prompt -setopt PROMPT_SUBST # Dyna -PROMPT='%n@%m%f %F{blue}%~%f$(git_prompt_info) $ ' - -# Disable the log builtin, so we don't conflict with /usr/bin/log -disable log - -# Save command history -HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history -HISTSIZE=2000 -SAVEHIST=1000 -setopt HIST_IGNORE_ALL_DUPS - -# Load functions -autoload -U up-line-or-beginning-search -autoload -U down-line-or-beginning-search -zle -N up-line-or-beginning-search -zle -N down-line-or-beginning-search - -# Bind both common escape sequences -bindkey '^[[A' up-line-or-beginning-search # normal mode -bindkey '^[OA' up-line-or-beginning-search # application mode -bindkey '^[[B' down-line-or-beginning-search # normal mode -bindkey '^[OB' down-line-or-beginning-search # application mode - -# Aliases for ls -OS_TYPE=$(uname) -if [[ "$OS_TYPE" == "Linux" ]]; then - alias ls='ls --color=auto --group-directories-first' -elif [[ "$OS_TYPE" == "Darwin" ]]; then - alias ls='ls --color=auto' +if [ -f "$HOME/.config/zsh/zshrc" ]; then + source "$HOME/.config/zsh/zshrc" +else + echo "Warning: ~/.config/zsh/zshrc not found, skipping custom Zsh configuration." fi -alias ll='ls -lF' -alias lla='ll -a' -alias ld='ls -ld */' # List only directories -# Aliases for git -alias g='git' -alias ga='git add' -alias gaa='git add --all' -alias gb='git branch' -alias gcm='git commit -m' -alias gam='git commit -am' -alias gco='git checkout' -alias gd='git diff' -alias gf='git fetch' -alias gl='git pull' -alias gp='git push' -alias gst='git status' -alias glg='git log --graph --oneline --decorate --all' -alias gm='git merge' -alias grb='git rebase' -alias grs='git reset' -alias grv='git remote -v' - -alias tree='tree -I node_modules' -- 2.45.2 From 6c0502d0d2560816bedda1aa26b191c7676aad8c Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Mon, 15 Sep 2025 07:05:06 +0200 Subject: [PATCH 09/15] split zsh in config modules --- config/shared/zsh/zsh_config/aliases | 45 ++++++++++++++++++++++ config/shared/zsh/zsh_config/keybindings | 16 ++++++++ config/shared/zsh/zsh_config/prompt | 15 ++++++++ config/shared/zsh/zsh_config/zshrc | 48 ++++++++++++++++++++++++ config/shared/{zsh => zsh/zshrc_root} | 0 5 files changed, 124 insertions(+) create mode 100644 config/shared/zsh/zsh_config/aliases create mode 100644 config/shared/zsh/zsh_config/keybindings create mode 100644 config/shared/zsh/zsh_config/prompt create mode 100644 config/shared/zsh/zsh_config/zshrc rename config/shared/{zsh => zsh/zshrc_root} (100%) diff --git a/config/shared/zsh/zsh_config/aliases b/config/shared/zsh/zsh_config/aliases new file mode 100644 index 0000000..b32ac20 --- /dev/null +++ b/config/shared/zsh/zsh_config/aliases @@ -0,0 +1,45 @@ +# ----------------------------- +# OS-specific aliases for ls +# ----------------------------- +OS_TYPE=$(uname) +if [[ "$OS_TYPE" == "Linux" ]]; then + alias ls='ls --color=auto --group-directories-first' +elif [[ "$OS_TYPE" == "Darwin" ]]; then + alias ls='ls --color=auto' +fi + +alias ll='ls -lF' +alias lla='ll -a' +alias ld='ls -ld */' + +# ----------------------------- +# Vim / Neovim +# ----------------------------- +if command -v nvim >/dev/null 2>&1; then + alias vim='nvim' +else + alias vim='vim' +fi + +# ----------------------------- +# Git aliases +# ----------------------------- +alias g='git' +alias ga='git add' +alias gaa='git add --all' +alias gb='git branch' +alias gcm='git commit -m' +alias gam='git commit -am' +alias gco='git checkout' +alias gd='git diff' +alias gf='git fetch' +alias gl='git pull' +alias gp='git push' +alias gst='git status' +alias glg='git log --graph --oneline --decorate --all' +alias gm='git merge' +alias grb='git rebase' +alias grs='git reset' +alias grv='git remote -v' +alias tree='tree -I node_modules' + diff --git a/config/shared/zsh/zsh_config/keybindings b/config/shared/zsh/zsh_config/keybindings new file mode 100644 index 0000000..b6a70ca --- /dev/null +++ b/config/shared/zsh/zsh_config/keybindings @@ -0,0 +1,16 @@ +# ----------------------------- +# ZLE functions +# ----------------------------- +autoload -U up-line-or-beginning-search +autoload -U down-line-or-beginning-search +zle -N up-line-or-beginning-search +zle -N down-line-or-beginning-search + +# ----------------------------- +# Bind keys for history search +# ----------------------------- +bindkey '^[[A' up-line-or-beginning-search +bindkey '^[OA' up-line-or-beginning-search +bindkey '^[[B' down-line-or-beginning-search +bindkey '^[OB' down-line-or-beginning-search + diff --git a/config/shared/zsh/zsh_config/prompt b/config/shared/zsh/zsh_config/prompt new file mode 100644 index 0000000..2610971 --- /dev/null +++ b/config/shared/zsh/zsh_config/prompt @@ -0,0 +1,15 @@ +# ----------------------------- +# Git prompt function +# ----------------------------- +git_prompt_info() { + if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then + local branch=$(git symbolic-ref --short HEAD 2>/dev/null || git rev-parse --short HEAD) + echo " %F{green}($branch)%f" + fi +} + +# ----------------------------- +# Set prompt +# ----------------------------- +PROMPT='%n@%m%f %F{blue}%~%f$(git_prompt_info) $ ' + diff --git a/config/shared/zsh/zsh_config/zshrc b/config/shared/zsh/zsh_config/zshrc new file mode 100644 index 0000000..efeb1d0 --- /dev/null +++ b/config/shared/zsh/zsh_config/zshrc @@ -0,0 +1,48 @@ +# ----------------------------- +# PATH +# ----------------------------- +export PATH="$PATH:$HOME/bin" + +# ----------------------------- +# Locales +# ----------------------------- +export LANGUAGE="en_US:en" +export LANG=en_US.UTF-8 +export LC_ALL=en_US.UTF-8 + +# ----------------------------- +# Autocomplete +# ----------------------------- +autoload -Uz compinit && compinit +zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' # Case insensitive + +# ----------------------------- +# Shell options +# ----------------------------- +setopt autocd +setopt share_history +setopt interactivecomments +setopt PROMPT_SUBST # Enable dynamic prompt expansion + +# ----------------------------- +# Disable conflicting builtins +# ----------------------------- +disable log + +# ----------------------------- +# History +# ----------------------------- +HISTFILE=${ZDOTDIR:-$HOME}/.zsh_history +HISTSIZE=2000 +SAVEHIST=1000 +setopt HIST_IGNORE_ALL_DUPS + +# ----------------------------- +# Source modular components +# ----------------------------- +CONFIG_DIR="$HOME/.config/zsh" + +[ -f "$CONFIG_DIR/aliases" ] && source "$CONFIG_DIR/aliases" +[ -f "$CONFIG_DIR/prompt" ] && source "$CONFIG_DIR/prompt" +[ -f "$CONFIG_DIR/keybindings" ] && source "$CONFIG_DIR/keybindings" + diff --git a/config/shared/zsh b/config/shared/zsh/zshrc_root similarity index 100% rename from config/shared/zsh rename to config/shared/zsh/zshrc_root -- 2.45.2 From 700b8d11afb8bf850f255e7552dfbd4f9068584d Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Mon, 15 Sep 2025 07:05:21 +0200 Subject: [PATCH 10/15] add vm bin script --- config/macos/bin/vm | 71 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 config/macos/bin/vm diff --git a/config/macos/bin/vm b/config/macos/bin/vm new file mode 100755 index 0000000..442061c --- /dev/null +++ b/config/macos/bin/vm @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +# ~/bin/vm +# +# SSH helper script for connecting to VMs or workstations. +# Usage: +# vm [--no-tmux] +# +# Host patterns: +# personal-orb -> ssh $USER@personal@orb +# personal-utm -> ssh $USER@personal.utm.local +# personal-workstation -> ssh $USER@personal.workstation.lan +# +# Optional: +# --no-tmux -> skips attaching to tmux session + +skip_tmux=0 + +# Check for --no-tmux flag +if [[ "$1" == "--no-tmux" ]]; then + skip_tmux=1 + shift +fi + +full="$1" +user="$USER" +host="$full" + +# Split user@host if explicitly specified +if [[ "$full" == *@* ]]; then + user="${full%@*}" + host="${full#*@}" +fi + +# Map host patterns to SSH target and tmux session +case "$host" in + *-orb) + ssh_host="${host%-orb}@orb" + tmux_session="$host" + ;; + *-utm) + ssh_host="${host%-utm}.utm.local" + tmux_session="$host" + ssh_identity="$HOME/.ssh/id_ed25519_internal" + ;; + *-workstation) + ssh_host="${host%-workstation}.workstation.lan" + tmux_session="$host" + ssh_identity="$HOME/.ssh/id_ed25519_internal" + ;; + *) + echo "Error: unknown host pattern '$host'" >&2 + exit 1 + ;; +esac + +# Build SSH command safely using an array +ssh_cmd=(ssh -t) + +# Include identity file if needed +[[ -n "$ssh_identity" ]] && ssh_cmd+=(-i "$ssh_identity" -o IdentitiesOnly=yes) + +# Add target user and host +ssh_cmd+=("$user@$ssh_host") + +# Add tmux session unless skipped +[[ $skip_tmux -eq 0 ]] && ssh_cmd+=("tmux" "new" "-A" "-s" "$tmux_session") + +# Replace current shell with SSH command +# echo "Executing: ${ssh_cmd[*]}" >&2 +exec "${ssh_cmd[@]}" + -- 2.45.2 From 5b5683717d24fb223a8056b2812c2208af0c8b43 Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Mon, 15 Sep 2025 07:07:37 +0200 Subject: [PATCH 11/15] add new files to config --- config.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/config.json b/config.json index 91c7a1c..0cb5220 100644 --- a/config.json +++ b/config.json @@ -15,7 +15,10 @@ "post-link": "(grep -q 'alias vim=nvim' ~/.zshrc || echo 'alias vim=nvim' >> ~/.zshrc) || true" }, "zsh": { - "link": { "from": "shared/zsh", "to": "~/.zshrc" } + "link": { "from": "shared/zsh/zshrc_root", "to": "~/.zshrc" }, + }, + "zsh_config": { + "link": { "from": "shared/zsh/zsh", "to": "~/.config/zsh" }, }, "tmux": { "link": { "from": "shared/tmux", "to": "~/.tmux.conf" } @@ -36,6 +39,8 @@ "environments": { "macos": [ "zsh", + "zsh_config", + "bin", "tmux", "nvim", "git", @@ -55,6 +60,7 @@ } ], "linux-vm": [ + "zsh_config", { "package": "zsh", "install": "sudo apt install -y zsh", @@ -80,6 +86,7 @@ "bin" ], "linux-dev": [ + "zsh_config", { "package": "zsh", "install": "sudo apt install -y zsh", -- 2.45.2 From bf688e77dcebb858121af45c116745db5baab4ed Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Mon, 15 Sep 2025 08:19:46 +0300 Subject: [PATCH 12/15] fix zsh config paths --- config.json | 273 +++++++++++------- config/shared/{zsh => }/zsh_config/aliases | 0 .../shared/{zsh => }/zsh_config/keybindings | 0 config/shared/{zsh => }/zsh_config/prompt | 0 config/shared/{zsh => }/zsh_config/zshrc | 0 config/shared/{zsh/zshrc_root => zsh_root} | 0 6 files changed, 162 insertions(+), 111 deletions(-) rename config/shared/{zsh => }/zsh_config/aliases (100%) rename config/shared/{zsh => }/zsh_config/keybindings (100%) rename config/shared/{zsh => }/zsh_config/prompt (100%) rename config/shared/{zsh => }/zsh_config/zshrc (100%) rename config/shared/{zsh/zshrc_root => zsh_root} (100%) diff --git a/config.json b/config.json index 0cb5220..5e3732f 100644 --- a/config.json +++ b/config.json @@ -1,115 +1,166 @@ { - "template": { - "htop": { - "link": { "from": "shared/htop", "to": "~/.config/htop" } + "template": { + "htop": { + "link": { + "from": "shared/htop", + "to": "~/.config/htop" + } + }, + "bin": { + "link": { + "from": "shared/bin", + "to": "~/bin" + } + }, + "vim": { + "link": { + "from": "shared/vim", + "to": "~/.vimrc" + }, + "-post-link": "curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim && vim -es -u ~/.vimrc -i NONE -c 'PlugInstall' -c 'qa'" + }, + "nvim": { + "link": { + "from": "shared/nvim", + "to": "~/.config/nvim/init.lua" + }, + "post-link": "(grep -q 'alias vim=nvim' ~/.zshrc || echo 'alias vim=nvim' >> ~/.zshrc) || true" + }, + "zsh": { + "link": { + "from": "shared/zsh_root", + "to": "~/.zshrc" + } + }, + "zsh_config": { + "link": { + "from": "shared/zsh_config", + "to": "~/.config/zsh" + } + }, + "tmux": { + "link": { + "from": "shared/tmux", + "to": "~/.tmux.conf" + } + }, + "git": { + "link": { + "from": "shared/git", + "to": "~/.gitconfig" + } + }, + "wezterm": { + "link": { + "from": "shared/wezterm", + "to": "~/.wezterm.lua" + } + }, + "alacritty": { + "link": { + "from": "shared/alacritty", + "to": "~/.alacritty.toml" + } + }, + "ghostty": { + "link": { + "from": "shared/ghostty", + "to": "~/.config/ghostty" + } + } }, - "bin": { - "link": { "from": "shared/bin", "to": "~/bin" } - }, - "vim": { - "link": { "from": "shared/vim", "to": "~/.vimrc" }, - "-post-link": "curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim && vim -es -u ~/.vimrc -i NONE -c 'PlugInstall' -c 'qa'" - }, - "nvim": { - "link": { "from": "shared/nvim", "to": "~/.config/nvim/init.lua" }, - "post-link": "(grep -q 'alias vim=nvim' ~/.zshrc || echo 'alias vim=nvim' >> ~/.zshrc) || true" - }, - "zsh": { - "link": { "from": "shared/zsh/zshrc_root", "to": "~/.zshrc" }, - }, - "zsh_config": { - "link": { "from": "shared/zsh/zsh", "to": "~/.config/zsh" }, - }, - "tmux": { - "link": { "from": "shared/tmux", "to": "~/.tmux.conf" } - }, - "git": { - "link": { "from": "shared/git", "to": "~/.gitconfig" } - }, - "wezterm": { - "link": { "from": "shared/wezterm", "to": "~/.wezterm.lua" } - }, - "alacritty": { - "link": { "from": "shared/alacritty", "to": "~/.alacritty.toml" } - }, - "ghostty": { - "link": { "from": "shared/ghostty", "to": "~/.config/ghostty" } + "environments": { + "macos": [ + "zsh", + "zsh_config", + { + "package": "bin", + "link": { + "from": "macos/bin", + "to": "~/bin" + } + }, + "tmux", + "nvim", + "git", + "ghostty", + "alacritty", + { + "package": "karabiner", + "link": { + "from": "macos/karabiner", + "to": "~/.config/karabiner" + } + }, + { + "package": "linearmouse", + "link": { + "from": "macos/linearmouse", + "to": "~/.config/linearmouse" + } + }, + { + "package": "rectangle", + "link-comment": "Needs manual import from config/macos/linearmouse" + } + ], + "linux-vm": [ + "zsh_config", + { + "package": "zsh", + "install": "sudo apt install -y zsh", + "post-link": "./scripts/linux-setup_zsh.sh" + }, + { + "package": "tmux", + "link": { + "from": "linux-vm/tmux", + "to": "~/.tmux.conf" + }, + "install": "sudo apt install -y tmux" + }, + { + "package": "nvim", + "install": "bash -c 'wget -O nvim.deb https://gitea.tomastm.com/tomas.mirchev/neovim/releases/download/v0.10.0/nvim-linux-$(dpkg --print-architecture).deb && sudo dpkg -i nvim.deb && rm nvim.deb'" + }, + { + "package": "git", + "install": "sudo apt install -y git" + }, + { + "package": "htop", + "install": "sudo apt install -y htop" + }, + "bin" + ], + "linux-dev": [ + "zsh_config", + { + "package": "zsh", + "install": "sudo apt install -y zsh", + "post-link": "./scripts/linux-setup_zsh.sh" + }, + { + "package": "tmux", + "install": "sudo apt install -y tmux" + }, + { + "package": "nvim", + "ignore-template": true, + "link": { + "from": "linux-dev/nvim", + "to": "~/.config/nvim" + }, + "post-link": "nvim --headless '+Lazy! restore' '+MasonUpdate' '+TSUpdate' +qa && (grep -q 'alias vim=nvim' ~/.zshrc || echo 'alias vim=nvim' >> ~/.zshrc) || true" + }, + { + "package": "git", + "install": "sudo apt install -y git" + }, + { + "package": "htop", + "install": "sudo apt install -y htop" + } + ] } - }, - "environments": { - "macos": [ - "zsh", - "zsh_config", - "bin", - "tmux", - "nvim", - "git", - "ghostty", - "alacritty", - { - "package": "karabiner", - "link": { "from": "macos/karabiner", "to": "~/.config/karabiner" } - }, - { - "package": "linearmouse", - "link": { "from": "macos/linearmouse", "to": "~/.config/linearmouse" } - }, - { - "package": "rectangle", - "link-comment": "Needs manual import from config/macos/linearmouse" - } - ], - "linux-vm": [ - "zsh_config", - { - "package": "zsh", - "install": "sudo apt install -y zsh", - "post-link": "./scripts/linux-setup_zsh.sh" - }, - { - "package": "tmux", - "link": { "from": "linux-vm/tmux", "to": "~/.tmux.conf" }, - "install": "sudo apt install -y tmux" - }, - { - "package": "nvim", - "install": "bash -c 'wget -O nvim.deb https://gitea.tomastm.com/tomas.mirchev/neovim/releases/download/v0.10.0/nvim-linux-$(dpkg --print-architecture).deb && sudo dpkg -i nvim.deb && rm nvim.deb'" - }, - { - "package": "git", - "install": "sudo apt install -y git" - }, - { - "package": "htop", - "install": "sudo apt install -y htop" - }, - "bin" - ], - "linux-dev": [ - "zsh_config", - { - "package": "zsh", - "install": "sudo apt install -y zsh", - "post-link": "./scripts/linux-setup_zsh.sh" - }, - { - "package": "tmux", - "link": { "from": "linux-dev/tmux", "to": "~/.tmux.conf" } - }, - { - "package": "nvim", - "ignore-template": true, - "link": { "from": "linux-dev/nvim", "to": "~/.config/nvim" }, - "post-link": "nvim --headless '+Lazy! restore' '+MasonUpdate' '+TSUpdate' +qa && (grep -q 'alias vim=nvim' ~/.zshrc || echo 'alias vim=nvim' >> ~/.zshrc) || true" - }, - { - "package": "git", - "install": "sudo apt install -y git" - }, - { - "package": "htop", - "install": "sudo apt install -y htop" - } - ] - } } diff --git a/config/shared/zsh/zsh_config/aliases b/config/shared/zsh_config/aliases similarity index 100% rename from config/shared/zsh/zsh_config/aliases rename to config/shared/zsh_config/aliases diff --git a/config/shared/zsh/zsh_config/keybindings b/config/shared/zsh_config/keybindings similarity index 100% rename from config/shared/zsh/zsh_config/keybindings rename to config/shared/zsh_config/keybindings diff --git a/config/shared/zsh/zsh_config/prompt b/config/shared/zsh_config/prompt similarity index 100% rename from config/shared/zsh/zsh_config/prompt rename to config/shared/zsh_config/prompt diff --git a/config/shared/zsh/zsh_config/zshrc b/config/shared/zsh_config/zshrc similarity index 100% rename from config/shared/zsh/zsh_config/zshrc rename to config/shared/zsh_config/zshrc diff --git a/config/shared/zsh/zshrc_root b/config/shared/zsh_root similarity index 100% rename from config/shared/zsh/zshrc_root rename to config/shared/zsh_root -- 2.45.2 From b8bb9dee26b5ecc66aa7d91b2044992dda14caf4 Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Mon, 15 Sep 2025 08:20:18 +0300 Subject: [PATCH 13/15] rm nvim.deb tmp file --- nvim.deb | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 nvim.deb diff --git a/nvim.deb b/nvim.deb deleted file mode 100644 index e69de29..0000000 -- 2.45.2 From 175fe81f90d5587822ea3e36d2ad3c6019a0fa4f Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Mon, 15 Sep 2025 08:46:08 +0300 Subject: [PATCH 14/15] add tmux custom title --- config/linux-vm/tmux | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/config/linux-vm/tmux b/config/linux-vm/tmux index 038aae4..d10286f 100644 --- a/config/linux-vm/tmux +++ b/config/linux-vm/tmux @@ -1,7 +1,7 @@ # Change the prefix from 'C-b' to 'C-Space' unbind C-b -set-option -g prefix C-f -bind-key C-f send-prefix +set-option -g prefix C-Space +bind-key C-Space send-prefix set-option -g set-clipboard on @@ -19,20 +19,24 @@ setw -g pane-base-index 1 # Increase scrollback buffer size set -g history-limit 10000 -# Customize the status bar -set -g status-style bg=default,fg=white -set -g status-left '#[fg=cyan,bold][#S] ' +# Customize the status bar for Catppuccin Latte +set -g status-style bg=default,fg='#4c4f69' # Catppuccin Latte text color +set -g status-left '#[fg=#1e66f5,bold][#S] ' # Catppuccin Latte blue for session set -g status-left-length 50 set -g status-right '' -# Window status format -setw -g window-status-format '#[fg=white,dim]#I#[fg=grey]:#[fg=white]#W#[fg=grey]#F' -setw -g window-status-current-format '#[fg=cyan,bold]#I#[fg=blue]:#[fg=cyan]#W#[fg=grey]#F' +# Optional: Style the window tabs to match +set -g window-status-current-style 'fg=#4c4f69,bold' # Active window - dark text, bold +set -g window-status-style 'fg=#6c6f85' # Inactive windows - lighter text +set -g window-status-separator ' | ' # Clean separator -# Pane border -set -g pane-border-style fg=colour240 -set -g pane-active-border-style fg=cyan +# Optional: Style the borders to match (if you use pane borders) +set -g pane-border-style 'fg=#ccd0da' # Light border for inactive panes +set -g pane-active-border-style 'fg=#1e66f5' # Blue border for active pane +set -g status-left-length 20 +set -g status-right-length 20 +set -g pane-border-format "" # Message text set -g message-style bg=default,fg=cyan @@ -45,6 +49,7 @@ bind-key -T copy-mode-vi WheelDownPane send -N1 -X scroll-down # Update terminal titles set-option -g set-titles on +set-option -g set-titles-string "#S" # Use vim keybindings in copy mode setw -g mode-keys vi -- 2.45.2 From c6641edd2cba060695dd3a896a6cc4a12703796f Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Fri, 19 Sep 2025 23:19:21 +0000 Subject: [PATCH 15/15] linux-dev tmux with divider --- config/linux-dev/tmux | 3 --- 1 file changed, 3 deletions(-) diff --git a/config/linux-dev/tmux b/config/linux-dev/tmux index 33c8c74..13fa2bb 100644 --- a/config/linux-dev/tmux +++ b/config/linux-dev/tmux @@ -27,7 +27,6 @@ set -g status-right '' # set -g pane-border-status bottom # or 'bottom' if status is at top # set -g pane-border-format '─' # This will fill the entire width automatically -# set -g pane-border-format '#[align=centre]╱╲' # Window status format - light theme with terminal blue setw -g window-status-format '#[fg=#6c6f85]#I#[fg=#9ca0b0]:#[fg=#4c4f69]#W#[fg=#9ca0b0]#F' @@ -36,8 +35,6 @@ setw -g window-status-current-format '#[fg=blue,bold]#I#[fg=#9ca0b0]:#[fg=blue,b # Pane border - light theme set -g pane-border-style fg='#ccd0da' set -g pane-active-border-style fg=blue -# set -g pane-border-style "fg=#ccd0da,bg=green" -# set -g pane-active-border-style "fg=blue,bg=green" # Message text - light theme set -g message-style bg='#eff1f5',fg=blue -- 2.45.2