Home / LinuxUser / 2004 / 07 / Daten auf dem Desktop visualisieren mit X On Screen Display

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Nicht zu übersehen

Daten auf dem Desktop visualisieren mit X On Screen Display

Lautstärke anpassen

Komplexere Anwendungsbeispiele wie die Anzeige eines Lautstärkepegels erfordern lediglich ein wenig mehr Kombinationsgeschick, denn zunächst braucht man ein Programm, das entsprechende Informationen auf dem "stdout"-Kanal ausgibt. Eine gute Wahl hierfür ist aumix, ein Mixer, den alle gängigen Distributionen mitliefern, wenn auch nicht immer standardmäßig installieren.

aumix -q listet alle bekannten Soundkanäle und deren aktuelle Lautstärkeeinstellung (in Prozent) auf. Diese Ausgabe reduziert der Befehl grep vol auf die Zeile mit der Gesamtlautstärke. Anschließend teilt cut -d " " -f 3 diese Zeile in durch Leerzeichen getrennte (-d " ") Spalten auf und gibt seinerseits nur die dritte Spalte (-f 3) aus, welche die Lautstärke des rechten Kanals enthält: Geht man davon aus, dass rechter und linker Kanal in etwa den gleichen Volumenpegel haben, kann man sich, wie hier geschehen, auf den rechten beschränken.

Bei Suse 9.1 muss das Ergebnis noch etwas weiter bearbeitet werden; hier ändert man die dritte Zeile in Listing 1 in

aktuell=`aumix -q | grep vol | cut -d " " -f 3 | sed s/,//`

Im Endeffekt erhält man in beiden Fällen aber nur eine Zahl, keine Balkenanzeige, die osd_cat ausgeben könnte. Hier hilft das Shellskript aus Listing 1, das Sie am besten unter dem Namen pegel.sh speichern und mit chmod u+x pegel.sh ausführbar machen.

Im Körper seiner while-Schleife hängt es zwischen den beiden Stichwörtern do und done einhundert Mal je ein Zeichen an den bisherigen Inhalt ($) der Variablen balken an, der anfangs Aktuelle Lautstärke: lautet: Entweder kommt ein # dazu oder ein -. Den Balken aus Gatterzeichen baut die Schleife so lange auf, bis die laufvariable, die zu Beginn auf 1 steht und in jedem Schleifendurchlauf mit + 1 um eins erhöht wird, kleiner oder gleich (-le, "less or equal") dem in aktuell gespeicherten Lautstärkewert ist. Dann wird die Zeile mit Minuszeichen aufgefüllt.

Mit echo gibt das Skript den so erzeugten Lautstärkepegelbalken (also den Inhalt der Variablen balken) aus. Damit dieser immer die gleiche Breite hat, benutzt man am besten eine Nichtproportionalschrift wie Courier zur Anzeige mittels osd_cat (Abbildung 5):

./pegel.sh | osd_cat -A left -p top -f -adobe-courier-*-r-*-*-10-*-*-*-*-*-*-* -c green

Der grüne Balken in der linken (-A left) oberen (-p top) Bildschirmecke ändert sich in dieser Form jedoch auch hier nicht. Dieses Problem lässt sich mit

while true; do ./pegel.sh ; sleep 1; done | osd_cat -l 1 -A left -p top -f -adobe-courier-*-r-*-*-10-*-*-*-*-*-*-* -c green

analog zur Uhr lösen – ein Ansatz, der sich auch bei anderen Visualisierungsanliegen nutzen lässt.

Abbildung 5: Der Balken aus #-Zeichen passt seine Breite der Lautstärke an.

Listing 1

Aus einer Zahl einen Balken machen

#!/bin/bash
laufvariable=1;
aktuell=`aumix -q | grep vol | cut -d " " -f 3`
balken="Aktuelle Lautstärke: "
while test $laufvariable -le 100
do
        if test $laufvariable -le $aktuell
        then
                balken="$balken#"
        else
                balken="$balken-"
        fi
        laufvariable=`expr $laufvariable + 1`
done
echo $balken

Tabelle 1: <C>osd_cat<C>-Parameter

Parameter

Bedeutung

-a, --age=Sekunden Beeinflusst das Scrollen von Texten. Wenn zwischen dem Eintreffen zweier Textzeilen mindestens die angegebene Zeit in Sekunden liegt, scrollt osd_cat nicht, sondern löscht den bisherigen Text. Der implizite Standardwert 0 bedeutet, dass immer gescrollt wird.
-p, --pos=Position Vertikale Ausrichtung des Texts auf dem Bildschirm: Soll er oben stehen, schreibt man top an die Stelle von Positionmiddle meint in der Mitte und bottom unten.
-A, --align=Position Horizontale Ausrichtung des Texts auf dem Bildschirm; statt Position wählt man zwischen den Werten left (linksbündiger Text), right (rechtsbündig) oder center (zentriert).
-f, --font=Schriftart Verwendete Schriftart (Standard: -misc-fixed-medium-r-semicondensed--*-*-*-*-c-*-*-*).
-c, --colour=Farbe Die gewünschte Schrift-Farbe in englischer Sprache: Die Standardfarbe Rot heißt red, gelb yellow, grün green etc.
-d, --delay=Sekunden Legt fest, wie lange (wieviele Sekunden) die Anzeige erscheinen soll (Standard: 5 Sekunden).
-o, --offset=Punkte Vertikaler Abstand (in Punkten) vom mit -p ausgewählten Bezugspunkt: So erscheint die Anzeige bei -p top -o 5 fünf Punkte unterhalb des oberen Bildschirmrands. Bei -p bottom und -p middle sorgt der Offsetwert für eine Verschiebung nach oben.
-i, --indent=Punkte Horizontaler Abstand (in Punkten) von dem mit -A ausgewählten Bezugspunkt: Im Zusammenhang mit -A left und -A center verschiebt -i 10 die Anzeige zehn Punkte weiter nach rechts. Bei -A right sorgt der Indentwert für eine Verschiebung nach links.
-h, --help Zeigt eine kurze Hilfe zu allen verfügbaren Parametern an.
-s, --shadow=Offset Legt den Abstand des Schattens vom Text fest. Den Schatten erzeugt osd_cat Offset Punkte weiter rechts und unterhalb des Texts. Der Standardwert 0 sorgt für schattenlose Schrift.
-S, --shadowcolour=Farbe Legt die Farbe des Schattens fest. Der Standardwert ist black, was der Farbe Schwarz entspricht.
-O, --outline=Punkte Legt die Dicke der Textumrandung fest. Beim Standardwert 0 fehlt der Rahmen.
-u, --outlinecolour=Farbe Legt die Farbe des Rahmens fest, standardmäßig black.
-w, --wait Sorgt dafür, dass osd_cat solange mit der Darstellung von anliegenden Texten wartet, bis die Anzeige gelöscht wurde.
-l, --lines=Anzahl Legt fest, wieviele Zeilen die Anzeige haben soll (Standard: 5).

Kasten 1: Namen für Schriftarten finden

Die wohl einfachste Möglichkeit herauszufinden, wie die auf dem System installierten Schriftarten heißen, führt über das Tool xfontsel (Abbildung 6). Innerhalb des Schriftnamens sind eine Menge Informationen kodiert, darunter an erster Stelle (fndry für "foundry", "Gießerei") der Hersteller (in Abbildung 6 adobe), die Schriftfamilie (fmly für "family", im Beispiel helvetica), die Dicke (wght für "weight"), die Neigung (slant, zum Beispiel i – "italics" – für "kursiv") oder die Größe in Pixeln (pxlsz, "pixelsize").

Bei der Suche nach einer passenden Schrift klickt man am besten mit der linken Maustaste auf das Stichwort fmly in der zweiten Zeile von oben, hält die Maus gedrückt und wählt eine Schriftfamilie aus. Sobald man die Maustaste nun loslässt, zeigt xfontsel die passende Schriftart an. Sternchen in der dritten Zeile mit dem Schriftnamen besagen, dass die an der jeweiligen Stelle kodierte Eigenschaft egal ist.

Klickt man jedoch auf andere Stichwörter in der zweiten Zeile, lässt sich die Schrift durch Hinzuwahl weiterer Charakteristika genauer spezifizieren; ausgegraute Punkte im jeweiligen Auswahldialog stehen nicht zur Verfügung.

Entspricht die Zusammenstellung den eigenen Ansprüchen, kopiert ein Klick auf den Knopf select den Fontnamen aus der dritten Zeile in den Zwischenspeicher, so dass er sich mit der mittleren Maustaste dort einfügen lässt, wo er gebraucht wird – beispielsweise hinter der -f-Option eines osd_cat-Aufrufs. Leider funktioniert dies nicht auf allen Systemen. (Hagen Höpfner/Patricia Jung)

Abbildung 6: "xfontsel" hilft beim Finden passender Schriftarten.

Der Autor

Hagen Höpfner ist wissenschaftlicher Mitarbeiter am Institut für Technische und Betriebliche Informationssysteme der Fakultät für Informatik an der Otto-von-Guericke-Universität Magdeburg. In seiner Freizeit spielt der begeisterte Vater Gitarre in der Rockband "Gute Frage" (http://www.gutefrage.de/).

Glossar

LICQ

Ein grafischer Open-Source-Client für den Chat-Dienst ICQ (http://www.licq.org/).

true

Ein Kommandozeilenprogramm, das nichts tut, aber das erfolgreich. Genaugenommen gibt es einfach nur einen Wert zurück, den die Shell als positiv, als "wahr" interpretiert. Eine solche Bedingung in einem Schleifenkopf ist demnach immer erfüllt; die Schleife läuft ewig.

while-Schleife

Ein Programmierkonstrukt, das das Programm dazu bringt, eine "Tätigkeit" so lange zu wiederholen, wie die Bedingung erfüllt ist, die nach dem Stichwort "while" aufgeführt wird. In Listing 1 wiederholen sich die Anweisungen zwischen den (Shell-spezifischen) Stichwörtern "do" und "done" also, so lange der Test, ob der Inhalt ("$") der Variablen "laufvariable" kleiner oder gleich ("-le") 100 ist, ein positives Ergebnis liefert.

Nichtproportionalschrift

Schrift, bei der alle Buchstaben wie bei der Schreibmaschine die gleiche Breite haben. Bei Proportionalschriften wie Times oder Helvetica hängt deren Breite dagegen von ihrer "natürlichen Laufweite" ab: Ein i nimmt weniger Platz weg als ein m.

;

Stehen – anders als in Listing 1 – mehrere Shell-Befehle in einer Zeile, müssen sie durch Semikolon getrennt werden.

``

Zwischen sogenannten Backticks (von links oben nach rechts unten zeigenden einfachen Anführungszeichen) stehende Anweisungen führt die Shell aus und ersetzt den gesamten Ausdruck einschließlich der Backticks durch deren Ergebnis. Im Beispiel in Listing 1 landet so die Ausgabe des Befehls "aumix -q | grep vol | cut -d " " -f 3" in der Variablen "aktuell".

expr

Ein Befehl, der in der Shell einen arithmetischen oder logischen Ausdruck auswertet. In Listing 1 sorgt er für die (ganzzahlige) Addition des aktuellen Inhalts von "laufvariable" und 1.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (1 Stimme)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...