Date Tags xfce

Je continue dans ma série de billets non-trollistiques (désolé), et qui peuvent servir (désolé²).

Les emblèmes sont des sortes de petits symboles qu’il est possible d’ajouter sur l’icône d’un dossier/fichier pour faire joli (voire, éventuellement, pour le distinguer des autres). Thunar supporte quelques emblèmes, et vous pouvez même les affecter à un dossier/fichier par l’interface graphique : clic bouton droit sur votre fichier > Propriétés > onglet Emblèmes. Mais, évidemment, on peut les régler depuis la ligne de commande, c’est plus marrant.

Thunar stocke les emblèmes dans une mini base de données, qui utilise le “moteur” TDB. Soit dit en passant, il inclut sa propre copie — qui date de 1999 — des sources de TDB, c’est mal et pas optimal, mais on y travaille (remarquez, les duplications de code, ça ne dérange pas trop les gens de Kubuntu, qui ne savent pas trop lire non plus, les pauvres, mais passons — c’est pas comme si l’un des packageurs était archive-admin, hein). La base de données des emblèmes de Thunar se trouve à l’emplacement suivant : ~/.cache/Thunar/metafile.tdb. Vous pouvez tenter de l’ouvrir avec un éditeur de texte si vous lisez l’UTF-372.5 couramment, mais c’est moins drôle.

Pour s’amuser avec la base tdb, on va utiliser tdbtool et tdbdump. Sous Debian/Ubuntu, ces outils se trouvent dans le paquet tdb- tools (ajustez en fonction de votre distribution ; si ça n’existe pas dans votre rolling release à la mode, c’est bien fait pour vous). C’est parti !

Afficher un dump de la base

Comme son nom l’indique, tdbdump est là pour ça :

$ tdbdump .cache/Thunar/metafile.tdb
{
key(28) = "file:///home/mrpouit/Maildir"
data(16) = "\00emblem-mail\00\00\00\00"
}
{
key(24) = "file:///home/mrpouit/bin"
data(16) = "\00emblem-system\00\00"
}
{
key(30) = "file:///home/mrpouit/Packaging"
data(16) = "\00emblem-debian\00\00"
}

C’est moche, mais c’est simple : en clé, le nom du fichier/dossier, en donnée, le nom de l’emblème, avec un peu de \00-padding autour pour arriver à la taille voulue (ici, 16).

Affecter un emblème à un dossier/fichier

Cette fois-ci, on utilise tdbtool, en lui passant le chemin du fichier tdb et la requête à effectuer (ici, une insertion) :

$ tdbtool .cache/Thunar/metafile.tdb insert "file:///home/mrpouit/plouf" "\00emblem-danger\00\00"
$ tdbdump .cache/Thunar/metafile.tdb
{
key(28) = "file:///home/mrpouit/Maildir"
data(16) = "\00emblem-mail\00\00\00\00"
}
{
key(24) = "file:///home/mrpouit/bin"
data(16) = "\00emblem-system\00\00"
}
{
key(26) = "file:///home/mrpouit/plouf"
data(16) = "\00emblem-danger\00\00"
}
{
key(30) = "file:///home/mrpouit/Packaging"
data(16) = "\00emblem-debian\00\00"
}

Ouvrez Thunar, et observez le résultat, ce n’est pas très beau, mais ça marche. N’oubliez pas de créer le dossier/fichier au préalable s’il n’existe pas, sinon vous ne verrez pas l’emblème.

Faites quand même attention à la taille de la donnée, je suppose qu’il faut qu’elle soit un multiple de 4, gérez bien le padding avec les \00 pour arrondir au multiple suivant (c’est fort possible que vous corrompiez votre tdb sinon). Faites d’abord des tests depuis l’interface de Thunar avec des emblèmes très longs (emblem-development, emblem-dropbox-*, etc.) pour vous assurer que c’est pareil chez vous.

Changer l’emblème

Avec tdbtool, c’est l’opération store (ils ne pouvaient pas appeler ça update comme tout le monde) :

$ tdbtool .cache/Thunar/metafile.tdb store "file:///home/mrpouit/plouf" "\00emblem-default\00"
Storing key:

key 26 bytes
file:///home/mrpouit/plouf
data 16 bytes
[000] 00 65 6D 62 6C 65 6D 2D  64 65 66 61 75 6C 74 00  .emblem- default
$ tdbdump .cache/Thunar/metafile.tdb
{
key(28) = "file:///home/mrpouit/Maildir"
data(16) = "\00emblem-mail\00\00\00\00"
}
{
key(24) = "file:///home/mrpouit/bin"
data(16) = "\00emblem-system\00\00"
}
{
key(26) = "file:///home/mrpouit/plouf"
data(16) = "\00emblem-default\00"
}
{
key(30) = "file:///home/mrpouit/Packaging"
data(16) = "\00emblem-debian\00\00"
}

Ouvrez une nouvelle fenêtre de Thunar pour observer le changement.

Supprimer l’emblème

C’est beaucoup plus facile, il y a juste besoin de la clé :

$ tdbtool .cache/Thunar/metafile.tdb delete "file:///home/mrpouit/plouf"
$ tdbdump .cache/Thunar/metafile.tdb
{
key(28) = "file:///home/mrpouit/Maildir"
data(16) = "\00emblem-mail\00\00\00\00"
}
{
key(24) = "file:///home/mrpouit/bin"
data(16) = "\00emblem-system\00\00"
}
{
key(30) = "file:///home/mrpouit/Packaging"
data(16) = "\00emblem-debian\00\00"
}

Ouvrez de nouveau une nouvelle fenêtre de Thunar, et appréciez la disparition de l’emblème tout moche.

Voilà pour l’astuce foireuse du jour. J’avoue que je ne sais pas si on est supposé tripatouiller le tdb de Thunar avec ces outils (il y a un avertissement dans la page de manuel qui déconseille d’utiliser ça sur ceux de samba…), mais j’ai testé à plusieurs reprises sur la série 1.2.x et le chat du voisin n’est pas arrivé en hurlant pour m’installer GNOME, donc ça me semble ok. ;-)

Vous trouverez plus d’options pour tdbtool dans sa page de man.