Po co pulpit po SSH.
Środowisko graficzne na zdalnym serwerze brzmi jak rozwiązanie w poszukiwaniu problemu. Oto szczery argument za nim — razem z przypadkami, w których lepiej zamknąć tę stronę i zostać przy swoim terminalu.
„To wszystko już robię przez ssh i vima"
Robisz. Absolutnie każda rzecz z tej strony da się zrobić sesją SSH, powłoką i edytorem, który już masz w palcach. Jeśli administrujesz jednym serwerem, swobodnie posługujesz się vimem, a twoja praca mieści się w terminalu — to nie jest dla ciebie i wolelibyśmy, żebyś został przy swoim.
Warstwa graficzna nie powstała dlatego, że terminal jest niewystarczający. Powstała dlatego, że terminal jest interfejsem sekwencyjnym, a niektóre zadania sekwencyjne nie są. Pilnować transferu, czytając przy tym log i jednocześnie poprawiając plik konfiguracyjny — to trzy okna na dowolnym pulpicie, a w terminalu trzy panele tmux i sporo dyscypliny.
Gdzie warstwa graficzna naprawdę zarabia na siebie
Cztery sytuacje, zaczynając od tych, o których słyszymy najczęściej.
- Przenosić pliki i to widzieć. Kopiowanie katalogu między dwoma miejscami przez scp daje ci migający kursor i nadzieję. Eksplorator robi to z kolejką zadań, procentem na żywo dla każdego transferu i zmianą nazwy zamiast cichego nadpisania, gdy w miejscu docelowym już coś się tak nazywa. Przy katalogu 4 GB na wolnym łączu „czy to jeszcze idzie?" to całkiem realne pytanie.
- Czytać kod, którego sam nie pisałeś. Poprawianie znanego pliku to zadanie dla vima. Zrozumienie obcej bazy kodu — skakanie między plikami, pójście za include'em, szukanie po całym drzewie — to zadanie dla drzewa plików i kart. To właśnie daje edytor Monaco na zdalnym systemie plików, bez pobierania czegokolwiek lokalnie.
- Wylądować na serwerze, którego nigdy nie widziałeś. To najmocniejszy argument. Termal wykrywa, co na tej maszynie działa — Plesk, cPanel, zwykły nginx czy Apache — wypisuje serwowane strony wraz z wersją PHP, której każda naprawdę używa, pokazuje działające usługi i kontenery oraz znajduje pliki logów. Dojście do tego samego obrazu ręcznie to kilkanaście poleceń i wiedza, gdzie która dystrybucja co chowa.
- Testować z pozycji sieciowej samego serwera. Wewnętrzną trasę, która odpowiada na serwerze i nigdzie indziej, niewygodnie się bada z terminala. Klient HTTP uruchamia curlna serwerze i rozkłada nagłówki oraz treść. Przeglądarka idzie dalej: domyślnie chodzi do sieci z twojego komputera, ale wyjście możesz przełączyć na serwer — ruch idzie wtedy tunelem SOCKS5 zestawionym na połączeniu SSH, które już masz, a plakietka na pasku narzędzi mówi, w którym z dwóch trybów jesteś. Z narzędziami dla deweloperów zadokowanymi przy każdej karcie strona dostępna tylko od środka staje się czymś, na co patrzysz, a nie czymś, czego się domyślasz.
I to wszystko przez jedno połączenie
To część istotna architektonicznie i powód, dla którego ten pulpit nie jest tylko skorupą nad stosem wywołań SSH.
Termal OS trzyma pulę wielokrotnie używanych połączeń SSH — po jednym na serwer, z keepalive, i wszystko idzie po niej: metryki, eksplorator plików, terminal, edytor, podgląd logów. Otwarcie menedżera plików nie otwiera drugiej sesji. Nie ma dodatkowego portu, agenta, drugiego uwierzytelnienia ani niczego zainstalowanego na maszynie. Z punktu widzenia serwera jesteś pojedynczym logowaniem SSH, które robi zwyczajne rzeczy.
To samo ograniczenie sprawia, że pulpit działa na hostingu, gdzie nie masz roota i nie wolno ci niczego instalować — hosting współdzielony, hosting zarządzany, maszyna klienta. Graficzny panel administracyjny, który potrzebowałby demona, byłby tam bezużyteczny.
Co naprawdę jest w tym pulpicie
Menedżer okien z paskiem zadań, menu start i ikonami na pulpicie oraz 23 aplikacje. Te, które wykonują robotę:
- Eksplorator — eksplorator SFTP: kopiowanie, przenoszenie, wysyłanie, pobranie katalogu jako archiwum, uprawnienia, przeciąganie i upuszczanie, kolejka transferów z postępem.
- Terminal — prawdziwa powłoka PTY, a nie okienko do wrzucania poleceń.
- Termal Code — Monaco (edytor z VS Code) z drzewem plików i kartami, edycja wprost na zdalnym systemie plików.
- Przeglądarka — wiele kart, zakładki, pobieranie, podgląd źródła i narzędzia dla deweloperów zadokowane przy każdej karcie.
- Monitor, Procesy, Logi — metryki na żywo, lista procesów, z której możesz je ubić, i podgląd logów z automatycznym znajdowaniem typowych plików Apache'a, nginksa, PHP, MySQL-a i sysloga.
- Żądanie HTTP, Zip, Git, FTP, Kosz — drobne narzędzia, przez których brak wracasz do powłoki w środku pracy.
- Asystent — pytania zwykłym językiem, odpowiedź w postaci polecenia z wyjaśnieniem. Nic nie ruszy, dopóki nie klikniesz, i działa na twoim własnym kluczu API.
Są też klient poczty, notatki, kalkulator, przelicznik, próbnik kolorów i kilka gier. Trzynaście z dwudziestu trzech jest domyślnie wyłączonych — na stałe zostają tylko sklep z aplikacjami, ustawienia, eksplorator i kosz — bo pierwsze uruchomienie, w którym eksplorator plików ginie pod menu z grami, samo w sobie byłoby argumentem przeciwko całemu pomysłowi. Włącz to, czego używasz.
Część, na którą powinni spojrzeć deweloperzy
Pulpit da się rozszerzać, a model rozszerzeń to najciekawsza rzecz w całej bazie kodu.
Aplikacja z zewnątrz działa w odizolowanej ramce iframe. Nie sięgnie bezpośrednio do systemu plików, sieci ani schowka. Każde uprzywilejowane wywołanie idzie komunikatem do hosta, a ten porównuje je z uprawnieniami, które aplikacja zadeklarowała w swoim manifeście — a jest ich tylko sześć: fs.read, fs.write, net, storage, clipboard, webview. Pokazujemy ci je przy instalacji. Zasada z komentarza na początku samego runtime'u jest bez ogródek: iframe'owi nigdy się nie ufa, host sprawdza wszystko.
Waży to tu więcej niż w większości systemów wtyczek, bo te aplikacje działają wobec serwerów, do których to ty dałeś dostęp po SSH. Sklep z aplikacjami, w którym wtyczka mogłaby po cichu odczytać twoje klucze, byłby nie do obrony.
A SDK to nie osobne, gorsze API dorobione dla obcych: wbudowany kalkulator też rejestruje się przez Termal.app() — ten sam publiczny punkt wejścia, którego używa aplikacja z zewnątrz. Razem z SDK dostajesz osiem kompletnych przykładów, od aplikacji do notatek po kontener webview i widżet serwera.
Pełna dokumentacja — manifest, runtime, okna dialogowe, wybór plików, pamięć, sieć, webview, schowek, sterowanie oknami, tłumaczenia, pakowanie — jest na stronie Termal App Studio.
Czym to nie jest
- To nie zamiennik twojego terminala. Terminal jest w środku i będziesz go używać. Jeśli twoja praca i tak mieści się w powłoce, pulpit nie doda niczego, czego potrzebujesz.
- To nie protokół zdalnego pulpitu. Nie ma X11, VNC, RDP ani serwera obrazu po twojej stronie łącza. Menedżer okien działa lokalnie, w aplikacji; przez połączenie SSH przechodzi tylko ruch plików, powłoki i metryk.
- To nie działa non stop. Zbieranie danych trwa przy zamkniętym oknie, ale aplikacja musi działać na maszynie, która nie śpi. Zamknij laptopa, a się zatrzyma — zobacz porównanie z Netdatą, gdzie waży to najwięcej.
- To nie do tysiąca serwerów. Od kilku do kilkudziesięciu. Wyłącznie Linux po SSH: bez SNMP, bez Windowsa, bez wykrywania urządzeń w sieci.





