如何使启动器进度条与我的应用程序配合使用?

如何使启动器进度条与我的应用程序配合使用?

背景研究

我正在尝试更新 Unity 启动器中的进度条,以便python/Gtk使用Quickly名为test;但是,按照这个视频我无法成功更新Unity启动器中的进度条。在 Unity Integration 视频中,Quickly并未使用,因此应用程序的构建方式略有不同,并且视频中使用的代码似乎无法在默认Quickly ubuntu-application模板应用程序中不经过修改就正常运行。


截图

这是当前在 Unity Launcher 中显示的应用程序图标的屏幕截图。

应用程序图标模糊,没有可见的进度条

下面是我想要的 Unity 启动器进度条功能的屏幕截图(覆盖在邮件图标上:wiki.ubuntu.com)。

Unity Launcher 进度条功能


项目代码

.zip可以找到包含项目文件的文件这里


预期行为

我希望上述代码显示一个进度条,该进度条已满 75%,并覆盖在 Unity Launcher 中的测试应用程序图标上quickly run,但应用程序仅在执行命令时运行并且不显示进度条。


问题调查

我认为问题在于我没有正确获取对应用程序主窗口的引用,但是,我不确定如何正确修复此问题。我还认为行:self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")可能是另一个复杂因素,因为它Quickly会创建.desktop.in文件而不是普通.desktop文件,所以我不确定这是否也会导致问题。

也许,问题的另一个根源是我不完全理解.desktop和文件之间的区别。复制文件并重命名,然后将其放入以便引用正确的文件.desktop.in是否有意义?test.desktop.intest.desktop/usr/share/applicationsget_for_desktop_id("test,desktop").desktop


相关研究链接

虽然我仍然不清楚 .desktop 和 .desktop.in 文件之间的区别,但我对 .desktop 文件做了一些研究,并且遇到了几个链接:


编辑

运行后python setup.py build,导航到/build/share/applications并将构建的test.desktop文件移动到~/.local/share/applications,最后执行quickly run仅显示图标的问号,没有可见的进度条

应用程序图标显示问号


编辑2

在对构建的文件进行进一步调查后.desktop,发现 文件Icon=/usr/share/test/media/test.svg中的行:.desktop指向一个test.svg不存在的图标文件。

为了解决这个问题,我使用命令创建了一个名为 的新文件夹test/usr/share/然后sudo mkdir test使用media命令在测试文件夹内创建了另一个名为 的文件夹sudo mkdir media,然后我将test.svg位于 Quickly 项目目录中的图标文件移动test/data/media/test.svg/usr/share/test/media/.svg应用程序的图标现在在 Unity 启动器栏和 alt-tab 视图中正确显示,但是仍然没有可见的进度条如下面的截图所示。

仅显示应用程序图标


编辑3

正如 @dobey 指出的那样,TestWindow.py 文件的代码中,以下行有一个拼写错误:

self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")

其中test.destkop,应该是test.desktop

我更改了这个拼写错误,使用 执行应用程序时没有发生任何明显的变化quickly run。但是在将行添加到 之后,print('Integrating with launcher')应用add_launcher_integration()程序运行时终端中没有相应的输出,这表明问题似乎add_launcher_integration()在于 应用程序启动时似乎没有正确调用 。


编辑4

经过进一步调查,发现add_launcher_integration()实际上是在应用程序启动时调用的。添加了以下行:

os.system("clear")

线之前

print("Integrating with launcher")

现在将在 中显示“正在与启动器集成”消息terminal

然而,Unity 启动器栏中仍然没有可见的进度条


编辑5

Quickly通过执行并将位于 的项目内的python setup.py build构建文件移动到来重建项目后,应用程序图标和进度条现在可在 Unity 启动器栏中正确显示。启动器集成的屏幕截图如下所示。.desktopQuickly/build/share/applications/~/.local/share/applications

显示应用程序图标和进度条

答案1

.desktop 文件必须安装在bamf图书馆知道的位置。

您应该能够通过将构建的 .desktop 文件(应从 .desktop.in 创建)复制到您的~/.local/share/applications文件夹并运行来进行测试update-desktop-database ~/.local/share/applications,但是如果您的应用程序不处理任何 MIME 类型,则可能不需要运行此命令。

.desktop 和 .desktop.in 之间的区别在于 .desktop.in 是为翻译而设置的,并在构建期间由 intltool 处理,以插入翻译,并从 .desktop.in 文件创建 .desktop 文件。

另外我刚刚注意到你的代码中有一个拼写错误:

self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")

请注意应该是“destkop”而不是“desktop”。如果不是重复输入错误,也许就是这样。假设您的代码确实正在运行,那么这就是问题所在。如果它没有运行,那么这就是问题所在。您可以将一个添加print('Integrating with launcher')到 add_launcher_integration 函数中以查看。运行时它应该出现在终端上。

相关内容