From cf18c87bff4541c1500bd50df23b1fdb162a9c50 Mon Sep 17 00:00:00 2001 From: Jet Date: Sun, 5 Apr 2026 20:32:08 -0700 Subject: [PATCH] feat: make zellij persist --- home.nix | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/home.nix b/home.nix index 0ec4efa..a334e3b 100644 --- a/home.nix +++ b/home.nix @@ -20,8 +20,8 @@ let kittyZellijStartup = pkgs.makeDesktopItem { name = "kitty-zellij-startup"; desktopName = "Kitty Zellij Startup"; - comment = "Open Kitty, pick a directory, and launch Zellij"; - exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijNewTabZoxide}/bin/zellij-new-tab-zoxide"; + comment = "Open Kitty and attach to the main Zellij session"; + exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijPersistentSession}/bin/zellij-persistent-session"; terminal = false; categories = [ "TerminalEmulator" @@ -224,6 +224,15 @@ let exec ${pkgs.zellij}/bin/zellij -l "$layout_file" ''; }; + zellijPersistentSession = pkgs.writeShellApplication { + name = "zellij-persistent-session"; + runtimeInputs = [ pkgs.zellij ]; + text = '' + set -euo pipefail + + exec ${pkgs.zellij}/bin/zellij attach --create main --force-run-commands + ''; + }; zellijSyncTabName = pkgs.writeShellApplication { name = "zellij-sync-tab-name"; runtimeInputs = [ @@ -480,9 +489,11 @@ in show_startup_tips = false; show_release_notes = false; - attach_to_session = false; - on_force_close = "quit"; - session_serialization = false; + attach_to_session = true; + session_name = "main"; + on_force_close = "detach"; + session_serialization = true; + serialize_pane_viewport = true; ui = { pane_frames = { @@ -699,7 +710,7 @@ in xdg.desktopEntries.kitty = { name = "Kitty"; genericName = "Terminal Emulator"; - exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijNewTabZoxide}/bin/zellij-new-tab-zoxide"; + exec = "${pkgs.kitty}/bin/kitty --start-as=fullscreen ${zellijPersistentSession}/bin/zellij-persistent-session"; icon = "kitty"; type = "Application"; categories = [