每天早上我都来上班,将我睡着的笔记本电脑插入桌面上的大显示器,然后摆弄这个对话框:
我想这个摆弄的结果是“显示设置”应用程序将新的显示器配置写入某个文件,然后向窗口管理器发送一些信号以注意设置已更改。我想自己做这件事并直接控制它,为了这个目的以及其他目的。
如果我能找到生成“显示设置”对话框的流程名称,我可以使用strace
运行它,看看它在做什么,但我无法找到它
我的问题是:
此对话框属于哪个程序?我会在
ps
输出中查找什么来识别它?当它改变监视器配置时它实际上在做什么?
答案 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
重置配置很方便。 ]