惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

The Hacker News
The Hacker News
D
Docker
GbyAI
GbyAI
Y
Y Combinator Blog
C
Check Point Blog
M
MIT News - Artificial intelligence
Martin Fowler
Martin Fowler
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Blog — PlanetScale
Blog — PlanetScale
P
Palo Alto Networks Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
V
Vulnerabilities – Threatpost
I
InfoQ
Simon Willison's Weblog
Simon Willison's Weblog
博客园_首页
T
Threat Research - Cisco Blogs
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
The Register - Security
The Register - Security
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
阮一峰的网络日志
阮一峰的网络日志
O
OpenAI News
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
Forbes - Security
Forbes - Security
AWS News Blog
AWS News Blog
雷峰网
雷峰网
博客园 - 三生石上(FineUI控件)
S
Security Affairs
H
Heimdal Security Blog
Engineering at Meta
Engineering at Meta
T
Troy Hunt's Blog
T
Tenable Blog
MongoDB | Blog
MongoDB | Blog
H
Hacker News: Front Page
IT之家
IT之家
N
News and Events Feed by Topic
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
S
Secure Thoughts
U
Unit 42
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
NISL@THU
NISL@THU
T
The Blog of Author Tim Ferriss

mephisto.cc

修复rime-ice无法弹出候选框的问题 开机滚动字体显示优化 个人网站安全防护 树莓派上部署Vaultwarden 使用goaccess实时分析Caddy日志 个人网站监控 Hugo全站AVIF记 Linux下尝试使用Godot开发小游戏 Arch linux dae 透明代理 Airflow接管galler-dl下载任务 如何使用gallery-dl批量下载图像 Arch核显下如何愉快玩Dota2和CS2 Arch/labwc 环境网络相关设置 Rime添加dota2词库 Arch 重装记录 Supertuxkart iOS版终于发布了 打造自己的流媒体音乐服务 剪切板管理工具clipcat推荐 MangoHud性能监控 微信小程序开发记 Rofi试用 解决Arch下VSCode无法输入中文的问题 独立窗口管理器下无法录屏问题处理 上海市二手房成交数据监控 OpenLDAP监控 Arch linux如何顺畅连接蓝牙设备 使用Git和Ansible管理配置文件 Arch Linux SSL VPN 客户端配置 简单获取celery任务实时结果 Arch linux下iNode客户端的安装和使用方法 券商费率调整记 迷你主机组装记 Labwc更换定制皮肤 树莓派跑分流代理 实用自动代理配置示例 九年老鼠标复活记 Openvpn示例 Mac下如何旋转webp图片 如何隐藏Vscode中Markdown PDF插件的头部内容 解决Linux下网络配置无法变更保存的问题 labwc环境启用wlogout Ubuntu下新官方微信尝鲜 简单检测用户是否开启广告屏蔽 Atuin ZFS下卡顿问题解决 Wine安装64位微信 Fish 和 Atuin使用记 Fastapi简单实现临时下载链接 Fastapi微信公众号开发简要 Hugo根据语种展示不同内容 如何修复Waybar微信图标错误 信封加密简要 Linux环境下维护公众号记录 快速隐藏和呼出终端 Wayland环境自动切换壁纸 SuperTuxKart 试玩 简单抓取雪球股票快讯 为什么你的kill命令不能列出信号表 Wine安装微信保姆教程 Hysteria科学上网简要 Ubuntu 23.10 钉钉无法启动解决方法 网站导航栏防止插入Adsense自动广告 Linux环境按键检测 Hugo文末添加最后修改时间 Wayland环境ksnip无法复制问题解决 我眼中的股票市场 Caddy简单图片防盗链 Wayland环境下截图加后期修改 Wayland 环境下gif录屏 Firefox的一些有趣功能 Ubuntu 切换系统语言 Firefox 标题栏高度调整 网站添加回到顶部功能 Hugo自定义字体 Labwc 便捷配置 Wofi使用教程 窗口管理器labwc使用记 文件共享软件Dufs推荐 Hugo静态站点接入Adsense广告 Fcitx5配置详解 Ubuntu安装chrome的方法总结 一种Xterm.js的全屏方案 Google网址收录api Python示例 手机听离线音乐 Snipe it资产导入 应用启动器yofi使用配置 Snipe it资产管理系统安装使用 Ubuntu开机启动加速 Vue3 vite TypeScript跨域等相关设置 Ubuntu手动升级Libreoffice Ubuntu设置alacritty为默认终端 简体文章批量转换为繁体 使用Inkscape调整svg图片大小 实用命令 使用mitmproxy给手机app抓包 Python中rstrip方法细解 Github同主机多仓库部署deploy key问题处理 Linux安装最新版本Python KeePassXC使用教程 Ubuntu 22.10连接蓝牙耳机报错br-connection-profile-unavailable解决方法 Caddy日志配置轮转和格式化
greetd和regreet使用教程
2023-08-25 · via mephisto.cc

显示管理器(或登录管理器)常见的有 LightDM、GDM、Ly 等,大部分是用 C 写的,往往只支持图形界面或者命令行界面。greetd 是 rust 写的,支持 wayland,同时支持命令行和图形界面(greeter)。

本文介绍在 labwc 环境下,使用 greetdregreet完成启动环境配置。

最终效果图示:

greetd-regreet

greetd 诞生已经好几年了,初次提交 2019 年:

1commit 2571da3772ff3219af1ccfce169bcaab5603501f
2Author: Kenny Levinsen <kl@kl.wtf>
3Date:   Tue Sep 10 00:36:35 2019 +0200
4
5    Initial commit

应该是目前唯一同时支持 console and graphical greeters 的。

regreet 也是 rust 写的,诞生不久,看了下感觉还不错。

在体验 2 者的组合前,我主要使用 gdm3 和 ly,二者寡淡无味,Gnome 相关的东西都限制得死死的。

话不多说,下面是操作过程。

1. greetd 手动安装

源码下载来后,和其它 rust 应用一样安装非常方便:

 1# Compile greetd and agreety.
 2cargo build --release
 3
 4# Put things into place
 5sudo cp target/release/{greetd,agreety} /usr/local/bin/
 6sudo cp greetd.service /etc/systemd/system/greetd.service
 7mkdir /etc/greetd
 8cp config.toml /etc/greetd/config.toml
 9
10# Create the greeter user
11sudo useradd -M -G video greeter
12sudo chmod -R go+r /etc/greetd/
13
14# Look in the configuration file `/etc/greetd/config.toml` and edit as appropriate.
15# When done, enable and start greetd
16systemctl enable --now greetd

安装完成后,核对下,会自动关联到 display-manager.service,ly、gdm3 等都是相同逻辑。意为 Linux 系统启动后,最后会运行 greed 服务,再由 greed 去召唤 greeter。

1➜ ls -al /etc/systemd/system/display-manager.service
2lrwxrwxrwx 1 root root 34 Aug 24 15:18 /etc/systemd/system/display-manager.service -> /etc/systemd/system/greetd.service

此时先不要重启系统,后续再说明原因。

2. 安装 regreet

下载源码后,直接编译。

1cargo build --all-features --release

复制出命令供系统使用

1sudo cp target/release/regreet /usr/bin/regreet

如果你还要设置其它的,请查看项目的 readme 文档,本文只介绍核心步骤。

3. 配置文件

greed 和 regreet 的配置文件都在:

 1➜  greetd ls
 2config.toml  regreet.css  regreet.toml
 3➜  greetd pwd
 4/etc/greetd
 5➜  greetd cat config.toml
 6[terminal]
 7# The VT to run the greeter on. Can be "next", "current" or a number
 8# designating the VT.
 9vt = 1
10
11# The default session, also known as the greeter.
12[default_session]
13
14# `agreety` is the bundled agetty/login-lookalike. You can replace `/bin/sh`
15# with whatever you want started, such as `sway`.
16# command = "agreety --cmd /bin/sh"
17command = "labwc -s regreet"
18
19# The user to run the command as. The privileges this user must have depends
20# on the greeter. A graphical greeter may for example require the user to be
21# in the `video` group.
22user = "greeter"
23➜  greetd cat regreet.toml
24# SPDX-FileCopyrightText: 2022 Harish Rajagopal <harish.rajagopals@gmail.com>
25#
26# SPDX-License-Identifier: GPL-3.0-or-later
27
28[background]
29# Path to the background image
30# path = "/usr/share/backgrounds/greeter.jpg"
31path = "/usr/share/backgrounds/guilin.jpg"
32
33# How the background image covers the screen if the aspect ratio doesn't match
34# Available values: "Fill", "Contain", "Cover", "ScaleDown"
35# Refer to: https://docs.gtk.org/gtk4/enum.ContentFit.html
36# NOTE: This is ignored if ReGreet isn't compiled with GTK v4.8 support.
37fit = "Contain"
38
39# The entries defined in this section will be passed to the session as environment variables when it is started
40[env]
41ENV_VARIABLE = "value"
42
43[GTK]
44# Whether to use the dark theme
45application_prefer_dark_theme = true
46
47# Cursor theme name
48cursor_theme_name = "Adwaita"
49
50# Font name and size
51font_name = "Cantarell 16"
52
53# Icon theme name
54#icon_theme_name = "Adwaita"
55icon_theme_name = "Papirus"
56
57# GTK theme name
58#theme_name = "Adwaita"
59theme_name = "Orchis-Green"
60
61[commands]
62# The command used to reboot the system
63reboot = [ "systemctl", "reboot" ]
64
65# The command used to shut down the system
66poweroff = [ "systemctl", "poweroff" ]

config.toml 是 greetd 的配置文件,regreet.tom 是 regreet 的配置文件。可参考我的配置

配置项看注释都非常清楚,唯一值得说明的是 command = "labwc -s regreet", 这是我摸索出来的。如果你不是 labwc 环境(比如你用 sway),要去查看 greetd 的文档怎么设置。

regreet.css 我测试了下,并没有生效,默认的颜值就可以了。

可能有的读者不理解 login manager 和 greeter 的区别。

很多 login manager 和 greeter 是捆绑在一起的,比如 gdm3。

有些就是分开的,像 lightDM 这个 login manager 就需要 greeter 来配合使用。从上面 login manager 和 greeter 配置文件中还是能看出来作用差别的。 login manager 负责系统启动后使用那个 VT(tty1~tty7), 执行什么命令启动后续程序;greeter 就是选择 X/wayland 环境,给用户输入密码等一些外在的和用户交互的页面功能,greeter 总会让我联想到酒店的前台,有服务员和一个黄山迎客松的画作等。如果实在理解不了,忽略差别,反正就是系统让你进入 Gnome/KDE/Labwc 等的最后一步。

拯救世界

最后,配置 login manager 还是有风险的,开始配置 greetd 的时候不让重启是因为,你可能还没有配置 greeter,那样的话,理解不深入的用户可能会非常生气,因为系统都进入不了。

但是,人非机器,通常配置等操作容易弄错,一旦你遇到 无法登录图形界面 的时候。

    1. 记得按 Ctrl + Alt + F1~F7,一般系统有 7 个 tty,假设你当前在 tty2 崩了,按Ctr + alt + F1切换到 tty1, 输入用户名密码,此时还能进入终端界面,想办法修复错误就好了。
    1. 如果你实在修复不了,也不想折腾了,不要慌张,重新安装回原来的 login manager 即可,假设是 Gnome 环境:

    这好比在外受到了伤害,喊爸妈要回家,不玩了,摊牌了。

    1. 头铁还想继续,但是 1 步骤都不管用,这种状况真的很崩溃,就是无限循环停留在那个界面,重启也没有用。

      这种事情我在折腾 LightDM 的时候遇到过,一瞬间被吓得手足无错,毕竟电脑什么都操作不了,和废铁砖头一样。

      其实这个时候,还是有得抢救的:就是使用另外一台电脑 ssh 远程登录。如果你 sshd 远程登录都没开,那估计只能引导盘挂载文件系统抢救了,比较费时间(此时,ip 地址通过路由器/抓包等方式查看)。

总之,login manager 还是选稳一点的比较好,毕竟没有人想把自己锁外面,但也不要过于害怕,一般来说 1 和 2 能拯救你了,有的 login manager 还有调试模式。只是为了世上少些烦恼,我把个人经验分享出来,或许能帮到有缘人。