Как обнаружить соотношение сторон монитора?

Я не использую мягкую фетровую шляпу, и я не на 100% уверен, будут ли изменения постоянными (после обновлений ядра), но я думаю, что необходимо отредактировать файл /etc/default/grub. На номере строки 6 Вы будете видеть:

GRUB_DEFAULT="0"

Где 0 первая запись Вашего списка личинки. Отредактируйте его способ, которым Вы хотите. Затем впоследствии, выполненный sudo update-grub2.

2
29.01.2014, 00:09
2 ответа

Вы нашли команду сами, просто необходимо проанализировать ее. Например:

$ xrandr -q | grep -Po 'current\s*\d+\s*x\s*\d+' | awk '{print $1/$3}'

Регулярное выражение ищет current, затем 0 или больше пробельных символов (\s*), затем одна или несколько цифр (\d+) сопровождаемый \s*, затем x, затем \s* и наконец больше цифр. \K просто отбрасывания что-либо, что было подобрано до той точки:

$ xrandr -q | grep -Po 'current\s*\K\d+\s*x\s*\d+'
1680 x 1050

Так, Вы передаете это gawk который разделит на поля на пробеле и распечатает результат второго поля, разделенного на четвертое.


Лучший путь состоит в том, чтобы получить список от Википедии и просто вставить его в текстовый файл (удостоверьтесь, что вкладки между полями копируются правильно):

$ cat resolutions.txt
VGA 4:3 640 480 00.02   n/a
SVGA    4:3 800 600 00.17   01.03
WSVGA   ~17:10  1024    600 00.31   02.25
XGA 4:3 1024    768 05.53   18.69
XGA+    4:3 1152    864 00.87   01.55
WXGA    16:9    1280    720 01.51   01.54
WXGA    5:3 1280    768 n/a 01.54
WXGA    16:10   1280    800 04.25   12.97
SXGA– (UVGA)    4:3 1280    960 00.72   00.72
SXGA    5:4 1280    1024    10.66   07.49
HD  ~16:9   1360    768 02.36   02.28
HD  ~16:9   1366    768 17.19   19.14
SXGA+   4:3 1400    1050    00.18   n/a
WXGA+   16:10   1440    900 07.60   06.61
HD+ 16:9    1600    900 06.82   03.82
UXGA    4:3 1600    1200    00.53   n/a
WSXGA+  16:10   1680    1050    10.26   03.66
FHD 16:9    1920    1080    25.04   05.09
WUXGA   16:10   1920    1200    03.65   01.11
QWXGA   16:9    2048    1152    00.13   n/a
WQHD    16:9    2560    1440    00.72   00.36
WQXGA   16:10   2560    1600    00.19   n/a
    3:4 768 1024    n/a 01.93
    16:9    1093    614 n/a 00.63
    ~16:9   1311    737 n/a 00.35
Other               01.29   07.25

Теперь, используйте тот файл для получения значения, в котором Вы нуждаетесь:

$ grep -Po 'current\s*\K\d+\s*x\s*\d+' a | sed 's/ *x */ /' | 
    while read x y; do 
     grep "$x" resolutions.txt | grep "$y" | awk -F"\t" '{print $2}'; 
  done 
16:10

Наконец, превратите это в небольшой сценарий:

#!/usr/bin/env bash

## The location of the file with the resolutions
RESOLUTIONS="$HOME/resolutions.txt" 

xrandr -q | grep -Po 'current\s*\K\d+\s*x\s*\d+' | sed 's/ *x */ /' | 
while read x y; do 
    grep "$x" "$RESOLUTIONS" | grep "$y" | awk -F"\t" '{print $2}'; 
done 

Сохраните сценарий где-нибудь в Вашем $PATH и затем выполните его для получения разрешения:

$ get_resolution.sh
16:10
5
27.01.2020, 21:57
  • 1
    Эта математика не будет на самом деле всегда работать, например, рассматривать монитор с разрешением 720×480. Это 4:3. Вероятно. Мог также быть 16:9. Зависит от дисплея. –  derobert 29.01.2014, 00:06
  • 2
    @derobert да, вот почему я добавил метод, который анализирует список Википедии. –  terdon♦ 29.01.2014, 00:07
  • 3
    720×480 отсутствует в том списке..., вероятно, потому что это не действительно компьютерное разрешение. –  derobert 29.01.2014, 00:08

При необходимости в нем для некоторого сценария не только для любопытства Вы можете sed/awk xrandr вывод для этого значения и вычислять его алгоритмом наименьшего общего кратного.

Однако для напр. в течение 16:10 это будет 8:5 (это математически корректно, но не, как мы привыкли к. Таким образом, может быть более просто соответствовать ему в некоторой ассоциативной таблице.

0
27.01.2020, 21:57

Теги

Похожие вопросы