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 如何使用? #

  1. 启动 Rofi:在终端执行 rofi -show run 打开命令运行模式,或执行 rofi -show drun 打开桌面应用启动模式。日常使用建议在桌面环境的快捷键设置中,把该命令绑定到一个顺手的组合键上。

  2. 搜索与选择:浮层出现后直接输入关键字进行模糊匹配,候选项会实时过滤。使用上下方向键或 Tab 切换候选项,按 Enter 确认执行,按 Esc 取消并关闭窗口。

  3. 切换已有窗口:执行 rofi -show window,即可列出当前所有打开的窗口,输入标题关键字后回车,便能直接跳转到目标窗口,无需在任务栏里逐个寻找。

  4. 作为 dmenu 使用:把候选项通过管道传给 Rofi 即可,例如 echo -e "选项A\n选项B" | rofi -dmenu,用户选中的内容会输出到标准输出,方便在 Shell 脚本中直接调用。

  5. 即时调整外观:不修改配置文件也能临时测试主题效果,例如 rofi -show run -theme-str "window { location: center; anchor: north;}",可快速验证定位、颜色、透明度等改动是否符合预期。

  6. 排查问题:遇到异常时参考官网的 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 的安装方式分为「发行版软件包安装」和「源码编译安装」两条路径。

一、使用发行版包管理器安装(推荐)

  1. Debian 或 Ubuntu:sudo apt install rofi
  2. Fedora:sudo dnf install rofi
  3. ArchLinux:sudo pacman -S rofi
  4. Gentoo:执行 emerge rofi;如需最新版本,可先将 x11-misc/rofi ~amd64(或 ~x86)写入 /etc/portage/package.accept_keywords
  5. openSUSE(Leap 与 Tumbleweed 均可):sudo zypper install rofi
  6. FreeBSD:sudo pkg install rofi
  7. macOS(通过 MacPorts):sudo port install rofi

二、从源码编译安装

  1. 准备依赖:支持 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)。
  2. 下载官方归档包 rofi-{version}.tar.gz 或 .tar.xz 并解压。
  3. 配置构建目录:meson setup build。如需指定安装路径,可附加 --prefix=/usr 或 --prefix=${HOME}/.local 等参数。
  4. 编译:ninja -C build。
  5. 安装(必要时使用 root 权限):ninja -C build install。默认安装前缀为 /usr/local/。

三、从 Git 仓库构建

  1. 克隆仓库:git clone --recursive https://github.com/DaveDavenport/rofi
  2. 进入目录并更新子模块:cd rofi/ && git pull && git submodule update --init
  3. 之后的构建步骤与从发行归档包编译完全一致。

Rofi 如何卸载? #

一、通过包管理器卸载

  1. Debian 或 Ubuntu:sudo apt remove rofi(如需一并删除配置,可加 --purge)
  2. Fedora:sudo dnf remove rofi
  3. ArchLinux:sudo pacman -Rns rofi
  4. Gentoo:emerge --unmerge rofi
  5. openSUSE:sudo zypper remove rofi
  6. FreeBSD:sudo pkg delete rofi
  7. macOS(MacPorts):sudo port uninstall rofi

二、卸载源码编译版本

  1. 进入当初的构建目录,执行 ninja -C build uninstall 即可移除已安装的文件。
  2. 如果构建目录已被删除,需要手动删除安装前缀下的可执行文件、manpage 与相关资源文件。

三、清理残留配置

卸包装并不会自动删除用户级别的个性化设置。Rofi 的主题与配置文件通常位于用户主目录下的 .config/rofi/ 目录,如需彻底清理可手动删除该目录;同时建议检查是否在桌面环境的快捷键设置中残留了指向 rofi 的启动命令,避免卸载后出现无效快捷键。

相关标签
Rofi应用启动器窗口切换器dmenu 替代Linux 启动器桌面美化主题定制Wayland 工具开源启动器