如何使用 Yocto Project 工具更改 window 位经理?

How do I change window managers with Yocto Project tools?

我的意图

我有一个由 BitBake 生成的图像,我有兴趣将 window 管理器更改为 metacity 或类似的东西。

我的过程

我已将 require recipes-graphics/images/core-image-x11.bb 添加到我的核心配方中,它提供了一个简单的 Matchbox 终端 window 但似乎没有其他功能。如果我添加 matchbox-desktopmatchbox-session-sato,它会增加一点可用性,但不是我想要的。

我在我的核心映像的 IMAGE_INSTALL 变量中包含了来自 OpenEmbedded Metadata Index 层的 metacity_2.34.13.bb 配方的默认包。这将安装几个组件,包括 /usr/bin 中的 metacity 命令。如果我 运行 该命令,我会收到以下消息:

GLib-GIO-Message: Using the 'memory' GSettings backend. Your settings will not be saved or shared with other applications

(metacity:1124): GLib-GIO-ERROR **: Settings schema 'org.gnome.metacity' is not installed

Trace/breakpoint trap

我导航到 /usr/share/glib-2.0/schemas 和 运行 glib-compile-schemas .,然后 运行:

startx
metacity --replace

再次。现在,输出是:

Window manager error: Unable to open X display

我还没有找到适用于我的具体情况的此错误的明确解决方案。

更新(2/29):

我现在可能已经找到解决此错误的方法,使用这些命令:

X&
export DISPLAY=:0
metacity&

此时,我似乎 运行正在我的一个 VT 上安装一些东西。我可以在那个 VT 中 运行 像 glxgears 这样的演示(glxgears 包含在 mesa-demos 配方中),但我不知道如何实际创建一个可用的环境。

我的问题(s)

  1. 我没有使用太多来自 meta-openembedded/meta-gnome(只是 metacity)或 meta/recipes-gnomeadwaita-icon-themegnome-desktop3gsettings-desktop-schemasgtk+3), 那么我是否缺少一些自动添加 metacity 的配方?
  2. (如果不是问题1)如何解决错误Window manager error: Unable to open X display?

x11-common 配方添加了一个 X 会话脚本,它将 运行 /usr/bin/x-session-manager:负责启动您的桌面环境。

在 OE-Core 中实现新 session/DE 的方法是对 "x-session-manager" 使用 update-alternatives:查看默认实现的 matchbox-session 配方和 mini-x-替代方案的会话配方。

mini-x-session 可能可以根据您的需要进行修改,因此您无需编写新的:像这样的 /etc/mini_x/session 文件可能可以解决问题:

# start any apps here, e.g. "my-desktop &"
exec metacity

从这个(运行宁 window 经理)到 "usable environment" 可能仍然需要大量工作,具体取决于您对可用的定义。