Nghiên cứu cơ bản
Tôi đang cố gắng cập nhật thanh tiến trình trong trình khởi chạy Unity cho một python/Gtkứng dụng đơn giản được tạo bằng cách Quicklygọi test; tuy nhiên, làm theo các hướng dẫn trong video này , tôi chưa thể cập nhật thành công thanh tiến trình trong Unitytrình khởi chạy . Trong video Tích hợp Unity, Quicklykhông được sử dụng, do đó cách ứng dụng được cấu trúc hơi khác nhau và mã được sử dụng trong video dường như không hoạt động đúng mà không sửa đổi trong Quickly ubuntu-applicationứng dụng mẫu mặc định .
Ảnh chụp màn hình
Dưới đây là ảnh chụp màn hình của biểu tượng ứng dụng vì nó hiện đang được hiển thị trong Unity Launcher.

Dưới đây là một ảnh chụp màn hình của loại chức năng thanh tiến trình Unity mà tôi muốn (phủ lên biểu tượng thư: wiki.ub Ubuntu.com ).

Mã số dự án
Một .ziptập tin chứa các tập tin dự án có thể được tìm thấy ở đây .
Hành vi dự kiến
Tôi hy vọng đoạn mã trên sẽ hiển thị thanh tiến trình được phủ đầy 75% trên biểu tượng cho ứng dụng thử nghiệm trong Unity Launcher , nhưng ứng dụng chỉ chạy và hiển thị không có thanh tiến trình khi lệnh quickly runđược thực thi.
Vấn đề điều tra
Tôi tin rằng vấn đề là tôi không nhận được tham chiếu chính xác đến cửa sổ chính của ứng dụng, tuy nhiên, tôi không chắc cách khắc phục vấn đề này đúng cách. Tôi cũng tin rằng dòng: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")có thể là một nguồn phức tạp khác vì Quicklytạo .desktop.intệp chứ không phải .desktoptệp thông thường , vì vậy tôi không chắc liệu điều đó có thể gây ra sự cố không.
Có lẽ, một nguồn khác của vấn đề là tôi không hoàn toàn hiểu sự khác biệt giữa .desktopvà .desktop.incác tệp. Liệu nó có thể làm cho tinh thần để tạo một bản sao của test.desktop.intập tin và đổi tên nó test.desktop, và đặt nó vào /usr/share/applicationsđể cho get_for_desktop_id("test,desktop")để tham khảo chính xác .desktoptập tin?
Liên kết nghiên cứu liên quan
Mặc dù, tôi vẫn chưa rõ về sự khác biệt giữa các tệp .desktop và .desktop.in, tôi đã thực hiện một số nghiên cứu về các tệp .desktop và tôi đã bắt gặp một vài liên kết:
- Tập tin nhập máy tính để bàn (library.gnome.org)
- Thư mục cài đặt tập tin máy tính để bàn (askubfox.com)
- API trình khởi chạy Unity (wiki.ubfox.com)
- Tệp máy tính để bàn: đưa ứng dụng của bạn vào menu máy tính để bàn (developer.gnome.org)
- Thông số menu trên màn hình nền (tests.freedesktop.org)
Biên tập
Sau khi chạy python setup.py buildvà sau đó điều hướng đến /build/share/applicationsvà di chuyển test.desktoptệp được xây dựng đến ~/.local/share/applications, và cuối cùng thực thi quickly run, chỉ có một dấu hỏi cho biểu tượng được hiển thị, không có thanh tiến trình hiển thị .

Chỉnh sửa 2
Sau khi điều tra thêm về .desktoptệp được xây dựng , hóa ra dòng:
Icon=/usr/share/test/media/test.svgtrong .desktoptệp đã trỏ đến một tệp biểu tượng được gọi là test.svgkhông tồn tại.
Để giải quyết vấn đề này, tôi đã tạo một thư mục mới có tên gọi testtrong /usr/share/cách sử dụng lệnh sudo mkdir testvà sau đó tạo ra một thư mục bên trong của thư mục kiểm tra gọi là mediasử dụng lệnh sudo mkdir media, và sau đó tôi chuyển các test.svgtập tin biểu tượng nằm trong thư mục dự án một cách nhanh chóng của tôi tại test/data/media/test.svgđể /usr/share/test/media/. Các .svgbiểu tượng cho ứng dụng bây giờ hiển thị đúng trong thanh launcher Unity và trong giao diện alt-tab, tuy nhiên vẫn còn là thanh tiến trình không thể nhìn thấy như thể hiện trong hình dưới đây.

Chỉnh sửa 3
Như @dobey, đã chỉ ra, có một lỗi đánh máy trong mã của tệp TestWindow.py tại dòng:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop"),
nơi test.destkop, nên được test.desktop.
Tôi đã thay đổi lỗi đánh máy này và không có thay đổi có thể nhìn thấy xảy ra khi ứng dụng được thực thi bằng cách sử dụng quickly run. Tuy nhiên, sau khi thêm dòng print('Integrating with launcher')vào add_launcher_integration()không có đầu ra tương ứng trong thiết bị đầu cuối khi ứng dụng được chạy, chỉ ra rằng vấn đề dường như add_launcher_integration()không được gọi là chính xác khi ứng dụng khởi động.
Chỉnh sửa 4
Sau khi điều tra thêm, hóa ra add_launcher_integration()thực tế nó được gọi khi ứng dụng khởi động. Với việc bổ sung dòng:
os.system("clear")
trước dòng
print("Integrating with launcher")
thông báo "Tích hợp với launcher" hiện hiển thị trong terminal.
Tuy nhiên, vẫn không có thanh tiến trình hiển thị trong thanh trình khởi chạy Unity .
Chỉnh sửa 5
Sau khi xây dựng lại Quicklydự án bằng cách thực hiện python setup.py buildvà di chuyển xây dựng .desktoptập tin trong Quicklydự án nằm ở vị trí /build/share/applications/để ~/.local/share/applications, các biểu tượng ứng dụng và thanh tiến trình hiện hiển thị đúng trong Unity launcher bar. Một ảnh chụp màn hình tích hợp launcher có thể được nhìn thấy dưới đây.
