【问题标题】:How can I control the KDE monitor configuration from a script?如何通过脚本控制 KDE 监视器配置?
【发布时间】:2014-04-10 21:07:41
【问题描述】:

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

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

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

我的问题是:

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

【问题讨论】:

    标签: configuration scripting kde multiple-monitors


    【解决方案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 重置配置很方便。 ]

    【讨论】:

      猜你喜欢
      • 2012-02-16
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-17
      相关资源
      最近更新 更多