如何使启动器进度栏与我的应用程序一起使用?


10

背景研究

我试图更新一个简单的统一发射中的进度条python/Gtk的应用程序创建使用Quickly所谓的test; 但是,按照此视频中的说明,我无法成功更新Unity启动器中的进度栏。在Unity Integration视频中,Quickly由于未使用,因此应用程序的结构方式略有不同,如果不修改默认Quickly ubuntu-application模板应用程序,视频中使用的代码似乎无法正常运行。


屏幕截图

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

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

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

Unity Launcher进度栏功能


项目编号

一个.zip包含项目文件的文件可以发现在这里


预期行为

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


问题调查

我认为问题是我没有正确获得对应用程序主窗口的引用,但是,我不确定如何正确解决此问题。我也相信这行:self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")可能是另一个复杂性源,因为它Quickly创建.desktop.in文件而不是普通.desktop文件,所以我不确定这是否也可能引起问题。

也许,该问题的另一个来源是我并不完全了解.desktop.desktop.in文件之间的区别。复制test.desktop.in文件并将其重命名test.desktop,然后将其放置/usr/share/applications以便get_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并不存在。

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

仅显示应用程序图标


编辑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和移动内置.desktop的内文件Quickly位于项目/build/share/applications/,以~/.local/share/applications在Unity启动栏正确,应用程序图标和进度条现在显示。启动器集成的屏幕截图如下所示。

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

Answers:


8

.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”与“桌面”。如果不是重新输入错误,也许就是这样。假设您的代码实际上正在运行,这是一个问题。如果没有运行,那就是问题所在。您可以print('Integrating with launcher')在add_launcher_integration函数中添加一个以查看。运行时,它应该出现在终端上。


何时创建内置的.desktop文件?它是在执行快速运行时构建的,它位于何处?
凯文·古尼

我不会很快使用,也不知道它何时会正确构建,但是通常使用标准python库/应用程序,将setup.py与DistUtilsExtra结合使用,则在运行“ ./setup.py build”或setup.py命令也可以运行build。
dobey 2012年

我设法成功地运行python setup.py build。因此,现在我是否只需将test.desktop文件移动到〜/ .local / share / applications中,并在执行快速运行时仅显示进度条?
凯文·古

我构建了python项目,然后将构建的.desktop文件移至〜/ usr / share / applications,然后按照您的建议运行update-desktop-database〜/ .local / share / applications,但现在我只收到一个问号此处显示了一个应用程序图标:i.stack.imgur.com/RWYud.png
凯文·古尼

test.desktop文件中的Icon =行表示什么?
dobey 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.