Szukam metody raportowania rozdzielczości wyświetlania. Chcę skonfigurować skrypty do uruchamiania rdesktop
i chcę uruchomić go na kilku komputerach o różnych rozdzielczościach, więc chcę sposób na dynamiczne określenie tego.
Szukam metody raportowania rozdzielczości wyświetlania. Chcę skonfigurować skrypty do uruchamiania rdesktop
i chcę uruchomić go na kilku komputerach o różnych rozdzielczościach, więc chcę sposób na dynamiczne określenie tego.
Odpowiedzi:
Użyj polecenia xrandr
. Bez żadnego argumentu wyświetla dostępne rozdzielczości i bieżącą (z gwiazdką), na przykład:
$ xrandr | fgrep '*'
xrandr |g grep \*
czy to podstęp?
Alternatywne rozwiązanie: xdpyinfo | grep dimensions
. xdpyinfo
jest 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.
xdpyinfo
podczas gdy xrandr
poprawnie wyliczają ekrany i ich rozdzielczość. W zależności od kontekstu może to stanowić problem.
xdpyinfo
wydaje 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
, xdpyinfo
mówi, że rozdzielczość wynosi 96 x 96 punktów na cal.
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
Powinienem spojrzeć trochę mocniej przed opublikowaniem. xrandr
wyemituje 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]\*\+'
xrandr
wyjście do użycia imagemagickxrandr |grep \* |awk '{print $1}'