rofi的使用

前言

rofi 是一个linux下有名的程序启动器,具体功能有

  • Application launcher
  • window switcher
  • dmenu replacement(dmenu是一个有类似功能的软件)

安装

ubuntu16.04 LTS上的问题

官方库(16.04)中只有0.15版本
更高版本的官方库中有新版本,幸运的是能在适当调整依赖关系后正常使用最新的版本1.5.0-1
17.10的rofi
不安装下面的依赖不能使用rofi 1.5
rofi1.5.0-1依赖的libxkbcommon0
使用=apt-get update=时遇到了依赖问题,其中依赖common0旧版本的软件也需要换成新版
依赖libxkbcommon0 0.8.0-1的libxkbcommon-x11-0
好在依赖问题就此打住了
有时新装的系统上没有=libxcb-xrm0=,ubuntu自带的仓库中也没有,就需要到网上下载了。
https://packages.ubuntu.com/bionic/amd64/libxcb-xrm0/download
同上没有其他依赖的问题

基础介绍

效果图

拥有以下模式

  • window 切换窗口
  • run 运行$PATH中命令
  • drun 运行desktop文件中命令
  • ssh 快速ssh模式,使用shell承认的hosts文件,因此可以无缝迁移到rofi
  • combi 结合模式,能够结合上述各种模式

拥有以下特色功能

  • 基于频率排序
    • 缓存文件放在
  • 可以添加用户命令
    • 个人认为是对找不到desktop文件的情况的一种补充
  • 可以模拟dmenu,但本功能本人还用不到
  • 漂亮的外观
  • 更多的快捷键功能

配置

在=i3=中启用

1
2
bindsym $mod+d exec --no-startup-id rofi -show combi
bindsym $mod+Tab exec --no-startup-id rofi -show window

这里分开使用了window和combi(内容设置的是run和drun)

  • 单纯使用window时不想界面有干扰,虽然事实上对于操作没有特殊影响,哪怕是多按一个键
  • 尽管在rofi弹出后可以使用Ctrl+Tab切换模式,但是因为多一些按键,所以不方便

自身设置

  1. 配置文件

    • 在1.5版本中能够使用=rofi -h=看到当前配置文件路径
    • 没有配置文件时可以使用 rofi -dump-xresource > ~/.config/rofi/config 生成旧版配置文件,
      使用 rofi -dump-config > ~/.config/rofi/config.rasi 生成新版本的配置文件,
      该文件是rofi的主题文件,并能够控制rofi的其他配置,作者正在向这边迁移
    • 采用配置文件的顺序
      • 系统级别的配置文件(如果有的话 /etc/rofi.conf)
      • Xresources配置文件(至今不知道位置)
      • Rasi 主题文件(新版)
      • 旧版配置文件(格式同Xresources设置文件),默认在 $XDG_USER_CONFIG_DIR/rofi/config,
        有可能需要设置 $XDG_USER_CONFIG_DIR$HOME/.config.
      • 命令行参数,可以 覆盖 前面的选项
  2. 常用配置(以旧版设置文件为例)

    • 可用的模式
      • 新版本中有
        • window
        • windowcd
        • run
        • drun
        • ssh
        • keys
        • script
      • 设置可用modi: rofi.modi: window,run,ssh,combi
        • 大小写不敏感
      • 在shell中使用 rofi -show keys 等未设置的modi时,rofi会临时打开该模式
      • 在rofi弹出的窗口中使用Ctrl+Tab切换时不会出现未设置的modi
    • combi模式包含的模式
      • 新版本中才有combi模式
      • 设置combi-modi=rofi.combi-modi: run,drun=
    • 匹配方式
      • 目前有4种
        • normal 完全匹配
        • regex 正则
        • glob 很早前使用 ?* 的匹配方式,带来速度影响
        • fuzzy 模糊匹配
      • 设置 rofi.matching normal

    设置上完全可以参考rofi的manpage

    • 使用自定义命令(以填补找不到desktop文件的遗憾)
      • 使用到的功能: accept-alt
      • 步骤
        • 给上述功能绑定快捷键 rofi.kb-accept-custom: Control+Return 默认就是,不用设置
        • 打开rofi输入Desktop文件中exec后的语句,无需使用 & 设置后台
        • 使用上述快捷键保存用法,缓存文件放在 ~/.cache/,里面关于rofi的有几个,可以自己看看

存在问题

  • 打开rofi时截图快捷键失效,应该是拦截了i3的截图快捷键(使用了teiler解决?)
  • 还不清楚是什么问题导致的找不到 Electronic WeChat

心得

  • 没有刻意接近dmenu功能,在搜索desktop文件时也有一些小问题,但是并不刻意强调一致,
    作者在manpage中说

    rofi does not aim to be 100% compatible with dmenu. There are
    simply too many different flavors of dmenu.

    也是一种做工具的心态吧,何必要求处处兼容呢