10 votes

Comment définir l'icône d'une application dans le fichier .desktop d'une application Ubuntu Touch ?

Je suis en train d'apprendre le SDK Ubuntu, et j'ai fait un nouveau projet HTML5 Touch UI avec Qt Creator.

Le dossier du projet a un .desktop fichier. J'ai ensuite ajouté un launcher.png dans le dossier de mon projet.

Voici mon .desktop Datei:

[Desktop Entry]
Name=myapp
StartupNotify=true
Icon=/usr/share/myapp/launcher.png
MimeType=text/plain;
NoDisplay=true
Comment=something...
Exec=/usr/bin/qmlscene $@ /usr/share/myapp/diaspora-webclient.qml
Terminal=false
Type=Application
X-Ubuntu-Touch=true

Maintenant, j'appuie sur Ctrl + R pour exécuter l'application avec qmlscene . L'application fonctionne, mais launcher.png ne s'affiche pas comme icône de l'application dans le lanceur Unity.

Dois-je exécuter une commande pour mettre à jour les modifications ? Ou dois-je déplacer le fichier launcher.png まで /usr/share/myapp/launcher.png via le code in-app ?

27voto

iBelieve Points 5254

Il y a deux choses qui ne vont pas dans la façon dont vous faites les choses.

Le premier de tous, .desktop sont destinés aux applications installées, et non à être exécutés par l'intermédiaire de l'interface utilisateur. Ctrl + R . Pour installer votre application, vous devez l'empaqueter et installer le paquet. Vous trouverez plus de détails sur l'empaquetage de votre application et sa publication dans le Click App Store aquí .

Deuxièmement, les chemins que vous avez dans les .desktop doivent être des fichiers locaux, et non des chemins absolus. Voici un exemple de .desktop Datei:

[Desktop Entry]
Name=Tasks
Comment=Your tasks, every device, everywhere.
Exec=qmlscene $@ ubuntu-tasks.qml
Icon=ubuntu-tasks.png
Terminal=false
Type=Application
X-Ubuntu-Touch=true

Quelques points à noter :

  • El Exec doit être au format suivant qmlscene $@ <file.qml> avec juste le nom de votre fichier QML principal, sans information sur le répertoire.

  • El Icon doit être sous la forme Icon=<icon.png> avec seulement le nom du fichier (y compris l'extension), sans information sur le répertoire.

Les informations que j'ai fournies ci-dessus permettent d'exécuter votre application sur un appareil Ubuntu Touch en l'empaquetant dans un paquet Click. Les paquets Click sont destinés à Ubuntu Touch et ne sont actuellement pas intégrés au bureau Unity. Donc, si vous voulez être en mesure de lancer votre application à partir du Dash/Launcher et aussi voir son icône, vous devrez faire deux choses :

  1. Copiez votre .desktop pour ~/.local/share/applications et utilisez un chemin absolu vers votre icône au lieu du simple nom de fichier, comme vous le feriez lors de l'empaquetage de l'application.

  2. Copiez votre icône dans ~/.icons

0voto

pedda Points 31

Version de bureau : Pour moi, dans Bureau Ubuntu 20.04 l'icône de Squeezeplay n'apparaissait pas, ni dans la fenêtre de recherche, ni dans le panneau latéral du dock de gnome3.

La solution au-dessus de a travaillé à partir de @iBelieve pour moi, une icône apparaît dans la boîte de dialogue de recherche, mais pas dans le panneau latéral de gnome.

Ajout de la StartupWMClass=jive (découvert en cliquant sur l'application ouverte à l'aide de xprop WM_CLASS dans le cli)au fichier de bureau de la réponse aquí J'ai terminé la Mission, maintenant je peux voir partout (dialogue de recherche, appuyer sur la touche "Windows" et panneau latéral du dock gnome) le fichier d'icône fourni (format de fichier png, taille max 512x512, j'ai choisi 256x256) ! Le fichier du bureau a été généré comme suit :
$ vim ~/.local/applications/squeezeplay.desktop :

[Desktop Entry]
Name=Squeezeplay
StartupNotify=true
MimeType=text/plain;
Comment=https://sourceforge.net/projects/lmsclients/files/squeezeplay/linux/ The Linux version of Squeezelite-X (similar) working with LMS
Exec=/opt/squeezeplay/bin/squeezeplay.sh
Icon=squeezeplay-icon2-256x256.png
Terminal=false
Type=Application
StartupNotify=true
StartupWMClass=jive
Categories=Utility;Radio;

Comme expliqué, l'icône a été stockée dans ~/.icons avec le nom donné dans Icon= ! Merci à @iBelieve et @Puspam !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X