Rofi:极速应用启动器与窗口切换器 #
Rofi 是什么? #
Rofi 是一款运行在 X11 / Wayland 桌面环境下的开源应用启动器、窗口切换器与 dmenu 兼容替代工具。按下快捷键后,它会以浮层方式弹出一个极简的搜索框,你只需输入几个字符,就能快速启动程序、切换已打开窗口、执行 SSH 连接、浏览文件,甚至运行自定义脚本,全程无需鼠标即可完成操作。
它解决了传统桌面菜单层级深、查找慢、无法统一入口的痛点,把"启动一切"收敛到一个输入框里。凭借类 CSS 的窗口主题引擎、精细的透明度与屏幕定位控制,以及脚本模式与插件体系,Rofi 既能充当纯效率工具,也能被深度定制成高度个性化的桌面组件。项目完全开源免费,并提供按版本分组的完整 manpage 与使用指南。
Rofi 有哪些亮点特色? #
-
一个入口,多种模式:Rofi 提供 run(运行命令)、drun(启动桌面应用)、window(切换窗口)、ssh(远程登录)、combi(组合模式)、filebrowser(文件浏览)等多种内置模式,一条
rofi -show <mode>命令即可切换,把日常高频操作统一收敛到同一个浮层界面中。 -
开箱即用的 dmenu 替代品:Rofi 内置 dmenu 兼容模式,可以通过管道直接接收标准输入并返回用户选择结果,例如
echo -e "a\nb" | rofi -dmenu。原本依赖 dmenu 的脚本几乎无需修改即可迁移,同时获得更美观的外观与更丰富的外观控制能力。 -
类 CSS 的深度主题引擎:Rofi 的主题以文本格式定义,通过
window、*等选择器与background-color、padding等属性精确控制界面,支持rgba()半透明色值。你可以为不同模式配置不同主题,甚至用-theme-str在命令行即时覆盖样式,无需改动配置文件。 -
四种窗口透明方案:官方指南明确给出
real(依赖合成管理器实现真透明)、screenshot(截屏模拟透明)、background(使用根窗口背景图)以及直接指定 PNG 图片路径作为背景四种方案,兼顾有/无合成器的不同环境,并提示截屏方案在 4K 高分辨率下可能变慢。 -
精细的屏幕定位能力:通过
location与anchor两组取值(north、northeast、northwest、south、southeast、southwest、east、west、center)的组合,可以精准决定 Rofi 窗口出现在显示器的哪个位置、以及它从哪个锚点开始展开,窗口 resize 时也能保持预期的生长方向。 -
同时支持 X11 与 Wayland:Rofi 默认在系统中同时存在两种后端时一并构建,也支持通过
-Dxcb=disabled或-Dwayland=disabled单独裁剪,方便在不同桌面环境下获得最小化的依赖与打包体积。 -
脚本与插件扩展体系:官方文档专设 Script 模式、Plugins 指南与 Dynamic Theme(动态主题)章节,允许用户用脚本生成候选项、用插件扩展功能、根据运行状态动态切换主题,具备较强的二次开发空间。
-
完善的文档与社区支持:官网按版本(2.0.0 及 1.7.0–1.7.9)分别维护 manpage,并额外提供 Transparency、Positioning、Plugins、Dynamic Theme、Keys、Debugging、Thumbnails 等专题指南,配合 GitHub 仓库、Issue Tracker 与 Discussions Forum,遇到问题容易找到答案。
免费下载 Rofi #
以下为官方提供的源码安装包,点击链接即可下载。请注意选择 tar.gz 或 tar.xz 格式的归档文件,GitHub 自动生成的源码包不含完整的构建系统。
| 文件名 | 描述 | 大小 | 下载 |
|---|---|---|---|
| rofi-2.0.0.tar.gz | Rofi 2.0.0 源码归档(gzip 压缩) | 803.7 KB | 夸克网盘 |
| rofi-2.0.0.tar.xz | Rofi 2.0.0 源码归档(xz 压缩,体积更小) | 666.8 KB | 夸克网盘 |
Rofi 如何使用? #
-
启动 Rofi:在终端执行
rofi -show run打开命令运行模式,或执行rofi -show drun打开桌面应用启动模式。日常使用建议在桌面环境的快捷键设置中,把该命令绑定到一个顺手的组合键上。 -
搜索与选择:浮层出现后直接输入关键字进行模糊匹配,候选项会实时过滤。使用上下方向键或 Tab 切换候选项,按 Enter 确认执行,按 Esc 取消并关闭窗口。
-
切换已有窗口:执行
rofi -show window,即可列出当前所有打开的窗口,输入标题关键字后回车,便能直接跳转到目标窗口,无需在任务栏里逐个寻找。 -
作为 dmenu 使用:把候选项通过管道传给 Rofi 即可,例如
echo -e "选项A\n选项B" | rofi -dmenu,用户选中的内容会输出到标准输出,方便在 Shell 脚本中直接调用。 -
即时调整外观:不修改配置文件也能临时测试主题效果,例如
rofi -show run -theme-str "window { location: center; anchor: north;}",可快速验证定位、颜色、透明度等改动是否符合预期。 -
排查问题:遇到异常时参考官网的 Debugging 指南与
rofi-debugging(5)manpage,可用meson configure build --debug编译带调试符号的版本,并通过核心转储文件在 GDB 中分析崩溃原因。
Rofi 的常见问题? #
Rofi 和 dmenu 是什么关系? Rofi 自带 dmenu 兼容模式,可以直接读取标准输入并返回选择结果,因此常被当作 dmenu 的增强替代品使用。官方为 dmenu 模式单独维护了 manpage,说明其在设计上明确考虑了 dmenu 用户的迁移需求。
设置了透明背景,为什么窗口还是黑色的?
Rofi 的窗口透明效果由 window 部件上的 transparency 选项控制,共四种取值。若选择 real 模式但没有运行合成管理器,背景会呈现为纯黑色;此时可以改用 screenshot 或 background 模式,或指定一张 PNG 图片作为背景。
透明主题看起来一层叠一层,越来越不透明?
这是官方文档明确说明的现象:Rofi 窗口先绘制背景,再逐层绘制各部件,每层都会叠加一次透明度因子。推荐做法是把最上层设为完全透明(* { background: transparent; }),只在 window 或需要单独着色的部件上设置背景色。
从 GitHub Release 下载的源码包编译失败怎么办?
官方提醒,必须下载 rofi-{version}.tar.[g|x]z 这类归档文件;GitHub 自动附加的 source code (zip|tar.gz) 不包含完整的构建系统,且夹带无关文件,无法正常构建。
怎样在 X11 或 Wayland 之间取舍?
Rofi 默认在两个后端都可用时同时构建,找不到任何后端才会报错。如果只需要其中一种,可以在配置阶段使用 -Dxcb=disabled 关闭 X11 支持,或使用 -Dwayland=disabled 关闭 Wayland 支持。
为什么截屏透明模式在高分屏上很卡?
官方文档指出,screenshot 模式会在显示窗口前先截取一张屏幕快照再绘制内容,属于模拟透明方案,在 4K 等高分辨率显示器上可能明显变慢,且背景发生变化时不会自动更新。
Rofi 如何安装? #
Rofi 的安装方式分为「发行版软件包安装」和「源码编译安装」两条路径。
一、使用发行版包管理器安装(推荐)
- Debian 或 Ubuntu:
sudo apt install rofi - Fedora:
sudo dnf install rofi - ArchLinux:
sudo pacman -S rofi - Gentoo:执行
emerge rofi;如需最新版本,可先将x11-misc/rofi ~amd64(或~x86)写入/etc/portage/package.accept_keywords - openSUSE(Leap 与 Tumbleweed 均可):
sudo zypper install rofi - FreeBSD:
sudo pkg install rofi - macOS(通过 MacPorts):
sudo port install rofi
二、从源码编译安装
- 准备依赖:支持 c99 的 C 编译器(gcc 或 clang)、meson、ninja、pkg-config、flex 2.5.39 及以上、bison,以及 libpango、libcairo、libglib2.0、libxkbcommon、libxcb、xcb-util 系列等外部库的开发者包;如需 Wayland 支持还需 wayland 与 wayland-protocols(>= 1.17)。
- 下载官方归档包
rofi-{version}.tar.gz或.tar.xz并解压。 - 配置构建目录:
meson setup build。如需指定安装路径,可附加--prefix=/usr或--prefix=${HOME}/.local等参数。 - 编译:
ninja -C build。 - 安装(必要时使用 root 权限):
ninja -C build install。默认安装前缀为/usr/local/。
三、从 Git 仓库构建
- 克隆仓库:
git clone --recursive https://github.com/DaveDavenport/rofi - 进入目录并更新子模块:
cd rofi/ && git pull && git submodule update --init - 之后的构建步骤与从发行归档包编译完全一致。
Rofi 如何卸载? #
一、通过包管理器卸载
- Debian 或 Ubuntu:
sudo apt remove rofi(如需一并删除配置,可加--purge) - Fedora:
sudo dnf remove rofi - ArchLinux:
sudo pacman -Rns rofi - Gentoo:
emerge --unmerge rofi - openSUSE:
sudo zypper remove rofi - FreeBSD:
sudo pkg delete rofi - macOS(MacPorts):
sudo port uninstall rofi
二、卸载源码编译版本
- 进入当初的构建目录,执行
ninja -C build uninstall即可移除已安装的文件。 - 如果构建目录已被删除,需要手动删除安装前缀下的可执行文件、manpage 与相关资源文件。
三、清理残留配置
卸包装并不会自动删除用户级别的个性化设置。Rofi 的主题与配置文件通常位于用户主目录下的 .config/rofi/ 目录,如需彻底清理可手动删除该目录;同时建议检查是否在桌面环境的快捷键设置中残留了指向 rofi 的启动命令,避免卸载后出现无效快捷键。
