目标与边界 机器:Debian 13(trixie)+ XFCE ,原先用 LightDM + lightdm-gtk-greeter 。
要做的事:
登录界面换成 GDM3 (只要登录页,不 换 GNOME 桌面) 登录后仍进 Xfce Session 能用图形工具调登录页外观(壁纸等) 搞清楚 登录头像 改哪里、为什么 Mugshot / 只改 ~/.face 不生效 明确不做(本文范围外):
不装 WhiteSur / macOS 风 GDM 主题(可以后再加) 不卸载 LightDM 包(方便回退) 桌面侧其它整理可对照:Debian 13 XFCE 开发机整理:熄屏、软件源、全局菜单与防火墙 。
先备份 bash
复制 1 sudo cp -a /etc/X11/default-display-manager \
2 /etc/X11/default-display-manager.bak.$( date +%Y%m%d%H%M%S)
3 sudo cp -a /etc/lightdm/lightdm.conf \
4 /etc/lightdm/lightdm.conf.bak.$( date +%Y%m%d%H%M%S) sudo cp -a /etc/X11/default-display-manager \
/etc/X11/default-display-manager.bak.$(date +%Y%m%d%H%M%S)
sudo cp -a /etc/lightdm/lightdm.conf \
/etc/lightdm/lightdm.conf.bak.$(date +%Y%m%d%H%M%S)展开全部 确认当前 DM 与 XFCE 会话文件存在:
bash
复制 1 cat /etc/X11/default-display-manager
2 # 常见:/usr/sbin/lightdm
3
4 ls /usr/share/xsessions/
5 # 应有 xfce.desktop cat /etc/X11/default-display-manager
# 常见:/usr/sbin/lightdm
ls /usr/share/xsessions/
# 应有 xfce.desktop展开全部 安装 GDM:注意混源 / 过新库 理想情况(纯 trixie) 图形桌面里执行即可,不必 先切救援模式或纯命令行:
bash
复制 1 sudo apt-get update
2 sudo apt-get install -y --no-install-recommends gdm3 sudo apt-get update
sudo apt-get install -y --no-install-recommends gdm3展开全部 若弹出「默认显示管理器」,选 gdm3 。未弹出则:
bash
复制 1 echo /usr/sbin/gdm3 | sudo tee /etc/X11/default-display-manager
2 sudo DEBIAN_FRONTEND = noninteractive dpkg-reconfigure -f noninteractive gdm3 echo /usr/sbin/gdm3 | sudo tee /etc/X11/default-display-manager
sudo DEBIAN_FRONTEND=noninteractive dpkg-reconfigure -f noninteractive gdm3展开全部 bash
复制 1 sudo systemctl enable gdm.service # 或 gdm3.service,视包而定
2 sudo systemctl disable lightdm.service sudo systemctl enable gdm.service # 或 gdm3.service,视包而定
sudo systemctl disable lightdm.service展开全部 确认:
bash
复制 1 cat /etc/X11/default-display-manager # → /usr/sbin/gdm3
2 readlink -f /etc/systemd/system/display-manager.service
3 # → .../gdm.service
4 test -f /usr/share/xsessions/xfce.desktop && echo xfce OKcat /etc/X11/default-display-manager # → /usr/sbin/gdm3
readlink -f /etc/systemd/system/display-manager.service
# → .../gdm.service
test -f /usr/share/xsessions/xfce.desktop && echo xfce OK展开全部 然后 重启 (比只注销稳):
bash
复制 sudo reboot展开全部 登录页若出现会话菜单,选 Xfce Session 。
本机踩坑:glib / heif / xkb 比 trixie 新 若机器上曾混过 sid 包(例如 libglib2.0 / gir1.2-glib-2.0 已是 2.89.x),直接装 trixie 的 gdm3 常会失败,典型报错类似:
gdm3 → 依赖 gnome-shelllibgjs0g 与现有 gir1.2-glib-2.0 Breaks libheif1 过新导致 heif-thumbnailer / gnome-control-center 装不上libxkbcommon0 版本与 libxkbregistry0 对不上不要 为装 GDM 盲目把整套 glib/gtk4 降级 回 trixie——容易把已能用的桌面、Cursor 等拖垮。
可行做法之一(与本机一致时):临时 用 sid 装与当前新库匹配的 gdm3,装完再去掉 sid 源,避免以后 apt upgrade 整桌面滚飞:
bash
复制 1 # 临时 sid(优先级压低)
2 echo 'deb https://mirrors.bfsu.edu.cn/debian sid main contrib non-free non-free-firmware' \
3 | sudo tee /etc/apt/sources.list.d/sid-temp.list
4
5 sudo tee /etc/apt/preferences.d/sid-temp >/dev/null <<'EOF'
6 Package: *
7 Pin: release a=unstable
8 Pin-Priority: 100
9 EOF
10
11 sudo apt-get update
12 echo 'gdm3 shared/default-x-display-manager select gdm3' | sudo debconf-set-selections
13 sudo DEBIAN_FRONTEND = noninteractive apt-get install -y --no-install-recommends -t sid gdm3
14
15 echo /usr/sbin/gdm3 | sudo tee /etc/X11/default-display-manager
16 sudo systemctl disable lightdm.service || true
17 # display-manager.service 应指向 gdm
18
19 # 用完立刻删临时源,降低误升级风险
20 sudo rm -f /etc/apt/sources.list.d/sid-temp.list /etc/apt/preferences.d/sid-temp
21 sudo apt-get update # 临时 sid(优先级压低)
echo 'deb https://mirrors.bfsu.edu.cn/debian sid main contrib non-free non-free-firmware' \
| sudo tee /etc/apt/sources.list.d/sid-temp.list
sudo tee /etc/apt/preferences.d/sid-temp >/dev/null <<'EOF'
Package: *
Pin: release a=unstable
Pin-Priority: 100
EOF
sudo apt-get update
echo 'gdm3 shared/default-x-display-manager select gdm3' | sudo debconf-set-selections
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends -t sid gdm3
echo /usr/sbin/gdm3 | sudo tee /etc/X11/default-display-manager
sudo systemctl disable lightdm.service || true
# display-manager.service 应指向 gdm
# 用完立刻删临时源,降低误升级风险
sudo rm -f /etc/apt/sources.list.d/sid-temp.list /etc/apt/preferences.d/sid-temp
sudo apt-get update展开全部 这会拉上 gnome-shell 等一批依赖,体积不小;桌面日常仍用 XFCE,只是登录器用 GDM。混源系统请自己评估风险。
重启后:不选 Session 进不去 现象 GDM 登录页必须手动选会话,否则登不上或进奇怪会话。
原因 默认会话还停在 LightDM 时代的 lightdm-xsession :
~/.dmrc 里可能是 Session=lightdm-xsessionAccountsService 里 Session / XSession 也可能是它 /usr/share/xsessions/lightdm-xsession.desktop 的 Exec=default,对 GDM 基本不可用当前会话环境也可能显示:
bash
复制 1 echo " $DESKTOP_SESSION " # 曾出现 lightdm-xsession echo "$DESKTOP_SESSION" # 曾出现 lightdm-xsession展开全部 修复:默认改为 xfce bash
复制 1 # 1) 用户 dmrc
2 printf '%s\n' '[Desktop]' 'Session=xfce' > ~/.dmrc
3
4 # 2) AccountsService(把 charlie 换成你的用户名)
5 sudo tee /var/lib/AccountsService/users/charlie >/dev/null <<'EOF'
6 [User]
7 Session=xfce
8 XSession=xfce
9 Icon=/var/lib/AccountsService/icons/charlie
10 SystemAccount=false
11 EOF
12 sudo chmod 600 /var/lib/AccountsService/users/charlie
13 sudo systemctl restart accounts-daemon
14
15 # 3) 也可用 D-Bus(uid 按 id -u)
16 busctl call org.freedesktop.Accounts \
17 /org/freedesktop/Accounts/User$( id -u) \
18 org.freedesktop.Accounts.User SetXSession s xfce # 1) 用户 dmrc
printf '%s\n' '[Desktop]' 'Session=xfce' > ~/.dmrc
# 2) AccountsService(把 charlie 换成你的用户名)
sudo tee /var/lib/AccountsService/users/charlie >/dev/null <<'EOF'
[User]
Session=xfce
XSession=xfce
Icon=/var/lib/AccountsService/icons/charlie
SystemAccount=false
EOF
sudo chmod 600 /var/lib/AccountsService/users/charlie
sudo systemctl restart accounts-daemon
# 3) 也可用 D-Bus(uid 按 id -u)
busctl call org.freedesktop.Accounts \
/org/freedesktop/Accounts/User$(id -u) \
org.freedesktop.Accounts.User SetXSession s xfce展开全部 隐藏失效的 Default Xsession 避免下次再点错:
bash
复制 1 echo 'Hidden=true' | sudo tee -a /usr/share/xsessions/lightdm-xsession.desktop
2 echo 'NoDisplay=true' | sudo tee -a /usr/share/xsessions/lightdm-xsession.desktopecho 'Hidden=true' | sudo tee -a /usr/share/xsessions/lightdm-xsession.desktop
echo 'NoDisplay=true' | sudo tee -a /usr/share/xsessions/lightdm-xsession.desktop展开全部 之后登录页可直接输密码;若仍出现会话菜单,选一次 Xfce Session ,一般会记住。
GDM 图形配置:GDM Settings GDM 没有 像「控制中心里完整登录页编辑器」的官方小面板;实用方案是 Flatpak GDM Settings :
bash
复制 1 flatpak install -y flathub io.github.realmazharhussain.GdmSettings flatpak install -y flathub io.github.realmazharhussain.GdmSettings展开全部 启动:
bash
复制 1 flatpak run io.github.realmazharhussain.GdmSettings flatpak run io.github.realmazharhussain.GdmSettings展开全部 或在应用菜单搜 GDM Settings 。
可改:外观 / 字体 / 顶栏 / 登录页壁纸与 logo / 电源相关等。改登录页配置通常要提权;点 Apply 后注销到登录页看效果。
注意:GDM Settings 不能改用户头像 (Appearance 只管主题/壁纸一类)。
登录页用户头像 头像实际读哪里 路径 作用 ~/.face / ~/.face.icon用户目录头像,很多工具会写这里 /var/lib/AccountsService/icons/<用户名>GDM 可靠读取的位置 /var/lib/AccountsService/users/<用户名> 里的 Icon=告诉 AccountsService / GDM 用哪张图
查看:
bash
复制 1 ls -la ~/.face
2 grep ^Icon= /var/lib/AccountsService/users/$( whoami) # 可能需 sudo
3 ls -la /var/lib/AccountsService/icons/
4 busctl get-property org.freedesktop.Accounts \
5 /org/freedesktop/Accounts/User$( id -u) \
6 org.freedesktop.Accounts.User IconFile ls -la ~/.face
grep ^Icon= /var/lib/AccountsService/users/$(whoami) # 可能需 sudo
ls -la /var/lib/AccountsService/icons/
busctl get-property org.freedesktop.Accounts \
/org/freedesktop/Accounts/User$(id -u) \
org.freedesktop.Accounts.User IconFile展开全部 为什么只改 ~/.face / 用 Mugshot「没用」 常见两层原因(本机都遇到过):
家目录权限是 700(drwx------) GDM 进程用户是 Debian-gdm,进不了 /home/你的用户,自然读不到 ~/.face。 即使用 Mugshot 成功写入了 .face,登录页仍是旧图或默认图。
图太大 AccountsService 的 SetIconFile 会拒过大文件(例如 1080×1080、1.7MB 级 PNG),报错类似:file '...' is too large to be used as an icon 建议缩到约 256×256 、体积几十 KB 量级(JPEG 即可)。
因此:不要依赖「只改家目录 .face」 ;要同步到 AccountsService 图标目录,并保证 Debian-gdm 对该路径可读(系统目录 644 即可)。
Mugshot 会拉 cheese/clutter 等依赖;若不想污染环境,用下面手动步骤即可,不必装 Mugshot。
以后更换头像(推荐步骤) 把 你的图.jpg、用户名换成自己的:
bash
复制 1 # 1) 缩放(有 ImageMagick / ffmpeg / 带 PIL 的 python 任一即可)
2 # 示例:python3 + Pillow
3 python3 - <<'PY'
4 from PIL import Image
5 im = Image.open("你的图.jpg").convert("RGB")
6 im = im.resize((256, 256), Image.Resampling.LANCZOS)
7 im.save("/tmp/face.jpg", "JPEG", quality=85, optimize=True)
8 print("ok")
9 PY
10
11 # 2) 用户目录备份一份(可选)
12 cp /tmp/face.jpg ~/.face
13
14 # 3) 写入 GDM 可读路径并登记
15 sudo install -d -m 755 /var/lib/AccountsService/icons
16 sudo install -m 644 /tmp/face.jpg /var/lib/AccountsService/icons/charlie
17 sudo sed -i 's|^Icon=.*|Icon=/var/lib/AccountsService/icons/charlie|' \
18 /var/lib/AccountsService/users/charlie
19 # 若没有 Icon= 行,用编辑器在 [User] 下加一行 Icon=...
20
21 sudo busctl call org.freedesktop.Accounts \
22 /org/freedesktop/Accounts/User$( id -u) \
23 org.freedesktop.Accounts.User SetIconFile s \
24 /var/lib/AccountsService/icons/charlie
25
26 # 4) 注销到登录页查看(一般不用重启) # 1) 缩放(有 ImageMagick / ffmpeg / 带 PIL 的 python 任一即可)
# 示例:python3 + Pillow
python3 - <<'PY'
from PIL import Image
im = Image.open("你的图.jpg").convert("RGB")
im = im.resize((256, 256), Image.Resampling.LANCZOS)
im.save("/tmp/face.jpg", "JPEG", quality=85, optimize=True)
print("ok")
PY
# 2) 用户目录备份一份(可选)
cp /tmp/face.jpg ~/.face
# 3) 写入 GDM 可读路径并登记
sudo install -d -m 755 /var/lib/AccountsService/icons
sudo install -m 644 /tmp/face.jpg /var/lib/AccountsService/icons/charlie
sudo sed -i 's|^Icon=.*|Icon=/var/lib/AccountsService/icons/charlie|' \
/var/lib/AccountsService/users/charlie
# 若没有 Icon= 行,用编辑器在 [User] 下加一行 Icon=...
sudo busctl call org.freedesktop.Accounts \
/org/freedesktop/Accounts/User$(id -u) \
org.freedesktop.Accounts.User SetIconFile s \
/var/lib/AccountsService/icons/charlie
# 4) 注销到登录页查看(一般不用重启)展开全部 也可用「GNOME 设置 → 用户」点头像;若只更新了 ~/.face、登录页没变,仍按上面把图拷到 /var/lib/AccountsService/icons/。
不建议的「永久自动化」 用 systemd path 监听 ~/.face 再 sudo 同步、或为缩放再装一堆图像库,容易引入多余依赖、搞乱环境。开发机更稳妥是:换头像时跑一遍上面的小段命令 。
回退到 LightDM(GDM 起不来时) Ctrl+Alt+F3 登录后:
bash
复制 1 echo /usr/sbin/lightdm | sudo tee /etc/X11/default-display-manager
2 sudo apt-get install -y --reinstall lightdm
3 sudo systemctl enable lightdm
4 sudo systemctl disable gdm.service 2>/dev/null || sudo systemctl disable gdm3.service 2>/dev/null || true
5 sudo reboot echo /usr/sbin/lightdm | sudo tee /etc/X11/default-display-manager
sudo apt-get install -y --reinstall lightdm
sudo systemctl enable lightdm
sudo systemctl disable gdm.service 2>/dev/null || sudo systemctl disable gdm3.service 2>/dev/null || true
sudo reboot展开全部 LightDM 包平时可保留,不必为换 GDM 卸载。
检查清单 换 GDM 后建议确认:
bash
复制 1 cat /etc/X11/default-display-manager # gdm3
2 test -f /usr/share/xsessions/xfce.desktop && echo xfce
3 grep -E '^(Session|XSession|Icon)=' /var/lib/AccountsService/users/$( whoami) # 可能需 sudo
4 cat ~/.dmrc # Session=xfce
5 flatpak info io.github.realmazharhussain.GdmSettings 2>/dev/null | head -5 cat /etc/X11/default-display-manager # gdm3
test -f /usr/share/xsessions/xfce.desktop && echo xfce
grep -E '^(Session|XSession|Icon)=' /var/lib/AccountsService/users/$(whoami) # 可能需 sudo
cat ~/.dmrc # Session=xfce
flatpak info io.github.realmazharhussain.GdmSettings 2>/dev/null | head -5展开全部 登录页:
End 项目 结论 登录器 LightDM → GDM3;桌面仍用 XFCE 默认会话 必须改成 xfce,去掉/隐藏 lightdm-xsession 登录页 GUI Flatpak GDM Settings ;不改头像 头像 写入 /var/lib/AccountsService/icons/<用户> + Icon=;注意家目录 700 与图片体积
纯 trixie 环境优先用仓库里的 gdm3;若已混 sid 新库,再考虑临时 sid 安装并立刻撤源,避免为降级把现有桌面拆坏。