Openbox

Aus mxlinuxusers.de


Logo
Getestet: Dieser Hinweis soll dir dabei helfen, zu entscheiden, ob dieser Artikel auf deinem System funktionieren wird oder nicht. Solltest du feststellen, dass dieser Artikel bei einer ungetesteten Version funktioniert, kannst du das gerne hier korrigieren oder im Forum anmerken.


Openbox-Fenstermanager
Openbox-Fenstermanager

Openbox ist ein leichtgewichtiger Fenstermanager, der sich deshalb besonders für ältere Rechner, Notebooks und Minimalisten eignet. Aber auch wer eine schnörkellose und ablenkungsfreie Oberfläche bevorzugt könnte ihn in Betracht ziehen.

Hinweis: Wenn Du die Version ohne zusätzliches Desktop Environment installierst wirst Du als erstes nur einen schwarzen Bildschirm sehen. Drücke die rechte Maustaste, dann öffnet sich ein Menü in dem Du ein Terminal, Firefox und unter dem Punkt Debian verschiedene andere Anwendungen starten kannst.

Installation[Bearbeiten | Quelltext bearbeiten]

Es kann ausgewählt werden, ob Openbox alleine oder innerhalb der Desktop Umgebungen GNOME, KDE oder LXDE laufen soll:

auszuwählen sind:

sudo apt-get install openbox

als Mindestinstallation

zusätzlich die entsprechende Session, wenn gewünscht:

sudo apt-get install openbox-gnome-session
sudo apt-get install openbox-kde-session
sudo apt-get install openbox-lxde-session

zur Erleichterung der Konfiguration:

sudo apt-get install obconf

Openbox Menü[Bearbeiten | Quelltext bearbeiten]

zusätzlich evtl. entweder

  • obmenu, ein grafischer Menu-Editor

oder einen der dynamischen Anwendungsmenu-Generatoren

  • openbox-menu oder
  • obmenu-generator - ab MX-21 in den offiziellen Repos vorhanden:
sudo apt install obmenu-generator

obmenu-generator[Bearbeiten | Quelltext bearbeiten]

Anleitung zur Installation von obmenu-generator[Bearbeiten | Quelltext bearbeiten]

da dies eine Installation vom obmenu-generator am Paketmanager vorbei ist, sollte man dies nur tun, wenn obmenu-generator noch nicht in den offiziellen Repos verfügbar ist (Versionen vor MX-21)

sudo apt-get install git cpanminus libgtk2.0-dev libgtk2-perl

wenn noch nicht erfolgt

sudo cpanm Data::Dump
sudo cpanm Linux::DesktopFiles
cd Downloads
git clone https://github.com/trizen/obmenu-generator
sudo mkdir /opt/bin
export PATH=$PATH:/opt/bin

Füge /opt/bin der PATH-Variable in /etc/environment hinzu

sudo -H nano /etc/environment: PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/opt/bin
sudo cp obmenu-generator/obmenu-generator /opt/bin
mkdir -p ~/.config/obmenu-generator
cp obmenu-generator/schema.pl ~/.config/obmenu-generator

Konfiguration[Bearbeiten | Quelltext bearbeiten]

zum Bearbeiten der Menüs:

nano ~/.config/obmenu-generator/schema.pl

Die verschiedenen Einträge sind relativ gut kommentiert (am Anfang im comment-Block). Die einzelnen Kategorien beginnen mit der Bezeichnung cat und drei Einträgen, zuerst der Kategorien-NAME, dann das LABEL und ein zugehöriges ICON:

{cat => ['utility',     'Accessories', 'applications-utilities']},
{cat => ['development', 'Development', 'applications-development']},
{cat => ['education',   'Education',   'applications-science']},
...

wer obmenu-generator installiert hat, erkennt hier unschwer die Kategorien vom Anwendungsmenu wieder. Im Normalfall kann man dies auch alles so lassen, eventuell könnte man je nach Desktop-Umgebung noch die passende Kategorie auskommentieren, z.B. für xfce diese Zeile auskommentieren:

{cat => ['x_xfce',      'XFCE Applications',  'applications-other']},

aber notwendig ist dies nicht.

Interessanter ist diese Stelle

#                  LABEL          ICON
{begin_cat => ['My category',  'cat-icon']},
#             ... some items ...
{end_cat   => undef},

die freundlicherweise schon für eigene Anwendungen reserviert wurde. Dort kann man Anwendungen in eigene Kategorien packen, was sich besonders für aus dem Netz geladene oder selbst geschriebene Pipemenus anbietet.

{begin_cat => ['Lieblingsanwendungen',  'cat-icon']},
    {item => ['leafpad', 'Editor', 'text-editor']},
    {item => ['luckybackup', 'Backup', 'menulibre']},
    {pipe => ['obbrowser', 'Disk', 'drive-harddisk']},
{end_cat   => undef},

"Gewöhnliche" Anwendungen (also keine Pipemenus) beginnen mit "item", Pipemenus mit "pipe". Die restlichen drei Attribute sind gleich, zuerst das zu startende Kommando, dann der Name, der im Anwendungsmenu erscheint und anschliessend das anzuzeigende Icon. Wenn obmenu-generator in menu.xml eingetragen wurde

<menu id="root-menu" label="obmenu-generator" execute="/usr/bin/obmenu-generator -i" />

bedarf es keiner weiteren Aktion, die geänderten bzw. neu erstellten Einträge erscheinen sofort beim Rechtsklick auf den Desktop.

Erstelle dynamische Menüs:

obmenu-generator -p -i
Ausgabe:[*] A dynamic menu has been successfully generated!

openbox-menu[Bearbeiten | Quelltext bearbeiten]

Das Paket openbox-menu befindet sich in den offiziellen Repos und kann daher auf dem üblichen, bevorzugten Weg (apt, apt-get, Synaptic o.ä.) installiert werden.

Konfiguration[Bearbeiten | Quelltext bearbeiten]

openbox-menu erzeugt ein dynamisches Menu aus einer Vorlage, die sich per default im Verzeichnis /etc/xdg/menus/ befindet. Standardmäßig wird dabei nach einer Datei applications.menu gesucht, die jedoch in MX nicht vorhanden ist. Deshalb muss die Datei entweder als Option angegeben werden

openbox-menu lxde-applications.menu

oder man setzt vorher im Verzeichnis einen Symlink

sudo ln -s lxde-applications.menu applications.menu

Wichtig: Die Option darf nicht mit dem vollen Pfad zur Datei angegeben werden.

openbox-menu /etc/xdg/menus/lxde-applications.menu

führt zu der etwas verwirrenden Fehlerausgabe

File /etc/xdg/menus/lxde-applications.menu doesn't exist. Can't create menu.

obwohl die Datei /etc/xdg/menus/lxde-applications.menu existiert.

Möchte man eigene Vorlagen benutzen, z.B. eine Datei mein_muster.menu, die im Verzeichnis $HOME/.config/menus/ liegt, so muss vorher die Umgebungsvariable XDG_CONFIG_DIRS gesetzt werden

export XDG_CONFIG_DIRS=$HOME/.config:/etc/xdg

Wichtig: Das Unterverzeichnis menus/ darf dabei nicht mit angegeben werden, weil es von openbox-menu automatisch hinzugefügt wird. Das bedeutet aber auch, daß eigene Vorlagen unbedingt in einem Verzeichnis mit dem Namen menus liegen müssen.

Nach diesem Setzen von XDG_CONFIG_DIRS und dem Aufruf von

openbox-menu mein_muster.menu

sucht dann openbox-menu der Reihe nach in den Verzeichnissen $HOME/.config/menus/ und /etc/xdg/menus nach einer Datei mein_muster.menu und benutzt die zuerst gefundene als Vorlage für den Aufbau des Anwendungsmenus.

Konfiguration[Bearbeiten | Quelltext bearbeiten]

Openbox wird über diese vier Dateien konfiguriert:

Die systemweiten Einstellungsdateien liegen im Verzeichnis /etc/xdg/openbox/, die Userspezifischen in ~/.config/openbox/ wobei wie üblich die Einstellungen im Homeverzeichnis die systemweiten Einstellungen überschreiben. Für eigene Einstellungen werden die Dateien von /etc/xdg/openbox/ nach ~/.config/openbox/ kopiert und können dort editiert werden.

rc.xml[Bearbeiten | Quelltext bearbeiten]

Openbox Konfiguration Manager obconf

ist die Hauptkonfiguration, enthält u.a. Desktopaussehen, Themen, Tastaturbindungen usw. Da es sich um eine XML-Datei handelt kann man direkt in dieser Datei nachsehen, was alles konfiguriert wird. Aber normalerweise wird bzw. braucht man diese Datei nicht zu editieren, sondern kann die meisten Einstellungen wie z.B. Thema, Erscheinungsbild, Fenster- und Mausverhalten sowie Dockapps über ein GUI obconf, den Openbox Konfiguration Manager vornehmen.

Hat man den Dateimanager PCMan File Manager installiert, so kann der Desktop auch damit eingestellt werden. Näheres siehe dazu dort.

Themen[Bearbeiten | Quelltext bearbeiten]

Fertige Themen für Openbox gibt es im Internet zum Download. Ergiebige Quellen sind folgende:

Diese Themen liegen in zwei Varianten vor, als Themenarchiv (einzelne Datei mit der Endung *.obt) oder als Sammlung von Dateien in einem Verzeichnis. Es kommen auch mit tar, zip u.ä. gepackte Dateien vor (*.zip, *.tar.gz, ...), diese muss man zuerst mit seinem Lieblingspackprogramm entpacken, um zu sehen, ob es sich dabei um eine *.obt-Datei oder ein Themenverzeichnis handelt.

Die erste Variante (*.obt) ist am einfachsten:

  1. *.obt-Datei runterladen und auf dem Rechner speichern
  2. obconf aufrufen -> Menupunkt "Neues Thema installieren..."
  3. in der sich öffnenden Dateiauswahl die soeben gespeicherte *.obt-Datei auswählen -> fertig
  4. Das neue Themenverzeichnis wird dabei von obconf automatisch als Unterverzeichnis in ~/.themes/ abgelegt und kann im obconf-Fenster ausgewählt werden. Dieses angewählte Thema wird auch sofort wirksam, kein Neustart erforderlich.

Hat man dagegen ein Verzeichnis mit mehreren Datei, so muss daraus erst ein Themenarchiv *.obt erzeugt werden:

  1. obconf aufrufen -> Menupunkt "Themenarchiv erzeugen (.obt)"
  2. in der sich öffnenden Dateiauswahl das heruntergeladene Verzeichnis auswählen
  3. obconf meldet "/PFAD/ZUM/THEMA/thema.obt wurde erfolgreich erzeugt"
  4. Diese neuerzeugte Datei *.obt wie oben ab Punkt 2. dann mit obconf installieren.

Tastenkombinationen[Bearbeiten | Quelltext bearbeiten]

Einige Einstellungen wie z.B. Tastenfunktionen sind jedoch nicht in obconf erreichbar, sondern müssen direkt in der ~/.config/openbox/rc.xml editiert werden. Dies geschieht in der betreffenden Sektion, für Tastenfunktionen also innerhalb von <keyboard></keyboard>

Beispiel: in der rc.xml ist die Tastenkombination "Alt-Print" für einen Screenshot durch scrot vorgesehen:

    <!-- Take a screenshot of the current window with scrot when Alt+Print are pressed -->
    <keybind key="A-Print">
      <action name="Execute">
        <command>scrot -s</command>
      </action>
    </keybind>

wer also ein anderes Programm bevorzugt, setzt einfach dessen Kommando zwischen <command></command>

<command>xfce4-screenshooter</command>

Ähnlich könnte die Tastenkombination durch die Angabe in <keybind key="A-Print"> geändert werden, was aber in diesem Fall wenig Sinn machen würde, zumal bei Änderungen der Tastenkombination auf jeden Fall kontrolliert werden muss, ob diese Kombination nicht schon für eine andere Funktion verwendet wird.

Anwendungseinstellungen[Bearbeiten | Quelltext bearbeiten]

Eine weitere Möglichkeit, die nicht durch obconf erreichbar ist, betrifft spezielle Einstellungen für zu startende Anwendungen. Es ist z.B. möglich, daß man seinen Browser immer auf Desktop 1 starten möchte und den Editor immer auf Desktop 2, und beide sollen immer maximiert starten. Oder der Videoplayer soll sich immer auf dem Desktop befinden, auf dem ich gerade arbeite. Solche Dinge lassen sich durch Einträge in der Sektion <applications></applications> einstellen.

Zur Erklärung auch hier ein Beispiel, das leicht abgewandelt der Seite Help:Applications des Openbox-Wikis entnommen wurde:

<!-- der Editor geany sollte immer maximiert auf Desktop 2 starten -->
<application name="geany">
  <desktop>2</desktop>
  <maximized>yes</maximized>
</application>
<!-- Firefox ebenfalls maximiert auf Desktop 1 -->
<application name="Firefox*">
  <desktop>3</desktop>
  <maximized>yes</maximized>
</application>
<!-- MPlayer soll mir folgen, wenn ich den Desktop wechsle und nicht durch andere Fenster verdeckt werden.
     So kann ich meine Videos beim Programmieren immer im Auge behalten. Gleiches gilt für Realplayer. -->
<application class="MPlayer">
  <desktop>all</desktop>
  <layer>above</layer>
</application>

Betrachtet man dieses kleine Beispiel aufmerksam, so wird die grundlegende Struktur hoffentlich schon ein wenig deutlich:

Alle Regeln werden innerhalb eines Applikationsblocks <application name="NAME"></application> aufgeführt. Für welche Anwendungen diese Regeln gelten sollen, wird durch den Namen, aber auch durch "Klasse", "Typ" oder "Rolle" festgelegt.

Woher weiss ich aber, welche Bezeichnungen meine Anwendung hat? Dazu dient das Programm obxprop. Zuerst startet man die zu untersuchende Anwendung und danach in einem Terminal folgendes Kommando:

obxprop | grep ^_OB_APP

es erscheint ein kleines Fadenkreuz, mit dem man das Fenster der zu analysierenden Anwendung anklickt. Daraufhin werden sämtliche Bezeichnungen angezeigt, hier die Ausgabe für den Editor Geany

 _OB_APP_TYPE(UTF8_STRING) = "normal"
 _OB_APP_TITLE(UTF8_STRING) = "app.xml - /home/gosia/tmp - Geany"
 _OB_APP_GROUP_CLASS(UTF8_STRING) = "Geany"
 _OB_APP_GROUP_NAME(UTF8_STRING) = "geany"
 _OB_APP_CLASS(UTF8_STRING) = "Geany"
 _OB_APP_NAME(UTF8_STRING) = "geany"
 _OB_APP_ROLE(UTF8_STRING) = 

Die wichtigsten setzbaren Eigenschaften sind folgende:

Liste wichtiger Eigenschaften
Eigenschaft Werte Bedeutung
<focus>WERT</focus> yes wenn möglich erhält die Anwendung den Fokus (Anwendungsfenster wird zum aktuellen Fenster)
no kein Fokus
<desktop>WERT</desktop> ZAHL Die ZAHL legt fest, auf welchem Desktop das Anwendungsfenster erscheinen soll
all Anwendung soll auf allen Desktops erscheinen
<layer>WERT</layer> above Anwendung wird nicht von anderen Fenstern überlappt
normal normales Verhalten, d.h. das Anwendungsfenster kann über oder unter anderen Fenstern liegen
below Anwendungsfenster liegt unterhalb anderer Fenster - wird überlappt
<iconic>WERT</iconic> yes Anwendungsfenster wird nur minimiert (als Icon) geöffnet
no normales öffnen
<maximized>WERT</maximized> yes Anwendungsfenster wird maximiert geöffnet
no Anwendungsfenster wird nicht maximiert geöffnet
horizontal Maximierung des Anwendungsfensters nur in horizontaler Richtung
vertical Maximierung des Anwendungsfensters nur in vertikaler Richtung

Es gibt noch weitere, seltener gebrauchte Eigenschaften, die man detailliert im Debian-Wiki nachschlagen kann.

Bei den Namen, Klassen, Type oder Rollen in <application ...> können auch Wildcards eingesetzt werden. Ein * für beliebig viele Zeichen, ein ? für ein Zeichen.

Dies hat den Vorteil, daß man oft gebrauchte Werte quasi in einem Rutsch mehreren oder allen Anwendungen zuteilen kann. im obigen Beispiel soll z.B. sowohl der Editor als auch Firefox immer maximiert gestartet werden. Da bietet es sich also an, zuerst einmal allen Anwendungen die Eigenschaft "maximiert" zuzuteilen. Das würde dann so aussehen:

<!-- alle Anwendungen, bei denen nichts anderes definiert ist, sollen maximiert starten -->
<application name="*">
  <maximized>yes</maximized>
</application>  
<!-- der Editor geany sollte immer maximiert auf Desktop 2 starten -->
<application name="geany">
  <desktop>2</desktop>
</application>
<!-- Firefox ebenfalls maximiert auf Desktop 1 -->
<application name="Firefox*">
  <desktop>3</desktop>
</application>
<!-- MPlayer soll mir folgen, wenn ich den Desktop wechsle und nicht durch andere Fenster verdeckt werden.
     So kann ich meine Videos beim Programmieren immer im Auge behalten. Gleiches gilt für Realplayer. -->
<application class="MPlayer">
  <desktop>all</desktop>
  <layer>above</layer>
<!-- dass MPlayer nicht maximiert starten soll, muss in diesem Fall extra definiert werden -->
  <maximized>no</maximized>
</application>

menu.xml[Bearbeiten | Quelltext bearbeiten]

Konfiguration für das Anwendungs- bzw. Kontextmenu, das nach einem Rechtsklick auf das Terminal erscheint. Wie die Endung schon verrät, handelt es sich auch hier um eine xml-Datei, deren Grundgerüst (das sogenannte Debian Menu) bei MX per default aus der Datei /var/lib/openbox/debian-menu.xml übernommen wird. Der Dateiname menu.xml ist per default in der Hauptkonfiguration rc.xml im Element <menu> festgelegt, kann dort aber auch verändert werden:

<menu>
    <file>~/.config/openbox/mein_menu.xml</file>
...
</menu>

Struktur von menu.xml[Bearbeiten | Quelltext bearbeiten]

Zur Erklärung eine Beispieldatei menu.xml:

<openbox_menu xmlns="http://openbox.org/"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://openbox.org/">
  <menu id="root-menu" label="Openbox 3" >
    <separator label="MX-18" />
    <menu id="progr" label="Programme" execute="openbox-menu lxde-applications.menu" />
    <menu id="werkz" label="Werkzeuge">
      <item label="obconf">
        <action name="Execute"><command>obconf</command></action>
      </item>
      <item label="zim">
        <action name="Execute"><command>zim</command></action>
      </item>
    </menu>
    <separator />
      <item label="Exit">
      <action name="Execute">
        <prompt>tatsächlich Openbox beenden?</prompt>
        <command>openbox --exit</command>
      </action>
      </item>
    </menu>
</openbox_menu>
Erklärung einzelner Kommandos
Zeilen aus menu.xml Erläuterung Screenshot
<?xml version="1.0" encoding="utf-8"?>
<openbox_menu xmlns="http://openbox.org/"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://openbox.org/">
notwendiger Kopf, damit die XML-Datei als "wohlgeformt" akzeptiert wird
<menu id="root-menu" label="Openbox 3" >
am Anfang muss immer ein Punkt mit der id="root-menu" vorhanden sein
<separator label="MX-18" />
ein Separator dient zur optischen Aufteilung des Menus, das Label gibt den Text an, der im Separatorfeld erscheinen soll. Wird kein Label angegeben erscheint ein Strich im Separator (s. zwischen "Werkzeuge" u. "Exit")
<menu id="progr" label="Programme" execute="openbox-menu lxde-applications.menu" />
ruft openbox-menu mit der Option lxde-applications.menu auf und erzeugt damit ein komplettes Menu. Wer den obmenu-generator benutzt trägt bei execute statt dessen execute="obmenu-generator -i" ein.

Ab hier können die Menu-IDs völlig willkürlich gewählt werden, es dürfen aber keine IDs mehrfach vorkommen.

<menu id="werkz" label="Werkzeuge">
   <item label="obconf">
      <action name="Execute"><command>obconf</command></action>
   </item>
   <item label="zim">
      <action name="Execute"><command>zim</command></action>
   </item>
</menu>
zusätzlich zum Hauptmenu können eigene, oft gebrauchte Pakete in eigenen Menupunkten (hier "Werkzeuge") gruppiert werden. Jedes Paket in einem eigenen "Item".
<separator />
   <item label="Exit">
      <action name="Execute">
        <prompt>tatsächlich Openbox beenden?</prompt>
        <command>openbox --exit</command>
      </action>
   </item>
 </menu>
</openbox_menu>
Wenn notwendig, kann durch die Verwendung von <prompt>Frage</prompt> vor dem Kommando erst eine Abfrage erfolgen, ob das nachfolgende Kommando tatsächlich ausgeführt werden soll. Es öffnet sich die nebenstehende Box. Bei der Auswahl von "Nein" wird das Kommando nicht ausgeführt.

Die noch oft zu sehende Form <execute>Befehl</execute> ist veraltet. Das funktioniert noch, aber stattdessen lieber <command> benutzen.[1]

autostart[Bearbeiten | Quelltext bearbeiten]

(zum automatischen Starten von Programmen u. Shellskripts): einfache Textdatei, in der die zu startenden Anwendungen eingetragen werden

Beispiel für autostart[Bearbeiten | Quelltext bearbeiten]

## Polkit agent
lxpolkit &  # Authentifizierungsagent
## Taskbar und Background
tint2 & # Taskbar
nitrogen --set-auto /Pfad/zum/Hintergrund &  # setzt den gewünschten Hintergrund
## sonstiges
(sleep 1s; conky) &
(sleep 2s; volumeicon) &

Wichtig sind die Einträge für einen Authentifizierungsagenten, da Openbox als Fenstermanager keinen eigenen startet.

Ob und welche sleep-Anweisungen für conky und volumeicon notwendig sind, muss jeder selbst ausprobieren. Da lässt sich kein allgemeines Rezept angeben. Bei conky wäre statt

(sleep 1s; conky) &

auch

conky -p 1 &

möglich.

environment[Bearbeiten | Quelltext bearbeiten]

ebenfalls Textdatei, in der systemweite bzw. Userspezifische Variablen eingetragen werden

Anwendungsmenu[Bearbeiten | Quelltext bearbeiten]

Das Anwendungsmenu erreicht man durch einen Rechtsklick auf den Desktop. Möchte man die dahinter liegende Datei menu.xml editieren und will verständlicherweise keinen normalen Editor benutzen (Gefahr, die XML-Struktur zu beschädigen), kann man das Paket obmenu, einen grafischen Editor, dazu benutzen.

Openbox besitzt normalerweise kein Panel sondern verwendet das Kontextmenü (Rootmenü) bzw. die rechte Maustaste zum Starten von Programmen. Es bietet sich die Installation eines der folgenden Pakete an: lxpanel, fbpanel, perlpanel oder tint2.

In Openbox gibt es nicht nur die üblichen statischen Menus, sondern auch dynamische Menus, sogenannte Pipe-Menus [2]. Dabei handelt es sich um Untermenus, die durch die Textausgabe von Skripts erzeugt werden können. Ein Beispiel dafür wäre ein Menupunkt "Mails", der nach dem Anklicken im Untermenu die Titel alle ungelesenen Mails anzeigt.
Statische und dynamische Menus können gemischt benutzt werden, es ist aber auch möglich, den gesamten Menu-Tree dynamisch, on-the-fly zu erzeugen.
Dafür gibt es in den Repos das Paket openbox-menu und den leider nicht in den offiziellen Repos vorhandenen obmenu-generator von https://github.com/trizen/obmenu-generator. Beide generieren quasi automatisch ein Anwendungsmenu.

Pipemenu[Bearbeiten | Quelltext bearbeiten]

Pipemenus sind Skripte, die in einer beliebigen Skriptsprache (bash, Python, Perl, Ruby...) geschrieben werden können. Deren Ausgaben werden aber nicht im Terminal ausgegeben, sondern in das Openbox-Menu durch eine Pipe umgeleitet (ähnlich wie bei solchen Verkettungen ls | grep 2019), daher der Name Pipemenu. Openbox verarbeitet sie dort im Hintergrund, so daß sie als eine Anwendung im Anwendungsmenu erscheinen. Das erfordert natürlich, daß bestimmte Ausgabeformate beachtet werden müssen. Um dies zu verdeutlichen, zwei Beispielskripte. Um das Skript so verständlich wie möglich zu halten, habe ich dafür die Bash benutzt, eine gewisse minimale Grundkenntnis von Bash ist allerdings notwendig, da ich hier nicht noch auf die Skriptprogrammierung eingehen kann.

  • Beispielskript 1:
  #!/bin/bash
  #
  # datum1.sh
  #
  # erzeugt ein einfaches Pipemenu, das lediglich das Datum anzeigt
  #
  echo "<openbox_pipe_menu>"      # muss so immer am Anfang stehen
  echo "<item label=\"$(date)\">" # gibt das Datum als Label aus
  echo "</openbox_pipe_menu>"     # abschliessender Tag zum Ende

das ist schon alles. Es empfiehlt sich, solche Skripte zuerst im Terminal auszuführen, besonders wenn man Pipemenus irgendwoher aus dem Internet gezogen hat. So kann man auch sehen, ob die erforderliche Struktur erzeugt wird. Hier ergibt sich folgende Ausgabe:

 <openbox_pipe_menu>
 <item label="Fr 21. Jun 16:29:09 CEST 2019">
 </openbox_pipe_menu>

wir können das Skript also in das Menuschema (Datei schema.pl) vom obmenu-generator einfügen:

 {begin_cat => ['Meine Kategorien',  'cat-icon']},
 #             ... some items ...
     {item => ['leafpad', 'Editor', 'drive-harddisk']},
     {item => ['luckybackup', 'Backup', 'menulibre']},
     {pipe => ['datum1.sh', 'nur Datum', 'appointment-soon']},
     {pipe => ['obbrowser', 'Disk', 'drive-harddisk']},
 {end_cat   => undef},

daß das Skript datum1.sh an einem Ort im Pfad (PATH) liegen muss, brauche ich wohl nicht zu erwähnen. Nun sieht es so aus (s. Bild rechts):

nicht sehr spektakulär, aber doch ganz nett für den Anfang.

Jetzt wollen wir ein wenig Aktion einbinden und wandeln das Skript leicht ab.

  • Beispielskript 2:
  #!/bin/bash
  #
  # datum2.sh
  #
  # erzeugt ein Pipemenu, das das Datum anzeigt
  # und beim Klick auf das Datum die Wikipedia-Seite mit
  # den Ereignissen des Tages öffnet
  #
  datum=$(date +%d._%B)       # spezielles Datumsformat für die Wikipedia
  echo "<openbox_pipe_menu>"  # muss am Anfang stehen
  echo "<item label=\"$(date)\">"
  echo "<action name=\"Execute\"><command>xdg-open \"https://de.wikipedia.org/wiki/$datum\"</command>"
  echo "</action></item>"     # wie in HTML, alles wieder schliessen
  echo "</openbox_pipe_menu>" # obligatorische Endebezeichnung

keine großen Änderungen, nur die <action>-Zeile, die den auszuführenden Befehl beschreibt, hier der Aufruf des Browsers mit der Wikipediaseite

xdg-open \"https://de.wikipedia.org/wiki/$datum\"

ist hinzugekommen. Dies zeigt sich auch an der Kontrollausgabe im Terminal

 <openbox_pipe_menu>
 <item label="Fr 21. Jun 18:49:51 CEST 2019">
 <action name="Execute"><command>xdg-open "https://de.wikipedia.org/wiki/21._Juni"</command>
 </action></item>
 </openbox_pipe_menu>
 

auch hier wieder eine entsprechende Zeile in das Menuschema (Datei schema.pl) einfügen

 {pipe => ['datum1.sh', 'nur Datum', 'appointment-soon']},
 {pipe => ['datum2.sh', 'Ereignisse des Tages', 'appointment-soon']},
 

das Anwendungsmenu sieht dann auch nicht anders aus, aber diesmal öffnet sich bei einem Klick aufs Datum der Browser und zeigt die Wikipedia-Seite mit den Ereignissen des betreffenden Tages.

Natürlich gibt es im Internet viele Pipemenu-Skripte zum Download, aber da man manche anpassen muss, ist es nützlich, etwas über das allgemeine Vorgehen und die geforderte Struktur zu wissen. Stimmt diese nicht, oder es gibt sonstige Fehler, liefert das Anwendungsmenu leider nur eine nicht hilfreiche Fehlermeldung "Ungültige Ausgabe vom Pipe-Menü..."

Weitere Möglichkeiten[Bearbeiten | Quelltext bearbeiten]

Hintergrundbild[Bearbeiten | Quelltext bearbeiten]

Möchte man den Hintergrund (Stichwort Wallpaper) setzen, kann dies mithilfe eines der unter Desktop-Hintergrund beschriebenen Programme getan werden. Dazu muss man in autostart einen entsprechenden Startbefehl einfügen, z.B.

nitrogen --set-auto /Pfad/zum/Hintergrund &  # setzt den gewünschten Hintergrund

Auch einige Dateimanager wie PCMan File Manager (pcmanfm) und Nautilus können den Hintergrund setzen.

Effekte[Bearbeiten | Quelltext bearbeiten]

Openbox hat von sich aus keine Möglichkeit um Effekte wie z.B. transparente Fenster oder Schatten darzustellen. Möchte man so etwas einstellen, muss man einen eigenständigen Composition-Manager wie compton, xcompmgr oder unagi installieren und ihn in den autostart von Openbox (~/.config/openbox/autostart) mit den gewünschten Optionen eintragen, z.B. mit folgender Zeile:

compton -b -c
# -b compton läuft als Dämon im Hintergrund
# -c Schatten für Fenster ein

Weblinks[Bearbeiten | Quelltext bearbeiten]