Categories
Internet, Unix en security

XDG gebruiken in scripts

Vroeger had je voldoende aan de variabele $HOME en moest je gokken naar sommige directories. Gelukkig is er met de komst van de XDG-specificatie daar verandering in gekomen. Er zijn een paar directories met een vaste locatie zoals $HOME/.config en $HOME/.cache, maar andere zijn dynamisch op basis van taalgebied.

En hier komt ook een moeilijkheid voor developers, want wat is nu de juiste directory voor het bureaublad. Is dat $HOME/Desktop of $HOME/Bureablad? Je kan proberen en hopen dat het goed gaat, maar dan zal je dat voor alle landen en talen op deze wereld moeten doen. Dit is gelukkig een onbegonnen zaak en hiervoor voorziet de XDG-specificatie.

In een shellscript kunnen variabele worden gezet door de volgende code op te nemen en dan gebruik maken de gedefinieerde variabelen zoals XDG_DESKTOP_DIR of XDG_DOWNLOAD_DIR.

if [ -f $HOME/.config/user-dirs.dirs ]
then
. $HOME/.config/user-dirs.dirs
fi

Een tweede optie is door gebruik te maken van een commando welke de juiste locatie teruggeeft.

$ xdg-user-dir DESKTOP
/home/username/Bureaublad
$ xdg-user-dir DOWNLOAD
/home/username/Download
$

Er zijn voor verschillende omgevingen ook voorzieningen getroffen waardoor het transparanter gaat worden en hopelijk wordt dit ook zo voor de gebruikers. Dit is wel een belangrijke stap die bij GNOME 2.22 en 2.24 is genomen om het platform transparanter voor andere developers te maken. Hopelijk volgen andere zoals KDE en GNOME nu ook al doen.

Categories
Technologie & techniek

Muziek op USB-storage

Het multimedia geweld werd altijd gezien als een probleem op Linux, want het was moeilijk en je moest cryptische dingen overtypen. Maar dit tijdperk is al een geleden tijd afgesloten met de komst van oa HAL en D-BUS welke een abstractielaag vormen om automatisch bijvoorbeeld een muziek CD-ROM te starten of je USB-storage beschikbaar te maken. Projecten zoals GNOME en KDE maken dankbaar gebruik van deze functionaliteit wat direct merkbaar is voor de gebruiker.

Een praktisch voorbeeld hiervan is je muziekverzameling op USB-storage welke netjes bruikbaar is in bijvoorbeeld Rhythmbox. Maak een bestandje aan met de naam .is_audio_player op het hoogste niveau van het USB-storage device en vul deze met de volgende inhoud:

audio_folders=MUSIC/,RECORDINGS/
folder_depth=3
output_formats=application/ogg,audio/x-ms-wma,audio/mpeg

Elke keer als je dit USB-storage device in een computer steekt welke de specificaties van freedesktop.org begrijpt zal oa je muziekspeler op de hoogte worden gebracht. Dit kan zijn bij je eigen Linux-desktop of de FreeBSD-desktop bij een kennis, maar ook je Sun Solaris-workstation op je werk. Het begint er op te lijken alsof computers eindelijk makkelijk beginnen te worden voor de normale gebruiker.