From 9d2915895be0ea4aa8428cd454090b3c080e4059 Mon Sep 17 00:00:00 2001 From: thek4n Date: Sat, 25 Jan 2025 01:50:37 +0300 Subject: [PATCH] tmux start session from dir --- TARGETS.sh | 2 +- home/user/.config/tmux/mappings.conf | 1 + home/user/.local/bin/tmux_start_projects.sh | 35 +++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100755 home/user/.local/bin/tmux_start_projects.sh diff --git a/TARGETS.sh b/TARGETS.sh index f2e64a4..8fa69eb 100644 --- a/TARGETS.sh +++ b/TARGETS.sh @@ -1,7 +1,7 @@ readonly TARGETS="\ colors:.config/terminal-colors.d less:.lesskey .infokey -tmux:.config/tmux .tmux .config/systemd/user/tmux.service .local/bin/tmux_start_session.sh .local/bin/tmux_list_sessions.sh .local/bin/tmux_attach_session.sh .local/bin/tmux_kill_sessions.sh +tmux:.config/tmux .tmux .config/systemd/user/tmux.service .local/bin/tmux_start_session.sh .local/bin/tmux_list_sessions.sh .local/bin/tmux_attach_session.sh .local/bin/tmux_kill_sessions.sh .local/bin/tmux_start_projects.sh t: note: zsh:.config/zsh .zshenv .inputrc %colors diff --git a/home/user/.config/tmux/mappings.conf b/home/user/.config/tmux/mappings.conf index a1f55ab..0d0dc14 100644 --- a/home/user/.config/tmux/mappings.conf +++ b/home/user/.config/tmux/mappings.conf @@ -207,4 +207,5 @@ bind -T copy-mode-vi WheelDownPane select-pane \; send-keys -X -N 2 scroll-down # Session managment bind a display-popup -EE -w 80% -h 80% -B '~/.local/bin/tmux_attach_session.sh' bind s display-popup -EE -w 80% -h 80% -B '~/.local/bin/tmux_start_session.sh' +bind S display-popup -EE -w 40% -h 80% -B '~/.local/bin/tmux_start_projects.sh' bind k display-popup -EE -w 80% -h 80% -B '~/.local/bin/tmux_kill_sessions.sh' diff --git a/home/user/.local/bin/tmux_start_projects.sh b/home/user/.local/bin/tmux_start_projects.sh new file mode 100755 index 0000000..1282ddb --- /dev/null +++ b/home/user/.local/bin/tmux_start_projects.sh @@ -0,0 +1,35 @@ +#!/bin/sh + + +export FZF_DEFAULT_OPTS="\ +${FZF_DEFAULT_OPTS} +--no-multi +--marker='' +--border=rounded +--border-label-pos=bottom +--border-label=' Start session ' +--color='border:grey,label:grey' +" + + +project_dir="$(find "${HOME}" -maxdepth 3 -type d -not -path '*/.*' | sed "s%^${HOME}%~%" | fzf | sed "s%^~%${HOME}%")" +readonly project_dir + + +if [ -z "${project_dir}" ]; then + exit 0 +fi + +if [ ! -d "${project_dir}" ]; then + printf 'Directory "%s" not found' "${project_dir}" >&2 + exit 1 +fi + + +session="$(basename "${project_dir}")" + +if ! tmux has-session -t "${session}" 2>/dev/null; then + tmux new-session -d -n 1 -c "${project_dir}" -s "$(basename "${project_dir}")" +fi + +tmux switch-client -t "${session}"