Xml de description de dossiers nautilus

Description

cette source d'adresse aux utilisateurs de gnome.

nautilus permet de personaliser l'affichage des dossiers, mettre une image a la place de l'icone par exemple. Pour ceux qui telechargent de la musique libre sur jamendo, vous pouvez constater qu'une fois que vous avez telecharge 100 albums, il devient difficile de changer chaque image de chaque album...

ce script automatise la tache, il va chercher dans le dossier, la premiere image vennue (recursivement), et il la place comme icone.

dans la source, j'ai mis ces deux lignes :

$dir='/media/Yakumo/Musique/musique libre';
$dest='/home/max/.nautilus/metafiles/file:%2F%2F%2Fmedia%2FYakumo%2FMusique%2Fmusique%2520libre.xml';

il faut les remplacer par le dossier du dossier qui contient les sous-dossiers a "colorier", et le chemin du fichier de conf qui correspond.

pour lancer, il suffit de taper en ligne de commande :
$php iconize.php

Source / Exemple :


<?php
/**

  • @file iconize.php
  • @brief le fichier qui permet d'afficher dans un dossier, une icone par sous dossier, en prennant la premiere image vennue :)
  • @test php iconize.php
  • /
include('top.php'); function first_icon($path){ $a=opendir($path); while ($b=readdir($a)){ if ($b{0}!='.'){ if (is_dir($path.$b)){ if ($c=first_icon($path.$b.'/')) return $c; }else if (substr($b, strlen($b)-3)=='jpg'){ return $path.$b; } } } return false; } function encode($str, $a=true){ $b=array(' ', 'é', ']', '[', ',', 'î'); $c=array('%20', '%C3%A9', '%5D', '%5B', '%2C', '%C3%A'); if ($a) {$b[]='/'; $c[]='%2F';} return str_replace( $b, $c, $str ); } $dir='/media/Yakumo/Musique/musique libre'; $dest='/home/max/.nautilus/metafiles/file:%2F%2F%2Fmedia%2FYakumo%2FMusique%2Fmusique%2520libre.xml'; $a=new GnomeDirXml(); $b=opendir($dir); while ($c=readdir($b)){ if ($c{0}!=='.'){ $a->appendChild($d=new TemplateXML('file')); $d->setAttribute('name', encode($c)); $d->setAttribute('timestamp', time()+10000); $d->setAttribute('custom_icon', encode(substr(first_icon($dir.'/'.$c.'/'), strlen($dir)+2+strlen($c)), false)); } } $fd=fopen($dest, 'w'); fputs($fd, $a->show()); fclose($fd); ?>

Conclusion :


la fonction encode ne fonctionne pas parfaitement bien, mais ca reste utilisable.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.