nix-config/programs/wezterm/wezterm.lua

131 lines
5.6 KiB
Lua
Raw Normal View History

2023-02-11 21:04:42 -08:00
local wezterm = require 'wezterm'
local mux = wezterm.mux
2023-02-11 21:04:42 -08:00
local act = wezterm.action
wezterm.on('update-right-status', function(window, pane)
window:set_right_status(window:active_workspace())
end)
wezterm.on('gui-startup', function(cmd)
local tab, pane, window = mux.spawn_window(cmd or {})
window:gui_window():maximize()
pane:split { size = 0.2 }
end)
2023-02-11 21:04:42 -08:00
return {
adjust_window_size_when_changing_font_size = false,
check_for_updates = false,
2023-10-14 09:49:58 -07:00
-- color_scheme = "Gruvbox Light";
-- color_scheme = 'tokyonight',
color_scheme = 'Tango (terminal.sexy)',
2025-02-14 09:43:13 -08:00
-- default_gui_startup_args = { 'connect', 'unix' },
2024-09-07 11:11:09 -07:00
font = wezterm.font 'SF Mono',
2023-02-11 21:04:42 -08:00
font_size = 16,
dpi = 144,
2023-10-14 09:49:58 -07:00
scrollback_lines = 50000,
2023-03-08 20:56:34 -08:00
initial_cols = 400,
initial_rows = 80,
2024-09-07 11:11:09 -07:00
leader = { key = 'b', mods = 'SUPER', timeout_milliseconds = 1000 },
default_prog = { '/etc/profiles/per-user/salar/bin/fish' },
2025-02-14 09:43:13 -08:00
window_decorations = 'RESIZE',
-- window_background_image = '/Users/salar/.config/nixpkgs/programs/wezterm/bridge.jpg',
2023-04-08 16:32:46 -07:00
ssh_domains = {
{
2024-09-07 11:11:09 -07:00
name = 'hcloud1',
remote_address = 'hcloud1.softinio.net',
username = 'salar',
remote_wezterm_path = '/run/current-system/sw/bin/wezterm',
},
2023-04-08 16:32:46 -07:00
},
2024-11-01 19:22:00 -07:00
unix_domains = {
{
name = 'unix',
2025-02-14 09:43:13 -08:00
proxy_command = { 'nc', '-U', '/Users/salar/.local/share/wezterm/sock' },
2024-11-01 19:22:00 -07:00
},
},
2023-02-11 21:04:42 -08:00
keys = {
2024-09-07 11:11:09 -07:00
{ key = '-', mods = 'LEADER', action = wezterm.action { SplitVertical = { domain = 'CurrentPaneDomain' } } },
{ key = "'", mods = 'LEADER', action = wezterm.action { SplitHorizontal = { domain = 'CurrentPaneDomain' } } },
{ key = 'k', mods = 'SUPER', action = act.TogglePaneZoomState },
{ key = 'h', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Left' } },
{ key = 'j', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Down' } },
{ key = 'k', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Up' } },
{ key = 'l', mods = 'LEADER', action = wezterm.action { ActivatePaneDirection = 'Right' } },
{ key = 'H', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Left', 5 } } },
{ key = 'J', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Down', 5 } } },
{ key = 'K', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Up', 5 } } },
{ key = 'L', mods = 'LEADER|SHIFT', action = wezterm.action { AdjustPaneSize = { 'Right', 5 } } },
{ key = '1', mods = 'LEADER', action = wezterm.action { ActivateTab = 0 } },
{ key = '2', mods = 'LEADER', action = wezterm.action { ActivateTab = 1 } },
{ key = '3', mods = 'LEADER', action = wezterm.action { ActivateTab = 2 } },
{ key = '4', mods = 'LEADER', action = wezterm.action { ActivateTab = 3 } },
{ key = '5', mods = 'LEADER', action = wezterm.action { ActivateTab = 4 } },
{ key = '6', mods = 'LEADER', action = wezterm.action { ActivateTab = 5 } },
{ key = '7', mods = 'LEADER', action = wezterm.action { ActivateTab = 6 } },
{ key = '8', mods = 'LEADER', action = wezterm.action { ActivateTab = 7 } },
{ key = '9', mods = 'LEADER', action = wezterm.action { ActivateTab = 8 } },
{ key = '&', mods = 'LEADER', action = wezterm.action { CloseCurrentTab = { confirm = true } } },
{ key = 'x', mods = 'LEADER', action = wezterm.action { CloseCurrentPane = { confirm = true } } },
2025-02-14 09:43:13 -08:00
{ key = 'Enter', mods = 'ALT', action = act.DisableDefaultAssignment },
2023-02-11 21:04:42 -08:00
{ key = 'c', mods = 'SUPER', action = act.CopyTo 'Clipboard' },
{ key = 'v', mods = 'SUPER', action = act.PasteFrom 'Clipboard' },
2023-02-11 21:04:42 -08:00
{ key = 'n', mods = 'SUPER', action = act.SpawnWindow },
{ key = 't', mods = 'SUPER', action = act.SpawnTab 'CurrentPaneDomain' },
{ key = 'h', mods = 'SUPER', action = act { SpawnCommandInNewTab = { cwd = wezterm.home_dir } } },
{ key = 'q', mods = 'SUPER', action = act.QuitApplication },
{ key = 'i', mods = 'CTRL|SHIFT', action = act.SwitchToWorkspace },
2024-11-01 19:22:00 -07:00
{
key = '8',
mods = 'ALT',
2024-11-01 19:22:00 -07:00
action = wezterm.action_callback(function(window, pane)
-- Here you can dynamically construct a longer list if needed
local home = wezterm.home_dir
local workspaces = {
{ id = home, label = 'Home' },
{ id = home .. '/Projects', label = 'My Projects' },
{ id = home .. '/OpenSource', label = 'Open Source Projects' },
{ id = home .. '/.config/nixpkgs', label = 'Nix Config' },
{ id = home .. '/Projects/scalanews', label = 'Scala News' },
}
window:perform_action(
act.InputSelector {
action = wezterm.action_callback(function(inner_window, inner_pane, id, label)
if not id and not label then
wezterm.log_info 'cancelled'
else
wezterm.log_info('id = ' .. id)
wezterm.log_info('label = ' .. label)
inner_window:perform_action(
act.SwitchToWorkspace {
name = label,
spawn = {
label = 'Workspace: ' .. label,
cwd = id,
},
},
inner_pane
)
end
end),
title = 'Choose Workspace',
choices = workspaces,
fuzzy = true,
fuzzy_description = 'Fuzzy find and/or make a workspace',
},
pane
)
end),
},
{
key = '9',
mods = 'ALT',
action = act.ShowLauncherArgs {
flags = 'FUZZY|WORKSPACES',
},
},
2023-12-17 15:32:00 -08:00
{ key = 'Tab', mods = 'CTRL', action = wezterm.action.DisableDefaultAssignment },
2024-09-07 11:11:09 -07:00
},
2023-02-11 21:04:42 -08:00
}