From 66793d4c22783fba5047d0c2890e936d765c8557 Mon Sep 17 00:00:00 2001 From: Evie Litherland-Smith Date: Tue, 14 Feb 2023 12:01:37 +0000 Subject: [PATCH] Move wezterm config into separated files, add statusbar --- config/wezterm/key_tables.lua | 81 +++++++++++ config/wezterm/keys.lua | 124 +++++++++++++++++ config/wezterm/navigator.lua | 35 +++++ config/wezterm/status.lua | 89 ++++++++++++ config/wezterm/wezterm.lua | 254 +--------------------------------- 5 files changed, 333 insertions(+), 250 deletions(-) create mode 100644 config/wezterm/key_tables.lua create mode 100644 config/wezterm/keys.lua create mode 100644 config/wezterm/navigator.lua create mode 100644 config/wezterm/status.lua diff --git a/config/wezterm/key_tables.lua b/config/wezterm/key_tables.lua new file mode 100644 index 00000000..1e00b600 --- /dev/null +++ b/config/wezterm/key_tables.lua @@ -0,0 +1,81 @@ +local wezterm = require("wezterm") +local act = wezterm.action + +return { + copy_mode = { + { key = "Tab", mods = "NONE", action = act.CopyMode("MoveForwardWord") }, + { key = "Tab", mods = "SHIFT", action = act.CopyMode("MoveBackwardWord") }, + { key = "Enter", mods = "NONE", action = act.CopyMode("MoveToStartOfNextLine") }, + { key = "Escape", mods = "NONE", action = act.CopyMode("Close") }, + { key = "Space", mods = "NONE", action = act.CopyMode({ SetSelectionMode = "Cell" }) }, + { key = "$", mods = "NONE", action = act.CopyMode("MoveToEndOfLineContent") }, + { key = "$", mods = "SHIFT", action = act.CopyMode("MoveToEndOfLineContent") }, + { key = ",", mods = "NONE", action = act.CopyMode("JumpReverse") }, + { key = "0", mods = "NONE", action = act.CopyMode("MoveToStartOfLine") }, + { key = ";", mods = "NONE", action = act.CopyMode("JumpAgain") }, + { key = "F", mods = "NONE", action = act.CopyMode({ JumpBackward = { prev_char = false } }) }, + { key = "F", mods = "SHIFT", action = act.CopyMode({ JumpBackward = { prev_char = false } }) }, + { key = "G", mods = "NONE", action = act.CopyMode("MoveToScrollbackBottom") }, + { key = "G", mods = "SHIFT", action = act.CopyMode("MoveToScrollbackBottom") }, + { key = "H", mods = "NONE", action = act.CopyMode("MoveToViewportTop") }, + { key = "H", mods = "SHIFT", action = act.CopyMode("MoveToViewportTop") }, + { key = "L", mods = "NONE", action = act.CopyMode("MoveToViewportBottom") }, + { key = "L", mods = "SHIFT", action = act.CopyMode("MoveToViewportBottom") }, + { key = "M", mods = "NONE", action = act.CopyMode("MoveToViewportMiddle") }, + { key = "M", mods = "SHIFT", action = act.CopyMode("MoveToViewportMiddle") }, + { key = "O", mods = "NONE", action = act.CopyMode("MoveToSelectionOtherEndHoriz") }, + { key = "O", mods = "SHIFT", action = act.CopyMode("MoveToSelectionOtherEndHoriz") }, + { key = "T", mods = "NONE", action = act.CopyMode({ JumpBackward = { prev_char = true } }) }, + { key = "T", mods = "SHIFT", action = act.CopyMode({ JumpBackward = { prev_char = true } }) }, + { key = "V", mods = "NONE", action = act.CopyMode({ SetSelectionMode = "Line" }) }, + { key = "V", mods = "SHIFT", action = act.CopyMode({ SetSelectionMode = "Line" }) }, + { key = "^", mods = "NONE", action = act.CopyMode("MoveToStartOfLineContent") }, + { key = "^", mods = "SHIFT", action = act.CopyMode("MoveToStartOfLineContent") }, + { key = "b", mods = "NONE", action = act.CopyMode("MoveBackwardWord") }, + { key = "b", mods = "ALT", action = act.CopyMode("MoveBackwardWord") }, + { key = "b", mods = "CTRL", action = act.CopyMode("PageUp") }, + { key = "c", mods = "CTRL", action = act.CopyMode("Close") }, + { key = "f", mods = "NONE", action = act.CopyMode({ JumpForward = { prev_char = false } }) }, + { key = "f", mods = "ALT", action = act.CopyMode("MoveForwardWord") }, + { key = "f", mods = "CTRL", action = act.CopyMode("PageDown") }, + { key = "g", mods = "NONE", action = act.CopyMode("MoveToScrollbackTop") }, + { key = "g", mods = "CTRL", action = act.CopyMode("Close") }, + { key = "h", mods = "NONE", action = act.CopyMode("MoveLeft") }, + { key = "j", mods = "NONE", action = act.CopyMode("MoveDown") }, + { key = "k", mods = "NONE", action = act.CopyMode("MoveUp") }, + { key = "l", mods = "NONE", action = act.CopyMode("MoveRight") }, + { key = "m", mods = "ALT", action = act.CopyMode("MoveToStartOfLineContent") }, + { key = "o", mods = "NONE", action = act.CopyMode("MoveToSelectionOtherEnd") }, + { key = "q", mods = "NONE", action = act.CopyMode("Close") }, + { key = "t", mods = "NONE", action = act.CopyMode({ JumpForward = { prev_char = true } }) }, + { key = "v", mods = "NONE", action = act.CopyMode({ SetSelectionMode = "Cell" }) }, + { key = "v", mods = "CTRL", action = act.CopyMode({ SetSelectionMode = "Block" }) }, + { key = "w", mods = "NONE", action = act.CopyMode("MoveForwardWord") }, + { + key = "y", + mods = "NONE", + action = act.Multiple({ { CopyTo = "ClipboardAndPrimarySelection" }, { CopyMode = "Close" } }), + }, + { key = "PageUp", mods = "NONE", action = act.CopyMode("PageUp") }, + { key = "PageDown", mods = "NONE", action = act.CopyMode("PageDown") }, + { key = "LeftArrow", mods = "NONE", action = act.CopyMode("MoveLeft") }, + { key = "LeftArrow", mods = "ALT", action = act.CopyMode("MoveBackwardWord") }, + { key = "RightArrow", mods = "NONE", action = act.CopyMode("MoveRight") }, + { key = "RightArrow", mods = "ALT", action = act.CopyMode("MoveForwardWord") }, + { key = "UpArrow", mods = "NONE", action = act.CopyMode("MoveUp") }, + { key = "DownArrow", mods = "NONE", action = act.CopyMode("MoveDown") }, + }, + + search_mode = { + { key = "Enter", mods = "NONE", action = act.CopyMode("PriorMatch") }, + { key = "Escape", mods = "NONE", action = act.CopyMode("Close") }, + { key = "n", mods = "CTRL", action = act.CopyMode("NextMatch") }, + { key = "p", mods = "CTRL", action = act.CopyMode("PriorMatch") }, + { key = "r", mods = "CTRL", action = act.CopyMode("CycleMatchType") }, + { key = "u", mods = "CTRL", action = act.CopyMode("ClearPattern") }, + { key = "PageUp", mods = "NONE", action = act.CopyMode("PriorMatchPage") }, + { key = "PageDown", mods = "NONE", action = act.CopyMode("NextMatchPage") }, + { key = "UpArrow", mods = "NONE", action = act.CopyMode("PriorMatch") }, + { key = "DownArrow", mods = "NONE", action = act.CopyMode("NextMatch") }, + }, +} diff --git a/config/wezterm/keys.lua b/config/wezterm/keys.lua new file mode 100644 index 00000000..17ac0085 --- /dev/null +++ b/config/wezterm/keys.lua @@ -0,0 +1,124 @@ +local wezterm = require("wezterm") +local act = wezterm.action + +return { + { key = "h", mods = "ALT", action = act.EmitEvent("ActivatePaneDirection-left") }, + { key = "j", mods = "ALT", action = act.EmitEvent("ActivatePaneDirection-down") }, + { key = "k", mods = "ALT", action = act.EmitEvent("ActivatePaneDirection-up") }, + { key = "l", mods = "ALT", action = act.EmitEvent("ActivatePaneDirection-right") }, + { key = "1", mods = "ALT", action = act.ActivateTab(0) }, + { key = "2", mods = "ALT", action = act.ActivateTab(1) }, + { key = "3", mods = "ALT", action = act.ActivateTab(2) }, + { key = "4", mods = "ALT", action = act.ActivateTab(3) }, + { key = "5", mods = "ALT", action = act.ActivateTab(4) }, + { key = "6", mods = "ALT", action = act.ActivateTab(5) }, + { key = "7", mods = "ALT", action = act.ActivateTab(6) }, + { key = "8", mods = "ALT", action = act.ActivateTab(7) }, + { key = "9", mods = "ALT", action = act.ActivateTab(8) }, + { key = "0", mods = "ALT", action = act.ActivateTab(-1) }, + { key = "Enter", mods = "ALT", action = act.SplitVertical({ domain = "CurrentPaneDomain" }) }, + { key = "Enter", mods = "SHIFT|ALT", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, + { key = "Tab", mods = "CTRL", action = act.ActivateTabRelative(1) }, + { key = "Tab", mods = "SHIFT|CTRL", action = act.ActivateTabRelative(-1) }, + { key = "Enter", mods = "SUPER", action = act.ToggleFullScreen }, + { key = ")", mods = "CTRL", action = act.ResetFontSize }, + { key = ")", mods = "SHIFT|CTRL", action = act.ResetFontSize }, + { key = "0", mods = "CTRL", action = act.ResetFontSize }, + { key = "0", mods = "SHIFT|CTRL", action = act.ResetFontSize }, + { key = "+", mods = "CTRL", action = act.IncreaseFontSize }, + { key = "+", mods = "SHIFT|CTRL", action = act.IncreaseFontSize }, + { key = "-", mods = "CTRL", action = act.DecreaseFontSize }, + { key = "-", mods = "SHIFT|CTRL", action = act.DecreaseFontSize }, + { key = "=", mods = "CTRL", action = act.IncreaseFontSize }, + { key = "=", mods = "SHIFT|CTRL", action = act.IncreaseFontSize }, + { key = "C", mods = "CTRL", action = act.CopyTo("Clipboard") }, + { key = "C", mods = "SHIFT|CTRL", action = act.CopyTo("Clipboard") }, + { key = "F", mods = "CTRL", action = act.Search("CurrentSelectionOrEmptyString") }, + { key = "F", mods = "SHIFT|CTRL", action = act.Search("CurrentSelectionOrEmptyString") }, + { key = "K", mods = "CTRL", action = act.ClearScrollback("ScrollbackOnly") }, + { key = "K", mods = "SHIFT|CTRL", action = act.ClearScrollback("ScrollbackOnly") }, + { key = "L", mods = "CTRL", action = act.ShowDebugOverlay }, + { key = "L", mods = "SHIFT|CTRL", action = act.ShowDebugOverlay }, + { key = "M", mods = "CTRL", action = act.Hide }, + { key = "M", mods = "SHIFT|CTRL", action = act.Hide }, + { key = "N", mods = "CTRL", action = act.SpawnWindow }, + { key = "N", mods = "SHIFT|CTRL", action = act.SpawnWindow }, + { key = "P", mods = "CTRL", action = act.PaneSelect({ alphabet = "", mode = "Activate" }) }, + { key = "P", mods = "SHIFT|CTRL", action = act.PaneSelect({ alphabet = "", mode = "Activate" }) }, + { key = "R", mods = "CTRL", action = act.ReloadConfiguration }, + { key = "R", mods = "SHIFT|CTRL", action = act.ReloadConfiguration }, + { key = "T", mods = "CTRL", action = act.SpawnTab("CurrentPaneDomain") }, + { key = "T", mods = "SHIFT|CTRL", action = act.SpawnTab("CurrentPaneDomain") }, + { + key = "U", + mods = "CTRL", + action = act.CharSelect({ copy_on_select = true, copy_to = "ClipboardAndPrimarySelection" }), + }, + { + key = "U", + mods = "SHIFT|CTRL", + action = act.CharSelect({ copy_on_select = true, copy_to = "ClipboardAndPrimarySelection" }), + }, + { key = "V", mods = "CTRL", action = act.PasteFrom("Clipboard") }, + { key = "V", mods = "SHIFT|CTRL", action = act.PasteFrom("Clipboard") }, + { key = "W", mods = "CTRL", action = act.CloseCurrentTab({ confirm = true }) }, + { key = "W", mods = "SHIFT|CTRL", action = act.CloseCurrentTab({ confirm = true }) }, + { key = "X", mods = "CTRL", action = act.ActivateCopyMode }, + { key = "X", mods = "SHIFT|CTRL", action = act.ActivateCopyMode }, + { key = "Z", mods = "CTRL", action = act.TogglePaneZoomState }, + { key = "Z", mods = "SHIFT|CTRL", action = act.TogglePaneZoomState }, + { key = "[", mods = "SHIFT|SUPER", action = act.ActivateTabRelative(-1) }, + { key = "]", mods = "SHIFT|SUPER", action = act.ActivateTabRelative(1) }, + { key = "_", mods = "CTRL", action = act.DecreaseFontSize }, + { key = "_", mods = "SHIFT|CTRL", action = act.DecreaseFontSize }, + { key = "c", mods = "SHIFT|CTRL", action = act.CopyTo("Clipboard") }, + { key = "c", mods = "SUPER", action = act.CopyTo("Clipboard") }, + { key = "f", mods = "SHIFT|CTRL", action = act.Search("CurrentSelectionOrEmptyString") }, + { key = "f", mods = "SUPER", action = act.Search("CurrentSelectionOrEmptyString") }, + { key = "k", mods = "SHIFT|CTRL", action = act.ClearScrollback("ScrollbackOnly") }, + { key = "k", mods = "SUPER", action = act.ClearScrollback("ScrollbackOnly") }, + { key = "l", mods = "SHIFT|CTRL", action = act.ShowDebugOverlay }, + { key = "m", mods = "SHIFT|CTRL", action = act.Hide }, + { key = "m", mods = "SUPER", action = act.Hide }, + { key = "n", mods = "SHIFT|CTRL", action = act.SpawnWindow }, + { key = "n", mods = "SUPER", action = act.SpawnWindow }, + { key = "p", mods = "SHIFT|CTRL", action = act.PaneSelect({ alphabet = "", mode = "Activate" }) }, + { key = "r", mods = "SHIFT|CTRL", action = act.ReloadConfiguration }, + { key = "r", mods = "SUPER", action = act.ReloadConfiguration }, + { key = "t", mods = "SHIFT|CTRL", action = act.SpawnTab("CurrentPaneDomain") }, + { key = "t", mods = "SUPER", action = act.SpawnTab("CurrentPaneDomain") }, + { + key = "u", + mods = "SHIFT|CTRL", + action = act.CharSelect({ copy_on_select = true, copy_to = "ClipboardAndPrimarySelection" }), + }, + { key = "v", mods = "SHIFT|CTRL", action = act.PasteFrom("Clipboard") }, + { key = "v", mods = "SUPER", action = act.PasteFrom("Clipboard") }, + { key = "w", mods = "SHIFT|CTRL", action = act.CloseCurrentTab({ confirm = true }) }, + { key = "w", mods = "SUPER", action = act.CloseCurrentTab({ confirm = true }) }, + { key = "x", mods = "SHIFT|CTRL", action = act.ActivateCopyMode }, + { key = "z", mods = "SHIFT|CTRL", action = act.TogglePaneZoomState }, + { key = "{", mods = "SUPER", action = act.ActivateTabRelative(-1) }, + { key = "{", mods = "SHIFT|SUPER", action = act.ActivateTabRelative(-1) }, + { key = "}", mods = "SUPER", action = act.ActivateTabRelative(1) }, + { key = "}", mods = "SHIFT|SUPER", action = act.ActivateTabRelative(1) }, + { key = "phys:Space", mods = "SHIFT|CTRL", action = act.QuickSelect }, + { key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-1) }, + { key = "PageUp", mods = "CTRL", action = act.ActivateTabRelative(-1) }, + { key = "PageUp", mods = "SHIFT|CTRL", action = act.MoveTabRelative(-1) }, + { key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(1) }, + { key = "PageDown", mods = "CTRL", action = act.ActivateTabRelative(1) }, + { key = "PageDown", mods = "SHIFT|CTRL", action = act.MoveTabRelative(1) }, + { key = "LeftArrow", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Left") }, + { key = "LeftArrow", mods = "SHIFT|ALT|CTRL", action = act.AdjustPaneSize({ "Left", 1 }) }, + { key = "RightArrow", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Right") }, + { key = "RightArrow", mods = "SHIFT|ALT|CTRL", action = act.AdjustPaneSize({ "Right", 1 }) }, + { key = "UpArrow", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Up") }, + { key = "UpArrow", mods = "SHIFT|ALT|CTRL", action = act.AdjustPaneSize({ "Up", 1 }) }, + { key = "DownArrow", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Down") }, + { key = "DownArrow", mods = "SHIFT|ALT|CTRL", action = act.AdjustPaneSize({ "Down", 1 }) }, + { key = "Insert", mods = "SHIFT", action = act.PasteFrom("PrimarySelection") }, + { key = "Insert", mods = "CTRL", action = act.CopyTo("PrimarySelection") }, + { key = "Copy", mods = "NONE", action = act.CopyTo("Clipboard") }, + { key = "Paste", mods = "NONE", action = act.PasteFrom("Clipboard") }, +} diff --git a/config/wezterm/navigator.lua b/config/wezterm/navigator.lua new file mode 100644 index 00000000..f0f1de95 --- /dev/null +++ b/config/wezterm/navigator.lua @@ -0,0 +1,35 @@ +local wezterm = require("wezterm") +local act = wezterm.action + +local function isViProcess(pane) + -- get_foreground_process_name On Linux, macOS and Windows, + -- the process can be queried to determine this path. Other operating systems + -- (notably, FreeBSD and other unix systems) are not currently supported + return pane:get_foreground_process_name():find("n?vim") ~= nil + -- return pane:get_title():find("n?vim") ~= nil +end + +local function conditionalActivatePane(window, pane, pane_direction, vim_direction) + if isViProcess(pane) then + window:perform_action( + -- This should match the keybinds you set in Neovim. + act.SendKey({ key = vim_direction, mods = "ALT" }), + pane + ) + else + window:perform_action(act.ActivatePaneDirection(pane_direction), pane) + end +end + +wezterm.on("ActivatePaneDirection-right", function(window, pane) + conditionalActivatePane(window, pane, "Right", "l") +end) +wezterm.on("ActivatePaneDirection-left", function(window, pane) + conditionalActivatePane(window, pane, "Left", "h") +end) +wezterm.on("ActivatePaneDirection-up", function(window, pane) + conditionalActivatePane(window, pane, "Up", "k") +end) +wezterm.on("ActivatePaneDirection-down", function(window, pane) + conditionalActivatePane(window, pane, "Down", "j") +end) diff --git a/config/wezterm/status.lua b/config/wezterm/status.lua new file mode 100644 index 00000000..ab43f8bf --- /dev/null +++ b/config/wezterm/status.lua @@ -0,0 +1,89 @@ +local wezterm = require("wezterm") + +wezterm.on("update-right-status", function(window, pane) + -- Each element holds the text for a cell in a "powerline" style << fade + local cells = {} + + -- Figure out the cwd and host of the current pane. + -- This will pick up the hostname for the remote host if your + -- shell is using OSC 7 on the remote host. + local cwd_uri = pane:get_current_working_dir() + if cwd_uri then + cwd_uri = cwd_uri:sub(8) + local slash = cwd_uri:find("/") + local cwd = "" + local hostname = "" + if slash then + hostname = cwd_uri:sub(1, slash - 1) + -- Remove the domain name portion of the hostname + local dot = hostname:find("[.]") + if dot then + hostname = hostname:sub(1, dot - 1) + end + -- and extract the cwd from the uri + cwd = cwd_uri:sub(slash) + + table.insert(cells, cwd) + table.insert(cells, hostname) + end + end + + -- I like my date/time in this style: "Wed Mar 3 08:14" + local date = wezterm.strftime("%a %b %-d %H:%M") + table.insert(cells, date) + + -- An entry for each battery (typically 0 or 1 battery) + for _, b in ipairs(wezterm.battery_info()) do + table.insert(cells, string.format("%.0f%%", b.state_of_charge * 100)) + end + + -- WIP key table code - not yet used + local name = window:active_key_table() + if name then + name = "TABLE: " .. name + end + + -- The powerline < symbol + local LEFT_ARROW = utf8.char(0xe0b3) + -- The filled in variant of the < symbol + local SOLID_LEFT_ARROW = utf8.char(0xe0b2) + + -- Color palette for the backgrounds of each cell + local colors = { + "#3c1361", + "#52307c", + "#663a82", + "#7c5295", + "#b491c8", + } + + -- Foreground color for the text across the fade + local text_fg = "#c0c0c0" + + -- The elements to be formatted + local elements = {} + -- How many cells have been formatted + local num_cells = 0 + + -- Translate a cell into elements + function push(text, is_last) + local cell_no = num_cells + 1 + table.insert(elements, { Foreground = { Color = text_fg } }) + table.insert(elements, { Background = { Color = colors[cell_no] } }) + table.insert(elements, { Text = " " .. text .. " " }) + if not is_last then + table.insert(elements, { Foreground = { Color = colors[cell_no + 1] } }) + table.insert(elements, { Text = SOLID_LEFT_ARROW }) + end + num_cells = num_cells + 1 + end + + table.insert(elements, { Foreground = { Color = colors[num_cells + 1] } }) + table.insert(elements, { Text = SOLID_LEFT_ARROW }) + while #cells > 0 do + local cell = table.remove(cells, 1) + push(cell, #cells == 0) + end + + window:set_right_status(wezterm.format(elements)) +end) diff --git a/config/wezterm/wezterm.lua b/config/wezterm/wezterm.lua index 520c0820..2a3ef9e0 100644 --- a/config/wezterm/wezterm.lua +++ b/config/wezterm/wezterm.lua @@ -1,258 +1,12 @@ -local wezterm = require("wezterm") -local act = wezterm.action - -wezterm.on("update-right-status", function(window, pane) - local name = window:active_key_table() - if name then - name = "TABLE: " .. name - end - window:set_right_status(name or "") -end) - -local function isViProcess(pane) - -- get_foreground_process_name On Linux, macOS and Windows, - -- the process can be queried to determine this path. Other operating systems - -- (notably, FreeBSD and other unix systems) are not currently supported - return pane:get_foreground_process_name():find("n?vim") ~= nil - -- return pane:get_title():find("n?vim") ~= nil -end - -local function conditionalActivatePane(window, pane, pane_direction, vim_direction) - if isViProcess(pane) then - window:perform_action( - -- This should match the keybinds you set in Neovim. - act.SendKey({ key = vim_direction, mods = "ALT" }), - pane - ) - else - window:perform_action(act.ActivatePaneDirection(pane_direction), pane) - end -end - -wezterm.on("ActivatePaneDirection-right", function(window, pane) - conditionalActivatePane(window, pane, "Right", "l") -end) -wezterm.on("ActivatePaneDirection-left", function(window, pane) - conditionalActivatePane(window, pane, "Left", "h") -end) -wezterm.on("ActivatePaneDirection-up", function(window, pane) - conditionalActivatePane(window, pane, "Up", "k") -end) -wezterm.on("ActivatePaneDirection-down", function(window, pane) - conditionalActivatePane(window, pane, "Down", "j") -end) - -local keys = { - { key = "Tab", mods = "CTRL", action = act.ActivateTabRelative(1) }, - { key = "Tab", mods = "SHIFT|CTRL", action = act.ActivateTabRelative(-1) }, - { key = "Enter", mods = "SUPER", action = act.ToggleFullScreen }, - { key = ")", mods = "CTRL", action = act.ResetFontSize }, - { key = ")", mods = "SHIFT|CTRL", action = act.ResetFontSize }, - { key = "0", mods = "CTRL", action = act.ResetFontSize }, - { key = "0", mods = "SHIFT|CTRL", action = act.ResetFontSize }, - { key = "+", mods = "CTRL", action = act.IncreaseFontSize }, - { key = "+", mods = "SHIFT|CTRL", action = act.IncreaseFontSize }, - { key = "-", mods = "CTRL", action = act.DecreaseFontSize }, - { key = "-", mods = "SHIFT|CTRL", action = act.DecreaseFontSize }, - { key = "=", mods = "CTRL", action = act.IncreaseFontSize }, - { key = "=", mods = "SHIFT|CTRL", action = act.IncreaseFontSize }, - { key = "C", mods = "CTRL", action = act.CopyTo("Clipboard") }, - { key = "C", mods = "SHIFT|CTRL", action = act.CopyTo("Clipboard") }, - { key = "F", mods = "CTRL", action = act.Search("CurrentSelectionOrEmptyString") }, - { key = "F", mods = "SHIFT|CTRL", action = act.Search("CurrentSelectionOrEmptyString") }, - { key = "K", mods = "CTRL", action = act.ClearScrollback("ScrollbackOnly") }, - { key = "K", mods = "SHIFT|CTRL", action = act.ClearScrollback("ScrollbackOnly") }, - { key = "L", mods = "CTRL", action = act.ShowDebugOverlay }, - { key = "L", mods = "SHIFT|CTRL", action = act.ShowDebugOverlay }, - { key = "M", mods = "CTRL", action = act.Hide }, - { key = "M", mods = "SHIFT|CTRL", action = act.Hide }, - { key = "N", mods = "CTRL", action = act.SpawnWindow }, - { key = "N", mods = "SHIFT|CTRL", action = act.SpawnWindow }, - { key = "P", mods = "CTRL", action = act.PaneSelect({ alphabet = "", mode = "Activate" }) }, - { key = "P", mods = "SHIFT|CTRL", action = act.PaneSelect({ alphabet = "", mode = "Activate" }) }, - { key = "R", mods = "CTRL", action = act.ReloadConfiguration }, - { key = "R", mods = "SHIFT|CTRL", action = act.ReloadConfiguration }, - { key = "T", mods = "CTRL", action = act.SpawnTab("CurrentPaneDomain") }, - { key = "T", mods = "SHIFT|CTRL", action = act.SpawnTab("CurrentPaneDomain") }, - { - key = "U", - mods = "CTRL", - action = act.CharSelect({ copy_on_select = true, copy_to = "ClipboardAndPrimarySelection" }), - }, - { - key = "U", - mods = "SHIFT|CTRL", - action = act.CharSelect({ copy_on_select = true, copy_to = "ClipboardAndPrimarySelection" }), - }, - { key = "V", mods = "CTRL", action = act.PasteFrom("Clipboard") }, - { key = "V", mods = "SHIFT|CTRL", action = act.PasteFrom("Clipboard") }, - { key = "W", mods = "CTRL", action = act.CloseCurrentTab({ confirm = true }) }, - { key = "W", mods = "SHIFT|CTRL", action = act.CloseCurrentTab({ confirm = true }) }, - { key = "X", mods = "CTRL", action = act.ActivateCopyMode }, - { key = "X", mods = "SHIFT|CTRL", action = act.ActivateCopyMode }, - { key = "Z", mods = "CTRL", action = act.TogglePaneZoomState }, - { key = "Z", mods = "SHIFT|CTRL", action = act.TogglePaneZoomState }, - { key = "[", mods = "SHIFT|SUPER", action = act.ActivateTabRelative(-1) }, - { key = "]", mods = "SHIFT|SUPER", action = act.ActivateTabRelative(1) }, - { key = "_", mods = "CTRL", action = act.DecreaseFontSize }, - { key = "_", mods = "SHIFT|CTRL", action = act.DecreaseFontSize }, - { key = "c", mods = "SHIFT|CTRL", action = act.CopyTo("Clipboard") }, - { key = "c", mods = "SUPER", action = act.CopyTo("Clipboard") }, - { key = "f", mods = "SHIFT|CTRL", action = act.Search("CurrentSelectionOrEmptyString") }, - { key = "f", mods = "SUPER", action = act.Search("CurrentSelectionOrEmptyString") }, - { key = "k", mods = "SHIFT|CTRL", action = act.ClearScrollback("ScrollbackOnly") }, - { key = "k", mods = "SUPER", action = act.ClearScrollback("ScrollbackOnly") }, - { key = "l", mods = "SHIFT|CTRL", action = act.ShowDebugOverlay }, - { key = "m", mods = "SHIFT|CTRL", action = act.Hide }, - { key = "m", mods = "SUPER", action = act.Hide }, - { key = "n", mods = "SHIFT|CTRL", action = act.SpawnWindow }, - { key = "n", mods = "SUPER", action = act.SpawnWindow }, - { key = "p", mods = "SHIFT|CTRL", action = act.PaneSelect({ alphabet = "", mode = "Activate" }) }, - { key = "r", mods = "SHIFT|CTRL", action = act.ReloadConfiguration }, - { key = "r", mods = "SUPER", action = act.ReloadConfiguration }, - { key = "t", mods = "SHIFT|CTRL", action = act.SpawnTab("CurrentPaneDomain") }, - { key = "t", mods = "SUPER", action = act.SpawnTab("CurrentPaneDomain") }, - { - key = "u", - mods = "SHIFT|CTRL", - action = act.CharSelect({ copy_on_select = true, copy_to = "ClipboardAndPrimarySelection" }), - }, - { key = "v", mods = "SHIFT|CTRL", action = act.PasteFrom("Clipboard") }, - { key = "v", mods = "SUPER", action = act.PasteFrom("Clipboard") }, - { key = "w", mods = "SHIFT|CTRL", action = act.CloseCurrentTab({ confirm = true }) }, - { key = "w", mods = "SUPER", action = act.CloseCurrentTab({ confirm = true }) }, - { key = "x", mods = "SHIFT|CTRL", action = act.ActivateCopyMode }, - { key = "z", mods = "SHIFT|CTRL", action = act.TogglePaneZoomState }, - { key = "{", mods = "SUPER", action = act.ActivateTabRelative(-1) }, - { key = "{", mods = "SHIFT|SUPER", action = act.ActivateTabRelative(-1) }, - { key = "}", mods = "SUPER", action = act.ActivateTabRelative(1) }, - { key = "}", mods = "SHIFT|SUPER", action = act.ActivateTabRelative(1) }, - { key = "phys:Space", mods = "SHIFT|CTRL", action = act.QuickSelect }, - { key = "PageUp", mods = "SHIFT", action = act.ScrollByPage(-1) }, - { key = "PageUp", mods = "CTRL", action = act.ActivateTabRelative(-1) }, - { key = "PageUp", mods = "SHIFT|CTRL", action = act.MoveTabRelative(-1) }, - { key = "PageDown", mods = "SHIFT", action = act.ScrollByPage(1) }, - { key = "PageDown", mods = "CTRL", action = act.ActivateTabRelative(1) }, - { key = "PageDown", mods = "SHIFT|CTRL", action = act.MoveTabRelative(1) }, - { key = "LeftArrow", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Left") }, - { key = "LeftArrow", mods = "SHIFT|ALT|CTRL", action = act.AdjustPaneSize({ "Left", 1 }) }, - { key = "RightArrow", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Right") }, - { key = "RightArrow", mods = "SHIFT|ALT|CTRL", action = act.AdjustPaneSize({ "Right", 1 }) }, - { key = "UpArrow", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Up") }, - { key = "UpArrow", mods = "SHIFT|ALT|CTRL", action = act.AdjustPaneSize({ "Up", 1 }) }, - { key = "DownArrow", mods = "SHIFT|CTRL", action = act.ActivatePaneDirection("Down") }, - { key = "DownArrow", mods = "SHIFT|ALT|CTRL", action = act.AdjustPaneSize({ "Down", 1 }) }, - { key = "Insert", mods = "SHIFT", action = act.PasteFrom("PrimarySelection") }, - { key = "Insert", mods = "CTRL", action = act.CopyTo("PrimarySelection") }, - { key = "Copy", mods = "NONE", action = act.CopyTo("Clipboard") }, - { key = "Paste", mods = "NONE", action = act.PasteFrom("Clipboard") }, -} - -local keys_tiling = { - { key = "h", mods = "ALT", action = act.EmitEvent("ActivatePaneDirection-left") }, - { key = "j", mods = "ALT", action = act.EmitEvent("ActivatePaneDirection-down") }, - { key = "k", mods = "ALT", action = act.EmitEvent("ActivatePaneDirection-up") }, - { key = "l", mods = "ALT", action = act.EmitEvent("ActivatePaneDirection-right") }, - { key = "1", mods = "ALT", action = act.ActivateTab(0) }, - { key = "2", mods = "ALT", action = act.ActivateTab(1) }, - { key = "3", mods = "ALT", action = act.ActivateTab(2) }, - { key = "4", mods = "ALT", action = act.ActivateTab(3) }, - { key = "5", mods = "ALT", action = act.ActivateTab(4) }, - { key = "6", mods = "ALT", action = act.ActivateTab(5) }, - { key = "7", mods = "ALT", action = act.ActivateTab(6) }, - { key = "8", mods = "ALT", action = act.ActivateTab(7) }, - { key = "9", mods = "ALT", action = act.ActivateTab(8) }, - { key = "0", mods = "ALT", action = act.ActivateTab(-1) }, - { key = "Enter", mods = "ALT", action = act.SplitVertical({ domain = "CurrentPaneDomain" }) }, - { key = "Enter", mods = "SHIFT|ALT", action = act.SplitHorizontal({ domain = "CurrentPaneDomain" }) }, -} - -local key_tables = { - copy_mode = { - { key = "Tab", mods = "NONE", action = act.CopyMode("MoveForwardWord") }, - { key = "Tab", mods = "SHIFT", action = act.CopyMode("MoveBackwardWord") }, - { key = "Enter", mods = "NONE", action = act.CopyMode("MoveToStartOfNextLine") }, - { key = "Escape", mods = "NONE", action = act.CopyMode("Close") }, - { key = "Space", mods = "NONE", action = act.CopyMode({ SetSelectionMode = "Cell" }) }, - { key = "$", mods = "NONE", action = act.CopyMode("MoveToEndOfLineContent") }, - { key = "$", mods = "SHIFT", action = act.CopyMode("MoveToEndOfLineContent") }, - { key = ",", mods = "NONE", action = act.CopyMode("JumpReverse") }, - { key = "0", mods = "NONE", action = act.CopyMode("MoveToStartOfLine") }, - { key = ";", mods = "NONE", action = act.CopyMode("JumpAgain") }, - { key = "F", mods = "NONE", action = act.CopyMode({ JumpBackward = { prev_char = false } }) }, - { key = "F", mods = "SHIFT", action = act.CopyMode({ JumpBackward = { prev_char = false } }) }, - { key = "G", mods = "NONE", action = act.CopyMode("MoveToScrollbackBottom") }, - { key = "G", mods = "SHIFT", action = act.CopyMode("MoveToScrollbackBottom") }, - { key = "H", mods = "NONE", action = act.CopyMode("MoveToViewportTop") }, - { key = "H", mods = "SHIFT", action = act.CopyMode("MoveToViewportTop") }, - { key = "L", mods = "NONE", action = act.CopyMode("MoveToViewportBottom") }, - { key = "L", mods = "SHIFT", action = act.CopyMode("MoveToViewportBottom") }, - { key = "M", mods = "NONE", action = act.CopyMode("MoveToViewportMiddle") }, - { key = "M", mods = "SHIFT", action = act.CopyMode("MoveToViewportMiddle") }, - { key = "O", mods = "NONE", action = act.CopyMode("MoveToSelectionOtherEndHoriz") }, - { key = "O", mods = "SHIFT", action = act.CopyMode("MoveToSelectionOtherEndHoriz") }, - { key = "T", mods = "NONE", action = act.CopyMode({ JumpBackward = { prev_char = true } }) }, - { key = "T", mods = "SHIFT", action = act.CopyMode({ JumpBackward = { prev_char = true } }) }, - { key = "V", mods = "NONE", action = act.CopyMode({ SetSelectionMode = "Line" }) }, - { key = "V", mods = "SHIFT", action = act.CopyMode({ SetSelectionMode = "Line" }) }, - { key = "^", mods = "NONE", action = act.CopyMode("MoveToStartOfLineContent") }, - { key = "^", mods = "SHIFT", action = act.CopyMode("MoveToStartOfLineContent") }, - { key = "b", mods = "NONE", action = act.CopyMode("MoveBackwardWord") }, - { key = "b", mods = "ALT", action = act.CopyMode("MoveBackwardWord") }, - { key = "b", mods = "CTRL", action = act.CopyMode("PageUp") }, - { key = "c", mods = "CTRL", action = act.CopyMode("Close") }, - { key = "f", mods = "NONE", action = act.CopyMode({ JumpForward = { prev_char = false } }) }, - { key = "f", mods = "ALT", action = act.CopyMode("MoveForwardWord") }, - { key = "f", mods = "CTRL", action = act.CopyMode("PageDown") }, - { key = "g", mods = "NONE", action = act.CopyMode("MoveToScrollbackTop") }, - { key = "g", mods = "CTRL", action = act.CopyMode("Close") }, - { key = "h", mods = "NONE", action = act.CopyMode("MoveLeft") }, - { key = "j", mods = "NONE", action = act.CopyMode("MoveDown") }, - { key = "k", mods = "NONE", action = act.CopyMode("MoveUp") }, - { key = "l", mods = "NONE", action = act.CopyMode("MoveRight") }, - { key = "m", mods = "ALT", action = act.CopyMode("MoveToStartOfLineContent") }, - { key = "o", mods = "NONE", action = act.CopyMode("MoveToSelectionOtherEnd") }, - { key = "q", mods = "NONE", action = act.CopyMode("Close") }, - { key = "t", mods = "NONE", action = act.CopyMode({ JumpForward = { prev_char = true } }) }, - { key = "v", mods = "NONE", action = act.CopyMode({ SetSelectionMode = "Cell" }) }, - { key = "v", mods = "CTRL", action = act.CopyMode({ SetSelectionMode = "Block" }) }, - { key = "w", mods = "NONE", action = act.CopyMode("MoveForwardWord") }, - { - key = "y", - mods = "NONE", - action = act.Multiple({ { CopyTo = "ClipboardAndPrimarySelection" }, { CopyMode = "Close" } }), - }, - { key = "PageUp", mods = "NONE", action = act.CopyMode("PageUp") }, - { key = "PageDown", mods = "NONE", action = act.CopyMode("PageDown") }, - { key = "LeftArrow", mods = "NONE", action = act.CopyMode("MoveLeft") }, - { key = "LeftArrow", mods = "ALT", action = act.CopyMode("MoveBackwardWord") }, - { key = "RightArrow", mods = "NONE", action = act.CopyMode("MoveRight") }, - { key = "RightArrow", mods = "ALT", action = act.CopyMode("MoveForwardWord") }, - { key = "UpArrow", mods = "NONE", action = act.CopyMode("MoveUp") }, - { key = "DownArrow", mods = "NONE", action = act.CopyMode("MoveDown") }, - }, - - search_mode = { - { key = "Enter", mods = "NONE", action = act.CopyMode("PriorMatch") }, - { key = "Escape", mods = "NONE", action = act.CopyMode("Close") }, - { key = "n", mods = "CTRL", action = act.CopyMode("NextMatch") }, - { key = "p", mods = "CTRL", action = act.CopyMode("PriorMatch") }, - { key = "r", mods = "CTRL", action = act.CopyMode("CycleMatchType") }, - { key = "u", mods = "CTRL", action = act.CopyMode("ClearPattern") }, - { key = "PageUp", mods = "NONE", action = act.CopyMode("PriorMatchPage") }, - { key = "PageDown", mods = "NONE", action = act.CopyMode("NextMatchPage") }, - { key = "UpArrow", mods = "NONE", action = act.CopyMode("PriorMatch") }, - { key = "DownArrow", mods = "NONE", action = act.CopyMode("NextMatch") }, - }, -} +require("status") +require("navigator") return { font_size = 14, disable_default_key_bindings = true, window_background_opacity = 0.95, color_scheme = "nightfox", - hide_tab_bar_if_only_one_tab = true, use_dead_keys = false, - keys = keys, - key_tables = key_tables, + keys = require("keys"), + key_tables = require("key_tables"), }