从命令行配置 GNOME/Wayland 显示配置

从命令行配置 GNOME/Wayland 显示配置

是否可以在 Wayland 会话中从命令行配置 Mutter/GNOME shell 的监视器配置,或者到目前为止还没有实现?

我尝试通过 xrandr 命令更改一些内容(但对我来说很明显,这不能工作,因为 xrandr 中的“x”表明它是 XServer 的工具)。

该命令无效(使用Fedora 23 / GNOME 3.18.2)

xrandr --output XWAYLAND0 --off

但是,包含的用于显示配置的 gnome 设置对话框正在运行。对配置文件或命令行工具的提示会很好......

答案1

Mutter 文档指定了 dbus 的接口,正如 @don_crissti 在评论中指出的那样:

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

就我而言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', '[email protected]', [] )] )]" "[]"

不幸的是,这对我不起作用,即使我以正确的格式传递了分辨率(又名“模式 ID”):

Error: GDBus.Error:org.freedesktop.DBus.Error.InvalidArgs: Invalid mode '[email protected]' specified
(According to introspection data, you need to pass 'uua(iiduba(ssa{sv}))a{sv}')

编辑:

我找到了原因,刷新率需要是DisplayConfig.GetResources正在报告的确切字符串。遗憾的是它不允许您设置您想要的刷新率!所以你必须使用一些任意字符串,如下59.810825347900391所示:

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', '[email protected]', [] )] )]" "[]"

总而言之,这的用途非常有限。应该有一种方法可以通过生成 CVT 或 GTF 时序来添加显示模式,但看起来 DisplayConfig 没有相应的接口:(

相关内容