
Chi lavora quotidianamente da terminale conosce l’importanza di uno strumento capace di organizzare sessioni, finestre e pannelli senza interrompere le attività in corso. tmxr è un multiplexer per terminale scritto in Rust che riprende il modello di funzionamento di tmux, con l’obiettivo di offrire un’esperienza familiare agli utenti più esperti e una gestione efficiente delle sessioni su diversi sistemi operativi.
Il progetto supporta Linux, macOS e Windows e adotta un’architettura client-server. Un processo server mantiene attive le sessioni, le finestre, i pannelli e i processi associati, mentre uno o più client possono collegarsi per controllare l’ambiente di lavoro. Questo approccio consente di scollegarsi da una sessione e riconnettersi successivamente senza terminare i programmi ancora in esecuzione.
Una caratteristica interessante riguarda l’avvio automatico del server, che viene avviato quando necessario. Gli utenti possono creare sessioni indipendenti, assegnare loro nomi riconoscibili e utilizzare server separati per distinguere attività differenti. L’opzione -L, ad esempio, permette di utilizzare un’etichetta specifica per mantenere ambienti di lavoro isolati, ciascuno con le proprie sessioni e i propri salvataggi.
La compatibilità con il linguaggio dei comandi di tmux rappresenta uno degli elementi centrali di tmxr. Comandi, nomi dei tasti e formati seguono il modello conosciuto dagli utenti del progetto originale. È quindi possibile gestire le sessioni dalla riga di comando, configurare associazioni personalizzate e impartire istruzioni direttamente dal prompt interno richiamabile con la combinazione di tasti dedicata.
Comandi, navigazione e gestione delle sessioni
tmxr utilizza Ctrl+B come combinazione predefinita per il tasto prefisso, mantenendo una scelta familiare per chi proviene da tmux. Dopo averlo premuto, è possibile eseguire diverse operazioni attraverso scorciatoie da tastiera, senza dover ricorrere continuamente ai comandi testuali.
La configurazione predefinita include la navigazione tra i pannelli con i tasti h, j, k e l, secondo le abitudini degli utenti Vim. Le combinazioni Ctrl+H, Ctrl+J, Ctrl+K e Ctrl+L consentono di spostarsi tra i pannelli o di trasferire il controllo al programma in primo piano, quando si tratta di applicazioni supportate come Vim, hjkl e fzf.
Anche la gestione delle finestre privilegia la velocità operativa. È possibile creare nuove finestre e dividere il terminale mantenendo la directory di lavoro corrente, una soluzione pratica per chi compila software, amministra server o gestisce più progetti contemporaneamente. Le finestre possono essere percorse utilizzando Alt+H e Alt+L, mentre i pannelli sincronizzati permettono di inviare gli stessi comandi a più terminali.
Il progetto integra inoltre selettori fuzzy per scegliere rapidamente sessioni, finestre e buffer di copia. La ricerca permette di filtrare gli elementi digitando parte del loro nome, con la possibilità di utilizzare le frecce oppure Ctrl+N e Ctrl+P per spostarsi tra i risultati. Nel selettore delle sessioni sono disponibili anche operazioni per rinominare o terminare una sessione e per crearne una nuova.
Per quanto riguarda la copia del testo, tmxr offre una modalità con navigazione in stile vi, selezione e copia tramite tastiera. È disponibile anche una tabella di associazioni in stile Emacs, attivabile attraverso l’opzione mode-keys emacs. Il supporto al mouse consente di selezionare i pannelli, ridimensionare i bordi e utilizzare la rotella per accedere alla modalità di copia.
La configurazione comprende infine una barra di stato basata sui formati di tmux, con uno stile Tokyo Night inserito nel layout Catppuccin. Le associazioni predefinite possono essere consultate con Ctrl+B seguito da ?, che mostra i comandi disponibili e una breve descrizione delle rispettive funzioni.
Installazione, architettura tecnica e ripristino delle sessioni
Sotto il profilo tecnico, tmxr è distribuito come programma binario scritto in Rust e organizzato in diversi componenti dedicati. La separazione delle responsabilità consente di distinguere il livello di comunicazione, la gestione dei comandi, la configurazione e il funzionamento del terminale.
Il componente tmxr gestisce l’interfaccia a riga di comando e indirizza le richieste verso il client o il server. tmxr-proto definisce il protocollo di comunicazione tra i processi, mentre tmxr-command si occupa del linguaggio dei comandi compatibile con tmux. La configurazione TOML e le associazioni predefinite sono gestite da tmxr-config.
Gli altri moduli si occupano delle funzionalità operative: tmxr-term gestisce il terminale dei singoli pannelli, comprese le pseudo-terminali, la decodifica dei dati e l’ispezione dei processi; tmxr-server controlla sessioni, finestre, pannelli e rendering; tmxr-client gestisce il collegamento al server, l’acquisizione dell’input e la scrittura dell’output sul terminale.
L’implementazione varia in base al sistema operativo. Su Linux e macOS il progetto utilizza pseudo-terminali POSIX e socket Unix. Su Windows si affida invece a ConPTY e a una named pipe con accesso riservato al proprietario. Per questa piattaforma, il pacchetto distribuito deve includere anche conpty.dll e OpenConsole.exe accanto a tmxr.exe, come previsto dall’archivio di rilascio.
Un’altra funzione utile è il salvataggio e il ripristino delle sessioni, ispirato a tmux-resurrect. Le combinazioni Ctrl+B seguite da Ctrl+S e Ctrl+R permettono rispettivamente di salvare e ripristinare lo stato gestito dal programma. È disponibile anche il salvataggio automatico, con il ripristino previsto all’avvio del server.
Per iniziare, è possibile utilizzare tmxr per creare una nuova sessione oppure collegarsi alle sessioni ripristinate. Il comando tmxr new -s lavoro crea una sessione denominata lavoro, mentre tmxr attach -t lavoro consente di collegarsi a quella specifica sessione. tmxr ls mostra le sessioni disponibili e tmxr kill-server termina il server associato.
Come installare tmxr
tmxr è disponibile per Microsoft Windows, Apple Mac OS e Linux con pacchetti deb e rpm da notare anche la versione “mobile” per device Android. Abbiamo testato tmxr su Zorin OS 18.1.
Il supporto a OSC 52, agli appunti locali e al passthrough di tmux amplia le possibilità di utilizzo, includendo la gestione della copia e il passaggio di contenuti come le immagini incorporate, quando il terminale e la configurazione lo consentono. Su Linux, macOS e Windows, tmxr punta quindi a offrire strumenti familiari a chi utilizza tmux, mantenendo un’architettura multipiattaforma e una gestione flessibile delle sessioni di lavoro.