Kev*_*ney 11 python unity quickly application-development
我正在尝试为python/Gtk使用Quickly调用创建的简单应用程序更新 Unity 启动器中的进度条test;但是,按照本视频中的说明,我无法成功更新Unity启动器中的进度条。在 Unity Integration 视频中,Quickly没有使用,因此应用程序的构建方式略有不同,并且视频中使用的代码在默认Quickly ubuntu-application模板应用程序中未经修改似乎无法正常运行。
这是当前显示在 Unity Launcher 中的应用程序图标的屏幕截图。

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

一个.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,只显示一个图标的问号,没有可见的进度条。

经过内置的进一步调查.desktop文件,事实证明,该行:
Icon=/usr/share/test/media/test.svg内部.desktop文件指向称为一个图标文件test.svg并不存在。
为了解决这个问题,我创建了一个名为新文件夹test中/usr/share/使用命令sudo mkdir test,然后创建一个名为test文件夹的另一个文件夹中media使用命令sudo mkdir media,然后我感动test.svg位于我赶紧项目目录的图标文件test/data/media/test.svg来/usr/share/test/media/。.svg应用程序的图标现在可以在 Unity 启动器栏和 alt-tab 视图中正确显示,但仍然没有可见的进度条,如下面的屏幕截图所示。

正如@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()似乎不正确时调用的应用程序启动。
经过进一步调查,事实证明add_launcher_integration()实际上是在应用程序启动时调用的。添加以下行:
os.system("clear")
Run Code Online (Sandbox Code Playgroud)
行前
print("Integrating with launcher")
Run Code Online (Sandbox Code Playgroud)
消息“与启动器集成”现在显示在terminal.
但是,在 Unity 启动器栏中仍然没有可见的进度条。
重建后,Quickly通过执行项目python setup.py build和移动内置.desktop的内文件Quickly位于项目/build/share/applications/,以~/.local/share/applications在Unity启动栏正确,应用程序图标和进度条现在显示。下面可以看到启动器集成的屏幕截图。

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