diff options
author | Peat Bakke <peat@peat.org> | 2023-10-19 02:49:38 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-19 11:49:38 +0200 |
commit | 104041a018dc9a3eb74f93815192dba4c9386e1a (patch) | |
tree | df31e5bea119ceac519e632c359fa9702c617ab0 | |
parent | 0da416986aadbaf89dc5596b01f9b42403f4d9fd (diff) | |
download | zsh-104041a018dc9a3eb74f93815192dba4c9386e1a.tar.gz zsh-104041a018dc9a3eb74f93815192dba4c9386e1a.tar.bz2 zsh-104041a018dc9a3eb74f93815192dba4c9386e1a.zip |
feat(tmux): add `tds` alias for directory sessions (#11987)
-rw-r--r-- | plugins/tmux/README.md | 1 | ||||
-rw-r--r-- | plugins/tmux/tmux.plugin.zsh | 13 |
2 files changed, 14 insertions, 0 deletions
diff --git a/plugins/tmux/README.md b/plugins/tmux/README.md index 0f8473daf..b4516ef26 100644 --- a/plugins/tmux/README.md +++ b/plugins/tmux/README.md @@ -25,6 +25,7 @@ The plugin also supports the following: | `tkss` | tmux kill-session -t | Terminate named running tmux session | | `tmux` | `_zsh_tmux_plugin_run` | Start a new tmux session | | `tmuxconf` | `$EDITOR $ZSH_TMUX_CONFIG` | Open .tmux.conf file with an editor | +| `tds` | `_tmux_directory_session` | Creates or attaches to a session for the current path | ## Configuration Variables diff --git a/plugins/tmux/tmux.plugin.zsh b/plugins/tmux/tmux.plugin.zsh index 6ed91c447..72cdd4818 100644 --- a/plugins/tmux/tmux.plugin.zsh +++ b/plugins/tmux/tmux.plugin.zsh @@ -108,6 +108,19 @@ compdef _tmux _zsh_tmux_plugin_run # Alias tmux to our wrapper function. alias tmux=_zsh_tmux_plugin_run +function _tmux_directory_session() { + # current directory without leading path + local dir=${PWD##*/} + # md5 hash for the full working directory path + local md5=$(printf '%s' "$PWD" | md5sum | cut -d ' ' -f 1) + # human friendly unique session name for this directory + local session_name="${dir}-${md5:0:6}" + # create or attach to the session + tmux new -As "$session_name" +} + +alias tds=_tmux_directory_session + # Autostart if not already in tmux and enabled. if [[ -z "$TMUX" && "$ZSH_TMUX_AUTOSTART" == "true" && -z "$INSIDE_EMACS" && -z "$EMACS" && -z "$VIM" && -z "$INTELLIJ_ENVIRONMENT_READER" ]]; then # Actually don't autostart if we already did and multiple autostarts are disabled. |