Bagaimana cara membuat bilah kemajuan peluncur berfungsi dengan aplikasi saya?

10

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.

Ikon Aplikasi Buram Tanpa Bilah Kemajuan yang Terlihat

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

Fungsi Bilah Kemajuan Peluncur Unity


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:


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 .

Tanda tanya untuk ikon aplikasi ditampilkan


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.

Hanya ikon aplikasi yang ditampilkan


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.

Ikon aplikasi dan bilah kemajuan ditampilkan

Kevin Gurney
sumber

Jawaban:

8

File .desktop harus diinstal di lokasi tempat bamfperpustakaan tahu tentangnya.

Anda harus dapat menguji dengan menyalin file .desktop yang dibuat (yang harus dibuat dari .desktop.in), ke dalam ~/.local/share/applicationsfolder Anda , dan menjalankannya update-desktop-database ~/.local/share/applications, meskipun menjalankan perintah ini mungkin tidak diperlukan jika aplikasi Anda tidak menangani jenis MIME apa pun. .

Perbedaan antara .desktop dan .desktop.in adalah bahwa .desktop.in diatur untuk diterjemahkan, dan diproses oleh intltool selama pembuatan, agar terjemahannya disisipkan, membuat file .desktop dari .desktop.in mengajukan.

Saya juga baru saja memperhatikan kesalahan ketik pada kode Anda:

self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")

Perhatikan "destkop" vs. "desktop" yang seharusnya. Mungkin ini dia, jika itu bukan kesalahan pengetikan ulang. Dengan asumsi kode Anda sedang dijalankan, ini merupakan masalah. Jika tidak berjalan, maka itulah masalahnya. Anda dapat menambahkan print('Integrating with launcher')fungsi add_launcher_integration untuk dilihat. Itu akan muncul di terminal ketika dijalankan.

dobey
sumber
Kapan file .desktop yang dibuat dibuat? Apakah ini dibangun ketika dijalankan dengan cepat dijalankan, dan di mana letaknya?
Kevin Gurney
Saya tidak menggunakan dengan cepat, dan tidak tahu kapan tepatnya itu akan membangunnya, tetapi biasanya dengan pustaka / aplikasi python standar, menggunakan setup.py dengan DistUtilsExtra, itu akan terjadi ketika menjalankan "./setup.py build" atau perintah setup.py yang juga menjalankan build.
dobey
Saya berhasil menjalankan python setup.py build. Jadi, sekarang apakah saya hanya memindahkan file test.desktop ke ~ / .local / share / aplikasi dan bilah kemajuan seharusnya hanya ditampilkan ketika saya menjalankan cepat dijalankan?
Kevin Gurney
Saya membangun proyek python dan kemudian memindahkan file .desktop yang dibangun ke ~ / usr / share / aplikasi dan kemudian menjalankan pembaruan-desktop-database ~ / .local / share / aplikasi seperti yang Anda sarankan, tetapi sekarang saya hanya mendapatkan tanda tanya untuk ikon aplikasi seperti yang ditunjukkan di sini: i.stack.imgur.com/RWYud.png .
Kevin Gurney
Apa yang dikatakan Ikon = baris dalam file test.desktop?
dobey