mirror of
https://github.com/zellij-org/zellij.git
synced 2026-10-11 22:50:07 +00:00
* configurable mouse bindings * feat(bars): reorder tabs with mouse drag, clickable status-bar shortcuts with hover effects * fix tests * add pr
808 lines
28 KiB
KDL
808 lines
28 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" unlock="Ctrl g" {
|
|
normal {
|
|
// uncomment this and adjust key if using copy_on_select=false
|
|
// bind "Alt c" { Copy; }
|
|
}
|
|
locked {
|
|
bind "Ctrl g" { SwitchToMode "Normal"; }
|
|
}
|
|
resize {
|
|
bind "Ctrl n" { SwitchToMode "Normal"; }
|
|
bind "h" "Left" { Resize "Increase Left"; }
|
|
bind "j" "Down" { Resize "Increase Down"; }
|
|
bind "k" "Up" { Resize "Increase Up"; }
|
|
bind "l" "Right" { Resize "Increase Right"; }
|
|
bind "H" { Resize "Decrease Left"; }
|
|
bind "J" { Resize "Decrease Down"; }
|
|
bind "K" { Resize "Decrease Up"; }
|
|
bind "L" { Resize "Decrease Right"; }
|
|
bind "=" "+" { Resize "Increase"; }
|
|
bind "-" { Resize "Decrease"; }
|
|
}
|
|
pane {
|
|
bind "Ctrl p" { SwitchToMode "Normal"; }
|
|
bind "h" "Left" { MoveFocus "Left"; }
|
|
bind "l" "Right" { MoveFocus "Right"; }
|
|
bind "j" "Down" { MoveFocus "Down"; }
|
|
bind "k" "Up" { MoveFocus "Up"; }
|
|
bind "p" { SwitchFocus; }
|
|
bind "n" { NewPane; SwitchToMode "Normal"; }
|
|
bind "d" { NewPane "Down"; SwitchToMode "Normal"; }
|
|
bind "r" { NewPane "Right"; SwitchToMode "Normal"; }
|
|
bind "s" { NewPane "stacked"; SwitchToMode "Normal"; }
|
|
bind "x" { CloseFocus; SwitchToMode "Normal"; }
|
|
bind "f" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
|
|
bind "Shift f" { ToggleFocusNoUiFullscreen; SwitchToMode "Normal"; }
|
|
bind "z" { TogglePaneFrames; SwitchToMode "Normal"; }
|
|
bind "w" { ToggleFloatingPanes; SwitchToMode "Normal"; }
|
|
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "Normal"; }
|
|
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0;}
|
|
bind "i" { TogglePanePinned; SwitchToMode "Normal"; }
|
|
}
|
|
move {
|
|
bind "Ctrl h" { SwitchToMode "Normal"; }
|
|
bind "n" "Tab" { MovePane; }
|
|
bind "p" { MovePaneBackwards; }
|
|
bind "h" "Left" { MovePane "Left"; }
|
|
bind "j" "Down" { MovePane "Down"; }
|
|
bind "k" "Up" { MovePane "Up"; }
|
|
bind "l" "Right" { MovePane "Right"; }
|
|
}
|
|
tab {
|
|
bind "Ctrl t" { SwitchToMode "Normal"; }
|
|
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
|
bind "h" "Left" "Up" "k" { GoToPreviousTab; }
|
|
bind "l" "Right" "Down" "j" { GoToNextTab; }
|
|
bind "n" { NewTab; SwitchToMode "Normal"; }
|
|
bind "x" { CloseTab; SwitchToMode "Normal"; }
|
|
bind "s" { ToggleActiveSyncTab; SwitchToMode "Normal"; }
|
|
bind "b" { BreakPane; SwitchToMode "Normal"; }
|
|
bind "]" { BreakPaneRight; SwitchToMode "Normal"; }
|
|
bind "[" { BreakPaneLeft; SwitchToMode "Normal"; }
|
|
bind "1" { GoToTab 1; SwitchToMode "Normal"; }
|
|
bind "2" { GoToTab 2; SwitchToMode "Normal"; }
|
|
bind "3" { GoToTab 3; SwitchToMode "Normal"; }
|
|
bind "4" { GoToTab 4; SwitchToMode "Normal"; }
|
|
bind "5" { GoToTab 5; SwitchToMode "Normal"; }
|
|
bind "6" { GoToTab 6; SwitchToMode "Normal"; }
|
|
bind "7" { GoToTab 7; SwitchToMode "Normal"; }
|
|
bind "8" { GoToTab 8; SwitchToMode "Normal"; }
|
|
bind "9" { GoToTab 9; SwitchToMode "Normal"; }
|
|
bind "Tab" { ToggleTab; }
|
|
}
|
|
scroll {
|
|
bind "Ctrl s" { SwitchToMode "Normal"; }
|
|
bind "e" { EditScrollback; SwitchToMode "Normal"; }
|
|
bind "s" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
|
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
|
|
bind "j" "Down" { ScrollDown; }
|
|
bind "k" "Up" { ScrollUp; }
|
|
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
|
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
|
bind "d" { HalfPageScrollDown; }
|
|
bind "u" { HalfPageScrollUp; }
|
|
bind "[" { ScrollToPreviousPrompt; }
|
|
bind "]" { ScrollToNextPrompt; }
|
|
bind "m" { SelectCommandAtScrollPosition; }
|
|
bind "c" { CopyLastCommandOutput; SwitchToMode "Normal"; }
|
|
// uncomment this and adjust key if using copy_on_select=false
|
|
// bind "Alt c" { Copy; }
|
|
}
|
|
search {
|
|
bind "Ctrl s" { SwitchToMode "Normal"; }
|
|
bind "Ctrl c" { ScrollToBottom; SwitchToMode "Normal"; }
|
|
bind "j" "Down" { ScrollDown; }
|
|
bind "k" "Up" { ScrollUp; }
|
|
bind "Ctrl f" "PageDown" "Right" "l" { PageScrollDown; }
|
|
bind "Ctrl b" "PageUp" "Left" "h" { PageScrollUp; }
|
|
bind "d" { HalfPageScrollDown; }
|
|
bind "u" { HalfPageScrollUp; }
|
|
bind "[" { ScrollToPreviousPrompt; }
|
|
bind "]" { ScrollToNextPrompt; }
|
|
bind "m" { SelectCommandAtScrollPosition; }
|
|
bind "n" { Search "down"; }
|
|
bind "p" { Search "up"; }
|
|
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
|
bind "w" { SearchToggleOption "Wrap"; }
|
|
bind "o" { SearchToggleOption "WholeWord"; }
|
|
}
|
|
entersearch {
|
|
bind "Ctrl c" "Esc" { SwitchToMode "Scroll"; }
|
|
bind "Enter" { SwitchToMode "Search"; }
|
|
}
|
|
renametab {
|
|
bind "Ctrl c" { SwitchToMode "Normal"; }
|
|
bind "Esc" { UndoRenameTab; SwitchToMode "Tab"; }
|
|
}
|
|
renamepane {
|
|
bind "Ctrl c" { SwitchToMode "Normal"; }
|
|
bind "Esc" { UndoRenamePane; SwitchToMode "Pane"; }
|
|
}
|
|
session {
|
|
bind "Ctrl o" { SwitchToMode "Normal"; }
|
|
bind "Ctrl s" { SwitchToMode "Scroll"; }
|
|
bind "d" { Detach; }
|
|
bind "w" {
|
|
LaunchOrFocusPlugin "session-manager" {
|
|
floating true
|
|
move_to_focused_tab true
|
|
};
|
|
SwitchToMode "Normal"
|
|
}
|
|
bind "c" {
|
|
LaunchOrFocusPlugin "configuration" {
|
|
floating true
|
|
move_to_focused_tab true
|
|
};
|
|
SwitchToMode "Normal"
|
|
}
|
|
bind "p" {
|
|
LaunchOrFocusPlugin "plugin-manager" {
|
|
floating true
|
|
move_to_focused_tab true
|
|
};
|
|
SwitchToMode "Normal"
|
|
}
|
|
bind "a" {
|
|
LaunchOrFocusPlugin "zellij:about" {
|
|
floating true
|
|
move_to_focused_tab true
|
|
};
|
|
SwitchToMode "Normal"
|
|
}
|
|
bind "s" {
|
|
LaunchOrFocusPlugin "zellij:share" {
|
|
floating true
|
|
move_to_focused_tab true
|
|
};
|
|
SwitchToMode "Normal"
|
|
}
|
|
bind "l" {
|
|
LaunchOrFocusPlugin "zellij:layout-manager" {
|
|
floating true
|
|
move_to_focused_tab true
|
|
};
|
|
SwitchToMode "Normal"
|
|
}
|
|
}
|
|
tmux {
|
|
bind "[" { SwitchToMode "Scroll"; }
|
|
bind "Ctrl b" { Write 2; SwitchToMode "Normal"; }
|
|
bind "\"" { NewPane "Down"; SwitchToMode "Normal"; }
|
|
bind "%" { NewPane "Right"; SwitchToMode "Normal"; }
|
|
bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; }
|
|
bind "c" { NewTab; SwitchToMode "Normal"; }
|
|
bind "," { SwitchToMode "RenameTab"; }
|
|
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
|
|
bind "n" { GoToNextTab; SwitchToMode "Normal"; }
|
|
bind "Left" { MoveFocus "Left"; SwitchToMode "Normal"; }
|
|
bind "Right" { MoveFocus "Right"; SwitchToMode "Normal"; }
|
|
bind "Down" { MoveFocus "Down"; SwitchToMode "Normal"; }
|
|
bind "Up" { MoveFocus "Up"; SwitchToMode "Normal"; }
|
|
bind "h" { MoveFocus "Left"; SwitchToMode "Normal"; }
|
|
bind "l" { MoveFocus "Right"; SwitchToMode "Normal"; }
|
|
bind "j" { MoveFocus "Down"; SwitchToMode "Normal"; }
|
|
bind "k" { MoveFocus "Up"; SwitchToMode "Normal"; }
|
|
bind "o" { FocusNextPane; }
|
|
bind ";" { FocusLastPane; }
|
|
bind "d" { Detach; }
|
|
bind "Space" { NextSwapLayout; }
|
|
bind "x" { CloseFocus; SwitchToMode "Normal"; }
|
|
}
|
|
shared_except "locked" {
|
|
bind "Ctrl g" { SwitchToMode "Locked"; }
|
|
bind "Ctrl q" { Quit; }
|
|
bind "Alt f" { ToggleFloatingPanes; }
|
|
bind "Alt n" { NewPane; }
|
|
bind "Alt i" { MoveTab "Left"; }
|
|
bind "Alt o" { MoveTab "Right"; }
|
|
bind "Alt h" "Alt Left" { MoveFocusOrTab "Left"; }
|
|
bind "Alt l" "Alt Right" { MoveFocusOrTab "Right"; }
|
|
bind "Alt j" "Alt Down" { MoveFocus "Down"; }
|
|
bind "Alt k" "Alt Up" { MoveFocus "Up"; }
|
|
bind "Alt =" "Alt +" { Resize "Increase"; }
|
|
bind "Alt -" { Resize "Decrease"; }
|
|
bind "Alt [" { PreviousSwapLayout; }
|
|
bind "Alt ]" { NextSwapLayout; }
|
|
bind "Alt p" { TogglePaneInGroup; }
|
|
bind "Alt Shift p" { ToggleGroupMarking; }
|
|
bind "Alt \\" { FocusLastPane; }
|
|
}
|
|
shared_except "normal" "locked" {
|
|
bind "Enter" "Esc" { SwitchToMode "Normal"; }
|
|
}
|
|
shared_except "pane" "locked" {
|
|
bind "Ctrl p" { SwitchToMode "Pane"; }
|
|
}
|
|
shared_except "resize" "locked" {
|
|
bind "Ctrl n" { SwitchToMode "Resize"; }
|
|
}
|
|
shared_except "scroll" "locked" {
|
|
bind "Ctrl s" { SwitchToMode "Scroll"; }
|
|
}
|
|
shared_except "session" "locked" {
|
|
bind "Ctrl o" { SwitchToMode "Session"; }
|
|
}
|
|
shared_except "tab" "locked" {
|
|
bind "Ctrl t" { SwitchToMode "Tab"; }
|
|
}
|
|
shared_except "move" "locked" {
|
|
bind "Ctrl h" { SwitchToMode "Move"; }
|
|
}
|
|
shared_except "tmux" "locked" {
|
|
bind "Ctrl b" { SwitchToMode "Tmux"; }
|
|
}
|
|
}
|
|
|
|
// 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"; }
|
|
// item "Move tab to start" { MoveTabToPosition "start"; }
|
|
// item "Move tab to end" { MoveTabToPosition "end"; }
|
|
// 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"
|
|
}
|