#应用程序 #启动器 #扩展 #Linux #窗口 #运行 #ulauncher

bin+lib dlauncher

基于 Ulauncher 的 Linux 应用启动器

1 个不稳定版本

0.1.1 2022 年 5 月 24 日

#1010GUI

Download history 54/week @ 2024-07-30

54 每月下载次数

GPL-3.0 许可证

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