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 Quickly
gọ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 Unity
trình khởi chạy . Trong video Tích hợp Unity, Quickly
khô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 .zip
tậ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ì Quickly
tạo .desktop.in
tệp chứ không phải .desktop
tệ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 .desktop
và .desktop.in
cá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.in
tậ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 .desktop
tậ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 build
và sau đó điều hướng đến /build/share/applications
và di chuyển test.desktop
tệ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ề .desktop
tệp được xây dựng , hóa ra dòng:
Icon=/usr/share/test/media/test.svg
trong .desktop
tệp đã trỏ đến một tệp biểu tượng được gọi là test.svg
khô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 test
trong /usr/share/
cách sử dụng lệnh sudo mkdir test
và sau đó tạo ra một thư mục bên trong của thư mục kiểm tra gọi là media
sử dụng lệnh sudo mkdir media
, và sau đó tôi chuyển các test.svg
tậ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 .svg
biể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 Quickly
dự án bằng cách thực hiện python setup.py build
và di chuyển xây dựng .desktop
tập tin trong Quickly
dự á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.