mirror of
https://github.com/elwrcl/copnix.git
synced 2026-10-31 14:28:02 +03:00
zellij
This commit is contained in:
1 parent
ed173a0af2
commit
ec8d0d2432
4 files changed
+82
-7
No files matched your search
@@ -9,7 +9,7 @@
|
|||||||
runtimeInputs = [
|
runtimeInputs = [
|
||||||
config.programs.zellij.finalPackage
|
config.programs.zellij.finalPackage
|
||||||
pkgs.coreutils
|
pkgs.coreutils
|
||||||
pkgs.gnugrep
|
pkgs.gawk
|
||||||
];
|
];
|
||||||
text = ''
|
text = ''
|
||||||
case "''${1:-}" in
|
case "''${1:-}" in
|
||||||
@@ -27,10 +27,15 @@
|
|||||||
session=$(basename "$PWD")
|
session=$(basename "$PWD")
|
||||||
session=$(printf '%s' "$session" | tr -c 'A-Za-z0-9._-' '-')
|
session=$(printf '%s' "$session" | tr -c 'A-Za-z0-9._-' '-')
|
||||||
|
|
||||||
if zellij list-sessions --short 2>/dev/null | grep -qx "$session"; then
|
if zellij list-sessions --no-formatting 2>/dev/null |
|
||||||
|
awk -v s="$session" '$1 == s && $0 !~ /EXITED/ { hit = 1 } END { exit !hit }'; then
|
||||||
exec zellij attach "$session"
|
exec zellij attach "$session"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Drop any dead session squatting on the name so the layout is rebuilt
|
||||||
|
# from scratch rather than resurrected.
|
||||||
|
zellij delete-session "$session" >/dev/null 2>&1 || true
|
||||||
|
|
||||||
exec zellij --session "$session" --new-session-with-layout ide
|
exec zellij --session "$session" --new-session-with-layout ide
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -18,6 +18,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bind "Alt h" { MoveFocusOrTab "Left"; }
|
||||||
|
bind "Alt l" { MoveFocusOrTab "Right"; }
|
||||||
|
bind "Alt k" { MoveFocus "Up"; }
|
||||||
|
bind "Alt j" { MoveFocus "Down"; }
|
||||||
|
|
||||||
// tabs
|
// tabs
|
||||||
bind "Alt t" { NewTab; }
|
bind "Alt t" { NewTab; }
|
||||||
bind "Alt 1" { GoToTab 1; }
|
bind "Alt 1" { GoToTab 1; }
|
||||||
@@ -65,6 +70,7 @@
|
|||||||
// tabs
|
// tabs
|
||||||
bind "c" { NewTab; SwitchToMode "Normal"; }
|
bind "c" { NewTab; SwitchToMode "Normal"; }
|
||||||
bind "," { SwitchToMode "RenameTab"; TabNameInput 0; }
|
bind "," { SwitchToMode "RenameTab"; TabNameInput 0; }
|
||||||
|
bind "." { SwitchToMode "RenamePane"; PaneNameInput 0; }
|
||||||
bind "X" { CloseTab; SwitchToMode "Normal"; }
|
bind "X" { CloseTab; SwitchToMode "Normal"; }
|
||||||
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
|
bind "p" { GoToPreviousTab; SwitchToMode "Normal"; }
|
||||||
bind "b" { BreakPane; SwitchToMode "Normal"; }
|
bind "b" { BreakPane; SwitchToMode "Normal"; }
|
||||||
@@ -81,6 +87,7 @@
|
|||||||
|
|
||||||
// sub-modes
|
// sub-modes
|
||||||
bind "r" { SwitchToMode "Resize"; }
|
bind "r" { SwitchToMode "Resize"; }
|
||||||
|
bind "Ctrl l" { SwitchToMode "Locked"; }
|
||||||
bind "[" { SwitchToMode "Scroll"; }
|
bind "[" { SwitchToMode "Scroll"; }
|
||||||
bind "/" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
bind "/" { SwitchToMode "EnterSearch"; SearchInput 0; }
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,66 @@
|
|||||||
{ ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
flake.homeModules.home-zellij-layout-ide =
|
flake.homeModules.home-zellij-layout-ide =
|
||||||
{ ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
p = config.elars.theme.palette;
|
||||||
|
c = hex: "#${hex}";
|
||||||
|
bg = c p.base00;
|
||||||
|
bgAlt = c p.base01;
|
||||||
|
dim = c p.base03;
|
||||||
|
muted = c p.base04;
|
||||||
|
accent = c p.accent;
|
||||||
|
|
||||||
|
mode =
|
||||||
|
key: background: label:
|
||||||
|
''mode_${key} "#[bg=${background},fg=${bg},bold] ${label} "'';
|
||||||
|
|
||||||
|
modes = lib.concatStringsSep "\n " [
|
||||||
|
(mode "normal" (c p.base0B) "NORMAL")
|
||||||
|
(mode "tmux" (c p.base09) "ZELLIJ")
|
||||||
|
(mode "locked" dim "LOCKED")
|
||||||
|
(mode "resize" (c p.base0D) "RESIZE")
|
||||||
|
(mode "scroll" (c p.base0C) "SCROLL")
|
||||||
|
(mode "search" (c p.base0C) "SEARCH")
|
||||||
|
(mode "entersearch" (c p.base0C) "SEARCH")
|
||||||
|
(mode "renametab" (c p.base0E) "RENAME")
|
||||||
|
(mode "renamepane" (c p.base0E) "RENAME")
|
||||||
|
];
|
||||||
|
in
|
||||||
{
|
{
|
||||||
programs.zellij.layouts.ide = ''
|
programs.zellij.layouts.ide = ''
|
||||||
layout {
|
layout {
|
||||||
default_tab_template {
|
default_tab_template {
|
||||||
pane size=1 borderless=true {
|
pane size=1 borderless=true {
|
||||||
plugin location="zellij:compact-bar"
|
plugin location="file:${pkgs.zellijPlugins.zjstatus}" {
|
||||||
|
format_left "{mode}#[bg=${bgAlt},fg=${accent},bold] {session} #[bg=${bg}] {tabs}"
|
||||||
|
format_right "#[bg=${bg},fg=${dim}]{swap_layout} {datetime}"
|
||||||
|
format_space "#[bg=${bg}]"
|
||||||
|
|
||||||
|
border_enabled "false"
|
||||||
|
hide_frame_for_single_pane "false"
|
||||||
|
|
||||||
|
${modes}
|
||||||
|
|
||||||
|
tab_normal "#[bg=${bgAlt},fg=${muted}] {index} {name} "
|
||||||
|
tab_active "#[bg=${accent},fg=${bg},bold] {index} {name} "
|
||||||
|
|
||||||
|
datetime "#[bg=${bg},fg=${muted},bold] {format} "
|
||||||
|
datetime_format "%H:%M"
|
||||||
|
datetime_timezone "Europe/Istanbul"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
children
|
children
|
||||||
}
|
}
|
||||||
|
|
||||||
tab name="edit" focus=true {
|
tab name="edit" focus=true {
|
||||||
pane split_direction="vertical" {
|
pane split_direction="vertical" {
|
||||||
pane size="20%" name="files" command="hx-sidebar" close_on_exit=true {
|
pane size=40 name="files" command="hx-sidebar" close_on_exit=true {
|
||||||
args "."
|
args "."
|
||||||
}
|
}
|
||||||
pane focus=true command="hx" close_on_exit=true
|
pane focus=true command="hx" close_on_exit=true
|
||||||
@@ -29,6 +75,24 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
swap_tiled_layout name="vertical" {
|
||||||
|
tab {
|
||||||
|
pane split_direction="vertical" { children; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
swap_tiled_layout name="horizontal" {
|
||||||
|
tab {
|
||||||
|
pane split_direction="horizontal" { children; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
swap_tiled_layout name="stacked" {
|
||||||
|
tab {
|
||||||
|
pane stacked=true { children; }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -21,8 +21,7 @@
|
|||||||
stacked_resize = true;
|
stacked_resize = true;
|
||||||
scroll_buffer_size = 50000;
|
scroll_buffer_size = 50000;
|
||||||
scrollback_editor = "hx";
|
scrollback_editor = "hx";
|
||||||
session_serialization = true;
|
session_serialization = false;
|
||||||
serialize_pane_viewport = true;
|
|
||||||
on_force_close = "detach";
|
on_force_close = "detach";
|
||||||
show_startup_tips = false;
|
show_startup_tips = false;
|
||||||
show_release_notes = false;
|
show_release_notes = false;
|
||||||
|
|||||||
Reference in new issue
Block a user