Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

[Ubuntu] Przenoszenie aktywnych okien między dwoma monitorami za pomocą skrótów klawiszowych

Ostatnio kolega zapytał mnie czy da radę przenosić aktywne okna za pomocą skrótu klawiszowego między dwoma ekranami w systemie Ubuntu z Gnomem 2, albowiem często z takiej funkcjonalności chciałby korzystać. Z tego co wiedziałem to w "prosty" sposób nie dało się tego zrobić, ale dla chcącego nic trudnego! Poszperałem trochę i znalazłem sposób.

Z pomocą przychodzi nam pakiet xdotool (command-line X11 automation tool), za którego pomocą można wydawać polecenia jakby przychodziły z przycisków myszki, czy klawiatury, a także możliwość zarządzania oknami - co dla mnie było strzałem w dziesiątkę.

Pierwsze co, to zainstalowałem omawiany pakiet, a że korzystam z Ubuntu to wykonałem następujące polecenie:sudo apt-get install xdotoolPo instalacji sprawdziłem moje ustawienia X11 w pliku /etc/X11/xorg.conf, gdzie odczytałem pozycję x,y górnego-lewego rogu moich dwóch monitorów:
pierwszy ekran to oczywiście pozycja 0, 0, zaś drugi monitor to 1920, 0 - wszystko jest zależne od rozdzielczości danych monitorów i kolejność ich podłączenia.

Do napisania skryptu użyłem dwóch komend:

  • getwindowfocus, aby uzyskać unikalne id aktywnego okna, które chcę przenieść na sąsiedni ekran
  • windowmove, aby przesunąć aktywne okno na podaną pozycję

Cały skrypt wygląda trywialnie:#!/bin/bash if [ $1 -eq 2 ] then POZYCJA="0 0" else POZYCJA="1920 0" fi /usr/bin/xdotool windowmove $(/usr/bin/xdotool getwindowfocus) $POZYCJA exit 0

Skrypt zapisałem w pliku, który umieściłem w swoim katalogu użytkownika i nadałem jemu odpowiednie prawa (chmod +x).
Dalej uruchomiłem ustawienia skrótów klawiszowych (gnome-keybinding-properties), w którym utworzyłem dwa dodatkowe wpisy, które wywołują skrypt z parametrem:

  • skrypt.sh 1 - monitor przełączenie aktywnego okna na monitor 1
  • skrypt.sh 2 - przełączenia na ekran 2.

Takie rozwiązanie wystarczyło mojemu kumplowi i mam nadzieję, że niektórym z Was także się ono przyda ;)

Zawsze możemy się pokusić o usprawnienie skryptu np. o dopasowanie rozmiaru przenoszonego okienka, kiedy nie jest zmaksymalizowane, ale to już zostawiam Wam... 

linux porady

Komentarze

0 nowych
Frankfurterium   9 #1 01.06.2012 12:47

Jedno pytanie - jak to będzie wyglądało, kiedy podłączę drugi monitor o innej rozdzielczości? Stałe przypisanie koordynatów wydaje się być niewygodne, kiedy zamiennie pracuje się na kilku różnych monitorach.

wojtekadams   18 #2 01.06.2012 12:52

@Frankfurterium
Zgadzam się, jeśli chodzi o podłączanie laptopa do różnych monitorów, czy rzutników. Trzeba pomyśleć o sprawdzaniu aktualnych ustawień z X11, ale to już zostawiam do wglądu indywidualnego :) ja przedstawiłem rozwiązanie dla mojego druha, który pracuje na niezmiennym środowisku - jeśli chodzi o monitory.

StawikPiast   10 #3 04.06.2012 15:38

pod Windows klawisz Windows + Shift i strzalki lewo prawo.

  #4 04.06.2012 17:00

@StawikPiast KDE4 też obsługuje przenoszenie okien za pomocą skrótów bez żadnych skryptów więc nie masz się czym chwalić.

  #5 05.06.2012 18:15

To jest łatanie braków funkcjonalności ułomnych WM-ów nie posiadających funkcji Move/MoveRelative/MoveTo/MoveToScreen, czyli czegoś, co jest standardem i głównym atutem *boxów.

  #6 19.06.2012 13:20

Po co to , skoro i LXDE i XFCE i Gnome i KDE oraz Compiz mają przenoszenie okien natywnie wbudowane?