В xfce я могу запустить Настройки -> Дисплей, чтобы изменить свой предпочтительный выходной монитор. То, для чего я не нашел вариант, - это автоматически настроить его на изменение доступных выходов.
Например, если я использую дисплей DVI, но отсоединяю свой ноутбук, XFCE не будет автоматически осознавать, что у меня больше нет работающего дисплея, и изменить выход. Гном сделал это, хотя я не уверен, через какой сервис. Мне бы хотелось, чтобы у меня всегда был хотя бы один автоматический выход.
ПОБОЧНОЕ ПРИМЕЧАНИЕ: это связано с другим моим вопросом, Если я просто использую оконный менеджер, а не среду рабочего стола, как я могу получать автоматические обновления разрешения дока / отстыковки? , а не какой-либо общий оконный менеджер.
$ xrandr --auto
со страницы руководства xrandr:
- авто : для подключенных, но отключенных выходов это позволит им использовать их предпочтительный режим (или, что-то близко к 96dpi, если у них нет предпочтительного режима). Для отключенных, но включенных выходов это отключит их.
На этот вопрос ответ Unix StackExchange: https://unix.stackexchange.com/questions/101809/how-can-i-automatics-update-my-monitor-layout-in-xfce/120945# 120945 Однако, поскольку невозможно пометить этот вопрос как дубликат вопроса на другом сайте, я просто собираюсь скопировать ответ здесь.
Одним из способов является создание правила udev, но, поскольку я хотел что-то более переносимое, у меня есть этот скрипт bash. Он опирается на поддержку inotifywait, не имеет каких-либо петель и считается эффективным.
external-lcd.sh
#!/bin/sh
# inspired of:
# http://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration- when-external-display-is-p
# http://ozlabs.org/~jk/docs/mergefb/
# http://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes/181543#181543
export MONITOR2=/sys/class/drm/card0-VGA-1/status
while inotifywait -e modify,create,delete,open,close,close_write,access $MONITOR2;
dmode="$(cat $MONITOR2)"
do
if [ "${dmode}" = disconnected ]; then
/usr/bin/xrandr --auto
echo "${dmode}"
elif [ "${dmode}" = connected ];then
/usr/bin/xrandr --output VGA1 --auto --right-of LVDS1
echo "${dmode}"
else /usr/bin/xrandr --auto
echo "${dmode}"
fi
done
Не забудьте сделать файл исполняемым (chmod +x external-lcd.sh
). Затем запускайте его всякий раз, когда запускаете свою DE.
Я использую это на archlinux, поэтому думаю, что оно должно работать. Вы можете изменить параметры xrandr или поменять их местами, чтобы использовать конфигурации arandr.
Такой опции не существует, поскольку технология обнаружения аппаратных событий, не зависящих от рабочего стола (udev
), является довольно новой для такого хобби-проекта, как xfce.
Вы можете получить некоторые хорошие результаты, копаясь в D-Bus
и udev
. Посмотрите udev не запускает события удаления для начинающих.