1 个不稳定版本
0.1.1 | 2022 年 5 月 24 日 |
---|
#1010 在 GUI
54 每月下载次数
78KB
2K SLoC
DLauncher (Rust Ulauncher 端口)
基本上是 Ulauncher 的一个一对一复制,但后端不同。
安装
Arch Linux
DLauncher 可作为 AUR 软件包使用。如果您不想构建,请安装 dlauncher
软件包。如果您想从源代码构建,请安装 dlauncher-git
软件包。
构建
git clone https://github.com/diced/dlauncher
make build
可执行文件位于 target/release
文件夹中。
运行
如果您正在使用 xinit,您可以将 dlauncher &
添加到其中。
切换窗口
如果您以守护进程模式运行,您可以使用 dlauncher-toggle
命令切换窗口是否出现。
从 Ulauncher 迁移
由于 Dlauncher 的构建方式,它与 Ulauncher 主题完全兼容!您只需将主题从 ~/.config/ulauncher/user-themes
移动到 ~/.config/dlauncher/themes
。
cp -r ~/.config/ulauncher/user-themes/* ~/.config/dlauncher/themes`
如果您想迁移启动时显示的最近应用,您可以
为什么?
我喜欢 Ulauncher 的工作方式和外观,但有一些问题:Ulauncher 的首选项通过 Webkit 前端控制,这可能会消耗大量内存。再加上它使用 Python 的事实,这也导致了它使用大量内存(这并不是真的很多,就像几百兆字节,但有时“幽灵” Webkit 进程等可能会导致总内存达到 500 兆)。
许多其他因素,如扩展,也可能向进程添加大量内存,即使是我使用的扩展的端口,DLauncher 也在与基本二进制相同的 40-60 MB 内运行。
如何?& 动机
由于 Ulauncher 是使用 GTK 库制作的,因此创建 Ulauncher 的克隆变得很容易,因为我可以重用 Ulauncher 的设计文件(这正是我所做的)。完成此操作后,我可以使用 Ulaunchers 代码库中的代码,以了解它如何最好地翻译成 Rust,这由于 GTK 和 GDK 实现的相似性而变得非常容易。
一旦我能够复制 Ulauncher 的相同 UI,我就开始更多地关注后端以及扩展将如何工作
扩展?
最初,扩展功能是通过Dlauncher运行的一个命令来实现的,然后它的标准输出会被解析,但效果并不理想,而且完全没有功能。我能够找出如何使用FFI和共享对象库(.so
文件),这些库可以通过libloading
在运行时加载。这使得扩展变得更加健壮和灵活,以满足开发者的需求。目前API功能有限,但可以实现您想做的任何事情。
有什么变化?
后端
- 后端现在是用Rust编写的,这使得启动器可以更少地使用资源。
- 搜索的方式可能与原始Ulauncher有所不同。我发现了一个名为fuzzywuzzy-rs的库,它有一个名为
get_matching_blocks
的方法,我决定将其复制到这里,因为我不想将这个库作为依赖项导入,或者使用它的任何东西。 - 近期记录存储在一个名为
dlauncher.druncache
的文件中 - 配置完全基于文件,而不是通过UI管理。(我可能会添加一个外部程序来管理文件,这样它就不会干扰主进程)
- 扩展(基本上完全不同了)
Dlauncher的运行稳定在40-60 MB左右,而Ulauncher的运行则需要大约200-400 MB(有时扩展可能会使这个数字更高)。
前端
没有变化!您的Ulauncher主题将与Dlauncher完美兼容。
未来
我计划继续改进Dlauncher的性能!代码也有点乱,任何帮助都受欢迎!
版权声明
对Ulauncher原始源代码所做的修改
- data/result.ui
- data/DlauncherWindow.ui
- data/themes/light
依赖项
~25–34MB
~651K SLoC