%20fest.png)
Ich verwende jetzt dwm
einen Fenstermanager und weiß, dass ich Regeln festlegen kann, um einer Anwendung einen bestimmten Tag zuzuweisen, und zwar wie folgt:
static const Rule rules[] = {
/* xprop(1):
* WM_CLASS(STRING) = instance, class
* WM_NAME(STRING) = title
*/
/* class instance title tags mask isfloating monitor */
{ "Gimp", NULL, NULL, 0, True, -1 },
{ "Google-chrome", NULL, NULL, 1 << 1, False, -1 }, // set chrome's tab. 2013-12-13
{ "UXTerm", NULL, "proxy", 1 << 8, False, -1 }, // let goagent proxy run in tab #9. 2013-12-13
};
Jetzt möchte ich mehrere Chrome-Instanzen mit verschiedenen Webseiten ausführen, die verschiedenen Tags zugeordnet sind. Das Problem ist, dass einige der Titel der Webseiten dynamisch sind. Daher denke ich, dass es keine gute Praxis ist, Regeln nach Titel festzulegen.
Hier ist meine Frage: Wie lege ich den Instanznamen von Google Chrome (oder einer beliebigen X11-Anwendung) fest, damit ich die Regeln nach Instanznamen erstellen kann?
Antwort1
Bei Chrome (oder Chromium) können Sie das zweite Element ändern, WM_CLASS
indem Sie es beim Start mit dem --class="myClass"
Flag (Dokumentation). Dies betrifft jedoch die class
Spalte Ihrer dwm
Konfiguration und nicht die instance
, die das erste Element des WM_CLASS
Arrays wäre.
Die Lösung könnte dann darin bestehen, --app=URI
stattdessen zu verwenden, wodurch diskrete Instanzen mit "festen" Namen erstellt werden, die auf der Eingabe basierenURI. Dies löst das Problem des dynamischen Registerkartentitels. Der Nachteil besteht jedoch darin, dass im --app
Modus nur eine Registerkarte möglich ist (und diese ist randlos).
Was die allgemeine Frage betrifft, könnte man wmctrl
die Fensterklasse manuell ändern:http://tripie.sweb.cz/utils/wmctrl/