Configuration 如何从脚本控制KDE监视器配置?
每天早上我来上班,把睡觉的笔记本电脑插入我桌上的大显示器,然后摆弄这个对话框: 我想这种摆弄的结果是“显示设置”应用程序将新的监视器配置写入某个文件,然后向窗口管理器发送一些信号,通知设置已更改。我想自己做这件事,并直接控制它,为了这个目的,也为了其他目的 如果我能找到生成“显示设置”对话框的进程的名称,我可以用Configuration 如何从脚本控制KDE监视器配置?,configuration,scripting,kde,multiple-monitors,Configuration,Scripting,Kde,Multiple Monitors,每天早上我来上班,把睡觉的笔记本电脑插入我桌上的大显示器,然后摆弄这个对话框: 我想这种摆弄的结果是“显示设置”应用程序将新的监视器配置写入某个文件,然后向窗口管理器发送一些信号,通知设置已更改。我想自己做这件事,并直接控制它,为了这个目的,也为了其他目的 如果我能找到生成“显示设置”对话框的进程的名称,我可以用strace运行它,看看它在做什么,但我也没能找到 我的问题是: 此对话框属于哪个程序?我会在ps输出中寻找什么来识别它?当它改变监视器配置时,它实际上在做什么 xrandr实用程序可
strace
运行它,看看它在做什么,但我也没能找到
我的问题是:
此对话框属于哪个程序?我会在ps
输出中寻找什么来识别它?当它改变监视器配置时,它实际上在做什么
xrandr
实用程序可以通过脚本进行控制。通过运行以下命令可以获得屏幕截图中显示的配置:
为了生成这个命令行,我使用了arandr
。它显示一个类似于原始问题中的对话框,但更简单,然后有一个“保存”选项,将正确的xrandr
调用保存到文件中
在使用arandr
对话框以我想要的方式配置监视器之后,我将配置保存到一个文件中,比如~/.screenlayout/office.sh
。以shell脚本的形式执行此文件将恢复保存的配置。我编写了一个简单的shell脚本,disp
,它执行$HOME/.screenlayout/$1.sh
,因此当我到达办公室时,我只需在命令行上键入disp office
,即可恢复办公室监视器配置。当我回家时,我键入disp1
,它运行~/.screenlayout/1.sh
,在那里我保存了默认的单监视器配置
尽管原始问题中的对话框可能正在运行xrandr
来更改屏幕配置,但我的帖子中的其他问题仍然没有答案
[更新2018-04-08:我继续使用disp
,这不再是微不足道的。当前版本是。一个改进是它有一个-c
标志来支持shell可编程完成,我这样设置:
complete -F __complete_disp disp
__complete_disp () {
COMPREPLY=($(disp -c "$2"))
}
自从我写了这个回复后,KDE本身在使用正确的显示器配置方面变得更聪明了。它通常似乎能识别插入的显示器,并能记住上次相同的配置,所以我发现自己使用的disp
比以前少了很多。尽管有时它会感到困惑,然后我就忘记了使用disp
重置配置很方便
complete -F __complete_disp disp
__complete_disp () {
COMPREPLY=($(disp -c "$2"))
}