Rofi

出自 ArchWiki

Rofi 是一个窗口切换器、运行对话框、ssh 启动器和 dmenu 替代品,最初是 simpleswitcher 的克隆版本,由 Sean Pringle 编写,之后由 Dave Davenport 扩展。

安装

安装 rofi 软件包以便在 Xorg 显示服务器下使用。

安装 rofi-waylandwofi 软件包以便与 Wayland 合成器一同使用。

请注意,Wayland 软件包需要支持 Layer Shell 协议的 Wayland 合成器,例如 swayhyprland。将 Wayland 合成器支持合并到主 rofi 分支的工作已无限期搁置 [1]

要了解更多关于 rofi 及其用法的信息,请阅读 rofi(1) man 手册页。

配置

有两种方法设置配置选项

  • 本地配置。通常,根据 XDG,位于 ~/.config/rofi/config.rasi
  • 命令行选项
$ rofi -combi-modi window,drun,ssh -theme solarized -font "hack 10" -show combi

可以在配置文件中这样表示

configuration {
 modi: "window,drun,ssh,combi";
 font: "hack 10";
 combi-modi: "window,drun,ssh";
 }
@theme "solarized"

要获取 config.rasi 文件的完整选项列表,请运行 rofi -dump-config。您可以在运行 rofi -dump-config > ~/.config/rofi/config.rasi 时将命令的输出直接写入您的配置文件

注意: i3 用户请注意,在 i3 配置文件中放置逗号可能会导致问题。要绑定一个键来启动 rofi,可以使用配置文件或将逗号替换为 #,例如 rofi -combi-modi window#drun#ssh

图标

可以使用图标来显示其对应的条目。假设您已安装 papirus-icon-theme,使用 -show-icons 并使用 -icon-theme 定义图标主题,您可以让 rofi 显示图标并执行以下操作

$ rofi -combi-modi window,drun,ssh -theme solarized -font "hack 10" -show combi -icon-theme "Papirus" -show-icons

自定义主题

您可以使用以下命令预览和应用 rofi 的主题

$ rofi-theme-selector

rofi-theme(5) man 手册页包含关于如何主题化 rofi 的详细说明,使用了自定义的、类似 CSS 的语言。此页面包含关于 rofi 使用的布局系统的其他信息、用于主题化 rofi 的精确语法,以及用于主题化 rofi 大多数属性的其他说明。Rofi 的主题系统可以很简单(默认的 dmenu 主题大约有 30 行 CSS),但也足够灵活,可以创建各种交互式的、类似小部件的 applet 和菜单,例如 rofi-advanced

贡献主题

Rofi 附带了几个官方主题,存储在 /usr/share/rofi/themes 中,更多用户主题可以在 rofi-themes 仓库中找到。

加载一个官方主题,或者下载一个 .rasi 用户主题并将其放置在 ~/.config/rofi/example.rasi 命令行中

$ rofi options -theme example

或者,在您的配置文件中,在 configuration { } 块之外

@theme "example"

技巧和窍门

Rofi 作为 dmenu 替代品

如果以 dmenu 的方式调用(通过符号链接),rofi 的行为类似于 dmenu。然后,从脚本中调用 dmenu 的程序(例如来自 passpassmenu)将使用 rofi 而不是 dmenurofidmenu 模式下的确切行为在 rofi-dmenu(5) 中描述。

要近似 dmenu 的外观,请将 rofi 软件包默认附带的文件 /usr/share/rofi/themes/dmenu.rasi 复制到 rofi 配置目录(通常为 ~/.config/rofi),并通过在 config.rasi 的末尾附加 @theme "dmenu.rasi" 或在命令行中使用 -theme dmenu 选项来启用它。

从 rofi 执行 shell 命令

如果您希望能够直接从 rofi 运行 shell 命令或使用您自己的脚本并查看输出,请确保以下内容

定义 -run-shell-command '{terminal} -e SHELL -ic "{cmd} && read",其中 SHELL 是您的 shell(例如 bash、zsh)。这允许您在输入栏中输入命令,然后按 Shift+Enter。终端保持打开状态,直到下一次按键。

这是一个使用 i3 推荐的转义序列的示例

bindsym $mod+d exec --no-startup-id rofi -show drun -run-shell-command '{terminal} -e zsh -ic "{cmd} && read"'

Unicode 选择集成

安装 rofimoji 以获得与 rofi 集成的 Unicode emoji/字符选择器。请参阅 项目 README 以获取 用法配置

Emoji 选择菜单

安装 rofi-emoji 以获得与 rofi 集成的 emoji 选择器。请参阅 项目 README 以获取 用法

如果您遇到关于 emoji 的渲染问题(例如渲染为矩形),您应该安装 ttf-symbolaAURnoto-fonts-cjk 和/或 noto-fonts-emoji

Rofi 作为电源管理菜单

Rofi 可以与 systemd 一起使用以执行电源管理操作。 安装 rofi-power-menuAUR。默认情况下,AUR 软件包会将 rofi-power-menu 脚本插入到 $PATH 中,因此使用它只需要

$ rofi -show p -modi p:rofi-power-menu

如果您决定不使用 AUR 软件包并手动克隆它,那么您将必须告诉 rofi 在哪里找到 rofi-power-menu 可执行文件。例如,如果可执行文件位于 $HOME/.rofi-power-menu

$ rofi -show p -modi p:$HOME/.rofi-power-menu

您也可以将可执行文件放在 PATH 中,并仅传递其名称。

要显示默认符号,您可能需要安装 ttf-nerd-fonts-symbols

有关更多信息,请阅读仓库中的 README 文件。

Rofi 作为剪贴板管理器

Rofi 可以用作 X11 剪贴板管理器,使用 Greenclip。安装 rofi-greenclipAUR 软件包。对于 Waylandcliphist cliphist 是一个不错的替代方案。

Rofi 作为计算器

Rofi 可以用作计算器,使用自然语言输入、单位转换和货币转换,通过 rofi-calc 软件包。