dinsdag 28 juli 2009

Desktop-bestanden

Ik heb dus weer al een tijdje niet meer geblogd, net als eigenlijk eender welke computeractiviteit :). Nu ja, hoe dan ook is er druk vertaald aan KDE 4.3, en die zal vandaag worden getagd (interne release), wat dus inhoudt dat de release over een weekje volgt.

In elk geval, ik geloof dat deze blog dient om mijn kennis over bepaalde Linuxonderwerpen over te brengen aan anderen. Gezien mijn vertaal-achtergrond heb ik toevallig enige kennis van de zgn. desktop-bestanden die zorgen voor de opbouw van het programmamenu van bijv. Gnome en KDE.

Anders dan Windows, waar het startmenu beschreven wordt in het moeilijk te bewerken en (voor mij toch) niet transparante register, wordt op Unix zo veel mogelijk met tekstbestanden gewerkt. Dit zijn dus tekstbestanden met de uitgang .desktop, en ze maken deel uit van freedesktop.org, dat de samenwerking tussen de verschillende desktops probeert te bevorderen. De specificatie is hier.


De bestanden zijn te vinden in de map /usr/share/applications/. Mocht een programma geïnstalleerd zijn in een andere prefix (bijv. /opt/programma/), moet je achter dat pad ook weer share/applications plakken. Maar /usr/share is standaard. KDE zet zijn bestanden (dit zijn er veel, daarom) in een aparte map in die map, namelijk kde4/.

Goed, laten we eens zo'n bestand naderbij bekijken. Kies een bestand uit in deze map en open het met een willekeurige editor, en zoek de volgende elementen. Ik zal uitgaan van het bestand voor marble, de virtuele wereldbol van KDE.

Elk bestand begint met de volgende regel

[Desktop Entry]

deze bepaald dat het desktop-bestand is, conform de standaarden.
De volgende regels kunnen eigenlijk in willekeurige volgorde komen.

Type=Application

Deze regel vertelt dat het om een gewoon programma gaat. Andere waarden zijn "Link" en "Directory", respectievelijk om naar webpagina's of mappen te wijzen.

Exec=marble

Exec geeft het uit te voeren commando, dit commando in een terminal tikken zou hetzelfde resultaat geven. Als het om een link gaat, gebruik je "URL" i.p.v. "Exec".

Name=Marble

Gewoon de naam van het programma.
Dit waren de verplichte delen, de rest is optioneel, maar wordt vaak gebruikt.

MimeType=application/vnd.google-earth.kml+xml;application/gpx+xml;

De bestanden die dit programma kan openen, heel handig, want zo wordt een programma automatisch met de juiste bestanden geassocieerd. Een lijst van de mimetypes vind je hier.

GenericName=Desktop Globe

Verteld de gebruiker het soort programma waar het over gaat. Kan ook "webbrowser", "mediaspeler", enz. zijn. Deze beschrijving vindt je veel terug in menu's.

Icon=marble

Het te tonen pictogram in het menu. Dit is gewoon de bestandsnaam van de pictogrammen in /usr/share/icons of /usr/share/pixmaps, zonder bestandsexistentie.

Terminal=false

Moeten we dit uitvoeren in een terminal of niet? Waarden zijn true of false, standaard is dit trouwens false, dus deze regel was niet nodig geweest.

Categories=Qt;KDE;Education;Geography;

De categorieën in het menu waar we willen inkomen.

Er is ook nog

Comment=

Maar niet in dit bestand (maar wel veel bij Gnome), dat kort beschrijft wat je kan doen met het programma. Dit zou kunnen zijn:

Comment=Look at the world on your computer

of iets dergelijks.

De regels "Name", "Comment" en "GenericName" kunnen ook worden vertaald. Dit wordt gedaan met NaamVanDeSleutel[taalcode] als sleutel, bijvoorbeeld:

GenericName[nl]=Globe op het bureaublad

Verder heb je ook nog sleutels beginnend met x-, die worden gebruikt om het bestand uit te breiden met extra informatie voor specifieke programma's.

X-DocPath=marble/index.html

bijvoorbeeld verteld KDE waar de documentatie is. Gnome en consorten negeren deze regel.

Sommige programma's gebruiken .desktop-bestanden voor hun eigen doeleinden, bijvoorbeeld om plugins te benaderen. Met deze basiskennis zal je deze bestanden wel kunnen doorgronden, aangezien ze gelijk zijn opgebouwd.

Geen opmerkingen: