From 59c107f4d4095460f329a3e2b249d191abfeb5ac Mon Sep 17 00:00:00 2001 From: xesc Date: Sat, 19 Apr 2025 23:19:54 +0200 Subject: [PATCH] improve tmux-sessionizer, make posix compatible --- tmux-sessionizer | 35 ++++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/tmux-sessionizer b/tmux-sessionizer index 1fa9190..df614d7 100755 --- a/tmux-sessionizer +++ b/tmux-sessionizer @@ -1,20 +1,33 @@ -#!/usr/bin/bash +#!/usr/bin/sh HOMEDIR=~ which fd > /dev/null if [ 0 = $? ]; then - SEL_DIR=$(fd . ~ --type directory | fzf) # if fd-find is installed + if [ -n "$1" ]; then + SEL_DIR=$(fd "$1" ~ --type directory | fzf) # if fd-find is installed + else + SEL_DIR=$(fd . ~ --type directory | fzf) # if fd-find is installed + fi else - SEL_DIR=$(find ~ -not -path "*/.*" -type d -print 2>/dev/null | fzf) + if [ -n "$1" ]; then + SEL_DIR=$(find ~ -not -path "*/.*" -type d -name "$1" -print 2>/dev/null | fzf) + else + SEL_DIR=$(find ~ -not -path "*/.*" -type d -print 2>/dev/null | fzf) + fi fi + +if [ "$?" -ne 0 ]; then + exit +fi + SEL_NAME=$(basename "$SEL_DIR") new_session_name(){ RET=0 - while [[ $RET -eq 0 ]]; do + while [ $RET -eq 0 ]; do clear read -p "New session name: " SEL_NAME - if [[ -z "$SEL_NAME" ]]; then + if [ -z "$SEL_NAME" ]; then clear else RET=1 @@ -22,19 +35,19 @@ new_session_name(){ done } -if [[ -z "$SEL_DIR" ]] || [[ -n "$SEL_DIR" ]] && [[ "$SEL_DIR" == "$HOMEDIR" ]]; then +if [ -z "$SEL_DIR" ] || [ -n "$SEL_DIR" ] && [ "$SEL_DIR" = "$HOMEDIR" ]; then new_session_name else RET=0 - while [[ $RET -eq 0 ]]; do + while [ $RET -eq 0 ]; do clear read -r -p "Choose a different session-name? [y/n] " USR_CHOICE echo $USR_CHOICE - if [[ "$USR_CHOICE" == "y" ]]; then + if [ "$USR_CHOICE" = "y" ]; then clear new_session_name RET=1 - elif [[ "$USR_CHOICE" == "n" ]]; then + elif [ "$USR_CHOICE" = "n" ] || [ "$USR_CHOICE" = "" ]; then clear RET=1 else @@ -43,10 +56,10 @@ else done fi -SEL_NAME=$(tr "[:lower:]" "[:upper:]" <<< "$SEL_NAME") +SEL_NAME=$(echo "$SEL_NAME" | tr "[:lower:]" "[:upper:]") tmux new-session -d -s "$SEL_NAME" -c "$SEL_DIR" -if [[ -e "$TMUX" ]]; then +if [ -e "$TMUX" ]; then tmux switch-client -t "$SEL_NAME" else tmux attach -t "$SEL_NAME"