diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-12-11 01:24:34 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-12-11 01:24:34 -0600 |
| commit | 23aacc7e231b5f73745a6ef72abbcdecf193790d (patch) | |
| tree | e5b64243d61b95c186ffe9946d19e0211064d407 /pkgs | |
| parent | 771624767c3d916e2c77d352e71c07bffca8da59 (diff) | |
pkgs/tmux-open: implement persistent tmux sessions by i3/sway workspace
Diffstat (limited to 'pkgs')
| -rw-r--r-- | pkgs/default.nix | 1 | ||||
| -rw-r--r-- | pkgs/tmux-open/default.nix | 11 | ||||
| -rw-r--r-- | pkgs/tmux-open/tmux-open.sh | 15 |
3 files changed, 27 insertions, 0 deletions
diff --git a/pkgs/default.nix b/pkgs/default.nix index 36dc309..4de6906 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -18,6 +18,7 @@ in scripts = callPackage ./scripts { }; simple-scalar = callPackage ./simple-scalar { }; tmux-lift = callPackage ./tmux-lift { }; + tmux-open = callPackage ./tmux-open { }; tmux-pass = callPackage ./tmux-pass.nix { }; st = prev.st.override { diff --git a/pkgs/tmux-open/default.nix b/pkgs/tmux-open/default.nix new file mode 100644 index 0000000..e2c799c --- /dev/null +++ b/pkgs/tmux-open/default.nix @@ -0,0 +1,11 @@ +{ jq +, substituteAll +, sway +, tmux +, writeShellScriptBin +, ... +}: +writeShellScriptBin "tmux-open" (builtins.readFile (substituteAll { + src = ./tmux-open.sh; + env = { inherit jq sway tmux; }; +})) diff --git a/pkgs/tmux-open/tmux-open.sh b/pkgs/tmux-open/tmux-open.sh new file mode 100644 index 0000000..c6537b7 --- /dev/null +++ b/pkgs/tmux-open/tmux-open.sh @@ -0,0 +1,15 @@ +set -o errexit +set -o nounset +set -o pipefail + +workspace="$( \ + @sway@/bin/swaymsg -t get_workspaces \ + | @jq@/bin/jq '.[] | select(.focused==true).name' \ + | cut -d"\"" -f2)" + +session="ws$workspace" +if @tmux@/bin/tmux has-session -t "$session" 2>/dev/null && [ -n "$(@tmux@/bin/tmux list-clients -t "$session")" ]; then + session="$session-$$" +fi + +exec @tmux@/bin/tmux new-session -A -s "$session" -e "SWAYSOCK=$SWAYSOCK" -e "DISPLAY=$DISPLAY" |
