现代 Linux 桌面会话管理

最近尝试了使用 Wayfire 作为 Wayland 混成器,整体体验后,Wayfire 的功能是不错的,可惜其没有 systemd 支持,对于依赖 systemd 的我来说,这显然是不能够满足日常需求的。因此,我研究了如何为其添加基于 systemd 的会话管理机制,记录在此文中。 桌面会话的生命周期 传统方式 在 Linux 中,本没有什么非常精细的会话管理机制,无论是 Shell 登录还是图形界面登录,一切都可以是非常简洁的流程完成。 Shell 登录时,Login Manager 以登录用户身份启动 Login Interactive Shell 进程,Shell 则运行相应的 Profile 脚本,如 bash(1) 加载 ~/.bash_profile 或 ~/.profile,作为最简单的会话管理机制,运行一些后台任务。对于图形界面来说,可以直接 startx、加载 ~/.xinitrc 、启动 X 服务器和 Window Manager 等进程,或者运行 Wayland 混成器,或者由 Display Manager 负责创建 X 服务器或 Wayland 混成器进程,而图形环境所需要的程序要么通过 ~/.xinitrc 这样的脚本启动,要么在 Window Manager 的配置文件中指定。 无论是什么方法,都是原始的机制。尽管它们原理十分简单,却存在诸多弊端,比如配置服务启动的方式不统一,Shell 登录、X 环境登录和 Wayland 环境登录需要各种不同的配置文件、需要写脚本以命令式的方式完成;比如这种方式没有充分利用 systemd 的支持,集成差、体验割裂。在 Linux 桌面系统中 systemd 早已普及的今天,这种原始方式显然跟不上时代。 基于 systemd 的现代方式 systemd 早已为 Linux 的各种应用场景设计好了一套服务和会话管理的框架,其关键点在于各种预定义的 target。target 是系统的生命周期的各个阶段起始或终止的标志,只要为每个程序写好 service 文件,并设置好其与 target 的关系,systemd 即可完全自动地在特定时间节点做好规划的工作,运行各种服务。 ...

February 18, 2026 · 5 min · Justin Chen

统一 Linux GUI 框架主题和外观

在 Linux 下,GUI 外观配置一直是一个复杂的话题。本文试图梳理 Qt 和 GTK 两种 GUI 框架的相关概念,并给出不同情况下的配置方案,实现外观的统一。 本文讨论的 Qt 包括 Qt 5 和 Qt 6,GTK 包括 GTK 2、GTK 3、GTK 4,并且将以 Qt 6 和 GTK 4 为重点。测试的 DE 和 WM 包括 GNOME 4.46、KDE Plamsa 6.1、Hyprland 0.41。 配置组成 基本概念 外观配置一般包括以下几个方面: 主题/Theme:这是一个比较广泛的概念,一般包括了样式、图标和鼠标指针等各配置项在内。 样式/Style:一般指程序窗口、面板、组件的外观。 图标/Icon 指针/Cursor 字体/Font 配色方案/Color Scheme:较细粒度的配置项,诸如主要颜色、强调颜色的配置都属于配置方案。 声音/Sound …… 这是一个比较广泛的定义,具体到各框架,又会产生一定的变化。 GTK GTK 中可直接配置的部分相对较少,主要是: 主题/Theme:主要与一般定义中的样式/Style 对应。 图标/Icon Theme:与一般定义中的图标/Icon 相同。 指针/Cursor Theme:与一般定义中的指针/Cursor 相同。 字体/Font:与一般定义中的字体/Font 相同。 包括 GNOME 在内的基于 GTK 开发的 DE 基本上直接使用上述概念,利用这些 DE 的工具配置外观,基本上就是对 GTK 的配置直接修改。 ...

July 31, 2024 · 3 min · Justin Chen