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:

r   e   k   l   a   m   a

sudo apt-get install xdotool

Po 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