O nome da sessão é armazenado na variável tmux #S
, para acessá-lo em um terminal , você pode fazer
tmux display-message -p "#S"
Se você quiser usá-lo em .tmux.conf
, é simplesmente #S
. Observe que a opção -p
imprimirá a mensagem no stdout, caso contrário, a mensagem será exibida na tag linha de status do tmux .
Se o comando acima for chamado dentro de uma sessão, ele retornará o nome da sessão. Se for chamado fora de qualquer sessão, ainda retornará o nome da última sessão ainda em execução. Não foi possível encontrar um comando tmux para verificar se um deles está dentro de um sessão ou não, então eu tive que vir com este trabalho em torno de:
tmux list-sessions | sed -n '/(attached)/s/:.*//p'
tmux list-sessions
mostra todas as sessões, se uma estiver anexada, mostra (attached)
no final. Com sed suprimimos toda a saída (opção -n
) exceto onde encontramos a palavra-chave (attached)
, nessa linha, cortamos tudo depois de um :
, o que nos deixa com o nome da sessão. Isso funciona para mim dentro e fora de uma sessão, ao contrário de tmux display-message -p "#S"
.
Claro que isso funciona somente se não houver :
e não (attached)
no nome da sessão.
Como comentado por Chris Johnsen , uma maneira de verificar se um está dentro de um A sessão do tmux é ver se sua variável de ambiente está definida:
[[ -n "${TMUX+set}" ]] && tmux display-message -p "#S"