1

我正在开发 Wayland 合成器,我需要为 Qt 和 Gtk 客户端应用程序禁用 CSD。

我可以使用任何环境变量来做到这一点吗?

我一直在寻找没有运气!

4

1 回答 1

2

对于 Qt,您可以设置QT_WAYLAND_DISABLE_WINDOWDECORATION=1

2021 年更新(仅与合成器开发相关):

现在还有一个用于协商窗口装饰的官方协议扩展,称为xdg-decoration,因此如果您正在使用合成器,您可以实现它并确保发送configure事件server_side

    <event name="configure">
      <description summary="suggest a surface change">
        The configure event asks the client to change its decoration mode. The
        configured state should not be applied immediately. Clients must send an
        ack_configure in response to this event. See xdg_surface.configure and
        xdg_surface.ack_configure for details.

        A configure event can be sent at any time. The specified mode must be
        obeyed by the client.
      </description>
      <arg name="mode" type="uint" enum="mode" summary="the decoration mode"/>
    </event>

这将是标准化和干净的方式,但请注意,工具包可以自由地不实现此扩展,因此无法保证您将能够使用它。

如果您使用的是 Qt Wayland Compositor API,文档在这里

Qt 客户端实现并遵守它以及其他一些工具包,但我认为 GTK 不会。不过,看起来他们实现了一个由 KDE 开发的非官方扩展,所以如果你真的想不遗余力地摆脱 GTK 上的装饰,也可以考虑实现服务器装饰

于 2018-01-23T14:50:59.303 回答