1 votes

Comment ajouter une icône pour un fichier de type .m (ou toute autre extension spécifique ; Ubuntu 20.04)

Je travaille avec MATLAB la plupart du temps et je serais heureux de différencier visuellement les fichiers de code (.m), les fichiers de données (.mat), les figures (.fig). Une chose assez évidente qui s'avère être assez particulière.

Me voici maintenant :

  • ajout d'une nouvelle entrée mime application/matlab m mat fig en /etc/mime.types
  • icônes matlab-m.png, matlab-fig.png, matlab-mat.png sont mis en /usr/share/icons/gnome/8x8...512x512/mimetypes (chaque dossier ayant une taille correcte) et .svg avec les mêmes noms à /usr/share/icons/gnome/scalable/mimetypes
  • mettre le XML nommé matlab.xml en /usr/share/mime/packages

Voici mon fichier .xml :

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="application/matlab-m">
    <comment>Matlab source code</comment>
    <glob pattern="*.m"/>
    <icon name="matlab-m"/>
  </mime-type>
  <mime-type type="application/matlab-fig">
    <comment>Matlab figure</comment>
    <glob pattern="*.fig"/>
    <icon name="matlab-fig"/>
  </mime-type>
  <mime-type type="application/matlab-mat">
    <comment>matlab data</comment>
    <glob pattern="*.mat"/>
    <icon name="matlab-mat"/>
  </mime-type>
</mime-info>

Ces actions n'ont pas permis au système de lire les icônes des fichiers .m et .fig, mais l'icône des fichiers .mat est soudainement détectée. Veuillez me montrer où je me trompe.

1voto

Igor Izyurov Points 51

Ok, il s'est avéré que l'attribution d'icônes pour les types de fichiers dans Ubunty est une tâche plus délicate que l'on pourrait penser. Quoi qu'il en soit, j'ai trouvé une méthode assez claire explication au cas où quelqu'un ayant le même désir trouverait cette page. En bref :

A. Créez une définition pour un type de fichier inconnu :

  1. Si votre fichier a un type peu commun, de sorte qu'Ubuntu a des problèmes pour le détecter / définir correctement, vous devez le faire vous-même. Une telle identification est appelée "Type MIME" . Le type MIME est spécifié comme un document .xml. Voici mon exemple (fichier de données utilisé par Matlab) :

    FICHIER DE DONNÉES MATLAB

  2. Placez le fichier .xml avec le type MIME à /usr/share/mime/packages - tous les utilisateurs ~/.local/share/mime/packages - un utilisateur

  3. Mise à jour de la base de données des types MIME : sudo update-mime-database /usr/share/mime En cas de succès, un nouveau dossier matlab-types a été créé à /usr/share/mime contenant un fichier généré automatiquement matlabdata.xml . Notez comment cela a été fait selon le type="matlab-types/matlabdata" de notre définition personnalisée du type MIME. Au cas où j'aurais besoin de créer d'autres types MIME liés à Matlab, j'ajouterai une autre définition de type MIME. <mime-type> ... </mime-type> dans mon fichier .xml et les fichiers associés seront stockés dans la même section. /usr/share/mime/matlab-types répertoire.

B. Définissez une icône pour un type MIME (personnalisé) :

  1. Renommez votre icône en fonction de type="matlab-types/matlabdata" du fichier .xml, mais remplacez '/' par '-' : "custom-types-matlabdata.svg"

  2. Placez-le dans le dossier où sont stockées les icônes liées à votre thème de bureau :

    sudo cp icon.svg /usr/share/icons/{THEME}/scalable/mimetypes/custom-types-matlabdata.svg

Notez que vous pouvez placer les images vectorielles dans le dossier /scalable/ . Si vous avez des icônes .png matricielles, vous devez créer un ensemble de copies à différentes échelles et les placer dans leurs dossiers respectifs :

/usr/share/icons/{THEME}/(8x8, 16x16, 22x22…)/mimetypes/…
  1. Mise à jour de l'icône cashe (relogin/restart non requis) :

    sudo update-icon-caches /usr/share/icons/*

  2. FAIT !

PS. Un petit code d'aide pour manipuler les icônes : mettre dans le fichier .sh et exécuter avec sudo

#!/bin/bash

copyName="(NAME).svg"
pasteName="(CATEGORY DIR)-(MIME TYPE).svg"
themeName="(THEME)"
copyFrom='(WHERE DOWNLOADED ICON IS)'
iconsDir="/usr/share/icons" # "~/.icons"
copyTo="$iconsDir/$themeName/scalable/mimetypes"

cp "$copyFrom/$copyName" "$copyTo/$pasteName" && \
echo "FROM:\n\t$copyName\n\t$storagedir\n\nTO:\n\t$pasteName\n\t$pasteTo\n\n"

update-mime-database /usr/share/mime
gtk-update-icon-cache $iconsDir/$themeName/ -f

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