Uzyskaj rozdzielczość ekranu z wiersza poleceń dla Linux Desktop

32

Szukam metody raportowania rozdzielczości wyświetlania. Chcę skonfigurować skrypty do uruchamiania rdesktopi chcę uruchomić go na kilku komputerach o różnych rozdzielczościach, więc chcę sposób na dynamiczne określenie tego.

Barton Chittenden
źródło
unix.stackexchange.com/questions/2672/…
Ciro Santilli 29 改造 中心 法轮功 六四 事件

Odpowiedzi:

37

Użyj polecenia xrandr. Bez żadnego argumentu wyświetla dostępne rozdzielczości i bieżącą (z gwiazdką), na przykład:

$ xrandr | fgrep '*'
Diego Woitasen
źródło
Czy możesz dołączyć próbkę do odpowiedzi? I zgaduję, xrandr |g grep \*czy to podstęp?
Ehtesh Choudhury
11

Alternatywne rozwiązanie: xdpyinfo | grep dimensions. xdpyinfojest starszy niż xrandr, więc może być bardziej przenośny, jeśli zdarzy ci się użyć bardzo starej dystrybucji lub innego serwera X.

liori
źródło
2
Rzeczywiście, ale niektóre (wszystkie?) Ustawienia wielu monitorów pojawiają się jako jeden ekran, xdpyinfopodczas gdy xrandrpoprawnie wyliczają ekrany i ich rozdzielczość. W zależności od kontekstu może to stanowić problem.
Stéphane Gourichon
Uwaga: chociaż xdpyinfowydaje się, że raportuje prawidłowe wymiary w pikselach, zgłasza złą rozdzielczość (DPI). Np. Na moim monitorze z wymiarami 3840 x 2160 (natywny i rzeczywisty) i rozmiarem 708 mm x 399 mm, jak podaje raport xrandr, xdpyinfomówi, że rozdzielczość wynosi 96 x 96 punktów na cal.
Ruslan
7

Rozdzielczość poziomą i pionową można uzyskać za pomocą następującego polecenia:

xdpyinfo | grep dimensions | awk '{print $2}' | awk -Fx '{print $1, $2}'

lub, w bardziej zwartej formie (jak sugeruje Peter.O w tym komentarzu):

xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}' 

Na przykład na ekranie o rozdzielczości 1600 x 900 spowoduje to wyświetlenie następujących danych wyjściowych:

1600 900

Następnie możesz umieścić wartości w osobnych zmiennych za pomocą polecenia:

read RES_X RES_Y <<<$(xdpyinfo | awk -F'[ x]+' '/dimensions:/{print $3, $4}')

Wyświetl wartości powyższych zmiennych za pomocą polecenia:

echo $RES_X, $RES_Y

W przypadku wyświetlacza o rozdzielczości 1600x900 wyjście to:

1600, 900
crayzeewulf
źródło
1
xdpyinfo | awk -F '[x] +' '/ Dimensions: / {print 3 $, 4 $}'
Peter.O
@ Peter.O, dzięki. To ładna, kompaktowa forma polecenia. Zaktualizowałem odpowiedź.
crayzeewulf
Rzeczywiście, ale niektóre (wszystkie?) Konfiguracje dla wielu monitorów pojawiają się w xdpyinfo jako jeden ekran, podczas gdy xrandr poprawnie wylicza ekrany i ich rozdzielczość. W zależności od kontekstu może to stanowić problem.
Stéphane Gourichon
5

Powinienem spojrzeć trochę mocniej przed opublikowaniem. xrandrwyemituje bieżące ustawienia wyświetlania, jeśli nie otrzyma żadnych innych argumentów.

Domyślnie spowoduje to zrzucenie wszystkich możliwych ustawień wyświetlania, które można filtrować w następujący sposób:

xrandr | egrep '^[^ ]|[0-9]\*\+'
Barton Chittenden
źródło
1

Czyste xrandrwyjście do użycia imagemagick

xrandr |grep \* |awk '{print $1}'
Serge Stroobandt
źródło