У меня есть две установки монитора на Ubuntu 18.04 с видеокартой NVIDIA GeForce GT 1080. Первый монитор является 2k, и вторым является 4k. Мне уменьшили масштаб монитора 4k до 2k с помощью приложения Настроек X-сервера Nvidia, и это хорошо работает когда сначала загруженный. Но когда я отключил оба монитора или просто второе, гном сворачивает содержание второго монитора на первое. Когда я затем включаю оба монитора, это кладет обратно содержание второго монитора на второй экран... с неправильным масштабированием на втором мониторе теперь и едва читаемом крошечном шрифте.
Я имею xrandr
команда, которая решает проблему (пока я не подвергаю циклу включения и выключения питания мониторы снова):
xrandr --fb 5120x1440 \
--output HDMI-0 --scale 1x1 --mode 2560x1440 --pos 0x0 --panning 2560x1440+0+0 \
--output HDMI-1 --scale .6666x.6666 --mode 3840x2160 --pos 2560x0 --panning 2560x1440+2560+0
В настоящее время я выполняю эту команду каждый раз, когда я включаю мониторы. Существует ли способ автоматически выполнить его каждый раз, когда второй монитор идет от прочь до на?
Или есть ли другое решение для проблемы со вторым монитором, изменяющим его настройки при циклическом повторении on-on?
Это - происходящий работой сценарий, который я разрабатываю для пакета к яркости контрольного устройства и гамме на основе времен восхода солнца/заката.
При закрытии крышки ноутбука xrandr сбрасывает все внешние мониторы к максимальной яркости. Сценарий ниже обнаруживает изменения xrandr в /sys/class/drm/?/status
использование файла inotify
который является более эффективным методом опроса, чем сон каждую секунду.
Сценарий ниже содержит кредиты исходным авторам, и части комментируются, который может быть удален в будущем или изменен.
Использовать ll /sys/class/drm/*/status
обнаружить Ваше имя (имена) карты монитора. Затем замена MONITOR=
ниже с соответствующим именем.
#!/bin/bash
# NAME: monitory-eyesome.sh
# PATH: /usr/lib/bin
# DESC: Instantly adjust display brightness when xrandr reconfigures monitors
# and resets them to full brightness.
# CALL: /etc/cron.d calls this script during boot.
# Called from command line for testing/debugging.
# DATE: Sepetmber ??, 2018.
# PARM: No parameters yet, but $1 will be /sys/class/drm/<MONITOR>/status
# in the future. ie $1 = <MONITOR>
# source eyesome-src.sh # Common code for eyesome___.sh bash scripts
# Must have the inotify-tools package.
command -v inotifywait >/dev/null 2>&1 || { echo >&2 \
"inotify-tools package required but it is not installed. Aborting."; \
exit 2; }
# Copied from: https://bbs.archlinux.org/viewtopic.php?id=171655
#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 MONITOR="/sys/class/drm/card1-DP-1/status"
echo "$0: $(date) Monitoring: $MONITOR" > /tmp/monitor-eyesome.sh
while inotifywait -e modify,create,delete,open,close,close_write,access \
"$MONITOR";
dmode="$(cat "$MONITOR")"
do
echo "$0: $(date) $dmode" >> /tmp/monitor-eyesome.sh
# 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
$ sudo ./monitor-eyesome.sh
Setting up watches.
Watches established.
/sys/class/drm/card1-DP-1/status OPEN
Setting up watches.
Watches established.
/sys/class/drm/card1-DP-1/status OPEN
Setting up watches.
Watches established.
/sys/class/drm/card1-DP-1/status OPEN
Setting up watches.
Watches established.
$ cat /tmp/mon*
./monitor-eyesome.sh: Sun Sep 16 11:16:51 MDT 2018 Monitoring: /sys/class/drm/card1-DP-1/status
./monitor-eyesome.sh: Sun Sep 16 11:16:55 MDT 2018 connected
./monitor-eyesome.sh: Sun Sep 16 11:16:56 MDT 2018 connected
./monitor-eyesome.sh: Sun Sep 16 11:16:56 MDT 2018 connected
Этот сценарий был создан несколько минут назад (16 сентября 2018 11:30 MST). Я обновлю его, в то время как проект прогрессирует.