Доберитесь монитор делают и модель и другая информация в человекочитаемой форме

В зависимости от которого браузера Вы используете, использование автофайла конфигурации прокси могло бы работать лучше всего. Большинство современных браузеров будет поддерживать это.

Что-то вроде этого должно быть хорошим началом:

function FindProxyForURL(url, host) {

    isp = "PROXY ip_address:port; DIRECT";
    tor = "SOCKS 127.0.0.1:9050";

    if (shExpMatch(host,"*.onion")) {
        return tor;
    }

    return "DIRECT";

}

помещенный это где-нибудь как $HOME/.proxy_pac, и затем в Вашем "Автоматическом URL Конфигурации Прокси" помещает путь URL к файлу: file:///home/user/.proxy_pac.

19
16.03.2013, 06:33
3 ответа

В Предпочтениях Монитора Ubuntu это идентифицируется как Viewsonic Corporation 16 дюймов. Как я могу извлечь эту человекочитаемую форму?

Та человекочитаемая форма ("Viewsonic Corporation") не прибывает (непосредственно) из Вашего EDID:
Ubuntu пользуется библиотеками гнома внизу. libgnome-desktop декодирует edid, и - с помощью pnp-идентификаторов - преобразовывает трехбуквенный идентификатор поставщика ("VSC" в Вашем особом случае) на симпатичное название дисплея.

gnome-pnp-ids.c, строка 51:

* Note: we now prefer to use data coming from hwdata (and shipped with gnome-desktop)*

В моей системе

grep VSC /usr/share/hwdata/pnp.ids

возвраты:

VSC    ViewSonic Corporation

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

Блоки дескриптора. Подробные дескрипторы синхронизации, в уменьшающемся предпочтительном порядке. В конце концов, подробные дескрипторы синхронизации, дополнительные дескрипторы разрешены:

  • Пределы диапазона монитора (требуются)
  • Текст ASCII ((требуемое) название монитора, контролируйте порядковый номер или неструктурированный текст),
  • 6 Дополнительных стандартных блоков информации синхронизации
  • Данные цветной точки

В настоящее время определяемые типы дескриптора:

  • 0xFF: Контролируйте порядковый номер (текст)
  • 0xFE: неуказанный текст (текст)
  • 0xFD: пределы диапазона Монитора. 6-или 13-байтовый двоичный дескриптор.
  • 0xFC: название Монитора (текст)
  • 0xFB: Дополнительные данные белой точки. 2× 5-байтовые дескрипторы, дополненные 0A 20 20.
  • 0xFA: Дополнительные стандартные идентификаторы синхронизации. 6× 2-байтовые дескрипторы, дополненные 0A.

В Вашем EDID Вы имеете 0xFF (порядковый номер) в дескрипторе 1 (байты 54-71):

00 ff 00 48 48 39 32 31 30 30 30 30 39 0a 20 20 00 00

и Вы имеете 0xFC (контролируйте имя) в дескрипторе 3 (байты 90–107) и 4 (байты 108–125):

  00 fc 00 56 69 65 77 53 6f 6e 69 63 20 45 37 37 00 00
  00 fc 00 31 2d 32 0a 20 20 20 20 20 20 20 20 20 00 84

таким образом, это - только вопрос извлечения информации оттуда, например, дескриптора 3:

56 69 65 77 53 6f 6e 69 63 20 45 37 37 >> Viewsonic E77

Существуют некоторые инструменты Linux там тот синтаксический анализ EDIDs... Я использую monitor-edid. Вот вывод в формате самосвала Perl на моей машине:

(
+{
          'EISA_ID' => 'CMO1574',
          'checksum' => 25,
          'detailed_timings' => [
                                  {
                                    'ModeLine' => '"1600x900" 97.75 1600 1648 1680 1760 900 903 908 926 -hsync -vsync',
                                    'ModeLine_comment' => '# Monitor preferred modeline (60.0 Hz vsync, 55.5 kHz hsync, ratio 16/9, 118 dpi)',
                                    'digital_composite' => 3,
                                    'horizontal_active' => 1600,
                                    'horizontal_blanking' => 160,
                                    'horizontal_border' => 0,
                                    'horizontal_dpi' => '118.139534883721',
                                    'horizontal_image_size' => 344,
                                    'horizontal_sync_offset' => 48,
                                    'horizontal_sync_positive' => 0,
                                    'horizontal_sync_pulse_width' => 32,
                                    'interlaced' => 0,
                                    'pixel_clock' => '97.75',
                                    'preferred' => 1,
                                    'stereo' => 0,
                                    'vertical_active' => 900,
                                    'vertical_blanking' => 26,
                                    'vertical_border' => 0,
                                    'vertical_dpi' => '118.445595854922',
                                    'vertical_image_size' => 193,
                                    'vertical_sync_offset' => 3,
                                    'vertical_sync_positive' => 0,
                                    'vertical_sync_pulse_width' => 5
                                  }
                                ],
          'diagonal_size' => '15.5292379824145',
          'edid_revision' => 3,
          'edid_version' => 1,
          'established_timings' => [],
          'extension_flag' => 0,
          'feature_support' => {
                                 'DPMS_active_off' => 0,
                                 'DPMS_standby' => 0,
                                 'DPMS_suspend' => 0,
                                 'GTF_compliance' => 0,
                                 'has_preferred_timing' => 1,
                                 'rgb' => 0,
                                 'sRGB_compliance' => 0
                               },
          'file' => '/sys/class/drm/card0-LVDS-1/edid',
          'gamma' => 120,
          'manufacturer_name' => 'CMO',
          'max_size_horizontal' => '34.4',
          'max_size_precision' => 'mm',
          'max_size_vertical' => '19.3',
          'monitor_details' => '',
          'monitor_text' => [
                              'N156O6-L01',
                              'CMO',
                              'N156O6-L01'
                            ],
          'product_code' => 5492,
          'ratio' => '1.78238341968912',
          'ratio_name' => '16/9',
          'ratio_precision' => 'mm',
          'serial_number' => 0,
          'standard_timings' => [],
          'video_input_definition' => {
                                        'composite_sync' => 0,
                                        'digital' => 1,
                                        'separate_sync' => 0,
                                        'sync_on_green' => 0,
                                        'voltage_level' => 0
                                      },
          'week' => 41,
          'year' => 2008
        }
,
)

Наконец, я понятия не имею, как определить (в Linux), если монитором является жидкокристаллический дисплей или CRT. Я не знаю ни о какой библиотеке, которая реализует такую функцию (как этот от MS).

8
27.01.2020, 19:45
  • 1
    Это - большой ответ. Спасибо за усилие. –  Peter.O 18.03.2013, 03:24

Следующий инструмент может быть полезен для декодирования EDID Info: http://cgit.freedesktop.org/xorg/app/edid-deCode

2
27.01.2020, 19:45

Что-то вроде этого должно работать лучше (все остальные ответы здесь не сработали на 100%):

for file in `ls -1 /sys/class/drm/*/edid`; do text=$(tr -d '\0' <"$file"); if [ -n "$text" ]; then edid-decode "$file" | grep -e Manufacturer: -e Product; sleep 0.0001; fi done

Здесь я протестировал 2 монитора. Мой основной — это встроенный монитор для ноутбука, а дополнительный — DELL 25 дюймов. Вот результат:

Manufacturer: DELL Model 53359 Serial Number 809781068
Display Product Serial Number: YKFWP5790DGL
Display Product Name: DELL U2515H
Manufacturer: LGD Model 1133 Serial Number 0

Вы должны установить edid-decodeв свой дистрибутив. Моя установка — DELL Latitude e5450 с Ubuntu 20.04.

4
20.06.2020, 21:46

Теги

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