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 | |
| parent | 771624767c3d916e2c77d352e71c07bffca8da59 (diff) | |
pkgs/tmux-open: implement persistent tmux sessions by i3/sway workspace
Diffstat (limited to '')
| -rw-r--r-- | home/desktop/sway.nix | 4 | ||||
| -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 |
4 files changed, 28 insertions, 3 deletions
diff --git a/home/desktop/sway.nix b/home/desktop/sway.nix index 1162e87..b212bdf 100644 --- a/home/desktop/sway.nix +++ b/home/desktop/sway.nix @@ -60,8 +60,6 @@ in mod = config.wayland.windowManager.sway.config.modifier; wofi = config.programs.wofi.package; - inherit (pkgs.local) st tmux-lift; - grimshot = getExe pkgs.sway-contrib.grimshot; in mkOptionDefault { @@ -70,7 +68,7 @@ in "${mod}+d" = "exec --no-startup-id ${getExe wofi} -S run"; "${mod}+i" = "exec busctl --user call rs.wl-gammarelay / rs.wl.gammarelay ToggleInverted"; "${mod}+o" = "exec ${getExe config.programs.swaylock.package} -fF"; - "${mod}+Return" = "exec ${getExe st} -e ${getExe tmux-lift}"; + "${mod}+Return" = "exec ${getExe pkgs.local.st} -e ${getExe pkgs.local.tmux-lift} ${getExe pkgs.local.tmux-open}"; "${mod}+Shift+e" = "input * xkb_layout latam"; "${mod}+Shift+u" = "input * xkb_layout us"; "${mod}+p" = "exec ${grimshot} copy active"; 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" |
