Wie kann eine Anwendung in einem bestimmten Arbeitsbereich geöffnet werden?
Mehr Info:
Ich möchte meine C ++ - IDE in Arbeitsbereich 2, meine Java-IDE in Arbeitsbereich 3 und meine E-Mail-Adresse, meinen Browser und Sonstiges in Arbeitsbereich 4 haben. Ich verwende auch ein Shell-Skript, das beim Anmelden ausgeführt wird:
#!/bin/bash
gnome-terminal & # WS 1
netbeans-6-9-1 & # WS2
qtcreator-2-0-1 & # WS 3
firefox & # WS 4
thunderbird & # WS 4
Natürlich wird derzeit alles im aktuellen Arbeitsbereich geöffnet ... Kann ich angeben, in welchem Arbeitsbereich jeder Befehl beginnen soll?
Danke im Voraus!
Antworten:
Mit devilspie können Sie Regeln festlegen , für welche Fenster in welchem Arbeitsbereich Fenster angezeigt werden .
Ein Beispiel dafür finden Sie in den Dokumenten .
Aber MrStatic hat auch einen guten Vorschlag. Versuchen Sie es zuerst, möglicherweise benötigen Sie nicht einmal Ihr Shell-Skript.
Wenn Sie einen Befehl benötigen, den Sie in einem Shell-Skript verwenden können, schauen Sie sich wmctrl an .
quelle
Ich habe das
wmctrl
Tool ausprobiert und festgestellt, dass die einfachste Lösung für mich darin besteht, das Fenster mit dem folgenden Befehl zu verschieben:Beachten Sie, dass die Arbeitsbereichsnummern bei 0 beginnen. Zuletzt können Sie mit dem folgenden Befehl zu Ihrem bevorzugten Arbeitsbereich wechseln:
quelle
Ich verwende diese Grundstruktur in Skripten, um einen bestimmten Satz von Anwendungen in bestimmten Arbeitsbereichen zu öffnen. Das Beispiel öffnet mein Terminal und verschiebt es in den Arbeitsbereich 1 ...
quelle
Installieren Sie wmctrl
Und erstellen Sie ein Skript (in diesem Beispiel Thunderbird im zweiten Arbeitsbereich (
-t 1
)):Um Ihren Anwendungsnamen auf wmctrl zu erfahren, können Sie ihn anzeigen, indem Sie auf Ihr Terminal tippen:
Und ersetzen Sie es durch den richtigen Namen im Skript.
Seien Sie vorsichtig mit dem Großbuchstaben ("Thunderbird" nicht "Thunderbird") !!
Anderes Beispiel mit Firefox im 3D-Arbeitsbereich (
-t 2
):Arbeite mit Zimt an Debain 10. Sollte aber für alle funktionieren
quelle
Ich bin mir ziemlich sicher, dass das unmöglich ist. Der Grund dafür ist, dass Fensterumgebungen wie GNOME erwarten, dass Software dies handhabt, und Softwarehersteller erwarten, dass Fensterumgebungen dies handhaben.
Devilspie ist eine gute Idee, aber es führt einen Mustervergleich durch (dh wenn name == 'google-chrome'). Was passiert also, wenn ich zwei Browser öffne? Sie werden beide in den gleichen Arbeitsbereich verschoben? Ich habe 6x3 = 18 Arbeitsbereiche, jeder mit einer bestimmten Chrominstanz. Es wäre hilfreich, wenn ich diese Programme umbenennen könnte (z. B. "google-chrome1", "google-chrome2" ...), aber ich kann keinen Weg finden, dies zu tun. Also müssen wir wmctrl verwenden.
wmctrl ist ein bisschen besser b / c zusätzlich zur Verwendung von Fenstertiteln. Sie können auch Fenster-IDs verwenden oder einfach das aktuell hervorgehobene Fenster verwenden. Fenster-IDs sind ein Problem, da sie nicht sofort generiert werden. Siehe unten
Die Steuerung wird jedoch erst nach dem Beenden von gedit an die Befehlszeile zurückgegeben. Alles, was wir tun müssen, um dies zu umgehen, ist ein
&
Zeichen zu setzenJetzt wird die Kontrolle in 99,999% der Fälle an die Befehlszeile zurückgegeben, BEVOR die Fenstermanager das Fenster starten und die Fenster-ID nicht gefunden werden kann. Man muss eine sehr komplexe Schleifentechnik einrichten, um zu testen, ob neue Fenster erstellt wurden, und um zu erraten, ob es sich um das gesuchte Fenster handelt.
Das Überprüfen des aktiven Fensters über das Flag
:ACTIVE:
hat das gleiche Problem. Es wartet nicht darauf, dass das Programm beendet wird.wmctrl
scheint mir ein sehr seltsames Programm zu sein. Es scheint, als sei es für Personen ohne Maus konzipiert oder nicht in der Lage, ihre Programme physisch über Arbeitsbereiche zu ziehen.quelle