Нижеприведенный скрипт предлагает пользователю выбрать какую конфигурацию использовать если будет обнаружено, что к системе подключено два монитора; если же подключен только один монитор, то выводится предупреждающее сообщение и скрипт завершается. Скрипт предназначен для использования в составе acpid’а - он должен вызываться при нажатии на определенную Fn кнопку, в соответствии с правилами acpid’а.

Зависимости: bash, xrandr, Xdialog, xosd.

#!/bin/bash

# LVDS1 is notebook display, and VGA1 is external CRT display. If you need, you may change
# it key words to another.


TMPF="/tmp/swmons.tmp"
VGA_STATE=`xrandr | grep 'VGA1' | awk '{print $2}'`

# by default, LVDS1 is always connected - we check only VGA
if [ "$VGA_STATE" = "disconnected" ]; then
    DISPLAY=:0.0 /usr/bin/sudo -u drag0n -s "(/bin/echo -e "'\\n\\n'"Second monitor not connected. | osd_cat -o 15 -A center -f -*-terminus-medium-*-*-*-14-*-*-*-*-*-*-u -c green -d 2)"
    exit 1
fi

# display screen menu
DISPLAY=:0.0 /usr/bin/sudo -u drag0n -s "Xdialog --menu 'Select monitor configuration' 10 40 5 '1m' 'One monitor' '2m' 'Dual monitors'" &> $TMPF
SEL_CONF=`cat $TMPF`
rm -f $TMPF

if [ "$SEL_CONF" = "1m" ]; then
    DISPLAY=:0.0 /usr/bin/sudo -u drag0n -s "/usr/bin/xrandr --fb 1280x800 --output LVDS1 --primary --mode 1280x800 --pos 0x0 --output VGA1 --off"
elif [ "$SEL_CONF" = "2m" ]; then
    DISPLAY=:0.0 /usr/bin/sudo -u drag0n -s "/usr/bin/xrandr --fb 2048x768 --output LVDS1 --primary --mode 1024x768 --pos 0x0 --output VGA1 --mode 1024x768 --pos 1024x0"
fi

exit 0

Для выбора предпочтительной конфигурации используется Xdialogовое меню:

Xdialogовое меню

Скриншот рабочего стола с включенной двухмониторной конфигурацией:

image::uploads/2010/2010-03-14-134724_2048x768_scrot.png[alt="Рабочий стол с двухмониторной конфигурацией"]

linux