32 lines
679 B
Python
32 lines
679 B
Python
import sys
|
|
|
|
import libtmux
|
|
from pyfzf.pyfzf import FzfPrompt
|
|
|
|
# Get active tmux sessions
|
|
srv = libtmux.Server()
|
|
|
|
fzf = FzfPrompt()
|
|
|
|
mapping = {}
|
|
lm = max(len(s.name) for s in srv.sessions if s.name)
|
|
for session in srv.sessions:
|
|
string = f"({session.name: <{lm}}) {session.session_path}"
|
|
mapping[string] = session
|
|
|
|
selections = fzf.prompt(
|
|
["Select one session you want to switch to"] + list(mapping.keys()),
|
|
"--cycle --header-lines 1 --tmux center",
|
|
)
|
|
|
|
if not selections:
|
|
sys.exit(0)
|
|
|
|
sess_str = selections[0]
|
|
session = mapping[sess_str]
|
|
session.switch_client()
|
|
|
|
session.active_window.active_pane.display_message(
|
|
f"Switched to session: {session.name}"
|
|
)
|