Una sessione per progetto
Finestre e pannelli organizzano un lavoro. Le sessioni organizzano la giornata: ognuna è un contesto completo che puoi lasciare in sospeso e riprendere identico, senza ricostruire nulla.
Il contesto, non il file
L'errore comune è tenere una sessione sola con venti finestre dentro. Funziona finché i lavori sono uno; appena diventano tre — il sito del cliente, il server di posta da sistemare, la cosa personale — l'elenco delle finestre diventa illeggibile e passi il tempo a cercare.
Una sessione per progetto risolve il problema alla radice, perché ogni sessione ha il suo elenco di finestre e la sua numerazione. Passi da un contesto all'altro con un tasto e ritrovi tutto come l'avevi lasciato: editor aperto sullo stesso file, server acceso, log che scorrono.
| Comando | Effetto |
|---|---|
| tmux new -s nome | crea una sessione |
| tmux new -s nome -c ~/progetti/sito | la crea partendo da quella cartella |
| tmux ls | elenca tutte le sessioni del server |
| tmux a -t nome | si attacca · basta un prefisso univoco del nome |
| tmux a | senza nome, si attacca all'ultima usata |
| tmux kill-session -t nome | la chiude |
| tmux kill-server | chiude tutto: server, sessioni, processi |
| tmux rename-session -t vecchio nuovo | rinomina |
Passare da una all'altra senza uscire
| Tasti | Effetto |
|---|---|
| prefix s | elenco interattivo delle sessioni, con le finestre in albero e l'anteprima |
| prefix ( · ) | sessione precedente / successiva |
| prefix $ | rinomina la sessione corrente |
| prefix w | come s, ma parte espanso sulle finestre |
| prefix D | scegli quale client staccare, se in più ne sei attaccati |
Una giornata con tre sessioni
$ tmux new -s sito -c ~/progetti/sito-cliente # dentro: prefix c per l'editor, prefix c per il server, prefix c per git prefix d $ tmux new -s posta -c /etc/postfix prefix d $ tmux ls posta: 1 windows (created Sat Sep 12 09:40:11 2026) sito: 3 windows (created Sat Sep 12 09:12:55 2026)
Da qui in poi non si esce più: prefix s, scegli, sei nell'altro contesto. Il nome a sinistra nella status bar ti dice sempre in quale mondo ti trovi — che è esattamente l'informazione che serve prima di lanciare un comando distruttivo.
Sessioni che condividono le finestre
Un caso meno noto ma utilissimo: due sessioni possono guardare le stesse finestre. Serve quando lo stesso lavoro va visto da due schermi di dimensioni diverse, o durante una sessione di lavoro condivisa.
# una seconda sessione agganciata al gruppo della prima $ tmux new-session -t sito -s sito-piccolo # stesse finestre, ma ognuna può guardarne una diversa # e le dimensioni non si vincolano a vicenda
tmux a -d -t sito, dove
-d stacca gli altri client mentre ti attacchi.
Un selettore di progetti in tre righe di shell
Il gesto «apri il progetto X» merita di essere un comando solo. Questa funzione elenca le cartelle dei tuoi progetti, ti fa scegliere con fzf, e apre o riattacca la sessione corrispondente.
tp() {
local dir nome
dir=$(find ~/progetti ~/lavoro -mindepth 1 -maxdepth 1 -type d | fzf) || return
nome=$(basename "$dir" | tr . _) # i punti nei nomi danno noia
tmux new -A -s "$nome" -c "$dir"
}
tr . _ non è pignoleria: tmux usa il punto per separare finestra e
pannello negli indirizzi (lezione 7), quindi un nome come
sito.it crea confusione. Stessa cosa per i due punti.
La versione che funziona anche da dentro tmux
Se sei già dentro una sessione, tmux new si rifiuta di annidarsi. La
risposta giusta non è uscire, è cambiare client:
tp() {
local dir nome
dir=$(find ~/progetti -mindepth 1 -maxdepth 1 -type d | fzf) || return
nome=$(basename "$dir" | tr . _)
tmux has-session -t "=$nome" 2>/dev/null \
|| tmux new-session -ds "$nome" -c "$dir"
if [ -z "$TMUX" ]; then
tmux attach -t "=$nome" # da fuori: attacca
else
tmux switch-client -t "=$nome" # da dentro: cambia
fi
}= davanti al nome dice a tmux di pretendere
la corrispondenza esatta invece del prefisso. Senza,
has-session -t sito trova anche sito-vecchio e la
funzione ti porta nella sessione sbagliata. È il genere di dettaglio che si scopre
solo dopo averci perso venti minuti.