Як я можу автоматично оновити макет монітора в XFCE?


9

У мене ноутбук, який зазвичай підключений до великого монітора. Якщо док-станція, я хочу використовувати великий монітор як основний дисплей, а екран ноутбука як вторинний дисплей вимкнено праворуч. Якщо не розблоковано, екран ноутбука - єдиний дисплей.

Схоже, у XFCE не вбудована така підтримка мультимонітора. Я знайшов ARandR , який дозволив мені налаштувати монітори так, як мені хочеться. Я можу використовувати ARandR для збереження профілів для стикованих та розблокованих конфігурацій (які насправді є лише скриптами оболонки, які викликають xrandr ).

Але як змусити ці профілі застосовуватись автоматично, коли ноутбук стикований і не розблокований? Чи варто спробувати створити правило udev, яке визначає док-станцію? Чи є кращий спосіб?


Ще не тестували його, але x-on-resize був розроблений одним з X розробників, щоб зробити саме це.
Мікель

Відповіді:


5

Один із способів - створити правило udev, але оскільки я хотів чогось більш портативного, у мене є цей сценарій bash. Він покладається на підтримку inotifywait, не має певних циклів і вважається ефективним.

external-lcd.sh

#!/bin/sh
# 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 MONITOR2=/sys/class/drm/card0-VGA-1/status                                                         

while inotifywait -e modify,create,delete,open,close,close_write,access $MONITOR2;                        

dmode="$(cat $MONITOR2)"                                                                                  

do                                                                                                        
    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 

Не забудьте зробити файл виконуваним ( chmod +x external-lcd.sh). Тоді просто запустіть його щоразу, коли ви запустите свій DE.

Я використовую це на archlinux, тому я думаю, що це має працювати. Ви можете змінити параметри xrandr або поміняти їх, щоб використовувати конфігурації арандр.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.