web-dev-qa-db-fra.com

Icône d'application PyGTK floue dans l'unité

J'ai une icône 128x128 référencée dans le fichier de clairage de la fenêtre principale comme <property name="icon">../media/my-icon.svg</property>.

J'ai essayé, à la fois avec svg et png, mais c'est toujours très flou dans le sélecteur d'application Ubuntu (Alt + Tab).

J'ai remarqué la même chose lors de la création d'une application à partir d'un modèle en utilisant rapidement, le logo Ubuntu est également très flou.

Une idée pourquoi cela pourrait arriver?

6
umpirsky

Que se passe-t-il

Le <property name="icon"> paramètres fait référence à l'icône de la fenêtre, pas à l'icône de l'application. Si je comprends bien, le serveur de fenêtrage Ubuntu (X.org) les écrase à une petite taille après le chargement. Si vous ne vous souvenez pas de l'année 2009, ils étaient utilisés à ce titre:

Picture of window icon

Utiliser des icônes d'application à la place

Ubuntu Unity utilisera ce format basse résolution si nécessaire. Cependant, il récupère généralement les icônes d'application en fonction du Icon= valeur de lanceur d'application d'une fenêtre donnée, appelé "entrée de bureau" .

Si vous êtes un développeur d'applications normal qui prévoit simplement de publier son programme avec le portail des développeurs d'applications , vous pouvez probablement arrêter de lire ici. Le service d'empaquetage gratuit se chargera d'écrire l'entrée de bureau de votre application et de placer ses icônes installées dans la partie droite du système de fichiers. Si non...

The nitty gritty

Comment créer une entrée de bureau et obtenir Ubuntu pour faire correspondre votre fenêtre PyGTK à l'icône et au nom corrects de l'application est déjà documenté dans cette question . Mais où trouvez-vous réellement les icônes place pour obtenir la bonne affichée?

En l'occurrence, la réponse est assez mystérieuse. Selon les spécifications de freedesktop.org, les icônes sont recherchées et chargées par taille, thème d'icône et (si nécessaire) localisation. Les icônes peuvent même être installées dans plusieurs préfixes différents selon la source qui les a installées. Ubuntu "interroge" les icônes par contexte.

Les règles simples: utilisez un nom d'icône unique pour votre application pour éviter les fausses correspondances avec d'autres icônes. Placez les icônes de votre application dans l'un des répertoires suivants (ou un de ses sous-répertoires):

<user prefix>/share/icons/<icon width>x<icon height>/apps/
<user prefix>/share/icons/scalable/apps/

<user_prefix> est le chemin d'installation de votre application (ce sera /usr pour les packages installés par le gestionnaire de packages, /usr/local/ pour les autres logiciels installés pour tous les utilisateurs, et $HOME/.local pour les installations mono-utilisateur). <icon width> et <icon height> (ou "évolutif" pour les SVG) fait référence aux dimensions de l'icône. Si vous créez de nombreuses résolutions d'icônes différentes, Ubuntu trouvera et sélectionnera toujours la bonne pour n'importe quel contexte.

Obtenir la bonne icône d'application à afficher pendant le développement

  1. Créez une icône évolutive ou haute résolution et placez-la dans le sous-répertoire correct du share/ répertoire. Par exemple, myapp.svg irait dans $HOME/.local/share/icons/scalable/

  2. Écrivez une entrée de bureau qui inclut le nom sans extension de votre icône. Par exemple

    [Desktop Entry]
    
    Name=My Application
    Exec=my_binary
    Icon=myapp
    

    Placez ceci dans $HOME/.local/share/applications/. Notez que my_binary doit être n exécutable consultable dans l'un de vos $PATH répertoires .

  3. Exécutez votre application soit (a) depuis Unity Dash, (b) depuis la ligne de commande en utilisant le nom exact de votre $PATH exécutable [par exemple 'mon_binaire'].

Si tout se lit comme du charabia ...

Ouvrez votre navigateur de fichiers et explorez les répertoires /usr/share/applications/ et /usr/share/icons/. Regardez autour de vous et vous comprendrez comment fonctionnent les métadonnées et les icônes d'application dans Ubuntu.

8
Jjed