Penelitian Latar Belakang
Saya berusaha memperbarui bilah progres di dalam peluncur Unity untuk python/Gtkaplikasi sederhana yang dibuat menggunakan Quicklypanggil test; namun, mengikuti petunjuk dalam video ini , saya belum berhasil memperbarui bilah progres di Unitypeluncur . Dalam video Unity Integration, Quicklytidak digunakan, sehingga cara aplikasi terstruktur sedikit berbeda, dan kode yang digunakan dalam video tampaknya tidak berfungsi dengan baik tanpa modifikasi dalam Quickly ubuntu-applicationaplikasi templat default .
Tangkapan layar
Berikut ini adalah screenshot dari ikon aplikasi yang saat ini ditampilkan di Unity Launcher.

Berikut adalah tangkapan layar dari jenis fungsi bilah kemajuan peluncur Unity yang saya inginkan (overlay pada ikon email: wiki.ubuntu.com ).

Kode proyek
Sebuah .zipfile yang berisi file proyek dapat ditemukan di sini .
Perilaku yang Diharapkan
Saya akan mengharapkan kode di atas untuk menampilkan bilah progres yang 75% penuh overlay pada ikon untuk aplikasi uji di Unity Launcher , tetapi aplikasi hanya berjalan dan tidak menampilkan bilah progres ketika perintah quickly rundijalankan.
Investigasi Masalah
Saya percaya bahwa masalahnya adalah saya tidak mendapatkan referensi ke jendela utama aplikasi, tetapi saya tidak yakin bagaimana cara memperbaiki masalah ini dengan benar. Saya juga percaya bahwa baris: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")mungkin sumber komplikasi lain karena Quicklymembuat .desktop.infile daripada .desktopfile biasa , jadi saya tidak yakin apakah itu dapat menyebabkan masalah juga.
Mungkin, sumber masalah lainnya adalah saya tidak sepenuhnya memahami perbedaan antara .desktopdan .desktop.infile. Apakah itu mungkin masuk akal untuk membuat salinan dari test.desktop.inberkas dan nama itu test.desktop, dan tempatkan dalam /usr/share/applicationsagar get_for_desktop_id("test,desktop")untuk referensi yang benar .desktopberkas?
Tautan Penelitian Terkait
Meskipun, saya masih belum jelas tentang perbedaan antara file .desktop dan .desktop.in, saya telah melakukan beberapa penelitian pada file .desktop dan saya telah menemukan beberapa tautan:
- File Entri Desktop (library.gnome.org)
- Direktori Instalasi File Desktop (askubuntu.com)
- API Peluncur Persatuan (wiki.ubuntu.com)
- File Desktop: menempatkan aplikasi Anda di menu desktop (developer.gnome.org)
- Spesifikasi Menu Desktop (standar.freedesktop.org)
Edit
Setelah berjalan python setup.py builddan kemudian menavigasi ke /build/share/applicationsdan memindahkan test.desktopfile yang dibangun ke ~/.local/share/applications, dan akhirnya mengeksekusi quickly run, hanya tanda tanya untuk ikon yang ditampilkan, tanpa bilah kemajuan yang terlihat .

Edit 2
Setelah penyelidikan lebih lanjut dari .desktopfile yang dibangun , ternyata baris:
Icon=/usr/share/test/media/test.svgdi dalam .desktopfile itu menunjuk ke file ikon yang disebut test.svgyang tidak ada.
Untuk mengatasi masalah ini, saya membuat sebuah folder baru yang disebut testdi /usr/share/menggunakan perintah sudo mkdir testdan kemudian menciptakan lain di dalam folder dari tes folder bernama mediamenggunakan perintah sudo mkdir media, dan kemudian saya pindah test.svgicon file yang terletak di direktori proyek cepat saya di test/data/media/test.svguntuk /usr/share/test/media/. The .svgikon untuk aplikasi sekarang menampilkan dengan benar dalam peluncur bar Persatuan dan dalam tampilan alt-tab, namun masih belum ada terlihat progress bar seperti yang ditunjukkan pada gambar di bawah.

Edit 3
Seperti @dobey, tunjukkan, ada kesalahan ketik pada kode file TestWindow.py di baris:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop"),
dimana test.destkop, seharusnya test.desktop.
Saya mengubah kesalahan ketik ini dan tidak ada perubahan yang terlihat terjadi ketika aplikasi dieksekusi menggunakan quickly run. Namun, setelah menambahkan saluran print('Integrating with launcher')ke add_launcher_integration()tidak ada output yang sesuai di terminal ketika aplikasi dijalankan, menunjukkan bahwa masalahnya tampaknya yang add_launcher_integration()tampaknya tidak dipanggil dengan benar ketika aplikasi dimulai.
Edit 4
Setelah diteliti lebih lanjut, ternyata add_launcher_integration()faktanya dipanggil ketika aplikasi dimulai. Dengan penambahan garis:
os.system("clear")
sebelum saluran
print("Integrating with launcher")
pesan "Integrasi dengan peluncur" sekarang ditampilkan di menu terminal.
Namun, masih belum ada bilah kemajuan yang terlihat di bilah peluncur Unity .
Edit 5
Setelah membangun kembali Quicklyproyek dengan menjalankan python setup.py builddan memindahkan dibangun .desktopberkas dalam Quicklyproyek yang terletak di /build/share/applications/ke ~/.local/share/applications, ikon aplikasi dan progress bar sekarang menampilkan dengan benar dalam Unity launcher bar. Tangkapan layar integrasi peluncur dapat dilihat di bawah ini.
