Избегайте разбора вывода Xrandr

мне нужно получить информацию от xrandr в мое программное обеспечение. Предположим, что это мой вывод из xrandr -q:

Screen 0: minimum 8 x 8, current 1920 x 1968, maximum 32767 x 32767
LVDS1 connected primary 1366x768+309+1200 (normal left inverted right x axis y axis) 277mm x 156mm
   1366x768      60.02*+
   1360x768      59.80    59.96 
   1280x720      60.00 
   1024x768      60.00 
   1024x576      60.00 
   960x540       60.00 
   800x600       60.32    56.25 
   864x486       60.00 
   640x480       59.94 
   720x405       60.00 
   680x384       60.00 
   640x360       60.00 
DP1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
   1920x1200     59.95*+
   1920x1080     60.00 
   1600x1200     60.00 
   1680x1050     59.95 
   1280x1024     60.02 
   1280x960      60.00 
   1024x768      60.00 
   800x600       60.32
   640x480       60.00 
   720x400       70.08

Мне нужны данные о возможных решениях вместе с возможными частотами обновления. Пока что мое программное обеспечение считывает возможности из /sys/class/drm/card0-DP-1 и так далее, но я не могу найти никакой информации о возможных частотах обновления для любого решения. Любой намек на это?

Я также хотел бы знать, расположены ли и как мониторы относительно друг друга, то есть при настройке использовались ли такие команды, как --above, --below, --left-of, --right-of. Есть ли способ определить это?

Чего я действительно не хочу делать, так это анализировать вывод xrandr с терминала. Итак, вопрос в том, есть ли у кого-нибудь идеи, как это сделать красиво. Я работаю в среде Go, но пока не нашел ни одного пакета, который решает мои проблемы.

Приветствуется любая помощь.


person plazmakeks    schedule 28.02.2018    source источник
comment
Язык называется Go, а не golang ;-)   -  person kostix    schedule 28.02.2018


Ответы (1)


Вы можете взглянуть на пакет github.com/BurntSushi/xgb, который является чистой реализацией Go для XCB и у него есть доступ к randr объекту.

person kostix    schedule 28.02.2018
comment
Спасибо за ваш ответ. xgb кажется мне ценным. к сожалению, в библиотеке есть ошибка, соответственно в X. проверьте это, что делает его невозможно получить частоту обновления. Итак, какие-либо дальнейшие рекомендации? - person plazmakeks; 06.03.2018
comment
понятно. можно рассчитать частоту обновления через ModeInfo. - person plazmakeks; 06.03.2018
comment
Хм, судя по багу, сервер не отправляет информацию, которую xgb ожидает найти в randr запросе. К сожалению, моих знаний о внутренностях X явно недостаточно, чтобы предположить, какой компонент действительно виноват. - person kostix; 06.03.2018