Jak mogę znaleźć lokalizację (na pulpicie) okna w linii poleceń?
19
Próbuję napisać mały skrypt, który pomoże zarządzać moimi oknami za pomocą skrótów klawiaturowych.
Aby zrobić to, co chcę, muszę być w stanie znaleźć bieżącą lokalizację i rozmiar „aktywnego” (skoncentrowanego) okna. Przez lokalizację rozumiem współrzędne X, Y okna na pulpicie, a przez rozmiar rozumiem wysokość i szerokość okna.
Czy istnieje narzędzie wiersza polecenia, które może pobrać te informacje?
Po prostu przeanalizuj dane wyjściowe dla potrzebnych współrzędnych. Oto kilka przydatnych poleceń podczas interakcji z oknami:
xwininfo da ci geometrię względną i absolutną.
xprop powie ci wiele informacji, w tym, czy okno jest aktywne, ale nie jego geometria
xdpyinfo również dostarczy ci identyfikator aktywnego okna, ale bez dodatkowych informacji.
wmctrl dostarczy ci listę informacji o oknach i pozwoli ci wybrać aktywne okno do modyfikacji, ale nie informacje.
Na przykład, aby zmienić tytuł aktywnego okna na „Nowa nazwa”:
wmctrl -r :ACTIVE:-N "New Name"
Lub zmienić pozycję aktywnego okna:
wmctrl -r :ACTIVE:-e 0,20,20,200,400
Zastanów się, wmctrlczy musisz po prostu zmienić coś prostego, na przykład geometrię okna. Rozważ użycie innych skryptów wymienionych powyżej tylko wtedy, gdy chcesz robić inne, bardziej złożone rzeczy.
Chciałbym tylko zauważyć, że otrzymuję różne wyniki podczas uruchamiania drugiego polecenia. Pierwszy działa zgodnie z oczekiwaniami.
TM.
1
Używam Arch, ale może pomóc komuś tutaj w przyszłości. Pierwszy nie działał dla mnie, drugi nie zapewniał prawidłowych wymiarów, może z powodu WM. Ale połączenie obu działało. xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
Sev
Dzięki! Ale zgadzam się z pierwszymi dwoma komentarzami. Drugie polecenie xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)pokazuje mi okno potomne (nie ma nazwy) mojego terminalu. Kiedy właśnie xdpyinfo | grep focusdostaję focus: window 0x435b877, revert to Parent, a 0x435b877 jest identyfikatorem okna zwróconego przez pierwsze polecenie (które działa dla mnie). To jest na Trusty 14.04.1 LTS
nealmcb
8
Dzięki „xdotool” możesz łatwo wchodzić w interakcje z oknami za pomocą zdarzeń klawiatury lub myszy.
Przykład wysłania CtrlCsekwencji do aktywnego okna:
xdotool getwindowfocus key ctrl+c # Sends CTRL+C to the current window.
xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)
pokazuje mi okno potomne (nie ma nazwy) mojego terminalu. Kiedy właśniexdpyinfo | grep focus
dostajęfocus: window 0x435b877, revert to Parent
, a 0x435b877 jest identyfikatorem okna zwróconego przez pierwsze polecenie (które działa dla mnie). To jest na Trusty 14.04.1 LTSDzięki „xdotool” możesz łatwo wchodzić w interakcje z oknami za pomocą zdarzeń klawiatury lub myszy.
Przykład wysłania CtrlCsekwencji do aktywnego okna:
Jeśli naprawdę potrzebujesz pozycji okna:
Więcej akcji / opcji znajdziesz na stronie man .
źródło
Error: Invalid key sequence 'ctrl-c'
.