add zellij session toggle feature

This commit is contained in:
Noah Masur
2025-07-27 10:09:35 -04:00
parent 57303d61e9
commit 4755a27089

View File

@ -7,6 +7,15 @@
let let
cfg = config.nmasur.presets.programs.zellij; cfg = config.nmasur.presets.programs.zellij;
zellij-switch-to-last = pkgs.writeShellScriptBin "zellij-switch-to-last" ''
TARGET_SESSION=$(cat ~/.local/state/zellij-last-session)
if [ -z "$TARGET_SESSION" ]; then
return 1
fi
echo "$ZELLIJ_SESSION_NAME" > ~/.local/state/zellij-last-session
zellij pipe --plugin file:$(which zellij-switch.wasm) -- "--session $TARGET_SESSION"
'';
in in
{ {
@ -31,6 +40,7 @@ in
if test "$TARGET_DIR" = $(pwd) if test "$TARGET_DIR" = $(pwd)
return 1 return 1
end end
echo "$ZELLIJ_SESSION_NAME" > ~/.local/state/zellij-last-session
zellij pipe --plugin file:$(which zellij-switch.wasm) -- "--cwd $TARGET_DIR --layout default --session $(basename $TARGET_DIR)" zellij pipe --plugin file:$(which zellij-switch.wasm) -- "--cwd $TARGET_DIR --layout default --session $(basename $TARGET_DIR)"
''; '';
}; };
@ -69,13 +79,13 @@ in
programs.zellij = { programs.zellij = {
enable = true; enable = true;
enableBashIntegration = true;
enableFishIntegration = true;
enableZshIntegration = true;
# Not yet available in unstable # Auto start on shell init
# attachExistingSession = true; enableBashIntegration = false;
# exitShellOnExit = true; enableFishIntegration = false;
enableZshIntegration = false;
attachExistingSession = false;
exitShellOnExit = false;
settings = { settings = {
default_mode = "locked"; default_mode = "locked";
@ -109,6 +119,14 @@ in
}; };
}; };
shared = { shared = {
"bind \"Alt Shift s\"" = {
Run = {
_args = [
(lib.getExe zellij-switch-to-last)
];
close_on_exit = true;
};
};
"bind \"Alt Shift p\"" = { "bind \"Alt Shift p\"" = {
Run = { Run = {
_args = [ _args = [