Jak powiedzieć aplikacji, aby otworzyła się w określonym obszarze roboczym?
Więcej informacji:
Lubię mieć moje C ++ IDE w obszarze roboczym 2, moje Java IDE w obszarze roboczym 3 oraz moją pocztę e-mail, przeglądarkę i różne w obszarze roboczym cztery. Używam również skryptu powłoki, który wykonuje się po zalogowaniu:
#!/bin/bash
gnome-terminal & # WS 1
netbeans-6-9-1 & # WS2
qtcreator-2-0-1 & # WS 3
firefox & # WS 4
thunderbird & # WS 4
Oczywiście obecnie wszystko otwiera się w bieżącym obszarze roboczym ... Czy istnieje sposób, aby określić obszar roboczy, w którym każde polecenie powinno się uruchomić?
Z góry dziękuję!
Odpowiedzi:
Możesz użyć devilspie, aby ustawić reguły, dla których okien należy przejść w danym obszarze roboczym.
Zobacz dokumentację na przykład dokładnie tego.
Ale MrStatic ma też dobrą sugestię. Wypróbuj najpierw, może nawet nie potrzebujesz skryptu powłoki.
Jeśli potrzebujesz, aby była to komenda, której możesz użyć w skrypcie powłoki, spójrz na wmctrl .
źródło
Wypróbowałem to
wmctrl
narzędzie i stwierdziłem, że najłatwiejszym rozwiązaniem, które mi pomogło, jest przeniesienie okna za pomocą następującego polecenia:Zauważ, że numery obszarów roboczych zaczynają się od 0. Na koniec możesz przejść do preferowanego obszaru roboczego za pomocą polecenia:
źródło
Korzystam z tej podstawowej struktury w skryptach, aby otworzyć określony zestaw aplikacji w określonych obszarach roboczych. Przykład otwiera mój terminal i przenosi go do obszaru roboczego 1 ...
źródło
Zainstaluj wmctrl
I stwórz skrypt (w tym przykładzie thunderbird na drugim obszarze roboczym (
-t 1
)):Aby poznać nazwę aplikacji na wmctrl, możesz ją wyświetlić, dotykając terminala:
I zastąp go poprawną nazwą w skrypcie.
Bądź ostrożny z wielką literą („Thunderbird”, a nie „thunderbird”) !!
Inny przykład z firefoxem w przestrzeni roboczej 3d (
-t 2
):Pracuj nad Debain 10 z Cinnamon. Ale powinien działać dla wszystkich
źródło
Jestem całkiem pewien, że nie da się tego zrobić. Powodem wydaje się być to, że środowiska okienkowe, takie jak GNOME, oczekują, że oprogramowanie to poradzi, a twórcy oprogramowania oczekują, że poradzą sobie z tym środowiska okienkowe.
Devilspie to dobry pomysł, ale dopasowuje wzorce (tzn. Jeśli nazwa == 'google-chrome'). Co się stanie, jeśli otworzę dwie przeglądarki? Oboje zostali przeniesieni do tego samego obszaru roboczego? Mam obszary robocze 6x3 = 18, każdy z określonym wystąpieniem chrome. Pomógłbym, gdybym mógł zmienić nazwę tych programów (np. „Google-chrome1”, „google-chrome2” ...), ale nie mogę znaleźć sposobu, aby to zrobić. Więc musimy użyć wmctrl.
wmctrl jest nieco lepszym b / c oprócz korzystania z tytułów okien, możesz także użyć identyfikatorów okien lub po prostu użyć aktualnie podświetlonego okna. Identyfikatory okien są kłopotliwe z uzyskaniem b / c, ponieważ nie są natychmiast generowane. Patrz poniżej
ale wtedy kontrola nie jest zwracana do wiersza poleceń, dopóki PO GEDIT nie zostanie zakończony. Wszystko, co musimy zrobić, aby to obejść, to
&
znakale teraz kontrola jest w 99,999% przypadków zwracana do wiersza poleceń PRZED menedżerami okien uruchamiającymi okno i nie ma możliwości znalezienia identyfikatora okna. Należy skonfigurować bardzo złożoną technikę zapętlania, aby sprawdzić, czy zostały utworzone jakieś nowe okna i zgadnąć, czy jest to okno, którego szukamy.
Sprawdzanie aktywnego okna za pomocą flagi
:ACTIVE:
ma ten sam problem, nie czeka na zakończenie działania programu.wmctrl
uderza mnie jako bardzo dziwny program. Wygląda na to, że został zaprojektowany dla osób bez myszy lub niezdolnych do fizycznego przeciągania programów między obszarami roboczymi.źródło