feat(config): switch to kdl (#1759)
* chore(config): default kdl keybindings config * tests * work * refactor(config): move stuff around * work * tab merge layout * work * work * layouts working * work * layout tests * work * work * feat(parsing): kdl layouts without config * refactor(kdl): move stuff around * work * tests(layout): add cases and fix bugs * work * fix(kdl): various bugs * chore(layouts): move all layouts to kdl * feat(kdl): shared keybidns * fix(layout): do not count fixed panes toward percentile * fix(keybinds): missing keybinds and actions * fix(config): adjust default tips * refactor(config): move stuff around * fix(tests): make e2e tests pass * fix(kdl): add verbose parsing errors * fix(kdl): focused tab * fix(layout): corret default_tab_template behavior * style(code): fix compile warnings * feat(cli): send actions through the cli * fix(cli): exit only when action is done * fix(cli): open embedded pane from floating pane * fix(cli): send actions to other sessions * feat(cli): command alias * feat(converter): convert old config * feat(converter): convert old layout and theme files * feat(kdl): pretty errors * feat(client): convert old YAML files on startup * fix: various bugs and styling issues * fix: e2e tests * fix(screen): propagate errors after merge * style(clippy): lower clippy level * fix(tests): own session_name variable * style(fmt): rustfmt * fix(cli): various action fixes * style(fmt): rustfmt * fix(themes): loading of theme files * style(fmt): rustfmt * fix(tests): theme fixtures * fix(layouts): better errors on unknown nodes * fix(kdl): clarify valid node terminator error * fix(e2e): adjust close tab test * fix(e2e): adjust close tab test again * style(code): cleanup some comments
This commit is contained in:
parent
917e9b2ff0
commit
79bf6ab868
355 changed files with 42603 additions and 4889 deletions
65
Cargo.lock
generated
65
Cargo.lock
generated
|
|
@ -1225,6 +1225,17 @@ dependencies = [
|
|||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "kdl"
|
||||
version = "4.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a8388a371e0e2ede18bbd94e476fcd45b4ac65cefcedf0c06fd13bd8389574a6"
|
||||
dependencies = [
|
||||
"miette 5.3.0",
|
||||
"nom 7.1.1",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "kv-log-macro"
|
||||
version = "1.0.7"
|
||||
|
|
@ -1412,7 +1423,7 @@ checksum = "cd2adcfcced5d625bf90a958a82ae5b93231f57f3df1383fee28c9b5096d35ed"
|
|||
dependencies = [
|
||||
"atty",
|
||||
"backtrace",
|
||||
"miette-derive",
|
||||
"miette-derive 3.3.0",
|
||||
"once_cell",
|
||||
"owo-colors",
|
||||
"supports-color",
|
||||
|
|
@ -1423,6 +1434,18 @@ dependencies = [
|
|||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "miette"
|
||||
version = "5.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a28d6092d7e94a90bb9ea8e6c26c99d5d112d49dda2afdb4f7ea8cf09e1a5a6d"
|
||||
dependencies = [
|
||||
"miette-derive 5.3.0",
|
||||
"once_cell",
|
||||
"thiserror",
|
||||
"unicode-width",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "miette-derive"
|
||||
version = "3.3.0"
|
||||
|
|
@ -1434,6 +1457,23 @@ dependencies = [
|
|||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "miette-derive"
|
||||
version = "5.3.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4f2485ed7d1fe80704928e3eb86387439609bd0c6bb96db8208daa364cfd1e09"
|
||||
dependencies = [
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "minimal-lexical"
|
||||
version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"
|
||||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.5.3"
|
||||
|
|
@ -1503,6 +1543,16 @@ dependencies = [
|
|||
"version_check",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "nom"
|
||||
version = "7.1.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
"minimal-lexical",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ntapi"
|
||||
version = "0.3.7"
|
||||
|
|
@ -2501,7 +2551,7 @@ checksum = "76971977e6121664ec1b960d1313aacfa75642adc93b9d4d53b247bd4cb1747e"
|
|||
dependencies = [
|
||||
"dirs",
|
||||
"fnv",
|
||||
"nom",
|
||||
"nom 5.1.2",
|
||||
"phf",
|
||||
"phf_codegen",
|
||||
]
|
||||
|
|
@ -3312,11 +3362,12 @@ dependencies = [
|
|||
"dialoguer",
|
||||
"insta",
|
||||
"log",
|
||||
"miette",
|
||||
"miette 3.3.0",
|
||||
"names",
|
||||
"rand 0.8.5",
|
||||
"ssh2",
|
||||
"suggest",
|
||||
"thiserror",
|
||||
"zellij-client",
|
||||
"zellij-server",
|
||||
"zellij-utils",
|
||||
|
|
@ -3329,6 +3380,9 @@ dependencies = [
|
|||
"insta",
|
||||
"log",
|
||||
"mio",
|
||||
"serde",
|
||||
"serde_yaml",
|
||||
"url",
|
||||
"zellij-utils",
|
||||
]
|
||||
|
||||
|
|
@ -3393,19 +3447,20 @@ dependencies = [
|
|||
"colorsys",
|
||||
"crossbeam",
|
||||
"directories-next",
|
||||
"insta",
|
||||
"interprocess",
|
||||
"kdl",
|
||||
"lazy_static",
|
||||
"libc",
|
||||
"log",
|
||||
"log4rs",
|
||||
"miette",
|
||||
"miette 3.3.0",
|
||||
"nix",
|
||||
"once_cell",
|
||||
"regex",
|
||||
"rmp-serde",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"serde_yaml",
|
||||
"signal-hook 0.3.14",
|
||||
"strip-ansi-escapes",
|
||||
"strum",
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ rust-version = "1.59"
|
|||
|
||||
[dependencies]
|
||||
anyhow = "1.0"
|
||||
thiserror = "1.0.30"
|
||||
names = { version = "0.13.0", default-features = false }
|
||||
miette = { version = "3.3.0", features = ["fancy"] }
|
||||
zellij-client = { path = "zellij-client/", version = "0.32.0" }
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ args = [
|
|||
|
||||
# Simple clippy tweak
|
||||
[tasks.clippy]
|
||||
args = ["clippy", "--all-targets","--all-features","--","--deny","warnings", "@@split(CARGO_MAKE_TASK_ARGS,;)"]
|
||||
args = ["clippy", "--all-targets", "--all-features", "@@split(CARGO_MAKE_TASK_ARGS,;)"]
|
||||
|
||||
# Release building and installing Zellij
|
||||
[tasks.install]
|
||||
|
|
|
|||
|
|
@ -180,7 +180,7 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<Key>)> {
|
|||
|
||||
vec![
|
||||
(s("Move focus"), s("Move"), focus_keys),
|
||||
(s("New"), s("New"), action_key(&km, &[A::NewTab(None), TO_NORMAL])),
|
||||
(s("New"), s("New"), action_key(&km, &[A::NewTab(None, None), TO_NORMAL])),
|
||||
(s("Close"), s("Close"), action_key(&km, &[A::CloseTab, TO_NORMAL])),
|
||||
(s("Rename"), s("Rename"),
|
||||
action_key(&km, &[A::SwitchToMode(IM::RenameTab), A::TabNameInput(vec![0])])),
|
||||
|
|
@ -242,7 +242,7 @@ fn get_keys_and_hints(mi: &ModeInfo) -> Vec<(String, String, Vec<Key>)> {
|
|||
(s("Split down"), s("Down"), action_key(&km, &[A::NewPane(Some(Dir::Down)), TO_NORMAL])),
|
||||
(s("Split right"), s("Right"), action_key(&km, &[A::NewPane(Some(Dir::Right)), TO_NORMAL])),
|
||||
(s("Fullscreen"), s("Fullscreen"), action_key(&km, &[A::ToggleFocusFullscreen, TO_NORMAL])),
|
||||
(s("New tab"), s("New"), action_key(&km, &[A::NewTab(None), TO_NORMAL])),
|
||||
(s("New tab"), s("New"), action_key(&km, &[A::NewTab(None, None), TO_NORMAL])),
|
||||
(s("Rename tab"), s("Rename"),
|
||||
action_key(&km, &[A::SwitchToMode(IM::RenameTab), A::TabNameInput(vec![0])])),
|
||||
(s("Previous Tab"), s("Previous"), action_key(&km, &[A::GoToPreviousTab, TO_NORMAL])),
|
||||
|
|
|
|||
|
|
@ -72,13 +72,18 @@ fn add_keybinds(help: &ModeInfo) -> Keygroups {
|
|||
style_key_with_modifier(&new_pane_keys, &help.style.colors)
|
||||
};
|
||||
|
||||
let resize_keys = action_key_group(
|
||||
let mut resize_keys = action_key_group(
|
||||
&normal_keymap,
|
||||
&[
|
||||
&[Action::Resize(ResizeDirection::Increase)],
|
||||
&[Action::Resize(ResizeDirection::Decrease)],
|
||||
],
|
||||
);
|
||||
if resize_keys.contains(&Key::Alt(CharOrArrow::Char('=')))
|
||||
&& resize_keys.contains(&Key::Alt(CharOrArrow::Char('+')))
|
||||
{
|
||||
resize_keys.retain(|k| k != &Key::Alt(CharOrArrow::Char('=')));
|
||||
}
|
||||
let resize = if resize_keys.is_empty() {
|
||||
vec![Style::new().bold().paint("UNBOUND")]
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
# Themes
|
||||
Please make sure that the theme name and the file name are the same (+`.yaml`).
|
||||
Please make sure that the theme name and the file name are the same (+`.kdl`).
|
||||
|
||||
Example:
|
||||
|
||||
- theme: gruvbox
|
||||
- filename: `gruvbox.yaml`
|
||||
- filename: `gruvbox.kdl`
|
||||
|
|
|
|||
17
example/themes/dracula.kdl
Normal file
17
example/themes/dracula.kdl
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// From https://github.com/dracula/zellij
|
||||
|
||||
themes {
|
||||
dracula {
|
||||
fg 248 248 242
|
||||
bg 40 42 54
|
||||
black 0 0 0
|
||||
red 255 85 85
|
||||
green 80 250 123
|
||||
yellow 241 250 140
|
||||
blue 98 114 164
|
||||
magenta 255 121 198
|
||||
cyan 139 233 253
|
||||
white 255 255 255
|
||||
orange 255 184 108
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
# Dracula Theme
|
||||
|
||||
themes:
|
||||
dracula:
|
||||
# From https://github.com/dracula/zellij
|
||||
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]
|
||||
fg: [248, 248, 242]
|
||||
cyan: [139, 233, 253]
|
||||
black: [0, 0, 0]
|
||||
white: [255, 255, 255]
|
||||
16
example/themes/gruvbox-dark.kdl
Normal file
16
example/themes/gruvbox-dark.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
gruvbox-dark {
|
||||
fg 213 196 161
|
||||
bg 40 40 40
|
||||
black 60 56 54
|
||||
red 204 36 29
|
||||
green 152 151 26
|
||||
yellow 215 153 33
|
||||
blue 69 133 136
|
||||
magenta 177 98 134
|
||||
cyan 104 157 106
|
||||
white 251 241 199
|
||||
orange 214 93 14
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# Gruvbox theme
|
||||
|
||||
themes:
|
||||
gruvbox-dark:
|
||||
bg: [40, 40, 40]
|
||||
red: [204, 36, 29]
|
||||
green: [152, 151, 26]
|
||||
yellow: [215, 153, 33]
|
||||
blue: [69, 133, 136]
|
||||
magenta: [177, 98, 134]
|
||||
orange: [214, 93, 14]
|
||||
fg: [213, 196, 161]
|
||||
cyan: [104, 157, 106]
|
||||
black: [60, 56, 54]
|
||||
white: [251, 241, 199]
|
||||
16
example/themes/gruvbox-light.kdl
Normal file
16
example/themes/gruvbox-light.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
gruvbox-light {
|
||||
fg 60 56 54
|
||||
bg 251 82 75
|
||||
black 40 40 40
|
||||
red 205 75 69
|
||||
green 152 151 26
|
||||
yellow 215 153 33
|
||||
blue 69 133 136
|
||||
magenta 177 98 134
|
||||
cyan 104 157 106
|
||||
white 213 196 161
|
||||
orange 214 93 14
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# Gruvbox theme
|
||||
|
||||
themes:
|
||||
gruvbox-light:
|
||||
bg: [251, 82, 75]
|
||||
red: [205, 75, 69]
|
||||
green: [152, 151, 26]
|
||||
yellow: [215, 153, 33]
|
||||
blue: [69, 133, 136]
|
||||
magenta: [177, 98, 134]
|
||||
orange: [214, 93, 14]
|
||||
fg: [60, 56, 54]
|
||||
cyan: [104, 157, 106]
|
||||
black: [40, 40, 40]
|
||||
white: [213, 196, 161]
|
||||
16
example/themes/molokai-dark.kdl
Normal file
16
example/themes/molokai-dark.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
molokai-dark {
|
||||
fg 248 248 240
|
||||
bg 27 29 30
|
||||
black 0 0 0
|
||||
red 255 0 0
|
||||
green 0 140 0
|
||||
yellow 255 255 0
|
||||
blue 102 217 239
|
||||
magenta 174 129 255
|
||||
cyan 0 255 255
|
||||
white 255 255 255
|
||||
orange 253 151 31
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# Molokai Theme
|
||||
|
||||
themes:
|
||||
molokai-dark:
|
||||
bg: [27, 29, 30]
|
||||
red: [255, 0, 0]
|
||||
green: [0, 140, 0]
|
||||
yellow: [255, 255, 0]
|
||||
blue: [102, 217, 239]
|
||||
magenta: [174, 129, 255]
|
||||
orange: [253, 151, 31]
|
||||
fg: [248, 248, 240]
|
||||
cyan: [0, 255, 255]
|
||||
black: [0, 0, 0]
|
||||
white: [255, 255, 255]
|
||||
15
example/themes/nord.kdl
Normal file
15
example/themes/nord.kdl
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
themes {
|
||||
nord {
|
||||
fg 216 222 233 // #D8DEE9
|
||||
bg 46 52 64 // #2E3440
|
||||
black 59 66 82 // #3B4252
|
||||
red 191 97 106 // #BF616A
|
||||
green 163 190 140 // #A3BE8C
|
||||
yellow 235 203 139 // #EBCB8B
|
||||
blue 129 161 193 // #81A1C1
|
||||
magenta 180 142 173 // #B48EAD
|
||||
cyan 136 192 208 // #88C0D0
|
||||
white 229 233 240 // #E5E9F0
|
||||
orange 208 135 112 // #D08770
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
# Nord theme
|
||||
|
||||
themes:
|
||||
nord:
|
||||
fg: [216, 222, 233] #D8DEE9
|
||||
bg: [46, 52, 64] #2E3440
|
||||
black: [59, 66, 82] #3B4252
|
||||
red: [191, 97, 106] #BF616A
|
||||
green: [163, 190, 140] #A3BE8C
|
||||
yellow: [235,203,139] #EBCB8B
|
||||
blue: [129, 161, 193] #81A1C1
|
||||
magenta: [180, 142, 173] #B48EAD
|
||||
cyan: [136, 192, 208] #88C0D0
|
||||
white: [229, 233, 240] #E5E9F0
|
||||
orange: [208, 135, 112] #D08770
|
||||
|
||||
16
example/themes/one-half-dark.kdl
Normal file
16
example/themes/one-half-dark.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
one-half-dark {
|
||||
fg 220 223 228
|
||||
bg 40 44 52
|
||||
black 27 29 35
|
||||
red 227 63 76
|
||||
green 152 195 121
|
||||
yellow 229 192 123
|
||||
blue 97 175 239
|
||||
magenta 198 120 221
|
||||
cyan 86 182 194
|
||||
white 233 225 254
|
||||
orange 216 133 76
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# One Half Theme
|
||||
|
||||
themes:
|
||||
one-half-dark:
|
||||
bg: [40, 44, 52]
|
||||
red: [227, 63, 76]
|
||||
green: [152, 195, 121]
|
||||
yellow: [229, 192, 123]
|
||||
blue: [97, 175, 239]
|
||||
magenta: [198, 120, 221]
|
||||
orange: [216, 133, 76]
|
||||
fg: [220, 223, 228]
|
||||
cyan: [86, 182, 194]
|
||||
black: [27, 29, 35]
|
||||
white: [233, 225, 254]
|
||||
16
example/themes/solarized-dark.kdl
Normal file
16
example/themes/solarized-dark.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
solarized-dark {
|
||||
fg 253 246 227
|
||||
bg 0 43 54
|
||||
black 7 54 66
|
||||
red 220 50 47
|
||||
green 133 153 0
|
||||
yellow 181 137 0
|
||||
blue 38 139 210
|
||||
magenta 211 54 130
|
||||
cyan 42 161 152
|
||||
white 238 232 213
|
||||
orange 203 75 22
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# Solarized dark
|
||||
|
||||
themes:
|
||||
solarized-dark:
|
||||
bg: [0, 43, 54]
|
||||
red: [220, 50, 47]
|
||||
green: [133, 153, 0]
|
||||
yellow: [181, 137, 0]
|
||||
blue: [38, 139, 210]
|
||||
magenta: [211, 54, 130]
|
||||
orange: [203, 75, 22]
|
||||
fg: [253, 246, 227]
|
||||
cyan: [42, 161, 152]
|
||||
black: [7, 54, 66]
|
||||
white: [238, 232, 213]
|
||||
16
example/themes/solarized-light.kdl
Normal file
16
example/themes/solarized-light.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
solarized-light {
|
||||
fg 101 123 131
|
||||
bg 253 246 227
|
||||
black 7 54 66
|
||||
red 220 50 47
|
||||
green 133 153 0
|
||||
yellow 181 137 0
|
||||
blue 38 139 210
|
||||
magenta 211 54 130
|
||||
cyan 42 161 152
|
||||
white 238 232 213
|
||||
orange 203 75 22
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
# Solarized light
|
||||
|
||||
themes:
|
||||
solarized-light:
|
||||
bg: [253, 246, 227]
|
||||
red: [220, 50, 47]
|
||||
green: [133, 153, 0]
|
||||
yellow: [181, 137, 0]
|
||||
blue: [38, 139, 210]
|
||||
magenta: [211, 54, 130]
|
||||
orange: [203, 75, 22]
|
||||
fg: [101, 123, 131]
|
||||
cyan: [42, 161, 152]
|
||||
black: [7, 54, 66]
|
||||
white: [238, 232, 213]
|
||||
0
example/themes/tokyo-night-dark.kdl
Normal file
0
example/themes/tokyo-night-dark.kdl
Normal file
16
example/themes/tokyo-night-light.kdl
Normal file
16
example/themes/tokyo-night-light.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
tokyo-night-light {
|
||||
fg 52 59 88
|
||||
bg 213 214 219
|
||||
black 15 15 20
|
||||
red 186 75 96
|
||||
green 72 94 48
|
||||
yellow 143 94 21
|
||||
blue 52 84 138
|
||||
magenta 90 74 120
|
||||
cyan 15 75 110
|
||||
white 130 137 172
|
||||
orange 150 80 39
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
# TokyoNight Theme
|
||||
# Originally by https://github.com/enkia/tokyo-night-vscode-theme
|
||||
|
||||
themes:
|
||||
tokyo-night-light:
|
||||
fg: [52,59,88] #343B58
|
||||
bg: [213,214,219] #D5D6DB
|
||||
black: [15,15,20] #0F0F14
|
||||
red: [186,75,96] #BA4B60
|
||||
green: [72,94,48] #485E30
|
||||
yellow: [143,94,21] #8F5E15
|
||||
blue: [52,84,138] #34548A
|
||||
magenta: [90,74,120] #5A4A78
|
||||
cyan: [15,75,110] #0F4B6E
|
||||
white: [130,137,172] #8289AC
|
||||
orange: [150,80,39] #965027
|
||||
16
example/themes/tokyo-night-storm.kdl
Normal file
16
example/themes/tokyo-night-storm.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
tokyo-night-storm {
|
||||
fg 169 177 214
|
||||
bg 36 40 59
|
||||
black 56 62 90
|
||||
red 249 51 87
|
||||
green 158 206 106
|
||||
yellow 224 175 104
|
||||
blue 122 162 247
|
||||
magenta 187 154 247
|
||||
cyan 42 195 222
|
||||
white 192 202 245
|
||||
orange 255 158 100
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
# TokyoNight Theme
|
||||
# Originally by https://github.com/enkia/tokyo-night-vscode-theme
|
||||
|
||||
themes:
|
||||
tokyo-night-storm:
|
||||
fg: [169,177,214] #A9B1D6
|
||||
bg: [36,40,59] #24283B
|
||||
black: [56,62,90] #383E5A
|
||||
red: [249,51,87] #F9334D
|
||||
green: [158,206,106] #9ECE6A
|
||||
yellow: [224,175,104] #E0AF68
|
||||
blue: [122,162,247] #7AA2F7
|
||||
magenta: [187,154,247] #BB9AF7
|
||||
cyan: [42,195,222] #2AC3DE
|
||||
white: [192,202,245] #C0CAF5
|
||||
orange: [255,158,100] #FF9E64
|
||||
16
example/themes/tokyo-night.kdl
Normal file
16
example/themes/tokyo-night.kdl
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
themes {
|
||||
tokyo-night {
|
||||
fg 169 177 214
|
||||
bg 26 27 38
|
||||
black 56 62 90
|
||||
red 249 51 87
|
||||
green 158 206 106
|
||||
yellow 224 175 104
|
||||
blue 122 162 247
|
||||
magenta 187 154 247
|
||||
cyan 42 195 222
|
||||
white 192 202 245
|
||||
orange 255 158 100
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
# TokyoNight Theme
|
||||
# Originally by https://github.com/enkia/tokyo-night-vscode-theme
|
||||
|
||||
themes:
|
||||
tokyo-night:
|
||||
fg: [169,177,214] #A9B1D6
|
||||
bg: [26,27,38] #1A1B26
|
||||
black: [56,62,90] #383E5A
|
||||
red: [249,51,87] #F9334D
|
||||
green: [158,206,106] #9ECE6A
|
||||
yellow: [224,175,104] #E0AF68
|
||||
blue: [122,162,247] #7AA2F7
|
||||
magenta: [187,154,247] #BB9AF7
|
||||
cyan: [42,195,222] #2AC3DE
|
||||
white: [192,202,245] #C0CAF5
|
||||
orange: [255,158,100] #FF9E64
|
||||
200
src/commands.rs
200
src/commands.rs
|
|
@ -6,13 +6,18 @@ use crate::sessions::{
|
|||
session_exists, ActiveSession, SessionNameMatch,
|
||||
};
|
||||
use dialoguer::Confirm;
|
||||
use miette::Result;
|
||||
use miette::{Report, Result};
|
||||
use std::path::PathBuf;
|
||||
use std::process;
|
||||
use zellij_client::old_config_converter::{
|
||||
config_yaml_to_config_kdl, convert_old_yaml_files, layout_yaml_to_layout_kdl,
|
||||
};
|
||||
use zellij_client::start_client as start_client_impl;
|
||||
use zellij_client::{os_input_output::get_client_os_input, ClientInfo};
|
||||
use zellij_server::os_input_output::get_server_os_input;
|
||||
use zellij_server::start_server as start_server_impl;
|
||||
use zellij_utils::input::actions::Action;
|
||||
use zellij_utils::input::config::ConfigError;
|
||||
use zellij_utils::input::options::Options;
|
||||
use zellij_utils::nix;
|
||||
use zellij_utils::{
|
||||
|
|
@ -21,10 +26,7 @@ use zellij_utils::{
|
|||
setup::{get_default_data_dir, Setup},
|
||||
};
|
||||
|
||||
#[cfg(feature = "unstable")]
|
||||
use miette::IntoDiagnostic;
|
||||
#[cfg(feature = "unstable")]
|
||||
use zellij_utils::input::actions::ActionsFromYaml;
|
||||
use std::{fs::File, io::prelude::*};
|
||||
|
||||
pub(crate) use crate::sessions::list_sessions;
|
||||
|
||||
|
|
@ -118,69 +120,133 @@ fn find_indexed_session(
|
|||
}
|
||||
}
|
||||
|
||||
/// Send a vec of `[Action]` to a currently running session.
|
||||
#[cfg(feature = "unstable")]
|
||||
pub(crate) fn send_action_to_session(opts: zellij_utils::cli::CliArgs) {
|
||||
pub(crate) fn send_action_to_session(
|
||||
cli_action: zellij_utils::cli::CliAction,
|
||||
requested_session_name: Option<String>,
|
||||
) {
|
||||
match get_active_session() {
|
||||
ActiveSession::None => {
|
||||
eprintln!("There is no active session!");
|
||||
std::process::exit(1);
|
||||
},
|
||||
ActiveSession::One(session_name) => {
|
||||
attach_with_fake_client(opts, &session_name);
|
||||
if let Some(requested_session_name) = requested_session_name {
|
||||
if requested_session_name != session_name {
|
||||
eprintln!(
|
||||
"Session '{}' not found. The following sessions are active:",
|
||||
requested_session_name
|
||||
);
|
||||
eprintln!("{}", session_name);
|
||||
std::process::exit(1);
|
||||
}
|
||||
}
|
||||
attach_with_cli_client(cli_action, &session_name);
|
||||
},
|
||||
ActiveSession::Many => {
|
||||
if let Some(session_name) = opts.session.clone() {
|
||||
attach_with_fake_client(opts, &session_name);
|
||||
} else if let Ok(session_name) = envs::get_session_name() {
|
||||
attach_with_fake_client(opts, &session_name);
|
||||
let existing_sessions = get_sessions().unwrap();
|
||||
if let Some(session_name) = requested_session_name {
|
||||
if existing_sessions.contains(&session_name) {
|
||||
attach_with_cli_client(cli_action, &session_name);
|
||||
} else {
|
||||
println!("Please specify the session name to send actions to. The following sessions are active:");
|
||||
print_sessions(get_sessions().unwrap());
|
||||
eprintln!(
|
||||
"Session '{}' not found. The following sessions are active:",
|
||||
session_name
|
||||
);
|
||||
print_sessions(existing_sessions);
|
||||
std::process::exit(1);
|
||||
}
|
||||
} else if let Ok(session_name) = envs::get_session_name() {
|
||||
attach_with_cli_client(cli_action, &session_name);
|
||||
} else {
|
||||
eprintln!("Please specify the session name to send actions to. The following sessions are active:");
|
||||
print_sessions(existing_sessions);
|
||||
std::process::exit(1);
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
#[cfg(feature = "unstable")]
|
||||
fn attach_with_fake_client(opts: zellij_utils::cli::CliArgs, name: &str) {
|
||||
if let Some(zellij_utils::cli::Command::Sessions(zellij_utils::cli::Sessions::Action {
|
||||
action: Some(action),
|
||||
})) = opts.command.clone()
|
||||
{
|
||||
let action = format!("[{}]", action);
|
||||
match zellij_utils::serde_yaml::from_str::<ActionsFromYaml>(&action).into_diagnostic() {
|
||||
Ok(parsed) => {
|
||||
let (config, _, config_options) = match Setup::from_options(&opts) {
|
||||
Ok(results) => results,
|
||||
pub(crate) fn convert_old_config_file(old_config_file: PathBuf) {
|
||||
match File::open(&old_config_file) {
|
||||
Ok(mut handle) => {
|
||||
let mut raw_config_file = String::new();
|
||||
let _ = handle.read_to_string(&mut raw_config_file);
|
||||
match config_yaml_to_config_kdl(&raw_config_file, false) {
|
||||
Ok(kdl_config) => {
|
||||
println!("{}", kdl_config);
|
||||
process::exit(0);
|
||||
},
|
||||
Err(e) => {
|
||||
eprintln!("{}", e);
|
||||
eprintln!("Failed to convert config: {}", e);
|
||||
process::exit(1);
|
||||
},
|
||||
};
|
||||
let os_input = get_os_input(zellij_client::os_input_output::get_client_os_input);
|
||||
}
|
||||
},
|
||||
Err(e) => {
|
||||
eprintln!("Failed to open file: {}", e);
|
||||
process::exit(1);
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
let actions = parsed.actions().to_vec();
|
||||
log::debug!("Starting fake Zellij client!");
|
||||
zellij_client::fake_client::start_fake_client(
|
||||
Box::new(os_input),
|
||||
opts,
|
||||
*Box::new(config),
|
||||
config_options,
|
||||
ClientInfo::New(name.to_string()),
|
||||
None,
|
||||
actions,
|
||||
);
|
||||
log::debug!("Quitting fake client now.");
|
||||
pub(crate) fn convert_old_layout_file(old_layout_file: PathBuf) {
|
||||
match File::open(&old_layout_file) {
|
||||
Ok(mut handle) => {
|
||||
let mut raw_layout_file = String::new();
|
||||
let _ = handle.read_to_string(&mut raw_layout_file);
|
||||
match layout_yaml_to_layout_kdl(&raw_layout_file) {
|
||||
Ok(kdl_layout) => {
|
||||
println!("{}", kdl_layout);
|
||||
process::exit(0);
|
||||
},
|
||||
Err(e) => {
|
||||
eprintln!("Failed to convert layout: {}", e);
|
||||
process::exit(1);
|
||||
},
|
||||
}
|
||||
},
|
||||
Err(e) => {
|
||||
eprintln!("Failed to open file: {}", e);
|
||||
process::exit(1);
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn convert_old_theme_file(old_theme_file: PathBuf) {
|
||||
match File::open(&old_theme_file) {
|
||||
Ok(mut handle) => {
|
||||
let mut raw_config_file = String::new();
|
||||
let _ = handle.read_to_string(&mut raw_config_file);
|
||||
match config_yaml_to_config_kdl(&raw_config_file, true) {
|
||||
Ok(kdl_config) => {
|
||||
println!("{}", kdl_config);
|
||||
process::exit(0);
|
||||
},
|
||||
Err(e) => {
|
||||
eprintln!("Failed to convert config: {}", e);
|
||||
process::exit(1);
|
||||
},
|
||||
}
|
||||
},
|
||||
Err(e) => {
|
||||
eprintln!("Failed to open file: {}", e);
|
||||
process::exit(1);
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
fn attach_with_cli_client(cli_action: zellij_utils::cli::CliAction, session_name: &str) {
|
||||
let os_input = get_os_input(zellij_client::os_input_output::get_client_os_input);
|
||||
match Action::actions_from_cli(cli_action) {
|
||||
Ok(actions) => {
|
||||
zellij_client::cli_client::start_cli_client(Box::new(os_input), session_name, actions);
|
||||
std::process::exit(0);
|
||||
},
|
||||
Err(e) => {
|
||||
eprintln!("{:?}", e);
|
||||
std::process::exit(1);
|
||||
eprintln!("{}", e);
|
||||
log::error!("Error sending action: {}", e);
|
||||
std::process::exit(2);
|
||||
},
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
fn attach_with_session_index(config_options: Options, index: usize, create: bool) -> ClientInfo {
|
||||
|
|
@ -249,10 +315,17 @@ fn attach_with_session_name(
|
|||
}
|
||||
|
||||
pub(crate) fn start_client(opts: CliArgs) {
|
||||
let (config, layout, config_options) = match Setup::from_options(&opts) {
|
||||
// look for old YAML config/layout/theme files and convert them to KDL
|
||||
convert_old_yaml_files(&opts);
|
||||
let (config, layout, config_options) = match Setup::from_cli_args(&opts) {
|
||||
Ok(results) => results,
|
||||
Err(e) => {
|
||||
if let ConfigError::KdlError(error) = e {
|
||||
let report: Report = error.into();
|
||||
eprintln!("{:?}", report);
|
||||
} else {
|
||||
eprintln!("{}", e);
|
||||
}
|
||||
process::exit(1);
|
||||
},
|
||||
};
|
||||
|
|
@ -285,7 +358,7 @@ pub(crate) fn start_client(opts: CliArgs) {
|
|||
|
||||
let attach_layout = match client {
|
||||
ClientInfo::Attach(_, _) => None,
|
||||
ClientInfo::New(_) => layout,
|
||||
ClientInfo::New(_) => Some(layout),
|
||||
};
|
||||
|
||||
if create {
|
||||
|
|
@ -314,23 +387,21 @@ pub(crate) fn start_client(opts: CliArgs) {
|
|||
config,
|
||||
config_options,
|
||||
ClientInfo::New(session_name),
|
||||
layout,
|
||||
Some(layout),
|
||||
);
|
||||
} else {
|
||||
if let Some(layout_some) = layout.clone() {
|
||||
if let Some(session_name) = layout_some.session.name {
|
||||
if layout_some.session.attach.unwrap() {
|
||||
if let Some(session_name) = config_options.session_name.as_ref() {
|
||||
match config_options.attach_to_session {
|
||||
Some(true) => {
|
||||
let client = attach_with_session_name(
|
||||
Some(session_name),
|
||||
Some(session_name.clone()),
|
||||
config_options.clone(),
|
||||
true,
|
||||
);
|
||||
|
||||
let attach_layout = match client {
|
||||
ClientInfo::Attach(_, _) => None,
|
||||
ClientInfo::New(_) => layout,
|
||||
ClientInfo::New(_) => Some(layout),
|
||||
};
|
||||
|
||||
start_client_impl(
|
||||
Box::new(os_input),
|
||||
opts,
|
||||
|
|
@ -339,21 +410,24 @@ pub(crate) fn start_client(opts: CliArgs) {
|
|||
client,
|
||||
attach_layout,
|
||||
);
|
||||
} else {
|
||||
},
|
||||
_ => {
|
||||
start_client_plan(session_name.clone());
|
||||
start_client_impl(
|
||||
Box::new(os_input),
|
||||
opts,
|
||||
config,
|
||||
config_options,
|
||||
ClientInfo::New(session_name),
|
||||
layout,
|
||||
config_options.clone(),
|
||||
ClientInfo::New(session_name.clone()),
|
||||
Some(layout),
|
||||
);
|
||||
},
|
||||
}
|
||||
|
||||
// after we detach, this happens and so we need to exit before the rest of the
|
||||
// function happens
|
||||
// TODO: offload this to a different function
|
||||
process::exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
let session_name = names::Generator::default().next().unwrap();
|
||||
start_client_plan(session_name.clone());
|
||||
|
|
@ -363,7 +437,7 @@ pub(crate) fn start_client(opts: CliArgs) {
|
|||
config,
|
||||
config_options,
|
||||
ClientInfo::New(session_name),
|
||||
layout,
|
||||
Some(layout),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
51
src/main.rs
51
src/main.rs
|
|
@ -6,7 +6,7 @@ mod tests;
|
|||
|
||||
use zellij_utils::{
|
||||
clap::Parser,
|
||||
cli::{CliArgs, Command, Sessions},
|
||||
cli::{CliAction, CliArgs, Command, Sessions},
|
||||
logging::*,
|
||||
};
|
||||
|
||||
|
|
@ -14,10 +14,53 @@ fn main() {
|
|||
configure_logger();
|
||||
let opts = CliArgs::parse();
|
||||
|
||||
#[cfg(feature = "unstable")]
|
||||
{
|
||||
if let Some(Command::Sessions(Sessions::Action { .. })) = opts.command {
|
||||
commands::send_action_to_session(opts);
|
||||
if let Some(Command::Sessions(Sessions::Action(cli_action))) = opts.command {
|
||||
commands::send_action_to_session(cli_action, opts.session);
|
||||
std::process::exit(0);
|
||||
}
|
||||
if let Some(Command::Sessions(Sessions::Command {
|
||||
command,
|
||||
direction,
|
||||
cwd,
|
||||
floating,
|
||||
})) = opts.command
|
||||
{
|
||||
let command_cli_action = CliAction::NewPane {
|
||||
command,
|
||||
direction,
|
||||
cwd,
|
||||
floating,
|
||||
};
|
||||
commands::send_action_to_session(command_cli_action, opts.session);
|
||||
std::process::exit(0);
|
||||
}
|
||||
if let Some(Command::Sessions(Sessions::Edit {
|
||||
file,
|
||||
direction,
|
||||
line_number,
|
||||
floating,
|
||||
})) = opts.command
|
||||
{
|
||||
let command_cli_action = CliAction::Edit {
|
||||
file,
|
||||
direction,
|
||||
line_number,
|
||||
floating,
|
||||
};
|
||||
commands::send_action_to_session(command_cli_action, opts.session);
|
||||
std::process::exit(0);
|
||||
}
|
||||
if let Some(Command::Sessions(Sessions::ConvertConfig { old_config_file })) = opts.command {
|
||||
commands::convert_old_config_file(old_config_file);
|
||||
std::process::exit(0);
|
||||
}
|
||||
if let Some(Command::Sessions(Sessions::ConvertLayout { old_layout_file })) = opts.command {
|
||||
commands::convert_old_layout_file(old_layout_file);
|
||||
std::process::exit(0);
|
||||
}
|
||||
if let Some(Command::Sessions(Sessions::ConvertTheme { old_theme_file })) = opts.command {
|
||||
commands::convert_old_theme_file(old_theme_file);
|
||||
std::process::exit(0);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -458,9 +458,8 @@ pub fn close_tab() {
|
|||
name: "Wait for tab to close",
|
||||
instruction: |mut remote_terminal: RemoteTerminal| -> bool {
|
||||
let mut step_is_complete = false;
|
||||
if remote_terminal.cursor_position_is(3, 2)
|
||||
if remote_terminal.snapshot_contains("Tab #1")
|
||||
&& !remote_terminal.snapshot_contains("Tab #2")
|
||||
&& remote_terminal.tip_appears()
|
||||
{
|
||||
// cursor is in the first tab again
|
||||
step_is_complete = true;
|
||||
|
|
@ -475,7 +474,8 @@ pub fn close_tab() {
|
|||
break last_snapshot;
|
||||
}
|
||||
};
|
||||
assert_snapshot!(last_snapshot);
|
||||
assert!(last_snapshot.contains("Tab #1"));
|
||||
assert!(!last_snapshot.contains("Tab #2"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
|
@ -948,41 +948,6 @@ pub fn detach_and_attach_session() {
|
|||
assert_snapshot!(last_snapshot);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
pub fn accepts_basic_layout() {
|
||||
let fake_win_size = Size {
|
||||
cols: 120,
|
||||
rows: 24,
|
||||
};
|
||||
let layout_file_name = "three-panes-with-nesting.yaml";
|
||||
let mut test_attempts = 10;
|
||||
let last_snapshot = loop {
|
||||
RemoteRunner::kill_running_sessions(fake_win_size);
|
||||
let mut runner = RemoteRunner::new_with_layout(fake_win_size, layout_file_name);
|
||||
runner.run_all_steps();
|
||||
let last_snapshot = runner.take_snapshot_after(Step {
|
||||
name: "Wait for app to load",
|
||||
instruction: |remote_terminal: RemoteTerminal| -> bool {
|
||||
let mut step_is_complete = false;
|
||||
if remote_terminal.cursor_position_is(3, 1)
|
||||
&& remote_terminal.snapshot_contains("$ █ ││$")
|
||||
&& remote_terminal.snapshot_contains("$ ") {
|
||||
step_is_complete = true;
|
||||
}
|
||||
step_is_complete
|
||||
},
|
||||
});
|
||||
if runner.test_timed_out && test_attempts > 0 {
|
||||
test_attempts -= 1;
|
||||
continue;
|
||||
} else {
|
||||
break last_snapshot;
|
||||
}
|
||||
};
|
||||
assert_snapshot!(last_snapshot);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
pub fn status_bar_loads_custom_keybindings() {
|
||||
|
|
@ -990,7 +955,7 @@ pub fn status_bar_loads_custom_keybindings() {
|
|||
cols: 120,
|
||||
rows: 24,
|
||||
};
|
||||
let config_file_name = "changed_keys.yaml";
|
||||
let config_file_name = "changed_keys.kdl";
|
||||
let mut test_attempts = 10;
|
||||
let last_snapshot = loop {
|
||||
RemoteRunner::kill_running_sessions(fake_win_size);
|
||||
|
|
@ -1718,43 +1683,6 @@ pub fn toggle_floating_panes() {
|
|||
assert_snapshot!(last_snapshot);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
pub fn focus_tab_with_layout() {
|
||||
let fake_win_size = Size {
|
||||
cols: 120,
|
||||
rows: 24,
|
||||
};
|
||||
let layout_file_name = "focus-tab-layout.yaml";
|
||||
let mut test_attempts = 10;
|
||||
let last_snapshot = loop {
|
||||
RemoteRunner::kill_running_sessions(fake_win_size);
|
||||
let mut runner = RemoteRunner::new_with_layout(fake_win_size, layout_file_name);
|
||||
runner.run_all_steps();
|
||||
let last_snapshot = runner.take_snapshot_after(Step {
|
||||
name: "Wait for app to load",
|
||||
instruction: |remote_terminal: RemoteTerminal| -> bool {
|
||||
let mut step_is_complete = false;
|
||||
if remote_terminal.status_bar_appears()
|
||||
&& remote_terminal.tip_appears()
|
||||
&& remote_terminal.snapshot_contains("Tab #9")
|
||||
&& remote_terminal.cursor_position_is(63, 2)
|
||||
{
|
||||
step_is_complete = true;
|
||||
}
|
||||
step_is_complete
|
||||
},
|
||||
});
|
||||
if runner.test_timed_out && test_attempts > 0 {
|
||||
test_attempts -= 1;
|
||||
continue;
|
||||
} else {
|
||||
break last_snapshot;
|
||||
}
|
||||
};
|
||||
assert_snapshot!(last_snapshot);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
pub fn tmux_mode() {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,6 @@ use std::rc::Rc;
|
|||
|
||||
const ZELLIJ_EXECUTABLE_LOCATION: &str = "/usr/src/zellij/x86_64-unknown-linux-musl/release/zellij";
|
||||
const SET_ENV_VARIABLES: &str = "EDITOR=/usr/bin/vi";
|
||||
const ZELLIJ_LAYOUT_PATH: &str = "/usr/src/zellij/fixtures/layouts";
|
||||
const ZELLIJ_CONFIG_PATH: &str = "/usr/src/zellij/fixtures/configs";
|
||||
const ZELLIJ_DATA_DIR: &str = "/usr/src/zellij/e2e-data";
|
||||
const ZELLIJ_FIXTURE_PATH: &str = "/usr/src/zellij/fixtures";
|
||||
|
|
@ -145,25 +144,6 @@ fn start_zellij_without_frames(channel: &mut ssh2::Channel) {
|
|||
std::thread::sleep(std::time::Duration::from_secs(1)); // wait until Zellij stops parsing startup ANSI codes from the terminal STDIN
|
||||
}
|
||||
|
||||
fn start_zellij_with_layout(channel: &mut ssh2::Channel, layout_path: &str) {
|
||||
stop_zellij(channel);
|
||||
channel
|
||||
.write_all(
|
||||
format!(
|
||||
"{} {} --layout {} --session {} --data-dir {}\n",
|
||||
SET_ENV_VARIABLES,
|
||||
ZELLIJ_EXECUTABLE_LOCATION,
|
||||
layout_path,
|
||||
SESSION_NAME,
|
||||
ZELLIJ_DATA_DIR
|
||||
)
|
||||
.as_bytes(),
|
||||
)
|
||||
.unwrap();
|
||||
channel.flush().unwrap();
|
||||
std::thread::sleep(std::time::Duration::from_secs(1)); // wait until Zellij stops parsing startup ANSI codes from the terminal STDIN
|
||||
}
|
||||
|
||||
fn start_zellij_with_config(channel: &mut ssh2::Channel, config_path: &str) {
|
||||
stop_zellij(channel);
|
||||
channel
|
||||
|
|
@ -571,42 +551,6 @@ impl RemoteRunner {
|
|||
reader_thread,
|
||||
}
|
||||
}
|
||||
pub fn new_with_layout(win_size: Size, layout_file_name: &'static str) -> Self {
|
||||
let remote_path = Path::new(ZELLIJ_LAYOUT_PATH).join(layout_file_name);
|
||||
let sess = ssh_connect();
|
||||
let mut channel = sess.channel_session().unwrap();
|
||||
let mut rows = Dimension::fixed(win_size.rows);
|
||||
let mut cols = Dimension::fixed(win_size.cols);
|
||||
rows.set_inner(win_size.rows);
|
||||
cols.set_inner(win_size.cols);
|
||||
let pane_geom = PaneGeom {
|
||||
x: 0,
|
||||
y: 0,
|
||||
rows,
|
||||
cols,
|
||||
};
|
||||
setup_remote_environment(&mut channel, win_size);
|
||||
start_zellij_with_layout(&mut channel, &remote_path.to_string_lossy());
|
||||
let channel = Arc::new(Mutex::new(channel));
|
||||
let last_snapshot = Arc::new(Mutex::new(String::new()));
|
||||
let cursor_coordinates = Arc::new(Mutex::new((0, 0)));
|
||||
sess.set_blocking(false);
|
||||
let reader_thread =
|
||||
read_from_channel(&channel, &last_snapshot, &cursor_coordinates, &pane_geom);
|
||||
RemoteRunner {
|
||||
steps: vec![],
|
||||
channel,
|
||||
currently_running_step: None,
|
||||
current_step_index: 0,
|
||||
retries_left: RETRIES,
|
||||
retry_pause_ms: 100,
|
||||
test_timed_out: false,
|
||||
panic_on_no_retries_left: true,
|
||||
last_snapshot,
|
||||
cursor_coordinates,
|
||||
reader_thread,
|
||||
}
|
||||
}
|
||||
pub fn new_with_config(win_size: Size, config_file_name: &'static str) -> Self {
|
||||
let remote_path = Path::new(ZELLIJ_CONFIG_PATH).join(config_file_name);
|
||||
let sess = ssh_connect();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1636
|
||||
assertion_line: 1671
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 478
|
||||
assertion_line: 482
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ ││ │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
<←→> Move focus / <n> New / <x> Close / <r> Rename / <s> Sync / <TAB> Toggle / <ENTER> Select pane
|
||||
|
|
|
|||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ ││ │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1042
|
||||
assertion_line: 1077
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ ││ │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1307
|
||||
assertion_line: 1342
|
||||
expression: first_runner_snapshot
|
||||
---
|
||||
Zellij (mirrored_sessions) Tab #1 Tab #2
|
||||
|
|
@ -26,4 +26,4 @@ expression: first_runner_snapshot
|
|||
│ ││ │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1486
|
||||
assertion_line: 1521
|
||||
expression: second_runner_snapshot
|
||||
---
|
||||
Zellij (multiple_users_in_same_pane_and_tab) Tab #1 [ ]
|
||||
|
|
@ -26,4 +26,4 @@ expression: second_runner_snapshot
|
|||
│ ││ │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1485
|
||||
assertion_line: 1520
|
||||
expression: first_runner_snapshot
|
||||
---
|
||||
Zellij (multiple_users_in_same_pane_and_tab) Tab #1 [ ]
|
||||
|
|
@ -26,4 +26,4 @@ expression: first_runner_snapshot
|
|||
│ ││ │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1581
|
||||
assertion_line: 1616
|
||||
expression: second_runner_snapshot
|
||||
---
|
||||
Zellij (multiple_users_in_different_tabs) Tab #1 [ ] Tab #2
|
||||
|
|
@ -26,4 +26,4 @@ expression: second_runner_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1580
|
||||
assertion_line: 1615
|
||||
expression: first_runner_snapshot
|
||||
---
|
||||
Zellij (multiple_users_in_different_tabs) Tab #1 Tab #2 [ ]
|
||||
|
|
@ -26,4 +26,4 @@ expression: first_runner_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1396
|
||||
assertion_line: 1431
|
||||
expression: second_runner_snapshot
|
||||
---
|
||||
Zellij (multiple_users_in_same_pane_and_tab) Tab #1 [ ]
|
||||
|
|
@ -26,4 +26,4 @@ expression: second_runner_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1395
|
||||
assertion_line: 1430
|
||||
expression: first_runner_snapshot
|
||||
---
|
||||
Zellij (multiple_users_in_same_pane_and_tab) Tab #1 [ ]
|
||||
|
|
@ -26,4 +26,4 @@ expression: first_runner_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ ││ │
|
||||
└────────────────────────────────────────────────────┘└────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 883
|
||||
assertion_line: 863
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ ││ │
|
||||
└────────────────────────────────────────────────┘└────────────────────────────────────────────────┘
|
||||
Ctrl + g p t n h s o q
|
||||
QuickNav: Alt + <n> / Alt + <←↓↑→> or Alt + <hjkl> / Alt + <+|=|->
|
||||
QuickNav: Alt + <n> / Alt + <←↓↑→> or Alt + <hjkl> / Alt + <+|->
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1117
|
||||
assertion_line: 1152
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ ││li█e19 │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ ││ │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1163
|
||||
assertion_line: 1198
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ $ │$ █
|
|||
│
|
||||
│
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1767
|
||||
assertion_line: 1802
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ ││ │
|
||||
└──────────────────────────────────────────────────────────┘└──────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1914
|
||||
assertion_line: 1949
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
source: src/tests/e2e/cases.rs
|
||||
assertion_line: 1865
|
||||
assertion_line: 1900
|
||||
expression: last_snapshot
|
||||
---
|
||||
Zellij (e2e-test) Tab #1
|
||||
|
|
@ -26,4 +26,4 @@ expression: last_snapshot
|
|||
│ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
Ctrl + <g> LOCK <p> PANE <t> TAB <n> RESIZE <h> MOVE <s> SEARCH <o> SESSION <q> QUIT
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|=|-> => resize pane.
|
||||
Tip: Alt + <n> => new pane. Alt + <←↓↑→> or Alt + <hjkl> => navigate. Alt + <+|-> => resize pane.
|
||||
|
|
|
|||
12
src/tests/fixtures/configs/changed_keys.kdl
vendored
Normal file
12
src/tests/fixtures/configs/changed_keys.kdl
vendored
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
keybinds clear-defaults=true {
|
||||
normal {
|
||||
bind "F1" { SwitchToMode "Locked"; }
|
||||
bind "F2" { SwitchToMode "Pane"; }
|
||||
bind "F3" { SwitchToMode "Tab"; }
|
||||
bind "F4" { SwitchToMode "Resize"; }
|
||||
bind "F5" { SwitchToMode "Move"; }
|
||||
bind "F6" { SwitchToMode "Scroll"; }
|
||||
bind "F7" { SwitchToMode "Session"; }
|
||||
bind "F8" { Quit; }
|
||||
}
|
||||
}
|
||||
26
src/tests/fixtures/configs/changed_keys.yaml
vendored
26
src/tests/fixtures/configs/changed_keys.yaml
vendored
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
# Configuration for zellij.
|
||||
|
||||
# In order to troubleshoot your configuration try using the following command:
|
||||
# `zellij setup --check`
|
||||
# It should show current config locations and features that are enabled.
|
||||
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [F: 1]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [F: 2]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [F: 3]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [F: 4]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [F: 5]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [F: 6]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [F: 7]
|
||||
- action: [Quit,]
|
||||
key: [F: 8]
|
||||
|
|
@ -1,19 +0,0 @@
|
|||
---
|
||||
tabs:
|
||||
- direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 20
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 50
|
||||
tabs:
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 80
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 20
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
tabs:
|
||||
- direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 20
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 90
|
||||
- direction: Horizontal
|
||||
tabs:
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 80
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 20
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
---
|
||||
tabs:
|
||||
- direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 20
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 80
|
||||
split_size:
|
||||
Percent: 80
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 20
|
||||
|
|
@ -10,6 +10,9 @@ license = "MIT"
|
|||
|
||||
[dependencies]
|
||||
mio = { version = "0.7.11", features = ['os-ext'] }
|
||||
serde = { version = "1.0", features = ["derive"] }
|
||||
url = { version = "2.2.2", features = ["serde"] }
|
||||
serde_yaml = "0.8"
|
||||
zellij-utils = { path = "../zellij-utils/", version = "0.32.0" }
|
||||
log = "0.4.17"
|
||||
|
||||
|
|
|
|||
34
zellij-client/src/cli_client.rs
Normal file
34
zellij-client/src/cli_client.rs
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
//! The `[cli_client]` is used to attach to a running server session
|
||||
//! and dispatch actions, that are specified through the command line.
|
||||
use std::process;
|
||||
use std::{fs, path::PathBuf};
|
||||
|
||||
use crate::os_input_output::ClientOsApi;
|
||||
use zellij_utils::{
|
||||
input::actions::Action,
|
||||
ipc::{ClientToServerMsg, ServerToClientMsg},
|
||||
};
|
||||
|
||||
pub fn start_cli_client(os_input: Box<dyn ClientOsApi>, session_name: &str, actions: Vec<Action>) {
|
||||
let zellij_ipc_pipe: PathBuf = {
|
||||
let mut sock_dir = zellij_utils::consts::ZELLIJ_SOCK_DIR.clone();
|
||||
fs::create_dir_all(&sock_dir).unwrap();
|
||||
zellij_utils::shared::set_permissions(&sock_dir, 0o700).unwrap();
|
||||
sock_dir.push(session_name);
|
||||
sock_dir
|
||||
};
|
||||
os_input.connect_to_server(&*zellij_ipc_pipe);
|
||||
for action in actions {
|
||||
let msg = ClientToServerMsg::Action(action, None);
|
||||
os_input.send_to_server(msg);
|
||||
}
|
||||
loop {
|
||||
match os_input.recv_from_server() {
|
||||
Some((ServerToClientMsg::UnblockInputThread, _)) => {
|
||||
os_input.send_to_server(ClientToServerMsg::ClientExited);
|
||||
process::exit(0);
|
||||
},
|
||||
_ => {},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,184 +0,0 @@
|
|||
//! The `[fake_client]` is used to attach to a running server session
|
||||
//! and dispatch actions, that are specified through the command line.
|
||||
//! Multiple actions at the same time can be dispatched.
|
||||
use log::debug;
|
||||
use std::sync::{Arc, Mutex};
|
||||
use std::{fs, path::PathBuf, thread};
|
||||
|
||||
use crate::{
|
||||
command_is_executing::CommandIsExecuting, input_handler::input_actions,
|
||||
os_input_output::ClientOsApi, stdin_ansi_parser::StdinAnsiParser, stdin_handler::stdin_loop,
|
||||
ClientInfo, ClientInstruction, InputInstruction,
|
||||
};
|
||||
use zellij_utils::{
|
||||
channels::{self, ChannelWithContext, SenderWithContext},
|
||||
cli::CliArgs,
|
||||
data::{ClientId, Style},
|
||||
errors::ContextType,
|
||||
input::{actions::Action, config::Config, layout::LayoutFromYaml, options::Options},
|
||||
ipc::{ClientAttributes, ClientToServerMsg, ServerToClientMsg},
|
||||
};
|
||||
|
||||
pub fn start_fake_client(
|
||||
os_input: Box<dyn ClientOsApi>,
|
||||
_opts: CliArgs,
|
||||
config: Config,
|
||||
config_options: Options,
|
||||
info: ClientInfo,
|
||||
_layout: Option<LayoutFromYaml>,
|
||||
actions: Vec<Action>,
|
||||
) {
|
||||
debug!("Starting fake Zellij client!");
|
||||
let session_name = info.get_session_name();
|
||||
|
||||
// TODO: Ideally the `fake_client` would not need to specify these options,
|
||||
// but the `[NewTab:]` action depends on this state being
|
||||
// even in this client.
|
||||
let palette = config.themes.clone().map_or_else(
|
||||
|| os_input.load_palette(),
|
||||
|t| {
|
||||
t.theme_config(&config_options)
|
||||
.unwrap_or_else(|| os_input.load_palette())
|
||||
},
|
||||
);
|
||||
|
||||
let full_screen_ws = os_input.get_terminal_size_using_fd(0);
|
||||
let client_attributes = ClientAttributes {
|
||||
size: full_screen_ws,
|
||||
style: Style {
|
||||
colors: palette,
|
||||
rounded_corners: config.ui.unwrap_or_default().pane_frames.rounded_corners,
|
||||
},
|
||||
keybinds: config.keybinds.clone(),
|
||||
};
|
||||
|
||||
let first_msg = ClientToServerMsg::AttachClient(client_attributes, config_options.clone());
|
||||
|
||||
let zellij_ipc_pipe: PathBuf = {
|
||||
let mut sock_dir = zellij_utils::consts::ZELLIJ_SOCK_DIR.clone();
|
||||
fs::create_dir_all(&sock_dir).unwrap();
|
||||
zellij_utils::shared::set_permissions(&sock_dir, 0o700).unwrap();
|
||||
sock_dir.push(session_name);
|
||||
sock_dir
|
||||
};
|
||||
os_input.connect_to_server(&*zellij_ipc_pipe);
|
||||
os_input.send_to_server(first_msg);
|
||||
|
||||
let mut command_is_executing = CommandIsExecuting::new();
|
||||
|
||||
let (send_client_instructions, receive_client_instructions): ChannelWithContext<
|
||||
ClientInstruction,
|
||||
> = channels::bounded(50);
|
||||
let send_client_instructions = SenderWithContext::new(send_client_instructions);
|
||||
|
||||
let (send_input_instructions, receive_input_instructions): ChannelWithContext<
|
||||
InputInstruction,
|
||||
> = channels::bounded(50);
|
||||
let send_input_instructions = SenderWithContext::new(send_input_instructions);
|
||||
|
||||
std::panic::set_hook({
|
||||
use zellij_utils::errors::handle_panic;
|
||||
let send_client_instructions = send_client_instructions.clone();
|
||||
Box::new(move |info| {
|
||||
handle_panic(info, &send_client_instructions);
|
||||
})
|
||||
});
|
||||
|
||||
let stdin_ansi_parser = Arc::new(Mutex::new(StdinAnsiParser::new()));
|
||||
let _stdin_thread = thread::Builder::new()
|
||||
.name("stdin_handler".to_string())
|
||||
.spawn({
|
||||
let os_input = os_input.clone();
|
||||
let send_input_instructions = send_input_instructions.clone();
|
||||
move || stdin_loop(os_input, send_input_instructions, stdin_ansi_parser)
|
||||
});
|
||||
|
||||
let clients: Vec<ClientId>;
|
||||
os_input.send_to_server(ClientToServerMsg::ListClients);
|
||||
#[allow(clippy::collapsible_match)]
|
||||
loop {
|
||||
if let Some((msg, _)) = os_input.recv_from_server() {
|
||||
if let ServerToClientMsg::ActiveClients(active_clients) = msg {
|
||||
clients = active_clients;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
debug!("The connected client id's are: {:?}.", clients);
|
||||
|
||||
let _input_thread = thread::Builder::new()
|
||||
.name("input_handler".to_string())
|
||||
.spawn({
|
||||
let send_client_instructions = send_client_instructions.clone();
|
||||
let command_is_executing = command_is_executing.clone();
|
||||
let os_input = os_input.clone();
|
||||
let default_mode = config_options.default_mode.unwrap_or_default();
|
||||
let session_name = session_name.to_string();
|
||||
move || {
|
||||
input_actions(
|
||||
os_input,
|
||||
config,
|
||||
config_options,
|
||||
command_is_executing,
|
||||
clients,
|
||||
send_client_instructions,
|
||||
default_mode,
|
||||
receive_input_instructions,
|
||||
actions,
|
||||
session_name,
|
||||
)
|
||||
}
|
||||
});
|
||||
|
||||
let router_thread = thread::Builder::new()
|
||||
.name("router".to_string())
|
||||
.spawn({
|
||||
let os_input = os_input.clone();
|
||||
let mut should_break = false;
|
||||
move || loop {
|
||||
if let Some((instruction, err_ctx)) = os_input.recv_from_server() {
|
||||
err_ctx.update_thread_ctx();
|
||||
if let ServerToClientMsg::Exit(_) = instruction {
|
||||
should_break = true;
|
||||
}
|
||||
send_client_instructions.send(instruction.into()).unwrap();
|
||||
if should_break {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
loop {
|
||||
let (client_instruction, mut err_ctx) = receive_client_instructions
|
||||
.recv()
|
||||
.expect("failed to receive app instruction on channel");
|
||||
|
||||
err_ctx.add_call(ContextType::Client((&client_instruction).into()));
|
||||
match client_instruction {
|
||||
ClientInstruction::Exit(_) => {
|
||||
os_input.send_to_server(ClientToServerMsg::ClientExited);
|
||||
break;
|
||||
},
|
||||
ClientInstruction::Error(_) => {
|
||||
let _ = os_input.send_to_server(ClientToServerMsg::Action(Action::Quit, None));
|
||||
// handle_error(backtrace);
|
||||
},
|
||||
ClientInstruction::Render(_) => {
|
||||
// This is a fake client, that doesn't render, but
|
||||
// dispatches actions.
|
||||
},
|
||||
ClientInstruction::UnblockInputThread => {
|
||||
command_is_executing.unblock_input_thread();
|
||||
},
|
||||
ClientInstruction::SwitchToMode(input_mode) => {
|
||||
send_input_instructions
|
||||
.send(InputInstruction::SwitchToMode(input_mode))
|
||||
.unwrap();
|
||||
},
|
||||
_ => {},
|
||||
}
|
||||
}
|
||||
router_thread.join().unwrap();
|
||||
}
|
||||
|
|
@ -11,7 +11,6 @@ use zellij_utils::{
|
|||
actions::Action,
|
||||
cast_termwiz_key,
|
||||
config::Config,
|
||||
keybinds::Keybinds,
|
||||
mouse::{MouseButton, MouseEvent},
|
||||
options::Options,
|
||||
},
|
||||
|
|
@ -133,7 +132,9 @@ impl InputHandler {
|
|||
}
|
||||
fn handle_key(&mut self, key: &Key, raw_bytes: Vec<u8>) {
|
||||
let keybinds = &self.config.keybinds;
|
||||
for action in Keybinds::key_to_actions(key, raw_bytes, &self.mode, keybinds) {
|
||||
for action in
|
||||
keybinds.get_actions_for_key_in_mode_or_default_action(&self.mode, key, raw_bytes)
|
||||
{
|
||||
let should_exit = self.dispatch_action(action, None);
|
||||
if should_exit {
|
||||
self.should_exit = true;
|
||||
|
|
@ -230,65 +231,6 @@ impl InputHandler {
|
|||
},
|
||||
}
|
||||
}
|
||||
fn handle_actions(&mut self, actions: Vec<Action>, session_name: &str, clients: Vec<ClientId>) {
|
||||
let mut detached = false;
|
||||
for action in actions {
|
||||
match action {
|
||||
Action::Quit => {
|
||||
crate::sessions::kill_session(session_name);
|
||||
break;
|
||||
},
|
||||
Action::Detach => {
|
||||
let first = clients.first().unwrap();
|
||||
let last = clients.last().unwrap();
|
||||
self.os_input
|
||||
.send_to_server(ClientToServerMsg::DetachSession(vec![*first, *last]));
|
||||
detached = true;
|
||||
break;
|
||||
},
|
||||
// Actions, that are independent from the specific client
|
||||
// and not session idempotent should be specified here
|
||||
Action::NewTab(_)
|
||||
| Action::Run(_)
|
||||
| Action::NewPane(_)
|
||||
| Action::WriteChars(_)
|
||||
| Action::EditScrollback
|
||||
| Action::DumpScreen(_)
|
||||
| Action::ToggleActiveSyncTab
|
||||
| Action::ToggleFloatingPanes
|
||||
| Action::TogglePaneEmbedOrFloating
|
||||
| Action::TogglePaneFrames
|
||||
| Action::ToggleFocusFullscreen
|
||||
| Action::Write(_) => {
|
||||
let client_id = clients.first().unwrap();
|
||||
log::debug!("Sending action to client: {}", client_id);
|
||||
self.dispatch_action(action, Some(*client_id));
|
||||
},
|
||||
Action::CloseFocus | Action::CloseTab => {
|
||||
let client_id = clients.first().unwrap();
|
||||
log::debug!("Sending action to client: {}", client_id);
|
||||
log::warn!("Running this action from the focused pane, can lead to unexpected behaviour.");
|
||||
self.dispatch_action(action, Some(*client_id));
|
||||
},
|
||||
_ => {
|
||||
// FIXME: If a specific `session_id` is specified,
|
||||
// then only send the actions to that specific `client_id`
|
||||
for client_id in &clients {
|
||||
self.dispatch_action(action.clone(), Some(*client_id));
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
self.dispatch_action(Action::Detach, None);
|
||||
self.should_exit = true;
|
||||
log::error!("Quitting Now. Dispatched the actions");
|
||||
if detached {
|
||||
self.exit(ExitReason::NormalDetached);
|
||||
} else {
|
||||
self.exit(ExitReason::Normal);
|
||||
}
|
||||
}
|
||||
|
||||
/// Dispatches an [`Action`].
|
||||
///
|
||||
/// This function's body dictates what each [`Action`] actually does when
|
||||
|
|
@ -329,7 +271,7 @@ impl InputHandler {
|
|||
| Action::Run(_)
|
||||
| Action::ToggleFloatingPanes
|
||||
| Action::TogglePaneEmbedOrFloating
|
||||
| Action::NewTab(_)
|
||||
| Action::NewTab(..)
|
||||
| Action::GoToNextTab
|
||||
| Action::GoToPreviousTab
|
||||
| Action::CloseTab
|
||||
|
|
@ -381,29 +323,3 @@ pub(crate) fn input_loop(
|
|||
)
|
||||
.handle_input();
|
||||
}
|
||||
/// Entry point to the module. Instantiates an [`InputHandler`] and starts
|
||||
/// its [`InputHandler::handle_input()`] loop.
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
pub(crate) fn input_actions(
|
||||
os_input: Box<dyn ClientOsApi>,
|
||||
config: Config,
|
||||
options: Options,
|
||||
command_is_executing: CommandIsExecuting,
|
||||
clients: Vec<ClientId>,
|
||||
send_client_instructions: SenderWithContext<ClientInstruction>,
|
||||
default_mode: InputMode,
|
||||
receive_input_instructions: Receiver<(InputInstruction, ErrorContext)>,
|
||||
actions: Vec<Action>,
|
||||
session_name: String,
|
||||
) {
|
||||
let _handler = InputHandler::new(
|
||||
os_input,
|
||||
command_is_executing,
|
||||
config,
|
||||
options,
|
||||
send_client_instructions,
|
||||
default_mode,
|
||||
receive_input_instructions,
|
||||
)
|
||||
.handle_actions(actions, &session_name, clients);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
pub mod os_input_output;
|
||||
|
||||
pub mod cli_client;
|
||||
mod command_is_executing;
|
||||
pub mod fake_client;
|
||||
mod input_handler;
|
||||
mod sessions;
|
||||
pub mod old_config_converter;
|
||||
mod stdin_ansi_parser;
|
||||
mod stdin_handler;
|
||||
|
||||
|
|
@ -30,7 +30,7 @@ use zellij_utils::{
|
|||
ipc::{ClientAttributes, ClientToServerMsg, ExitReason, ServerToClientMsg},
|
||||
termwiz::input::InputEvent,
|
||||
};
|
||||
use zellij_utils::{cli::CliArgs, input::layout::LayoutFromYaml};
|
||||
use zellij_utils::{cli::CliArgs, input::layout::Layout};
|
||||
|
||||
/// Instructions related to the client-side application
|
||||
#[derive(Debug, Clone)]
|
||||
|
|
@ -124,7 +124,7 @@ pub fn start_client(
|
|||
config: Config,
|
||||
config_options: Options,
|
||||
info: ClientInfo,
|
||||
layout: Option<LayoutFromYaml>,
|
||||
layout: Option<Layout>,
|
||||
) {
|
||||
info!("Starting Zellij client!");
|
||||
let clear_client_terminal_attributes = "\u{1b}[?1l\u{1b}=\u{1b}[r\u{1b}[?1000l\u{1b}[?1002l\u{1b}[?1003l\u{1b}[?1005l\u{1b}[?1006l\u{1b}[?12l";
|
||||
|
|
@ -143,20 +143,16 @@ pub fn start_client(
|
|||
envs::set_zellij("0".to_string());
|
||||
config.env.set_vars();
|
||||
|
||||
let palette = config.themes.clone().map_or_else(
|
||||
|| os_input.load_palette(),
|
||||
|t| {
|
||||
t.theme_config(&config_options)
|
||||
.unwrap_or_else(|| os_input.load_palette())
|
||||
},
|
||||
);
|
||||
let palette = config
|
||||
.theme_config(&config_options)
|
||||
.unwrap_or_else(|| os_input.load_palette());
|
||||
|
||||
let full_screen_ws = os_input.get_terminal_size_using_fd(0);
|
||||
let client_attributes = ClientAttributes {
|
||||
size: full_screen_ws,
|
||||
style: Style {
|
||||
colors: palette,
|
||||
rounded_corners: config.ui.unwrap_or_default().pane_frames.rounded_corners,
|
||||
rounded_corners: config.ui.pane_frames.rounded_corners,
|
||||
},
|
||||
keybinds: config.keybinds.clone(),
|
||||
};
|
||||
|
|
|
|||
332
zellij-client/src/old_config_converter/convert_old_yaml_files.rs
Normal file
332
zellij-client/src/old_config_converter/convert_old_yaml_files.rs
Normal file
|
|
@ -0,0 +1,332 @@
|
|||
use super::{config_yaml_to_config_kdl, layout_yaml_to_layout_kdl};
|
||||
use std::path::PathBuf;
|
||||
use zellij_utils::{
|
||||
cli::CliArgs,
|
||||
setup::{find_default_config_dir, get_layout_dir, get_theme_dir},
|
||||
};
|
||||
|
||||
const OLD_CONFIG_NAME: &str = "config.yaml";
|
||||
|
||||
pub fn convert_old_yaml_files(opts: &CliArgs) {
|
||||
let config_dir = opts.config_dir.clone().or_else(find_default_config_dir);
|
||||
let layout_dir = get_layout_dir(config_dir.clone());
|
||||
let theme_dir = get_theme_dir(find_default_config_dir());
|
||||
let specified_config_location = opts.config.as_ref();
|
||||
|
||||
let mut layout_files_to_convert = vec![];
|
||||
let mut theme_files_to_convert = vec![];
|
||||
if let Some(layout) = opts.layout.as_ref() {
|
||||
if layout.extension().map(|s| s.to_string_lossy().to_string()) == Some("yaml".into()) {
|
||||
if layout.exists() {
|
||||
layout_files_to_convert.push((layout.clone(), true));
|
||||
}
|
||||
}
|
||||
}
|
||||
layout_files_to_convert.dedup();
|
||||
if let Some(layout_dir) = layout_dir {
|
||||
if let Ok(files) = std::fs::read_dir(layout_dir) {
|
||||
for file in files {
|
||||
if let Ok(file) = file {
|
||||
if file
|
||||
.path()
|
||||
.extension()
|
||||
.map(|s| s.to_string_lossy().to_string())
|
||||
== Some("yaml".into())
|
||||
{
|
||||
let mut new_file_path = file.path().clone();
|
||||
new_file_path.set_extension("kdl");
|
||||
if !new_file_path.exists() {
|
||||
layout_files_to_convert.push((file.path().clone(), false));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(theme_dir) = theme_dir {
|
||||
if theme_dir.is_dir() {
|
||||
if let Ok(files) = std::fs::read_dir(theme_dir) {
|
||||
for entry in files.flatten() {
|
||||
if let Some(extension) = entry.path().extension() {
|
||||
if extension == "yaml" {
|
||||
let mut new_file_path = entry.path().clone();
|
||||
new_file_path.set_extension("kdl");
|
||||
if !new_file_path.exists() {
|
||||
theme_files_to_convert.push(entry.path())
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(config_dir) = config_dir {
|
||||
let yaml_config_location = specified_config_location.cloned().filter(|c| {
|
||||
c.extension().map(|s| s.to_string_lossy().to_string()) == Some("yaml".into())
|
||||
});
|
||||
let specified_yaml_config_location = yaml_config_location.is_some();
|
||||
let config_location =
|
||||
yaml_config_location.unwrap_or_else(|| config_dir.join(OLD_CONFIG_NAME));
|
||||
match convert_yaml(
|
||||
config_location,
|
||||
layout_files_to_convert,
|
||||
theme_files_to_convert,
|
||||
specified_yaml_config_location,
|
||||
) {
|
||||
Ok(should_exit) => {
|
||||
if should_exit {
|
||||
std::process::exit(0);
|
||||
}
|
||||
},
|
||||
Err(e) => {
|
||||
eprintln!("");
|
||||
eprintln!("\u{1b}[1;31mFailed to convert yaml config\u{1b}[m: {}", e);
|
||||
eprintln!("");
|
||||
std::process::exit(1);
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn print_conversion_title_message() {
|
||||
println!("");
|
||||
println!("\u{1b}[1mZellij has moved to a new configuration format (KDL - https://kdl.dev) and has now been run with an old YAML configuration/layout/theme file.\u{1b}[m");
|
||||
}
|
||||
|
||||
fn print_converting_config_message(old_file_name: String, new_file_name: String) {
|
||||
println!(
|
||||
"- Converting configuration file: \u{1b}[1;36m{}\u{1b}[m to the new configuration format at the same location: \u{1b}[1;36m{}\u{1b}[m",
|
||||
old_file_name,
|
||||
new_file_name
|
||||
);
|
||||
}
|
||||
|
||||
fn print_conversion_layouts_message(layout_files_to_convert: Vec<(PathBuf, bool)>) {
|
||||
println!("- Converting the following layout YAML files to KDL files in the same location:");
|
||||
for (layout_file, _was_explicitly_set) in layout_files_to_convert.iter() {
|
||||
let mut new_layout_file_name = layout_file.clone();
|
||||
new_layout_file_name.set_extension("kdl");
|
||||
println!(
|
||||
"\u{1b}[1;36m{}\u{1b}[m => \u{1b}[1;36m{}\u{1b}[m",
|
||||
layout_file.as_path().as_os_str().to_string_lossy(),
|
||||
new_layout_file_name.as_path().as_os_str().to_string_lossy()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn print_conversion_themes_message(theme_files_to_convert: Vec<PathBuf>) {
|
||||
println!("- Converting the following theme YAML files to KDL files in the same location:");
|
||||
for theme_file in theme_files_to_convert.iter() {
|
||||
let mut new_theme_file_name = theme_file.clone();
|
||||
new_theme_file_name.set_extension("kdl");
|
||||
println!(
|
||||
"\u{1b}[1;36m{}\u{1b}[m => \u{1b}[1;36m{}\u{1b}[m",
|
||||
theme_file.as_path().as_os_str().to_string_lossy(),
|
||||
new_theme_file_name.as_path().as_os_str().to_string_lossy()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
fn print_no_actions_and_wait_for_user_input() -> Result<(), String> {
|
||||
println!("\u{1b}[1;32mNo actions are required of you. Press ENTER to continue.\u{1b}[m");
|
||||
std::io::stdin()
|
||||
.read_line(&mut String::new())
|
||||
.map_err(|e| format!("Failed to read from STDIN: {:?}", e))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn print_remain_unmodified_message(will_exit: bool) {
|
||||
println!("The original file(s) will remain unmodified.");
|
||||
if !will_exit {
|
||||
println!("Will then use the new converted file(s) for this and the next runs.");
|
||||
}
|
||||
println!("");
|
||||
}
|
||||
|
||||
fn print_flag_help_message(
|
||||
layout_files_to_convert: Vec<(PathBuf, bool)>,
|
||||
yaml_config_file: &PathBuf,
|
||||
yaml_config_was_explicitly_set: bool,
|
||||
) -> Result<(), String> {
|
||||
println!("\u{1b}[1;32mWhat do you need to do?\u{1b}[m");
|
||||
match layout_files_to_convert
|
||||
.iter()
|
||||
.find(|(_f, explicit)| *explicit)
|
||||
{
|
||||
Some((explicitly_specified_layout, _)) => {
|
||||
let mut kdl_config_file_path = yaml_config_file.clone();
|
||||
let mut kdl_explicitly_specified_layout = explicitly_specified_layout.clone();
|
||||
kdl_config_file_path.set_extension("kdl");
|
||||
kdl_explicitly_specified_layout.set_extension("kdl");
|
||||
if yaml_config_was_explicitly_set {
|
||||
println!("Since both the YAML config and a YAML layout file were explicitly specified, you'll need to re-run Zellij and point it to the new files:");
|
||||
println!(
|
||||
"\u{1b}[1;33mzellij --config {} --layout {}\u{1b}[m",
|
||||
kdl_config_file_path
|
||||
.as_path()
|
||||
.as_os_str()
|
||||
.to_string_lossy()
|
||||
.to_string(),
|
||||
kdl_explicitly_specified_layout
|
||||
.as_path()
|
||||
.as_os_str()
|
||||
.to_string_lossy()
|
||||
.to_string(),
|
||||
);
|
||||
} else {
|
||||
println!("Since a YAML layout was explicitly specified, you'll need to re-run Zellij and point it to the new layout:");
|
||||
println!(
|
||||
"\u{1b}[1;33mzellij --layout {}\u{1b}[m",
|
||||
kdl_explicitly_specified_layout
|
||||
.as_path()
|
||||
.as_os_str()
|
||||
.to_string_lossy()
|
||||
.to_string(),
|
||||
);
|
||||
}
|
||||
},
|
||||
None => {
|
||||
if yaml_config_was_explicitly_set {
|
||||
let mut kdl_config_file_path = yaml_config_file.clone();
|
||||
kdl_config_file_path.set_extension("kdl");
|
||||
println!("Since the YAML config was explicitly specified, you'll need to re-run Zellij and point it to the new config:");
|
||||
println!(
|
||||
"\u{1b}[1;33mzellij --config {}\u{1b}[m",
|
||||
kdl_config_file_path
|
||||
.as_path()
|
||||
.as_os_str()
|
||||
.to_string_lossy()
|
||||
.to_string(),
|
||||
);
|
||||
}
|
||||
},
|
||||
}
|
||||
println!("");
|
||||
println!("\u{1b}[1;32mPress ENTER to continue.\u{1b}[m");
|
||||
std::io::stdin()
|
||||
.read_line(&mut String::new())
|
||||
.map_err(|e| format!("Failed to read from STDIN: {:?}", e))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn convert_layouts(layout_files_to_convert: Vec<(PathBuf, bool)>) -> Result<(), String> {
|
||||
for (layout_file, _was_explicitly_set) in layout_files_to_convert {
|
||||
let raw_layout_file = std::fs::read_to_string(&layout_file)
|
||||
.map_err(|e| format!("Failed to read layout file {:?}: {:?}", layout_file, e))?;
|
||||
let kdl_layout = layout_yaml_to_layout_kdl(&raw_layout_file)?;
|
||||
let mut new_layout_file = layout_file.clone();
|
||||
new_layout_file.set_extension("kdl");
|
||||
std::fs::write(&new_layout_file, kdl_layout).map_err(|e| {
|
||||
format!(
|
||||
"Failed to write new layout file to {:?}: {:?}",
|
||||
new_layout_file, e
|
||||
)
|
||||
})?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn convert_themes(theme_files_to_convert: Vec<PathBuf>) -> Result<(), String> {
|
||||
for theme_file in theme_files_to_convert {
|
||||
let raw_theme_file = std::fs::read_to_string(&theme_file)
|
||||
.map_err(|e| format!("Failed to read theme file {:?}: {:?}", theme_file, e))?;
|
||||
let kdl_theme = config_yaml_to_config_kdl(&raw_theme_file, true)?;
|
||||
let mut new_theme_file = theme_file.clone();
|
||||
new_theme_file.set_extension("kdl");
|
||||
std::fs::write(&new_theme_file, kdl_theme).map_err(|e| {
|
||||
format!(
|
||||
"Failed to write new theme file to {:?}: {:?}",
|
||||
new_theme_file, e
|
||||
)
|
||||
})?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn convert_config(yaml_config_file: PathBuf, new_config_file: PathBuf) -> Result<(), String> {
|
||||
if yaml_config_file.exists() && !new_config_file.exists() {
|
||||
let raw_config_file = std::fs::read_to_string(&yaml_config_file)
|
||||
.map_err(|e| format!("Failed to read config file {:?}: {:?}", yaml_config_file, e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
std::fs::write(&new_config_file, kdl_config).map_err(|e| {
|
||||
format!(
|
||||
"Failed to write new config file to {:?}: {:?}",
|
||||
new_config_file, e
|
||||
)
|
||||
})?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn convert_yaml(
|
||||
yaml_config_file: PathBuf,
|
||||
layout_files_to_convert: Vec<(PathBuf, bool)>,
|
||||
theme_files_to_convert: Vec<PathBuf>,
|
||||
yaml_config_was_explicitly_set: bool,
|
||||
) -> Result<bool, String> {
|
||||
let mut should_exit = false;
|
||||
let mut new_config_file = yaml_config_file.clone();
|
||||
new_config_file.set_extension("kdl");
|
||||
let yaml_config_file_exists = yaml_config_file.exists();
|
||||
let layout_was_explicitly_set = layout_files_to_convert
|
||||
.iter()
|
||||
.find(|(_l, was_explicitly_set)| *was_explicitly_set)
|
||||
.is_some();
|
||||
let new_config_file_exists = new_config_file.exists();
|
||||
let no_need_to_convert_config =
|
||||
(new_config_file_exists && !yaml_config_was_explicitly_set) || !yaml_config_file_exists;
|
||||
if no_need_to_convert_config
|
||||
&& layout_files_to_convert.is_empty()
|
||||
&& theme_files_to_convert.is_empty()
|
||||
&& !layout_was_explicitly_set
|
||||
{
|
||||
// Nothing to do...
|
||||
return Ok(should_exit);
|
||||
}
|
||||
print_conversion_title_message();
|
||||
if yaml_config_file_exists && !new_config_file_exists {
|
||||
print_converting_config_message(
|
||||
yaml_config_file
|
||||
.as_path()
|
||||
.as_os_str()
|
||||
.to_string_lossy()
|
||||
.to_string(),
|
||||
new_config_file
|
||||
.as_path()
|
||||
.as_os_str()
|
||||
.to_string_lossy()
|
||||
.to_string(),
|
||||
);
|
||||
} else if yaml_config_file_exists && new_config_file_exists && yaml_config_was_explicitly_set {
|
||||
return Err(
|
||||
format!(
|
||||
"Specified old YAML format config (--config {}) but a new KDL file exists in that location. To fix, point to it the new file instead: zellij --config {}",
|
||||
yaml_config_file.as_path().as_os_str().to_string_lossy().to_string(),
|
||||
new_config_file.as_path().as_os_str().to_string_lossy().to_string()
|
||||
)
|
||||
);
|
||||
}
|
||||
if !layout_files_to_convert.is_empty() {
|
||||
print_conversion_layouts_message(layout_files_to_convert.clone());
|
||||
}
|
||||
if !theme_files_to_convert.is_empty() {
|
||||
print_conversion_themes_message(theme_files_to_convert.clone());
|
||||
}
|
||||
print_remain_unmodified_message(layout_was_explicitly_set || yaml_config_was_explicitly_set);
|
||||
if layout_was_explicitly_set || yaml_config_was_explicitly_set {
|
||||
print_flag_help_message(
|
||||
layout_files_to_convert.clone(),
|
||||
&yaml_config_file,
|
||||
yaml_config_was_explicitly_set,
|
||||
)?;
|
||||
should_exit = true;
|
||||
} else {
|
||||
print_no_actions_and_wait_for_user_input()?;
|
||||
}
|
||||
convert_layouts(layout_files_to_convert)?;
|
||||
convert_themes(theme_files_to_convert)?;
|
||||
convert_config(yaml_config_file, new_config_file)?;
|
||||
Ok(should_exit)
|
||||
}
|
||||
6
zellij-client/src/old_config_converter/mod.rs
Normal file
6
zellij-client/src/old_config_converter/mod.rs
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
mod convert_old_yaml_files;
|
||||
mod old_config;
|
||||
mod old_layout;
|
||||
pub use convert_old_yaml_files::convert_old_yaml_files;
|
||||
pub use old_config::config_yaml_to_config_kdl;
|
||||
pub use old_layout::layout_yaml_to_layout_kdl;
|
||||
1292
zellij-client/src/old_config_converter/old_config.rs
Normal file
1292
zellij-client/src/old_config_converter/old_config.rs
Normal file
File diff suppressed because it is too large
Load diff
557
zellij-client/src/old_config_converter/old_layout.rs
Normal file
557
zellij-client/src/old_config_converter/old_layout.rs
Normal file
|
|
@ -0,0 +1,557 @@
|
|||
// This is a converter from the old yaml layout to the new KDL layout.
|
||||
//
|
||||
// It is supposed to be mostly self containing - please refrain from adding to it, importing
|
||||
// from it or changing it
|
||||
use super::old_config::{config_yaml_to_config_kdl, OldConfigFromYaml, OldRunCommand};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::vec::Vec;
|
||||
use std::{fmt, path::PathBuf};
|
||||
use url::Url;
|
||||
|
||||
fn pane_line(
|
||||
pane_name: Option<&String>,
|
||||
split_size: Option<OldSplitSize>,
|
||||
focus: Option<bool>,
|
||||
borderless: bool,
|
||||
) -> String {
|
||||
let mut pane_line = format!("pane");
|
||||
if let Some(pane_name) = pane_name {
|
||||
pane_line.push_str(&format!(" name=\"{}\"", pane_name));
|
||||
}
|
||||
if let Some(split_size) = split_size {
|
||||
pane_line.push_str(&format!(" size={}", split_size));
|
||||
}
|
||||
if let Some(focus) = focus {
|
||||
pane_line.push_str(&format!(" focus={}", focus));
|
||||
}
|
||||
if borderless {
|
||||
pane_line.push_str(" borderless=true");
|
||||
}
|
||||
pane_line
|
||||
}
|
||||
|
||||
fn tab_line(
|
||||
pane_name: Option<&String>,
|
||||
split_size: Option<OldSplitSize>,
|
||||
focus: Option<bool>,
|
||||
borderless: bool,
|
||||
) -> String {
|
||||
let mut pane_line = format!("tab");
|
||||
if let Some(pane_name) = pane_name {
|
||||
pane_line.push_str(&format!(" name=\"{}\"", pane_name));
|
||||
}
|
||||
if let Some(split_size) = split_size {
|
||||
pane_line.push_str(&format!(" size={}", split_size));
|
||||
}
|
||||
if let Some(focus) = focus {
|
||||
pane_line.push_str(&format!(" focus={}", focus));
|
||||
}
|
||||
if borderless {
|
||||
pane_line.push_str(" borderless=true");
|
||||
}
|
||||
pane_line
|
||||
}
|
||||
|
||||
fn pane_line_with_children(
|
||||
pane_name: Option<&String>,
|
||||
split_size: Option<OldSplitSize>,
|
||||
focus: Option<bool>,
|
||||
borderless: bool,
|
||||
split_direction: OldDirection,
|
||||
) -> String {
|
||||
let mut pane_line = format!("pane");
|
||||
if let Some(pane_name) = pane_name {
|
||||
pane_line.push_str(&format!(" name=\"{}\"", pane_name));
|
||||
}
|
||||
if let Some(split_size) = split_size {
|
||||
pane_line.push_str(&format!(" size={}", split_size));
|
||||
}
|
||||
if let Some(focus) = focus {
|
||||
pane_line.push_str(&format!(" focus={}", focus));
|
||||
}
|
||||
pane_line.push_str(&format!(" split_direction=\"{}\"", split_direction));
|
||||
if borderless {
|
||||
pane_line.push_str(" borderless=true");
|
||||
}
|
||||
pane_line
|
||||
}
|
||||
|
||||
fn pane_command_line(
|
||||
pane_name: Option<&String>,
|
||||
split_size: Option<OldSplitSize>,
|
||||
focus: Option<bool>,
|
||||
borderless: bool,
|
||||
command: &PathBuf,
|
||||
) -> String {
|
||||
let mut pane_line = format!("pane command={:?}", command);
|
||||
if let Some(pane_name) = pane_name {
|
||||
pane_line.push_str(&format!(" name=\"{}\"", pane_name));
|
||||
}
|
||||
if let Some(split_size) = split_size {
|
||||
pane_line.push_str(&format!(" size={}", split_size));
|
||||
}
|
||||
if let Some(focus) = focus {
|
||||
pane_line.push_str(&format!(" focus={}", focus));
|
||||
}
|
||||
if borderless {
|
||||
pane_line.push_str(" borderless=true");
|
||||
}
|
||||
pane_line
|
||||
}
|
||||
|
||||
fn tab_line_with_children(
|
||||
pane_name: Option<&String>,
|
||||
split_size: Option<OldSplitSize>,
|
||||
focus: Option<bool>,
|
||||
borderless: bool,
|
||||
split_direction: OldDirection,
|
||||
) -> String {
|
||||
let mut pane_line = format!("tab");
|
||||
if let Some(pane_name) = pane_name {
|
||||
pane_line.push_str(&format!(" name=\"{}\"", pane_name));
|
||||
}
|
||||
if let Some(split_size) = split_size {
|
||||
pane_line.push_str(&format!(" size={}", split_size));
|
||||
}
|
||||
if let Some(focus) = focus {
|
||||
pane_line.push_str(&format!(" focus={}", focus));
|
||||
}
|
||||
pane_line.push_str(&format!(" split_direction=\"{}\"", split_direction));
|
||||
if borderless {
|
||||
pane_line.push_str(" borderless=true");
|
||||
}
|
||||
pane_line
|
||||
}
|
||||
|
||||
fn stringify_template(
|
||||
template: &OldLayoutTemplate,
|
||||
indentation: String,
|
||||
has_no_tabs: bool,
|
||||
is_base: bool,
|
||||
) -> String {
|
||||
let mut stringified = if is_base {
|
||||
String::new()
|
||||
} else {
|
||||
String::from("\n")
|
||||
};
|
||||
if is_base && !template.parts.is_empty() && template.direction == OldDirection::Vertical {
|
||||
// we don't support specifying the split direction in the layout node
|
||||
// eg. layout split_direction="Vertical" { .. } <== this is not supported!!
|
||||
// so we need to add a child wrapper with the split direction instead:
|
||||
// layout {
|
||||
// pane split_direction="Vertical" { .. }
|
||||
// }
|
||||
let child_indentation = format!("{} ", &indentation);
|
||||
stringified.push_str(&stringify_template(
|
||||
template,
|
||||
child_indentation,
|
||||
has_no_tabs,
|
||||
false,
|
||||
));
|
||||
} else if !template.parts.is_empty() {
|
||||
if !is_base {
|
||||
stringified.push_str(&format!(
|
||||
"{}{} {{",
|
||||
indentation,
|
||||
pane_line_with_children(
|
||||
template.pane_name.as_ref(),
|
||||
template.split_size,
|
||||
template.focus,
|
||||
template.borderless,
|
||||
template.direction
|
||||
)
|
||||
));
|
||||
}
|
||||
for part in &template.parts {
|
||||
let child_indentation = format!("{} ", &indentation);
|
||||
stringified.push_str(&stringify_template(
|
||||
&part,
|
||||
child_indentation,
|
||||
has_no_tabs,
|
||||
false,
|
||||
));
|
||||
}
|
||||
if !is_base {
|
||||
stringified.push_str(&format!("\n{}}}", indentation));
|
||||
}
|
||||
} else if template.body && !has_no_tabs {
|
||||
stringified.push_str(&format!("{}children", indentation));
|
||||
} else {
|
||||
match template.run.as_ref() {
|
||||
Some(OldRunFromYaml::Plugin(plugin_from_yaml)) => {
|
||||
stringified.push_str(&format!(
|
||||
"{}{} {{\n",
|
||||
&indentation,
|
||||
pane_line(
|
||||
template.pane_name.as_ref(),
|
||||
template.split_size,
|
||||
template.focus,
|
||||
template.borderless
|
||||
)
|
||||
));
|
||||
stringified.push_str(&format!(
|
||||
"{} plugin location=\"{}\"\n",
|
||||
&indentation, plugin_from_yaml.location
|
||||
));
|
||||
stringified.push_str(&format!("{}}}", &indentation));
|
||||
},
|
||||
Some(OldRunFromYaml::Command(command_from_yaml)) => {
|
||||
stringified.push_str(&format!(
|
||||
"{}{}",
|
||||
&indentation,
|
||||
&pane_command_line(
|
||||
template.pane_name.as_ref(),
|
||||
template.split_size,
|
||||
template.focus,
|
||||
template.borderless,
|
||||
&command_from_yaml.command
|
||||
)
|
||||
));
|
||||
if let Some(cwd) = command_from_yaml.cwd.as_ref() {
|
||||
stringified.push_str(&format!(" cwd={:?}", cwd));
|
||||
}
|
||||
if !command_from_yaml.args.is_empty() {
|
||||
stringified.push_str(" {\n");
|
||||
stringified.push_str(&format!(
|
||||
"{} args {}\n",
|
||||
&indentation,
|
||||
command_from_yaml
|
||||
.args
|
||||
.iter()
|
||||
.map(|s| format!("\"{}\"", s))
|
||||
.collect::<Vec<String>>()
|
||||
.join(" ")
|
||||
));
|
||||
stringified.push_str(&format!("{}}}", &indentation));
|
||||
}
|
||||
},
|
||||
None => {
|
||||
stringified.push_str(&format!(
|
||||
"{}{}",
|
||||
&indentation,
|
||||
pane_line(
|
||||
template.pane_name.as_ref(),
|
||||
template.split_size,
|
||||
template.focus,
|
||||
template.borderless
|
||||
)
|
||||
));
|
||||
},
|
||||
};
|
||||
}
|
||||
stringified
|
||||
}
|
||||
|
||||
fn stringify_tabs(tabs: Vec<OldTabLayout>) -> String {
|
||||
let mut stringified = String::new();
|
||||
for tab in tabs {
|
||||
let child_indentation = String::from(" ");
|
||||
if !tab.parts.is_empty() {
|
||||
stringified.push_str(&format!(
|
||||
"\n{}{} {{",
|
||||
child_indentation,
|
||||
tab_line_with_children(
|
||||
tab.pane_name.as_ref(),
|
||||
tab.split_size,
|
||||
tab.focus,
|
||||
tab.borderless,
|
||||
tab.direction
|
||||
)
|
||||
));
|
||||
let tab_template = OldLayoutTemplate::from(tab);
|
||||
stringified.push_str(&stringify_template(
|
||||
&tab_template,
|
||||
child_indentation.clone(),
|
||||
true,
|
||||
true,
|
||||
));
|
||||
stringified.push_str(&format!("\n{}}}", child_indentation));
|
||||
} else {
|
||||
stringified.push_str(&format!(
|
||||
"\n{}{}",
|
||||
child_indentation,
|
||||
tab_line(
|
||||
tab.pane_name.as_ref(),
|
||||
tab.split_size,
|
||||
tab.focus,
|
||||
tab.borderless
|
||||
)
|
||||
));
|
||||
}
|
||||
}
|
||||
stringified
|
||||
}
|
||||
|
||||
pub fn layout_yaml_to_layout_kdl(raw_yaml_layout: &str) -> Result<String, String> {
|
||||
// returns the raw kdl config
|
||||
let layout_from_yaml: OldLayoutFromYamlIntermediate = serde_yaml::from_str(raw_yaml_layout)
|
||||
.map_err(|e| format!("Failed to parse yaml: {:?}", e))?;
|
||||
let mut kdl_layout = String::new();
|
||||
kdl_layout.push_str("layout {");
|
||||
let template = layout_from_yaml.template;
|
||||
let tabs = layout_from_yaml.tabs;
|
||||
let has_no_tabs = tabs.is_empty()
|
||||
|| tabs.len() == 1 && tabs.get(0).map(|t| t.parts.is_empty()).unwrap_or(false);
|
||||
if has_no_tabs {
|
||||
let indentation = String::from("");
|
||||
kdl_layout.push_str(&stringify_template(
|
||||
&template,
|
||||
indentation,
|
||||
has_no_tabs,
|
||||
true,
|
||||
));
|
||||
} else {
|
||||
kdl_layout.push_str("\n default_tab_template {");
|
||||
let indentation = String::from(" ");
|
||||
kdl_layout.push_str(&stringify_template(
|
||||
&template,
|
||||
indentation,
|
||||
has_no_tabs,
|
||||
true,
|
||||
));
|
||||
kdl_layout.push_str("\n }");
|
||||
kdl_layout.push_str(&stringify_tabs(tabs));
|
||||
}
|
||||
kdl_layout.push_str("\n}");
|
||||
let layout_config = config_yaml_to_config_kdl(raw_yaml_layout, true)?;
|
||||
if let Some(session_name) = layout_from_yaml.session.name {
|
||||
kdl_layout.push_str(&format!("\nsession_name \"{}\"", session_name));
|
||||
if let Some(attach_to_session) = layout_from_yaml.session.attach {
|
||||
kdl_layout.push_str(&format!("\nattach_to_session {}", attach_to_session));
|
||||
}
|
||||
}
|
||||
if !layout_config.is_empty() {
|
||||
kdl_layout.push('\n');
|
||||
}
|
||||
kdl_layout.push_str(&layout_config);
|
||||
Ok(kdl_layout)
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Serialize, Deserialize, Clone, Copy)]
|
||||
pub enum OldDirection {
|
||||
#[serde(alias = "horizontal")]
|
||||
Horizontal,
|
||||
#[serde(alias = "vertical")]
|
||||
Vertical,
|
||||
}
|
||||
|
||||
impl fmt::Display for OldDirection {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
|
||||
match self {
|
||||
Self::Horizontal => write!(f, "Horizontal"),
|
||||
Self::Vertical => write!(f, "Vertical"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum OldSplitSize {
|
||||
#[serde(alias = "percent")]
|
||||
Percent(u64), // 1 to 100
|
||||
#[serde(alias = "fixed")]
|
||||
Fixed(usize), // An absolute number of columns or rows
|
||||
}
|
||||
|
||||
impl fmt::Display for OldSplitSize {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
|
||||
match self {
|
||||
Self::Percent(percent) => write!(f, "\"{}%\"", percent),
|
||||
Self::Fixed(fixed_size) => write!(f, "{}", fixed_size),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||
pub enum OldRunFromYaml {
|
||||
#[serde(rename = "plugin")]
|
||||
Plugin(OldRunPluginFromYaml),
|
||||
#[serde(rename = "command")]
|
||||
Command(OldRunCommand),
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||
pub struct OldRunPluginFromYaml {
|
||||
#[serde(default)]
|
||||
pub _allow_exec_host_cmd: bool,
|
||||
pub location: Url,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
|
||||
#[serde(default)]
|
||||
pub struct OldLayoutFromYamlIntermediate {
|
||||
#[serde(default)]
|
||||
pub template: OldLayoutTemplate,
|
||||
#[serde(default)]
|
||||
pub borderless: bool,
|
||||
#[serde(default)]
|
||||
pub tabs: Vec<OldTabLayout>,
|
||||
#[serde(default)]
|
||||
pub session: OldSessionFromYaml,
|
||||
#[serde(flatten)]
|
||||
pub config: Option<OldConfigFromYaml>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
|
||||
#[serde(default)]
|
||||
pub struct OldLayoutFromYaml {
|
||||
#[serde(default)]
|
||||
pub session: OldSessionFromYaml,
|
||||
#[serde(default)]
|
||||
pub template: OldLayoutTemplate,
|
||||
#[serde(default)]
|
||||
pub borderless: bool,
|
||||
#[serde(default)]
|
||||
pub tabs: Vec<OldTabLayout>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, Serialize, Deserialize, Clone, PartialEq)]
|
||||
pub struct OldSessionFromYaml {
|
||||
pub name: Option<String>,
|
||||
#[serde(default = "default_as_some_true")]
|
||||
pub attach: Option<bool>,
|
||||
}
|
||||
|
||||
fn default_as_some_true() -> Option<bool> {
|
||||
Some(true)
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
|
||||
pub struct OldLayoutTemplate {
|
||||
pub direction: OldDirection,
|
||||
#[serde(default)]
|
||||
pub pane_name: Option<String>,
|
||||
#[serde(default)]
|
||||
pub borderless: bool,
|
||||
#[serde(default)]
|
||||
pub parts: Vec<OldLayoutTemplate>,
|
||||
#[serde(default)]
|
||||
pub body: bool,
|
||||
pub split_size: Option<OldSplitSize>,
|
||||
pub focus: Option<bool>,
|
||||
pub run: Option<OldRunFromYaml>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
|
||||
pub struct OldTabLayout {
|
||||
#[serde(default)]
|
||||
pub direction: OldDirection,
|
||||
pub pane_name: Option<String>,
|
||||
#[serde(default)]
|
||||
pub borderless: bool,
|
||||
#[serde(default)]
|
||||
pub parts: Vec<OldTabLayout>,
|
||||
pub split_size: Option<OldSplitSize>,
|
||||
#[serde(default)]
|
||||
pub name: String,
|
||||
pub focus: Option<bool>,
|
||||
pub run: Option<OldRunFromYaml>,
|
||||
}
|
||||
|
||||
impl From<OldTabLayout> for OldLayoutTemplate {
|
||||
fn from(old_tab_layout: OldTabLayout) -> Self {
|
||||
OldLayoutTemplate {
|
||||
direction: old_tab_layout.direction,
|
||||
pane_name: old_tab_layout.pane_name.clone(),
|
||||
borderless: old_tab_layout.borderless,
|
||||
parts: old_tab_layout.parts.iter().map(|o| o.into()).collect(),
|
||||
split_size: old_tab_layout.split_size,
|
||||
focus: old_tab_layout.focus,
|
||||
run: old_tab_layout.run.clone(),
|
||||
body: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&OldTabLayout> for OldLayoutTemplate {
|
||||
fn from(old_tab_layout: &OldTabLayout) -> Self {
|
||||
OldLayoutTemplate {
|
||||
direction: old_tab_layout.direction,
|
||||
pane_name: old_tab_layout.pane_name.clone(),
|
||||
borderless: old_tab_layout.borderless,
|
||||
parts: old_tab_layout.parts.iter().map(|o| o.into()).collect(),
|
||||
split_size: old_tab_layout.split_size,
|
||||
focus: old_tab_layout.focus,
|
||||
run: old_tab_layout.run.clone(),
|
||||
body: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<&mut OldTabLayout> for OldLayoutTemplate {
|
||||
fn from(old_tab_layout: &mut OldTabLayout) -> Self {
|
||||
OldLayoutTemplate {
|
||||
direction: old_tab_layout.direction,
|
||||
pane_name: old_tab_layout.pane_name.clone(),
|
||||
borderless: old_tab_layout.borderless,
|
||||
parts: old_tab_layout.parts.iter().map(|o| o.into()).collect(),
|
||||
split_size: old_tab_layout.split_size,
|
||||
focus: old_tab_layout.focus,
|
||||
run: old_tab_layout.run.clone(),
|
||||
body: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<OldLayoutFromYamlIntermediate> for OldLayoutFromYaml {
|
||||
fn from(layout_from_yaml_intermediate: OldLayoutFromYamlIntermediate) -> Self {
|
||||
Self {
|
||||
template: layout_from_yaml_intermediate.template,
|
||||
borderless: layout_from_yaml_intermediate.borderless,
|
||||
tabs: layout_from_yaml_intermediate.tabs,
|
||||
session: layout_from_yaml_intermediate.session,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<OldLayoutFromYaml> for OldLayoutFromYamlIntermediate {
|
||||
fn from(layout_from_yaml: OldLayoutFromYaml) -> Self {
|
||||
Self {
|
||||
template: layout_from_yaml.template,
|
||||
borderless: layout_from_yaml.borderless,
|
||||
tabs: layout_from_yaml.tabs,
|
||||
config: None,
|
||||
session: layout_from_yaml.session,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for OldLayoutFromYamlIntermediate {
|
||||
fn default() -> Self {
|
||||
OldLayoutFromYaml::default().into()
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for OldLayoutTemplate {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
direction: OldDirection::Horizontal,
|
||||
pane_name: None,
|
||||
body: false,
|
||||
borderless: false,
|
||||
parts: vec![OldLayoutTemplate {
|
||||
direction: OldDirection::Horizontal,
|
||||
pane_name: None,
|
||||
body: true,
|
||||
borderless: false,
|
||||
split_size: None,
|
||||
focus: None,
|
||||
run: None,
|
||||
parts: vec![],
|
||||
}],
|
||||
split_size: None,
|
||||
focus: None,
|
||||
run: None,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for OldDirection {
|
||||
fn default() -> Self {
|
||||
OldDirection::Horizontal
|
||||
}
|
||||
}
|
||||
|
||||
// The unit test location.
|
||||
#[path = "./unit/convert_layout_tests.rs"]
|
||||
#[cfg(test)]
|
||||
mod convert_layout_test;
|
||||
|
|
@ -0,0 +1,126 @@
|
|||
use crate::old_config_converter::config_yaml_to_config_kdl;
|
||||
use insta::assert_snapshot;
|
||||
use std::path::PathBuf;
|
||||
use std::{fs::File, io::prelude::*};
|
||||
|
||||
#[test]
|
||||
fn properly_convert_default_config() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_default_yaml_config.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_config_with_custom_options() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_yaml_config_with_custom_options.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_config_with_keybind_unbinds_in_mode() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_yaml_config_with_unbinds_in_mode.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_config_with_global_keybind_unbinds() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!("{}/src/old_config_converter/unit/fixtures/old_yaml_config_with_global_keybind_unbinds.yaml", env!("CARGO_MANIFEST_DIR")));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_config_with_unbind_all_keys_per_mode() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!("{}/src/old_config_converter/unit/fixtures/old_yaml_config_with_unbind_all_keys_per_mode.yaml", env!("CARGO_MANIFEST_DIR")));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_config_with_env_variables() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_yaml_config_with_env_variables.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_config_with_ui_config() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_yaml_config_with_ui.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn convert_config_with_themes_config() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_yaml_config_with_themes.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = config_yaml_to_config_kdl(&raw_config_file, false)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -0,0 +1,142 @@
|
|||
use crate::old_config_converter::layout_yaml_to_layout_kdl;
|
||||
use insta::assert_snapshot;
|
||||
use std::path::PathBuf;
|
||||
use std::{fs::File, io::prelude::*};
|
||||
|
||||
#[test]
|
||||
fn properly_convert_default_layout() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_default_yaml_layout.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn properly_convert_layout_with_session_name() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_yaml_layout_with_session_name.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn properly_convert_layout_with_session_name_and_attach_false() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!("{}/src/old_config_converter/unit/fixtures/old_yaml_layout_with_session_name_and_attach_false.yaml", env!("CARGO_MANIFEST_DIR")));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn properly_convert_layout_with_config() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/old_yaml_layout_with_config.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn properly_convert_layout_with_config_and_session_name() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!("{}/src/old_config_converter/unit/fixtures/old_yaml_layout_with_config_and_session_name.yaml", env!("CARGO_MANIFEST_DIR")));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn properly_convert_layout_example_1() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/multiple_tabs_layout.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn properly_convert_layout_example_2() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/multiple_tabs_layout_htop_command.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn properly_convert_layout_example_3() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/run_htop_layout.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn properly_convert_layout_example_4() -> Result<(), String> {
|
||||
let fixture = PathBuf::from(format!(
|
||||
"{}/src/old_config_converter/unit/fixtures/run_htop_layout_with_plugins.yaml",
|
||||
env!("CARGO_MANIFEST_DIR")
|
||||
));
|
||||
let mut handle = File::open(&fixture).map_err(|e| format!("{}", e))?;
|
||||
let mut raw_config_file = String::new();
|
||||
handle
|
||||
.read_to_string(&mut raw_config_file)
|
||||
.map_err(|e| format!("{}", e))?;
|
||||
let kdl_config = layout_yaml_to_layout_kdl(&raw_config_file)?;
|
||||
assert_snapshot!(format!("{}", kdl_config));
|
||||
Ok(())
|
||||
}
|
||||
|
|
@ -30,13 +30,11 @@ tabs:
|
|||
Percent: 50
|
||||
- direction: Vertical
|
||||
- direction: Vertical
|
||||
focus: true
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
focus: true
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
---
|
||||
template:
|
||||
direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Fixed: 1
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:tab-bar"
|
||||
borderless: true
|
||||
- direction: Vertical
|
||||
body: true
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Fixed: 2
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:status-bar"
|
||||
borderless: true
|
||||
|
||||
tabs:
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
run:
|
||||
command: {cmd: htop}
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 50
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
- direction: Vertical
|
||||
run:
|
||||
command: {cmd: htop, args: ["-C"]}
|
||||
- direction: Vertical
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 20
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:strider"
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 80
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 40
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 60
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
|
|
@ -573,13 +573,13 @@ plugins:
|
|||
# Options:
|
||||
# - detach (Default)
|
||||
# - quit
|
||||
#on_force_close: quit
|
||||
# on_force_close: quit
|
||||
|
||||
# Send a request for a simplified ui (without arrow fonts) to plugins
|
||||
# Options:
|
||||
# - true
|
||||
# - false (Default)
|
||||
#simplified_ui: true
|
||||
# simplified_ui: true
|
||||
|
||||
# Choose the path to the default shell that zellij will use for opening new panes
|
||||
# Default: $SHELL
|
||||
|
|
@ -0,0 +1,639 @@
|
|||
---
|
||||
# Configuration for zellij.
|
||||
|
||||
# In order to troubleshoot your configuration try using the following command:
|
||||
# `zellij setup --check`
|
||||
# It should show current config locations and features that are enabled.
|
||||
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [NewPane: ]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right ]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up, ]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
locked:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'g',]
|
||||
resize:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'n', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [Resize: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [Resize: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [Resize: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [Resize: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [Resize: Increase,]
|
||||
key: [Char: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Char: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [Char: '-']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
pane:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'p', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Char: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Char: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Char: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Char: 'k', Up,]
|
||||
- action: [SwitchFocus,]
|
||||
key: [Char: 'p']
|
||||
- action: [NewPane: , SwitchToMode: Normal,]
|
||||
key: [Char: 'n',]
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: 'r',]
|
||||
- action: [CloseFocus, SwitchToMode: Normal,]
|
||||
key: [Char: 'x',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'f',]
|
||||
- action: [TogglePaneFrames, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [ToggleFloatingPanes, SwitchToMode: Normal,]
|
||||
key: [Char: 'w']
|
||||
- action: [TogglePaneEmbedOrFloating, SwitchToMode: Normal,]
|
||||
key: [Char: 'e']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: RenamePane, PaneNameInput: [0],]
|
||||
key: [Char: 'c']
|
||||
move:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'h', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [MovePane: ,]
|
||||
key: [Char: 'n', Char: "\t",]
|
||||
- action: [MovePane: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [MovePane: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [MovePane: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [MovePane: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tab:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 't', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: 'r']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'h', Left, Up, Char: 'k',]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'l', Right,Down, Char: 'j']
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'n',]
|
||||
- action: [CloseTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'x',]
|
||||
- action: [ToggleActiveSyncTab, SwitchToMode: Normal,]
|
||||
key: [Char: 's']
|
||||
- action: [GoToTab: 1, SwitchToMode: Normal,]
|
||||
key: [ Char: '1',]
|
||||
- action: [GoToTab: 2, SwitchToMode: Normal,]
|
||||
key: [ Char: '2',]
|
||||
- action: [GoToTab: 3, SwitchToMode: Normal,]
|
||||
key: [ Char: '3',]
|
||||
- action: [GoToTab: 4, SwitchToMode: Normal,]
|
||||
key: [ Char: '4',]
|
||||
- action: [GoToTab: 5, SwitchToMode: Normal,]
|
||||
key: [ Char: '5',]
|
||||
- action: [GoToTab: 6, SwitchToMode: Normal,]
|
||||
key: [ Char: '6',]
|
||||
- action: [GoToTab: 7, SwitchToMode: Normal,]
|
||||
key: [ Char: '7',]
|
||||
- action: [GoToTab: 8, SwitchToMode: Normal,]
|
||||
key: [ Char: '8',]
|
||||
- action: [GoToTab: 9, SwitchToMode: Normal,]
|
||||
key: [ Char: '9',]
|
||||
- action: [ToggleTab]
|
||||
key: [ Char: "\t" ]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
scroll:
|
||||
- action: [EditScrollback, SwitchToMode: Normal]
|
||||
key: [Char: 'e']
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
entersearch:
|
||||
- action: [SwitchToMode: Search,]
|
||||
key: [Char: "\n"]
|
||||
- action: [SearchInput: [27], SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 'c', Esc]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
search:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
- action: [Search: Down]
|
||||
key: [Char: 'n']
|
||||
- action: [Search: Up]
|
||||
key: [Char: 'p']
|
||||
- action: [SearchToggleOption: CaseSensitivity]
|
||||
key: [Char: 'c']
|
||||
- action: [SearchToggleOption: Wrap]
|
||||
key: [Char: 'w']
|
||||
- action: [SearchToggleOption: WholeWord]
|
||||
key: [Char: 'o']
|
||||
renametab:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenameTab , SwitchToMode: Tab,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
renamepane:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenamePane , SwitchToMode: Pane,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
session:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tmux:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [ Char: '[']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Write: [2,], SwitchToMode: Normal]
|
||||
key: [Ctrl: 'b']
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: "\"",]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: '%',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'c',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: ',']
|
||||
- action: [GoToPreviousTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'p']
|
||||
- action: [GoToNextTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'n']
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Left,]
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Right,]
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Down,]
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Up,]
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Char: 'h']
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Char: 'l']
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Char: 'j']
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Char: 'k']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Char: 'o']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
plugins:
|
||||
- path: tab-bar
|
||||
tag: tab-bar
|
||||
- path: status-bar
|
||||
tag: status-bar
|
||||
- path: strider
|
||||
tag: strider
|
||||
- path: compact-bar
|
||||
tag: compact-bar
|
||||
|
||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
# eg. when terminal window with an active zellij session is closed
|
||||
# Options:
|
||||
# - detach (Default)
|
||||
# - quit
|
||||
on_force_close: quit
|
||||
|
||||
# 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
|
||||
|
||||
# Toggle between having pane frames around the panes
|
||||
# Options:
|
||||
# - true (default)
|
||||
# - false
|
||||
pane_frames: true
|
||||
|
||||
# Choose the theme that is specified in the themes section.
|
||||
# For some examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||
# Default: default
|
||||
theme: default
|
||||
|
||||
# Choose the mode that zellij uses when starting up.
|
||||
# Default: normal
|
||||
default_mode: locked
|
||||
|
||||
# Toggle enabling the mouse mode.
|
||||
# On certain configurations, or terminals this could
|
||||
# potentially interfere with copying text.
|
||||
# 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.
|
||||
# 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
|
||||
copy_on_select: true
|
||||
|
||||
# Path to the default editor to use to edit pane scrollbuffer
|
||||
scrollback_editor: /usr/bin/nano
|
||||
|
|
@ -0,0 +1,644 @@
|
|||
---
|
||||
# Configuration for zellij.
|
||||
|
||||
# In order to troubleshoot your configuration try using the following command:
|
||||
# `zellij setup --check`
|
||||
# It should show current config locations and features that are enabled.
|
||||
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [NewPane: ]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right ]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up, ]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
locked:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'g',]
|
||||
resize:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'n', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [Resize: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [Resize: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [Resize: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [Resize: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [Resize: Increase,]
|
||||
key: [Char: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Char: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [Char: '-']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
pane:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'p', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Char: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Char: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Char: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Char: 'k', Up,]
|
||||
- action: [SwitchFocus,]
|
||||
key: [Char: 'p']
|
||||
- action: [NewPane: , SwitchToMode: Normal,]
|
||||
key: [Char: 'n',]
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: 'r',]
|
||||
- action: [CloseFocus, SwitchToMode: Normal,]
|
||||
key: [Char: 'x',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'f',]
|
||||
- action: [TogglePaneFrames, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [ToggleFloatingPanes, SwitchToMode: Normal,]
|
||||
key: [Char: 'w']
|
||||
- action: [TogglePaneEmbedOrFloating, SwitchToMode: Normal,]
|
||||
key: [Char: 'e']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: RenamePane, PaneNameInput: [0],]
|
||||
key: [Char: 'c']
|
||||
move:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'h', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [MovePane: ,]
|
||||
key: [Char: 'n', Char: "\t",]
|
||||
- action: [MovePane: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [MovePane: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [MovePane: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [MovePane: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tab:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 't', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: 'r']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'h', Left, Up, Char: 'k',]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'l', Right,Down, Char: 'j']
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'n',]
|
||||
- action: [CloseTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'x',]
|
||||
- action: [ToggleActiveSyncTab, SwitchToMode: Normal,]
|
||||
key: [Char: 's']
|
||||
- action: [GoToTab: 1, SwitchToMode: Normal,]
|
||||
key: [ Char: '1',]
|
||||
- action: [GoToTab: 2, SwitchToMode: Normal,]
|
||||
key: [ Char: '2',]
|
||||
- action: [GoToTab: 3, SwitchToMode: Normal,]
|
||||
key: [ Char: '3',]
|
||||
- action: [GoToTab: 4, SwitchToMode: Normal,]
|
||||
key: [ Char: '4',]
|
||||
- action: [GoToTab: 5, SwitchToMode: Normal,]
|
||||
key: [ Char: '5',]
|
||||
- action: [GoToTab: 6, SwitchToMode: Normal,]
|
||||
key: [ Char: '6',]
|
||||
- action: [GoToTab: 7, SwitchToMode: Normal,]
|
||||
key: [ Char: '7',]
|
||||
- action: [GoToTab: 8, SwitchToMode: Normal,]
|
||||
key: [ Char: '8',]
|
||||
- action: [GoToTab: 9, SwitchToMode: Normal,]
|
||||
key: [ Char: '9',]
|
||||
- action: [ToggleTab]
|
||||
key: [ Char: "\t" ]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
scroll:
|
||||
- action: [EditScrollback, SwitchToMode: Normal]
|
||||
key: [Char: 'e']
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
entersearch:
|
||||
- action: [SwitchToMode: Search,]
|
||||
key: [Char: "\n"]
|
||||
- action: [SearchInput: [27], SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 'c', Esc]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
search:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
- action: [Search: Down]
|
||||
key: [Char: 'n']
|
||||
- action: [Search: Up]
|
||||
key: [Char: 'p']
|
||||
- action: [SearchToggleOption: CaseSensitivity]
|
||||
key: [Char: 'c']
|
||||
- action: [SearchToggleOption: Wrap]
|
||||
key: [Char: 'w']
|
||||
- action: [SearchToggleOption: WholeWord]
|
||||
key: [Char: 'o']
|
||||
renametab:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenameTab , SwitchToMode: Tab,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
renamepane:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenamePane , SwitchToMode: Pane,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
session:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tmux:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [ Char: '[']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Write: [2,], SwitchToMode: Normal]
|
||||
key: [Ctrl: 'b']
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: "\"",]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: '%',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'c',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: ',']
|
||||
- action: [GoToPreviousTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'p']
|
||||
- action: [GoToNextTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'n']
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Left,]
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Right,]
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Down,]
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Up,]
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Char: 'h']
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Char: 'l']
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Char: 'j']
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Char: 'k']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Char: 'o']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
plugins:
|
||||
- path: tab-bar
|
||||
tag: tab-bar
|
||||
- path: status-bar
|
||||
tag: status-bar
|
||||
- path: strider
|
||||
tag: strider
|
||||
- path: compact-bar
|
||||
tag: compact-bar
|
||||
|
||||
env:
|
||||
foo: bar
|
||||
bar: baz
|
||||
RUST_BACKTRACE: "1"
|
||||
|
||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
# eg. when terminal window with an active zellij session is closed
|
||||
# Options:
|
||||
# - detach (Default)
|
||||
# - quit
|
||||
# on_force_close: quit
|
||||
|
||||
# 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
|
||||
|
||||
# Toggle between having pane frames around the panes
|
||||
# Options:
|
||||
# - true (default)
|
||||
# - false
|
||||
#pane_frames: true
|
||||
|
||||
# Choose the theme that is specified in the themes section.
|
||||
# For some examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||
# Default: default
|
||||
#theme: default
|
||||
|
||||
# Choose the mode that zellij uses when starting up.
|
||||
# Default: normal
|
||||
#default_mode: locked
|
||||
|
||||
# Toggle enabling the mouse mode.
|
||||
# On certain configurations, or terminals this could
|
||||
# potentially interfere with copying text.
|
||||
# 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.
|
||||
# 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
|
||||
#copy_on_select: true
|
||||
|
||||
# Path to the default editor to use to edit pane scrollbuffer
|
||||
# scrollback_editor: /usr/bin/nano
|
||||
|
|
@ -0,0 +1,639 @@
|
|||
---
|
||||
# Configuration for zellij.
|
||||
|
||||
# In order to troubleshoot your configuration try using the following command:
|
||||
# `zellij setup --check`
|
||||
# It should show current config locations and features that are enabled.
|
||||
|
||||
keybinds:
|
||||
unbind: [Ctrl: 'g', Char: ' ']
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [NewPane: ]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right ]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up, ]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
locked:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'g',]
|
||||
resize:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'n', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [Resize: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [Resize: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [Resize: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [Resize: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [Resize: Increase,]
|
||||
key: [Char: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Char: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [Char: '-']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
pane:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'p', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Char: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Char: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Char: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Char: 'k', Up,]
|
||||
- action: [SwitchFocus,]
|
||||
key: [Char: 'p']
|
||||
- action: [NewPane: , SwitchToMode: Normal,]
|
||||
key: [Char: 'n',]
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: 'r',]
|
||||
- action: [CloseFocus, SwitchToMode: Normal,]
|
||||
key: [Char: 'x',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'f',]
|
||||
- action: [TogglePaneFrames, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [ToggleFloatingPanes, SwitchToMode: Normal,]
|
||||
key: [Char: 'w']
|
||||
- action: [TogglePaneEmbedOrFloating, SwitchToMode: Normal,]
|
||||
key: [Char: 'e']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: RenamePane, PaneNameInput: [0],]
|
||||
key: [Char: 'c']
|
||||
move:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'h', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [MovePane: ,]
|
||||
key: [Char: 'n', Char: "\t",]
|
||||
- action: [MovePane: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [MovePane: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [MovePane: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [MovePane: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tab:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 't', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: 'r']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'h', Left, Up, Char: 'k',]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'l', Right,Down, Char: 'j']
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'n',]
|
||||
- action: [CloseTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'x',]
|
||||
- action: [ToggleActiveSyncTab, SwitchToMode: Normal,]
|
||||
key: [Char: 's']
|
||||
- action: [GoToTab: 1, SwitchToMode: Normal,]
|
||||
key: [ Char: '1',]
|
||||
- action: [GoToTab: 2, SwitchToMode: Normal,]
|
||||
key: [ Char: '2',]
|
||||
- action: [GoToTab: 3, SwitchToMode: Normal,]
|
||||
key: [ Char: '3',]
|
||||
- action: [GoToTab: 4, SwitchToMode: Normal,]
|
||||
key: [ Char: '4',]
|
||||
- action: [GoToTab: 5, SwitchToMode: Normal,]
|
||||
key: [ Char: '5',]
|
||||
- action: [GoToTab: 6, SwitchToMode: Normal,]
|
||||
key: [ Char: '6',]
|
||||
- action: [GoToTab: 7, SwitchToMode: Normal,]
|
||||
key: [ Char: '7',]
|
||||
- action: [GoToTab: 8, SwitchToMode: Normal,]
|
||||
key: [ Char: '8',]
|
||||
- action: [GoToTab: 9, SwitchToMode: Normal,]
|
||||
key: [ Char: '9',]
|
||||
- action: [ToggleTab]
|
||||
key: [ Char: "\t" ]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
scroll:
|
||||
- action: [EditScrollback, SwitchToMode: Normal]
|
||||
key: [Char: 'e']
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
entersearch:
|
||||
- action: [SwitchToMode: Search,]
|
||||
key: [Char: "\n"]
|
||||
- action: [SearchInput: [27], SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 'c', Esc]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
search:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
- action: [Search: Down]
|
||||
key: [Char: 'n']
|
||||
- action: [Search: Up]
|
||||
key: [Char: 'p']
|
||||
- action: [SearchToggleOption: CaseSensitivity]
|
||||
key: [Char: 'c']
|
||||
- action: [SearchToggleOption: Wrap]
|
||||
key: [Char: 'w']
|
||||
- action: [SearchToggleOption: WholeWord]
|
||||
key: [Char: 'o']
|
||||
renametab:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenameTab , SwitchToMode: Tab,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
renamepane:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenamePane , SwitchToMode: Pane,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
session:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tmux:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [ Char: '[']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Write: [2,], SwitchToMode: Normal]
|
||||
key: [Ctrl: 'b']
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: "\"",]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: '%',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'c',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: ',']
|
||||
- action: [GoToPreviousTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'p']
|
||||
- action: [GoToNextTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'n']
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Left,]
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Right,]
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Down,]
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Up,]
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Char: 'h']
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Char: 'l']
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Char: 'j']
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Char: 'k']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Char: 'o']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
plugins:
|
||||
- path: tab-bar
|
||||
tag: tab-bar
|
||||
- path: status-bar
|
||||
tag: status-bar
|
||||
- path: strider
|
||||
tag: strider
|
||||
- path: compact-bar
|
||||
tag: compact-bar
|
||||
|
||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
# eg. when terminal window with an active zellij session is closed
|
||||
# Options:
|
||||
# - detach (Default)
|
||||
# - quit
|
||||
# on_force_close: quit
|
||||
|
||||
# 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
|
||||
|
||||
# Toggle between having pane frames around the panes
|
||||
# Options:
|
||||
# - true (default)
|
||||
# - false
|
||||
#pane_frames: true
|
||||
|
||||
# Choose the theme that is specified in the themes section.
|
||||
# For some examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||
# Default: default
|
||||
#theme: default
|
||||
|
||||
# Choose the mode that zellij uses when starting up.
|
||||
# Default: normal
|
||||
#default_mode: locked
|
||||
|
||||
# Toggle enabling the mouse mode.
|
||||
# On certain configurations, or terminals this could
|
||||
# potentially interfere with copying text.
|
||||
# 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.
|
||||
# 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
|
||||
#copy_on_select: true
|
||||
|
||||
# Path to the default editor to use to edit pane scrollbuffer
|
||||
# scrollback_editor: /usr/bin/nano
|
||||
|
|
@ -0,0 +1,677 @@
|
|||
---
|
||||
# Configuration for zellij.
|
||||
|
||||
# In order to troubleshoot your configuration try using the following command:
|
||||
# `zellij setup --check`
|
||||
# It should show current config locations and features that are enabled.
|
||||
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [NewPane: ]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right ]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up, ]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
locked:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'g',]
|
||||
resize:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'n', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [Resize: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [Resize: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [Resize: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [Resize: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [Resize: Increase,]
|
||||
key: [Char: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Char: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [Char: '-']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
pane:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'p', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Char: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Char: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Char: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Char: 'k', Up,]
|
||||
- action: [SwitchFocus,]
|
||||
key: [Char: 'p']
|
||||
- action: [NewPane: , SwitchToMode: Normal,]
|
||||
key: [Char: 'n',]
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: 'r',]
|
||||
- action: [CloseFocus, SwitchToMode: Normal,]
|
||||
key: [Char: 'x',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'f',]
|
||||
- action: [TogglePaneFrames, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [ToggleFloatingPanes, SwitchToMode: Normal,]
|
||||
key: [Char: 'w']
|
||||
- action: [TogglePaneEmbedOrFloating, SwitchToMode: Normal,]
|
||||
key: [Char: 'e']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: RenamePane, PaneNameInput: [0],]
|
||||
key: [Char: 'c']
|
||||
move:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'h', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [MovePane: ,]
|
||||
key: [Char: 'n', Char: "\t",]
|
||||
- action: [MovePane: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [MovePane: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [MovePane: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [MovePane: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tab:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 't', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: 'r']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'h', Left, Up, Char: 'k',]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'l', Right,Down, Char: 'j']
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'n',]
|
||||
- action: [CloseTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'x',]
|
||||
- action: [ToggleActiveSyncTab, SwitchToMode: Normal,]
|
||||
key: [Char: 's']
|
||||
- action: [GoToTab: 1, SwitchToMode: Normal,]
|
||||
key: [ Char: '1',]
|
||||
- action: [GoToTab: 2, SwitchToMode: Normal,]
|
||||
key: [ Char: '2',]
|
||||
- action: [GoToTab: 3, SwitchToMode: Normal,]
|
||||
key: [ Char: '3',]
|
||||
- action: [GoToTab: 4, SwitchToMode: Normal,]
|
||||
key: [ Char: '4',]
|
||||
- action: [GoToTab: 5, SwitchToMode: Normal,]
|
||||
key: [ Char: '5',]
|
||||
- action: [GoToTab: 6, SwitchToMode: Normal,]
|
||||
key: [ Char: '6',]
|
||||
- action: [GoToTab: 7, SwitchToMode: Normal,]
|
||||
key: [ Char: '7',]
|
||||
- action: [GoToTab: 8, SwitchToMode: Normal,]
|
||||
key: [ Char: '8',]
|
||||
- action: [GoToTab: 9, SwitchToMode: Normal,]
|
||||
key: [ Char: '9',]
|
||||
- action: [ToggleTab]
|
||||
key: [ Char: "\t" ]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
scroll:
|
||||
- action: [EditScrollback, SwitchToMode: Normal]
|
||||
key: [Char: 'e']
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
entersearch:
|
||||
- action: [SwitchToMode: Search,]
|
||||
key: [Char: "\n"]
|
||||
- action: [SearchInput: [27], SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 'c', Esc]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
search:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
- action: [Search: Down]
|
||||
key: [Char: 'n']
|
||||
- action: [Search: Up]
|
||||
key: [Char: 'p']
|
||||
- action: [SearchToggleOption: CaseSensitivity]
|
||||
key: [Char: 'c']
|
||||
- action: [SearchToggleOption: Wrap]
|
||||
key: [Char: 'w']
|
||||
- action: [SearchToggleOption: WholeWord]
|
||||
key: [Char: 'o']
|
||||
renametab:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenameTab , SwitchToMode: Tab,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
renamepane:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenamePane , SwitchToMode: Pane,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
session:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tmux:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [ Char: '[']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Write: [2,], SwitchToMode: Normal]
|
||||
key: [Ctrl: 'b']
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: "\"",]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: '%',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'c',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: ',']
|
||||
- action: [GoToPreviousTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'p']
|
||||
- action: [GoToNextTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'n']
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Left,]
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Right,]
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Down,]
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Up,]
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Char: 'h']
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Char: 'l']
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Char: 'j']
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Char: 'k']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Char: 'o']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
plugins:
|
||||
- path: tab-bar
|
||||
tag: tab-bar
|
||||
- path: status-bar
|
||||
tag: status-bar
|
||||
- path: strider
|
||||
tag: strider
|
||||
- path: compact-bar
|
||||
tag: compact-bar
|
||||
|
||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
# eg. when terminal window with an active zellij session is closed
|
||||
# Options:
|
||||
# - detach (Default)
|
||||
# - quit
|
||||
# on_force_close: quit
|
||||
|
||||
# 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
|
||||
|
||||
# Toggle between having pane frames around the panes
|
||||
# Options:
|
||||
# - true (default)
|
||||
# - false
|
||||
#pane_frames: true
|
||||
|
||||
# Choose the theme that is specified in the themes section.
|
||||
# For some examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||
# Default: default
|
||||
#theme: default
|
||||
|
||||
# Choose the mode that zellij uses when starting up.
|
||||
# Default: normal
|
||||
#default_mode: locked
|
||||
|
||||
# Toggle enabling the mouse mode.
|
||||
# On certain configurations, or terminals this could
|
||||
# potentially interfere with copying text.
|
||||
# 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.
|
||||
# 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
|
||||
#copy_on_select: true
|
||||
|
||||
# Path to the default editor to use to edit pane scrollbuffer
|
||||
# scrollback_editor: /usr/bin/nano
|
||||
#
|
||||
themes:
|
||||
nord:
|
||||
fg: "D8DEE9"
|
||||
bg: "#2E3440"
|
||||
black: "#3B4252"
|
||||
red: "#BF616A"
|
||||
green: "#A3BE8C"
|
||||
yellow: "#EBCB8B"
|
||||
blue: "#81A1C1"
|
||||
magenta: "#B48EAD"
|
||||
cyan: "#88C0D0"
|
||||
white: "#E5E9F0"
|
||||
orange: "#D08770"
|
||||
molokai-dark:
|
||||
bg: [27, 29, 30]
|
||||
red: [255, 0, 0]
|
||||
green: [0, 140, 0]
|
||||
yellow: [255, 255, 0]
|
||||
blue: [102, 217, 239]
|
||||
magenta: [174, 129, 255]
|
||||
orange: [253, 151, 31]
|
||||
fg: [248, 248, 240]
|
||||
cyan: [0, 255, 255]
|
||||
black: [0, 0, 0]
|
||||
white: [255, 255, 255]
|
||||
some-eightbit-theme:
|
||||
bg: 0
|
||||
red: 2
|
||||
green: 3
|
||||
yellow: 4
|
||||
blue: 5
|
||||
magenta: 6
|
||||
orange: 7
|
||||
fg: 8
|
||||
cyan: 9
|
||||
black: 10
|
||||
white: 255
|
||||
|
|
@ -0,0 +1,643 @@
|
|||
---
|
||||
# Configuration for zellij.
|
||||
|
||||
# In order to troubleshoot your configuration try using the following command:
|
||||
# `zellij setup --check`
|
||||
# It should show current config locations and features that are enabled.
|
||||
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [NewPane: ]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right ]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up, ]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
locked:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'g',]
|
||||
resize:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'n', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [Resize: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [Resize: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [Resize: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [Resize: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [Resize: Increase,]
|
||||
key: [Char: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Char: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [Char: '-']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
pane:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'p', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Char: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Char: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Char: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Char: 'k', Up,]
|
||||
- action: [SwitchFocus,]
|
||||
key: [Char: 'p']
|
||||
- action: [NewPane: , SwitchToMode: Normal,]
|
||||
key: [Char: 'n',]
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: 'r',]
|
||||
- action: [CloseFocus, SwitchToMode: Normal,]
|
||||
key: [Char: 'x',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'f',]
|
||||
- action: [TogglePaneFrames, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [ToggleFloatingPanes, SwitchToMode: Normal,]
|
||||
key: [Char: 'w']
|
||||
- action: [TogglePaneEmbedOrFloating, SwitchToMode: Normal,]
|
||||
key: [Char: 'e']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: RenamePane, PaneNameInput: [0],]
|
||||
key: [Char: 'c']
|
||||
move:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'h', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [MovePane: ,]
|
||||
key: [Char: 'n', Char: "\t",]
|
||||
- action: [MovePane: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [MovePane: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [MovePane: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [MovePane: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tab:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 't', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: 'r']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'h', Left, Up, Char: 'k',]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'l', Right,Down, Char: 'j']
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'n',]
|
||||
- action: [CloseTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'x',]
|
||||
- action: [ToggleActiveSyncTab, SwitchToMode: Normal,]
|
||||
key: [Char: 's']
|
||||
- action: [GoToTab: 1, SwitchToMode: Normal,]
|
||||
key: [ Char: '1',]
|
||||
- action: [GoToTab: 2, SwitchToMode: Normal,]
|
||||
key: [ Char: '2',]
|
||||
- action: [GoToTab: 3, SwitchToMode: Normal,]
|
||||
key: [ Char: '3',]
|
||||
- action: [GoToTab: 4, SwitchToMode: Normal,]
|
||||
key: [ Char: '4',]
|
||||
- action: [GoToTab: 5, SwitchToMode: Normal,]
|
||||
key: [ Char: '5',]
|
||||
- action: [GoToTab: 6, SwitchToMode: Normal,]
|
||||
key: [ Char: '6',]
|
||||
- action: [GoToTab: 7, SwitchToMode: Normal,]
|
||||
key: [ Char: '7',]
|
||||
- action: [GoToTab: 8, SwitchToMode: Normal,]
|
||||
key: [ Char: '8',]
|
||||
- action: [GoToTab: 9, SwitchToMode: Normal,]
|
||||
key: [ Char: '9',]
|
||||
- action: [ToggleTab]
|
||||
key: [ Char: "\t" ]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
scroll:
|
||||
- action: [EditScrollback, SwitchToMode: Normal]
|
||||
key: [Char: 'e']
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
entersearch:
|
||||
- action: [SwitchToMode: Search,]
|
||||
key: [Char: "\n"]
|
||||
- action: [SearchInput: [27], SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 'c', Esc]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
search:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
- action: [Search: Down]
|
||||
key: [Char: 'n']
|
||||
- action: [Search: Up]
|
||||
key: [Char: 'p']
|
||||
- action: [SearchToggleOption: CaseSensitivity]
|
||||
key: [Char: 'c']
|
||||
- action: [SearchToggleOption: Wrap]
|
||||
key: [Char: 'w']
|
||||
- action: [SearchToggleOption: WholeWord]
|
||||
key: [Char: 'o']
|
||||
renametab:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenameTab , SwitchToMode: Tab,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
renamepane:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenamePane , SwitchToMode: Pane,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
session:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tmux:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [ Char: '[']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Write: [2,], SwitchToMode: Normal]
|
||||
key: [Ctrl: 'b']
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: "\"",]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: '%',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'c',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: ',']
|
||||
- action: [GoToPreviousTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'p']
|
||||
- action: [GoToNextTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'n']
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Left,]
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Right,]
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Down,]
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Up,]
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Char: 'h']
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Char: 'l']
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Char: 'j']
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Char: 'k']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Char: 'o']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
plugins:
|
||||
- path: tab-bar
|
||||
tag: tab-bar
|
||||
- path: status-bar
|
||||
tag: status-bar
|
||||
- path: strider
|
||||
tag: strider
|
||||
- path: compact-bar
|
||||
tag: compact-bar
|
||||
|
||||
ui:
|
||||
pane_frames:
|
||||
rounded_corners: true
|
||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
# eg. when terminal window with an active zellij session is closed
|
||||
# Options:
|
||||
# - detach (Default)
|
||||
# - quit
|
||||
# on_force_close: quit
|
||||
|
||||
# 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
|
||||
|
||||
# Toggle between having pane frames around the panes
|
||||
# Options:
|
||||
# - true (default)
|
||||
# - false
|
||||
#pane_frames: true
|
||||
|
||||
# Choose the theme that is specified in the themes section.
|
||||
# For some examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||
# Default: default
|
||||
#theme: default
|
||||
|
||||
# Choose the mode that zellij uses when starting up.
|
||||
# Default: normal
|
||||
#default_mode: locked
|
||||
|
||||
# Toggle enabling the mouse mode.
|
||||
# On certain configurations, or terminals this could
|
||||
# potentially interfere with copying text.
|
||||
# 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.
|
||||
# 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
|
||||
#copy_on_select: true
|
||||
|
||||
# Path to the default editor to use to edit pane scrollbuffer
|
||||
# scrollback_editor: /usr/bin/nano
|
||||
|
|
@ -0,0 +1,639 @@
|
|||
---
|
||||
# Configuration for zellij.
|
||||
|
||||
# In order to troubleshoot your configuration try using the following command:
|
||||
# `zellij setup --check`
|
||||
# It should show current config locations and features that are enabled.
|
||||
|
||||
keybinds:
|
||||
normal:
|
||||
- unbind: true
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [NewPane: ]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right ]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up, ]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
locked:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'g',]
|
||||
resize:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'n', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [Resize: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [Resize: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [Resize: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [Resize: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [Resize: Increase,]
|
||||
key: [Char: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Char: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [Char: '-']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
pane:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'p', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Char: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Char: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Char: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Char: 'k', Up,]
|
||||
- action: [SwitchFocus,]
|
||||
key: [Char: 'p']
|
||||
- action: [NewPane: , SwitchToMode: Normal,]
|
||||
key: [Char: 'n',]
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: 'r',]
|
||||
- action: [CloseFocus, SwitchToMode: Normal,]
|
||||
key: [Char: 'x',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'f',]
|
||||
- action: [TogglePaneFrames, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [ToggleFloatingPanes, SwitchToMode: Normal,]
|
||||
key: [Char: 'w']
|
||||
- action: [TogglePaneEmbedOrFloating, SwitchToMode: Normal,]
|
||||
key: [Char: 'e']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: RenamePane, PaneNameInput: [0],]
|
||||
key: [Char: 'c']
|
||||
move:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'h', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [MovePane: ,]
|
||||
key: [Char: 'n', Char: "\t",]
|
||||
- action: [MovePane: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [MovePane: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [MovePane: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [MovePane: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tab:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 't', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: 'r']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'h', Left, Up, Char: 'k',]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'l', Right,Down, Char: 'j']
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'n',]
|
||||
- action: [CloseTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'x',]
|
||||
- action: [ToggleActiveSyncTab, SwitchToMode: Normal,]
|
||||
key: [Char: 's']
|
||||
- action: [GoToTab: 1, SwitchToMode: Normal,]
|
||||
key: [ Char: '1',]
|
||||
- action: [GoToTab: 2, SwitchToMode: Normal,]
|
||||
key: [ Char: '2',]
|
||||
- action: [GoToTab: 3, SwitchToMode: Normal,]
|
||||
key: [ Char: '3',]
|
||||
- action: [GoToTab: 4, SwitchToMode: Normal,]
|
||||
key: [ Char: '4',]
|
||||
- action: [GoToTab: 5, SwitchToMode: Normal,]
|
||||
key: [ Char: '5',]
|
||||
- action: [GoToTab: 6, SwitchToMode: Normal,]
|
||||
key: [ Char: '6',]
|
||||
- action: [GoToTab: 7, SwitchToMode: Normal,]
|
||||
key: [ Char: '7',]
|
||||
- action: [GoToTab: 8, SwitchToMode: Normal,]
|
||||
key: [ Char: '8',]
|
||||
- action: [GoToTab: 9, SwitchToMode: Normal,]
|
||||
key: [ Char: '9',]
|
||||
- action: [ToggleTab]
|
||||
key: [ Char: "\t" ]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
scroll:
|
||||
- action: [EditScrollback, SwitchToMode: Normal]
|
||||
key: [Char: 'e']
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
entersearch:
|
||||
- action: [SwitchToMode: Search,]
|
||||
key: [Char: "\n"]
|
||||
- action: [SearchInput: [27], SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 'c', Esc]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
search:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
- action: [Search: Down]
|
||||
key: [Char: 'n']
|
||||
- action: [Search: Up]
|
||||
key: [Char: 'p']
|
||||
- action: [SearchToggleOption: CaseSensitivity]
|
||||
key: [Char: 'c']
|
||||
- action: [SearchToggleOption: Wrap]
|
||||
key: [Char: 'w']
|
||||
- action: [SearchToggleOption: WholeWord]
|
||||
key: [Char: 'o']
|
||||
renametab:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenameTab , SwitchToMode: Tab,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
renamepane:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenamePane , SwitchToMode: Pane,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
session:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tmux:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [ Char: '[']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Write: [2,], SwitchToMode: Normal]
|
||||
key: [Ctrl: 'b']
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: "\"",]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: '%',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'c',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: ',']
|
||||
- action: [GoToPreviousTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'p']
|
||||
- action: [GoToNextTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'n']
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Left,]
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Right,]
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Down,]
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Up,]
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Char: 'h']
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Char: 'l']
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Char: 'j']
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Char: 'k']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Char: 'o']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
plugins:
|
||||
- path: tab-bar
|
||||
tag: tab-bar
|
||||
- path: status-bar
|
||||
tag: status-bar
|
||||
- path: strider
|
||||
tag: strider
|
||||
- path: compact-bar
|
||||
tag: compact-bar
|
||||
|
||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
# eg. when terminal window with an active zellij session is closed
|
||||
# Options:
|
||||
# - detach (Default)
|
||||
# - quit
|
||||
# on_force_close: quit
|
||||
|
||||
# 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
|
||||
|
||||
# Toggle between having pane frames around the panes
|
||||
# Options:
|
||||
# - true (default)
|
||||
# - false
|
||||
#pane_frames: true
|
||||
|
||||
# Choose the theme that is specified in the themes section.
|
||||
# For some examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||
# Default: default
|
||||
#theme: default
|
||||
|
||||
# Choose the mode that zellij uses when starting up.
|
||||
# Default: normal
|
||||
#default_mode: locked
|
||||
|
||||
# Toggle enabling the mouse mode.
|
||||
# On certain configurations, or terminals this could
|
||||
# potentially interfere with copying text.
|
||||
# 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.
|
||||
# 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
|
||||
#copy_on_select: true
|
||||
|
||||
# Path to the default editor to use to edit pane scrollbuffer
|
||||
# scrollback_editor: /usr/bin/nano
|
||||
|
|
@ -0,0 +1,640 @@
|
|||
---
|
||||
# Configuration for zellij.
|
||||
|
||||
# In order to troubleshoot your configuration try using the following command:
|
||||
# `zellij setup --check`
|
||||
# It should show current config locations and features that are enabled.
|
||||
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- unbind: [Ctrl: 'a', Char: "\n"]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [NewPane: ]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right ]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up, ]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
locked:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'g',]
|
||||
resize:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'n', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [Resize: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [Resize: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [Resize: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [Resize: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [Resize: Increase,]
|
||||
key: [Char: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Char: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [Char: '-']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
pane:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'p', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [MoveFocus: Left,]
|
||||
key: [ Char: 'h', Left,]
|
||||
- action: [MoveFocus: Right,]
|
||||
key: [ Char: 'l', Right,]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Char: 'j', Down,]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Char: 'k', Up,]
|
||||
- action: [SwitchFocus,]
|
||||
key: [Char: 'p']
|
||||
- action: [NewPane: , SwitchToMode: Normal,]
|
||||
key: [Char: 'n',]
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: 'r',]
|
||||
- action: [CloseFocus, SwitchToMode: Normal,]
|
||||
key: [Char: 'x',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'f',]
|
||||
- action: [TogglePaneFrames, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [ToggleFloatingPanes, SwitchToMode: Normal,]
|
||||
key: [Char: 'w']
|
||||
- action: [TogglePaneEmbedOrFloating, SwitchToMode: Normal,]
|
||||
key: [Char: 'e']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: RenamePane, PaneNameInput: [0],]
|
||||
key: [Char: 'c']
|
||||
move:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'h', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [Quit]
|
||||
key: [Ctrl: 'q']
|
||||
- action: [MovePane: ,]
|
||||
key: [Char: 'n', Char: "\t",]
|
||||
- action: [MovePane: Left,]
|
||||
key: [Char: 'h', Left,]
|
||||
- action: [MovePane: Down,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [MovePane: Up,]
|
||||
key: [Char: 'k', Up, ]
|
||||
- action: [MovePane: Right,]
|
||||
key: [Char: 'l', Right,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tab:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 't', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: 'r']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [GoToPreviousTab,]
|
||||
key: [ Char: 'h', Left, Up, Char: 'k',]
|
||||
- action: [GoToNextTab,]
|
||||
key: [ Char: 'l', Right,Down, Char: 'j']
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'n',]
|
||||
- action: [CloseTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'x',]
|
||||
- action: [ToggleActiveSyncTab, SwitchToMode: Normal,]
|
||||
key: [Char: 's']
|
||||
- action: [GoToTab: 1, SwitchToMode: Normal,]
|
||||
key: [ Char: '1',]
|
||||
- action: [GoToTab: 2, SwitchToMode: Normal,]
|
||||
key: [ Char: '2',]
|
||||
- action: [GoToTab: 3, SwitchToMode: Normal,]
|
||||
key: [ Char: '3',]
|
||||
- action: [GoToTab: 4, SwitchToMode: Normal,]
|
||||
key: [ Char: '4',]
|
||||
- action: [GoToTab: 5, SwitchToMode: Normal,]
|
||||
key: [ Char: '5',]
|
||||
- action: [GoToTab: 6, SwitchToMode: Normal,]
|
||||
key: [ Char: '6',]
|
||||
- action: [GoToTab: 7, SwitchToMode: Normal,]
|
||||
key: [ Char: '7',]
|
||||
- action: [GoToTab: 8, SwitchToMode: Normal,]
|
||||
key: [ Char: '8',]
|
||||
- action: [GoToTab: 9, SwitchToMode: Normal,]
|
||||
key: [ Char: '9',]
|
||||
- action: [ToggleTab]
|
||||
key: [ Char: "\t" ]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
scroll:
|
||||
- action: [EditScrollback, SwitchToMode: Normal]
|
||||
key: [Char: 'e']
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
# uncomment this and adjust key if using copy_on_select=false
|
||||
# - action: [Copy: ]
|
||||
# key: [ Alt: 'c']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
entersearch:
|
||||
- action: [SwitchToMode: Search,]
|
||||
key: [Char: "\n"]
|
||||
- action: [SearchInput: [27], SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 'c', Esc]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
search:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 's', Char: ' ', Char: "\n", Esc]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Session,]
|
||||
key: [Ctrl: 'o',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [ScrollToBottom, SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'c',]
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [ScrollDown,]
|
||||
key: [Char: 'j', Down,]
|
||||
- action: [ScrollUp,]
|
||||
key: [Char: 'k', Up,]
|
||||
- action: [PageScrollDown,]
|
||||
key: [Ctrl: 'f', PageDown, Right, Char: 'l',]
|
||||
- action: [PageScrollUp,]
|
||||
key: [Ctrl: 'b', PageUp, Left, Char: 'h',]
|
||||
- action: [HalfPageScrollDown,]
|
||||
key: [Char: 'd',]
|
||||
- action: [HalfPageScrollUp,]
|
||||
key: [Char: 'u',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left] # The Alt: Left etc. variants are temporary hacks and will be removed in the future - please do not rely on them!
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [SwitchToMode: EnterSearch, SearchInput: [0],]
|
||||
key: [Char: 's']
|
||||
- action: [Search: Down]
|
||||
key: [Char: 'n']
|
||||
- action: [Search: Up]
|
||||
key: [Char: 'p']
|
||||
- action: [SearchToggleOption: CaseSensitivity]
|
||||
key: [Char: 'c']
|
||||
- action: [SearchToggleOption: Wrap]
|
||||
key: [Char: 'w']
|
||||
- action: [SearchToggleOption: WholeWord]
|
||||
key: [Char: 'o']
|
||||
renametab:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenameTab , SwitchToMode: Tab,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
renamepane:
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Char: "\n", Ctrl: 'c', Esc]
|
||||
- action: [UndoRenamePane , SwitchToMode: Pane,]
|
||||
key: [Esc,]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
session:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tmux,]
|
||||
key: [Ctrl: 'b',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
tmux:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g']
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Move,]
|
||||
key: [Ctrl: 'h',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
- action: [SwitchToMode: Normal,]
|
||||
key: [Ctrl: 'o', Char: "\n", Char: ' ', Esc]
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [Ctrl: 's']
|
||||
- action: [SwitchToMode: Scroll,]
|
||||
key: [ Char: '[']
|
||||
- action: [Quit,]
|
||||
key: [Ctrl: 'q',]
|
||||
- action: [Write: [2,], SwitchToMode: Normal]
|
||||
key: [Ctrl: 'b']
|
||||
- action: [NewPane: Down, SwitchToMode: Normal,]
|
||||
key: [Char: "\"",]
|
||||
- action: [NewPane: Right, SwitchToMode: Normal,]
|
||||
key: [Char: '%',]
|
||||
- action: [ToggleFocusFullscreen, SwitchToMode: Normal,]
|
||||
key: [Char: 'z',]
|
||||
- action: [NewTab: , SwitchToMode: Normal,]
|
||||
key: [ Char: 'c',]
|
||||
- action: [SwitchToMode: RenameTab, TabNameInput: [0],]
|
||||
key: [Char: ',']
|
||||
- action: [GoToPreviousTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'p']
|
||||
- action: [GoToNextTab, SwitchToMode: Normal,]
|
||||
key: [ Char: 'n']
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Left,]
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Right,]
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Down,]
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Up,]
|
||||
- action: [MoveFocus: Left, SwitchToMode: Normal,]
|
||||
key: [ Char: 'h']
|
||||
- action: [MoveFocus: Right, SwitchToMode: Normal,]
|
||||
key: [ Char: 'l']
|
||||
- action: [MoveFocus: Down, SwitchToMode: Normal,]
|
||||
key: [ Char: 'j']
|
||||
- action: [MoveFocus: Up, SwitchToMode: Normal,]
|
||||
key: [ Char: 'k']
|
||||
- action: [NewPane: ,]
|
||||
key: [ Alt: 'n',]
|
||||
- action: [MoveFocusOrTab: Left,]
|
||||
key: [ Alt: 'h', Alt: Left]
|
||||
- action: [MoveFocusOrTab: Right,]
|
||||
key: [ Alt: 'l', Alt: Right]
|
||||
- action: [MoveFocus: Down,]
|
||||
key: [ Alt: 'j', Alt: Down]
|
||||
- action: [MoveFocus: Up,]
|
||||
key: [ Alt: 'k', Alt: Up]
|
||||
- action: [FocusNextPane,]
|
||||
key: [ Char: 'o']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '=']
|
||||
- action: [Resize: Increase,]
|
||||
key: [ Alt: '+']
|
||||
- action: [Resize: Decrease,]
|
||||
key: [ Alt: '-']
|
||||
- action: [Detach,]
|
||||
key: [Char: 'd',]
|
||||
plugins:
|
||||
- path: tab-bar
|
||||
tag: tab-bar
|
||||
- path: status-bar
|
||||
tag: status-bar
|
||||
- path: strider
|
||||
tag: strider
|
||||
- path: compact-bar
|
||||
tag: compact-bar
|
||||
|
||||
# Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
# eg. when terminal window with an active zellij session is closed
|
||||
# Options:
|
||||
# - detach (Default)
|
||||
# - quit
|
||||
# on_force_close: quit
|
||||
|
||||
# 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
|
||||
|
||||
# Toggle between having pane frames around the panes
|
||||
# Options:
|
||||
# - true (default)
|
||||
# - false
|
||||
#pane_frames: true
|
||||
|
||||
# Choose the theme that is specified in the themes section.
|
||||
# For some examples, see: https://github.com/zellij-org/zellij/tree/main/example/themes
|
||||
# Default: default
|
||||
#theme: default
|
||||
|
||||
# Choose the mode that zellij uses when starting up.
|
||||
# Default: normal
|
||||
#default_mode: locked
|
||||
|
||||
# Toggle enabling the mouse mode.
|
||||
# On certain configurations, or terminals this could
|
||||
# potentially interfere with copying text.
|
||||
# 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.
|
||||
# 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
|
||||
#copy_on_select: true
|
||||
|
||||
# Path to the default editor to use to edit pane scrollbuffer
|
||||
# scrollback_editor: /usr/bin/nano
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
---
|
||||
template:
|
||||
direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
borderless: true
|
||||
split_size:
|
||||
Fixed: 1
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:tab-bar"
|
||||
- direction: Vertical
|
||||
body: true
|
||||
- direction: Vertical
|
||||
borderless: true
|
||||
split_size:
|
||||
Fixed: 2
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:status-bar"
|
||||
tabs:
|
||||
- direction: Vertical
|
||||
default_shell: fish
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
|
|
@ -0,0 +1,36 @@
|
|||
---
|
||||
template:
|
||||
direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
borderless: true
|
||||
split_size:
|
||||
Fixed: 1
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:tab-bar"
|
||||
- direction: Vertical
|
||||
body: true
|
||||
- direction: Vertical
|
||||
borderless: true
|
||||
split_size:
|
||||
Fixed: 2
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:status-bar"
|
||||
tabs:
|
||||
- direction: Vertical
|
||||
session:
|
||||
name: foo
|
||||
default_shell: fish
|
||||
keybinds:
|
||||
unbind: true
|
||||
normal:
|
||||
- action: [SwitchToMode: Locked,]
|
||||
key: [Ctrl: 'g',]
|
||||
- action: [SwitchToMode: Pane,]
|
||||
key: [Ctrl: 'p',]
|
||||
- action: [SwitchToMode: Resize,]
|
||||
key: [Ctrl: 'n',]
|
||||
- action: [SwitchToMode: Tab,]
|
||||
key: [Ctrl: 't',]
|
||||
|
|
@ -20,11 +20,5 @@ template:
|
|||
location: "zellij:status-bar"
|
||||
tabs:
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 20
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:strider"
|
||||
- direction: Horizontal
|
||||
session:
|
||||
name: foo
|
||||
|
|
@ -3,14 +3,16 @@ template:
|
|||
direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
borderless: true
|
||||
split_size:
|
||||
Fixed: 1
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:tab-bar"
|
||||
- direction: Horizontal
|
||||
- direction: Vertical
|
||||
body: true
|
||||
- direction: Vertical
|
||||
borderless: true
|
||||
split_size:
|
||||
Fixed: 2
|
||||
run:
|
||||
|
|
@ -18,15 +20,6 @@ template:
|
|||
location: "zellij:status-bar"
|
||||
tabs:
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
session:
|
||||
name: foo
|
||||
attach: false
|
||||
|
|
@ -1,17 +1,10 @@
|
|||
---
|
||||
template:
|
||||
direction: Horizontal
|
||||
parts:
|
||||
- direction: Horizontal
|
||||
body: true
|
||||
|
||||
tabs:
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 50
|
||||
- direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
|
|
@ -19,3 +12,10 @@ tabs:
|
|||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
run:
|
||||
command: {cmd: htop}
|
||||
- direction: Horizontal
|
||||
split_size:
|
||||
Percent: 50
|
||||
run:
|
||||
command: {cmd: htop}
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
---
|
||||
tabs:
|
||||
- direction: Horizontal
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Fixed: 1
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:tab-bar"
|
||||
borderless: true
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Vertical
|
||||
parts:
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
run:
|
||||
command: {cmd: htop}
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Percent: 50
|
||||
run:
|
||||
command: {cmd: htop, args: ["-C", "--tree"]}
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Fixed: 5
|
||||
- direction: Vertical
|
||||
split_size:
|
||||
Fixed: 2
|
||||
run:
|
||||
plugin:
|
||||
location: "zellij:status-bar"
|
||||
borderless: true
|
||||
|
|
@ -0,0 +1,411 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_config_tests.rs
|
||||
assertion_line: 24
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
keybinds clear-defaults=true {
|
||||
normal {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "x" { CloseFocus; SwitchToMode "normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "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; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "h" "Left" { Resize "Left"; }
|
||||
bind "j" "Down" { Resize "Down"; }
|
||||
bind "k" "Up" { Resize "Up"; }
|
||||
bind "l" "Right" { Resize "Right"; }
|
||||
bind "=" { Resize "Increase"; }
|
||||
bind "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
move {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
scroll {
|
||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "d" { Detach; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
bind "n" { Search "Down"; }
|
||||
bind "p" { Search "Up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Enter" { SwitchToMode "search"; }
|
||||
bind "Ctrl c" "Esc" { SearchInput 27; SwitchToMode "scroll"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenameTab {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenamePane {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
tmux {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "[" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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"; TabNameInput 0; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 "o" { FocusNextPane; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
on_force_close "quit"
|
||||
|
||||
// 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"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
pane_frames true
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
theme "default"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// 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.
|
||||
// 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
|
||||
copy_command "pbcopy"
|
||||
|
||||
// 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 true
|
||||
|
||||
// Path to the default editor to use to edit pane scrollbuffer
|
||||
// Default: $EDITOR or $VISUAL
|
||||
//
|
||||
scrollback_editor "/usr/bin/nano"
|
||||
|
||||
// When attaching to an existing session with other users,
|
||||
// should the session be mirrored (true)
|
||||
// or should each user have their own cursor (false)
|
||||
// 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
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,415 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_config_tests.rs
|
||||
assertion_line: 68
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
keybinds clear-defaults=true {
|
||||
normal {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "x" { CloseFocus; SwitchToMode "normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "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; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "h" "Left" { Resize "Left"; }
|
||||
bind "j" "Down" { Resize "Down"; }
|
||||
bind "k" "Up" { Resize "Up"; }
|
||||
bind "l" "Right" { Resize "Right"; }
|
||||
bind "=" { Resize "Increase"; }
|
||||
bind "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
move {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
scroll {
|
||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "d" { Detach; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
bind "n" { Search "Down"; }
|
||||
bind "p" { Search "Up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Enter" { SwitchToMode "search"; }
|
||||
bind "Ctrl c" "Esc" { SearchInput 27; SwitchToMode "scroll"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenameTab {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenamePane {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
tmux {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "[" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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"; TabNameInput 0; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 "o" { FocusNextPane; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
// on_force_close "quit"
|
||||
|
||||
// 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"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// pane_frames true
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
// theme "default"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
// default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// 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.
|
||||
// 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)
|
||||
// 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
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
env {
|
||||
RUST_BACKTRACE "1"
|
||||
bar "baz"
|
||||
foo "bar"
|
||||
}
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,411 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_config_tests.rs
|
||||
assertion_line: 46
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
keybinds {
|
||||
unbind "Ctrl g" "Space"
|
||||
normal {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "x" { CloseFocus; SwitchToMode "normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "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; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "h" "Left" { Resize "Left"; }
|
||||
bind "j" "Down" { Resize "Down"; }
|
||||
bind "k" "Up" { Resize "Up"; }
|
||||
bind "l" "Right" { Resize "Right"; }
|
||||
bind "=" { Resize "Increase"; }
|
||||
bind "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
move {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
scroll {
|
||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "d" { Detach; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
bind "n" { Search "Down"; }
|
||||
bind "p" { Search "Up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Enter" { SwitchToMode "search"; }
|
||||
bind "Ctrl c" "Esc" { SearchInput 27; SwitchToMode "scroll"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenameTab {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenamePane {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
tmux {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "[" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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"; TabNameInput 0; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 "o" { FocusNextPane; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
// on_force_close "quit"
|
||||
|
||||
// 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"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// pane_frames true
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
// theme "default"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
// default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// 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.
|
||||
// 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)
|
||||
// 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
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,411 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_config_tests.rs
|
||||
assertion_line: 35
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
keybinds clear-defaults=true {
|
||||
normal {
|
||||
unbind "Ctrl a" "Enter"
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "x" { CloseFocus; SwitchToMode "normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "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; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "h" "Left" { Resize "Left"; }
|
||||
bind "j" "Down" { Resize "Down"; }
|
||||
bind "k" "Up" { Resize "Up"; }
|
||||
bind "l" "Right" { Resize "Right"; }
|
||||
bind "=" { Resize "Increase"; }
|
||||
bind "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
move {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
scroll {
|
||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "d" { Detach; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
bind "n" { Search "Down"; }
|
||||
bind "p" { Search "Up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Enter" { SwitchToMode "search"; }
|
||||
bind "Ctrl c" "Esc" { SearchInput 27; SwitchToMode "scroll"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenameTab {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenamePane {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
tmux {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "[" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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"; TabNameInput 0; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 "o" { FocusNextPane; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
// on_force_close "quit"
|
||||
|
||||
// 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"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// pane_frames true
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
// theme "default"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
// default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// 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.
|
||||
// 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)
|
||||
// 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
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,451 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_config_tests.rs
|
||||
assertion_line: 90
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
keybinds clear-defaults=true {
|
||||
normal {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "x" { CloseFocus; SwitchToMode "normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "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; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "h" "Left" { Resize "Left"; }
|
||||
bind "j" "Down" { Resize "Down"; }
|
||||
bind "k" "Up" { Resize "Up"; }
|
||||
bind "l" "Right" { Resize "Right"; }
|
||||
bind "=" { Resize "Increase"; }
|
||||
bind "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
move {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
scroll {
|
||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "d" { Detach; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
bind "n" { Search "Down"; }
|
||||
bind "p" { Search "Up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Enter" { SwitchToMode "search"; }
|
||||
bind "Ctrl c" "Esc" { SearchInput 27; SwitchToMode "scroll"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenameTab {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenamePane {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
tmux {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "[" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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"; TabNameInput 0; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 "o" { FocusNextPane; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
// on_force_close "quit"
|
||||
|
||||
// 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"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// pane_frames true
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
// theme "default"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
// default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// 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.
|
||||
// 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)
|
||||
// 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
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
themes {
|
||||
molokai-dark {
|
||||
fg 248 248 240
|
||||
bg 27 29 30
|
||||
black 0 0 0
|
||||
red 255 0 0
|
||||
green 0 140 0
|
||||
yellow 255 255 0
|
||||
blue 102 217 239
|
||||
magenta 174 129 255
|
||||
cyan 0 255 255
|
||||
white 255 255 255
|
||||
orange 253 151 31
|
||||
}
|
||||
nord {
|
||||
fg 216 222 233
|
||||
bg 46 52 64
|
||||
black 59 66 82
|
||||
red 191 97 106
|
||||
green 163 190 140
|
||||
yellow 235 203 139
|
||||
blue 129 161 193
|
||||
magenta 180 142 173
|
||||
cyan 136 192 208
|
||||
white 229 233 240
|
||||
orange 208 135 112
|
||||
}
|
||||
some-eightbit-theme {
|
||||
fg 8
|
||||
bg 0
|
||||
black 10
|
||||
red 2
|
||||
green 3
|
||||
yellow 4
|
||||
blue 5
|
||||
magenta 6
|
||||
cyan 9
|
||||
white 255
|
||||
orange 7
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,416 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_config_tests.rs
|
||||
assertion_line: 79
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
keybinds clear-defaults=true {
|
||||
normal {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "x" { CloseFocus; SwitchToMode "normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "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; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "h" "Left" { Resize "Left"; }
|
||||
bind "j" "Down" { Resize "Down"; }
|
||||
bind "k" "Up" { Resize "Up"; }
|
||||
bind "l" "Right" { Resize "Right"; }
|
||||
bind "=" { Resize "Increase"; }
|
||||
bind "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
move {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
scroll {
|
||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "d" { Detach; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
bind "n" { Search "Down"; }
|
||||
bind "p" { Search "Up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Enter" { SwitchToMode "search"; }
|
||||
bind "Ctrl c" "Esc" { SearchInput 27; SwitchToMode "scroll"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenameTab {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenamePane {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
tmux {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "[" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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"; TabNameInput 0; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 "o" { FocusNextPane; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
// on_force_close "quit"
|
||||
|
||||
// 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"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// pane_frames true
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
// theme "default"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
// default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// 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.
|
||||
// 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)
|
||||
// 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
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
|
||||
ui {
|
||||
pane_frames {
|
||||
rounded_corners true
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,410 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_config_tests.rs
|
||||
assertion_line: 57
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
keybinds {
|
||||
normal clear-defaults=true {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "x" { CloseFocus; SwitchToMode "normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "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; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "h" "Left" { Resize "Left"; }
|
||||
bind "j" "Down" { Resize "Down"; }
|
||||
bind "k" "Up" { Resize "Up"; }
|
||||
bind "l" "Right" { Resize "Right"; }
|
||||
bind "=" { Resize "Increase"; }
|
||||
bind "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
move {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
scroll {
|
||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "d" { Detach; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
bind "n" { Search "Down"; }
|
||||
bind "p" { Search "Up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Enter" { SwitchToMode "search"; }
|
||||
bind "Ctrl c" "Esc" { SearchInput 27; SwitchToMode "scroll"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenameTab {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenamePane {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
tmux {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "[" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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"; TabNameInput 0; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 "o" { FocusNextPane; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
// on_force_close "quit"
|
||||
|
||||
// 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"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// pane_frames true
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
// theme "default"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
// default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// 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.
|
||||
// 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)
|
||||
// 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
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,410 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_config_tests.rs
|
||||
assertion_line: 13
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
keybinds clear-defaults=true {
|
||||
normal {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
locked {
|
||||
bind "Ctrl g" { SwitchToMode "normal"; }
|
||||
}
|
||||
pane {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl p" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "x" { CloseFocus; SwitchToMode "normal"; }
|
||||
bind "f" { ToggleFocusFullscreen; SwitchToMode "normal"; }
|
||||
bind "z" { TogglePaneFrames; SwitchToMode "normal"; }
|
||||
bind "w" { ToggleFloatingPanes; SwitchToMode "normal"; }
|
||||
bind "e" { TogglePaneEmbedOrFloating; SwitchToMode "normal"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "c" { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||
}
|
||||
tab {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl t" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "r" { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "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; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
resize {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "h" "Left" { Resize "Left"; }
|
||||
bind "j" "Down" { Resize "Down"; }
|
||||
bind "k" "Up" { Resize "Up"; }
|
||||
bind "l" "Right" { Resize "Right"; }
|
||||
bind "=" { Resize "Increase"; }
|
||||
bind "+" { Resize "Increase"; }
|
||||
bind "-" { Resize "Decrease"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
move {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl h" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "n" "Tab" { MovePane; }
|
||||
bind "h" "Left" { MovePane "Left"; }
|
||||
bind "j" "Down" { MovePane "Down"; }
|
||||
bind "k" "Up" { MovePane "Up"; }
|
||||
bind "l" "Right" { MovePane "Right"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
scroll {
|
||||
bind "e" { EditScrollback; SwitchToMode "normal"; }
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
}
|
||||
session {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
bind "d" { Detach; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
search {
|
||||
bind "Ctrl s" "Space" "Enter" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl b" { SwitchToMode "tmux"; }
|
||||
bind "Ctrl o" { SwitchToMode "session"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl c" { ScrollToBottom; SwitchToMode "normal"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "s" { SwitchToMode "entersearch"; SearchInput 0; }
|
||||
bind "n" { Search "Down"; }
|
||||
bind "p" { Search "Up"; }
|
||||
bind "c" { SearchToggleOption "CaseSensitivity"; }
|
||||
bind "w" { SearchToggleOption "Wrap"; }
|
||||
bind "o" { SearchToggleOption "WholeWord"; }
|
||||
}
|
||||
entersearch {
|
||||
bind "Enter" { SwitchToMode "search"; }
|
||||
bind "Ctrl c" "Esc" { SearchInput 27; SwitchToMode "scroll"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenameTab {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenameTab; SwitchToMode "tab"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
RenamePane {
|
||||
bind "Enter" "Ctrl c" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Esc" { UndoRenamePane; SwitchToMode "pane"; }
|
||||
bind "Alt n" { NewPane; }
|
||||
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 =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
}
|
||||
tmux {
|
||||
bind "Ctrl g" { SwitchToMode "locked"; }
|
||||
bind "Ctrl n" { SwitchToMode "resize"; }
|
||||
bind "Ctrl p" { SwitchToMode "pane"; }
|
||||
bind "Ctrl h" { SwitchToMode "move"; }
|
||||
bind "Ctrl t" { SwitchToMode "tab"; }
|
||||
bind "Ctrl o" "Enter" "Space" "Esc" { SwitchToMode "normal"; }
|
||||
bind "Ctrl s" { SwitchToMode "scroll"; }
|
||||
bind "[" { SwitchToMode "scroll"; }
|
||||
bind "Ctrl q" { Quit; }
|
||||
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"; TabNameInput 0; }
|
||||
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 "Alt n" { NewPane; }
|
||||
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 "o" { FocusNextPane; }
|
||||
bind "Alt =" { Resize "Increase"; }
|
||||
bind "Alt +" { Resize "Increase"; }
|
||||
bind "Alt -" { Resize "Decrease"; }
|
||||
bind "d" { Detach; }
|
||||
}
|
||||
}
|
||||
|
||||
// Choose what to do when zellij receives SIGTERM, SIGINT, SIGQUIT or SIGHUP
|
||||
// eg. when terminal window with an active zellij session is closed
|
||||
// Options:
|
||||
// - detach (Default)
|
||||
// - quit
|
||||
//
|
||||
// on_force_close "quit"
|
||||
|
||||
// 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"
|
||||
|
||||
// Toggle between having pane frames around the panes
|
||||
// Options:
|
||||
// - true (default)
|
||||
// - false
|
||||
//
|
||||
// pane_frames true
|
||||
|
||||
// Choose the theme that is specified in the themes section.
|
||||
// Default: default
|
||||
//
|
||||
// theme "default"
|
||||
|
||||
// The name of the default layout to load on startup
|
||||
// Default: "default"
|
||||
//
|
||||
// default_layout "compact"
|
||||
|
||||
// Choose the mode that zellij uses when starting up.
|
||||
// Default: normal
|
||||
//
|
||||
// default_mode "locked"
|
||||
|
||||
// Toggle enabling the mouse mode.
|
||||
// On certain configurations, or terminals this could
|
||||
// potentially interfere with copying text.
|
||||
// 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.
|
||||
// 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)
|
||||
// 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
|
||||
//
|
||||
// theme_dir "/path/to/my/theme_dir"
|
||||
|
||||
plugins {
|
||||
tab-bar { path "tab-bar"; }
|
||||
status-bar { path "status-bar"; }
|
||||
strider { path "strider"; }
|
||||
compact-bar { path "compact-bar"; }
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_layout_tests.rs
|
||||
assertion_line: 13
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
layout {
|
||||
pane size=1 borderless=true {
|
||||
plugin location="zellij:tab-bar"
|
||||
}
|
||||
pane
|
||||
pane size=2 borderless=true {
|
||||
plugin location="zellij:status-bar"
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_layout_tests.rs
|
||||
assertion_line: 68
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
layout {
|
||||
default_tab_template {
|
||||
pane size=1 borderless=true {
|
||||
plugin location="zellij:tab-bar"
|
||||
}
|
||||
children
|
||||
pane size=2 borderless=true {
|
||||
plugin location="zellij:status-bar"
|
||||
}
|
||||
}
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
tab
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="50%"
|
||||
pane size="50%" split_direction="Horizontal" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
}
|
||||
tab
|
||||
tab
|
||||
tab
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="20%" {
|
||||
plugin location="zellij:strider"
|
||||
}
|
||||
pane size="80%" split_direction="Horizontal" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
}
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="40%"
|
||||
pane size="60%" split_direction="Horizontal" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
source: zellij-client/src/old_config_converter/./unit/convert_layout_tests.rs
|
||||
assertion_line: 79
|
||||
expression: "format!(\"{}\", kdl_config)"
|
||||
---
|
||||
layout {
|
||||
default_tab_template {
|
||||
pane size=1 borderless=true {
|
||||
plugin location="zellij:tab-bar"
|
||||
}
|
||||
children
|
||||
pane size=2 borderless=true {
|
||||
plugin location="zellij:status-bar"
|
||||
}
|
||||
}
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane command="htop" size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="50%"
|
||||
pane size="50%" split_direction="Horizontal" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
}
|
||||
tab
|
||||
tab
|
||||
tab
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="20%" {
|
||||
plugin location="zellij:strider"
|
||||
}
|
||||
pane size="80%" split_direction="Horizontal" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
}
|
||||
tab split_direction="Vertical" {
|
||||
pane split_direction="Vertical" {
|
||||
pane size="40%"
|
||||
pane size="60%" split_direction="Horizontal" {
|
||||
pane size="50%"
|
||||
pane size="50%"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue