В зависимости от которого браузера Вы используете, использование автофайла конфигурации прокси могло бы работать лучше всего. Большинство современных браузеров будет поддерживать это.
Что-то вроде этого должно быть хорошим началом:
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
.
В Предпочтениях Монитора 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).
Следующий инструмент может быть полезен для декодирования EDID Info: http://cgit.freedesktop.org/xorg/app/edid-deCode
Что-то вроде этого должно работать лучше (все остальные ответы здесь не сработали на 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.