openSUSE:DisplayManagerRework

跳转到:导航搜索

重构显示管理器

摘要

移除 openSUSE 中当前存在的用于选择和设置显示管理器的 xdm/alternatives 方法,转而使用 systemd 内置的功能来管理显示管理器。

负责人


当前状态

详细描述

我们希望移除发行版中现有的 xdm/alternatives 显示管理器设置。与其发布一团乱麻的符号链接魔法来确定要启动哪个 DM,不如将这些信息存储在软件包本身中,并且每个软件包都应该发布自己的服务文件,该文件通过“systemctl enable”命令链接到 display-manager.service。

这样可以简化系统,并且以后添加新的显示管理器会更容易,因为它们不需要中央注册。选择窗口管理器也变得更加统一,就像我们支持选择其他服务一样。而且它也更像其他发行版中的做法。

我们还可以摆脱 /usr/lib/X11/display-manager、/etc/alternatives/ 和其他地方的许多丑陋代码,此外还可以将仅支持 Wayland 的项目与需要 xdm 和随附的 Xorg 服务器和依赖项的安装分离。

软件包将使用 systemd 预设,以便桌面维护者(即 GNOME、Plasma、LXQt、MATE 等)可以通过发布预设文件轻松选择他们选择的窗口管理器。



对 openSUSE 的益处

事情通常会变得更简单、更容易和更模块化。我们将更像其他发行版,因为我们摆脱了 openSUSE 独有的 xdm/alternatives 逻辑和符号链接,转而使用其他发行版使用的显式单元文件。

范围

我们需要进行以下更改

  1. 更新所有显示管理器软件包,以包含一个显示管理器 systemd 单元文件(例如 /usr/lib/systemd/system/xyzdm.service),内容至少如下(显然,各个 DM 可能需要设置其他标志)
    [Unit]
    Description=XYZ Display Manager
    Documentation=man:xyzdm(8)
    Conflicts=getty@tty1.service
    After=systemd-user-sessions.service getty@tty1.service plymouth-quit.service
    
    
    [Service]
    ExecStart=/usr/bin/xyzdm
    Restart=always
    
    [Install]
    Alias=display-manager.service
    
    1. 对 openSUSE:Factory 中主要的显示管理器进行快速检查显示如下
      1. SDDM:上游提供的 sddm.service 文件提供了所有必要的功能
      2. GDM:openSUSE 当前未在我们的基本打包中提供 gdm.service 文件(它包含在 `gdm-systemd` 子软件包中),但 Fedora 使用上游提供的服务文件,没有发行版修改
      3. XDM:openSUSE 安装 `/etc/systemd/system/xdm.service`,但那只是指向通用 `/usr/lib/systemd/system/display-manager.service` 的符号链接,并且是我们的奇特 alternatives 设置的一部分。上游提供了一个 xdm.service 文件,并且似乎需要在发行版级别进行修补。
      4. LightDM:openSUSE 上当前没有 lightdm.service 文件,上游在其源代码中提供了一个 .service 文件,似乎提供了所有必要的参数。
  2. 更新所有显示管理器软件包,以使用 systemd 打包宏来安装单元文件
  3. 要求各个桌面维护者包含他们自己的预设文件,以将其 dm 设置为默认值
    1. 仅以 Fedora Workstation 为例,他们发布了 display-manager.preset 作为其 fedora-release 包的一部分,显然他们专注于 GNOME,因此将 gdm 放在第一位是有意义的,这需要在 openSUSE 中进行更多研究以确定如何处理。
    2. 也就是说,一次只能激活一个显示管理器,因此如果用户有兴趣在多桌面安装中交换显示管理器,只需禁用当前服务,并通过 systemctl 启用新的所需服务即可。
  4. 我们必须确保 /usr/lib/X11/display-manager 中的所有有趣/奇怪的技巧要么不再相关——要么不会丢失(这包括例如远程登录功能)。
  5. 一旦软件包准备好,openQA 将是下一个挑战,因为有一些测试会安装系统,例如最小图形化(结果是 xdm),然后我们升级到例如 lxqt 或 mate,最终得到 sddm 或 lightdm。

openSUSE:Factory 中当前可用的显示管理器是

  • GDM (GNOME)
  • SDDM (Plasma 和 LXQt)
  • XDM
  • LightDM (LXDE/XFCE/MATE?)
  • 其他显示/登录管理器,例如 SLiM、Greetd、可能为 TDE/KDE3 用户提供的旧 kdm,以及 Cinnamon、Cosmic、Pantheon、Budgie 等其他桌面可能正在使用的任何其他内容,可能存在于 OBS 上,但当前不在 openSUSE:Factory 中

我们会尽力联系这些维护者,和/或提交 SR 以实现此更改。

如何测试

在各种 openSUSE 产品上,应该正常启动正确的显示管理器。

以下命令应该可以用于在下次重新启动时更改默认显示管理器

systemctl enable --force xyzdm.service