Arkaplan araştırması
Ben çağrı python/Gtk
kullanılarak oluşturulan basit bir uygulama için Unity başlatıcısı içinde ilerleme çubuğunu güncellemeye çalışıyorum ; Ancak talimatları uygulayarak bu video , başarıyla ilerleme çubuğunun güncellemek için edemedik fırlatıcı . Unity Integration videosunda kullanılmadı, bu nedenle uygulamanın yapılandırılma şekli biraz farklıydı ve videoda kullanılan kod, varsayılan bir şablon uygulamasında değişiklik yapılmadan düzgün çalışmıyor gibi görünüyor .Quickly
test
Unity
Quickly
Quickly ubuntu-application
Ekran görüntüleri
Uygulama simgesinin şu anda Unity Launcher'da görüntülendiği için ekran görüntüsü.
İşte istediğim Unity başlatıcısı ilerleme çubuğu işlevselliğinin bir ekran görüntüsü (posta simgesine bindirilmiştir: wiki.ubuntu.com ).
Proje Kodu
.zip
Proje dosyalarını içeren bir dosya burada bulunabilir .
Beklenen davranış
Yukarıdaki kodun Unity Launcher'daki test uygulaması simgesine% 75 dolu bindirilmiş bir ilerleme çubuğu göstermesini beklerim , ancak uygulama yalnızca çalıştırıldığında ve komut quickly run
yürütüldüğünde ilerleme çubuğu görüntülemez .
Problem Soruşturması
Sorunun düzgün bir şekilde uygulamanın ana penceresine bir referans almıyorum olduğuna inanıyorum, ancak, bu sorunu nasıl düzelteceğimi bilmiyorum. Ayrıca satır inanıyorum: sıradan dosyaları yerine dosyaları oluşturur self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
, çünkü bu da sorunlara neden olup olmadığını emin değilim çünkü başka bir komplikasyon kaynağı olabilir.Quickly
.desktop.in
.desktop
Belki de sorunun başka bir kaynağı .desktop
ve .desktop.in
dosyalar arasındaki farkı tam olarak anlamam . test.desktop.in
Dosyanın bir kopyasını oluşturmak ve yeniden adlandırmak ve doğru dosyaya başvurmak için test.desktop
yerleştirmek muhtemelen mantıklı mı ?/usr/share/applications
get_for_desktop_id("test,desktop")
.desktop
İlgili Araştırma Linkleri
Yine de, .desktop ve .desktop.in dosyaları arasındaki fark konusunda net değilim, ancak .desktop dosyaları üzerinde biraz araştırma yaptım ve birkaç bağlantıya rastladım:
- Masaüstü Giriş Dosyaları (library.gnome.org)
- Masaüstü Dosya Kurulum Dizini (askubuntu.com)
- Unity Launcher API'sı (wiki.ubuntu.com)
- Masaüstü Dosyaları: uygulamanızı masaüstü menülerine yerleştirme (developer.gnome.org)
- Masaüstü Menüsü Özellikleri (standards.freedesktop.org)
Düzenle
Çalıştırdıktan python setup.py build
sonra /build/share/applications
yerleşik test.desktop
dosyaya gidip taşıdıktan ~/.local/share/applications
ve son olarak yürüttükten sonra quickly run
, görünür bir ilerleme çubuğu olmadan yalnızca bir simge için bir soru işareti görüntülenir .
Düzenle 2
Yapılmış .desktop
dosya üzerinde daha fazla araştırma yapıldıktan sonra , satırın:
dosya Icon=/usr/share/test/media/test.svg
içinde mevcut olmayan .desktop
bir simge dosyasına işaret test.svg
ettiği ortaya çıkıyor.
Bu sorunu gidermek için, ben denilen yeni bir klasör oluşturdu test
içinde /usr/share/
komutunu kullanarak sudo mkdir test
ve sonra denilen bir test klasörünün başka klasör içini oluşturulan media
komutunu kullanarak sudo mkdir media
, sonra taşındı test.svg
benim Hızla proje dizininde yer alan simge dosyası test/data/media/test.svg
için /usr/share/test/media/
. Uygulamanın .svg
simgesi artık Unity başlatıcı çubuğunda ve alt sekme görünümünde düzgün bir şekilde görüntüleniyor, ancak aşağıdaki ekran görüntüsünde gösterildiği gibi hala görünür bir ilerleme çubuğu yok .
Düzenle 3
@Dobey'in belirttiği gibi, satırdaki TestWindow.py dosyasının kodunda bir yazım hatası vardı:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
,
nerede test.destkop
olmalı test.desktop
.
Bu yazım hatasını değiştirdim ve uygulama kullanılarak yürütüldüğünde hiçbir görünür değişiklik olmadı quickly run
. Ancak, hat ilave edildikten sonra print('Integrating with launcher')
hiç add_launcher_integration()
bir sorun olduğu görülmektedir gösteren uygulama çalıştırıldı ve terminalde gelen çıkış yoktu add_launcher_integration()
uygulama başladığında doğru çağrılacak görünmemektedir.
Düzenle 4
Daha fazla araştırmadan sonra, add_launcher_integration()
aslında uygulama başladığında denir. Hattın eklenmesiyle:
os.system("clear")
çizgiden önce
print("Integrating with launcher")
"Başlatıcı ile entegrasyon" mesajı artık terminal
.
Bununla birlikte, Unity başlatıcı çubuğunda görünür bir ilerleme çubuğu yoktur .
Düzenleme 5
Yeniden sonra Quickly
yürüterek projeyi python setup.py build
ve yerleşik hareket .desktop
içinde dosyayı Quickly
bulunan proje /build/share/applications/
için ~/.local/share/applications
Birlik başlatıcısı çubuğu düzgün şimdi görüntüler, uygulama simgesi ve ilerleme çubuğu. Başlatıcı entegrasyonunun bir ekran görüntüsü aşağıda görülebilir.