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使用記