|
2.4, Аноним84701 (?), 23:50, 10/09/2016 [^] [^^] [^^^] [ответить]
| +5 +/– |
> Так а в чём собственно отличие от xrandr?
Это обвязка. Внутри используется xrandr. Задумка в автоматизации – настроил один раз, сохранил в файл и можешь в следующий раз загрузить готовое.
Ваш Кэп.
| |
|
3.10, X2asd (ok), 10:20, 11/09/2016 [^] [^^] [^^^] [ответить]
| +2 +/– |
> настроил один раз, сохранил в файл и можешь в следующий раз загрузить готовое.
Вот ты сейчас описал работу randr..
Настроил 1 раз
Записал в файл (.sh)
Следующий раз просто запускаешь файл (.sh)
| |
|
4.11, edio (?), 11:17, 11/09/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Со скриптов все и началось. Но когда их стало >3, и когда я начал забывать, где и какой надо запустить, понял, что это не очень удобно.
randrctl умеет автоматически выбирать среди сохраненных профилей тот, который больше всего подходит (умеет по edid и по разрешению). А использование udev позволяет вообще ничего не запускать: раз сохранил профиль, дальше при подключении он активируется автоматически.
| |
4.12, derlafff (ok), 11:26, 11/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
Ну это нужно вручную опознавать нужный .sh
А тут оно смотрит на мониторы и подгружает соответствующий конфиг
| |
4.15, rshadow (ok), 15:37, 11/09/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
Один фиг иксы не умеют в идентификатор монитора. Оперируют выходами. Выходы перепутал и вся конфигурация по *** пошла.
Обвязка нужна, чтобы из кучки утилит и гуя сделать простую настройку.
| |
4.16, Аноним84701 (?), 16:23, 11/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
>> настроил один раз, сохранил в файл и можешь в следующий раз загрузить готовое.
> Вот ты сейчас описал работу randr..
> Настроил 1 раз
> Записал в файл (.sh)
> Следующий раз просто запускаешь файл (.sh)
Под это описание подходит и обвязка arandr, которая с графикой и записью настроек в шелл-скрипт. Признаю сразу свое неосиляторство и недостаточную крутизну, но настраивать позицию экранов относительно друг друга мышевозя и имея "картинку" мне как-то проще и удобнее, чем методом тыка с подбором подходящих значений.
| |
|
|
|
|
2.5, Avari (?), 00:04, 11/09/2016 [^] [^^] [^^^] [ответить]
| +4 +/– |
Затем, что _обвязку_ к системной утилитке xrandr вполне разумно писать на каком-нибудь скриптовом языке.
| |
|
3.17, Андрей (??), 17:03, 11/09/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
> _обвязку_ к системной утилитке xrandr
Так всё таки обвязку. Вот так бы в новости прямо и написали. Тогда бы и вопроса не было.
| |
|
4.21, edio (?), 19:21, 11/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
Вроде, именно так и написано
> Для определения момента подключения мониторов, а также для считывания текущих настроек и применения настроек из профилей в randrctl используются функции udev и xrandr | |
|
|
|
|
|
3.9, Аноним (-), 09:20, 11/09/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ага а ещё Metal вместо OpenGL и Swift вместо С\С++. Велосипедисты ненужны.
| |
|
|
1.13, Аноним (-), 12:49, 11/09/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –2 +/– |
Поддержка wayland планируется?
Очень не хватает утилиты вроде xrandr для него, которая работала бы в разных композиторах.
| |
1.14, Аноним (-), 13:13, 11/09/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
> Очень не хватает утилиты вроде xrandr для него, которая работала бы в разных композиторах.
Вы не тех пинаете, это невозможно в дефолтном протоколе wayland.
| |
1.19, Wladmis (ok), 18:11, 11/09/2016 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
Вот уж по-настоящему большое ненужно. Мало того, что это просто обвязка вокруг xrandr(1) и оно не умеет RandR 1.2 в Wayland, так и то, что оно делает, решается использованием xrandr(1) + правилами udev.
P.S. Код поражает воображение своей серьёзностью, с которой написан.
| |
|
2.20, аноним123 (?), 19:17, 11/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
> решается использованием xrandr(1) + правилами udev.
Это и есть решение с использованием xrandr и udev. Готовое, легкое в использовании решение.
| |
|
3.22, Wladmis (ok), 19:25, 11/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
>> решается использованием xrandr(1) + правилами udev.
> Это и есть решение с использованием xrandr и udev. Готовое, легкое в
> использовании решение.
Готовое — возможно, лёгкое в использовании — сомнительно. Но возникает вопрос: кто им будет пользоваться? Пользователи DE используют средства настройки экрана своей DE. А у пользователей маленьких оконных менеджеров, если им это надо, уже всё давно настроено. Или скриптик написан в несколько строчек, или правила udev'а.
Тем более, для такой простой утилиты код написан чересчур сложновато на мой взгляд.
| |
|
4.23, edio (?), 20:14, 11/09/2016 [^] [^^] [^^^] [ответить]
| +3 +/– |
> А у пользователей маленьких оконных менеджеров, если им это надо, уже всё давно настроено.
Я, как раз, пользователь маленького оконного менеджера. Мне было надо, настроил себе — предлагаю свое решение другим.
И мне кажется, что решение, таки, легкое в использовании: мне было бы гораздо сложнее переносить какой-то набор своих скриптов с машины на машину, не забывая при этом править названия аутпутов и пр.. Хотелось сразу чего-то более-менее универсального и, кажется, получилось.
По поводу кода: почувствовал сам, что написан не лучшим образом, когда захотел добавить HiDPI после того, как почти год не смотрел на код. Начиналось все как хелловорлд на питоне...
| |
|
|
|
1.26, freehck (ok), 09:22, 12/09/2016 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> позволяет сохранить текущие настройки экрана в файл с тем чтобы применить их позже (вручную либо автоматически), когда к компьютеру будет подключен тот же или подобный набор мониторов.
Интересно. Гипотетическая ситуация: я сохранил настройку для двух мониторов, но потом решил переключить один из мониторов с VGA на DVI. Настройки всё равно подхватятся?
| |
|
2.27, edio (?), 11:20, 12/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
Нет, только на том же аутпуте.
Мог бы заняться тем, чтоб подхватывало для конкретных дисплеев, но только если функция действительно востребована, это не будет быстрофикс.
| |
|
3.28, Аноним (-), 22:00, 12/09/2016 [^] [^^] [^^^] [ответить]
| +1 +/– |
А что если настроил, а потом внешний моник отключил? А потом снова подключил? А потом перезагрузился без моника и подключил его позже? Или загрузился сразу с ним? Мне вот сейчас каждый раз приходится с помощью xrandr вручную добавлять (что вызывает ошибку если он не подключен в этот момент, на сколько я помню) полноценное разрешение 1280x1024 для внешнего монитора (автоматом система его распознаёт только на 1024x768). ОС Ubuntu 16.04 (в прочем, проблеме больше 5 лет точно), моник подключен через D-Sub, видеокарта Intel.
| |
|
4.31, edio (?), 00:10, 13/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
> А что если настроил, а потом внешний моник отключил? А потом снова
> подключил? А потом перезагрузился без моника и подключил его позже? Или
> загрузился сразу с ним? Мне вот сейчас каждый раз приходится с
> помощью xrandr вручную добавлять (что вызывает ошибку если он не подключен
> в этот момент, на сколько я помню) полноценное разрешение 1280x1024 для
> внешнего монитора (автоматом система его распознаёт только на 1024x768). ОС Ubuntu
> 16.04 (в прочем, проблеме больше 5 лет точно), моник подключен через
> D-Sub, видеокарта Intel.
все зависит от udev. Если он триггерит для d-sub выхода событие (по идее, должен), то будет работать.
в prior-switch hook надо будет добавлять к монитору разрешение. Правда, на данном этапе, в prior-switch надо будет самому проверять edid монитора.
Я мог бы передавать в prior-switch md5 от edid (если вам эта опция подходит, заведите issue, пожалуйста, займусь в ближайший свободный вечер), тогда проверка была бы простая:
.config/randrct/config.ini
prior_switch = /path/to/add_resolution.sh
/path/to/add_resolution.sh
if [ "$edid" -eq "$my_monitor_edid" ]; then xrandr ... ; fi
| |
4.32, edio (?), 00:18, 13/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
Пример по поводу udev и отключений/подключений.
У меня есть профиль default без внешних мониторов, и, например office.
В офисе я могу снять работающий ноут с докстанции, и тогда сразу активируется default.
А могу сначала усыпить ноут, а потом снять с докстанции. Тогда default активируется при пробуждении.
| |
|
3.29, freehck (ok), 22:31, 12/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
> Нет, только на том же аутпуте.
Тогда Вы меня окончательно запутали. В сообщении №23 Вы написали, что:
> мне было бы гораздо сложнее переносить какой-то набор своих скриптов с машины на машину, не забывая при этом править названия аутпутов и пр..
Значит, при смене output-а всё равно конфигурация мониторов не подхватится? Тогда я не очень уяснил, в чём суть. Если для каждой конфигурации мониторов на каждом месте мне придётся настраивать всё это дело заново, так не легче ли сразу xrandr?
Вот у меня, например, в настройках lightdm.conf прописано следующее:
display-setup-script=/etc/lightdm/monitor-setup.sh
А monitor-setup.sh - скрипт в две строчки:
xrandr --auto --output VGA-1 --mode 1680x1050 --primary
xrandr --auto --output DVI-I-1 --mode 1680x1050 --left-of VGA-1
Ну допустим, что основной монитор - это монитор от ноутбука, а левый - подключаемый. Если вместо моего скрипта использовать Ваш, то я правильно понял, что он автоматически проверит наличие левого монитора и выберет соответствующую конфигурацию?
С другой стороны, для подобной проверки лично мне бы, конечно, было бы проще написать обвязку одной строчкой, наподобие:
if xrandr | grep -q 'DVI-I-1 connected' ; then <DVI-I-1 command> ; fi
UPD:
Да и касательно udev, можно ведь вышеописанный трёхстрочник скормить ему примерно так:
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/path/to/monitor-setup.sh"
В общем, я пока всё никак по-видимому не пойму use-case Вашего скрипта, извините.
| |
|
4.30, edio (?), 23:58, 12/09/2016 [^] [^^] [^^^] [ответить]
| –1 +/– |
юзкейз такой: у меня один ноутбук, но 4 "рабочих" места: мониторы через докстанцию в офисе, телевизор в офисе, монитор дома, проектор дома. А, и еще просто лептоп, без мониторов, итого — 5.
randrctl позволяет не вызывать 5 скриптов вручную.
> if xrandr | grep -q 'DVI-I-1 connected' ; then <DVI-I-1 command> ; fi
К displayport я подключаю и проектор, и монитор, два разных устройства и два разных конфига.
randrctl проверяет edid устройства, подключенного к аутпуту, и выбирает нужный конфиг.
К слову, мне сценарий, когда один и тот же монитор подключается то к одному, то к другому аутпуту кажется надуманным. Это бы означало, что из монитора торчит несколько шнурков, но использую я попеременно только один из них.
| |
|
5.33, freehck (ok), 01:39, 13/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
> юзкейз такой: у меня один ноутбук, но 4 "рабочих" места: мониторы через докстанцию в офисе, телевизор в офисе, монитор дома, проектор дома. А, и еще просто лептоп, без мониторов, итого — 5.
Вооооот. Вот об этом и *нужно* было писать в новости, edio.
> randrctl позволяет не вызывать 5 скриптов вручную.
Ну зачем же 5 скриптов, да к тому же вручную...
Можно же в shell проверять содержимое /sys, например так:
% find /sys/devices/ -name edid
/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1/edid
/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-VGA-1/edid
На эти файлы можно натравить base64, и запомнить edid в текстовом формате.
Ну а дальше - применение настроек тем же самым xrandr, и правило в udev. :)
Возьмите этот метод на заметку, кстати. Всяко лучше, нежели вывод xrandr --verbose парсить. ;)
> randrctl проверяет edid устройства, подключенного к аутпуту, и выбирает нужный конфиг.
По-моему лучше было бы применять настройки к соответствующему output исходя из edid монитора, который к нему подключён.
Резюмируя, скажу, что идея у скрипта хорошая. Я бы наваял на bash, имхо надёжней было. Вашей тулзе желаю успеха. Нужный инструмент всегда найдёт своего пользователя.
| |
|
6.35, edio (?), 11:31, 13/09/2016 [^] [^^] [^^^] [ответить]
| +/– |
в самом начале рассматривал вариант использования /sys, но почему-то тогда от него отказался. Возможно, amd не умели тогда в /sys.
Но вообще, да, идея хорошая, надо будет подумать над ней, спасибо!
| |
|
|
|
|
|
|