ReGreet如何获取用户与会话?D-Bus AccountsService与desktop文件解析
ReGreet如何获取用户与会话D-Bus AccountsService与desktop文件解析【免费下载链接】ReGreetClean and customizable greeter for greetd项目地址: https://gitcode.com/gh_mirrors/re/ReGreet当你打开 Linux 登录界面看到用户下拉列表和 X11/Wayland 会话选项时是否好奇过这些信息从何而来ReGreet 是一款干净、高度可定制的 greetd 登录界面greeter用 Rust 编写、基于 GTK4 与 Relm4。它的用户列表来自系统 D-Bus 服务 AccountsService而会话列表则来自标准的 .desktop 文件解析。这篇文章将带你一步步拆解 ReGreet 获取用户与会话的完整原理即使你是 Linux 新手也能轻松看懂。为什么 ReGreet 需要认识用户和会话greetd 是一个极简的登录守护进程它本身只负责认证和启动会话并不关心这台机器上有哪些用户、有哪些桌面环境可选。这些信息需要由 greeter 自己发现并展示给用户。ReGreet 作为 greetd 的图形前端需要解决两个核心问题有哪些用户可以登录→ 通过 D-Bus 与 AccountsService 通信有哪些桌面会话可选→ 通过扫描 .desktop 会话文件这两条路径分别对应源码中的SysUtil结构体它最终会维护三张映射表用户名映射、登录 Shell 映射、会话命令映射。用户从哪来D-Bus AccountsService 详解Linux 桌面系统普遍运行一个名为org.freedesktop.Accounts的系统级 D-Bus 服务即 AccountsService它集中管理用户账户信息。ReGreet 在src/sysutil/accounts_service.rs中定义了两个极简的 D-Bus 代理接口#[proxy( default_path /org/freedesktop/Accounts, default_service org.freedesktop.Accounts, interface org.freedesktop.Accounts )] pub trait AccountsService { fn list_cached_users(self) - zbus::ResultVecOwnedObjectPath; } #[proxy( default_service org.freedesktop.Accounts, default_path /org/freedesktop/Accounts, interface org.freedesktop.Accounts.User )] pub trait User { fn user_name(self) - zbus::ResultString; fn real_name(self) - zbus::ResultString; fn shell(self) - zbus::ResultString; }获取用户只需三步连接系统总线通过Connection::system()建立与系统 D-Bus 的连接列出用户路径调用list_cached_users()拿到所有用户的 D-Bus 对象路径如/org/freedesktop/Accounts/User1000逐个读取属性对每个用户路径创建UserProxy读取user_name登录名、real_name显示名、shell登录 Shell。一个贴心的小细节如果某个用户的real_name为空ReGreet 会用user_name代替避免下拉列表出现空选项。最终的映射关系是显示名 → 用户名这正是登录界面下拉框展示的数据来源。相关实现见 src/sysutil.rs。会话从哪来.desktop 文件解析用户有了接下来是能启动什么桌面环境。Linux 桌面遵循 freedesktop 规范X11 会话放在/usr/share/xsessions/Wayland 会话放在/usr/share/wayland-sessions/每个会话都是一个.desktop文件。ReGreet 在编译时通过SESSION_DIRS环境变量固化这两个默认目录见 src/constants.rs运行时还会优先尊重XDG_DATA_DIRS环境变量——这对 NixOS 这类可在运行期改变目录路径的系统尤为重要。解析流程如下用 glob 模式扫描每个会话目录下所有*.desktop文件用freedesktop_entry_parser解析出[Desktop Entry]小节读取Name作为会话显示名称缺失时退化为文件名主干读取Exec作为启动命令并通过shlex正确拆分参数根据目录名xsessions或wayland-sessions判定会话类型。核心逻辑位于SysUtil::init_sessions()参见 src/sysutil.rs。Hidden 与 NoDisplay自动过滤隐藏会话很多发行版预装的会话文件并不希望全部展示给用户例如仅用于恢复模式的会话。ReGreet 对此有优雅的处理Hidden声明该会话对用户隐藏NoDisplay声明该会话不应在登录界面展示。解析时若发现这两个属性之一为真该会话会被记录到已发现集合后直接跳过不会出现在下拉框中相关代码见 src/sysutil.rs。去重与覆盖同名会话的智能取舍你可能在系统中装过多个桌面环境的同款会话。ReGreet 用HashSet记录已处理过的文件相对路径如wayland-sessions/sway.desktop遇到同名文件时跳过后续的只保留第一个。这意味着如果你在/usr/local/share/xsessions/放了一个与系统同名、但内容不同的会话文件只要它在目录顺序中靠前就能实现覆盖系统自带的会话定义。这与 Linux 的PATH查找机制如出一辙让用户自定义会话变得非常简单。X11 会话的特殊前缀处理X11 会话与 Wayland 会话有一个关键差异启动 X11 会话需要先拉起 X Server。因此 ReGreet 为 X11 会话默认加上startx /usr/bin/env命令前缀可通过X11_CMD_PREFIX环境变量在编译时修改而 Wayland 会话直接使用原始命令。在init_sessions中判定目录名是否为xsessions后会据此决定是否拼接前缀。从数据到登录完整流程串联整个获取过程由SysUtil::new()一次性完成见 src/sysutil.rs它异步地同时加载用户与会话随后用户列表、Shell 列表、会话列表被填充到SysUtil结构体在 src/gui/component.rs 中这些数据被填入 GTK 的两个下拉框usernames_box与sessions_box用户选择登录时会话命令与XDG_SESSION_TYPE环境变量一起通过 src/client.rs 的 Unix Socket 交给 greetd 启动如果用户没选任何会话ReGreet 会回退到该用户的登录 Shell来自 AccountsService 的shell属性相关逻辑见 src/gui/model.rs。常见问题排查登录界面没有用户列表检查 AccountsService 是否运行systemctl status accounts-daemon。ReGreet 依赖系统 D-Bus 上的org.freedesktop.Accounts服务若该服务未启动用户列表将为空。会话下拉框是空的确认/usr/share/xsessions与/usr/share/wayland-sessions中存在.desktop文件且文件包含有效的Exec字段——缺少Exec的会话文件会被直接跳过。想增加自定义会话在任一XDG_DATA_DIRS包含的目录下创建xsessions/或wayland-sessions/子目录放入你的.desktop文件即可无需修改 ReGreet 配置。总结ReGreet 用两条清晰的技术路径解决了登录界面的数据来源问题D-Bus AccountsService 提供用户信息.desktop 文件解析提供会话信息。这种设计完全遵循 Linux 桌面生态的既有规范不发明私有格式因此能与几乎所有主流发行版和桌面环境无缝协作。理解了这套机制无论是排查登录问题还是自定义会话你都能做到心中有数。【免费下载链接】ReGreetClean and customizable greeter for greetd项目地址: https://gitcode.com/gh_mirrors/re/ReGreet创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

vue-star-rating 事件监听指南:update:rating 与 hover:rating 的实战用法

vue-star-rating 事件监听指南:update:rating 与 hover:rating 的实战用法

vue-star-rating 事件监听指南:update:rating 与 hover:rating 的实战用法 【免费下载链接】vue-star-rating :star: A simple, highly customisable star rating component for Vue 2.x. / 3.x 项目地址: https://gitcode.com/gh_mirrors/vu/vue-star-rating …

2026/8/20 20:08:12 阅读更多 →
书匠策AI:当ChatGPT学术版遇见AI5.0,论文写作从“孤军奋战”变成“有导航的旅程”

书匠策AI:当ChatGPT学术版遇见AI5.0,论文写作从“孤军奋战”变成“有导航的旅程”

官网:www.shujiangce.com | 微信公众号:书匠策AI 论文不是“写”出来的,是一关一关打通的。书匠策AI只是你手里那张“有攻略的地图”。 如果你正在为毕业论文焦头烂额,大概率听过类似的说法:“AI写的论文不能用&…

2026/8/20 20:08:12 阅读更多 →
meta-glasses-api 多 AI 提供商接入:OpenAI、Claude、Gemini、DeepSeek、Grok 一篇搞定

meta-glasses-api 多 AI 提供商接入:OpenAI、Claude、Gemini、DeepSeek、Grok 一篇搞定

meta-glasses-api 多 AI 提供商接入:OpenAI、Claude、Gemini、DeepSeek、Grok 一篇搞定 【免费下载链接】meta-glasses-api "Hey Meta send a message to ChatGPT" Mai: A Hacky Messenger browser extension & pseudo API for the Meta Glasses :ey…

2026/8/20 20:08:12 阅读更多 →

最新新闻

过滤规则并非越多越好:anti-anti-AD的误伤避坑与配置精简策略

过滤规则并非越多越好:anti-anti-AD的误伤避坑与配置精简策略

过滤规则并非越多越好:anti-anti-AD的误伤避坑与配置精简策略 【免费下载链接】anti-anti-AD 为什么不应使用antiAD去广告列表,以及选择更多优秀的替代品 项目地址: https://gitcode.com/gh_mirrors/an/anti-anti-AD 很多刚接触去广告的新手都有一…

2026/8/20 20:41:30 阅读更多 →
揭秘zebra_qwen3_7MLA21GDN_noT_SFT_1M_combined_fCE训练数据:5大SFT数据集如何炼成百万Token长上下文

揭秘zebra_qwen3_7MLA21GDN_noT_SFT_1M_combined_fCE训练数据:5大SFT数据集如何炼成百万Token长上下文

揭秘zebra_qwen3_7MLA21GDN_noT_SFT_1M_combined_fCE训练数据:5大SFT数据集如何炼成百万Token长上下文 【免费下载链接】zebra_qwen3_7MLA21GDN_noT_SFT_1M_combined_fCE 项目地址: https://ai.gitcode.com/hf_mirrors/amd/zebra_qwen3_7MLA21GDN_noT_SFT_1M_com…

2026/8/20 20:41:30 阅读更多 →
微信聊天记录终极备份指南:用WeChatMsg免费导出HTML、Word、CSV与年度报告

微信聊天记录终极备份指南:用WeChatMsg免费导出HTML、Word、CSV与年度报告

微信聊天记录终极备份指南:用WeChatMsg免费导出HTML、Word、CSV与年度报告 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHu…

2026/8/20 20:41:30 阅读更多 →
Word 转 PDF 完全指南:用 OfficeToPDF 处理模板、修订与批注的 8 个技巧

Word 转 PDF 完全指南:用 OfficeToPDF 处理模板、修订与批注的 8 个技巧

Word 转 PDF 完全指南:用 OfficeToPDF 处理模板、修订与批注的 8 个技巧 【免费下载链接】OfficeToPDF A command line tool to convert Microsoft Office documents to PDFs 项目地址: https://gitcode.com/gh_mirrors/of/OfficeToPDF 在日常办公中&#xf…

2026/8/20 20:41:30 阅读更多 →
Dragdealer 进阶实战:Canvas Mask 实现二维拖拽的全屏交互页面

Dragdealer 进阶实战:Canvas Mask 实现二维拖拽的全屏交互页面

Dragdealer 进阶实战:Canvas Mask 实现二维拖拽的全屏交互页面 【免费下载链接】dragdealer Drag-based vanilla JS component 项目地址: https://gitcode.com/gh_mirrors/dr/dragdealer 如果你正在寻找一个轻量级的二维拖拽方案,让用户像「掀开画…

2026/8/20 20:41:30 阅读更多 →
如何搭建Llama-3.1-8B-FP8-Dynamic环境?transformers安装避坑指南

如何搭建Llama-3.1-8B-FP8-Dynamic环境?transformers安装避坑指南

如何搭建Llama-3.1-8B-FP8-Dynamic环境?transformers安装避坑指南 【免费下载链接】Llama-3.1-8B-FP8-Dynamic 项目地址: https://ai.gitcode.com/hf_mirrors/unsloth/Llama-3.1-8B-FP8-Dynamic 想本地跑起 80 亿参数的大模型,又怕显存不够&…

2026/8/20 20:40:30 阅读更多 →

日新闻

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新变砖,“可维修”承诺遭遇芯片级维修考验!

Framework笔记本BIOS更新引“变砖”危机2026年7月7日,Framework向用户quantum5发送邮件,建议其安装BIOS 3.20更新。然而,更新后电脑出现严重问题,屏幕显示三角形和随机像素图案,风扇狂转,系统完全挂起。qua…

2026/8/20 0:00:46 阅读更多 →
2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!

2026还在担忧建站平台哪家好?手把手带你搭建自家网站!据艾瑞咨询发布的《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,同比增长18.7%。中国互联网络信息中心数据显示,截至2025年底…

2026/8/20 0:00:46 阅读更多 →
2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?

2026高端网站建设公司哪家好?怎么选才能不花冤枉钱?据艾瑞咨询《2026年中国企业数字化服务市场研究报告》,2025年国内网站建设市场规模已达896亿元,其中高端定制网站服务占比突破42%。更值得关注的是,91%的规模以上企业…

2026/8/20 0:00:46 阅读更多 →

周新闻

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

基于阿里云与通义千问(Qwen)构建AI应用:从模型调用到生产部署的完整实践指南

如果你是一名开发者,最近可能已经感受到了AI大模型正在从“玩具”变成“生产力工具”的强烈信号。从代码补全到智能Agent,从本地部署到云端API,我们正处在一个技术栈快速重构的节点。然而,面对层出不穷的模型、框架和工具&#xf…

2026/8/19 11:55:18 阅读更多 →
工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

工业通信系统底层逻辑:04 反射——高频能量撞墙之后会发生什么?

第四篇:反射——高频能量撞墙之后会发生什么? —— 你以为信号已经过去了,其实它正在回来打你 老Q的现场笔记 第五季,我们正式进入工业神经系统层。这里不再是单个设备的战斗,而是整个工厂“经脉”层面的秩序之战。从这一篇开始,你将第一次看清:看似简单的信号传播,背…

2026/8/19 9:46:27 阅读更多 →
【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

【文章复现】非线性值迭代自适应动态规划(ADP):离散时间非线性系统的策略迭代自适应动态规划算法研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…

2026/8/19 11:55:16 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/20 6:11:08 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/19 7:42:22 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/19 11:55:13 阅读更多 →