如何在我创建的 Qt Wayland 合成器中打开像 firefox 这样的 gui 应用程序

Posted

技术标签:

【中文标题】如何在我创建的 Qt Wayland 合成器中打开像 firefox 这样的 gui 应用程序【英文标题】:How to open gui applications like firefox in the Qt Wayland compositor which I created 【发布时间】:2021-11-14 15:15:43 【问题描述】:

我创建了一个示例 Qt Wayland 合成器,QML 代码如下所示:

import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.0
import QtWayland.Compositor 1.0

WaylandCompositor
    id:comp
    WaylandOutput
        compositor:comp
        sizeFollowsWindow:true
        window:Window
            visible:true
            width:700
            height:700
            Repeater
                model:shellSurfaces
                ShellSurfaceItem
                    shellSurface:modelData
                    onSurfaceDestroyed:shellSurfaces.remove(index)
                
            
        
    
    ListModelid:shellSurfaces
    WlShell
        onWlShellSurfaceCreated:
            shellSurfaces.append(shellSurface:shellSurface);
        
    

我知道我可以在命令后使用--platform wayland 打开一个摆动窗口。如何在 Wayland 合成器中打开其他软件窗口(例如 Firefox)?

(我不了解显示服务器和 Wayland 合成器的基础知识。我认为我创建的合成器就像一个窗口管理器,我在其中打开的应用程序应该在它打开时在合成器中打开在窗口管理器中)。

【问题讨论】:

【参考方案1】:

当您的合成器加载时,它会在您的计算机上创建一个套接字。在我的机器上,它位于/run/user/1000。它应该命名为0-wayland

为了启动应用程序,您需要通过环境变量将 Wayland 显示传递给它。

例子:

启动火狐:WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/user/1000 XDG_SESSION_TYPE="wayland" firefox

启动 kcalc(KDE 的计算器):WAYLAND_DISPLAY=wayland-0 XDG_RUNTIME_DIR=/run/user/1000 XDG_SESSION_TYPE="wayland" kcalc

我想你明白了。

【讨论】:

以上是关于如何在我创建的 Qt Wayland 合成器中打开像 firefox 这样的 gui 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

PyCharm运行出现 Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run

Qt 使应用程序始终在 Weston/Wayland 平台上

Qt 使应用程序在 Weston/Wayland 平台上始终处于顶部

wayland简介

运行在Wayland的Qt应用程序

使用 Wayland 在 Linux 上获取 Capslock 状态