Wiki

Devilspie

ubuntuusers.de » Wiki » Devilspie

Devilspie

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Devilspie {en} ist ein Fenstererkennungs-Programm, welches die Funktionalität von Fenstermanagern erweitern kann. Inspiriert vom Sawfishs "Matched Windows"-Feature erkennt es Fenster, wenn sie geöffnet werden und verändert diese je nach Einstellung.

Auf einem typischen Desktop erfüllt Devilspie z.B. folgende Aufgaben:

  • Der Webbrowser startet immer auf der dritten Arbeitsfläche und erscheint nicht in der Taskliste

  • Der Chat-Client hat ein Systray-Plugin, startet immer auf der sechsten Arbeitsfläche und erscheint nicht in der Taskliste

  • der RSS-Reader erscheint ebenfalls nicht in der Taskliste

Natürlich kann Devilspie noch mehr..

Hinweis:

Devilspie funktioniert nicht oder nur eingeschränkt mit dem Fenstermanager Compiz zusammen. Das Setzen der Arbeitsfläche funktioniert mit der Option "set_viewport", aber nicht mit der Option "set_workspace".

Installation

Devilspie ist als Paket

  • devilspie (universe [2])

Wiki/Vorlagen/Installbutton/button.png

verfügbar und kann über die Paketverwaltung [1] installiert werden.

Devilspie starten

Das Programm wird mit dem Befehl "devilspie" gestartet [3]. Dadurch wird der Devilspie-Daemon mitgeladen, wodurch die Konfigurationsdateien eingelesen werden. Diese müssen jedoch zuvor erstellt werden. Damit der Manager auch bei jedem Anmelden gestartet wird, sollte man ihn dem Autostart [6] hinzufügen.

Konfiguration

Devilspie liest die Konfiguration aus den *.ds-Dateien, die man im Homeverzeichnis im Ordner .devilspie ablegen muss. (Sollte das Verzeichnis nicht existieren, legt man es einfach an.) Um mehrere Bedingungen in einer Datei oder mehrere Anweisungen innerhalb einer Bedingung zu verwenden, muss man das "begin"-Konstrukt verwenden! In diesem Beispiel wird mit der Datei firefox.ds erreicht, dass der Firefox auf der Arbeitsfläche 2 startet:

(
if
  (is (application_name) "Firefox")
  (set_workspace 2)
)

Dieses Bespiel macht die Pidgin-Buddyliste mit der Größe 340×630 an der Position (4,150) auf allen Abeitsflächen sichtbar (pin):

(
if
    (and
        (is (application_name) "pidgin")
        (is (window_name) "Buddy-Liste")
    )
    (begin
        (pin)
        (geometry "340x630+4+150")
    )
)

Folgendes Beispiel öffnet Thunar und den Gnome-Terminal immer maximiert:

(
begin
    (if (is (application_name) "Thunar")        (maximize) )
    (if (is (application_name) "Terminal")      (maximize) )
)

Damit nur die Fenster des Dateimanagers maximiert werden, die auch Dateien anzeigen (also z.B. nicht "Neue Datei erstellen.."), können reguläre Ausdrücke verwendet werden, indem man den Operator "matches" benutzt:

(
if
        (and
                (is (application_name) "Thunar")
                (matches (window_name) ".+Dateimanager")
        )
        (maximize)
)

Bei manchen Anwendungen steht der Name, mit denen sie aufgerufen werden, an anderer Stelle. So sind die folgenden Programme wie folgt zu identifizieren:

Programm Beispiel für die Identifizierung
gedit
(if	(and	(is	(application_name)	"Text Editor"	)
		(is	(window_class) 		"Gedit"		)	)	(set_workspace 4)	)
gnome-terminal
(if	(and	(is	(application_name)	"Terminal"	)
		(is	(window_class) 		"Gnome-terminal")	)	(set_workspace 4)	)

Weitere Aktionen, die innerhalb von "begin" stehen können, sind

Aktion Wirkung
fullscreen Vollbild-Modus
focus Setze Fokus
center Zentrieren
minimize Minimieren
maximize Maximieren
maximize_vertically Vertikal maximieren
maximize_horizontally Horizontal maximieren
shade Rollen
unshade Entrollen
close Schließen
pin Pin(Sticky)Modus
unpin Pin Modus beenden
skip_pager Nicht im Pager anzeigen
skip_tasklist Nicht in Taskleiste anzeigen
above Vordergrund (top)
below Hintergrund (hinter anderen Fenstern)
undecorate Fensterdekoration entfernen
wintype TYPE Fensterdekoration ändern (TYPE kann sein normal, dialog, menu, toolbar, splashscreen, utility, dock, desktop)
geometry GEO Größe und Position ( GEO kann z.B. sein: 300×200+0-22; 800x600“; +17+2)
print text Gibt den Text auf die Standard-Schnittstelle aus (ohne eine Zeilenschaltung am Ende), sinnvoll für Debug-Zwecke.
println text Gibt den Text auf die Standard-Schnittstelle aus (mit einer Zeilenschaltung am Ende), sinnvoll für Debug-Zwecke.
set_workspace n Verschiebt die Anwendung beim Start auf die Arbeitsfläche n. Die Desktop-Effekte müssen unter gnome abgeschaltet sein damit es wirkt.
set_viewport n Wie set_workspace, nur funktioniert es auch mit Desktopeffekten.

Sollte man sich nicht sicher sein, ob die erstellten Konfigurationsdateien korrekt eingelesen werden können, kann dies mit dem Parameter --debug überprüft werden:

devilspie --debug 

Mit (debug) in einer *.ds-Datei kann man sich die aktuellen Fenster ausgeben lassen. Eine sehr ausführliche englische Anleitung findet man unter hier {en} .

Fenster identifizieren

Wie aber findet man den benötigten Programmnamen ("application_name") oder, um genauer zu differenzieren, den Titel ("window_name") heraus?

Der Programmname entspricht der WM_CLASS. Also öffnet man ein Terminal [7] und gibt folgenden Befehl ein:

xprop | grep WM_CLASS\(STRING\) 

Daraufhin verändert sich der Mauszeiger. Danach einfach auf das gewünschte Fenster klicken.

Der Titel wird in der Fensterdekoration oben angezeigt. Alternativ kann man ihn mit folgendem Befehl herausfinden:

xprop | grep WM_NAME\(STRING\) 

Für den Fall, dass ein Programm viele Floating Windows verwendet, die zu allem Überfluss auch noch variierende Titel verwenden, kann man für das Devilspie-Skript anstatt application_name oder window_name auch window_role als Identifizierung verwenden:

xprop | grep WM_WINDOW_ROLE\(STRING\) 

Ein konkretes Anwendungsbeispiel hierfür wäre GIMP, dessen Dock und Bildfenster nicht über die beiden oben genannten Identifizierungsmöglichkeiten ausreichend von Devilspie angesprochen werden können.

Alte Konfiguration übernehmen

Da sich die Syntax der Definitionsdatei mit der Version 0.13 grundlegend geändert hat, können die unter einer alten Version angelegten Definitionsdatei nicht verwendet werden. Um nicht alle Definitionen neu anlegen zu müssen, hat joshmachine aus dem englischsprachigen Ubuntuforum ein XSLT-Skript zur Konvertierung der alten in die neue Syntax geschrieben. (Originalbeitrag {en} )

Zunächst muss das Archiv mit dem Skript heruntergeladen und ins Homeverzeichnis entpackt werden [5]. Nun erfolgt die Konvertierung mit folgendem Befehl:

cd ~
xsltproc devilspie.xsl .devilspie.xml 

Für die neuen Definitionsdateien wird ein neues Verzeichnis angelegt, in das die neu erzeugten Dateien verschoben werden können:

mkdir .devilspie
mv *.ds .devilspie/ 

Nun kann Devilspie wie gewohnt verwendet werden.


Diese Revision wurde am 3. Juni 2010 um 18:15 Uhr von freebirth one erstellt.
Dieser Seite wurden folgende Begriffe zugeordnet: Desktop, Fenstermanager

Passwort vergessen?