Sono stato un grande utente di Screen per molto tempo, ma uso una versione che ho modificato nel 2002. Principalmente perché volevo essere in grado di far corrispondere l'ordine di navigazione "prossimo / precedente" della finestra all'ordine in cui nuovo sono state create windows, in modo simile a un window manager per la piastrellatura come i3 o Ion . Il comportamento standard dello schermo è per "successivo" e "precedente" in base al numero della finestra, quindi di solito una "nuova" finestra (che cattura il numero più piccolo disponibile) si troverà altrove rispetto alla finestra "successiva" - confondendo se non si " ricordo i numeri. Da allora il mio comportamento preferito è stato implementato in Tmux come flag per il comando new-window nel 2010 e l' opzione renumber-windows nel 2012. La mia patch per lo schermo, che ho cercato di rendere il più accettabile possibile, comprese le aggiunte alla documentazione e così via, non ha generato alcuna discussione sull'elenco dello schermo nel luglio 2002 (quindi "screen@informatik.uni-erlangen.de", non posso trova archivi). In realtà non è stato nemmeno riconosciuto, anche quando l'ho inviato di nuovo un anno dopo.
Dal 2002 ho "riordinato" la mia patch un paio di volte per applicarla alle versioni più recenti di Screen. Tuttavia, quando sono arrivato alla versione 4.3 (2015) ho notato una modifica non documentata che ha interrotto uno dei miei usi dello schermo - vale a dire che "roba" ora interpola le variabili di ambiente . Non avevo bisogno di quella funzione e non riuscivo a capire come sfuggire facilmente all'argomento "roba" (in modo da poter inviare testo contenente segni di dollaro), quindi ho continuato a utilizzare la versione 4.0 (dal 2004).
Uso le "cose" di Screen ("send-keys" in Tmux) in una funzione Emacs che invia il contenuto della regione corrente di Emacs a un numero di finestra specifico. In questo modo, quando scrivo codice in un linguaggio di scripting, apro un interprete, conferisco alla finestra dell'interprete un numero speciale e quindi posso inviare righe di codice dalla mia finestra dell'editor direttamente alla finestra dell'interprete usando questo binding Emacs. È confuso, ma mi piace meglio della soluzione pure-Emacs , poiché posso anche interagire con l'interprete nella sua finestra su schermo usando i tasti standard. È un po 'come un IDE della GUI, ma non devo usare il mouse o fissare un cursore lampeggiante.
Un'altra caratteristica che ho implementato nella mia patch è la possibilità di "contrassegnare" una finestra e quindi di riposizionare la finestra contrassegnata in modo che sia "successiva" dopo quella corrente. Per me questo è un modo molto più naturale di riordinare le finestre che rinumerare; è come il paradigma copia / incolla o "trascina selezione". (Di recente ho capito come fare anche in i3 .)
Dovrebbe essere possibile fare la stessa cosa in Tmux, ad esempio dal 2015 esiste una possibilità per "contrassegnare" un riquadro. O forse una soluzione più elementare potrebbe essere elaborata con script shell con stato. Ho implementato un breve script e combinazioni di tasti per provare il metodo "riquadro contrassegnato", e ha funzionato alcune volte ma poi Tmux si è bloccato con "[server perso]". Poi ho trovato Tmux in crash anche senza il mio tentativo di fare qualcosa di complicato. Apparentemente si è verificato un arresto anomalo per alcuni utenti da almeno alcuni anni . A volte il server si arresta in modo anomalo, a volte inizia a utilizzare il 100% della CPU e non risponde. Non ho mai visto Screen fare uno di questi.
In teoria, Tmux è superiore allo schermo in diversi modi. Ha una scriptabilità molto migliore, il che significa che puoi fare cose come interrogare l'elenco delle finestre nella sessione corrente dalla riga di comando, il che è impossibile con Screen. Ad esempio, nel 2015 Screen ha aggiunto un comando per "ordinare le finestre per titolo" . Non sono sicuro quando sarebbe utile un comando così specializzato, ma questa e altre varianti pratiche (ad esempio, ordinare le finestre in base all'utilizzo della CPU) potrebbero essere eseguite relativamente facilmente da uno script di shell in Tmux. A me sembrerebbe difficile fare qualcosa di così creativo in Screen, almeno senza modificare il codice C.
Come menzionato da altri poster, Tmux ha un modello a server singolo che vedo come il principale svantaggio, in particolare quando il server si arresta in modo anomalo. È possibile aggirare il problema specificando un socket separato per ogni "sessione". Preferisco ancora l'impostazione predefinita di un server per sessione di Screen, che sembra leggermente più elegante.
Lavorare con il codice dello schermo, nel 2002, è stato educativo e divertente per me. Stranamente, nonostante tutte le sue funzionalità aggiuntive, Tmux ha circa il 25% in meno di righe di codice rispetto a Screen (30k contro 40k). Ho notato che Tmux utilizza molte strutture di dati ad albero ed elenco, che sono state leggermente difficili da capire. Lo schermo sembrava preferire le matrici.
A quanto ho capito, poiché l'interfaccia del terminale Unix è così stabile, non è necessario che il codice Screen o Tmux si adatti alle modifiche del sistema operativo sottostante. Questi programmi in realtà non hanno aggiornamenti di sicurezza come browser Web o server Web o persino la shell. Non ho notato problemi nell'esecuzione della mia versione personalizzata di Screen, ultimo aggiornamento nel 2004 (tranne per la necessità di aggiungere alcuni file di configurazione per impedire a Systemd di eliminare il socket; questi file fanno generalmente parte del pacchetto di distribuzione). Forse potrei solo aggirare i problemi che ho riscontrato in Tmux eseguendo una versione di Tmux da prima che iniziasse a bloccarsi. Ovviamente, se un numero sufficiente di utenti lo fa, non sarà molto buono per i nuovi utenti, dal momento che significa che un minor numero di esperti cercherà bug nelle ultime versioni ufficiali di questi programmi. Tuttavia, è difficile motivarmi a passare a un prodotto che è instabile per me (ultimo Tmux) o che manca di alcune funzionalità che desidero (schermo standard).
So che questo non fornisce una risposta facile alla domanda del PO, ma spero che la mia prospettiva sia stata utile.