我怎样才能让 xfce 自动适应不断变化的可用输出?

我怎样才能让 xfce 自动适应不断变化的可用输出?

在 xfce 中,我可以运行“设置”->“显示”来更改我首选的输出监视器。我还没有找到让它自动适应可用输出变化的选项。

例如,如果我使用 DVI 显示器,但断开笔记本电脑的连接,XFCE 将不会自动意识到我不再有可用的显示器并更改输出。Gnome 确实做到了这一点,尽管我不确定是通过什么服务。我希望有某种方法可以确保我始终自动拥有至少一个可用的输出。

附注:这与我的另一个问题有关,如果我只使用窗口管理器而不是桌面环境,如何获得自动停靠/取消停靠分辨率更新?,但适用于 xfce,而不是任何通用窗口管理器。

答案1

$ xrandr --auto

来自 xrandr 手册页:

- 汽车:对于已连接但已禁用的输出,这将使用其首选模式启用它们(或者,如果它们没有首选模式,则接近 96dpi)。对于已断开连接但已启用的输出,这将禁用它们。

答案2

该问题在 Unix StackExchange 上有答案:https://unix.stackexchange.com/questions/101809/how-can-i-automatically-update-my-monitor-layout-in-xfce/120945#120945但是,由于无法将该问题标记为其他网站上问题的重复,因此我只需在此处复制答案。


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

外部液晶显示器

#!/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 配置。

答案3

没有这样的选择,因为桌面无关硬件事件检测(udev)背后的技术对于像 xfce 这样的业余项目来说相当新。

深入研究D-Bus和可能会得到一些好的结果udev。看看udev 未运行删除事件对于初学者。

相关内容