Mam dwa okna, A i B. Czy można w jakiś sposób połączyć ze sobą dwa okna, tak że przejście na A również podnosi B, czy przejście na B również podnosi A?
Rozumiem, że używanie wielu obszarów roboczych jest alternatywną opcją, ale zastanawiałem się, czy jest to również możliwe?
command-line
scripts
shortcut-keys
window-manager
window
Simon Tong
źródło
źródło
Odpowiedzi:
Wprowadzenie
Poniższy skrypt pozwala wybrać dwa okna, a gdy oba okna są otwarte, podniesie oba okna, gdy użytkownik skupi jedno z nich. Na przykład, jeśli łączy się wdowy A i B, wiedźma z A lub B spowoduje, że oba podniosą się ponad inne wdowy.
Aby zatrzymać skrypt, możesz użyć go
killall link_windows.py
w terminalu lub zamknąć i ponownie otworzyć jedno z okien. Można także anulować wykonanie, naciskając przycisk zamykania Xw dowolnym oknie podręcznym wyboru okna.Potencjalne poprawki:
Stosowanie
Uruchom skrypt jako:
Skrypt jest zgodny z Python 3, więc można go również uruchomić jako
Istnieją dwie opcje wiersza poleceń:
--quiet
lub-q
, pozwala wyciszyć okna GUI. Dzięki tej opcji możesz po prostu kliknąć myszką na dowolne dwa okna, a skrypt zacznie je łączyć.--help
lub-h
drukuje informacje o użytkowaniu i opisie.Ta
-h
opcja wyświetla następujące informacje:Dodatkowe informacje techniczne można wyświetlić za pośrednictwem
pydoc ./link_windows.py
, gdzie./
oznacza, że musisz znajdować się w tym samym katalogu co skrypt.Prosty proces użytkowania dwóch okien:
Pojawi się wyskakujące okienko z prośbą o wybranie okna nr 1, naciśnięcie OKlub naciśnięcie Enter. Wskaźnik myszy zmieni się w krzyż. Kliknij jedno z okien, które chcesz połączyć.
Pojawi się drugie okienko z prośbą o wybranie okna nr 2, naciśnięcie OKlub wciśnięcie Enter. Ponownie wskaźnik myszy zmieni się w krzyżyk. Kliknij drugie okno, które chcesz połączyć. Po tym rozpocznie się egzekucja.
Ilekroć skupisz jedno z okien, skrypt podniesie drugie okno w górę, ale przywróci fokus do pierwotnie wybranego (uwaga - z ćwierć sekundy opóźnienia dla najlepszej wydajności), tworząc w ten sposób wrażenie, że okna są ze sobą połączone.
Jeśli wybierzesz to samo okno za każdym razem, skrypt zostanie zamknięty. Jeśli w dowolnym momencie klikniesz przycisk Zamknij wyskakujące okno dialogowe, skrypt zostanie zamknięty.
Źródło skryptu
Dostępny również jako GitHub Gist
Uwagi :
Gtk-Message: GtkDialog mapped without a transient parent. This is discouraged.
Można je zignorować.źródło
time.sleep
Nieco między przełączania, czy jestem w stanie umieścić że do zera? czy jest powód opóźnienia?# time.sleep(0.25)
i nie będzie ona wykonywana. Powodem tego jest prawidłowe podniesienie każdego okna. Z mojego doświadczenia w przeszłości potrzebowałem opóźnień w działaniu systemu Windows. Myślę, że kwadransowe opóźnienie nie jest aż tak duże. Właściwie, pozwól mi dodać jeszcze jedną linię do skryptu, która mogłaby go przyspieszyć. OK ?Podnieś dowolną liczbę okien jako jedno
Poniższe rozwiązanie pozwoli Ci wybrać dowolną kombinację dwóch, trzech lub więcej okien do połączenia i podniesienia jako jedno za pomocą skrótu klawiaturowego.
Skrypt działa z trzema argumentami:
aby dodać aktywne okno do grupy
podnieść ustaloną grupę
wyczyścić grupę, gotowy do zdefiniowania nowej grupy
Scenariusz
Jak używać
Skrypt potrzebuje
wmctrl
ixdotool
:groupwindows.py
Testuj - uruchom skrypt: otwórz dwa okna terminala, uruchom polecenie:
w obu z nich. Zakryj je innymi oknami (lub zminimalizuj je). Otwórz trzecie okno terminala, uruchom polecenie:
Pierwsze dwa okna zostaną podniesione jako jedno.
Jeśli wszystko działa poprawnie, utwórz trzy niestandardowe klawisze skrótów: Wybierz: Ustawienia systemu> „Klawiatura”> „Skróty”> „Skróty niestandardowe”. Kliknij „+” i dodaj poniższe polecenia do trzech osobnych skrótów:
w moim systemie użyłem:
Alt+ A, uruchamiając polecenie:
... aby dodać okno do grupy.
Alt+ R, uruchamiając polecenie:
... aby podnieść grupę.
Alt+ C, uruchamiając polecenie:
... aby wyczyścić grupę
Wyjaśnienie
Skrypt działa po prostu:
add
skrypt przechowuje / dodaje identyfikator okna aktywnego okna do ukrytego pliku~/.windowlist
Po uruchomieniu z argumentem
raise
skrypt czyta plik, podnosi okna na liście za pomocą polecenia:clear
skrypt usuwa ukryty plik~/.windowlist
.Notatki
Większa elastyczność?
Jak wspomniano, powyższy skrypt umożliwia dodawanie okien w dowolnym momencie do zgrupowanych okien. Poniższa wersja umożliwia również usunięcie dowolnego okna (w dowolnym momencie) z pogrupowanej listy:
Dodatkowym argumentem do uruchomienia skryptu jest
delete
:usuwa aktywne okno z zgrupowanych okien. Aby uruchomić to polecenie, w moim systemie ustawiłem Alt+ Djako skrót.
źródło