Debian 13 XFCE 开发机整理:熄屏、软件源、全局菜单与防火墙
机器是一台日常开发本:Debian GNU/Linux 13 (trixie) + XFCE,硬件是 HP ProBook,双 NVMe,本机还跑着 Docker(MySQL / Redis / Portainer 等)。
先说场景
机器是一台日常开发本:Debian GNU/Linux 13 (trixie) + XFCE,硬件是 HP ProBook,双 NVMe,本机还跑着 Docker(MySQL / Redis / Portainer 等)。
一次顺手整理,把几件容易踩坑的事一起做完:
- 关掉自动熄屏 / 挂起(插电、电池都关)
- 看清「要不要更新」,以及为什么
apt会甩出一千多个可升级包 - 注释掉
sid/bullseye混源,只做安全范围内的升级 - 弄清 XApp / AppMenu,装上全局菜单并让它对齐、能导出菜单
- 看资源占用,给开发机开防火墙(默认不让别的设备访问)
下面按实际操作顺序写,命令可直接复用。
XFCE:关掉自动熄屏和挂起
电源管理 GUI
打开:
重点看两个标签,且 On battery / Plugged in 都要改:
- System:
When inactive for→ Never - Display:
Put to sleep after/Switch off after→ Never
更干净的做法:直接关掉 Display power management 总开关
Devices 标签只显示电池信息,没有熄屏相关选项。
屏保
本机没有 xfce4-screensaver(command not found 很正常),可以忽略。真正黑屏多半来自电源管理或 DPMS。
DPMS(硬件级熄屏)
终端立刻关掉:
想开机也生效:在 设置 → 会话和启动 → 应用程序自动启动 加一条:
也可用 xfconf 关掉电源管理侧的 DPMS:
系统要不要更新:先看源,再看数量
表面现象
一度出现 一千多个 可升级包,内核候选版本甚至从 6.12 跳到 7.x。这不是「trixie 落后很多」,而是软件源混了。
实际系统状态(整理前)
| 项 | 状态 |
|---|---|
| 发行版 | Debian 13.6 (trixie) |
| 内核 | 6.12.107+deb13-amd64 |
| 重启需求 | 无 |
| 真正该升的(排除 sid) | 主要是 Chrome / Firefox / Thunderbird / VS Code 一类 |
问题根源:sources.list 混进了 sid 和 bullseye
典型危险行:
sid 与 trixie 同为优先级 500 时,apt upgrade 会大量拉 unstable,等于把稳定桌面往滚动版拖。
处理:注释掉混源
先备份,再注释:
干净后应只剩:
trixie/trixie-updates/trixie-backports(镜像)trixie-security- 以及 Chrome / Docker / VS Code 等第三方源
此时可升级包会从一千多个掉到几个。
安全升级(不要 full-upgrade 乱扫)
当时升的是:
firefox-esr/ 语言包 → 安全更新thunderbird→ 安全更新google-chrome-stablecode(VS Code)
不要对着带 /unstable 的那一千个包直接 full-upgrade。
XFCE 全局菜单:AppMenu,不是 XApp Menu
容易混淆的名字
| 名字 | 实际是什么 |
|---|---|
| XApp | Linux Mint 的跨桌面组件库(托盘 StatusNotifier 等) |
xapp-sn-watcher |
托盘相关服务,不是开始菜单 |
| AppMenu Plugin | 全局菜单:当前窗口的 File / Edit 显示在面板上 |
Debian 上对应的包:
会顺带装上 appmenu-registrar。装完后:
- 面板右键 → 添加新项目 → AppMenu Plugin
- 注销再登录(环境变量要进图形会话)
只显示应用名、没有 File/Edit?
常见两个原因:
① 会话没加载 appmenu-gtk-module
检查:
写入 ~/.xsessionrc(XFCE 会读):
也可:
官方脚本还会写 xsettings:
然后注销重登,用 Thunar / Mousepad 这类 GTK 应用验证。
点桌面时显示 Xfdesktop、只有名字没有菜单,是正常的——桌面本身没有传统菜单栏。
Cursor / Chrome / VS Code 等 Electron 应用通常也不支持全局菜单。
② 菜单「居中」而不是靠左
AppMenu 若开启 Expand plugin on panel,会占满面板中间空白;短标题(如 Cursor)会看起来像漂在中间。
关掉扩展(假设 AppMenu 是 plugin-2,用 xfconf-query -c xfce4-panel -l -v | grep appmenu 确认 ID):
面板上保留一个 Expand 的分隔符 在 AppMenu 后面,托盘和时钟仍会靠右。
也可右键 AppMenu → 属性,取消勾选 Expand plugin on panel。
注意:插件启动往往会把 expand 写回 true,只改 GUI 不够。完整原因与登录后强制关掉的脚本见:XFCE AppMenu 居中与 Expand 被写回。
资源占用一眼看懂
整理防火墙前顺手摸了一下(开机约 1 小时时):
| 资源 | 概况 |
|---|---|
| CPU | i5-1240P,16 逻辑核;负载 ~2.1,空闲约 80% |
| 内存 | 15 GiB,已用 ~9.6 GiB,可用 ~5.7 GiB;Swap 未用 |
| 磁盘 | / ~8%,/home ~20% |
| 温度 | CPU 包温约 62°C |
| 主要占用 | Firefox、Cursor、本机/容器相关服务、clash-verge |
常用命令:
防火墙:开发机默认不对外开放
整理前的真实状态
| 组件 | 状态 |
|---|---|
| UFW | 未安装(仅有 /etc/ufw 残留目录) |
| firewalld | 无 |
| nftables 服务 | 装了但 disabled |
| INPUT 策略 | ACCEPT(入站全放行) |
更麻烦的是 Docker 把端口绑在 0.0.0.0 上,例如:
3306MySQL6379Redis9000/9001、9874Portainer 等
局域网里别的设备理论上能直接连进来。开发本一般不需要这个。
安装并启用 UFW
期望结果:
关键:UFW 管不住 Docker 发布端口
外部访问 Docker 映射端口走的是 FORWARD + DNAT,不是简单的 INPUT,所以还要在 DOCKER-USER 里拦一层。
追加到 /etc/ufw/after.rules(文件末尾):
然后:
效果:
- 本机
127.0.0.1:3306/:6379→ 照常 - 其他设备访问你的局域网 IP + 这些端口 → 被丢弃
常用维护
更稳妥的长期做法,是把 compose / docker run 的端口改成只绑本机,例如 -p 127.0.0.1:3306:3306,防火墙只是第二道闸。