如何在 Linux 上实现屏保

此教程实现的最终效果灵感来源于 Omarchy 屏保,且实现的桌面环境为 KDE Plasma,在其他桌面环境下的效果暂未可知。
对于很多 Linux 极客与桌面美化爱好者来说,Omarchy 发行版中最吸睛的特色之一,莫过于其独具一格的终端 ASCII 字符屏保。在系统空闲进入待机状态时,全屏黑底终端缓缓浮现出炫酷的 ASCII 艺术字,伴随着各种粒子流动、解密扫描、雨滴坠落等终端视觉特效轮番登场;只需轻触任意按键,便能毫无滞后感地唤醒系统并回到工作桌面。
然而,Omarchy 默认深度绑定了 Hyprland 及其定制环境。那么,在主流且强大的 KDE Plasma 桌面环境下,我们能否复刻出同样行云流水、极客范十足的字符动画屏保呢?
答案是肯定的。本文将带大家通过 GPU 加速终端 Kitty、高性能终端特效引擎 ttfx 以及 KDE Plasma 自带的电源管理机制,打造一个专属于自己的终端字符屏保。同时,考虑到不同用户的 Shell 使用习惯,本文提供同时兼容 Bash 与 Fish 的两套脚本实现。
核心工具与原理解析
整套方案的核心实现非常轻量,仅依赖几个优秀的开源工具与系统原生功能:
-
终端模拟器:Kitty
Kitty 是一款基于 GPU 加速的跨平台现代化终端模拟器。它具备极快的启动速度,并且原生支持
--start-as=fullscreen(启动即全屏)与--override background_opacity=1(强制覆盖背景为纯黑不透明,避免桌面壁纸透出)。 -
字符特效引擎:ttfx
ttfx 是知名终端视觉特效项目 TerminalTextEffects (TTE) 的 Rust 高性能实现。相较于 Python 原版,Rust 编写的 ttfx 是单个自包含的可执行静态二进制文件,启动飞快且内存占用极低,内置数十种视觉效果,极其适合屏保循环渲染。
-
空闲触发器:KDE Plasma 系统设置中的电源管理
KDE Plasma 自带的「电源管理」模块内置了空闲动作监听,支持在系统空闲指定分钟后执行自定义脚本,无需额外安装复杂的空闲守护进程。
准备工作
1. 安装 Kitty
在大多数主流 Linux 发行版中,Kitty 均可通过系统包管理器直接安装:
sudo pacman -S kittysudo dnf install -y kittysudo apt update && sudo apt install -y kitty也可以参考 Kitty 官方安装指南 使用官方独立安装脚本进行安装。
2. 安装 ttfx
ttfx 采用 Rust 编写,推荐直接通过 Rust 的包管理器 cargo 进行安装:
cargo install ttfx安装完成后,请确保 ~/.cargo/bin 已经加入到你的系统 PATH 环境变量中。
可以通过运行 ttfx --help 检查是否安装成功。若成功安装,可以看到包含 beams、blackhole、decrypt、fireworks、matrix 等数十种动效子命令的帮助文档。
如果你的系统尚未配置 Rust 环境,也可以前往 omacom/ttfx Releases 下载预编译的二进制包,或使用 upstream Python 版本的 TerminalTextEffects(pip install terminaltexteffects)。
3. 准备 ASCII 艺术字文本
我们需要一份作为屏保展示内容的纯文本文件。你可以使用 FIGlet、toilet 或在线 ASCII Art 生成器制作自己的名字、Logo 或座右铭。
创建保存屏保文本的目录,并将 ASCII 艺术字保存至 ~/.local/share/screensaver/<文件名>.txt:
mkdir -p "$HOME/.local/share/screensaver"cat << 'EOF' > "$HOME/.local/share/screensaver/black-cyan.txt" ____ __ ___ ________ __________ _____ _ __ / __ )/ / / | / ____/ //_/ ____/\ \/ / | / | / / / __ / / / /| |/ / / ,< / / \ / /| | / |/ / / /_/ / /___/ ___ / /___/ /| / /___ / / ___ |/ /| //_____/_____/_/ |_\____/_/ |_\____/ /_/_/ |_/_/ |_/EOFmkdir -p $HOME/.local/share/screensaverprintf '%s\n' ' ____ __ ___ ________ __________ _____ _ __ / __ )/ / / | / ____/ //_/ ____/\ \/ / | / | / / / __ / / / /| |/ / / ,< / / \ / /| | / |/ / / /_/ / /___/ ___ / /___/ /| / /___ / / ___ |/ /| //_____/_____/_/ |_\____/_/ |_\____/ /_/_/ |_/_/ |_/ ' > $HOME/.local/share/screensaver/black-cyan.txt你可以根据个人喜好替换其中的字符内容。
编写屏保控制脚本
创建脚本目录并新建屏保脚本 ~/.local/bin/ascii-screensaver。
由于不同 Shell 之间的语法差异,请根据你偏好的环境选择对应版本的脚本:
#!/usr/bin/env bash
kitty --start-as=fullscreen \ --class=ascii-screensaver \ --override background_opacity=1 \ bash -c ' bash -c " while true; do ttfx \ --canvas-width 0 \ --canvas-height 0 \ --anchor-canvas c \ --anchor-text c \ --reuse-canvas \ --random-effect \ -i \"$HOME/.local/share/screensaver/black-cyan.txt\" done " & anim_pid=$!
read -s -n 1 -r key
pkill -TERM -P "$anim_pid" 2>/dev/null kill "$anim_pid" 2>/dev/null wait "$anim_pid" 2>/dev/null '#!/usr/bin/env fish
kitty --start-as=fullscreen \ --class=ascii-screensaver \ --override background_opacity=1 \ fish -c ' fish -c " while true ttfx \ --canvas-width 0 \ --canvas-height 0 \ --anchor-canvas c \ --anchor-text c \ --reuse-canvas \ --random-effect \ -i \"$HOME/.local/share/screensaver/black-cyan.txt\" end " & set anim_pid $last_pid
read -s -n 1 key
pkill -TERM -P $anim_pid 2>/dev/null kill $anim_pid 2>/dev/null wait $anim_pid 2>/dev/null '脚本关键参数解析
- Kitty 启动参数:
--start-as=fullscreen:启动时强制进入全屏状态,遮蔽任务栏与顶栏。--class=ascii-screensaver:指定窗口类名,方便后续有需要时在窗口管理器中单独针对该类名编写规则。--override background_opacity=1:强制将背景不透明度设为1.0(纯黑不透明)。即使你日常使用的 Kitty 终端设置了毛玻璃或半透明背景,屏保启动时也不会透出桌面内容。
- ttfx 动效参数:
--canvas-width 0与--canvas-height 0:将画布大小自适应设置为全终端窗口尺寸。--anchor-canvas c与--anchor-text c:分别将画布和文本锚点定位在正中心(Center),保证文本在屏幕居中显示。--reuse-canvas:动效交替时复用当前画布,避免全屏闪烁。--random-effect(或-R):每次循环随机挑选不同的字符动画效果。-i "$HOME/.local/share/screensaver/black-cyan.txt":指定读取的 ASCII 艺术字文件路径。
赋予执行权限并测试
为脚本赋予可执行权限:
chmod +x ~/.local/bin/ascii-screensaver请确保 ~/.local/bin 在当前系统的环境变量 PATH 中。
此时你可以直接在终端中输入 ~/.local/bin/ascii-screensaver 进行测试。若配置无误,屏幕将立刻切换为全屏 ASCII 动效;敲击键盘任意键即可退出。
在 KDE Plasma 中配置空闲自动触发
编写好脚本后,只需将其交由 KDE Plasma 的电源管理接管即可。
- 打开 系统设置。
- 在左侧导航栏中找到 系统 -> 电源管理。
- 将 空闲时 下拉选项设置为需要的超时时间(例如:空闲 5 分钟后运行)。
- 在下方的可执行文件路径框中,点击「选择…」或者直接填入脚本路径:
(或者完整绝对路径,如~/.local/bin/ascii-screensaver
/home/black/.local/bin/ascii-screensaver)。 - 点击右下角的 应用(A) 保存配置。

配置完成后,当系统静置无操作达到设定时间(例如 5 分钟)后,KDE Plasma 便会自动唤起全屏终端屏保。
进阶技巧:绑定快捷键
除了等待系统空闲自动触发外,你还可以像 Omarchy 一样为屏保设置一个随时随地手动触发的全局快捷键:
- 打开 系统设置 -> 键盘 -> 快捷键 -> 新增。
- 添加一个新的命令快捷键:
- 名称:
ASCII Screensaver - 命令:
~/.local/bin/ascii-screensaver - 触发快捷键:例如
Meta + S(即Super + S)。
- 名称:
保存后,只需按下快捷键,即可一键进入屏保模式。
总结
通过现代化的 GPU 终端 Kitty 搭配 ttfx 强大的文本特效引擎,再结合 KDE Plasma 原生易用的电源管理与空闲动作,我们无需安装庞杂繁琐的第三方屏保管理器,就能在任何常规 Linux 桌面环境下轻松复刻出 Omarchy 般炫酷的字符屏保。
无论是想要展示个性化的 ASCII Logo,还是享受终端字符带来的视觉盛宴,赶紧去打造属于你的终端字符屏保吧!
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!



湘公网安备43130202000333号