{{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