Alist 开源桌面版—Alist Helper For Linux ,ubuntu 编译启动"没反应问题解决,完美运行教主级教程(附deb包)(rclone 挂载路径 Bug 已在2025.1.3 日解决)
Alist Helper 是一款 alist 网盘库程序图形化启动和配置助手,对 alist 命令式操作厌烦的人是个不错的工具。
alist 官网也有 Alist Desktop 桌面版图形配置界面,根据大家的喜好自行选用。
对比 Alist Desktop,Alist Helper 优势还是明显,关键它免费!!!
官网:https://github.com/Xmarmalade/alisthelper
目前官网没有为 Linux 编译二进制包,需要自己编译。
1.下载源码编译
git clone https://github.com/Xmarmalade/alisthelper.git
2.编译
cd alisthelper
flutter pub get
dart run build_runner build
flutter run --release
成功后在build/linux/x64/release/bundle
目录下生成程序
复制bundle
文件内所有文件到自定义程序目录,比如~/soft/alist
中,并重命名
cp -r build/linux/x64/release/bundle/ ~/soft/alist
3.添加alist.desktop桌面快捷方式
nano ~/.local/share/applications/alist-helper.desktop
复制粘贴以下内容:
[Desktop Entry]
Name=Alist Helper
#修改成自己的程序路径
Exec=~/soft/alist/alisthelper
#修改成自己的图标路径
Icon=~/soft/alist/data/flutter_assets/assets/alisthelper.png
Type=Application
Terminal=false
Categories=NetWork;
4.启动 alist 没反应,日志显示 tray_manager setToolTip
故障问题
点击“启动”按钮没有反应
log 日志输出如下:
flutter: Initializing tray failed: MissingPluginException(No implementation found for method setToolTip on channel tray_manager)`
`[ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: MissingPluginException(No implementation found for method setToolTip on channel tray_manager)`
`#0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:332:7)`
`<asynchronous suspension>`
`#1 TrayManager.setToolTip (package:tray_manager/src/tray_manager.dart:168:5)`
`<asynchronous suspension>`
`#2 changeTray (package:alisthelper/utils/native/tray_helper.dart:48:5)`
`<asynchronous suspension>`
`#3 AlistNotifier.startAlist (package:alisthelper/provider/alist_provider.dart:82:5)`
`<asynchronous suspension>
经排查后,发现是 linux 系统下 tray_manager 类中 setToolTip 方法出错,tray_manager 官网(https://github.com/leanflutter/tray_manager/blob/main/README-ZH.md)也作了说明,原来是 linux 下没有 setToolTip 方法,用来设置此托盘图标的悬停文本。没有它也不影响正常使用,禁用掉就行了。期待tray_manager官网后续版本解决这个问题!
(写这篇文章时,源码作者已经将我提交的 bug 修补代码合并到 master 中,此 bug 已被修复!在此记录说明一下)
修复此问题:
用gedit打开alisthelper/lib/utils/native/tray_helper.dart
文件,定位到48行,找到wait tm.trayManager.setToolTip(t.tray.tooltip);
语句,增加一个条件判断:
if (!Platform.isLinux) {
await tm.trayManager.setToolTip(t.tray.tooltip);
}
同理,第56行也改成这样,最终效果如下:
重新编译运行,问题解决。
**PS:**这个问题在我提交 issue 和 bug fix 代码到 github 5小时内得到了解决,原作者将我的修补代码合并到了master 中,现在直接拉取源码编译运行就行,此 bug 已被解决。
可以看到,原来出错代码位置处,已经替换成我修改后的代码了!
附件deb下载:
github:https://github.com/mecloo/alisthelper/releases/download/alist/alisthelper_0.2.0_amd64.deb
蓝奏云:https://wwoz.lanzoul.com/iRikl2jfznid 密码:5o96
修复备注:
2025年1月3 修复 rclone 挂载路径不能输入的问题,修复linux下挂载失败的问题,同步更新了rpm、deb和appimage安装包。该bug已经提交到原作者源码库,现已修复。