{{tag> linuxclients buttonbar widget}}
====== ButtonBar für Ubuntu ======
Mit diesem kleinen Widget kann man per Button auf der Desktop-Oberfläche von Ubuntu Shell-Befehle im Userkontext ausführen lassen.\\
Für Windows siehe -> [[anwenderwiki:windowsclient:buttonres]]
{{ :anwenderwiki:linuxclient:buttonbar-1.png?300 |}}
* Das Anmeldefenster im Lightdm ist immer auf dem Bildschirm, auf dem die Maus ist, findet man es nicht muss man die Maus nach rechts oder links bewegen.
* Das Widget lässt sich per cfg-Datei anpassen, maximal 20 Buttons sind möglich.\\
* ab Version 0.20 der ButtonBar kann auch grafische Buttons erzeugen, siehe -> unten
* ab Version 0.21 kann die ButtonBar gleichzeitig auch auf einen erweiterten Bildschirm angezeigt werden.
* Negative Positionsangaben zählen von rechts oder unten, positive von links oder oben.\\
* Die Befehle werden direkt ohne shell ausgeführt, ggf. muss deren kompletter Pfad angegeben werden. Ebenso funktionieren keine Wildcard (z.B. der *), mehrere Befehle oder Pipes. Falls diese benötigt werden, muss man den/die Befehle mitexec = sh -c "...Befehl..."
über einen shell-Aufruf ausführen lassen oder man lagert die Befehle in ein eigenes Shellscript aus (-> [[anwenderwiki:linuxclient:buttonbar-beispiel|Beispiel]]). Dabei sind aber Enviroment-Variablen, wie z.B. "HOSTNAME" __nicht__ belegt!\\
* Man kann das Programm über einen autostart-Eintrag bei der Anmeldung starten lassen (über dash-Suche: "Startprogramme")
* Man legt es mit seiner cfg-Datei z.B. unter **''/opt/buttonbar/''** ab oder am Server unter progs.
* Es gibt keine Umgebungsvariablen, möchte man z.B. den Hostname haben (auch in aufgerufenen Befehlen), muss man diesen z.B. aus /etc/hostname auslesen...\\
[Programm]
Name = "linuxmuster Button Bar"
width = 200
# Negative Positionswerte entsprechen einer Position von rechts oder unten
xpos = -20
ypos = 40
FixedPosition = 1
# Anzeige der ButtonBar bei erweiterten Bildschirm auf beiden Bildschirmen: 0|1
AlleBildschirme = 1
Hintergrundfarbe = $FFFFFF
BilderButtons = 0
BWidth = 74
BHeight = 74
BilderPfad = "Bilder"
Spalten = 3
# BorderStyle : none | single
BorderStyle = "none"
[Button1]
Name = "Bildschirm Spiegeln"
exec = sh -c "/usr/local/bin/bildschirme.sh"
BefehlsAusgabeAnzeigen = 0
Hier erscheint die Buttonbar übrigens oben links.
* **FixedPosition=1** bewirkt, dass sich das ButtonBar Fenster auch nach Auflösungsänderung an der selben Bildschirmstelle befindet und sich selbständig sichtbar positioniert
* **AlleBildschirme=1** zeigt die ButtonBar auf Haupt- und erweiterten Bildschirm an (ab Version 0.21)
* Die Option **BefehlsAusgabeAnzeigen** macht nur Sinn, wenn der Befehl auch eine echte Ausgabe hat, sonst erscheint ein leeres Fenster. Fehlermeldungen werden in dem Fenster nicht ausgegeben.
* **Name="Button Bar"**: Text, der in der Kopfzeile des Fensters angezeigt wird.
[Programm]
Name="Linuxmuster Button Bar"
width = 250
ButtonAnzahl = 4
xpos = -20
ypos = 40
FixedPosition = 0
Hintergrundfarbe = $FFFFFF
# BorderStyle : none | single
BorderStyle = "single"
[Button1]
Name = "Erster - ls"
exec = "ls"
BefehlsAusgabeAnzeigen = 1
[Button2]
Name = "Zweiter - pwd"
exec = "pwd"
BefehlsAusgabeAnzeigen = 1
[Button3]
Name = "Dritter date"
exec = "date"
BefehlsAusgabeAnzeigen = 1
[Button4]
Name = "Vierter - mit sh uptime"
exec = sh -c "echo 'uptime:' ; uptime"
BefehlsAusgabeAnzeigen = 1
Um eine einfache Auflösungsumschaltung zu realisieren, benutzt man folgende cfg-Datei. Die genauen xrandr-Optionen müssen zum eigenen System vorher ermittelt werden, siehe -> [[anwenderwiki:linuxclient:bildschirmaufloesung?s[]=xrandr]].\\
{{ :anwenderwiki:linuxclient:buttonbar-2.png?300 |}}
[Programm]
Name="Auflösung"
width = 100
xpos = -20
ypos = 40
FixedPosition = 1
Hintergrundfarbe = $FFFFFF
# BorderStyle : none | single
BorderStyle = "none"
# ButtonAnzahl maximal 20
ButtonAnzahl = 2
[Button1]
Name = "800x600"
exec = "xrandr --output VGA1 --mode 800x600"
BefehlsAusgabeAnzeigen = 0
[Button2]
Name = "1280x960"
exec = "xrandr --output VGA1 --mode 1280x960"
BefehlsAusgabeAnzeigen = 0
===== Auflösung "hart" vorgeben =====
Hinter einem VGA-Splitter o.ä. erkennt Ubuntu die Fähigkeiten des Monitors/Beamer nicht, dann müssen diese "hart" gesetzt werden, z.B. mit den drei Befehlen:
xrandr --newmode "1280x800_60.00" 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync
xrandr --addmode VGA1 "1280x800_60.00"
xrandr --output VGA1 --mode "1280x800_60.00"
Die vielen Parameter für den newmode-Befehl muss man vorher durch den cvt-Befehl ermitteln:
# cvt 1280 800 60
In der buttonbar.cfg-Datei ruft man dann diese Befehle hintereinander ab:
[Button2]
Name = "Beamer-1280x800"
exec = sh -c "xrandr --newmode '1280x800_60.00' 83.50 1280 1352 1480 1680 800 803 809 831 -hsync +vsync ; xrandr --addmode VGA1 '1280x800_60.00' ; xrandr --output VGA1 --mode '1280x800_60.00'"
BefehlsAusgabeAnzeigen = 0
===== Bildschirme spiegeln =====
Um den Lehrermonitor und einen angeschlossenen Beamer in den Spiegel-Modus zu versetzen, ohne die Systemeinstellungen aufrufen zu müssen:
[Button1]
Name = "Bildschirm Spiegeln"
exec = "xrandr --output VGA-1 --mode 1280x800 --output HDMI-2 --mode 1280x800 --same-as VGA-1"
BefehlsAusgabeAnzeigen = 0
Bei mehreren Computerräumen mit verschiedenen Monitoren und Beamern kann man den Befehl auch an ein shell-Script auslagern. Im shell-Script können dann je nach PC-Name verschiedene Anschlüsse oder Auflösungen aktiviert werden und man kann trotzdem überall das selbe LINBO-Image verwenden. Siehe
[[anwenderwiki:linuxclient:buttonbar-beispiel|Beispiel-Script]]
[Button1]
Name = "Bildschirm Spiegeln"
exec = "/opt/buttonbar/bildschirme.sh"
BefehlsAusgabeAnzeigen = 0
===== Befehl per sudo ausführen =====
Alle Befehle werden zunächst im Userkontext ausgeführt. Wenn diese jedoch root-Rechte benötigen, dann muss der gewünschte Befehl per sudo aufgerufen werden. Um dies passwortlos für alle User zu erlauben muss eine neue Datei im Verzeichnis ''/etc/sudoers.d/'' erzeugt werden:
All All=NOPASSWD: /bin/mount
[Button3]
Name = "sudo mount -a"
exec = "sudo /bin/mount -a"
BefehlsAusgabeAnzeigen = 0
===== Grafische ButtonBar =====
Ab Version 0.20 der Buttonbar kann sie auch grafische Buttons in einer oder mehreren Spalten darstellen. Die Grafiken zu den Buttons müssen im BMP-Format vorliegen.\\
{{ :anwenderwiki:linuxclient:bttonbar-0.20-screenshot.jpg?300 | }}
Konfigurationsdatei:
...
BilderButtons = 1
BWidth = 74
BHeight = 74
BilderPfad = "Bilder"
Spalten = 3
# ButtonAnzahl maximal 20
ButtonAnzahl = 5
[Button1]
Name = "800x600"
exec = "xrandr --output VBOX0 --mode 800x600"
BefehlsAusgabeAnzeigen = 0
GrafikName= "gluehbirne.bmp"
...
* **BilderButtons=1** schaltet die Grafik-Funktion ein und die Texte ab.
* **BWidth, BHeight** gibt die Breite und Höhe der Buttons an, sollte zur Größe der Grafiken passen, somit etwas größer als die Grafiken sein (Diese werden __nicht__ skaliert). Z.B.: Grafiken mit Größe 64x64 Bit benötigen Buttons mit 74x74.
* **Spalten** gibt die Anzahl der Spalten der ButtonBar an. Für eine horizontale Darstellung wählt man soviele Spalten wie Buttons. Diese Funktion ist __nur__ für Grafiken verfügbar.
* **GrafikName** Angabe des Namens im Verzeichnis Bilder, das sich im Programm-Pfad befinden muss.
===== Downloads =====
Download 64 Bit ->
{{:anwenderwiki:linuxclient:buttonbar-0.23-x86_64.tar.bz2|}}
Download 64 Bit ->
{{:anwenderwiki:linuxclient:buttonbar-0.21a-x86_64.tar.bz2|}}\\
Download 64 Bit ->
{{:anwenderwiki:linuxclient:buttonbar-0.1-x86_64.tar.gz|}}\\
Download 32 Bit ->
{{:anwenderwiki:linuxclient:buttonbar-0.1-i386.tar.gz|}}\\
Download Source ->
{{:anwenderwiki:linuxclient:buttonbar-0.1-src.tar|}} (Programmiert mit Lazarus)
===== Bekannte Probleme =====
* ButtonBar startet sehr verzögert, bis alle Buttons angezeigt werden. Mögliche Abhilfe ist die Installation eines Paketes für gnome# apt install appmenu-gtk2-module