Ubuntu – dwa monitory na nowo

Po obejrzeniu statystyk oglądania mojego bloga zauważyłem, że znaczna większość odwiedzających przychodzi tu z zapytania „ubuntu dwa monitory”. Kiedyś pisałem już o tym ale tamto rozwiązanie jest już co najmniej nieaktualne. Dzisiaj istnieje o wiele lepsze rozwiązanie – stworzone z myślą o laptopach, ale ja sam używam go na komputerze stacjonarnym z dwoma monitorami.

Wspomniane rozwiązanie nazywa się disper i jego strona domowa znajduje się tutaj: http://willem.engen.nl/projects/disper/. Aktualnie najnowsza wersja opatrzona jest numerem 0.3.0, ale działa już bardzo poprawnie. Cały projekt napisany jest w pythonie więc nie ma problemów z kompilacją i miliardem zależności do rozwiązania. Cała instalacja składa się z upewnienia się, że mamy Pythona i narzędzie make. Możemy to zrobić na przykład tak:

$ sudo apt-get install build-essential python2.7

Następnie ściągamy, makeujemy i instalujemy najnowszą wersję dispera (w moim przypadku 0.3.0):

$ wget http://ppa.launchpad.net/disper-dev/ppa/ubuntu/pool/main/d/disper/disper_0.3.0.tar.gz
$ tar zxvf disper_0.3.0.tar.gz
$ cd dispercur
$ make
$ sudo make install

To tyle jeśli chodzi o instalację. Teraz jak tego używać? Zacznijmy może od wyświetlenia pomocy programu, która już sama mówi wszystko co trzeba wiedzieć:

$ disper -h

Jeśli bardziej lubisz czytać strony man lub info to też są dostępne.

Poniżej przedstawię podstawowe komendy dispera wraz z krótkim opisem:

  • disper -l  – powoduje wyświetlenie wszystkich dostępnych monitorów oraz ich rozdzielczości
  • disper -s – wykorzystywany jest jedynie pierwszy monitor
  • disper -S – wykorzystywany jest jedynie drugi monitor
  • disper -e – wykorzystane oba monitory, jeden z nich jest rozszerzeniem ekranu (xinerama)
  • disper -c – klonowanie obrazu – na obu monitorach jest to samo
  • disper -C – przełącza cyklicznie pomiędzy powyższymi trybami (coś jak Fn+Fx w laptopach [x to liczba od 1 do 12 😉 ] )

Dodatkowo możemy też wyeksportować nasze ustawienia do pliku:

$ disper -p > ekran.conf

Lub zaimportować te ustawienia:

$ cat ekran.conf | disper -e

Jedną poważną zaletą używania dispera jest to, że zmieniamy tryby graficzne i nie musimy restartować serwera Xów. To znaczy po prostu tyle, że uruchomione programy nie zostają ubite w tym procesie i po zmianie ekranu możemy po prostu pracować dalej.

Mam nadzieję, że ten wpis pomoże ludziom trafiającym tu codziennie z problemami dotyczącymi obsługi dwóch monitorów. Oczywiście disper będzie działał w dowolnym innym Linuxie. Wystarczy mieć pythona oraz make’a, a to jest wszędzie.

Z tym postem muszę stwierdzić z zadowoleniem (ale też z lekkim smutkiem), że czasy kiedy siedziało się tygodniami przed Linuxem, żeby coś w nim uruchomić powoli się kończą. Powoli 😉

PS. Jeśli kogoś interesuje dlaczego „z lekkim smutkiem” to spieszę z odpowiedzią. Otóż może i siedzenie i grzebanie było czasami nużące i frustrujące, ale ostateczny sukces dawał ogromny zastrzyk samozadowolenia 😉

[Aktualizacja]

W moim opisie przy instalacji były błędy. Z niewiadomych przyczyn po ściągnięciu paczki zupełnie pominąłem krok rozpakowywania i przejścia do katalogu źródeł. Dlatego niektórym prezentowane  rozwiązanie mogło nie działać! 😉

[Aktualizacja 2]

Dodałem nowy wpis o bardziej zaawansowanym wykorzystaniu narzędzia disper: https://moriturius.wordpress.com/2012/03/09/ubuntu-dwa-monitory-disper-starcie-drugie/

Reklamy

Ubuntu i dwa monitory

Nie jest tajemnicą, że do laptopów można podłączać dodatkowe monitory. W systemie Windows najczęściej nie wymaga to żadnego konfigurowania i wystarczy po prostu podłączyć monitor i wcisnąć odpowiednią kombinację klawiszy. Do wyboru mamy właściwie 3 możliwości. Pulpit widoczny na ekranie jednego lub drugiego monitora bądź na obu jednocześnie. Dodatkowo jak się poklika to można ustawić aby jeden monitor był „rozszerzeniem” pulpitu. Jednak nie podoba mi się żadne z tych rozwiązań. Oglądanie pulpitu na jednym monitorze jest oczywistym bezsensem jeśli podłączyliśmy dwa. Oglądanie tego samego na dwóch monitorach jest ok, ale na prezentacje. Wspomniane rozszerzenie? Niby ok, ale na monitorze dodatkowym nie ma nic, żadnych ikonek, żadnych pasków. Trochę bieda.

A jak to w Linuxie? Ano… podobnie 🙂 Oczywiście wymaga to troszkę większej ilości konfiguracji (ale czyż nie za to kochamy Linuxy? ^^). Na szczęście konfiguracja przy pomocy programu nvidia-settings jest prawie tak proste jak w Windowsie. Dostępne mamy tryby wyświetlania takie jak w Windowsie plus jeden, którego tam się zrobić chyba nie da.

Chodzi o wyświetlanie na obu monitorach całkowicie osobnych i kompletnych pulpitów. Można to osiągnąć wybierając w nvidia-settings opcję „Separate X/Screen” dla każdego monitora (przycisk Config). Jest to całkiem ciekawa opcja ponieważ każdy ekran może posiadać inną konfigurację paneli i skrótów. Jedynym problemem tutaj jest brak  prostej możliwości przenoszenia okien między monitorami (o ile w ogóle istnieje).

Do tej pory nie korzystałem z tej opcji (mimo iż bardzo chciałem) ponieważ w połączeniu z menedżerem okien Compiz Fusion na monitorze głównym po kliknieciu na jakieś rozwijane menu czy coś takiego czas oczekiwania na pojawienie się go był skandalicznie długi. Nie przyszło mi do głowy wcześniej, że można próbować to obejść.

Dziś podczas przeglądania różnych materiałów trafiłem przy okazji zupełnie na post na forum, gdzie ktoś poradził uruchomić oddzielny Compiz dla każdego monitora. Sprawdziłem. Zadziałało. Aby uruchomić Compiza na konkretnym monitorze (np. :0.1) należy po prostu ustawić odpowiednio zmienną DISPLAY:

DISPLAY=:0.1 compiz --only-current-screen &

No i fajnie, ale stanąłem przed problemem ponieważ nie do końca wiem, w którym momencie Ubuntu uruchamia Compiza jeśli robi to automatycznie. Szukałem w najróżniejszych miejscach i nie mogłem znaleźć więc jeśli ktoś wie to niech się pochwali 🙂

Postanowiłem więc po prostu zabić Compiza, który się uruchomi i na jego miejsce uruchomić dwa własne. Osiągnąłem to najpierw tworząc plik…

touch ~/.config/compiz/startup.sh
chmod 755 ~/.config/compiz/startup

… następnie wklejając do niego treść…

#!/bin/bash

killall compiz
killall compiz.real
killall emerald

#uruchamianie menedżera okien
DISPLAY=:0.0 compiz --only-current-screen &
DISPLAY=:0.1 compiz --only-current-screen &

#uruchamianie dekoratora okien
DISPLAY=:0.0 emerald --replace &
DISPLAY=:0.1 emerald &

#uruchamianie window nawigatorów
DISPLAY=:0.0 avant-window-navigator &
DISPLAY=:0.1 avant-window-navigator &

Tak przygotowany skrypt należy wrzucić do startowych (podczas uruchamiania sesji) w menu System->Preferencje->Sesje. Trzeba dodać jeden wpis, który uruchomi skrypt podczas startu sesji.

Takie rozwiązanie działa, ale zdecydowanie nie należy do najlepszych. Ponawiam więc prośbę o pomoc w zlokalizowaniu miejsca, w którym uruchamia się compiz.

And last, but not least – Pozdrawiam, moją Karolinkę, która wyrzuca mi, że jeszcze nigdy tego nie zrobiłem 🙂