wezterm: Add config
This commit is contained in:
parent
d7404e0465
commit
ddfc334ae8
2 changed files with 185 additions and 0 deletions
78
wezterm/.config/wezterm/maps.lua
Normal file
78
wezterm/.config/wezterm/maps.lua
Normal file
|
@ -0,0 +1,78 @@
|
|||
local act = require('wezterm').action
|
||||
local keys = {
|
||||
{ key = 'O', mods = 'CTRL', action = act.ShowDebugOverlay },
|
||||
|
||||
{ -- vertical pane
|
||||
key = '\\',
|
||||
mods = 'LEADER',
|
||||
action = act.SplitHorizontal { domain = 'CurrentPaneDomain' }
|
||||
}, { -- horizontal pane
|
||||
key = '-',
|
||||
mods = 'LEADER',
|
||||
action = act.SplitVertical { domain = 'CurrentPaneDomain' }
|
||||
}, { key = 'h', mods = 'CTRL', action = act.ActivatePaneDirection 'Left' },
|
||||
{ key = 'j', mods = 'CTRL', action = act.ActivatePaneDirection 'Down' },
|
||||
{ key = 'k', mods = 'CTRL', action = act.ActivatePaneDirection 'Up' },
|
||||
{ key = 'l', mods = 'CTRL', action = act.ActivatePaneDirection 'Right' },
|
||||
{ key = 'z', mods = 'LEADER', action = act.TogglePaneZoomState },
|
||||
{ key = ' ', mods = 'LEADER', action = act.RotatePanes 'Clockwise' },
|
||||
{ key = 'q', mods = 'LEADER', action = act.PaneSelect { mode = 'Activate' } },
|
||||
{
|
||||
key = 'Q',
|
||||
mods = 'LEADER',
|
||||
action = act.PaneSelect { mode = 'SwapWithActive' }
|
||||
}, { key = 'c', mods = 'LEADER', action = act.SpawnTab 'CurrentPaneDomain' },
|
||||
|
||||
{ key = 't', mods = 'LEADER', action = act.ShowTabNavigator },
|
||||
{ key = '[', mods = 'LEADER', action = act.ActivateCopyMode }, {
|
||||
key = 'r',
|
||||
mods = 'LEADER',
|
||||
action = act.ActivateKeyTable {
|
||||
name = 'resize_pane',
|
||||
one_shot = false,
|
||||
timeout_milliseconds = 2000
|
||||
}
|
||||
}, { key = 'F', mods = 'LEADER', action = act.QuickSelect }, {
|
||||
key = '/',
|
||||
mods = 'LEADER',
|
||||
action = act.Search('CurrentSelectionOrEmptyString')
|
||||
}, {
|
||||
key = 'b',
|
||||
mods = 'LEADER',
|
||||
action = act.ActivateKeyTable { name = 'scroll_mode', one_shot = false }
|
||||
}
|
||||
|
||||
}
|
||||
-- Leader + number to activate that tab
|
||||
for i = 1, 8 do
|
||||
table.insert(keys, {
|
||||
key = tostring(i),
|
||||
mods = 'LEADER',
|
||||
action = act.ActivateTab(i - 1)
|
||||
})
|
||||
end
|
||||
-- key table sub modes
|
||||
local key_tables = {
|
||||
-- mode to change size of any panes
|
||||
resize_pane = {
|
||||
{ key = 'h', action = act.AdjustPaneSize { 'Left', 1 } },
|
||||
{ key = 'l', action = act.AdjustPaneSize { 'Right', 1 } },
|
||||
{ key = 'k', action = act.AdjustPaneSize { 'Up', 1 } },
|
||||
{ key = 'j', action = act.AdjustPaneSize { 'Down', 1 } },
|
||||
{ key = 'Escape', action = 'PopKeyTable' }
|
||||
},
|
||||
scroll_mode = {
|
||||
{ key = 'y', mods = 'CTRL', action = act.ScrollByLine(-1) },
|
||||
{ key = 'e', mods = 'CTRL', action = act.ScrollByLine(1) },
|
||||
{ key = 'f', mods = 'CTRL', action = act.ScrollByPage(1) },
|
||||
{ key = 'b', mods = 'CTRL', action = act.ScrollByPage(-1) },
|
||||
{ key = 'd', mods = 'CTRL', action = act.ScrollByPage(0.5) },
|
||||
{ key = 'u', mods = 'CTRL', action = act.ScrollByPage(-0.5) },
|
||||
{ key = 'g', mods = 'CTRL', action = act.ScrollToTop },
|
||||
{ key = 'G', mods = 'CTRL', action = act.ScrollToBottom },
|
||||
{ key = '[', mods = 'CTRL', action = act.ScrollToPrompt(-1) },
|
||||
{ key = ']', mods = 'CTRL', action = act.ScrollToPrompt(1) },
|
||||
{ key = 'Escape', action = 'PopKeyTable' }
|
||||
}
|
||||
}
|
||||
return { keys = keys, key_tables = key_tables }
|
107
wezterm/.config/wezterm/wezterm.lua
Normal file
107
wezterm/.config/wezterm/wezterm.lua
Normal file
|
@ -0,0 +1,107 @@
|
|||
local wezterm = require 'wezterm'
|
||||
local mux = wezterm.mux
|
||||
|
||||
local maps = require 'maps'
|
||||
|
||||
-- STATUSBAR
|
||||
-- show currently active key table in lower right status bar
|
||||
-- mimicking Vim modes
|
||||
wezterm.on('update-right-status', function(window, _)
|
||||
local keytable = window:active_key_table()
|
||||
if keytable then
|
||||
keytable = 'MODE: ' .. keytable
|
||||
else
|
||||
keytable = ''
|
||||
end
|
||||
local workspace = window:active_workspace()
|
||||
if workspace and workspace ~= 'default' then
|
||||
workspace = 'WORKSPACE: ' .. workspace
|
||||
else
|
||||
workspace = ''
|
||||
end
|
||||
|
||||
local status = keytable .. ' ' .. workspace
|
||||
window:set_left_status(status or '')
|
||||
|
||||
-- "Wed Mar 3 08:14"
|
||||
local date = wezterm.strftime '%a %b %-d %H:%M '
|
||||
|
||||
local bat = ''
|
||||
for _, b in ipairs(wezterm.battery_info()) do
|
||||
bat =
|
||||
'🔋 ' .. string.format('%.0f%%', b.state_of_charge * 100) .. ' ' ..
|
||||
b.state
|
||||
end
|
||||
|
||||
window:set_right_status(wezterm.format {{Text = bat .. ' ' .. date}})
|
||||
end)
|
||||
|
||||
wezterm.on("set-up-dotfile-workspace", function(window, pane)
|
||||
-- Set a workspace for coding on a current project
|
||||
-- Top pane is for the editor, bottom pane is for the build tool
|
||||
local project_dir = wezterm.home_dir .. '/projects/test/quarto/quarto-test'
|
||||
local tab, build_pane, window = mux.spawn_window {
|
||||
workspace = 'coding',
|
||||
cwd = project_dir,
|
||||
args = args
|
||||
}
|
||||
local editor_pane = build_pane:split{
|
||||
direction = 'Top',
|
||||
size = 0.6,
|
||||
cwd = project_dir
|
||||
}
|
||||
build_pane:send_text 'quarto check'
|
||||
mux.set_active_workspace 'coding'
|
||||
end)
|
||||
--
|
||||
-- wezterm.on('gui-startup', function(cmd)
|
||||
-- -- allow `wezterm start -- something` to affect what we spawn
|
||||
-- -- in our initial window
|
||||
-- local args = {}
|
||||
-- if cmd then args = cmd.args end
|
||||
--
|
||||
-- -- Set a workspace for coding on a current project
|
||||
-- -- Top pane is for the editor, bottom pane is for the build tool
|
||||
-- local project_dir = wezterm.home_dir .. '/projects/test/quarto/quarto-test'
|
||||
-- local tab, build_pane, window = mux.spawn_window {
|
||||
-- workspace = 'coding',
|
||||
-- cwd = project_dir,
|
||||
-- args = args
|
||||
-- }
|
||||
-- local editor_pane = build_pane:split {
|
||||
-- direction = 'Top',
|
||||
-- size = 0.6,
|
||||
-- cwd = project_dir
|
||||
-- }
|
||||
-- build_pane:send_text 'quarto check'
|
||||
--
|
||||
-- -- A workspace for interacting with a local machine that
|
||||
-- -- runs some docker containners for home automation
|
||||
-- local tab, pane, window = mux.spawn_window {
|
||||
-- workspace = 'toppy',
|
||||
-- args = { 'top' }
|
||||
-- }
|
||||
--
|
||||
-- -- We want to startup in the coding workspace
|
||||
-- mux.set_active_workspace 'coding'
|
||||
-- end)
|
||||
|
||||
return {
|
||||
enable_wayland = true,
|
||||
|
||||
hide_tab_bar_if_only_one_tab = true,
|
||||
use_fancy_tab_bar = false,
|
||||
tab_bar_at_bottom = true,
|
||||
window_padding = {left = 0, right = 0, top = 0, bottom = 0},
|
||||
|
||||
color_scheme = "Nord (base16)",
|
||||
-- default_prog = {"nu"},
|
||||
scrollback_lines = 10000,
|
||||
|
||||
font = wezterm.font('Liga Iosevka'),
|
||||
line_height = 1.0,
|
||||
|
||||
leader = {key = 'a', mods = 'CTRL', timeout_milliseconds = 1500},
|
||||
keys = maps.keys,
|
||||
key_tables = maps.key_tables
|
||||
}
|
Loading…
Reference in a new issue