Jak podzielić ekran panoramiczny na dwa wirtualne obszary robocze w systemie Ubuntu / Gnome?

23

Mój nowy laptop ma duży ekran 16: 9 i trudno mi go w pełni wykorzystać w 95% przypadków, gdy nie oglądam na nim filmów HD.

Chciałbym skonfigurować go jako rodzaj wirtualnego podwójnego ekranu, dzieląc ekran fizyczny na dwa obszary robocze. Wiem, że mogłem ustawić okna ręcznie, ale chciałbym móc zmaksymalizować okno i sprawić, by zużywało tylko połowę monitora, a wyskakujące okna dialogowe były wyśrodkowane na połowie ekranu.

Czy jest do tego dostępna wtyczka?

David
źródło
Jeśli korzystasz z compiz, wtyczka grid może być dla ciebie prostsza, zobacz moją odpowiedź poniżej.
kynan

Odpowiedzi:

24

możesz użyć „ fakexinerama ” do osiągnięcia tego, co chcesz:

 Fake Xinerama is a replacement libXinerama library that instead 
 of querying the XServer reads ~/.fakexinerama and provides fake 
 information about Xinerama screens based on this file. It can be 
 used to fake a Xinerama setup even on computers with just one monitor
 or to fake Xinerama setup other than one specified in the XServer 
 configuration (e.g. making one screen smaller when using two same 
 screens). It's probably only useful for developers.
akira
źródło
1
Dzięki, działa to idealnie i lepiej, niż się spodziewałem. Moje doki, paski paneli i pływające okna rozciągają się na fizyczny ekran, ale zmaksymalizowane i „pełnoekranowe” aplikacje (w tym moje wystąpienia gości vmware) grzecznie trzymają połowę ekranu. Jestem całkiem nowy w Linuksie, więc włamanie się do moich ustawień wyświetlania było trochę ryzykowne, ale tak naprawdę nie wymaga dużo pracy. Dokumentuję swoje dokładne kroki dla innych amatorów linuksa (takich jak ja) w dodatkowej odpowiedzi poniżej.
David
2
Link jest zepsuty. Masz pomysł, gdzie mogę znaleźć to oprogramowanie?
Maxime,
17

Aby rozwinąć powyższą wskazówkę Akiry dotyczącą korzystania z „fałszywej xineramy” Lubosa Lunaka, oto dokładnie, w jaki sposób sprawiłem, że działała dla mnie:

  1. Pobrałem ten plik Xinerama.c z fałszywej strony Xineramą .
  2. Otworzyłem terminal i przeszedłem do folderu, w którym zapisałem Xinerama.c.
  3. Wykonałem:
    gcc -O2 -Wall Xinerama.c -fPIC -o libXinerama.so.1.0.0 -shared
  4. Otworzyłem nautilus (eksplorator plików gnome) jako root, wpisując Alt-F2, a następnie:
    gksu nautilus
  5. Nawigowałem do / usr / lib, znalazłem libXinerama.so.1.0.0 i zrobiłem jego kopię zapasową.
  6. Skopiowałem plik libXinerama.so.1.0.0 z katalogu pobierania do katalogu / usr / lib, zastępując tam kopię (którą właśnie utworzyłem kopię zapasową w kroku 5, więc w razie potrzeby mogę ją później cofnąć). Aby zachować jasne jest, że warto zauważyć, że rozmiar „fałszywej” wersji był większy (12,6 kb) niż „rzeczywistej” wersji, którą zastępowałem (8,6 kb).
  7. Utworzyłem nowy plik tekstowy o nazwie .fakexinerama w moim katalogu / home / dave i umieściłem go w tym: (na podstawie mojego fizycznego rozmiaru ekranu 1440 x 900)
    2
    0 0 720 900
    720 0 720 900

Fałszywy Xinerama pozwala zdefiniować dowolną konfigurację wirtualnego ekranu, ale chcę tylko pionowy podzielony ekran. Aby to osiągnąć na monitorze, rozmiar X na Y pikseli, patrząc na mój przykład pliku, po prostu zamień 720 na X / 2 i zamień 900 na Y.

to jest to! Wylogowałem się i wróciłem do pracy.

Jeszcze raz dziękuję Lubosowi Lunakowi za stworzenie tego modu i akirze za wskazanie mi go.

David
źródło
To bardzo mi pomogło dzięki trzem głowicom. Xinerama działa dość wolno z trzema pulpitami, więc użycie tego pozwoliło mi umieścić dwa z nich w twinview bez irytującego maksymalizacji obu problemów, a trzeci jako osobny ekran X został dołączony do twinview z Xinerama. Dziękujemy za poświęcenie czasu na zapisanie kroków, David!
Kyle Brandt
7

Jest teraz nowy projekt o nazwie FakeXRandR, który działa naprawdę prosto.

Jest to narzędzie do oszukiwania serwera X11, aby wierzyć, że jest więcej monitorów niż w rzeczywistości. Łączy się z libXRandR i libXinerama i zastępuje pewne konfigurowalne konfiguracje monitorów wieloma wirtualnymi monitorami. Narzędzia dostarczonego z tym pakietem można użyć do skonfigurowania podziału monitorów.

mperryna
źródło
Od czasu do czasu używałem fakexrandr. Niestety mój ekran staje się zakodowany, gdy mam plik xorg.conf (który potrzebuję do niestandardowej rozdzielczości dla mojego monitora ultrawide). Jestem zmuszony usunąć konfigurację fakexrandr, zrestartować X i ponownie skonfigurować fakexrandr.
JAponte
3

Można to zrobić w XRandR 1.5 bez dodatkowego oprogramowania. Chociaż ani fakexinerama, ani FakeXRandR nie pracowały dla mnie na Xubuntu, to rozwiązanie w końcu podzieliło ekran na dwie części.

Aby podzielić monitor, wykonaj następujące czynności:

  1. Wejdź xrandrdo terminala, aby sprawdzić nazwę wyjścia i aktualną rozdzielczość wyświetlacza, który chcesz podzielić.
    W moim systemie wynik był następujący:

    Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
    HDMI1 disconnected (normal left inverted right x axis y axis)
    HDMI2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm
       1920x1080     60.00*+  50.00    59.94
       1920x1080i    60.00    50.00    59.94  
       1600x900      60.00  
       1280x1024     75.02    60.02  
       1152x864      75.00  
       1280x720      60.00    50.00    59.94  
       1024x768      75.08    60.00  
       800x600       75.00    60.32  
       720x576       50.00  
       720x576i      50.00
       720x480       60.00    59.94
       720x480i      60.00    59.94
       640x480       75.00    60.00    59.94
       720x400       70.08
    VGA1 disconnected (normal left inverted right x axis y axis)
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
    

    Widzimy, że mój monitor jest podłączony do HDMI2, a rozdzielczość jest ustawiona na 1920 x 1080.

  2. Dodaj 2 wirtualne monitory z xrandr --setmonitorpoleceniem, upewniając się, że pokrywają się one z fizycznym wyświetlaczem i są umieszczone obok siebie. Składnia polecenia jest (bez cudzysłowów):

    xrandr --setmonitor "monitor_name" "width_px"/"width_mm"x"height_px"/"height_mm"+"x_offset_px"+"y_offset_px" "output_name" 
    

    W moim systemie było to:

    xrandr --setmonitor HDMI2~1 960/254x1080/286+0+0 HDMI2
    xrandr --setmonitor HDMI2~2 960/255x1080/286+960+0 none
    
  3. Chociaż powyższe skonfigurowało już wirtualne monitory w moim systemie, zmiany nie zostały zastosowane do czasu ich wykonania (wydaje się, że odświeża xrandr):

    xrandr --fb 1921x1080
    xrandr --fb 1920x1080
    

Aby zachować zmiany po ponownym uruchomieniu komputera, należy wykonać te polecenia podczas logowania. Możesz to zrobić, dodając polecenia na końcu ~/.profilepliku.

Strachu
źródło
1
Dobrze, że istnieje dokładnie w Xrandr, świetnie. Ale sprawia, że ​​można korzystać tylko z lewej strony mojego monitora, prawa część nic nie pokazuje. I nie pojawia się żaden błąd. - Och, wygląda na to, że Awesome WM nie obsługuje monitorów, ale używa tylko wyjść. Potrzebujesz więc wsparcia także w WM.
nert
Och, nieważne, niesamowite ma wsparcie dla monitorów xrandr, po prostu nie działało dla mnie. Ale niesamowite może to zrobić sam: awesomewm.org/apidoc/classes/screen.html#screen:fake_add
nert
1

Natknąłem się na artykuł na temat omgubuntu, który w dość prosty sposób naśladuje funkcjonalność Snap Windows w Ubuntu / Gnome za pomocą panelu sterowania Compiz. Ta Snap Windows pozostawia mi jeden panoramiczny pulpit, ale same okna można łatwo zadokować, aby wypełnić oba pół ekranu. (To nie było dokładnie to, czego początkowo szukałem, ale wciąż całkiem przydatne.)

David
źródło
1

Używam rozwiązania tych dokładnych pytań od kilku lat, używając triplehead2go. To urządzenie połączy do 3 monitorów i zgłosi X jeden wielki monitor.

Oto jak podzielić ten ogromny monitor na wirtualne obszary robocze w xorg.conf:

Section "Device"
    # ... your other settings above
    Option         "TwinViewXineramaInfoOverride" "1280x1024+0+0, 1280x1024+1280+1, 1280x1024+2560+0"
EndSection

A jeśli używasz najnowszych sterowników NVIDIA, sterowniki te mają własne rozszerzenie xinerama, które wydaje się ignorować powyższe ustawienie, dlatego musisz dodać następujące elementy w tej sekcji urządzenia:

Option         "NoTwinViewXineramaInfo" "true"
bksunday
źródło
0

Jestem całkiem pewien, że możesz to zrobić, poprawiając plik konfiguracyjny X , ale nie zrobiłbym tego tylko dlatego, że prawdopodobnie zepsułbym moją konfigurację wyświetlania. Jeśli spróbujesz tego, bądź bardzo ostrożny, wykonaj kopię zapasową, wyświetlając config i upewnij się, że masz alternatywny login, którego możesz użyć na wypadek, gdybyś musiał naprawić swój ekran.

Możesz uzyskać więcej satysfakcji z menedżera okien kafelkowych, takiego jak xmonad , a nawet z uruchomionego programu compiz, aby kontrolować sposób otwierania, zamykania i kafelkowania okien.

DaveParillo
źródło
0

Działa dla mnie dobrze:

Użyłem następujących dla dwóch monitorów (1280x1024 + 2048x1152):

3
0 0 1280 1024
1280 0 1024 1152
2304 0 1024 1152
kod w otworze
źródło
0

Jeśli korzystasz z compiz, może okazać się, że jego wtyczka grid jest łatwiejszym i bardziej elastycznym rozwiązaniem. Można go skonfigurować tak, aby przeciągał okno nad lewą / prawą połową ekranu podczas przeciągania go do krawędzi.

Jest to funkcja przyciągania okien opisana w artykule, do którego prowadzi odnośnik David. Ponadto możesz skonfigurować skróty i sprawić, aby okno zajmowało górną / dolną połowę lub jedną czwartą ekranu.

Xinerama powoduje znaczny spadek wydajności (ponieważ replikuje akcje X na wszystkich ekranach Xinerama) i nie działa dobrze z menedżerami okien kompozytowych.

kynan
źródło