wezterm light theme

This commit is contained in:
Jonas H
2026-04-24 14:23:29 +02:00
parent a641087fae
commit 60095c6f61
4 changed files with 201 additions and 84 deletions

View File

@@ -0,0 +1,81 @@
-- Bearded Arc (Light)
-- Hand-tuned light variant with warm off-white bg and saturated accents
local M = {}
M.palette = {
base = '#faf4ed',
overlay = '#f0e8df',
muted = '#7a8598',
text = '#2a2a2a',
red = '#d1344f',
yellow = '#b8890f',
orange = '#c45a1c',
green = '#1e9b52',
cyan = '#1a7db5',
purple = '#7b4fc4',
highlight = '#5a6a7a',
}
local active_tab = {
bg_color = M.palette.overlay,
fg_color = M.palette.text,
}
local inactive_tab = {
bg_color = M.palette.base,
fg_color = M.palette.muted,
}
function M.colors()
return {
foreground = M.palette.text,
background = M.palette.base,
cursor_bg = M.palette.yellow,
cursor_border = M.palette.yellow,
cursor_fg = M.palette.base,
selection_bg = '#d8d0c6',
selection_fg = M.palette.text,
ansi = {
M.palette.overlay,
M.palette.red,
M.palette.green,
M.palette.yellow,
M.palette.cyan,
M.palette.purple,
M.palette.orange,
M.palette.text,
},
brights = {
M.palette.muted,
M.palette.red,
M.palette.green,
M.palette.yellow,
M.palette.cyan,
M.palette.purple,
M.palette.orange,
M.palette.text,
},
tab_bar = {
background = M.palette.base,
active_tab = active_tab,
inactive_tab = inactive_tab,
inactive_tab_hover = active_tab,
new_tab = inactive_tab,
new_tab_hover = active_tab,
inactive_tab_edge = M.palette.muted,
},
}
end
function M.window_frame()
return {
active_titlebar_bg = M.palette.base,
inactive_titlebar_bg = M.palette.base,
}
end
return M

View File

@@ -0,0 +1,81 @@
-- Bearded Arc (Dark)
-- Based on: https://github.com/BeardedBear/bearded-theme
local M = {}
M.palette = {
base = '#1c2433',
overlay = '#212a3b',
muted = '#4a5e84',
text = '#afbbd2',
red = '#FF738A',
yellow = '#EACD61',
orange = '#FF955C',
green = '#3CEC85',
cyan = '#69C3FF',
purple = '#B78AFF',
highlight = '#8196b5',
}
local active_tab = {
bg_color = M.palette.overlay,
fg_color = M.palette.text,
}
local inactive_tab = {
bg_color = M.palette.base,
fg_color = M.palette.muted,
}
function M.colors()
return {
foreground = M.palette.text,
background = M.palette.base,
cursor_bg = M.palette.yellow,
cursor_border = M.palette.yellow,
cursor_fg = M.palette.text,
selection_bg = '#405275',
selection_fg = M.palette.text,
ansi = {
M.palette.overlay,
M.palette.red,
M.palette.green,
M.palette.yellow,
M.palette.cyan,
M.palette.purple,
M.palette.orange,
M.palette.text,
},
brights = {
M.palette.muted,
M.palette.red,
M.palette.green,
M.palette.yellow,
M.palette.cyan,
M.palette.purple,
M.palette.orange,
M.palette.text,
},
tab_bar = {
background = M.palette.base,
active_tab = active_tab,
inactive_tab = inactive_tab,
inactive_tab_hover = active_tab,
new_tab = inactive_tab,
new_tab_hover = active_tab,
inactive_tab_edge = M.palette.muted,
},
}
end
function M.window_frame()
return {
active_titlebar_bg = M.palette.base,
inactive_titlebar_bg = M.palette.base,
}
end
return M

View File

@@ -1,84 +1,11 @@
-- Bearded Arc Theme
-- Based on: https://github.com/BeardedBear/bearded-theme
-- Adapted for WezTerm
-- Theme registry
-- Standalone themes: bearded-arc (dark), bearded-arc-light
-- Legacy variants: moon, dawn
local main = {}
local main_palette = {
base = '#1c2433',
overlay = '#212a3b',
muted = '#4a5e84',
text = '#afbbd2',
red = '#FF738A',
yellow = '#EACD61',
orange = '#FF955C',
green = '#3CEC85',
cyan = '#69C3FF',
purple = '#B78AFF',
highlight = '#8196b5',
}
local main_active_tab = {
bg_color = main_palette.overlay,
fg_color = main_palette.text,
}
local main_inactive_tab = {
bg_color = main_palette.base,
fg_color = main_palette.muted,
}
function main.colors()
return {
foreground = main_palette.text,
background = main_palette.base,
cursor_bg = main_palette.yellow,
cursor_border = main_palette.yellow,
cursor_fg = main_palette.text,
selection_bg = '#405275',
selection_fg = main_palette.text,
ansi = {
main_palette.overlay,
main_palette.red,
main_palette.green,
main_palette.yellow,
main_palette.cyan,
main_palette.purple,
main_palette.orange,
main_palette.text,
},
brights = {
main_palette.muted,
main_palette.red,
main_palette.green,
main_palette.yellow,
main_palette.cyan,
main_palette.purple,
main_palette.orange,
main_palette.text,
},
tab_bar = {
background = main_palette.base,
active_tab = main_active_tab,
inactive_tab = main_inactive_tab,
inactive_tab_hover = main_active_tab,
new_tab = main_inactive_tab,
new_tab_hover = main_active_tab,
inactive_tab_edge = main_palette.muted, -- (Fancy tab bar only)
},
}
end
function main.window_frame() -- (Fancy tab bar only)
return {
active_titlebar_bg = main_palette.base,
inactive_titlebar_bg = main_palette.base,
}
end
local main = require('theme/bearded-arc')
local light = require('theme/bearded-arc-light')
-- Moon variant (kept here for backward compat)
local moon = {}
local moon_palette = {
@@ -144,18 +71,19 @@ function moon.colors()
inactive_tab_hover = moon_active_tab,
new_tab = moon_inactive_tab,
new_tab_hover = moon_active_tab,
inactive_tab_edge = moon_palette.muted, -- (Fancy tab bar only)
inactive_tab_edge = moon_palette.muted,
},
}
end
function moon.window_frame() -- (Fancy tab bar only)
function moon.window_frame()
return {
active_titlebar_bg = moon_palette.base,
inactive_titlebar_bg = moon_palette.base,
}
end
-- Dawn variant (kept here for backward compat)
local dawn = {}
local dawn_palette = {
@@ -221,12 +149,12 @@ function dawn.colors()
inactive_tab_hover = dawn_active_tab,
new_tab = dawn_inactive_tab,
new_tab_hover = dawn_active_tab,
inactive_tab_edge = dawn_palette.muted, -- (Fancy tab bar only)
inactive_tab_edge = dawn_palette.muted,
},
}
end
function dawn.window_frame() -- (Fancy tab bar only)
function dawn.window_frame()
return {
active_titlebar_bg = dawn_palette.base,
inactive_titlebar_bg = dawn_palette.base,
@@ -235,6 +163,7 @@ end
return {
main = main,
light = light,
moon = moon,
dawn = dawn,
}

View File

@@ -1,12 +1,31 @@
local wezterm = require 'wezterm'
local config = {}
local theme = require('theme/init').main
local themes = require('theme/init')
-- Watch theme-state file so wezterm auto-reloads when toggle script writes to it
wezterm.add_to_config_reload_watch_list(
os.getenv("HOME") .. "/.config/theme-state"
)
-- Determine current theme from state file
local function get_theme()
local f = io.open(os.getenv("HOME") .. "/.config/theme-state", "r")
if f then
local state = f:read("*a"):gsub("%s+", "")
f:close()
if state == "light" then return themes.light end
end
return themes.main
end
local theme = get_theme()
-- Font configuration
config.font = wezterm.font 'JetBrainsMono Nerd Font'
config.font_size = 11.0
config.colors = theme.colors()
config.window_frame = theme.window_frame()
-- Window
config.enable_tab_bar = true
@@ -33,6 +52,13 @@ config.enable_kitty_keyboard = true
config.keys = {
{ key = 'LeftArrow', mods = 'CTRL|SHIFT', action = wezterm.action.ActivateTabRelative(-1) },
{ key = 'RightArrow', mods = 'CTRL|SHIFT', action = wezterm.action.ActivateTabRelative(1) },
{
key = 'n',
mods = 'CTRL|SHIFT',
action = wezterm.action_callback(function(win, pane)
local tab, window = pane:move_to_new_window()
end),
},
}
-- Machine-local overrides (not tracked in dotfiles)