Страница 2 из 3
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 12:22
slant
demonlibra писал(а): ↑10 апр 2021, 11:33
У меня идеи закончились.
В ссылке что я вам кинул вызов выглядит не так:
KERNEL=="card0", SUBSYSTEM=="drm", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/username/.Xauthority", RUN+="/usr/bin/arandr"
И я подозреваю, что отсутствие у вас в конфиге удава
ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/username/.Xauthority"
- это ключевая проблема. Когда вы дергаете удава из консоли - это все равно происходит из вашей сессии иксов, там переменные наследуются. А вот когда удав сам возбуждается - у ему этих данных не хватает. Да, вы пытаетесь это задать в самом скрипте, но там уже поздно. Они нужны раньше чем скрипт запускается, в самом вызове, иначе скрипт попадает в другую сессию/ветку процессов. Изолированную.
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 12:32
demonlibra
Код: Выделить всё
demonlibra@demonlibra-Extensa-2540:~$ cat /etc/udev/rules.d/hdmi.rules
KERNEL=="card0-HDMI-A-1", SUBSYSTEM=="drm", ATTR{status}=="connected", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/demonlibra/.Xauthority", RUN+="/usr/bin/script -c '/usr/local/bin/hdmi.sh true' /tmp/hdmi.log"
KERNEL=="card0-HDMI-A-1", SUBSYSTEM=="drm", ATTR{status}=="disconnected", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/demonlibra/.Xauthority", RUN+="/usr/bin/script -c '/usr/local/bin/hdmi.sh false' /tmp/hdmi.log"
demonlibra@demonlibra-Extensa-2540:~$ cat /usr/local/bin/hdmi.sh
#!/bin/bash
echo $1 > /tmp/hdmi
Ситуация не изменилась.
Вручную выполняется. Автоматом ничего не происходит.
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 12:43
demonlibra
Мне думается, что проблема в этой части
KERNEL=="card0-HDMI-A-1", SUBSYSTEM=="drm", ATTR{status}=="connected",
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 12:55
slant
demonlibra писал(а): ↑10 апр 2021, 12:43
Мне думается, что проблема в этой части
Возможно. Вот card0-HDMI-A-1 откуда взялось? В выводе udevadm monitor -k -u -p его нету. Вообще-то, насколько я удава помню/понимаю ни один из параметров не является обязательным. Так что часть KERNEL можно вообще выкинуть - удав просто сверяет те параметры что в правиле есть. Совпало все, что есть - исполняет. Так что имя устройства можно просто выкинуть - останется SUBSYSTEM как признак. drm это видеокарта, практически однозначно.
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 13:03
demonlibra
Нашёл как-то лазая по каталогам
/devices/pci0000:00/0000:00:02.0/drm
У
card0-HDMI-A-1
есть атрибут
ATTR{status}
,
который отображает текущее подключение кабеля
ATTR{status}=="disconnected"
и
ATTR{status}=="connected"
Код: Выделить всё
udevadm info -a /sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1
looking at device '/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1':
KERNEL=="card0-HDMI-A-1"
SUBSYSTEM=="drm"
DRIVER==""
ATTR{enabled}=="disabled"
ATTR{edid}==""
ATTR{modes}==""
ATTR{dpms}=="Off"
ATTR{status}=="disconnected"
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 14:38
demonlibra
anbore писал(а): ↑08 апр 2021, 23:28
Можно ли сделать так, чтобы при подключении hdmi переключение происходило само?
Нашёл рабочий вариант в статье
https://frdmtoplay.com/i3-udev-xrandr-h ... switching/
Итого получилось следующее решение:
Создаём файл
/etc/udev/rules.d/hdmi.rules
Код: Выделить всё
KERNEL=="card0", SUBSYSTEM=="drm", ACTION=="change", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/demonlibra/.Xauthority", RUN+="/usr/local/bin/hdmi.sh"
Создаём сценарий
/usr/local/bin/hdmi.sh
Код: Выделить всё
#!/bin/bash
if xrandr | grep "HDMI-1" | grep "disconnected"
then
xrandr --output "eDP-1" --auto --output "HDMI-1" --off
else
xrandr --output "eDP-1" --off --output "HDMI-1" --auto
fi
Делаем сценарий исполняемым:
sudo chmod +x /usr/local/bin/hdmi.sh
Обновляем список правил udev:
sudo udevadm control --reload-rules; sudo systemctl daemon-reload
Проверено. Работает.
Жаль самому себе нельзя лайк поставить.
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 17:09
rogoznik
demonlibra писал(а): ↑10 апр 2021, 14:38
Жаль самому себе нельзя лайк поставить.
Мы тебе поставим

Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 18:00
demonlibra
Балин, мне не даёт покоя, почему это запускается вручную командой sudo udevadm trigger -s drm
KERNEL=="card0-HDMI-A-1", SUBSYSTEM=="drm", ATTR{status}=="connected", ENV{DISPLAY}=":0", ENV{XAUTHORITY}="/home/demonlibra/.Xauthority", RUN+="/usr/local/bin/hdmi.sh"
но не работает самостоятельно
Может быть структуру /drm/card0/card0-HDMI-A-1
надо как-то по другому описать.
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 18:46
slant
demonlibra писал(а): ↑10 апр 2021, 18:00
Может быть структуру /drm/card0/card0-HDMI-A-1 надо как-то по другому описать.
Судя по этому вопросу ты не совсем понял что и как удав делает. Я конечно тоже не совсем эксперт по нему, но изучить кое что пришлось.
Работает он в принципе довольно просто: смотрит в правила по принципу "одна строка - одно правило" и при каждом событии выполняет те правила которые подходят. Причем сам процесс анализа/выполнения тоже прост. Ключи в строке разделены запятыми, а вот знак между ключом и значением определяет, является ли пара условием, или это требуемое действие.
Если это "==" - то пара обозначает проверку условия. А если "=" - установку значения. (ATTR{}=="" - условие, ATTR{}="" - поменять значение если правило сработало.) Правило считается применимым, если все пары с условиями совпали. А что будет проверяться - можно посмотреть через udevadm monitor - смотрим там вывод событий, и выбираем характерные ключи для правила.
Никакого /drm/card0/card0-HDMI-A-1 он у тебя не выводил, и просто card0-HDMI-A-1 тоже. Что же касается udevadm info - там все вместе, скопом. И ключи и расширенная информация про устройство. Но по ней ориентироваться не стоит, т.к. не все ключи присутствуют в актуальном событии которое удав и будет анализировать. info - это все хотя бы теоретически возможное от устройства. А monitor - практика, то что есть на самом деле. И на практике у тебя никакого ключа card0-HDMI-A-1 не генерируется в событиях.
Переключение вывода с ноутбука на монитор
Добавлено: 10 апр 2021, 18:52
demonlibra
Кое как в голове сошлось.
Вероятно, меня результат команды sudo udevadm trigger -s drm
сбил с толку.
Но со стороны ядра подходящих событий для запуска не происходило. В общем потому, что гладиолус.
Переключение вывода с ноутбука на монитор
Добавлено: 11 апр 2021, 15:32
anbore
demonlibra,
demonlibra писал(а): ↑09 апр 2021, 04:16
Покажите вывод команд
Код: Выделить всё
eDP-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
HDMI-1 connected (normal left inverted right x axis y axis)
eDP-1 connected (normal left inverted right x axis y axis)
HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 509mm x 286mm
demonlibra писал(а): ↑09 апр 2021, 04:16
Выполните в терминале команду acpi_listen
Нажмите на F10 и Fn+F10.
Он не реагирует. Переходит на строку меню терминала.
demonlibra писал(а): ↑09 апр 2021, 04:16
Покажите вывод udevadm monitor после подключения кабеля HDMI.
Код: Выделить всё
KERNEL[2980.856818] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV [2980.884163] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
KERNEL[2980.888619] add /kernel/slab/:A-0000256/cgroup/filp(1451:autorandr.service) (cgroup)
KERNEL[2980.888693] add /kernel/slab/dentry/cgroup/dentry(1451:autorandr.service) (cgroup)
KERNEL[2980.888740] add /kernel/slab/inode_cache/cgroup/inode_cache(1451:autorandr.service) (cgroup)
KERNEL[2980.888783] add /kernel/slab/:A-0000128/cgroup/pid(1451:autorandr.service) (cgroup)
KERNEL[2980.888827] add /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1451:autorandr.service) (cgroup)
KERNEL[2980.888869] add /kernel/slab/:A-0001024/cgroup/PING(1451:autorandr.service) (cgroup)
KERNEL[2980.888907] add /kernel/slab/skbuff_head_cache/cgroup/skbuff_head_cache(1451:autorandr.service) (cgroup)
KERNEL[2980.888945] add /kernel/slab/kmalloc-512/cgroup/kmalloc-512(1451:autorandr.service) (cgroup)
KERNEL[2980.889063] add /kernel/slab/:A-0000192/cgroup/cred_jar(1451:autorandr.service) (cgroup)
KERNEL[2980.889152] add /kernel/slab/kmalloc-64/cgroup/kmalloc-64(1451:autorandr.service) (cgroup)
KERNEL[2980.889219] add /kernel/slab/mm_struct/cgroup/mm_struct(1451:autorandr.service) (cgroup)
KERNEL[2980.889366] add /kernel/slab/:A-0000208/cgroup/vm_area_struct(1451:autorandr.service) (cgroup)
KERNEL[2980.889459] add /kernel/slab/:A-0000064/cgroup/anon_vma_chain(1451:autorandr.service) (cgroup)
KERNEL[2980.889516] add /kernel/slab/anon_vma/cgroup/anon_vma(1451:autorandr.service) (cgroup)
UDEV [2980.892687] add /kernel/slab/:A-0000256/cgroup/filp(1451:autorandr.service) (cgroup)
UDEV [2980.894636] add /kernel/slab/dentry/cgroup/dentry(1451:autorandr.service) (cgroup)
UDEV [2980.897487] add /kernel/slab/inode_cache/cgroup/inode_cache(1451:autorandr.service) (cgroup)
UDEV [2980.898594] add /kernel/slab/skbuff_head_cache/cgroup/skbuff_head_cache(1451:autorandr.service) (cgroup)
UDEV [2980.899307] add /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1451:autorandr.service) (cgroup)
UDEV [2980.899413] add /kernel/slab/:A-0000192/cgroup/cred_jar(1451:autorandr.service) (cgroup)
UDEV [2980.899499] add /kernel/slab/:A-0000128/cgroup/pid(1451:autorandr.service) (cgroup)
UDEV [2980.902979] add /kernel/slab/:A-0000064/cgroup/anon_vma_chain(1451:autorandr.service) (cgroup)
UDEV [2980.903676] add /kernel/slab/:A-0001024/cgroup/PING(1451:autorandr.service) (cgroup)
UDEV [2980.904782] add /kernel/slab/kmalloc-512/cgroup/kmalloc-512(1451:autorandr.service) (cgroup)
UDEV [2980.905498] add /kernel/slab/anon_vma/cgroup/anon_vma(1451:autorandr.service) (cgroup)
UDEV [2980.905714] add /kernel/slab/mm_struct/cgroup/mm_struct(1451:autorandr.service) (cgroup)
UDEV [2980.907737] add /kernel/slab/:A-0000208/cgroup/vm_area_struct(1451:autorandr.service) (cgroup)
UDEV [2980.908713] add /kernel/slab/kmalloc-64/cgroup/kmalloc-64(1451:autorandr.service) (cgroup)
KERNEL[2980.946145] add /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(1451:autorandr.service) (cgroup)
UDEV [2980.947007] add /kernel/slab/proc_inode_cache/cgroup/proc_inode_cache(1451:autorandr.service) (cgroup)
KERNEL[2980.948340] add /kernel/slab/task_struct/cgroup/task_struct(1451:autorandr.service) (cgroup)
KERNEL[2980.948360] add /kernel/slab/:A-0000080/cgroup/task_delay_info(1451:autorandr.service) (cgroup)
KERNEL[2980.948485] add /kernel/slab/:A-0000704/cgroup/files_cache(1451:autorandr.service) (cgroup)
KERNEL[2980.948506] add /kernel/slab/sighand_cache/cgroup/sighand_cache(1451:autorandr.service) (cgroup)
KERNEL[2980.948517] add /kernel/slab/:A-0001152/cgroup/signal_cache(1451:autorandr.service) (cgroup)
UDEV [2980.949330] add /kernel/slab/sighand_cache/cgroup/sighand_cache(1451:autorandr.service) (cgroup)
UDEV [2980.949568] add /kernel/slab/:A-0000080/cgroup/task_delay_info(1451:autorandr.service) (cgroup)
UDEV [2980.949601] add /kernel/slab/task_struct/cgroup/task_struct(1451:autorandr.service) (cgroup)
KERNEL[2980.949619] add /kernel/slab/kmalloc-8/cgroup/kmalloc-8(1451:autorandr.service) (cgroup)
UDEV [2980.949673] add /kernel/slab/:A-0001152/cgroup/signal_cache(1451:autorandr.service) (cgroup)
UDEV [2980.949998] add /kernel/slab/:A-0000704/cgroup/files_cache(1451:autorandr.service) (cgroup)
UDEV [2980.950436] add /kernel/slab/kmalloc-8/cgroup/kmalloc-8(1451:autorandr.service) (cgroup)
KERNEL[2980.985276] add /kernel/slab/kmalloc-192/cgroup/kmalloc-192(1451:autorandr.service) (cgroup)
KERNEL[2980.985307] add /kernel/slab/kmalloc-1k/cgroup/kmalloc-1k(1451:autorandr.service) (cgroup)
UDEV [2980.986139] add /kernel/slab/kmalloc-192/cgroup/kmalloc-192(1451:autorandr.service) (cgroup)
UDEV [2980.986237] add /kernel/slab/kmalloc-1k/cgroup/kmalloc-1k(1451:autorandr.service) (cgroup)
KERNEL[2981.789950] change /devices/pci0000:00/0000:00:1c.0/0000:01:00.0/drm/card1 (drm)
UDEV [2981.795927] change /devices/pci0000:00/0000:00:1c.0/0000:01:00.0/drm/card1 (drm)
KERNEL[2982.403907] add /kernel/slab/kmalloc-4k/cgroup/kmalloc-4k(1451:autorandr.service) (cgroup)
UDEV [2982.407589] add /kernel/slab/kmalloc-4k/cgroup/kmalloc-4k(1451:autorandr.service) (cgroup)
KERNEL[2982.888882] remove /kernel/slab/:A-0001024/cgroup/PING(1451:autorandr.service) (cgroup)
KERNEL[2982.888999] remove /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1451:autorandr.service) (cgroup)
KERNEL[2982.889069] remove /kernel/slab/skbuff_head_cache/cgroup/skbuff_head_cache(1451:autorandr.service) (cgroup)
KERNEL[2982.889130] remove /kernel/slab/:A-0000080/cgroup/task_delay_info(1451:autorandr.service) (cgroup)
KERNEL[2982.889288] remove /kernel/slab/:A-0000256/cgroup/filp(1451:autorandr.service) (cgroup)
KERNEL[2982.889356] remove /kernel/slab/inode_cache/cgroup/inode_cache(1451:autorandr.service) (cgroup)
KERNEL[2982.889674] remove /kernel/slab/:A-0000208/cgroup/vm_area_struct(1451:autorandr.service) (cgroup)
KERNEL[2982.889776] remove /kernel/slab/mm_struct/cgroup/mm_struct(1451:autorandr.service) (cgroup)
KERNEL[2982.889899] remove /kernel/slab/:A-0000704/cgroup/files_cache(1451:autorandr.service) (cgroup)
KERNEL[2982.889988] remove /kernel/slab/:A-0001152/cgroup/signal_cache(1451:autorandr.service) (cgroup)
KERNEL[2982.890127] remove /kernel/slab/sighand_cache/cgroup/sighand_cache(1451:autorandr.service) (cgroup)
KERNEL[2982.890254] remove /kernel/slab/task_struct/cgroup/task_struct(1451:autorandr.service) (cgroup)
KERNEL[2982.890374] remove /kernel/slab/:A-0000192/cgroup/cred_jar(1451:autorandr.service) (cgroup)
KERNEL[2982.890463] remove /kernel/slab/:A-0000064/cgroup/anon_vma_chain(1451:autorandr.service) (cgroup)
KERNEL[2982.890544] remove /kernel/slab/anon_vma/cgroup/anon_vma(1451:autorandr.service) (cgroup)
KERNEL[2982.890623] remove /kernel/slab/:A-0000128/cgroup/pid(1451:autorandr.service) (cgroup)
KERNEL[2982.890708] remove /kernel/slab/kmalloc-4k/cgroup/kmalloc-4k(1451:autorandr.service) (cgroup)
KERNEL[2982.890786] remove /kernel/slab/kmalloc-1k/cgroup/kmalloc-1k(1451:autorandr.service) (cgroup)
KERNEL[2982.890867] remove /kernel/slab/kmalloc-512/cgroup/kmalloc-512(1451:autorandr.service) (cgroup)
KERNEL[2982.890942] remove /kernel/slab/kmalloc-192/cgroup/kmalloc-192(1451:autorandr.service) (cgroup)
KERNEL[2982.891011] remove /kernel/slab/kmalloc-64/cgroup/kmalloc-64(1451:autorandr.service) (cgroup)
KERNEL[2982.891078] remove /kernel/slab/kmalloc-8/cgroup/kmalloc-8(1451:autorandr.service) (cgroup)
UDEV [2982.892565] remove /kernel/slab/sock_inode_cache/cgroup/sock_inode_cache(1451:autorandr.service) (cgroup)
UDEV [2982.892709] remove /kernel/slab/skbuff_head_cache/cgroup/skbuff_head_cache(1451:autorandr.service) (cgroup)
UDEV [2982.892826] remove /kernel/slab/:A-0000080/cgroup/task_delay_info(1451:autorandr.service) (cgroup)
UDEV [2982.894054] remove /kernel/slab/:A-0000208/cgroup/vm_area_struct(1451:autorandr.service) (cgroup)
UDEV [2982.894148] remove /kernel/slab/inode_cache/cgroup/inode_cache(1451:autorandr.service) (cgroup)
UDEV [2982.894184] remove /kernel/slab/:A-0000256/cgroup/filp(1451:autorandr.service) (cgroup)
UDEV [2982.894219] remove /kernel/slab/:A-0000704/cgroup/files_cache(1451:autorandr.service) (cgroup)
UDEV [2982.894246] remove /kernel/slab/:A-0001024/cgroup/PING(1451:autorandr.service) (cgroup)
UDEV [2982.894268] remove /kernel/slab/sighand_cache/cgroup/sighand_cache(1451:autorandr.service) (cgroup)
UDEV [2982.894464] remove /kernel/slab/mm_struct/cgroup/mm_struct(1451:autorandr.service) (cgroup)
UDEV [2982.894490] remove /kernel/slab/:A-0001152/cgroup/signal_cache(1451:autorandr.service) (cgroup)
UDEV [2982.894858] remove /kernel/slab/:A-0000192/cgroup/cred_jar(1451:autorandr.service) (cgroup)
UDEV [2982.895663] remove /kernel/slab/task_struct/cgroup/task_struct(1451:autorandr.service) (cgroup)
UDEV [2982.895712] remove /kernel/slab/:A-0000064/cgroup/anon_vma_chain(1451:autorandr.service) (cgroup)
UDEV [2982.895755] remove /kernel/slab/anon_vma/cgroup/anon_vma(1451:autorandr.service) (cgroup)
UDEV [2982.895790] remove /kernel/slab/:A-0000128/cgroup/pid(1451:autorandr.service) (cgroup)
UDEV [2982.895822] remove /kernel/slab/kmalloc-4k/cgroup/kmalloc-4k(1451:autorandr.service) (cgroup)
UDEV [2982.895852] remove /kernel/slab/kmalloc-1k/cgroup/kmalloc-1k(1451:autorandr.service) (cgroup)
UDEV [2982.895881] remove /kernel/slab/kmalloc-512/cgroup/kmalloc-512(1451:autorandr.service) (cgroup)
UDEV [2982.895926] remove /kernel/slab/kmalloc-192/cgroup/kmalloc-192(1451:autorandr.service) (cgroup)
UDEV [2982.896386] remove /kernel/slab/kmalloc-8/cgroup/kmalloc-8(1451:autorandr.service) (cgroup)
UDEV [2982.896515] remove /kernel/slab/kmalloc-64/cgroup/kmalloc-64(1451:autorandr.service) (cgroup)
Переключение вывода с ноутбука на монитор
Добавлено: 11 апр 2021, 16:02
demonlibra
События при подключении HDMI как у меня. Решение из
сообщения 26 должно сработать для автоматического выполнения сценария при подключении/отключении кабеля HDMI. Пробуйте.
anbore писал(а): ↑11 апр 2021, 15:32
Он не реагирует. Переходит на строку меню терминала.
Терминал -> Правка -> Параметры -> Основное
Переключение вывода с ноутбука на монитор
Добавлено: 11 апр 2021, 22:24
anbore
Да, сработало. Благодарность улетела.
demonlibra писал(а): ↑11 апр 2021, 16:02
Терминал -> Правка -> Параметры -> Основное
Он код для F10 выводит.
Для Fn+F10 не реагирует.
Сам код:
Как теперь сделать переключение вручную?
По F10 хотя бы?
Переключение вывода с ноутбука на монитор
Добавлено: 12 апр 2021, 06:25
demonlibra
Создайте отдельный сценарий. Используйте как основу сценарий из
сообщений 11.
В настройках клавиатуры (Комбинации клавиш -> Дополнительные комбинации) назначьте ему нужную горячую клавишу.
Команда запуска будет такой:
bash -c "путь_к_сценарию"
Переключение вывода с ноутбука на монитор
Добавлено: 16 апр 2021, 23:25
demonlibra
У получилось?
Можно еще добавить команды переключения устройства вывода звука
Например, у меня это
Код: Выделить всё
pactl set-card-profile 0 output:hdmi-stereo-extra1 #Звук через HDMI
pactl set-card-profile 0 output:analog-stereo #Звук через колонки ноутбука
Имя устройства можно определить командой
pacmd list-sinks | grep -e 'name:' -e 'index:'
Код: Выделить всё
pacmd list-sinks | grep -e 'name:' -e 'index:'
* index: 21
name: <alsa_output.pci-0000_00_1f.3.analog-stereo>
pacmd list-sinks | grep -e 'name:' -e 'index:'
* index: 23
name: <alsa_output.pci-0000_00_1f.3.hdmi-stereo-extra1>
Переключение вывода с ноутбука на монитор
Добавлено: 23 апр 2021, 19:38
demonlibra
У меня получился такой сценарий
Код: Выделить всё
#!/bin/bash
# Сценарий переключения разрешения экрана и вывода изображения/звука в HDMI
# Если HDMI отключен, переключаем разрешение экрана ноутбука
if xrandr | grep "HDMI-1" | grep "disconnected"
then
if xrandr | grep "eDP-1" | grep 1920
then
# Если текущее разрешение 1920, переключаем на 1368
xrandr --output "eDP-1" --primary --mode 1368x768 --pos 0x0 --rotate normal --output HDMI-1 --off
elif xrandr | grep "eDP-1" | grep 1368
then
# Если текущее разрешение 1368, переключаем на 1920
xrandr --output "eDP-1" --primary --mode 1920x1080 --pos 0x0 --rotate normal
fi
fi
# Если HDMI подключен, переключаем устройство вывода изображения и звука
if xrandr | grep "HDMI-1" | grep " connected"
then
if xrandr | grep "eDP-1" | grep "primary"
then
echo "Использовать экран и колонки ТВ"
xrandr --output "eDP-1" --off --output "HDMI-1" --auto
pactl set-card-profile 0 output:hdmi-stereo-extra1 #Звук через HDMI
else
echo "Использовать экран и колонки ноутбука"
xrandr --output "HDMI-1" --off --output "eDP-1" --primary --mode 1368x768 --pos 0x0 --rotate normal
pactl set-card-profile 0 output:analog-stereo #Звук через колонки ноутбука
fi
fi
Переключение вывода с ноутбука на монитор
Добавлено: 24 апр 2021, 23:57
anbore
demonlibra, я не сильно силен в bash скриптах и некоторые моменты не особо понимаю. Так что не судите строго.
Код: Выделить всё
#!/bin/bash
if xrandr | grep "eDP-1"
then
xrandr --output eDP-1 --auto --output HDMI-1 --off
else
xrandr --output eDP-1 --off --output HDMI-1 --auto
fi
Проблема в том, что у меня дисплей ноутбука не отключается.
То есть я хотел такую схему:
1 нажатие
Моник отключается, ноут включается.
2 нажатие
Моник включается, ноут отключается.
3 нажатие
Оба включены. И так по кругу.
А получается так:
1 нажатие
Моник отключается, ноут включается.
2 нажатие
Моник включается, ноут включается.
3 нажатие
Моник отключается, ноут включается. И так по кругу.
И еще: как поменять правило для udev, чтобы при включении ноута уже с присоедененным hdmi кабелем, после загрузки системы, экран ноута отключался, а экран монитора включался?
Переключение вывода с ноутбука на монитор
Добавлено: 25 апр 2021, 01:59
slant
anbore писал(а): ↑24 апр 2021, 23:57
То есть я хотел такую схему:
ключ --auto в подобном случае может давать не тот результат который хочется. Лучше использовать не его а явное указание параметров режима, как минимум --mode и --pos. Проще всего через arandr настроить желаемое - он при сохранении в файл выдает туда строку команды xrandr для получения такого же результата.
Переключение вывода с ноутбука на монитор
Добавлено: 25 апр 2021, 05:48
demonlibra
1. Выполняйте команду
xrandr
чтобы определить и подставить свои условия в
if xrandr | grep ".............."
2. Подставьте свои параметры в команды
xrandr --output "eDP-1" ......... --output "HDMI-1" .........
Код: Выделить всё
# Если HDMI подключен, переключаем устройство вывода изображения и звука
if xrandr | grep "HDMI-1" | grep " connected"
then
if [[ `xrandr | grep "eDP-1 connected primary 1368"` ]] && [[ `xrandr | grep "HDMI-1 connected 1920"` ]]
then
echo "Использовать экран и колонки ТВ"
xrandr --output "eDP-1" --off --output "HDMI-1" --mode 1920x1080 --pos 0x0 --rotate normal
pactl set-card-profile 0 output:hdmi-stereo-extra1 #Звук через HDMI
elif xrandr | grep "HDMI-1" | grep "primary"
then
echo "Использовать экран и колонки ноутбука"
xrandr --output "HDMI-1" --off --output "eDP-1" --primary --mode 1368x768 --pos 0x0 --rotate normal
pactl set-card-profile 0 output:analog-stereo #Звук через колонки ноутбука
else
echo "Использовать экраны ноутбука и ТВ"
xrandr --output eDP-1 --primary --mode 1368x768 --pos 0x0 --rotate normal --output HDMI-1 --mode 1920x1080 --pos 1368x11 --rotate normal
fi
fi
anbore писал(а): ↑24 апр 2021, 23:57
некоторые моменты не особо понимаю
Так Вы спросите, что пояснить.
anbore писал(а): ↑24 апр 2021, 23:57
при включении ноута уже с присоедененным hdmi кабелем
Для этого надо создать отдельный сценарий, который будет выполняться при запуске системы.
Так как для выполнения команды
xrandr
не требуются права root, этот сценарий можно просто назначить в автозагрузку.
Переключение вывода с ноутбука на монитор
Добавлено: 05 май 2021, 00:56
Максимилиан
Я прошу прощения, что в чужую тему влезаю не проблема та же, но есть нюанс..
Купил новый телек и теперь страдаю настройками...
Подскажите умные люди почему у меня в ноутбуке на LMDE при подключении по hdmi телека sony 40RD353 (1920*1080) работают нормально все три режима двух мониторов с кнопки fn+f10, и клонирование, и расширение пространства и только один телек при гаснущем экране ноута, а если вытащить hdmi из соньки и после ребута ноута включить в новый телек 4К то нажатия на кнопку fn+f10 ни чего не меняют, оба экрана гаснут-включаются и висит постоянно дублирование экрана.
Ведь ни чего не менялось в настройках.. В чем разница? Может на телеке какая то поднастройка hdmi не включена? Ведь не может же быть что на одном телеке режимы нормально меняются а на другом нет.
Несколько раз проверил подключая туда-сюда... Новый телек не хочет автоматически с кнопки становится главным моником и гасить экран ноута... А если вручную отменять клонирование, выставлять в ручную разрешение на телеке, мало того что на полке над телеком ноут экран не гасит, так еще разрешение на телеке максимум 1920*1080 получается...