linux上launcher的对比

背景

想在linux上实现类似alfred一样网站直达的搜索功能.
于是想起了linux上还有许多类似alfred的软件.
除了已经在使用的rofi以外,
另外找到的还有三个

  • ulauncher(用python写的)
  • albert(用C++写的)
  • kRunner(KDE自带软件)

评价维度

  • 功能
  • 生态丰富度
  • 标准化和定制程度
  • 资源占用

希望达到的功能

  • 启动应用
  • 桌面切换
  • 计算器
  • 文件模糊搜索与打开
  • 网站快捷搜索直达
  • 词典?

rofi

功能完善: 可以做为应用启动器, 可以启动自制应用
生态丰富: 由于可以自定义模式,自定义模式中又能运行脚本.
可定制性: 外观可充分定制,行间距,圆角等等全部可以定制,
通过增加快捷键的方式来增加功能.
非常轻量: 内存占用极少,不仅PC,嵌入式设备应该也可以使用.
缺点: 不能输入中文

计算器实现

pacman中有 rofi-calc,
下载后i3配置中写

1
bindsym $mod+n exec --no-startup-id rofi -show calc -modi calc -no-show-match -no-sort

或者一个更加简单的实现

1
rofi -show calc -modi "calc:qalc +u8 -nocurrencies"

可以实现

  • 科学计算(四则,三角,对数,幂运算等)
  • 带单位计算,单位换算

可以说完全超越alfred的计算器

文件搜索实现

aur库中有 rofi-file-browser-extended-git 的项目,
和rofi深度集成,为rofi添加了 file-browser 模式.

1
fd --full-path -H ~ | rofi -show file-browser-extended -file-browser-stdin -file-browser-cmd kde-open5
  • 一方面借助fd来查找文件,速度有保证
  • 另一方面使用自身的 -file-browser-cmd 参数来指定用来打开文件的程序,

功能足够,就是文件数量大时稍显慢,不知道fd有没有缓存可以先显示一部分,后台自己慢慢查

网站直达实现

网上找了许多都不尽人意,一方面强烈依赖python,另一方面支持的浏览器和terminal类型过少.
比较中意一个使用google定制引擎的项目,但国内不好用.

词典实现

也是来自aur的一个项目 rofi-json-dict-git
目前问题:

  • 即使有json词典也不显示结果
  • 其参考的词典库竟然没有任何中文相关的词典

小频率需求,遂放弃

albert

功能完善但不能启动自制应用.
可以运行自定义脚本但被视为新的模式而非应用启动器.看起来不是很标准.
自带的功能很多,但扩展性较差.

ulauncher

自带的功能不是很多,目前只有

  • 网站直达
  • 插件功能(比如将谷歌翻译的结果取回本地显示)

但官方提供了插件的集合页,而且通过github的链接即可添加插件,
美观方面也强于albert,虽然还是不能定制.

kRunner

一个霸道的存在,
虽然小且不起眼(无法定制具体的搜索框大小)
使用起来也很难用(网站直达的功能需要在提示符和关键字中使用冒号)
但和KDE结合在一起,生态显得异常丰富

  • 计算器
  • 本地文件搜索
  • 配置搜索
  • 会话搜索
  • 联系人搜索等等等等

结论

rofi虽好,不能输入中文啊.
其他软件的通病是不能定制外观,
不是特别在意内存消耗,毕竟KDE本身运行起来也占用不少但从来没有多少人特别嫌弃.
目前使用rofi和ulauncher互补.

参考

  1. 调用谷歌自定义引擎的项目