Penelitian Latar Belakang
Saya berusaha memperbarui bilah progres di dalam peluncur Unity untuk python/Gtk
aplikasi sederhana yang dibuat menggunakan Quickly
panggil test
; namun, mengikuti petunjuk dalam video ini , saya belum berhasil memperbarui bilah progres di Unity
peluncur . Dalam video Unity Integration, Quickly
tidak digunakan, sehingga cara aplikasi terstruktur sedikit berbeda, dan kode yang digunakan dalam video tampaknya tidak berfungsi dengan baik tanpa modifikasi dalam Quickly ubuntu-application
aplikasi 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 .zip
file 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 run
dijalankan.
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 Quickly
membuat .desktop.in
file daripada .desktop
file biasa , jadi saya tidak yakin apakah itu dapat menyebabkan masalah juga.
Mungkin, sumber masalah lainnya adalah saya tidak sepenuhnya memahami perbedaan antara .desktop
dan .desktop.in
file. Apakah itu mungkin masuk akal untuk membuat salinan dari test.desktop.in
berkas dan nama itu test.desktop
, dan tempatkan dalam /usr/share/applications
agar get_for_desktop_id("test,desktop")
untuk referensi yang benar .desktop
berkas?
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 build
dan kemudian menavigasi ke /build/share/applications
dan memindahkan test.desktop
file 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 .desktop
file yang dibangun , ternyata baris:
Icon=/usr/share/test/media/test.svg
di dalam .desktop
file itu menunjuk ke file ikon yang disebut test.svg
yang tidak ada.
Untuk mengatasi masalah ini, saya membuat sebuah folder baru yang disebut test
di /usr/share/
menggunakan perintah sudo mkdir test
dan kemudian menciptakan lain di dalam folder dari tes folder bernama media
menggunakan perintah sudo mkdir media
, dan kemudian saya pindah test.svg
icon file yang terletak di direktori proyek cepat saya di test/data/media/test.svg
untuk /usr/share/test/media/
. The .svg
ikon 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 Quickly
proyek dengan menjalankan python setup.py build
dan memindahkan dibangun .desktop
berkas dalam Quickly
proyek 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.