rofi-使用和配置

官方 Github 仓库

Rofi 可用于替代 dmenu, 其可用做窗口切换器、应用程序启动器和通用目录浏览器。

使用

Rofi 的不同 mode 对应不同的行为, 如:

  • run, 表示启动一个 application
  • drun
  • window
  • ssh, 用 ssh 连接远程服务器
  • filebrowser
  • keys
  • script
  • combi

指定 mode 时, 需要用如:

1
rofi -show run 

(-show 的意思就是打开 rofi 后展示出的行为)
此时会 pop up 一个有 filter 的菜单, 用于启动 application, 此时, 键盘的按动会被rofi 接管.

可以用 Ctrl+Tab (默认按键) 在 rofi 运行时动态更换 mode.

1
rofi -modes "run,ssh" -show run

这样就只能在 runssh 两者之间切换.

通过外部列表选择

如:

1
~/my_script | rofi -dmenu

配置

默认位置为 ~/.config/rofi/config.rasi.

可通过 ${XDG_CONFIG_HOME}/rofi/ 自定义.

生成默认配置文件:

1
2
$ mkdir -p ~/.config/rofi
$ rofi -dump-config > ~/.config/rofi/config.rasi

配置格式

查看所有的配置:

1
man rofi-theme

配置文件格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
configuration {               
/* modes: "window,run,ssh,drun";*/
/* font: "mono 12";*/
/* location: 0;*/
/* yoffset: 0;*/
/* xoffset: 0;*/
/* fixed-num-lines: true;*/
... cut ...
/* ml-row-down: "ScrollDown";*/
/* me-select-entry: "MousePrimary";*/
/* me-accept-entry: "MouseDPrimary";*/
/* me-accept-custom: "Control+MouseDPrimary";*/
}

configuration 块中用键值对配置. 和 CSS 类似.

注释和 C 语言的规则一样. 配置文件中的空白字符会被自动忽略.

配置文件中使用的数据类型:

  • String: ml-row-down: "ScrollDown";
  • Number: eh: 2;
  • Boolean: show-icons: true;
  • Character: matching-negate-char: '-';
  • List: combi-modes: [window,drun];

可以将配置文件拆分为多个:

1
2
3
4
5
// ~/.config/rofi/config.rasi
configuration {
}
@import "myConfig"
@theme "myTheme"

这里 rofi 读取配置文件的顺序为 ~/.config/rofi/config.rasi, ~/.config/rofi/myConfig.rasi, ~/.config/rofi/myTheme

这里也可以指定全局路径.

修改打开时显示的文字

如:

1
display-drun: "Applications:";

即, 在运行:

1
rofi -show drun

时, 显示 “Applications”.

修改打开时显示的文字的格式

如:

1
drun-display-format: "{icon} {name}"

icon-theme

若想显示 icon, 需添加 -show-icon 选项:

1
rofi -modi drun,run -show drun -font "DejaVu Sans 10" -show-icons

安装一种主题:

1
sudo pacman -S papirus-icon-theme

设置为:

1
icon-theme: "Papirus";

设置主题

rofi 自带的主题, 可以用:

1
rofi-theme-selector

选择.

覆盖掉默认的主题, 需添加:

1
@theme "/dev/null"

将一个 application 置顶

rofi-keys 修改快捷键

文档位于: man rofi-keys

快速查看 keycode, 用 xev.

一个行为可以有多个快捷键.

在添加一个新快捷键时注意清除原来的键位绑定:

1
2
3
4
5
6
7
8
9
10
11
configuration {
kb-remove-char-back: "BackSpace";
kb-mode-complete: "";
kb-move-char-forward: "Control+l";
kb-move-char-back: "Control+h";
kb-remove-to-eol: "";
kb-accept-entry: "Return,KP_Enter";
kb-row-up: "Control+k";
kb-row-down: "Control+j";
kb-cancel: "Escape,Control+c,Control+q";
}

使用自定义的模式 mod

如:

1
$ rofi -modi "Test:/tmp/test.sh" -show Test

自定义的名称如 Test:test.sh 冒号前为 mod 名, 之后为脚本名, 脚本的输出会出现在 rofi 的筛选中.

脚本不一定是 shell 脚本.

使用其自定义脚本时, 第一次选中的内容会作为参数返回给脚本, 如:


rofi-使用和配置
http://example.com/2023/09/18/rofi-使用和配置/
作者
Jie
发布于
2023年9月18日
许可协议