LINUX.ORG.RU

[acpi][xorg] Не срабатывает скрипт переключения монитора

 ,


0

1

Есть такая тулза для быстрого и удобного переключения мониторов disper.

Вот решил я сделать так, чтобы при нажатии хоткеев на нетбуке автоматом подхватывался второй монитор.

#!/bin/bash

export DISPLAY=:0.0
xhost +

MODE=`/usr/bin/disper -p | /usr/bin/awk '/metamode/ {print($2 $6)}'`
echo "$MODE"

case "$MODE" in
    # Secondary only when primanry screen is active
    "DFP-0:")
        /usr/bin/disper -S
        ;;  
    # BOth when secondary screen is active
    "DFP-1:")
        /usr/bin/disper -e
        ;;  
    # Primary in others cases                                                       
    *)  
        /usr/bin/disper -s
        ;;  
esac

Сохраняю в файл и вызываю по нажатию сочетания.

Теперь такая проблема: если этот скрипт запустить из консоли, то режим циклически переключается, то есть то, что нужно. По событию acpi ничего не происходит. Причём, проверено, файл вызывается как нужно.

Какие могут быть идеи?

★★★★

> Сохраняю в файл и вызываю по нажатию сочетания.
Как вызываете? Не из /etc/acpi/events/, случаем?

AITap ★★★★★
()
Ответ на: комментарий от AITap

Да

из /etc/acpi/events вызывается общий обработчик, там проверяется сочетание и дёргается скрипт.

Shtsh ★★★★
() автор топика
Ответ на: комментарий от Shtsh

Запишите в начале скрипта:
exec 2>&1 > /tmp/$(basename $0).$$.log
и почитайте получившиеся файлы.

Пробовали запускать xhost +local в запущенной X-сессии? Ведь xhost, если он не имеет доступа к X-сессии, не сможет дать права всем подключаться к X-серверу.

AITap ★★★★★
()
Ответ на: комментарий от AITap

1) Сообщение только от xhost в логах

access control disabled, clients can connect from any host
и вывод пустой строки переменной MODE.
То есть
MODE=`/usr/bin/disper -p | /usr/bin/awk '/metamode/ {print($2 $6)}'`
не срабатывает.

2) Попробовал - не получилось.

Shtsh ★★★★
() автор топика
Ответ на: комментарий от Shtsh

> Сообщение только от xhost в логах

access control disabled, clients can connect from any host

Вывод: доступ к X-серверу таки есть.

и вывод пустой строки переменной MODE.

А что скажет просто /usr/bin/disper -p в том же скрипте?

AITap ★★★★★
()
Ответ на: комментарий от Shtsh

А xrandr -q?

Кстати, не получают ли иксы нажатия какой-либо клавиши (вроде Xf86Monitor) при нажатии того сочетания клавиш? Может быть, легче будет использовать это событие?

AITap ★★★★★
()
Ответ на: комментарий от AITap

выводит список режимов.

Нет, не получают.

Shtsh ★★★★
() автор топика

Спасибо всем, кто помогал.

Я связался с автором утилиты, он ответил следующее.

This is a known issue: disper needs to run as the user that runs the X session, or it can not connect. Please see
bugs.launchpad.net/disper/ bug/330258

Shtsh ★★★★
() автор топика

>при нажатии хоткеев на нетбуке автоматом подхватывался второй монитор.

И в KDE, и в гноме, собранных с USE=«xinerama», при втыкании монитора он автоматом подхватывается без никаких хоткеев.

export DISPLAY=:0.0

А если другой? Запустил иксы на :0, потом ещё одни на :1, первые остановил, тогда это не сработает.

gentoo_root ★★★★★
()
Ответ на: комментарий от gentoo_root

У меня так была возможность изпользовать отдельные screens.

Дисплей правильно.

Shtsh ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.