如何让xfce自动调整以更改可用的输出?


11

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

例如,如果我使用的是DVI显示器,但是将笔记本电脑断开对接,则XFCE不会自动意识到我不再有可用的显示器并更改了输出。Gnome确实做到了,尽管我不确定通过什么服务。我想以某种方式确保我总是自动至少有一个工作输出。

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


1
迄今为止最好的,我见过:unix.stackexchange.com/a/120945/14907
akostadinov,2016年

@akostadinov答案应该是答案。我将继续将它变成一个。
Aleksandr Dubinsky

Answers:


6
$ xrandr --auto

从xrandr手册页:

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


这项工作至少对我来说有效。
pl1nk 2012年

但这是一次性命令,而不是服务,对吗?
Aleksandr Dubinsky

0

在Unix StackExchange上可以回答以下问题:https ://unix.stackexchange.com/questions/101809/how-can-i-automatically-update-my-monitor-layout-in-xfce/120945#120945 但是,因为它不是可能将此问题标记为另一个站点上的问题的重复项,我将在此处复制答案。


一种方法是创建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配置。


-1

没有这样的选择,因为桌面不可知硬件事件检测(udev)背后的技术对于像xfce这样的爱好者项目来说是相当新的。

深入研究D-Bus和,可能会得到一些不错的结果udev。看一下udev没有运行启动程序的删除事件

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.