ubuntu默认不支持自动切换锁屏壁纸,因gsettings仅设单张静态图且screensaver模块不重载uri;可行方案是用change-gdm-background脚本配合cron定时修改gdm背景,并需sudo权限、绝对路径及适时重启gdm3。

Ubuntu 默认不支持“自动切换锁屏壁纸”——gsettings 只能设单张静态图,org.gnome.desktop.screensaver picture-uri 不接受幻灯片路径或定时轮换逻辑。所谓“自动锁屏壁纸”,本质是绕过 GNOME 屏保机制,用 GDM(登录/锁屏界面)背景 + 定时脚本模拟实现。
为什么 gsettings set org.gnome.desktop.screensaver picture-uri 不能自动换图
GNOME 的 screensaver 模块只读取一个 URI,每次锁屏都加载同一张图;它不解析 XML 幻灯片定义,也不监听文件变动。即使你把 picture-uri 指向一个符号链接并定期更新目标,GNOME 也不会重载——锁屏进程启动后就缓存了该 URI 对应的图像数据,重启 GDM 才会生效。
真正可行的方案:用 change-gdm-background 脚本配合 cron 定时切换
这个方案修改的是 GDM 的背景(即登录页和锁屏页共用的底层背景),不是 screensaver 设置。它直接写入 /etc/gdm3/greeter.dconf-defaults 并调用 dconf update,强制刷新 GDM 渲染层。
PostgreSQL 18.4 官方 Ubuntu 安装包现已发布,这是目前最新的稳定版本。推荐通过官方 APT 仓库安装:先执行 sudo apt update 更新索引,再运行 sudo apt install postgresql-18 即可完成部署。新版本引入了异步 I/O 子系统,在顺序扫描与 VACUUM 场景下性能提升显著,同时支持 UUID v7 原生生成函数与虚拟生成列。
- 先确保已安装依赖:
sudo apt install dconf-cli gdm3 - 下载脚本:
wget https://github.com/thiggy01/change-gdm-background/raw/master/change-gdm-background - 赋予执行权限:
chmod +x change-gdm-background - 准备壁纸目录(如
~/wallpapers/lock),确保所有图片尺寸一致(推荐 1920×1080 或适配你屏幕的分辨率) - 写一个切换脚本(例如
~/bin/rotate-gdm-wallpaper):
#!/bin/bash
WALL_DIR="$HOME/wallpapers/lock"
PICS=($WALL_DIR/*.jpg $WALL_DIR/*.png)
if [ ${#PICS[@]} -eq 0 ]; then exit 1; fi
RAND_PIC=${PICS[$RANDOM % ${#PICS[@]}]}
sudo ./change-gdm-background "$RAND_PIC"
- 添加到 cron(每 2 小时换一次):
crontab -e,加一行:0 */2 * * * /home/yourname/bin/rotate-gdm-wallpaper > /dev/null 2>&1 - 执行一次手动触发:
sudo ~/bin/rotate-gdm-wallpaper,然后sudo systemctl restart gdm3确认生效
容易踩的坑:权限、路径、GDM 重启时机
常见错误现象包括:锁屏没变、显示默认灰色、甚至无法解锁。
-
change-gdm-background必须用sudo运行,否则写不进/etc/gdm3/ - 图片路径必须是绝对路径,且 GDM 进程需有读取权限(避免放在
~下但未设置 group 权限;建议用/usr/share/backgrounds/或/var/lib/gdm3/) - 不要在用户会话里直接
sudo systemctl restart gdm3—— 这会杀死当前桌面;应在 TTY(Ctrl+Alt+F2)下操作,或改用sudo systemctl reload gdm3(部分版本支持) - Ubuntu 24.04+ 使用
gdm3而非gdm,脚本中若硬编码 service 名会失败 - 如果锁屏后仍显示旧图,检查
gsettings get org.gnome.desktop.screensaver picture-uri是否被意外覆盖回空值——GDM 和 screensaver 设置互不干扰,但某些主题脚本会误清它
真正的难点不在脚本本身,而在于 GDM 配置的持久性:每次系统升级可能重置 /etc/gdm3/greeter.dconf-defaults,你需要把壁纸切换逻辑封装成 systemd service 或打包进 deb 才算稳定。临时方案跑得通,长期维护就得盯住 dpkg 冲突和 dconf 数据库合并规则。










