如何从脚本控制KDE监视器配置?

时间:2014-03-07 15:59:12

标签: configuration scripting kde multiple-monitors

每天早上我都来上班,将我睡着的笔记本电脑插入桌面上的大显示器,然后摆弄这个对话框:

screenshot of KDE "display settings" dialog

我想这个摆弄的结果是“显示设置”应用程序将新的显示器配置写入某个文件,然后向窗口管理器发送一些信号以注意设置已更改。我想自己做这件事并直接控制它,为了这个目的以及其他目的。

如果我能找到生成“显示设置”对话框的流程名称,我可以使用strace运行它,看看它在做什么,但我无法找到它

我的问题是:

  

此对话框属于哪个程序?我会在ps输出中查找什么来识别它?当它改变监视器配置时它实际上在做什么?

1 个答案:

答案 0 :(得分:1)

可以从脚本控制xrandr实用程序。可以通过运行以下命令获取屏幕截图中显示的配置:

xrandr \
 --output LVDS-1 --mode 1680x1050 --pos 1080x1120 --rotate normal \ 
 --output DVI-D-1 --off --output VGA-1 --mode 1920x1080 --pos 0x0 --rotate left          

生成此命令行,我使用了arandr。它提供了一个类似于原始问题中的对话框,但更简单,然后有一个“保存”选项,可以将正确的xrandr调用保存到文件中。

使用arandr对话框按照我想要的方式配置监视器后,我将配置保存到文件中,比如~/.screenlayout/office.sh。将此文件作为shell脚本执行将恢复已保存的配置。我写了一个简单的shell脚本disp,它执行$HOME/.screenlayout/$1.sh,所以当我到办公室时,我只需在命令行输入disp office即可恢复办公室监视器配置。当我回家时,我输入disp 1,运行~/.screenlayout/1.sh,我保存了默认的单显示器配置。

我的帖子中的其他问题仍然没有答案,虽然可能原始问题中的对话框正在运行xrandr本身来更改屏幕配置。

[更新2018-04-08:我继续使用disp,这不再是微不足道的。当前版本为https://github.com/mjdominus/util/blob/master/bin/disp。一个改进是它有一个-c标志来支持shell可编程完成,我设置如下:

    complete -F __complete_disp disp

    __complete_disp () {
        COMPREPLY=($(disp -c "$2"))
    }

自从我写这篇回复以来,KDE本身在使用正确的显示配置方面变得更聪明。它似乎通常会识别插入哪些显示器并记住上次配置时的配置,因此我发现自己使用disp比以前少得多。但有时会让人感到困惑,然后能够使用disp重置配置很方便。 ]