Change tmux session manager to sesh

closes #4
This commit is contained in:
Alexander Navarro 2024-05-26 11:16:43 -04:00
parent 0b0dbed47a
commit 1810d3bfbc
7 changed files with 41 additions and 44 deletions

View file

@ -18,3 +18,9 @@
type = "git-repo"
url = "https://github.com/b3nj5m1n/xdg-ninja.git"
refreshPeriod = "168h"
[".local/bin/sesh"]
type = "archive-file"
url = "https://github.com/joshmedeski/sesh/releases/latest/download/sesh_Linux_x86_64.tar.gz"
path = "sesh"
refreshPeriod = "168h"

View file

@ -5,7 +5,7 @@ return {
---@diagnostic disable-next-line: missing-fields
require("auto-session").setup({
log_level = "error",
auto_session_suppress_dirs = { "~/", "~/Downloads", "/", "~/.config/**" },
auto_session_suppress_dirs = { "~/", "~/Downloads", "/", "~/.config/**", "~/.local/share/chezmoi/" },
bypass_session_save_file_types = {
"NeogitStatus",
"Lazy",

View file

@ -0,0 +1,14 @@
[[session]]
name = "Downloads"
path = "~/Downloads"
startup_command = "ls"
[[session]]
name = "Dotfiles"
path = "~/.local/share/chezmoi/"
startup_command = "nvim -c ':Telescope find_files'"
[[session]]
name = "SSH"
path = "~/.ssh/"
startup_command = "nvim config"

View file

@ -15,6 +15,7 @@ bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "wl-copy"
set -sg escape-time 0
set-option -g focus-events on
set-option -g renumber-windows on
set -g detach-on-destroy off # don't exit from tmux when closing a session
# Yazi need this config to show image preview
set -g allow-passthrough on
@ -88,7 +89,6 @@ set -g @plugin 'christoomey/vim-tmux-navigator'
set -g @plugin 'sainnhe/tmux-fzf'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
set -g @plugin '27medkamal/tmux-session-wizard'
## Plugin Config
@ -108,7 +108,9 @@ set -g @resurrect-processes 'vi vim nvim man "~pnpm dev->pnpm dev *"'
TMUX_FZF_LAUNCH_KEY="w"
TMUX_FZF_OPTIONS="-p -w 80% -h 60% -m"
# Tmux Management
set -g @session-wizard 'f'
bind-key "f" run-shell "fzf-tmux-sessions"
bind-key "F" run-shell -b "$HOME/.config/tmux/plugins/tmux-fzf/scripts/session.sh switch"
# bind-key "F" run-shell -b "$HOME/.config/tmux/plugins/tmux-fzf/scripts/window.sh switch"

View file

@ -44,6 +44,8 @@ alias \
pco='podman compose' \
pps="podman ps --format 'table {{.ID}}\t{{.Names}}\t{{.State}}\t{{.Status}}\t{{.RunningFor}}'"
alias tm="fzf-tmux-sessions"
# Misc
alias \
reload='exec $SHELL -l'

View file

@ -1,41 +0,0 @@
SEPARATOR=" │ "
FZF_SEPARATOR="│" # Same character, without whitespaces
format_values() {
values="$1"
shift
divider="$1"
shift
echo -e "$(echo "$values" | column --table --separator $divider --output-separator $SEPARATOR)"
}
tmux_switch_or_create() {
target=$1
[[ -n "$TMUX" ]] && change="switch-client" || change="attach-session"
tmux $change -t "$target" 2>/dev/null || (tmux new-session -d -s $target && tmux $change -t "$target"); return
}
# tm - create new tmux session, or switch to existing one. Works from within tmux too. (@bag-man)
# `tm` will allow you to select your tmux session via fzf.
# `tm irc` will attach to the irc session (if it exists), else it will create it.
tm() {
[[ -n "$TMUX" ]] && change="switch-client" || change="attach-session"
if [ $1 ]; then
tmux $change -t "$1" 2>/dev/null || (tmux new-session -d -s $1 && tmux $change -t "$1"); return
fi
session=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | fzf --exit-0 --select-1) && tmux $change -t "$session" || echo "No sessions found."
}
ta() {
export START_DIRECTORY="$(z -l 2>&1 | fzf --height 40% --nth 2.. --reverse --inline-info +s --tac --query "${*##-* }" | sed 's/^[0-9,.]* *//')"
if [[ -z START_DIRECTORY ]]; then
exit 0
fi
export SESSION_NAME="$(basename $START_DIRECTORY)"
tmuxp load $(fd -e yml . ~/.config/tmuxp | fzf)
}

14
scripts/fzf-tmux-sessions Executable file
View file

@ -0,0 +1,14 @@
#!/usr/bin/env bash
sesh connect "$(
sesh list | fzf-tmux -p 55%,60% \
--no-sort --border-label ' sesh ' --prompt '⚡ ' \
--header ' ^a all ^t tmux ^g configs ^x zoxide ^d tmux kill ^f find' \
--bind 'tab:down,btab:up' \
--bind 'ctrl-a:change-prompt(⚡ )+reload(sesh list)' \
--bind 'ctrl-t:change-prompt(🪟 )+reload(sesh list -t)' \
--bind 'ctrl-g:change-prompt(⚙️ )+reload(sesh list -c)' \
--bind 'ctrl-x:change-prompt(📁 )+reload(sesh list -z)' \
--bind 'ctrl-f:change-prompt(🔎 )+reload(fd -H -d 2 -t d -E .Trash . ~)' \
--bind 'ctrl-d:execute(tmux kill-session -t {})+change-prompt(⚡ )+reload(sesh list)'
)"