Ricerca di fondo
Sto tentando di aggiornare la barra di avanzamento nel programma di avvio di Unity per una semplice python/Gtk
applicazione creata usando Quickly
chiamato test
; tuttavia, seguendo le istruzioni in questo video , non sono stato in grado di aggiornare correttamente la barra di avanzamento nel programma di Unity
avvio . Nel video Unity Integration Quickly
non è stato utilizzato, quindi il modo in cui l'applicazione era strutturata era leggermente diverso e il codice utilizzato nel video non sembra funzionare correttamente senza modifiche in Quickly ubuntu-application
un'applicazione modello predefinita .
Screenshots
Ecco uno screenshot dell'icona dell'applicazione così come è attualmente visualizzata in Unity Launcher.
Ecco uno screenshot del tipo di funzionalità della barra di avanzamento del programma di avvio di Unity che vorrei (sovrapposto all'icona della posta: wiki.ubuntu.com ).
Codice del progetto
Un .zip
file contenente i file di progetto è disponibile qui .
Comportamento atteso
Mi aspetto che il codice sopra riportato mostri una barra di avanzamento che è piena al 75% sovrapposta sull'icona per l'applicazione di prova in Unity Launcher , ma l'applicazione viene eseguita e non visualizza alcuna barra di avanzamento quando quickly run
viene eseguito il comando .
Indagine sui problemi
Credo che il problema sia che non sto ricevendo correttamente un riferimento alla finestra principale dell'applicazione, tuttavia, non sono sicuro di come risolvere correttamente questo problema. Credo anche che la linea: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
potrebbe essere un'altra fonte di complicazioni perché Quickly
crea .desktop.in
file piuttosto che .desktop
file ordinari , quindi non sono sicuro che ciò potrebbe causare problemi.
Forse, un'altra fonte del problema è che non capisco del tutto la differenza tra .desktop
e i .desktop.in
file. Ha forse senso fare una copia del test.desktop.in
file e rinominarlo test.desktop
e posizionarlo /usr/share/applications
per get_for_desktop_id("test,desktop")
fare riferimento al .desktop
file corretto ?
Link di ricerca correlati
Anche se non sono ancora chiaro sulla differenza tra i file .desktop e .desktop.in, ho fatto qualche ricerca sui file .desktop e ho trovato un paio di collegamenti:
- File delle voci del desktop (library.gnome.org)
- Directory di installazione dei file desktop (askubuntu.com)
- API Unity Launcher (wiki.ubuntu.com)
- File desktop: inserendo la tua applicazione nei menu desktop (developer.gnome.org)
- Specifiche del menu del desktop (standards.freedesktop.org)
modificare
Dopo aver eseguito python setup.py build
e quindi /build/share/applications
spostato e spostato il test.desktop
file creato ~/.local/share/applications
e infine eseguito quickly run
, viene visualizzato solo un punto interrogativo per un'icona, senza barra di avanzamento visibile .
Modifica 2
Dopo ulteriori indagini sul .desktop
file creato , si scopre che la linea:
Icon=/usr/share/test/media/test.svg
all'interno del .desktop
file puntava a un file icona chiamato test.svg
che non esisteva.
Per risolvere questo problema, ho creato una nuova cartella denominata test
in /usr/share/
utilizzando il comando sudo mkdir test
e poi creato un'altra all'interno della cartella di prova chiamata media
utilizzando il comando sudo mkdir media
, e poi mi sono trasferito il test.svg
file di icona si trova nella mia directory del progetto rapidamente al test/data/media/test.svg
di /usr/share/test/media/
. L' .svg
icona dell'applicazione ora viene visualizzata correttamente nella barra di avvio di Unity e nella vista alt-tab, tuttavia non è ancora presente una barra di avanzamento visibile, come mostrato nella schermata seguente.
Modifica 3
Come ha sottolineato @dobey, c'era un errore di battitura nel codice del file TestWindow.py alla riga:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
,
dove test.destkop
, dovrebbe essere test.desktop
.
Ho cambiato questo errore di battitura e non si sono verificate modifiche visibili quando l'applicazione è stata eseguita utilizzando quickly run
. Tuttavia, dopo aver aggiunto la linea print('Integrating with launcher')
al add_launcher_integration()
terminale non c'era un output corrispondente quando l'applicazione era in esecuzione, indicando che il problema sembra essere che add_launcher_integration()
non sembra essere chiamato correttamente all'avvio dell'applicazione.
Modifica 4
Dopo ulteriori indagini, si scopre che add_launcher_integration()
in realtà viene chiamato all'avvio dell'applicazione. Con l'aggiunta della linea:
os.system("clear")
prima della linea
print("Integrating with launcher")
il messaggio "Integrazione con launcher" ora viene visualizzato in terminal
.
Tuttavia, nella barra di avvio di Unity non è ancora visibile la barra di avanzamento .
Modifica 5
Dopo aver ricostruito il Quickly
progetto di esecuzione python setup.py build
e spostando il costruito .desktop
file all'interno del Quickly
progetto situato al /build/share/applications/
di ~/.local/share/applications
, l'icona dell'applicazione e la barra di avanzamento ora visualizza correttamente nell'Unità launcher bar. Di seguito è possibile vedere uno screenshot dell'integrazione del programma di avvio.