Переключение мониторов с помощью xrandr (Ubuntu 9.10)

15 декабря 2009
Просмотров: 8565Обсудить
Рубрика: Администрирование -> Ubuntu

Так сложилось исторически, что на ноуте у меня радеоновская карта:

#lspci | grep VGA
01:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon HD 3400 Series

Так же есть у меня внешний монитор. разрешение на ноуте и на монике - разное. При дефолтных настройках в убунте - все работало как мне надо, т.е. подключен монитор - юзаем монитор, ноут выключается, если нету моника (я на работу с ноутом катаюсь =( ) - соответственно используем экран ноутбука. Но после установки атишных проприетарных дров (ati-driver-installer-9-10-x86.x86_64.run) - все стало печально. 

Допустим при подключенном монике я смог отключить ноут и выставить необходимое разрешение, но после перезагрузки без монитора, на ноутбуке были только какие-то черно-белые пятна ... Надо понимать, система просто не меняла разрешение экрана, из-за чего видео и херилось.

Спрашивал и на форумах, и гуглил - не смог найти решение ...

Но потом все таки нашел костыль. Этот костыль и есть xrandr =)

Он позволяет из консоли манипулировать видео выводами. 

Начнем.

Для начала надо определить что у нас подключено:

#xrandr
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 1680 x 1680
LCD connected (normal left inverted right x axis y axis)
   1280x800       60.0 +
   1280x768       60.0 +
   1280x720       60.0 +
   1024x768       60.0 +
   800x600        60.0 +
   720x480        60.0 +
   640x480        60.0 +
   640x400        60.0 +
   512x384        60.0 +
   400x300        60.0 +
   320x240        60.0 +
   320x200        60.0 +
DFP_EXTTMDS connected 1680x1050+0+0 (normal left inverted right x axis y axis) 433mm x 270mm
   1680x1050      60.0*+
   1400x1050      60.0 +
   1280x1024      75.0     60.0
   1440x900       59.9
   1280x960       60.0
   1280x800       60.0
   1152x864       75.0     60.0
   1280x768       59.9
   1280x720       60.0
   1024x768       75.0     70.1     60.0
   800x600        72.2     75.0     70.0     60.3     56.2
   720x480        60.0
   640x480        75.0     72.8     60.0
   640x400        75.1     59.9
   512x384        60.0     74.9
   400x300        75.0     60.7
   320x240        75.6     60.0
   320x200        75.5     60.1
CRT1 disconnected (normal left inverted right x axis y axis)

Экран ноутбука определился как LCD, монитор - DFP_EXTTMDS, CRT1 - не подключен вообще ;)

Идея состоит в том, что при старте сессии неким скриптом проверять, подключен ли моник. Да - выключить ноут, включить моник. Нет - наоборот.

Для этого:

  1. Будем все делать под рутом

    sudo su # тут введете свой пароль ...
    
  2. Создаем файл скрипта

    touch /etc/acpi/videoSwitcher.sh
    
  3. Дадим файлу права на выполнение

    chmod +x /etc/acpi/videoSwitcher.sh
    
  4. Впишем в файл собственно скрипт

    #!/bin/bash  
    VGASTAT=`xrandr | grep "DFP_EXTTMDS connected"`; # Смотрим, подключен ли монитор
    touch /tmp/videoSwitcher; # я в этот файл писал лог переключений, если все будет работать - его можно убрать
    echo `date +%T`  $VGASTAT >/tmp/videoSwitcher;  # логим, что получилось в переменной
    if [ "$VGASTAT" = "" ] ; then # если пусто - значит монитора нету        
    echo `date +%T` "LCD" >>/tmp/videoSwitcher; # логин, что мы включаем ноутбук
            xrandr --output LCD --auto;
            xrandr --output DFP_EXTTMDS --off;
    else # иначе - включаем этот самый монитор        
            echo `date +%T` "MONITOR" >>/tmp/videoSwitcher; # лог ..
            xrandr --output LCD --off;
            xrandr --output DFP_EXTTMDS --auto;
    fi
    exit 0;
    
  5. Ставим скрипт на выполнение при старте системы: добавляем его в "Система - Параметры - Запускаемые приложения".

Все ;)

Попробуйте все сделать, посмотрите работает или нет... и после этого можно будет и логирование выключить (хотя мешать оно не должно.. все ровно лог каждый раз будет перезаписываться .. еще и в темп)

зы: буду рад коментариям ... ;)

зыы: раздуплялся я по этой статье ( http://www.altlinux.org/%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%B4%D0%B8%D1%81%D0%BF%D0%BB%D0%B5%D0%B5%D0%B2_xrandr%27%D0%BE%D0%BC ).. там немного в другом разрезе написано, так что может кому будет плезно и с ней ознакомиться ;)

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru
Метки: , ,


Комментариев: 2
Подписаться на комментарии по RSS
  • #12010-10-03 в 21:47:15Ercling (анонимно)

    Спасибо тебе огромное!! Все выходные искал как побороть


  • #22010-10-04 в 12:29:04yaap

    @Ercling (анонимно)

    Вот потому я и написал статью. Сам долго бился с этим ;)


Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.
(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

(обязательно)