screen: Hilfe!

Irgendwie bin ich gerade dabei, an screen zu verzweifeln. Nichts wichtiges, aber etwas in das ich mich seit Gestern verbissen habe. Da ich weiß, daß es hier einige Leser gibt die das Tool zu schätzen wissen, mal die Frage in die Runde: Ist das alles?

Was bisher geschah: Ich benutze fvwm2 als Windowmanager, mit einem mächtig abgespeckten Crystal-Theme. Gestern habe ich meinen zerschossenen Bootloader mit Hilfe einer GRML-CD repariert, da ist mir der nett vorkonfigurierte Screen aufgefallen. Der stellt in seiner Statuszeile auch Informationen wie die aktuelle Taktfrequenz dar. Auf dem unteren Teil meines Bildschirmes habe ich noch eine Art Taskleiste, die ich aber bei nüchternem Nachdenken nie brauche. Lediglich die Statusmeldungen am Rand — Uhrzeit, Akkustatus, Taktfrequenz und Temperatur — würden mir fehlen. Also will ich die jetzt in meinen Screen packen, damit mein Desktop endlich aufgeräumt (AKA absolut leer) ist.

Beliebige Informationen kann man mit sogenannten Backtick-Kommandos in Screen darstellen. Gut zu wissen, war mir auch neu. Ein Blick auf GRML zeigt, daß da für diesen Zweck Skripte aufgerufen werden, die irgendwo im System liegen. Technisch kein Problem, aber ich hätte keine sinnvolle Idee, wo ich die lassen sollte. Also habe ich versucht, direkt in der Screen-Konfiguration ‚Einzeiler‘ unterzubringen.

Schäbbig, aber geht: Das funktioniert so lange, wie da tatsächlich nur ein einzelnes Kommando aufgerufen wird. Sobald substituiert wird (uname bzw. $(uname)) klappt das nicht mehr. Erstmal habe ich mir beholfen, indem ich eine neue Shell starte und der die Kommandos als Parameter mitgebe:

backtick 1 0 60 sh -c 'sed -ne "s/.* on-line/^/p" /proc/acpi/ac_adapter/AC/state; expr $(sed -ne "s/remaining capacity: *\([0-9]*\) mWh/\1/p" /proc/acpi/battery/BAT0/state) \* 100 / $(sed -ne "s/last full capacity: *\([0-9]*\) mWh/\1/p" /proc/acpi/battery/BAT0/info)'
backtick 2 0 60 sh -c 'expr $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq) / 1000'
backtick 3 0 60 sed -ne "s/temperature: *\\([0-9]*\\) C/\\1°C/p" /proc/acpi/thermal_zone/THM0/temperature

Fiese Zeilenumbrüche, aber ich bin sicher daß man damit klarkommt wenn man an .screenrc bastelt. ;-)

Mein Problem mit dieser Lösung ist, daß für jede Aktualisierung der CPU- und der Takt-Infos eine extra Shell geöffnet wird. Das muß bei Aktionen die auf Dauer durchaus häufiger als alle 60 Sekunden laufen nicht sein. Oder?

Schöne Lösung? Ich habe einiges an Quotes ausprobiert, auf die Art habe ich den dritten Eintrag mit ein paar eingestreuten Backslashes zum Laufen gebracht. Zu den ersten beiden habe ich keine Idee mehr, und ich bin irgendwie nicht schlau genug um die Screen-Sourcen weit genug zu verstehen um zu erkennen ob es eine Lösung gibt. Hat jemand von Euch mehr Erfolg?

Wobei, zugegeben: so richtig schön wird das eh nicht. Ich vermute, daß es auf Dauer am Ressourcenschonendsten wäre, die Sammlung der Daten in ein eigenes Programm (meine Wahl wären Perl oder Python) auszulagern. Das könnte dann parallel zum Screen mitlaufen, wenn man die Parameter für ‚Backtick‘ richtig wählt kann Screen nämlich auch Ausgaben eines dauerhaft laufenden Programms anzeigen. Was meint Ihr?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

;-) :-) :-D :-| :-/ :-( :-P more »