Czy możliwe są różne konfiguracje DPI dla dwóch różnych ekranów?


122

Używam Ubuntu 12.04.3 ze sterownikami NVidia (319) dla mojej karty graficznej Quadro K2100M, a kiedy przełączam mój główny ekran laptopa 3200x1800 na tryb 1920x1080 (za pomocą nvidia-settings), wyświetlacz jest rozmazany ...

Używam dwóch ekranów:

  • Mój ekran główny to wyświetlacz LCD o maksymalnej rozdzielczości 1920 x 1200.
  • Po prawej stronie znajduje się ekran mojego laptopa (oryginalna rozdzielczość 3200x1800).

Głównym problemem jest to, że w Ubuntu czcionka jest zdecydowanie za mała na ekranie mojego laptopa. Z tego powodu chciałem zmienić rozdzielczość mojego laptopa na 1920x1080.

Czytając odpowiedź Galgalesha , próbowałem obliczyć swoje DPI i oto konfiguracja DPI, którą powinienem mieć:

  • 94x94 dla mojego głównego ekranu LCD 1920x1200
  • 235x236 dla mojego ekranu laptopa 3200x1800

Czy istnieje sposób na uzyskanie podwójnej rozdzielczości DPI z rozszerzonym pulpitem?


3
Cóż, prowadzenie dowolnego ekranu LCD w rozdzielczości innej niż natywna będzie rozmyte. To dlatego, że piksele są rozmieszczone w ustalony sposób, a sygnał nie pasuje. Czego dokładnie oczekujesz? Może wyłączyć skalowanie? Ale wtedy jest wyświetlany tylko na środku ekranu, a nie na pełnym ekranie. Dla optymalnego wyświetlania zawsze trzymaj go w natywnej rozdzielczości ekranu. Nie sądzę, żeby miało to coś wspólnego z Ubuntu.
gertvdijk

2
@gertvdijk: Czy masz sposób na utrzymanie obu monitorów w natywnej rozdzielczości ekranu? Myślę, że o to pyta Anthony.
beldaz

2
@beldaz Moja odpowiedź brzmiała: wersja 1 pytania . Nie wspominał wtedy o żadnej konfiguracji podwójnego ekranu. Ponieważ pytanie zostało znacząco zmienione, podnosi to brwi w przypadku wszystkich postów zmienionych po tej dacie. Zasadniczo unieważnia wszystko, co się przyczyniło i naprawdę obniża moją motywację do pomocy. Moim zdaniem użytkownicy powinni zadać nowe pytanie.
gertvdijk

@gertvdijk Przepraszamy, teraz ma sens.
beldaz

Zastanawiam się, czy możliwość użycia Waylanda w najnowszym Ubuntu ułatwia to rozwiązanie.
mkataja

Odpowiedzi:


119

Wygląda na to, że ludzie nadal mają problemy z pracą z kilkoma monitorami i wyświetlaczami HiDPI. Dobre obejście opisano w arch wiki https://wiki.archlinux.org/index.php/HiDPI#Multiple_displays . Więc mam:

  • laptop asus ln303ux: 3200x1800,
  • monitor zewnętrzny: 1920x1200

Teraz używam Ubuntu 14.10 i GNOME Shell 3.12.2, która ma całkiem użyteczną obsługę HiDPI. Więc po prostu używam gotowej obsługi HiDPI - współczynnik skalowania wynosi 2 (można go ustawić za pomocą GUI). Oznacza to, że na monitorze zewnętrznym otrzymuję wszystko dwa razy większe niż dopuszczalne. Dlatego używam xrandr; ale zamiast przeskalowywać ekran laptopa, zwiększam ekran monitora zewnętrznego:

xrandr --output HDMI1 --scale 2x2 --mode 1920x1200 --fb 3840x4200 --pos 0x0
xrandr --output eDP1 --scale 1x1 --pos 320x2400

Tak więc, jeden po drugim:

  1. --output HDMI1w moim przypadku jest to ekran zewnętrzny, eDP1to ekran laptopa.
  2. --scale 2x2 - dwa razy zmniejsz wszystko na ekranie zewnętrznym
  3. --mode XxY - jawnie ustaw rozdzielczość ekranu (nie jest konieczne, jeśli jest już ustawione)
  4. --fb XxY- ustaw rozmiar wirtualnego ekranu (framebuffer) ( ważne bez tego, będziesz mógł użyć tylko czwartej części ekranu). W moim przypadku jeden ekran był na drugim, więc zsumowałem efektywne wysokości 2400 + 1800 = 4200. Zauważ też, że maksymalny rozmiar bufora ramki może być określony w xorg.conf - wtedy nie możesz go przekroczyć (jest zapisany w pierwszym wierszu xrandr -qwyniku).
  5. --pos XxY- w moim przypadku ustawiam bezwzględne ustawienie ekranów, więc ekran mojego laptopa znajduje się bezpośrednio na dole ekranu zewnętrznego. Wartość Y jest tutaj dwukrotnie większa niż wysokość monitora zewnętrznego.

I to jest to! Wszystko jest tak ostre, jak mogłoby być.

FYI: aby uzyskać nazwy ekranów i dostępne rozdzielczości, można uruchomić xrandr --current. Więcej informacji na temat ustawiania rozdzielczości można znaleźć tutaj: https://wiki.ubuntu.com/X/Config/Resolution .

AKTUALIZACJA - OPCJA 2: jeszcze jedno ciekawe obejście dla aplikacji obsługujących GTK3. Jeśli zwykle używam tylko jednej aplikacji na dużym ekranie (np. Jakiegoś IDE, takiego jak leksah), nie zmieniam rozmiaru ekranu, ale uruchamiam aplikację skalowaną do oryginalnego rozmiaru

env GDK_SCALE=0.5 GDK_DPI_SCALE=0.5 CLUTTER_SCALE=0.5 appname

7
dostałem error of failed request: BadValue (integer parameter out of range for operation):-(
Juh_

4
Wydaje się, że --fbopcja ta nie włącza więcej niż jednej czwartej 2x2ekranu (kursora myszy nie można przesunąć poza lewy górny kwadrant)
EoghanM

2
Skalowanie działa, ale czy nie tracisz HiDPI? Wszystko wydaje się przeskalowane i rozmyte.
Andy,

8
W przypadku konfiguracji równoległej z zewnętrznym monitorem 1920 x 1080 umieszczonym po lewej stronie mojego laptopa hiDPI o rozdzielczości 3200 x 1800:xrandr --output eDP1 --scale 1x1 --pos 3840x0 ; xrandr --output HDMI1 --scale 2x2 --mode 1920x1080 --fb 7680x2160 --pos 0x0
Daniel Bower,

2
Parametr --fb to 2 * monitor zewnętrzny + ekran laptopa
Brian C.

10

Dlaczego jest rozmazany?

Twój ekran zawsze wyświetla 3200 x 1800 pikseli. Zmniejszenie rozdzielczości ekranu na komputerze oznacza po prostu, że ekran musi skalować obraz, aby dopasować go do ekranu. W zależności od proporcji między rozdzielczością natywną a bieżącą, skalowanie spowoduje rozmycie obrazu.

Więcej informacji na temat skalowania i rozdzielczości natywnej można znaleźć tutaj: https://en.wikipedia.org/wiki/Native_resolution

Jak mogę powiększyć tekst?

Jeśli tekst jest zbyt mały, masz dwie opcje:

1. Zmień rozmiar czcionki Ubuntu

Jak zmienić czcionki i dostosować ich rozmiar?

2. Zmień DPI (powiększy cały interfejs, nie tylko tekst)

Jak znaleźć i zmienić DPI ekranu? (odpowiedź @whtyger)


1
Tak jak uwaga na temat zwiększania rozmiarów czcionek. Zamiast tego zwiększ DPI, aby skalować cały interfejs użytkownika. Powinno to zostać rozpoznane poprawnie automatycznie (odczyt EDID z twojego wyświetlacza), ale jeśli to się nie powiedzie: Jak znaleźć i zmienić DPI ekranu?
gertvdijk

23
Właściwie to nie jest odpowiedź na moje pytanie. Używam dwóch różnych ekranów o różnych rozdzielczościach . Dokonałem obliczeń: mój lewy główny ekran LCD powinien mieć rozdzielczość 94x94 DPI, podczas gdy mój prawy ekran laptopa powinien mieć 235x235 DPI ... I nie znajduję żadnego sposobu ustawienia dwóch różnych rozdzielczości DPI, chyba że skonfiguruję nvidię do działania 2 oddzieliłem X, a potem nie mogę przejść przez jedno okno od lewej do prawej ... Windows jest o wiele lepiej poradzić sobie z tym problemem :(
Anthony O.

9
-1 za całkowite zignorowanie sedna pytania
Martin Konecny

8
@AnthonyO. Nie zmieniaj znacząco pytania po opublikowaniu odpowiedzi, której nie lubisz. W chwili opublikowania tej odpowiedzi nie wspomniałeś o niczym związanym z konfiguracją podwójnego ekranu (patrz wersja 1 ). Zmiana pytania unieważnia wszystko, co już zostało opublikowane i nie powinieneś tego robić. Zamiast tego cofnij edycję pytania i opublikuj nowe pytanie.
gertvdijk

5
@MartinKonecny ​​Pierwotny pytający znacząco zredagował swoje pytanie, ta odpowiedź odpowiada na jego pierwotne pytanie, sprawdź wersje.
Jamie Kitson

7

Użyłem rozwiązania artmem, ale natknąłem się na problem myszy wspomniany przez EoghanM. Obejście, które znalazłem w starym raporcie o błędach, do którego odsyłał, dotyczyło --panning.

Fotografuję dla: - DP1-2 3840x2160 w natywnym DIP. - eDP1 1366x768, skalowane tak, aby wyglądały rozsądnie po prawej stronie DP1-2.

Tak się dzieje, gdy mam bufor ramki podobny do DP1-2 + (2x eDP1), a następnie skaluję wszystko do eDP1 o 1/2.

To powinno być proste, ale xrandr jest nieco trudny.

Tutaj --scale służy do zmniejszenia wszystkiego, co idzie do eDP1 o 1/2. --panowanie jest takie samo jak eDP1 w oryginalnym buforze klatek z pozycją (+ 3840 + 0) tuż po prawej stronie DP1-2. + 0 + 2160 będzie poniżej.

xrandr -d :0 --fb 6572x3696 --output DP1-2 --mode 3840x2160 --scale 1x1 --rate 60 --pos 0x0 --primary

# sometimes panning get applied incorrectly when switching from some other mode, running it twice is a work around
xrandr -d :0 --output eDP1 --off
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0
xrandr -d :0 --fb 6572x3696 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+3840+0

Ustawiłem także Xft.dpi na 185

$ cat ~/.Xresources
Xft.dpi: 185

Po odłączeniu od zewnętrznego monitora uruchamiam:

xrandr -d :0 --output DP1-2 --off
xrandr -d :0 --fb 2732x1536 --output eDP1  --mode 1366x768  --scale 2x2 --panning 2732x1536+0+0 --pos 0x0 --primary

To nie wygląda świetnie, ale nie jestem daleko od biurka. Możesz obejść ten problem, zmieniając Xft.dpi i ponownie uruchamiając wszystkie programy komputerowe. Nie wiem, jak zmienić Xft.dpi, a następnie zachęcić klientów do korzystania z niego bez ponownego uruchamiania.


Panoramowanie było ostatnim elementem układanki - rozwiązało to zatrzymanie kursora na jednej czwartej problemu z ekranem. Dzięki @Brian!
rtindru

2
„dwukrotne uruchomienie” ???? święty piksel, to działa (już stosowałem panoramowanie, ale jest poprawnie stosowane tylko wtedy, gdy uruchomię to samo polecenie dwa razy).
Riccardo Galli

Tak, zauważyłem, że działało to przy każdym innym uruchomieniu, więc pomyślałem, że spróbuję dwa razy i, no cóż, oto jesteśmy.
Brian C.

W porządku, więc to nie działa z jądrem 4.5.2. Zainstalowałem tylko to jądro, aby poradzić sobie z problemem związanym z dokerem w 4.5.1, a teraz powyższy skrypt pozostawia mi czarny ekran. Aby to naprawić w 4.5.2, najpierw wykonuję polecenia eDP1 bez --off, a następnie DP1-2.
Brian C.,

1
Wreszcie pracował z panoramowaniem! Nadal jednak mam wadliwą mysz i ekran (odkąd zacząłem używać xrandr). Dowolny pomysł?
hsandt

4

Udało mi się to rozwiązać (z problemami) przy użyciu szczegółów opisanych w następującej dyskusji na githubie: https://github.com/linuxmint/Cinnamon/issues/3606

Monitor zewnętrzny QHD (2560 x 1440), monitor wewnętrzny / laptop 3200 x 1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2880
xrandr --output DP-1 --mode 2560x1440 --scale 2x2 --fb 5120x4680

LUB

Monitor zewnętrzny FHD (1920x1080), monitor wewnętrzny / laptop 3200x1800

xrandr --output eDP-1 --scale 1x1 --pos 0x2160
xrandr --output DP-1 --mode 1920x1080 --scale 2x2 --fb 3840x3960

Działają, ale znaczna część jest rozdzierająca na monitorze o wysokiej rozdzielczości (laptopie), gdy poruszam oknami, zmieniam rozmiar ekranów lub przewijam w przeglądarce. To wydaje się być rozwiązaniem do renderowania oprogramowania (które ma wszystkie te problemy związane z rozrywaniem i powolnym odświeżaniem).

W Linuksie / Gnome w 2017 r. Należy rozwiązać problem mieszanego skalowania na wielu monitorach. Zarówno Windows 10, jak i OS X rozwiązały ten problem bez konieczności uciekania się do poprawek wspomagania pasma linii poleceń, które częściowo działają (problem z rozrywaniem jest niedopuszczalny w grach)


1
Czy to nowa odpowiedź, czy próbujesz zgłosić błąd?
user68186,

Jest to rozwinięcie istniejącej odpowiedzi, z większą liczbą opcji, które można wykorzystać. Odpowiedź udzielona przez @artem powyżej wyjaśnia, jak działają te ustawienia. Po prostu starałem się zapewnić 2 opcje, z których można korzystać tak samo, jak dla osób, które mają zewnętrzny monitor QHD lub FHD oraz główny monitor 4K / monitor laptopa. Błąd polega na rozerwaniu, które widzisz dzięki temu rozwiązaniu. Jest to nieodłączne od tego podejścia.
Jeets

2
Przy rozpowszechnianiu konfiguracji 4k i wielu rozdzielczości zgadzam się z ostatnim akapitem, który wymaga rozwiązania. Wcześniej nie było tak źle, ale teraz po prostu psuje moją konfigurację na jednym monitorze, teraz, gdy mam 4k. Mam nadzieję, że Ubuntu 18 LTS będą mieli to naprawione.
neuronet

3
Jest 2018 ... wciąż ten sam sh1t :)
Stefanos Kalantzis

Wayland świetnie się do tego nadaje. Tyle że tylko po to ... Mam dobre wrażenia z Wayland + KDE, lepsze niż gnome + Wayland. Wróciłem do X z powodu braku wsparcia dla niektórych programów, które działają tylko na X i problemów ze stabilnością. 2018 ...
Victor

4

Te odpowiedzi są świetne i pomogły mi wcześniej, ale ostatnio

sudo apt-get upgrade 

usunąłem moją randr-config! Próbując przywrócić moje ustawienia, okazało się, że nie mogę już przesunąć myszy poza górną ćwiartkę 1/4 drugiego ekranu, bez względu na wejście --fb. Od https://wiki.archlinux.org/index.php/HiDPI#Side_display w końcu odkryłem, że dodanie panoramowania załatwiło sprawę. Ponadto użycie „--right-of” lub „--left-of” jest prostsze niż „--pos”.

„Ogólnie rzecz biorąc, jeśli twój monitor HiDPI (laptop) to piksele AxB, a zwykły monitor (zewnętrzny) to CxD i skalujesz według [ExF], wiersz polecenia po prawej stronie to:”

xrandr --output eDP-1 --auto --output HDMI-1 --auto --panning [C*E]x[D*F]+[A]+0 --scale [E]x[F] --right-of eDP-1

Jest to interesujące i na pewno wydaje się, że może być przydatne dla kogoś, chociaż nie jestem pewien, czy to należy do odpowiedzi na to pytanie. Może powinieneś otworzyć, a następnie odpowiedzieć na własne pytanie? Nie jestem do końca pewien.
Hee Jin

1
@Emily: Myślę, że ta odpowiedź należy tutaj. Użyłem dziś odpowiedzi Artema i miałem dokładnie określony problem ONECore (tylko lewy górny kwadrant ekranu był użyteczny przez mysz). Na szczęście zobaczyłem tę odpowiedź i panoramowanie zadziałało natychmiast.
BrainCore

Tak, przepraszam, chciałem, aby była to odpowiedź na odpowiedź @ artem, ale Stackexchange jest super niesamowity i nie pozwala mi tam odpowiadać, dopóki nie zdobędę 50 punktów brownie.
ONECore

Zauważ też, że nie wydaje się to trwałe, więc jeśli nie dodasz go do xorg.conf, zniknie przy każdym ponownym uruchomieniu. Ale jeśli go tam dodasz, wymusi to ustawienie bez względu na wszystko (czasami nie podłączam monitora). Dlatego uważam, że bardzo łatwo jest po prostu utworzyć powłokę i wykonać ją, kiedy chcę. Po prostu dodaj powyższy kod do pliku tekstowego z rozszerzeniem .sh (np. Resolution.sh), a następnie ustaw go jako „chmod 0700 resolution.sh” w terminalu.
ONECore

Dziękujemy bardzo za podzielenie się swoimi doświadczeniami @BrainCore!
Hee Jin,

1

Mam przestarzały monitor 1024x768, podłączony do (mniej przestarzałego) notebooka.
Okna renderowane w całkiem różnych rozmiarach, znacznie większe na monitorze zewnętrznym (który ma starszą, większą raster kropek).
Znalazłem polecenie skalowania monitora:

xrandr --output VGA-1 --scale 1.5x1.5

VGA-1 to wewnętrzna nazwa monitora, którą można znaleźć, uruchamiając następującą komendę:

xrandr --current | grep connected

Skutkuje to tym, że teraz stary monitor wyświetla zawartość w prawie takim samym rozmiarze jak notebook.

Co ciekawe, działa skalowanie x1,5, ale nie 1,45, wyświetlacz (w moim przypadku) staje się czarny.

Kiedy po raz pierwszy uruchomiłem komentarz dotyczący skali, wynik był przerażający, ponieważ zawartość obu ekranów pokrywała się. Na przykład wskaźnik kursora pojawił się dwukrotnie.

Prowadziłem program:

arandr &

ustawić względne pozycje ekranu, aby to naprawić.
Działa jak ustawienie Ustawienia> Urządzenia> Wyświetlacze .

Zainstalowałem to z:

sudo apt-get install arandr

Dzięki @LuisAlvarado i innym za dzielenie się wiedzą!


Działa to dla mnie tymczasowo, ale nie utrzymuje się przy ponownym uruchomieniu. Myślę, że muszę znaleźć skrypt do robienia tego, co arandrsię tutaj robi, a następnie umieścić całą rzecz w moim bashrc lub coś takiego. Dzięki!
Max von Hippel,

arandr może wyeksportować plik konfiguracyjny. Ustawiłem plik na pulpicie i podawałem go do arandr przy każdym ponownym uruchomieniu. Nie opracowałem skryptu, a teraz mam monitor i nie używam już arandr.
Juan Lanus

0

Uruchom pięść, $xrandraby wyświetlić wszystkie wyjścia

Screen 0: minimum 320 x 200, current 7680 x 2160, maximum 8192 x 8192
eDP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
   3840x2160     60.00*+  59.98    59.97  
   3200x1800     59.96    59.94  
   2880x1620     59.96    59.97   
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 521mm x 294mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1280x1024     75.02    60.02

Jak widać w tym przypadku, drugi monitor jest podłączony do DP-3 Następnie można odsprzedać wyświetlacz: $xrandr --output DP-3 --auto --scale 2x2

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.