Gestion du type MIME JSON

Comment ajouter la gestion du type MIME json, notamment la coloration syntaxique dans Gedit, à une distribution linux qui ne le gère pas nativement (comme la Ubuntu 10.10 par exemple).

mkdir -p ~/.local/share/mime/packages
mkdir -p ~/.local/share/gtksourceview-2.0/language-specs
Créer les dossiers locaux pour gérer le type MIME et la coloration syntaxique JSON.
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="application/json">
        <comment>JSON data</comment>
        <comment xml:lang="fr">Données JSON</comment>
        <sub-class-of type="application/javascript"/>
        <generic-icon name="text-x-script"/>
        <glob pattern="*.json"/>
    </mime-type>
</mime-info>
Créer le fichier ~/.local/share/mime/packages/json.xml
<?xml version="1.0" encoding="UTF-8"?>
<language id="json" _name="JSON" version="2.0" _section="Sources">
    <metadata>
        <property name="mimetypes">application/json</property>
        <property name="globs">*.json</property>
    </metadata>
    <styles>
        <style id="string" _name="String" map-to="def:string"/>
        <style id="escaped-character" _name="Escaped Character" map-to="def:special-char"/>
        <style id="number" _name="Number" map-to="def:number"/>
        <style id="boolean" _name="Boolean" map-to="def:boolean"/>
        <style id="null" _name="Null" map-to="def:special-constant"/>
        <style id="key" _name="Key" map-to="def:type"/>
    </styles>
    <definitions>
        <context id="json">
            <include>
                <context id="array">
                    <start>\[</start>
                    <end>\]</end>
                    <include>
                        <context id="value">
                            <include>
                                <context ref="array"/>
                                <context ref="object"/>
                                <context id="number" style-ref="number">
                                    <match>\b-?([1-9][0-9]*|0)(\.[0-9]+)?([eE][-+]?[0-9]+)?</match>
                                </context>
                                <context id="boolean" style-ref="boolean">
                                    <match>\b(true|false)</match>
                                </context>
                                <context id="null" style-ref="null">
                                    <match>\b(null)</match>
                                </context>
                                <context id="string" end-at-line-end="true" style-ref="string">
                                    <start>&quot;</start>
                                    <end>&quot;</end>
                                    <include>
                                        <context id="escaped-character" style-ref="escaped-character">
                                            <match>\\.</match>
                                        </context>
                                    </include>
                                </context>
                            </include>
                        </context>
                    </include>
                </context>
                <context id="object">
                    <start>\{</start>
                    <end>\{</end>
                    <include>
                        <context id="key" style-ref="key">
                            <match>&quot;([^&quot;]|\\.)+&quot;[ \t]*:</match>
                        </context>
                        <context ref="value"/>
                    </include>
                </context>
            </include>
        </context>
    </definitions>
</language>
Créer le fichier ~/.local/share/gtksourceview-2.0/language-specs/json.lang
update-mime-database ~/.local/share/mime/
Mettre à jour la base de données des types MIME.
nautilus --quit
Redémarrer Nautilus pour que les changements soient pris en compte.

Source : creationix, « My gedit customizations ».