AA_123rf-27335989_GiuseppeAnello-123RF.jpg

© Giuseppe Anello, 123RF

Clipboard steuern via Zenity und Xclip

Maßanfertigung

Nicht jeder Fenstermanager bringt ein eigenes Programm für das Verwalten der Zwischenablage mit. Mit Zenity und einem Skript steuern Sie komfortabel das überall verwendbare Xclip.

Typische Programme für das Verwalten der Zwischenablage, wie Klipper für KDE oder Clipit, das sich unter anderem in Gnome integriert, bringen umfangreiche Features für die Verwaltung der Zwischenablage mit. Allerdings lassen sie sich nicht unbedingt so leicht in jeden Fenstermanager integrieren. Wer keinen der Desktop-Platzhirsche nutzt, steht also unter Umständen ohne eine Clipboard-Verwaltung da. Zudem arbeiten diese Programme in der Regel so, dass sie eine Historie der Zwischenablage anlegen, in der ältere Einträge immer weiter nach hinten rutschen und schließlich aus der Liste verschwinden.

Die passenden Tools

Um unter Linux möglichst schnell eine Anwendung zu erstellen, bedarf es oft nur der passenden Tools, etwas Kreativität und ein wenig Fantasie. Das gilt auch für das Implementieren einer selbstgestrickten Verwaltung für die Zwischenablage: Im Folgenden zeigen wir, wie Sie mit Zenity [1] schlanke Dialoge für das Skripten der Zwischenablage mittels Xclip [2] einrichten und die so erstellte GUI-Anwendung schließlich auf effiziente Weise für alltägliche Aufgaben in den Desktop integrieren.

Sowohl Zenity als auch Xclip lassen sich in den gängigen Distributionen schnell über den jeweiligen Paketmanager installiert. Über die Kommandozeile installieren Sie beide via Apt oder Yum auch in einem Rutsch, indem Sie entweder sudo apt-get install zenity xclip auf einem DEB-basierten System oder yum install zenity xclip auf einem RPM-basierten Rechner eingeben.

Die hier vorgestellte Zwischenablage umfasst zehn Speicherplätze, deren Inhalt Sie belegen, abrufen, löschen oder auch nachträglich mit einem Editor manuell bearbeiten können.

Ein paar Zeilen Skript

Listing 1 legt zunächst einen Editor fest, mit dem Sie die einzelnen Stellplätze der Zwischenablage nachträglich manuell bearbeiten, und definiert ein Verzeichnis für die Inhalte der Zwischenablage. Das Kommando test in Zeile 4 überprüft, ob dieses Verzeichnis bereits besteht, und legt es neu an, falls es bislang noch nicht existiert.

Listing 1

#!/bin/bash
EDITOR=gedit
SPEICHERPFAD=~/.zwischenablage
test ! -d $SPEICHERPFAD && mkdir $SPEICHERPFAD
for x in $(seq 1 10); do
  test ! -f ${SPEICHERPFAD}/speicher${x} && > ${SPEICHERPFAD}/speicher${x}
done
aktion=$1
laenge=80
sp=$(zenity --list --title="Speicherplatz auswählen" \
     --text "Speicher ${1}!\nAktuell in der Zwischenablage: \
            $(xclip -o | cut -c 1-${laenge})" \
     --column "Speicherplatz" \
     "Speicher 1: $(cat ${SPEICHERPFAD}/speicher1 | cut -c 1-${laenge})" \
     "Speicher 2: $(cat ${SPEICHERPFAD}/speicher2 | cut -c 1-${laenge})" \
     "Speicher 3: $(cat ${SPEICHERPFAD}/speicher3 | cut -c 1-${laenge})" \
     "Speicher 4: $(cat ${SPEICHERPFAD}/speicher4 | cut -c 1-${laenge})" \
     "Speicher 5: $(cat ${SPEICHERPFAD}/speicher5 | cut -c 1-${laenge})" \
     "Speicher 6: $(cat ${SPEICHERPFAD}/speicher6 | cut -c 1-${laenge})" \
     "Speicher 7: $(cat ${SPEICHERPFAD}/speicher7 | cut -c 1-${laenge})" \
     "Speicher 8: $(cat ${SPEICHERPFAD}/speicher8 | cut -c 1-${laenge})" \
     "Speicher 9: $(cat ${SPEICHERPFAD}/speicher9 | cut -c 1-${laenge})" \
     "Speicher 10: $(cat ${SPEICHERPFAD}/speicher10 | cut -c 1-${laenge})" \
     | sed "1 s/Speicher /speicher/1" | grep -Eo "speicher[0-9]{1,2}")
if [ $aktion = "belegen" ] && [ $(echo -n $sp | wc -m) -gt 0 ] 2>/dev/null; then
  xclip -o > ${SPEICHERPFAD}/${sp}
elif [ $aktion = "abrufen" ] && [ $(echo -n $sp | wc -m) -gt 0 ] 2>/dev/null; then
  cat ${SPEICHERPFAD}/${sp} | xclip -i -selection primary
  cat ${SPEICHERPFAD}/${sp} | xclip -i -selection secondary
  cat ${SPEICHERPFAD}/${sp} | xclip -i -selection clipboard
elif [ $aktion = "löschen" ] && [ $(echo -n $sp | wc -m) -gt 0 ] 2>/dev/null; then
  > ${SPEICHERPFAD}/${sp}
elif [ $aktion = "bearbeiten" ] && [ $(echo -n $sp | wc -m) -gt 0 ] 2>/dev/null; then
  $EDITOR ${SPEICHERPFAD}/${sp}
fi

Der Codeblock in den Zeilen 6 bis 8 legt die einzelnen Speicherplätze für die Zwischenablage an. Dazu arbeitet eine For-Schleife eine Liste ab, die das Kommando seq 1 10 erstellt hat. Innerhalb des Ausführungsblocks zwischen do und done erscheint die jeweilige Ziffer anstelle von ${x}. Zeile 7 testet also zunächst, ob die Dateien speicher1 bis speicher10 im Zielverzeichnis bestehen. Ist dies nicht der Fall, legt der hintere Abschnitt von Zeile 7 diese Dateien durch den Umleitungsoperator > an.

In Zeile 10 fängt das Skript den ersten übergebenen Parameter ab und speichert ihn in der Variablen aktion. Zeile 11 definiert die maximale Länge für die Zeichenkette, die der Zenity-Dialog anzeigen soll. Das verhindert, dass beim Abspeichern einer längeren Textpassage in einem der Speicherplätze der entsprechende Dialog unnötig in die Breite wächst. Die ersten 80 Zeichen dürften völlig genügen, um zu erkennen, welcher Text in den Speicherplatz wandert.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 02/2018: PAKETE VERWALTEN

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

sharklinux
Gerd-Peter Behrendt, 18.01.2018 23:58, 0 Antworten
Hallo zusammen, ich habe sharklinux von der DVD Installiert. 2x, jedesmal nach dem Reboot ist di...
Anfänger sucht Ratschläge
Alucard Nosferatu, 18.01.2018 21:56, 3 Antworten
Guten Tag, meine Wenigkeit würde gerne auf einer meiner Festplatten von meinen Feldrechnern e...
Suchprogramm
Heiko Taeuber, 17.01.2018 21:12, 1 Antworten
Hallo liebe Community, keine Ahnung ob dieses Thema hier schon einmal gepostet wurde. Ich hab...
Linux Mint als Zweitsystem
Wolfgang Robert Luhn, 13.01.2018 19:28, 4 Antworten
Wer kann mir helfen??? Habe einen neuen Laptop mit vorinstaliertem Windows 10 gekauft. Möchte g...
externe soundkarte Kaufempfehlung
lara grafstr , 13.01.2018 10:20, 4 Antworten
Hallo Ich bin auf Suche nach einer externen soundkarte.. Max 150 Euro Die Wiedergabe is...