mirror of
https://github.com/zellij-org/zellij.git
synced 2026-10-11 22:50:07 +00:00
576 lines
19 KiB
KDL
576 lines
19 KiB
KDL
// Keybindings come from a preset: a file in the "keybinds" folder next to this file, or one of
|
|
// the presets built into Zellij ("default" and "unlock-first"). Print a built-in preset with
|
|
// "zellij setup --dump-keybinds <name>".
|
|
// "primary", "secondary" and "unlock" set the leader keys of presets that use them.
|
|
// If a leader key is empty or two of them are equal, Zellij warns and uses the default preset.
|
|
// Keybindings that come from a layout are shown in the settings screen but cannot be edited there.
|
|
// Bindings inside the block are applied on top of the preset. To replace the preset
|
|
// completely, add clear-defaults=true to the block.
|
|
// For a single session, "zellij options --keybinds-preset <name>" (and --keybinds-primary,
|
|
// --keybinds-secondary, --keybinds-unlock) choose a preset without changing this file.
|
|
//
|
|
// keybinds preset="default" primary="Ctrl" secondary="Alt" {
|
|
// normal {
|
|
// bind "Alt y" { NewTab; }
|
|
// }
|
|
// }
|
|
|
|
// Plugin aliases - can be used to change the implementation of Zellij
|
|
// changing these requires a restart to take effect
|
|
// Built-in aliases cannot be deleted: this block can only add to or override them
|
|
// (removing an override brings back the built-in one)
|
|
plugins {
|
|
tab-bar location="zellij:bars" {
|
|
role "tab-bar"
|
|
}
|
|
status-bar location="zellij:bars" {
|
|
role "status-bar"
|
|
}
|
|
strider location="zellij:strider"
|
|
compact-bar location="zellij:bars" {
|
|
role "compact-bar"
|
|
}
|
|
session-manager location="zellij:session-manager"
|
|
welcome-screen location="zellij:session-manager" {
|
|
welcome_screen true
|
|
}
|
|
filepicker location="zellij:strider" {
|
|
cwd "/"
|
|
}
|
|
configuration location="zellij:configuration"
|
|
plugin-manager location="zellij:plugin-manager"
|
|
about location="zellij:about"
|
|
context-menu location="zellij:context-menu"
|
|
prompt location="zellij:prompt"
|
|
}
|
|
|
|
// Plugins to load in the background when a new session starts
|
|
// (Requires restart)
|
|
load_plugins {
|
|
"zellij:bars" {
|
|
role "link"
|
|
}
|
|
// "file:/path/to/my-plugin.wasm"
|
|
// "https://example.com/my-plugin.wasm"
|
|
}
|
|
|
|
// Right-click menu items, per clicked target: "pane", "tab", "bar" (tab bar or status bar background)
|
|
// "common" items are added to the end of every menu
|
|
// Actions ending in "ByPaneId"/"ById"/"ByTabId" apply to the clicked pane or tab when no id is given
|
|
// Add clear-defaults=true to the block or to a section to replace the default items
|
|
// Without clear-defaults, a section changes the default items:
|
|
// item "Label" { ... } replaces the item with that label, or adds it at the end
|
|
// item "Label" after="Other" { ... } places the item after "Other" (before="Other" places it before)
|
|
// separator after="Other" adds a separator after (or before=) "Other"
|
|
// remove "Label" removes the item with that label
|
|
// Unknown labels are ignored by remove and place the item at the end with after/before
|
|
// An empty "context_menu clear-defaults=true {}" leaves the menu empty, so it never opens,
|
|
// but right clicks are still taken by Zellij; use "context_menu_enabled false" to turn the menu off
|
|
context_menu {
|
|
pane {
|
|
item "New pane" { NewPane; }
|
|
item "New floating pane" { NewFloatingPane; }
|
|
separator
|
|
item "Fullscreen" { ToggleFocusFullscreenByPaneId; }
|
|
item "Float / Embed" { TogglePaneEmbedOrFloatingByPaneId; }
|
|
item "Rename pane" { StartRenamePaneByPaneId; }
|
|
item "Add to group" { TogglePaneInGroupByPaneId; }
|
|
separator
|
|
item "Close pane" { CloseFocusByPaneId; }
|
|
}
|
|
tab {
|
|
item "New tab" { NewTab; }
|
|
item "Rename tab" { StartRenameTabByTabId; }
|
|
item "Move tab left" { MoveTabByTabId "left"; }
|
|
item "Move tab right" { MoveTabByTabId "right"; }
|
|
separator
|
|
item "Close tab" { CloseTabById; }
|
|
}
|
|
bar {
|
|
item "New pane" { NewPane; }
|
|
item "New tab" { NewTab; }
|
|
}
|
|
common {
|
|
item "Settings…" {
|
|
LaunchOrFocusPlugin "configuration" {
|
|
floating true
|
|
move_to_focused_tab true
|
|
}
|
|
}
|
|
item "Session manager" {
|
|
LaunchOrFocusPlugin "session-manager" {
|
|
floating true
|
|
move_to_focused_tab true
|
|
}
|
|
}
|
|
item "Detach" { Detach; }
|
|
}
|
|
}
|
|
|
|
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
|
// eg. when terminal window with an active zellij session is closed
|
|
// (Requires restart)
|
|
// Options:
|
|
// - detach (Default)
|
|
// - quit
|
|
//
|
|
// on_force_close "quit"
|
|
|
|
// Choose how to handle a nested Zellij session detected running inside a pane
|
|
// Options:
|
|
// - ask (Default - prompt with a modal to zoom in or control on focus)
|
|
// - fullscreen (always zoom into the nested session)
|
|
// - descend (always control the nested session on focus)
|
|
// - never (never prompt or descend; do it manually)
|
|
//
|
|
// nested_session_handling "ask"
|
|
|
|
// Send a request for a simplified ui (without arrow fonts) to plugins
|
|
// Options:
|
|
// - true
|
|
// - false (Default)
|
|
//
|
|
// simplified_ui true
|
|
|
|
// Choose the path to the default shell that zellij will use for opening new panes
|
|
// Default: $SHELL
|
|
//
|
|
// default_shell "fish"
|
|
|
|
// Choose the path to override cwd that zellij will use for opening new panes
|
|
//
|
|
// default_cwd ""
|
|
|
|
// Toggle between having pane frames around the panes
|
|
// Options:
|
|
// - true (default)
|
|
// - false
|
|
//
|
|
// pane_frames true
|
|
|
|
// Set the pane frame style when pane_frames is enabled
|
|
// Options:
|
|
// - titles (default - draw a title above each pane)
|
|
// - full (draw a full frame around each pane)
|
|
// - none (equivalent to pane_frames false)
|
|
//
|
|
// pane_frame_style "titles"
|
|
|
|
// Configure the look of the pane frame borders
|
|
//
|
|
// ui {
|
|
// pane_frames {
|
|
// // round the corners of single-line borders
|
|
// rounded_corners true
|
|
// // line style for all four sides of tiled pane frames
|
|
// // one of: single, double, heavy, dashed, heavy_dashed
|
|
// border_style "single"
|
|
// // per-side overrides, eg. a double top border with single sides
|
|
// border_top "double"
|
|
// border_right "single"
|
|
// border_bottom "single"
|
|
// border_left "single"
|
|
// // when two neighbouring panes disagree about a shared grid line
|
|
// // (pane frames off), that line falls back to border_style above
|
|
// // the same keys prefixed with "floating_" apply to floating panes,
|
|
// // they default to the values above
|
|
// floating_border_style "double"
|
|
// floating_border_top "double"
|
|
// floating_border_right "double"
|
|
// floating_border_bottom "double"
|
|
// floating_border_left "double"
|
|
// floating_border_rounded_corners false
|
|
// }
|
|
// }
|
|
|
|
// Toggle between having Zellij lay out panes according to a predefined set of layouts whenever possible
|
|
// Options:
|
|
// - true (default)
|
|
// - false
|
|
//
|
|
// auto_layout true
|
|
|
|
// Whether sessions should be serialized to the cache folder (including their tabs/panes, cwds and running commands) so that they can later be resurrected
|
|
// (Requires restart)
|
|
// Options:
|
|
// - true (default)
|
|
// - false
|
|
//
|
|
// session_serialization false
|
|
|
|
// Whether pane viewports are serialized along with the session, default is false
|
|
// (Requires restart)
|
|
// Options:
|
|
// - true
|
|
// - false (default)
|
|
//
|
|
// serialize_pane_viewport true
|
|
|
|
// Scrollback lines to serialize along with the pane viewport when serializing sessions, 0
|
|
// defaults to the scrollback size. If this number is higher than the scrollback size, it will
|
|
// also default to the scrollback size. This does nothing if `serialize_pane_viewport` is not true.
|
|
// (Requires restart)
|
|
//
|
|
// scrollback_lines_to_serialize 10000
|
|
|
|
// Define color themes for Zellij
|
|
// For more examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
|
// Once these themes are defined, one of them should to be selected in the "theme" section of this file
|
|
// Built-in themes and themes from theme_dir are read-only in the settings screen (copy one to edit it)
|
|
//
|
|
// themes {
|
|
// dracula {
|
|
// fg 248 248 242
|
|
// bg 40 42 54
|
|
// red 255 85 85
|
|
// green 80 250 123
|
|
// yellow 241 250 140
|
|
// blue 98 114 164
|
|
// magenta 255 121 198
|
|
// orange 255 184 108
|
|
// cyan 139 233 253
|
|
// black 0 0 0
|
|
// white 255 255 255
|
|
// }
|
|
// }
|
|
|
|
// Choose the theme that is specified in the themes section.
|
|
// Default: default
|
|
//
|
|
// theme "default"
|
|
|
|
// Themes to use when the host terminal reports a dark or light color palette.
|
|
// Both must be set for automatic switching to take place, otherwise `theme`
|
|
// remains authoritative. Until the host terminal reports (or if it never does),
|
|
// the dark theme is used.
|
|
//
|
|
// theme_dark "nightfox"
|
|
// theme_light "dayfox"
|
|
|
|
// Pin the session to a dark or light appearance, ignoring what the host
|
|
// terminal reports. Resolved before the first render. When unset, the host
|
|
// terminal decides.
|
|
// Options: dark, light
|
|
//
|
|
// explicit_theme_hue "dark"
|
|
|
|
// The name of the default layout to load on startup
|
|
// Default: "default"
|
|
// (Requires restart)
|
|
//
|
|
// default_layout "compact"
|
|
|
|
// Choose the mode that zellij uses when starting up and returns to after actions.
|
|
// Changes apply to the running session without a restart.
|
|
// Default: normal
|
|
//
|
|
// default_mode "locked"
|
|
|
|
// Toggle enabling the mouse mode.
|
|
// On certain configurations, or terminals this could
|
|
// potentially interfere with copying text.
|
|
// (Requires restart)
|
|
// Options:
|
|
// - true (default)
|
|
// - false
|
|
//
|
|
// mouse_mode false
|
|
|
|
// Configure the scroll back buffer size
|
|
// This is the number of lines zellij stores for each pane in the scroll back
|
|
// buffer. Excess number of lines are discarded in a FIFO fashion.
|
|
// (Requires restart)
|
|
// Valid values: positive integers
|
|
// Default value: 10000
|
|
//
|
|
// scroll_buffer_size 10000
|
|
|
|
// Provide a command to execute when copying text. The text will be piped to
|
|
// the stdin of the program to perform the copy. This can be used with
|
|
// terminal emulators which do not support the OSC 52 ANSI control sequence
|
|
// that will be used by default if this option is not set.
|
|
// Examples:
|
|
//
|
|
// copy_command "xclip -selection clipboard" // x11
|
|
// copy_command "wl-copy" // wayland
|
|
// copy_command "pbcopy" // osx
|
|
|
|
// Choose the destination for copied text
|
|
// Allows using the primary selection buffer (on x11/wayland) instead of the system clipboard.
|
|
// Does not apply when using copy_command.
|
|
// Options:
|
|
// - system (default)
|
|
// - primary
|
|
//
|
|
// copy_clipboard "primary"
|
|
|
|
// Enable or disable automatic copy (and clear) of selection when releasing mouse
|
|
// Default: true
|
|
//
|
|
// copy_on_select false
|
|
|
|
// Path to the default editor to use to edit pane scrollbuffer
|
|
// Default: $EDITOR or $VISUAL
|
|
//
|
|
// scrollback_editor "/usr/bin/vim"
|
|
|
|
// When attaching to an existing session with other users,
|
|
// should the session be mirrored (true)
|
|
// or should each user have their own cursor (false)
|
|
// (Requires restart)
|
|
// Default: false
|
|
//
|
|
// mirror_session true
|
|
|
|
// The folder in which Zellij will look for layouts
|
|
//
|
|
// layout_dir "/path/to/my/layout_dir"
|
|
|
|
// The folder in which Zellij will look for themes
|
|
// Changes apply to the running session without a restart.
|
|
// Themes from this folder are read-only in the settings screen (copy one to edit it)
|
|
//
|
|
// theme_dir "/path/to/my/theme_dir"
|
|
|
|
// The folder in which Zellij will look for keybinding presets
|
|
// Default: a "keybinds" folder in the config directory
|
|
//
|
|
// keybinds_dir "/path/to/my/keybinds_dir"
|
|
|
|
// Enable or disable the rendering of styled and colored underlines (undercurl).
|
|
// May need to be disabled for certain unsupported terminals
|
|
// (Requires restart)
|
|
// Default: true
|
|
//
|
|
// styled_underlines false
|
|
|
|
// Enable or disable writing of session metadata to disk (if disabled, other sessions might not know
|
|
// metadata info on this session)
|
|
// (Requires restart)
|
|
// Default: false
|
|
//
|
|
// disable_session_metadata true
|
|
|
|
// Enable or disable support for the enhanced Kitty Keyboard Protocol (the host terminal must also support it)
|
|
// (Requires restart)
|
|
// Default: true (if the host terminal supports it)
|
|
//
|
|
// support_kitty_keyboard_protocol false
|
|
|
|
// Enable or disable support for the Kitty Graphics Protocol, used to display images (the host terminal must also support it)
|
|
// (Requires restart)
|
|
// Default: true (if the host terminal supports it)
|
|
//
|
|
// support_kitty_graphics_protocol false
|
|
|
|
// Whether to make sure a local web server is running when a new Zellij session starts.
|
|
// This web server will allow creating new sessions and attaching to existing ones that have
|
|
// opted in to being shared in the browser.
|
|
// When enabled, navigate to http://127.0.0.1:8082
|
|
// (Requires restart)
|
|
//
|
|
// Note: a local web server can still be manually started from within a Zellij session or from the CLI.
|
|
// If this is not desired, one can use a version of Zellij compiled without
|
|
// `web_server_capability`
|
|
//
|
|
// Possible values:
|
|
// - true
|
|
// - false
|
|
// Default: false
|
|
//
|
|
// web_server true
|
|
|
|
// Whether to allow sessions started in the terminal to be shared through a local web server, assuming one is
|
|
// running (see the `web_server` option for more details).
|
|
// (Requires restart)
|
|
//
|
|
// Note: This is an administrative separation and not intended as a security measure.
|
|
//
|
|
// Possible values:
|
|
// - "on" (allow web sharing through the local web server if it
|
|
// is online)
|
|
// - "off" (do not allow web sharing unless sessions explicitly opt-in to it)
|
|
// - "disabled" (do not allow web sharing and do not permit sessions started in the terminal to opt-in to it)
|
|
// Default: "off"
|
|
//
|
|
// web_sharing "on"
|
|
|
|
// The ip address the web server should listen on when it starts
|
|
// Default: "127.0.0.1"
|
|
// (Requires restart)
|
|
//
|
|
// web_server_ip "127.0.0.1"
|
|
|
|
|
|
// A path to a certificate file to be used when setting up the web client to serve the
|
|
// connection over HTTPs
|
|
// (Requires restart)
|
|
//
|
|
// web_server_cert "/path/to/my/cert.pem"
|
|
|
|
// A path to a key file to be used when setting up the web client to serve the
|
|
// connection over HTTPs
|
|
// (Requires restart)
|
|
//
|
|
// web_server_key "/path/to/my/key.pem"
|
|
|
|
// Whether to enforce https connections to the web server when it is bound to localhost
|
|
// (127.0.0.0/8)
|
|
// (Requires restart)
|
|
//
|
|
// Note: https is enforced when bound to non-local interfaces, unless
|
|
// dangerously_allow_web_serving_without_a_certificate is set
|
|
//
|
|
// Default: false
|
|
//
|
|
// enforce_https_for_localhost true
|
|
|
|
// DANGEROUS: allow the web server to serve plain, unencrypted HTTP when bound to a
|
|
// non-local interface without web_server_cert and web_server_key.
|
|
// Anyone on the network can read and tamper with the traffic, including login tokens.
|
|
// Only use behind a trusted TLS-terminating proxy or on a fully trusted network.
|
|
// Does not override enforce_https_for_localhost.
|
|
// Default: false
|
|
// (Requires restart)
|
|
//
|
|
// dangerously_allow_web_serving_without_a_certificate true
|
|
|
|
// The port the web server should listen on when it starts
|
|
// Default: 8082
|
|
// (Requires restart)
|
|
//
|
|
// web_server_port 8082
|
|
|
|
// Whether to stack panes when resizing beyond a certain size
|
|
// Default: true
|
|
//
|
|
// stacked_resize false
|
|
|
|
// Whether to let programs running inside panes read the paste buffer (clipboard)
|
|
// with the OSC 52 escape sequence. When enabled, any program in any pane -
|
|
// including one running on a remote machine over SSH - can read the clipboard
|
|
// without the user being asked.
|
|
// Default: false
|
|
//
|
|
// dangerously_enable_paste_buffer_read true
|
|
|
|
// Whether stacked panes display as a list with the expanded pane pinned to the bottom
|
|
// Default: true
|
|
//
|
|
// stacked_pane_list false
|
|
|
|
// Whether to show release notes on first version run
|
|
// (Requires restart)
|
|
// Default: true
|
|
//
|
|
// show_release_notes false
|
|
|
|
// Whether to enable mouse hover effects and pane grouping functionality
|
|
// Default: true
|
|
//
|
|
// advanced_mouse_actions false
|
|
|
|
// Whether Ctrl+ScrollWheel resizes panes
|
|
// Default: true
|
|
//
|
|
// mouse_scroll_resize false
|
|
|
|
// Whether scrolling a pane implicitly enters and exits Scroll mode
|
|
// Default: true
|
|
//
|
|
// scroll_mode_sync false
|
|
|
|
// Whether to enable mouse hover visual effects (frame highlight and help text)
|
|
// Default: true
|
|
//
|
|
// mouse_hover_effects false
|
|
|
|
// Whether to show mouse hover help-text tips (resize help and group shortcuts)
|
|
// Default: true
|
|
//
|
|
// mouse_hover_tips false
|
|
|
|
// Whether triple-clicking inside command output marked by the shell (OSC 133) selects
|
|
// the command and its output instead of the logical line
|
|
// Default: true
|
|
//
|
|
// osc133_command_selection false
|
|
|
|
// Characters that terminate a word when double-clicking to select it
|
|
// whitespace is always a separator and need not be listed here
|
|
// Default: "[]{}<>()"
|
|
//
|
|
// word_separators "[]{}<>()"
|
|
|
|
// Whether to output OSC8 hyperlink sequences
|
|
// (Requires restart)
|
|
// Default: true
|
|
//
|
|
// osc8_hyperlinks false
|
|
|
|
// A command to run (will be wrapped with sh -c and provided the RESURRECT_COMMAND env variable)
|
|
// after Zellij attempts to discover a command inside a pane when resurrecting sessions, the STDOUT
|
|
// of this command will be used instead of the discovered RESURRECT_COMMAND
|
|
// can be useful for removing wrappers around commands
|
|
// Note: be sure to escape backslashes and similar characters properly
|
|
//
|
|
// post_command_discovery_hook "echo $RESURRECT_COMMAND | sed <your_regex_here>"
|
|
|
|
// Number of async worker tasks to spawn per active client.
|
|
// (Requires restart)
|
|
//
|
|
// Allocating few tasks may result in resource contention and lags. Small values (around 4) should
|
|
// typically work best. Set to 0 to use the number of (physical) CPU cores.
|
|
// NOTE: This only applies to web clients at the moment.
|
|
// client_async_worker_tasks 4
|
|
|
|
// How often (in seconds) sessions are saved to disk so they can be resurrected
|
|
// (Requires restart)
|
|
// Default: 60
|
|
//
|
|
// serialization_interval 60
|
|
|
|
// Whether to show a startup tip when a new session starts
|
|
// (Requires restart)
|
|
// Default: true
|
|
//
|
|
// show_startup_tips false
|
|
|
|
// Whether to flash pane and tab frames (and add a [!] suffix) when a terminal bell rings
|
|
// Default: true
|
|
//
|
|
// visual_bell false
|
|
|
|
// Whether hovering the mouse over a pane focuses it
|
|
// Default: false
|
|
//
|
|
// focus_follows_mouse true
|
|
|
|
// Whether the click that focuses a pane is also sent to the program running in it
|
|
// Default: false
|
|
//
|
|
// mouse_click_through true
|
|
|
|
// Whether a right click opens the right-click menu
|
|
// When off, right clicks go to the focused pane only and Alt + right click clears the pane group
|
|
// Plugins can still open the menu through their API
|
|
// Default: true
|
|
//
|
|
// context_menu_enabled false
|
|
|
|
// How notifications from programs inside Zellij are passed to the outer terminal
|
|
// Options:
|
|
// - auto (Default - pick the best protocol the terminal supports)
|
|
// - osc9
|
|
// - osc99
|
|
// - bell
|
|
// - off
|
|
//
|
|
// host_notification_protocol "auto"
|
|
|
|
// Settings for the web client (font, font_size, cursor_blink, cursor_style, ...)
|
|
// (Requires restart)
|
|
web_client {
|
|
font "monospace"
|
|
}
|