Başlatıcı ilerleme çubuğunun uygulamamla çalışmasını nasıl sağlayabilirim?


10

Arkaplan araştırması

Ben çağrı python/Gtkkullanı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 .QuicklytestUnityQuicklyQuickly 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ü.

Görünür İlerleme Çubuğu Olmadan Bulanık Uygulama Simgesi

İş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 ).

Unity Launcher İlerleme Çubuğu İşlevselliği


Proje Kodu

.zipProje 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 runyü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ğı .desktopve .desktop.indosyalar arasındaki farkı tam olarak anlamam . test.desktop.inDosyanın bir kopyasını oluşturmak ve yeniden adlandırmak ve doğru dosyaya başvurmak için test.desktopyerleştirmek muhtemelen mantıklı mı ?/usr/share/applicationsget_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:


Düzenle

Çalıştırdıktan python setup.py buildsonra /build/share/applicationsyerleşik test.desktopdosyaya gidip taşıdıktan ~/.local/share/applicationsve 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 .

Görüntülenen uygulama simgesi için soru işareti


Düzenle 2

Yapılmış .desktopdosya üzerinde daha fazla araştırma yapıldıktan sonra , satırın: dosya Icon=/usr/share/test/media/test.svgiçinde mevcut olmayan .desktopbir simge dosyasına işaret test.svgettiği ortaya çıkıyor.

Bu sorunu gidermek için, ben denilen yeni bir klasör oluşturdu testiçinde /usr/share/komutunu kullanarak sudo mkdir testve sonra denilen bir test klasörünün başka klasör içini oluşturulan mediakomutunu kullanarak sudo mkdir media, sonra taşındı test.svgbenim Hızla proje dizininde yer alan simge dosyası test/data/media/test.svgiçin /usr/share/test/media/. Uygulamanın .svgsimgesi 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 .

Yalnızca uygulama simgesi görüntüleniyor


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.destkopolmalı 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 Quicklyyürüterek projeyi python setup.py buildve yerleşik hareket .desktopiçinde dosyayı Quicklybulunan proje /build/share/applications/için ~/.local/share/applicationsBirlik 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.

Uygulama simgesi ve ilerleme çubuğu görüntüleniyor

Yanıtlar:


8

.Desktop dosyası, bamfkütüphanenin bildikleri yere kurulmalıdır .

Dahili .desktop dosyasını (.desktop.in dosyasından oluşturulması gereken) ~/.local/share/applicationsklasörünüze kopyalayarak ve çalıştırarak test edebilmelisiniz update-desktop-database ~/.local/share/applications, ancak uygulamanız herhangi bir MIME türünü işlemiyorsa bu komutu çalıştırmak gerekli olmayabilir. .

.Desktop ve .desktop.in arasındaki fark, .desktop.in öğesinin çevrilmek üzere ayarlanmış olması ve derlemeler sırasında intltool tarafından işlenmesi, .desktop.in dosyasından .desktop.in dosyasından oluşturulmasıdır. dosya.

Ayrıca sadece kodunuzda bir yazım hatası fark ettim:

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

Olması gereken "destkop" ve "masaüstü" dikkat edin. Yeniden yazma hatası değilse, belki de budur. Kodunuzun gerçekten çalıştığını varsayarsak, bu bir sorundur. Çalışmıyorsa, sorun budur. print('Integrating with launcher')Görmek için add_launcher_integration işlevine bir ekleyebilirsiniz . Çalışırken terminalde görünmelidir.


Dahili .desktop dosyası ne zaman oluşturulur? Hızlı çalışma yürütüldüğünde inşa edilmiş mi ve nerede bulunuyor?
Kevin Gurney

Hızlı kullanmıyorum ve tam olarak ne zaman oluşturacağını bilmiyorum, ancak normalde standart bir python kütüphanesi / uygulaması ile, DistUtilsExtra ile setup.py kullanarak, "./setup.py build" veya Ayrıca build.py komutunu da çalıştırır.
dobey

Art arda python setup.py derlemesini çalıştırmayı başardım. Şimdi, sadece test.desktop dosyasını ~ / .local / share / apps içine taşıyabilir miyim ve hızlı bir şekilde çalıştırdığımda ilerleme çubuğu görüntülenmelidir?
Kevin Gurney

Python projesini inşa ettim ve sonra inşa ettiğim .desktop dosyasını ~ / usr / share / apps dizinine taşıdım ve daha sonra önerdiğiniz gibi update-desktop-database ~ / .local / share / apps komutunu çalıştırdım, ancak şimdi yalnızca bir soru işareti alıyorum burada gösterildiği gibi bir uygulama simgesi için: i.stack.imgur.com/RWYud.png .
Kevin Gurney

Test.desktop dosyasındaki Icon = satırı ne diyor?
dobey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.