1
0
Fork 0
vdotfiles/wezterm.lua

104 lines
4.2 KiB
Lua

local wt = require 'wezterm'
local act = wt.action
local fontsize_darwin = 15
local fontsize_others = 11
local theme_n = 0
local theme =
'Elio (Gogh)'
local themes = {
'BirdsOfParadise',
'Blazer',
'BlueBerryPie',
'Dark+', -- another great one | dark / black
'Doom Peacock', -- nice | dark / black / vivid
'DWM rob (terminal.sexy)',
'duskfox',
'Elio (Gogh)', -- teh best so far | dark / blue
'Espresso', -- nice, but more on the average side | dark / black
'Espresso Libre',
'Fahrenheit', -- all the colors are wrong, but looks cool | dark / red
'FlatRemix (Gogh)', -- pretty cool | dark / vivid
'Galaxy', -- pretty nice | dark / blue
'Galizur', -- great and vivid | dark
'GJM (terminal.sexy)', -- nice vivid | dark
'Glacier', -- vivid, very dark
'gotham (Gogh)', -- surprisingly good, compared to the vim theme
'Gruvbox Dark',
'HemisuDark (Gogh)', -- vivid, but dark
'hund (terminal.sexy)', -- pretty well-balanced dark
'Japanesque', -- balanced, average, dark
'Material (terminal.sexy)', -- unusual combination, balanced
'Medallion', -- quite fun reddish theme, dark
'MonaLisa', -- impressively good, but very red and dark
'Parker Brothers (terminal.sexy)', -- unique but kinda dark
'PaulMillr', -- bright and clear
'PencilDark', -- very nice, matches PencilColors
'Rasi (terminal.sexy)', -- legitemately nice, yet dark
'Red Planet', -- dull, low contrast
'Rezza (terminal.sexy)', -- same
'SeaShells', -- wonderful colors, dark and vivid
'SleepyHollow', -- unusual colors
'Srcery (Gogh)', -- nice, but a bit too low on contrast
}
local webinar_overrides = {
harfbuzz_features = { 'calt=0', 'clig=0', 'liga=0' },
color_scheme = 'PencilLight',
}
function switch_theme(number, window)
theme_n = theme_n + number
if theme_n < 1 then theme_n = #themes end
if theme_n > #themes then theme_n = 1 end
window:set_config_overrides { color_scheme = themes[theme_n] }
end
function set_fontsize()
local execfile = os.getenv('WEZTERM_EXECUTABLE')
if string.match(execfile, 'MacOS') then return fontsize_darwin end
return fontsize_others
end
wt.on('update-right-status', function(window, pane)
local theme_info = string.format(
'%s %s ', wt.nerdfonts.fa_terminal,
window:effective_config().color_scheme
)
window:set_right_status(wt.format {{ Text = theme_info }})
end)
wt.on('prev-theme', function(window) switch_theme(-1, window) end)
wt.on('next-theme', function(window) switch_theme( 1, window) end)
wt.on('reset-overrides', function(window) window:set_config_overrides() end)
wt.on('webinar', function(window) window:set_config_overrides(webinar_overrides) end)
return {
font_size = set_fontsize(),
color_scheme = theme,
cursor_blink_rate = 0,
check_for_updates = false,
use_resize_increments = true,
bold_brightens_ansi_colors = false,
window_padding = {
left = 0, right = 0, top = 0, bottom = 0,
},
leader = { key = 'g', mods = 'CTRL', timeout_milliseconds = 1000 },
keys = {
{ key = 'c', mods = 'META', action = act.Copy },
{ key = 'v', mods = 'META', action = act.Paste },
-- themes
{ key = 'a', mods = 'META', action = act.EmitEvent 'prev-theme' },
{ key = 's', mods = 'META', action = act.EmitEvent 'next-theme' },
{ key = 'd', mods = 'META', action = act.EmitEvent 'reset-overrides' },
{ key = 'w', mods = 'META', action = act.EmitEvent 'webinar' },
-- panes
{ key = 's', mods = 'LEADER', action = act.SplitVertical { domain = 'CurrentPaneDomain' } },
{ key = 'v', mods = 'LEADER', action = act.SplitHorizontal { domain = 'CurrentPaneDomain' } },
{ key = 'h', mods = 'LEADER', action = act.ActivatePaneDirection 'Left' },
{ key = 'j', mods = 'LEADER', action = act.ActivatePaneDirection 'Down' },
{ key = 'k', mods = 'LEADER', action = act.ActivatePaneDirection 'Up' },
{ key = 'l', mods = 'LEADER', action = act.ActivatePaneDirection 'Right' },
{ key = 'u', mods = 'LEADER', action = act.RotatePanes 'Clockwise' },
{ key = 'i', mods = 'LEADER', action = act.RotatePanes 'CounterClockwise' },
{ key = 'Return', mods = 'LEADER', action = act.TogglePaneZoomState },
{ key = 'Space', mods = 'LEADER', action = act.PaneSelect },
},
}