Ubuntu, Nvidia, Twinview oraz gry – rozwiązanie :-)

Posiadając Ubuntu, postawionego na komputerze z kartą graficzną firmy Nvidia użytkownik narażony jest na kilka nieprzyjemności. Na szczęście problemy są mianem „przejściowych”.  Wszystko przez skądinąd wygodny tryb pracy sterownika Twinview, który pozwala na obsługę wielu ekranów jednocześnie, pomiędzy którymi można przeciągać aplikacje. Ja posiadam komputer podłączony do telewizora (FullHD) oraz monitor 1440×900. Problem w tym, że system widzi to jako ekran o rozdzielczości 3360×1080. Natywne gry w Linuksie korzystają z tych wartości do wyświetlenia okna gry.

Efektem jest uruchomiona gra w trybie pełnoekranowym  z interfejsem pomiędzy obydwoma urządzeniami. Ta opcja by się sprawdziła idealnie, jeśli miałbym dwa takie same monitory postawione obok siebie, ale co jeśli telewizor służy mi do oglądania filmów, a pograć bym chciał na monitorze? Tutaj wychodzi ułomność binarnego sterownika made by Nvidia. Choć sytuacja jest do odratowania, bo firma zdała sobie sprawę z tego błędu, a wszystko sprowadza się jedynie do drobnej modyfikacji pliku xorg.conf.

Jeśli wygenerowałeś swój plik przy pomocy nvidia-settings albo nvidia-xconfig to prawopodobnie będziesz miał coś podobnego:

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    Option         "metamodes" "CRT: 1440x900 +0+0, DFP: 1920x1080 +1440+0;"
    DefaultDepth    24
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection

Jak widzisz jako CRT został zidentyfikowany monitor, a jako DFP telewizor. Wystarczy zmodyfikować linijkę metamodes do takiej postaci:

Section "Screen"

    ...
    Option         "metamodes" "CRT: 1440x900 +0+0, DFP: 1920x1080 +1440+0; CRT: 1440x900 +0+0, DFP: NULL"
    ...
EndSection

Po restarcie X’ów gra, która będzie próbowała uruchomić się w trybie pełnoekranowym uruchomi się na monitorze. W tym samym czasie wyjście na TV zostanie wyłączone automatycznie. Gdy zamkniesz grę, sterownik wróci do pierwszego zestawu ustawień. Oczywiście można te ustawienia wyklikać w konfiguratorze sterownika dostarczonym przez Nvidię, ale po co? :P