Jak znaleźć rozdzielczość ekranu ze skryptu powłoki?
ubuntu
gnome
xorg
resolution
dave4420
źródło
źródło
$( )
składni (tjDIMENSIONS=$(xdpyinfo ...
.). Następnie użyjsed
ponownie, aby uzyskać dwa:WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
iHEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
.xdpyinfo
drukuje komunikat o błędzie, jeśli nie może uzyskać dostępu do informacji, więc przekierowanie błędu do/dev/null
. Z tego powodu może chcesz dodać przekierowanie błędu:xdpyinfo 2> /dev/null
. Tak, pełna piple wygląda następująco:xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
. To sprawi, że twój skrypt będzie bardziej solidny.xdpyinfo | grep dimensions
da ci całkowitą rozdzielczość, jeśli masz wiele monitorów, będzie to suma ich wszystkich.xrandr --current
poda rozdzielczość dla każdego monitora.Używam tego fragmentu, aby znaleźć maksymalną możliwą rozdzielczość dla rDesktop bez przechodzenia do pełnego ekranu:
Wynik:
Minusowa dekoracja okien (mniej więcej):
Wynik:
Jaka jest maksymalna rozdzielczość dla rDesktop bez przejścia na pełny ekran.
Zakończ polecenie:
Jak dotąd działa dobrze, ale nie przetestowałem go dokładnie.
Innym przykładem jest screencast z
avconv
:źródło
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
.xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1
jeśli chcesz określić ekran (z konfiguracją wielu monitorów) (SCREEN
jest indeksowany 1)Możesz użyć
xrandr -q
polecenia. Na tej podstawie możesz w razie potrzeby utworzyć skrypt powłoki.Aby uzyskać więcej informacji na temat polecenia, przejdź tutaj lub wpisz man xrandr
źródło
źródło
xwininfo -root|sed '/Height/!d;s/.* //'
wysokości ixwininfo -root|sed '/Width/!d;s/.* //'
szerokości.xdpyinfo
zrobi to z pewnym parsowaniem. Daje wiele informacji, z których będziesz musiał wykopać numer ekranu i wymiaryźródło
Powstały dwie możliwe alternatywy, łącząc odpowiedzi @ user31752 i @ eliezer-e-vargas
Prostsze wyrażenie regularne:
lub za pomocą cięcia:
Zastosowanie
grep '*' | uniq
@ eliezer-e-vargas daje inną linię (np. „1440x900 59,90 * + 59,89”) wyjścia xrandr, podczas gdy grep „podłączony” dostaje prosty (np. „LVDS1 podłączony 1440x900 + 0 + 0 ..... ”).Użycie wyrażenia regularnego przez @ user31752 jest miłe, więc linia, której używam, wymaga prostszego wyrażenia regularnego lub może zostać zastąpiona prostszym poleceniem cięcia.
Przykładowy wynik xrandr
źródło
Jak w zaakceptowanej odpowiedzi, ale mniej skomplikowanej:
Przykład wyniku:
źródło
Odczytywanie danych z ekranu monitora
Standard Vesa zapewnia metodę odczytu rozdzielczości ekranu monitora.
Monitor zazwyczaj obsługuje wiele rozdzielczości i odświeżeń. Oczywiście ktoś preferuje maksymalny (fizyczny).
Aby odczytać dane z tego monitora, wypróbuj jedno z następujących rozwiązań:
edid-decode
Jeśli nie jest zainstalowany, wpisz
Następnie przeczytaj
edid
plikread-edid
Zainstaluj za pomocą
Następnie za pomocą i2c odczytaj dane monitora ekranu i parsuj je
Zrzuć szesnastkowo edid dane
W przypadku, gdy edid-tools nie są zainstalowane, możesz zrzucić
edid
plik hex, np .:Aby zaszyfrować ten plik hex, zajrzyj na wiki lub pobierz specyfikację edid .
źródło