diff --git a/modules/hosts/home-manager-only/default.nix b/modules/hosts/home-manager-only/default.nix index d4932be..484f1e8 100644 --- a/modules/hosts/home-manager-only/default.nix +++ b/modules/hosts/home-manager-only/default.nix @@ -28,4 +28,6 @@ local_private_env.path = "${config.home.homeDirectory}/.private-env"; }; }; + + xdg.configFile."wezterm/wezterm.lua".source = ../../shared/files/wezterm/wezterm.lua; } diff --git a/modules/shared/files/nvim/lua/config/vim-options.lua b/modules/shared/files/nvim/lua/config/vim-options.lua index f004b05..eeff266 100644 --- a/modules/shared/files/nvim/lua/config/vim-options.lua +++ b/modules/shared/files/nvim/lua/config/vim-options.lua @@ -17,7 +17,7 @@ vim.opt.mouse = "a" vim.keymap.set("n", "h", ":nohlsearch") -vim.wo.relativenumber = true +vim.wo.number = true vim.o.termguicolors = true diff --git a/modules/shared/files/wezterm/wezterm.lua b/modules/shared/files/wezterm/wezterm.lua index 60bf957..bbfd26d 100644 --- a/modules/shared/files/wezterm/wezterm.lua +++ b/modules/shared/files/wezterm/wezterm.lua @@ -1,27 +1,83 @@ local wezterm = require 'wezterm' local config = wezterm.config_builder() --- 1. Cross-Platform Font & Crispness +-- ========================================== +-- Environment Checks +-- ========================================== +local is_mac = wezterm.target_triple:find('darwin') ~= nil +local is_kde = os.getenv('XDG_CURRENT_DESKTOP') == 'KDE' + +-- ========================================== +-- 1. Font & Core UI +-- ========================================== config.font = wezterm.font('Hack Nerd Font') config.font_size = 13.0 +config.window_decorations = "RESIZE" -- Removes the bulky macOS title bar +config.bold_brightens_ansi_colors = false +config.enable_scroll_bar = true -config.window_decorations = "RESIZE" -- Removes the bulky macOS title bar for a cleaner look +-- ========================================== +-- 2. Window Appearance (OS Specific) +-- ========================================== +if is_mac then + config.macos_window_background_blur = 10 + config.window_background_opacity = 0.87 +elseif is_kde then + config.kde_window_background_blur = true + config.window_background_opacity = 0.87 +else + -- Non-KDE Linux settings (less opacity to offset lack of blur) + config.window_background_opacity = 0.94 +end --- 3. Tabs & UI +-- ========================================== +-- 3. Tabs & Window Frame +-- ========================================== config.enable_tab_bar = true -config.use_fancy_tab_bar = true -- Gives a nice, spaced-out, native-looking tab bar +config.use_fancy_tab_bar = true config.hide_tab_bar_if_only_one_tab = false --- 4. The Beanbag-Mathias Theme +-- Title bar background options (Frames the fancy tab bar) +-- local titlebar_bg = '#2E4224' -- Rich Moss +-- local titlebar_bg = '#6E5A2A' -- Antique Brass +local titlebar_bg = '#968841' -- Chalky Mustard + +config.window_frame = { + active_titlebar_bg = titlebar_bg, + inactive_titlebar_bg = titlebar_bg, +} + +config.colors = { + tab_bar = { + -- Note: We intentionally omit the empty space 'background' color here + -- because 'use_fancy_tab_bar = true' handles it via config.window_frame above. + + active_tab = { + bg_color = '#C48DFF', + fg_color = '#07042B', + }, + inactive_tab = { + bg_color = '#3A2653', + fg_color = '#E3E3EA', + }, + inactive_tab_hover = { + bg_color = '#583B7D', + fg_color = '#FFFFFF', + }, + }, +} + +-- ========================================== +-- 4. Color Schemes +-- ========================================== config.color_schemes = { ['Beanbag-iTerm2'] = { background = '#000000', foreground = '#E3E3EA', - --foreground = '#BBBBBB', - cursor_bg = '#BBBBBB', - cursor_fg = '#FFFFFF', - cursor_border = '#BBBBBB', + cursor_bg = '#FF7F7F', + cursor_fg = '#07042B', + cursor_border = '#FF7F7F', selection_bg = '#B5D5FF', selection_fg = '#000000', @@ -29,11 +85,11 @@ config.color_schemes = { ansi = { '#000000', -- black '#BB0000', -- red - '#55FF55', -- green (Swapped to your Bright Neon Green) - '#BBBB00', -- yellow - '#5EA1FF', -- blue (Your custom Sky Blue) + '#55FF55', -- green (Bright Neon Green) + '#FFD75F', -- yellow + '#5EA1FF', -- blue (Sky Blue) '#BB00BB', -- magenta - '#55FFFF', -- cyan (Swapped to your Bright Neon Cyan) + '#55FFFF', -- cyan (Bright Neon Cyan) '#BBBBBB', -- white }, brights = { @@ -41,12 +97,16 @@ config.color_schemes = { '#FF5555', -- bright red '#55FF55', -- bright green '#FFFF55', -- bright yellow - '#82AAFF', -- bright blue (Your custom Pastel Blue) + '#82AAFF', -- bright blue (Pastel Blue) '#FF55FF', -- bright magenta '#55FFFF', -- bright cyan '#FFFFFF', -- bright white }, + + split = '#5EA1FF', -- Sky Blue from ansi color list above + scrollbar_thumb = '#C48DFF' }, + ['Beanbag-Mathias'] = { foreground = '#E3E3EA', background = '#07042B', @@ -55,8 +115,8 @@ config.color_schemes = { cursor_fg = '#07042B', cursor_border = '#FF7F7F', - selection_fg = '#FFFFFF', - selection_bg = '#000000', + selection_bg = '#7DF9FF', + selection_fg = '#07042B', ansi = { '#000000', -- black @@ -73,19 +133,59 @@ config.color_schemes = { '#FF5555', -- bright red '#55FF55', -- bright green '#FFFF55', -- bright yellow - '#6CB6FF', -- bright blue (The "Icy Sky" contrast fix for ls folders!) + '#6CB6FF', -- bright blue (Icy Sky) '#FF55FF', -- bright magenta '#7DF9FF', -- bright cyan (Electric Ice) '#FFFFFF', -- bright white }, + + split = '#968841', -- Matches the Chalky Mustard title bar + scrollbar_thumb = '#C48DFF' }, } --- Window Appearance (Transparency & Blur) -config.window_background_opacity = 0.87 -config.macos_window_background_blur = 10 +-- Default Scheme +config.color_scheme = 'Beanbag-Mathias' --- config.color_scheme = 'Beanbag-Mathias' -config.color_scheme = 'Beanbag-iTerm2' +-- ========================================== +-- 5. Keybindings & Events +-- ========================================== +wezterm.on('set-scheme-iterm2', function(window) + window:set_config_overrides({ color_scheme = 'Beanbag-iTerm2' }) +end) + +wezterm.on('set-scheme-mathias', function(window) + window:set_config_overrides({ color_scheme = 'Beanbag-Mathias' }) +end) + +config.keys = { + { + key = '1', + mods = 'CTRL|ALT', + action = wezterm.action.EmitEvent('set-scheme-iterm2'), + }, + { + key = '2', + mods = 'CTRL|ALT', + action = wezterm.action.EmitEvent('set-scheme-mathias'), + }, + + -- ========================================== + -- iTerm2 Pane Splitting + -- ========================================== + { + -- Cmd+d to split to the right + key = 'd', + mods = 'CMD', + action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' }, + }, + { + -- Cmd+Shift+d to split below + key = 'd', -- Note: use lowercase 'd' here, WezTerm reads the SHIFT modifier + mods = 'CMD|SHIFT', + action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' }, + }, +} return config +