LINUX.ORG.RU

xrandr но для wayland и x11

 , , , ,


0

1

А есть ли у нас какой-то консольный универсальный способ менять разрешение экрана и масштабирование? Хочу скрипт (кнопку) на рабочий стол, которая будет переключать мне мониторы (есть 4к монитор на котором я пишу код, играю в игры, читаю ЛОР) и есть FULL HD телевизор на котором я смотрю кино лёжа на диване. Физически всё подключено к одной видеокарте, а я хочу скрипт выполняющий следующие действия:

  1. Определить включен ли телевизор, если да то пункт 2, если нет то пункт 6
  2. выключить телевизор
  3. сменить разрешение монитора на 3840x2160
  4. поставить масштабирование на 200%
  5. конец
  6. установить разрешение монитора на 1920x1080
  7. поставить масштабирование на 100%
  8. включить телевизор в режиме дублирования картинки
  9. конец

Сейчас я всё это делаю прокликиванием настроек экрана, но мне дико лениво это делать. Конечно можно и на сишке выдрать код из gnome-control-center, но это надо разбираться и вообще как резервный вариант, если ничего готового нет. Да, я знаю как это сделать отдельно для иксов и вялого, но меня смущает, например то, что масштабирование в gnome-control-center в сессии x11 через xrandr не определяется, т.е. оно меняется где-то в другом месте.

★★★★★

Последнее исправление: peregrine (всего исправлений: 2)
Ответ на: комментарий от kostik87

Хорошо, что можно в случае гнома делать и иксов (остальное я уж как-нибудь elif-ами по мере надобности оформлю)? Сейчас настройки лежат в ~/.config/monitors.xml, гномощель их оттуда тянет, и gnome-control-center именно туда их засовывает. В теории перекопирование этого файла даст нужный эффект, но проблема в том, что в реальности даже применение настроек через GUI иногда приводит к забавным артефактам с окнами, оно и понятно - технически gnome-control-center только и делает, что меняет этот файл, а перегрузка гномощели чтоб настройки оттуда по всей системе применились, оно не умеет. ХЗ, может багрепорт писать в гномощель, конечно оно маловероятно что кто-то почешется, но всё же. И есть ли какой-то воркэраунд или линупсы уже пора закапывать и ставить вантуз с рутрекера?

peregrine ★★★★★
() автор топика
Ответ на: комментарий от peregrine

ну насколько написано в инете настройки меняются через dbus org.gnome.mutter.DisplayConfig

Функции для получения текущей конфигурации и установки новой там есть, но лично мне неохота было их проверять и копаться в этом dbus

masa ★★★
()

А есть ли у нас какой-то консольный универсальный способ менять разрешение экрана и масштабирование?

Размечтался)) Не для этого вейленд делали, теперь каждый ДЕ/ВМ уникальный общего способа нет по определению.

einhander ★★★★★
()
Ответ на: комментарий от masa

У тебя wayland? У меня x11 на ubuntu 24.04.03 как-то так выглядит.

gsettings get org.gnome.desktop.interface scaling-factor
uint32 0
gsettings get org.gnome.desktop.interface text-scaling-factor
1.0
gsettings get org.gnome.settings-daemon.plugins.xsettings overrides
@a{sv} {}
А это 4k монитор с 200% масштабированием.

peregrine ★★★★★
() автор топика
Ответ на: комментарий от masa

Хм, да посмотрел во вкладке Session Bus, там много интересного. Но разве это не wayland эксклюзив?

peregrine ★★★★★
() автор топика
Последнее исправление: peregrine (всего исправлений: 1)
Ответ на: комментарий от peregrine

Да, вейланд, вот этот скейл меняется и меняется шрифт:

user@x1:~$ gsettings get org.gnome.desktop.interface text-scaling-factor
1.25

user@x1:~$ gsettings set org.gnome.desktop.interface text-scaling-factor 1.5

А вот этот также 0 и от изменения ничего не происходит

user@x1:~$ gsettings get org.gnome.desktop.interface scaling-factor
uint32 0

Видимо тоже через dbus надо менять, там в GetCurrentState возвращется какая-то 1.0 и что-то похожее на интервал [1.0, 2.0]

https://ibb.co/v4RgmLpZ

Разобраться бы по это этим загадочным сигнатурам, что туда передавать и наверно можно управлять

masa ★★★
()
Ответ на: комментарий от peregrine

Универсальные обёртки есть какие-то? Не верю что столь типовую задачу никто не захотел решать.

Не понятно, зачем её кому-то решать. Обёртку можно самому на баше сделать, только проще держать два разных скрипта.

…масштабирование в gnome-control-center в сессии x11 через xrandr не определяется…

Особенность иксового бардака:

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

  • Чтобы приложения рисовались нужного размера их об этом нужно попросить, это делается через переменные окружения вручную или через настройки DE.

В иксах для этого надо комбинировать xrandr (для расположения и настроек мониторов), а для масштабирования менять ручками переменные окружения или найти родной для конкретного ДЕ способ.

altwazar ★★★★★
()