fla*_*i88 11 display-settings wayland gnome-shell gnome3
是否有可能在 Wayland 会话中从命令行配置 Mutter/GNOME shell 的监视器配置,或者直到现在才实现?
我试图通过 xrandr 命令更改一些内容(但对我来说这很明显,因为 xrandr 中的“x”表明它是 XServer 的工具,因此这无法正常工作)。
此命令无效(使用 Fedora 23 / GNOME 3.18.2)
xrandr --output XWAYLAND0 --off
Run Code Online (Sandbox Code Playgroud)
但是,包含的显示配置的 gnome 设置对话框正在运行。配置文件或命令行工具的提示会很好......
正如@don_crissti 在评论中指出的那样,Mutter 文档指定了与 dbus 的接口:
https://gitlab.gnome.org/GNOME/mutter/blob/master/src/org.gnome.Mutter.DisplayConfig.xml
您需要找出您的配置序列号和连接器:
配置序列号是第一个数字
gdbus call \
--session \
--dest=org.gnome.Mutter.DisplayConfig \
--object-path /org/gnome/Mutter/DisplayConfig \
--method org.gnome.Mutter.DisplayConfig.GetResources
Run Code Online (Sandbox Code Playgroud)
在我的情况下uint32 3,所以我使用 3
连接器:它显示在 中ls /sys/class/drm,在我的情况下,通过反复试验,我发现这card0-DP-2是正确的,所以我使用DP-2. 您还可以尝试理解DisplayConfig.GetResources并使用它的输出。
通过设置其他选项,最终命令变成这样:
gdbus call \
--session \
--dest=org.gnome.Mutter.DisplayConfig \
--object-path /org/gnome/Mutter/DisplayConfig \
--method org.gnome.Mutter.DisplayConfig.ApplyMonitorsConfig \
3 1 "[(0, 0, 1, 0, true, [('eDP-1', '1920x1080@60.0', [] )] )]" "[]"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这对我不起作用,即使我以正确的格式传递分辨率(又名“模式 ID”):
Error: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Invalid mode '1920x1080@60.0' specified
(According to introspection data, you need to pass 'uua(iiduba(ssa{sv}))a{sv}')
Run Code Online (Sandbox Code Playgroud)
编辑:
我找到了原因,刷新率需要DisplayConfig.GetResources是报告的确切字符串。遗憾的是,它不允许您将想要的设置为刷新率!所以你必须59.810825347900391像这样使用一些任意的字符串:
Error: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Invalid mode '1920x1080@60.0' specified
(According to introspection data, you need to pass 'uua(iiduba(ssa{sv}))a{sv}')
Run Code Online (Sandbox Code Playgroud)
总之,这是非常有限的用途。应该有一种添加显示模式的方法,通过生成 CVT 或 GTF 计时,但看起来 DisplayConfig 没有相应的接口:(