PromptInputLine
¶
Since: Version 20230408-112425-69ae8472
The functionality described in this section requires version 20230408-112425-69ae8472 of wezterm, or a more recent version.
Activates an overlay to display a prompt and request a line of input from the user.
When the user enters the line, emits an event that allows you to act upon the input.
PromptInputLine
accepts four fields:
description
- the text to show at the top of the display area. You may embed escape sequences and/or use wezterm.format.action
- and event callback registered viawezterm.action_callback
. The callback's function signature is(window, pane, line)
wherewindow
andpane
are the Window and Pane objects from the current pane and window, andline
is the text that the user entered.line
may benil
if they hit Escape without entering anything, or CTRL-C to cancel the input.prompt
- the text to show as the prompt. You may embed escape sequences and/or use wezterm.format. Defaults to:"> "
. (Since: Nightly Builds Only)initial_value
- optional. If provided, the initial content of the input field will be set to this value. The user may edit it prior to submitting the input. (Since: Nightly Builds Only)
Example of interactively renaming the current tab¶
local wezterm = require 'wezterm'
local act = wezterm.action
local config = wezterm.config_builder()
config.keys = {
{
key = 'E',
mods = 'CTRL|SHIFT',
action = act.PromptInputLine {
description = 'Enter new name for tab',
initial_value = 'My Tab Name',
action = wezterm.action_callback(function(window, pane, line)
-- line will be `nil` if they hit escape without entering anything
-- An empty string if they just hit enter
-- Or the actual line of text they wrote
if line then
window:active_tab():set_title(line)
end
end),
},
},
}
return config
Example of interactively picking a name and creating a new workspace¶
Similar to the above, but prompts for a name prior to creating the workspace.
This example also shows the use of wezterm.format
to emit colored text.
local wezterm = require 'wezterm'
local act = wezterm.action
local config = wezterm.config_builder()
config.keys = {
{
key = 'N',
mods = 'CTRL|SHIFT',
action = act.PromptInputLine {
description = wezterm.format {
{ Attribute = { Intensity = 'Bold' } },
{ Foreground = { AnsiColor = 'Fuchsia' } },
{ Text = 'Enter name for new workspace' },
},
action = wezterm.action_callback(function(window, pane, line)
-- line will be `nil` if they hit escape without entering anything
-- An empty string if they just hit enter
-- Or the actual line of text they wrote
if line then
window:perform_action(
act.SwitchToWorkspace {
name = line,
},
pane
)
end
end),
},
},
}
return config
See also InputSelector.