screen: képernyőmenedzser karakteres felületre

A parancsközeli interfészek (virtuális terminálok vagy terminál emulátorok) gyors elérhetősége alapvető feltétel. A háttérben futó vagy hosszabb játékidőt igénylő taszkokhoz külön terminál emulátorok indítása felesleges, folyamatos vagy eseti monitorozásukhoz azonban mégis elengedhetetlen, hogy anélkül, hogy keresgetnék, az n. folyamatot melyik terminálban indítottuk, gyors interakcióba léphessünk velök. Több processz egyidejű figyelése pedig megköveteli, hogy vizuálisan is teret kapjanak a munkafelületen. Terminál emulátor példányok indítása helyett észszerű megfontolás az emulátor képernyőjének felosztása, split window, erre a kívánalomra nyújt megoldást a már bemutatott Yakuake, a HUP-on szerepeltetett Terminator és így tovább. (Hozzátennénk, hogy amíg a Yakuake a Konsole-ra épülő, annak szolgáltatásait többé-kevésbé felmutató alkalmazás, a Terminator butított funkcionalítású választás, valamennyi tudományát az osztott nézet ki is meríti.)

Noha alapvetően jó ötletnek tűnik szabadidőnkben az x. grafikus előtét kifejlesztése, inkább neveznénk ezeket házifeladatoknak, amelyeket a programozó meg tudott csinálni. Az osztott nézetre továbbá nem mindég van szükség, a háttérben futó feladatok között fülekkel válthatunk. A terminál emulátorok esetében a tabbed interface nem szerencsés: a fülek (sok) helyet foglalnak, nem informatívak, kevés emulátor képes annak jelzésére, ha egy inaktív terminálon esemény történt. Megoldás tehát, hogy válasszuk ki számunkra azon terminál emulátor megoldást, amely funkcionalitásában eleget tesz elvárásainknak (true transparency background, lól), majd minden további lépést bízzunk a screenre.

Hosszában félbevágott terminál

A screen terminálképernyők kezelésére hívatott és azt piszkosul is tudja. Az irkes időkböl ismert alkalmazás legfőbb erénye, hogy a munkafolyamatot nem köti egy megjelenítő eszközhöz, a GNOME Terminál bezárása, a teljes X kilövése sem szakítja meg az indított folyamatokat, bármilyen későbbi időpontban folytathatók (screen -r). Szolgál a fennebbiekben kívánalomként aposztrofált képernyőfelosztással (vertical split view in CVS!), egyszerre több workspace-en és egyszerre több user is ugyanazt a konzolt láthatja, szerkesztheti. A képernyő választott poziciójú karaktersorában helyet foglaló státuszbár tartja nyilván (a CPU terhelés, atomóra, iwiwes olvasatlan üzenetek sít mellett) a nyitott, továbbá a monitorozásra megjelölt képernyők állapotát.

A screen funkcióit UNIX (neked Vim) és GNU (nekem Emacs*) sémájú billentyűkombinációkkal érhetjük el, és bármelyik testreszabható. (Az alapértelmezetten a C-a-ra bindelt prefixum bámulatosan teszi inaktívvá a GNU-stíl zsh gyorsbillentyűs sorelejére állását.) Minden titok nyitja a ~/.screenrc.

hardstatus on
hardstatus alwayslastline
hardstatus string '%{= kG}[%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'
activity "Activity on window #%."
autodetach on
escape "^Xx"
bind b other
bind o focus

Kedvencem a C-x :lockscreen!


* Emacs-ban próbára tett terminál menedzsment nem az igazi. Az eshell natív (e)lisp kifejezés ételmezése bámulatos, de kapacitásában messze elmarad egy átlagos terminál emulátorétól. A term-mode már hozza a hozzáfűzött reményeket, viszont a széles körű gyorsbillentyű allokációja végett az Emacs váltó parancsot definiál a terminál és az Emacs üzemmódjai közötti átkapcsoláshoz, ami végtelenül kényelmetlen, így lényegében ez (relatív aktív parancsközeli életvitel esetén) nem megoldás.