<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Systemd on StarryReverie 繁星筑梦 星缀夜空</title>
    <link>https://blog.starryreverie.cc/tags/systemd/</link>
    <description>Recent content in Systemd on StarryReverie 繁星筑梦 星缀夜空</description>
    <generator>Hugo -- 0.146.0</generator>
    <language>zh-cn</language>
    <copyright>Copyright (C) 2025 Justin Chen · Licensed under CC BY-NC-SA 4.0</copyright>
    <lastBuildDate>Wed, 18 Feb 2026 20:47:53 +0800</lastBuildDate>
    <atom:link href="https://blog.starryreverie.cc/tags/systemd/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>现代 Linux 桌面会话管理</title>
      <link>https://blog.starryreverie.cc/posts/contemporary-linux-desktop-session-management/</link>
      <pubDate>Wed, 18 Feb 2026 20:47:53 +0800</pubDate>
      <guid>https://blog.starryreverie.cc/posts/contemporary-linux-desktop-session-management/</guid>
      <description>&lt;p&gt;最近尝试了使用 Wayfire 作为 Wayland 混成器，整体体验后，Wayfire 的功能是不错的，可惜其没有 systemd 支持，对于依赖 systemd 的我来说，这显然是不能够满足日常需求的。因此，我研究了如何为其添加基于 systemd 的会话管理机制，记录在此文中。&lt;/p&gt;
&lt;h2 id=&#34;桌面会话的生命周期&#34;&gt;桌面会话的生命周期&lt;/h2&gt;
&lt;h3 id=&#34;传统方式&#34;&gt;传统方式&lt;/h3&gt;
&lt;p&gt;在 Linux 中，本没有什么非常精细的会话管理机制，无论是 Shell 登录还是图形界面登录，一切都可以是非常简洁的流程完成。 Shell 登录时，Login Manager 以登录用户身份启动 Login Interactive Shell 进程，Shell 则运行相应的 Profile 脚本，如 &lt;code&gt;bash(1)&lt;/code&gt; 加载 &lt;code&gt;~/.bash_profile&lt;/code&gt; 或 &lt;code&gt;~/.profile&lt;/code&gt;，作为最简单的会话管理机制，运行一些后台任务。对于图形界面来说，可以直接 &lt;code&gt;startx&lt;/code&gt;、加载 &lt;code&gt;~/.xinitrc&lt;/code&gt; 、启动 X 服务器和 Window Manager 等进程，或者运行 Wayland 混成器，或者由 Display Manager 负责创建 X 服务器或 Wayland 混成器进程，而图形环境所需要的程序要么通过 &lt;code&gt;~/.xinitrc&lt;/code&gt; 这样的脚本启动，要么在 Window Manager 的配置文件中指定。&lt;/p&gt;
&lt;p&gt;无论是什么方法，都是原始的机制。尽管它们原理十分简单，却存在诸多弊端，比如配置服务启动的方式不统一，Shell 登录、X 环境登录和 Wayland 环境登录需要各种不同的配置文件、需要写脚本以命令式的方式完成；比如这种方式没有充分利用 systemd 的支持，集成差、体验割裂。在 Linux 桌面系统中 systemd 早已普及的今天，这种原始方式显然跟不上时代。&lt;/p&gt;
&lt;h3 id=&#34;基于-systemd-的现代方式&#34;&gt;基于 systemd 的现代方式&lt;/h3&gt;
&lt;p&gt;systemd 早已为 Linux 的各种应用场景设计好了一套服务和会话管理的框架，其关键点在于各种预定义的 &lt;code&gt;target&lt;/code&gt;。&lt;code&gt;target&lt;/code&gt; 是系统的生命周期的各个阶段起始或终止的标志，只要为每个程序写好 &lt;code&gt;service&lt;/code&gt; 文件，并设置好其与 &lt;code&gt;target&lt;/code&gt; 的关系，systemd 即可完全自动地在特定时间节点做好规划的工作，运行各种服务。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
