Merge pull request #28 from brianpooe/claude/cool-hopper-8vgG8
feat: control WezTerm appearance from .zshrc via generated env.lua
This commit is contained in:
commit
995af1df20
3 changed files with 43 additions and 5 deletions
|
|
@ -12,6 +12,18 @@ local function env_number(name, fallback)
|
|||
end
|
||||
return parsed
|
||||
end
|
||||
|
||||
-- User-tunable settings live in ~/.zshrc, which writes them to env.lua
|
||||
-- (GUI-launched WezTerm never sees shell exports). WezTerm watches that
|
||||
-- file and live-reloads, so editing .zshrc + opening a new shell applies.
|
||||
-- Precedence: env.lua > process env > defaults.
|
||||
local user = {}
|
||||
local env_file = wezterm.home_dir .. "/.config/wezterm/env.lua"
|
||||
local ok, loaded = pcall(dofile, env_file)
|
||||
if ok and type(loaded) == "table" then
|
||||
user = loaded
|
||||
end
|
||||
wezterm.add_to_config_reload_watch_list(env_file)
|
||||
-- Basic settings
|
||||
config.automatically_reload_config = true
|
||||
config.window_close_confirmation = "NeverPrompt"
|
||||
|
|
@ -22,7 +34,7 @@ config.use_fancy_tab_bar = false
|
|||
config.tab_bar_at_bottom = false
|
||||
config.enable_tab_bar = false
|
||||
-- Font configuration
|
||||
config.font_size = env_number("WEZTERM_FONT_SIZE", 16)
|
||||
config.font_size = user.font_size or env_number("WEZTERM_FONT_SIZE", 16)
|
||||
config.font = wezterm.font("JetBrainsMono Nerd Font", { weight = "Regular" })
|
||||
config.bold_brightens_ansi_colors = true
|
||||
config.force_reverse_video_cursor = false
|
||||
|
|
@ -89,7 +101,7 @@ local themes = {
|
|||
},
|
||||
}
|
||||
|
||||
local variant = (os.getenv("WEZTERM_THEME") or "wave"):lower()
|
||||
local variant = (user.theme or os.getenv("WEZTERM_THEME") or "wave"):lower()
|
||||
if variant == "kanagawa-wave" then variant = "wave" end
|
||||
if variant == "kanagawa-dragon" then variant = "dragon" end
|
||||
config.colors = themes[variant] or themes.wave
|
||||
|
|
@ -101,10 +113,10 @@ config.window_padding = {
|
|||
bottom = 8,
|
||||
}
|
||||
-- Window transparency
|
||||
config.window_background_opacity = env_number("WEZTERM_WINDOW_OPACITY", 0.80)
|
||||
config.window_background_opacity = user.window_opacity or env_number("WEZTERM_WINDOW_OPACITY", 0.80)
|
||||
-- Keep text cells opaque by default; transparent text backgrounds can show
|
||||
-- grid/dot artifacts on some GPU/compositor combinations.
|
||||
config.text_background_opacity = env_number("WEZTERM_TEXT_OPACITY", 1.0)
|
||||
config.text_background_opacity = user.text_opacity or env_number("WEZTERM_TEXT_OPACITY", 1.0)
|
||||
-- Performance
|
||||
config.scrollback_lines = 10000
|
||||
config.enable_scroll_bar = false
|
||||
|
|
|
|||
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -28,6 +28,8 @@ tags
|
|||
!.config/lazygit/
|
||||
!.config/starship/
|
||||
!.config/wezterm/
|
||||
# machine-local, generated by .zshrc
|
||||
.config/wezterm/env.lua
|
||||
!.config/zed/
|
||||
!.config/zed/settings.json
|
||||
!.config/zed/keymap.json
|
||||
|
|
|
|||
26
.zshrc
26
.zshrc
|
|
@ -4,8 +4,16 @@ if [ -x /home/linuxbrew/.linuxbrew/bin/brew ]; then
|
|||
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
||||
fi
|
||||
|
||||
# ===================== User-tunable environment ========================
|
||||
# Single place to control the look of the whole stack. Everything below
|
||||
# (and the wezterm env.lua writer further down) derives from these.
|
||||
export KANAGAWA_THEME="${KANAGAWA_THEME:-wave}" # wave | dragon
|
||||
export WEZTERM_FONT_SIZE="${WEZTERM_FONT_SIZE:-16}"
|
||||
export WEZTERM_WINDOW_OPACITY="${WEZTERM_WINDOW_OPACITY:-0.80}"
|
||||
export WEZTERM_TEXT_OPACITY="${WEZTERM_TEXT_OPACITY:-1.0}"
|
||||
# ========================================================================
|
||||
|
||||
# Theme (kanagawa variants: dragon|wave)
|
||||
export KANAGAWA_THEME="${KANAGAWA_THEME:-wave}"
|
||||
case "${KANAGAWA_THEME}" in
|
||||
wave|kanagawa-wave)
|
||||
export TMUX_THEME="wave"
|
||||
|
|
@ -33,6 +41,22 @@ else
|
|||
printf 'source-file %s\n' "$HOME/.config/tmux/dragon-theme.conf" >| "$TMUX_THEME_FILE"
|
||||
fi
|
||||
|
||||
# Write WezTerm settings file (same pattern as tmux above). GUI-launched
|
||||
# WezTerm never sees shell exports, so it watches this file and live-reloads
|
||||
# when the values change.
|
||||
_wez_env_file="$HOME/.config/wezterm/env.lua"
|
||||
_wez_env_content="return {
|
||||
theme = \"$WEZTERM_THEME\",
|
||||
font_size = $WEZTERM_FONT_SIZE,
|
||||
window_opacity = $WEZTERM_WINDOW_OPACITY,
|
||||
text_opacity = $WEZTERM_TEXT_OPACITY,
|
||||
}"
|
||||
mkdir -p "$HOME/.config/wezterm"
|
||||
if [ ! -f "$_wez_env_file" ] || [ "$(cat "$_wez_env_file")" != "$_wez_env_content" ]; then
|
||||
printf '%s\n' "$_wez_env_content" >| "$_wez_env_file"
|
||||
fi
|
||||
unset _wez_env_file _wez_env_content
|
||||
|
||||
# Starship
|
||||
if command -v starship >/dev/null 2>&1; then
|
||||
eval "$(starship init zsh)"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue