From 02d9e30ce77eb35117797640fda6b377a5c1a990 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Fri, 27 Oct 2023 09:00:02 +0200 Subject: [PATCH] feat(tmux): add tmux-new script --- modules/programs/hyprland/_config.nix | 2 +- modules/programs/tmux/default.nix | 20 +++++++++++++++---- .../tmux/tmux-sessionizer/script.fish | 6 +----- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/modules/programs/hyprland/_config.nix b/modules/programs/hyprland/_config.nix index 8c09f4b..cbeabbf 100644 --- a/modules/programs/hyprland/_config.nix +++ b/modules/programs/hyprland/_config.nix @@ -155,7 +155,7 @@ in bind = $mainMod , M , exec , hyprctl keyword general:layout master bind = $mainMod , R , exec , rofi -show combi bind = $mainMod , RETURN , exec , kitty - bind = $mainMod SHIFT , RETURN , exec , kitty -- tmux new -A -s home + bind = $mainMod SHIFT , RETURN , exec , kitty -- tmux new "ts || tn home ~" # XF86 keys binde = , XF86AudioLowerVolume , exec , pamixer -d 5 diff --git a/modules/programs/tmux/default.nix b/modules/programs/tmux/default.nix index 67a4d5f..8df5809 100644 --- a/modules/programs/tmux/default.nix +++ b/modules/programs/tmux/default.nix @@ -7,8 +7,7 @@ let tmux-switch = pkgs.writeShellApplication { name = "tmux-switch"; runtimeInputs = with pkgs; [ tmux ]; - text = '' - #!/usr/bin/env bash + text = /* bash */ '' if [[ -z ''${TMUX+x} ]]; then tmux attach -t "$1" else @@ -19,7 +18,7 @@ let tmux-sessionizer = pkgs.writeFishApplication { name = "ts"; - runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd tmux-switch gawk ]; + runtimeInputs = with pkgs; [ tmux findutils coreutils procps fd tmux-new gawk ]; text = readFile ./tmux-sessionizer/script.fish; completions = readFile ./tmux-sessionizer/completions.fish; }; @@ -31,6 +30,17 @@ let completions = readFile ./tmux-attach/completions.fish; }; + tmux-new = pkgs.writeFishApplication { + name = "tn"; + runtimeInputs = with pkgs; [ tmux ]; + text = /* fish */ '' + if ! tmux has-session -t $argv[1] 2> /dev/null + tmux new-session -ds $argv[1] -c $argv[2] + end + + tmux-switch $argv[1] + ''; + }; in { options.my.programs.tmux = { @@ -60,6 +70,8 @@ in home-manager.users.moritz.home.packages = [ tmux-sessionizer tmux-attach + tmux-switch + tmux-new ]; home-manager.users.moritz.programs = { tmux = { @@ -97,7 +109,7 @@ in if ! fish_is_root_user && test "$TERM_PROGRAM" != 'vscode' && ${insideVariableMissing} if test -z $tmux_autostarted set -x tmux_autostarted true - tmux new -A -s home + tn home ~ end end ''; diff --git a/modules/programs/tmux/tmux-sessionizer/script.fish b/modules/programs/tmux/tmux-sessionizer/script.fish index a5e957b..b9501a5 100755 --- a/modules/programs/tmux/tmux-sessionizer/script.fish +++ b/modules/programs/tmux/tmux-sessionizer/script.fish @@ -13,8 +13,4 @@ if not test -n "$selected_name" exit 1 end -if ! tmux has-session -t $selected_name 2> /dev/null - tmux new-session -ds $selected_name -c $selected -end - -tmux-switch $selected_name +tn "$selected_name" "$selected"