如何在XFCE中自动更新显示器布局?


9

我有一台通常固定在大型显示器上的笔记本电脑。停靠后,我想将大显示器用作主要显示,而笔记本电脑屏幕用作次要显示在右侧。取消对接时,笔记本电脑的屏幕是唯一的显示屏。

XFCE似乎没有内置这种多显示器支持。我找到了ARandR,它使我可以按自己的方式设置显示器。我可以使用ARandR保存配置文件以存储停靠和取消停靠的配置(实际上只是调用xrandr的 shell脚本)。

但是,当笔记本电脑对接和取消对接时,如何使这些配置文件自动应用?我是否应该尝试创建可检测扩展坞的udev规则?有没有更好的办法?


尚未进行测试,但是X-on-resize是X开发人员之一开发的,可以做到这一点。
Mikel 2014年

Answers:


5

一种方法是创建udev规则,但是由于我想要更轻便的东西,所以有了这个bash脚本。它依靠inotifywait支持,没有某种循环,被认为是有效的。

外部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参数或将其交换为使用arandr配置。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.