greetd和regreet使用教程
显示管理器(或登录管理器)常见的有 LightDM、GDM、Ly 等,大部分是用 C 写的,往往只支持图形界面或者命令行界面。greetd 是 rust 写的,支持 wayland,同时支持命令行和图形界面(greeter)。
本文介绍在 labwc 环境下,使用 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,那样的话,理解不深入的用户可能会非常生气,因为系统都进入不了。
但是,人非机器,通常配置等操作容易弄错,一旦你遇到 无法登录图形界面
的时候。
-
- 记得按
Ctrl + Alt + F1~F7
,一般系统有 7 个 tty,假设你当前在 tty2 崩了,按Ctr + alt + F1
切换到 tty1, 输入用户名密码,此时还能进入终端界面,想办法修复错误就好了。
- 记得按
-
- 如果你实在修复不了,也不想折腾了,不要慌张,重新安装回原来的 login manager 即可,假设是 Gnome 环境:
1sudo apt reinstall gdm3
这好比在外受到了伤害,喊爸妈要回家,不玩了,摊牌了。
-
-
头铁还想继续,但是 1 步骤都不管用,这种状况真的很崩溃,就是无限循环停留在那个界面,重启也没有用。
这种事情我在折腾 LightDM 的时候遇到过,一瞬间被吓得手足无错,毕竟电脑什么都操作不了,和废铁砖头一样。
其实这个时候,还是有得抢救的:
就是使用另外一台电脑 ssh 远程登录
。如果你 sshd 远程登录都没开,那估计只能引导盘挂载文件系统抢救了,比较费时间(此时,ip 地址通过路由器/抓包等方式查看)。
-
总之,login manager 还是选稳一点的比较好,毕竟没有人想把自己锁外面,但也不要过于害怕,一般来说 1 和 2 能拯救你了,有的 login manager 还有调试模式。只是为了世上少些烦恼,我把个人经验分享出来,或许能帮到有缘人。
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。
相关文章:
- Wayland 环境下gif录屏
- 我的工具箱
- 应用启动器yofi使用配置
- Xray科学上网简要
- Ubuntu安装chrome的方法总结
- Linux安装最新版本Python
- lvs端部署
- alacritty 终端使用
- Labwc 便捷配置
- 窗口管理器labwc使用记