Uruchamiam Matlab
skrypt w workspace 1
. To generuje kilka wykresów. W międzyczasie przełączam się workspace 2
i tam pracuję. Mój problem polega na tym, że pojawiają się wątki workspace 2
. Czy można zablokować oprogramowanie w obszarze roboczym. Więc chociaż Matlab
generuje wykresy workspace 1
, mogę pracować workspace 2
bez zakłóceń pojawiających się wykresów?
14.04
unity
workspaces
matlab
O LA LA
źródło
źródło
xprop WM_CLASS
, a następnie kliknąć okno?) Proszę również dodać WM_CLASS Matlaba.Odpowiedzi:
WAŻNA EDYCJA
Poniżej przepisana wersja skryptu z pierwszej odpowiedzi (poniżej). Różnice:
WM_CLASS
i docelowy obszar roboczy są teraz argumentami do uruchomienia skryptu. Używaj tylko pierwszej lub drugiej (identyfikującej) częściWM_CLASS
(patrz poniżej: jak używać)Po uruchomieniu skryptu wyświetla powiadomienie (przykład
gedit
):Scenariusz
Jak używać
Skrypt potrzebuje zarówno
wmctrl
axdotool
:Skopiuj powyższy skrypt do pustego pliku i zapisz go jako
lock_towspace.py
O konkretnej aplikacji dowiedz się
WM_CLASS
: otwórz aplikację, uruchom w terminalu:Wynik będzie wyglądał następująco (w twoim przypadku):
Użyj pierwszej lub drugiej części polecenia, aby uruchomić skrypt.
Polecenie uruchomienia skryptu to:
W poleceniu ostatnia sekcja;
2,2
to obszar roboczy, w którym chcesz zablokować aplikację (bez spacji: (!) kolumna, wiersz ), w formacie „ludzkim”; pierwsza kolumna / wiersz to1,1
NIEAKTUALIZOWANA ODPOWIEDŹ:
(drugi) WERSJA TESTOWA
Poniższy skrypt blokuje określoną aplikację w jej początkowym obszarze roboczym. Jeśli skrypt zostanie uruchomiony, określa, w którym obszarze roboczym znajduje się aplikacja. Wszystkie dodatkowe okna tworzone przez aplikację zostaną przeniesione do tego samego obszaru roboczego w ułamku sekundy.
Problem fokusu jest rozwiązany przez automatyczne ponowne ustawienie ostrości na oknie, które było fokusowane przed utworzeniem dodatkowego okna.
Scenariusz
Jak używać
Skrypt potrzebuje zarówno, jak
wmctrl
ixdotool
Skopiuj skrypt do pustego pliku i zapisz go jako
keep_workspace.py
określ `WM_CLASS 'swojej aplikacji, otwierając aplikację, a następnie otwórz terminal i uruchom polecenie:
Następnie kliknij okno aplikacji. Skopiuj wynik, wyglądając jak
"sun-awt-X11-XFramePeer", "MATLAB R2015a - academic use"
w twoim przypadku, i umieść go między pojedynczymi cudzysłowami w sekcji head skryptu, jak wskazano.Uruchom skrypt za pomocą polecenia:
Jeśli działa tak, jak chcesz, dodam funkcję przełączania. Chociaż działa w moim systemie już od kilku godzin, jednak najpierw może wymagać drobnych poprawek.
Notatki
Chociaż nie należy zauważyć, skrypt robi dodać trochę obciążenia procesora w systemie. W moim starszym systemie zauważyłem wzrost o 3-10%. Jeśli podoba ci się, jak to działa, prawdopodobnie poprawię go jeszcze bardziej, aby zmniejszyć obciążenie.
Skrypt, jak to jest, zakłada, że dodatkowe okna są tej samej klasy co główne okno, jak wskazano w komentarzu. Z (bardzo) prostą zmianą okna pomocnicze mogą jednak należeć do innej klasy.
Wyjaśnienie
Chociaż prawdopodobnie nie jest zbyt interesujący dla przeciętnego czytelnika, skrypt działa poprzez obliczanie wektorów. Podczas uruchamiania skrypt oblicza:
wmctrl -d
wmctrl -lG
Od tego momentu skrypt szuka nowych okien tej samej aplikacji, z wyjściem
xprop WM_CLASS
, sprawdza ich pozycję w taki sam sposób jak powyżej i przenosi je do „oryginalnego” obszaru roboczego.Ponieważ nowo utworzone okno „ukradło” fokus z ostatnio używanego okna, nad którym pracował użytkownik, fokus jest następnie ustawiany na okno, które miało fokus wcześniej.
źródło
application
iworkspace
ustawić. Jeśli napotkasz możliwe błędy, proszę o tym wspomnieć!WM_CLASS
są identyczne, drugi zostanie przeniesiony do tego, który ustawiłeś w poleceniu.