Yo dawg, I heard you like terminals...
... so we've put a terminal in your terminal...
Jakiś czas temu kolega webnull pisał o programie GNU Screen. Omówił go pod kątem uruchamiania trwałych (nie mam pomysłu na ładniejsze tłumaczenie "persistent", a tylko to słowo przychodzi mi do głowy) procesów na serwerach. Ja chciałbym się mu przyjrzeć z punktu widzenia codziennego użytkowania komputera. Właściwie to nie tyle Screenowi, co ogólnie multiplekserom terminala, a zwłaszcza programowi tmux, bo obecnie z niego korzystam. Ludzie z alergią na terminal mogą przestać czytać w tym miejscu, bo dalej nie będzie dla nich nic ciekawego.
Na samej klawiszologii nie będę się skupiał, gdyż mam już wszystko tak poustawiane, że nie pamiętam domyślnych przypisań.
Zastosowania
1) Manager okien
Jest to mój główny powód do korzystania z tmuksa. Dzięki niemu mogę mieć uruchomione wiele programów w jednym terminalu (przez terminal rozumiem okno, nie shell). W najprostszym przypadku mogę mieć otwarte jedno okno naraz, ale nic nie stoi na przeszkodzie, by zrobić tzw. split, czyli kilka okien obok siebie. Jest bardzo wygodne np. przy programowaniu - w splicie na górze ekranu (zajmującym jakieś 75% wysokości) mam vima, a na dole sobie kompiluję*. Wielu pewnie już ma pomysł na inne zastosowanie splitów. *) Wiem, że mogę kompilować z poziomu vima, ale czasem tak mi jest wygodniej.
Oto przykład z trzema splitami - ncmpcpp, vim i htop:
Jest nawet specjalny program napisany jako manager okien w terminalu - dvtm. Jest to multiplekser, który został pozbawiony niemal wszystkich funkcji poza robieniem splitów. Używa się go bardzo podobnie jak managera okien awesome, który postaram się w swoim czasie omówić.
2) Sesje współdzielone
Bardzo praktyczną opcją jest możliwość oglądania jednej powłoki przez wiele osób - wystarczy się podłączyć komendą 'tmux attach' lub 'screen -x' (zależnie od używanego programu). Sam to wykorzystuję gdy komuś coś konfiguruję (lub na odwrót). Dobrze jest widzieć co robi druga osoba - można zawsze się czegoś nauczyć. Poza tym, działa to też jako prowizoryczny chat gdy trzeba się na szybko porozumieć. ;)
3) Plan B
Przytoczę przykład z życia wzięty. Od kilku tygodni mój system bardzo nie lubi gdy wyciągam pendrive i często wtedy crashuje Xy. Co się dzieje wtedy z tym, co robiłem, chyba mówić nie muszę. Dobrym pomysłem jest włączanie wszystkiego wewnątrz tmuksa. Wykorzystuję tutaj cechę opisaną przez webnulla. Po restarcie Xów mogę się zwyczajnie podłączyć do sesji i kontynuować pracę. Podejrzewam, że ten mały trik może nam wydłużyć życie nawet o kilka lat - wystarczy pomyśleć ile mniej się stresujemy. :D
Podsumowanie
Podejrzewam, że znalazłoby się jeszcze wiele zastosowań, o których teraz nie pomyślałem. Wszystkie powyższe rzeczy można z mniejszym lub większym wysiłkiem zrobić również w Screenie. Jeśli się nie mylę, oficjalnie nie wspiera on pionowych splitów, a one same działają na nieco innej zasadzie, ale poza tym ma podobne możliwości. Zachęcam do eksperymentowania we własnym zakresie.
Na zakończenie wymienię programy tego typu warte wspomnienia: GNU Screen: Dziadek muksów terminala. Zdaje mi się, że nie jest już rozwijany, ale jest dość dojrzałym programem. tmux: Można go określić następcą Screena. Jeśli kogoś to obchodzi, jest na licencji BSD (wszyscy to zawsze podkreślają, to nie będę się odcinał xD). Ma wiele ulepszeń względem Screena, ale brakuje mu też paru opcji (hardcopy? log?). Mam złe doświadczenia z wersjami wyższymi niż 1.1, ale nie używałem 1.4, więc może poprawili. dvtm: Mux skupiający się na splitach. Warto zobaczyć, ale nic specjalnego. Byobu: Tak naprawdę jest to prekonfigurowany Screen. Warto zobaczyć do czego jest zdolny, ale proponuję własnoręcznie go skonfigurować.