Изменение системных настроек в зависимости от того, подключен ли монитор

В настоящее время я использую ноутбук под управлением Ubuntu 12.04. Когда я на работе, я подключаю монитор, мышь и клавиатуру. Затем я закрываю экран своего ноутбука и использую его как обычный компьютер. Каждый раз, когда я подключаю его и подключаю, мне приходится менять настройки системы, потому что обычно мой ноутбук зависает в ОЗУ, когда я закрываю экран. Также я должен изменить, где моя графическая карта должна отображать мой рабочий стол.

Есть ли способ выполнить какой-либо сценарий, когда внешний монитор или USB-устройство подключено или отключено? Если да, есть ли способ изменить настройки системы с помощью сценария оболочки? Если нет, есть ли другой способ сделать это?

7
задан 25 September 2012 в 10:28

1 ответ

Сначала - чтобы использовать этот метод - вам нужно посмотреть, отправляет ли ваша видеокарта событие udev, когда подключен монитор VGA. Для этого откройте терминал, введите udevadm monitor --property и подключите монитор. Вы должны увидеть что-то вроде этого:

KERNEL[7671.540341] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=0
SEQNUM=2296
SUBSYSTEM=drm
UDEV_LOG=3

UDEV  [7672.099723] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
MAJOR=226
MINOR=0
SEQNUM=2296
SUBSYSTEM=drm
TAGS=:udev-acl:
UDEV_LOG=3
USEC_INITIALIZED=20836591

Если вы не получите событие, то использовать этот метод невозможно.

Затем создается правило для udev. Это можно сделать, создав файл /etc/udev/rules.d/90-monitor-hotplug.rules. Для этого откройте терминал и введите gksudo gedit /etc/udev/rules.d/90-monitor-hotplug.rules. gksudo необходим, потому что только root может создавать файлы в этой директории. Затем вставьте в файл следующую строку и сохраните ее:

SUBSYSTEM=="drm", ACTION=="change", RUN+="/bin/su user -c '/home/user/bin/monitorhotplug.sh'"

Конечно, вы должны заменить слово user своим именем пользователя. Это заставит udev запустить команду, указанную в RUN. Команда выполняет файл /home/user/bin/monitorhotplug.sh как ваш пользователь. Этот файл должен быть создан.

Для этого откройте терминал и введите gedit /home/user/bin/monitorhotplug.sh. Не забудьте заменить user вашим собственным именем пользователя. Теперь вставьте следующий скрипт в файл и сохраните его:

#!/bin/bash

# we need some environment variables
export DISPLAY=:0
export XAUTHORITY=~/.Xauthority
eval $(sed -n '/^#/! { s/^/export /; s/$/;/; p }' ~/.dbus/session-bus/*-${DISPLAY//:/})

# if a VGA monitor is plugged in:
if [ $(cat /sys/class/drm/card0-VGA-1/status) = "connected" ]; then
    # set my power settings
   gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'nothing'
   gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'nothing'
    xrandr --output VGA1 --auto
    # turn off laptop screen
    xrandr --output LVDS1 --off
# in case of anything else reset to standard options
else
   # reset my power settings
   gsettings set org.gnome.settings-daemon.plugins.power lid-close-ac-action 'suspend'
   gsettings set org.gnome.settings-daemon.plugins.power lid-close-battery-action 'suspend'
   # xrandr does the rest alone
    #xrandr --output VGA1 --off
    #xrandr --output LVDS1 --auto
fi

Теперь файл должен быть выполнен исполняемым. Для этого откройте терминал и введите chmod +x /home/user/bin/monitorhotplug.sh.

Теперь это должно работать: 1. Когда вы подключаете монитор VGA, ваш внутренний экран ноутбука (LVDS) будет выключен, и ваш ноутбук не будет зависать, если вы закроете крышку. 2. Когда вы отключаете монитор или происходит любое другое событие с мониторами, он сбрасывает настройки питания для приостановки при закрытии крышки.

Есть еще одна маленькая проблема: когда вы подключите монитор и закроете крышку, Ubuntu заблокирует экран, поэтому вам придется двигать мышь и снова вводить пароль.

1121 Надеюсь, это кому-нибудь поможет. Я лично наслаждаюсь моей маленькой док-станцией. :)

0
ответ дан 25 September 2012 в 10:28

Другие вопросы по тегам:

Похожие вопросы: