Désactiver la création de vignettes pour des dossiers spécifiques uniquement, mais tous les utilisateurs

12

Comment empêcher mon Ubuntu 14.10 (maintenant 15.04) de créer et d'enregistrer des vignettes pour un dossier spécifique uniquement?
Je veux dire à la vignette de sauter ce dossier unique (et ses sous-dossiers), mais pour tous les comptes d'utilisateurs existants et futurs.

J'ai lu des réponses à des questions sur l'exclusion d'un type de fichier spécifique, mais je dois exclure des fichiers par leur emplacement!
Ce que j'ai déjà essayé, c'est de cacher le dossier (renommé en .foldername), mais sans succès. Soit dit en passant, le dossier appartient à root.

Byte Commander
la source
6
Juste le début d'une idée (et cela ne fonctionnera que pour un seul utilisateur): les vignettes sont créées, si je comprends bien, en hachant le chemin et en écrivant un fichier appelé [hash] .png dans un répertoire .thumbnails/normal/et / ou .thumbnails/large/dans le répertoire répertoire personnel de l'utilisateur. Votre programme pourrait effectuer le même hachage et écrire à la place un fichier miniature de zéro octet. Par chance, la routine de vignette remarquera qu'un fichier de vignette existe déjà et saute la vignette de votre image.
Jos
Quelle vignette utilisez-vous? Où enregistrez-vous les vignettes?
daltonfury42
@ daltonfury42 Je ne peux pas vous le dire. La situation où j'avais spécifiquement besoin de cela était sur un vieil ordinateur portable, maintenant mort. J'exécutais Ubuntu avec XFCE là-bas, donc je pense que c'était tumbler ou comment son imageur a été appelé. Quoi qu'il en soit, je pense que si cela est possible, ce devrait être une solution plus générale.
Byte Commander

Réponses:

2

En plus de la réponse @Fabby :

  1. Installer le package inoticoming

    sudo apt-get install inoticoming
    
  2. Créer un script wrapper disable_thumbnails

    #!/bin/bash
    
    # Create the thumbnail filename
    tn_filename=$(echo -n "file://$1/$2" | sed 's/\s/%20/g' | md5sum | awk '{print $1}')
    
    # Destroy the thumbnail without deleting
    find ~/.cache/thumbnails -type f -name "$tn_filename*" -print0 | while IFS= read -d '' file; do
      echo > "$file"
    done
    exit 0
    
  3. Rendez-le exécutable

    chmod +x disable_thumbnails
    
  4. Tuez les processus en cours, si nécessaire

    killall inoticoming
    
  5. Regardez votre dossier

    Évitez la fin /des noms de dossier

    inoticoming "<path_to_disabled_thumbnail_folder>" <full_path_of_disable_thumbnails_script>  {} "<path_to_disabled_thumbnail_folder>" \;
    

Il n'y a qu'un seul problème. Les modifications ne sont visibles qu'aprèsnautilus -q

Utilisez inoticoming --foreground …pour éviter le mode démon, si vous testez le script.

UN B
la source
D'accord, cela nautilus -qtue le processus d'arrière-plan du nautile et libère les vignettes mises en cache en mémoire, je suppose. Et pourquoi y a-t-il \;à la fin du inoticomingcommandement?
Byte Commander
@ByteCommander Pour masquer le ;Nous avons besoin de ;dans la commande et non comme délimiteur pour la commande suivante.
AB
Et de quoi s'agit-il inoticoming --foreground _? Quel est le problème avec le mode démon? Je pensais que cela devrait fonctionner automatiquement en arrière-plan. Oh, et comment puis-je configurer cette chose pour qu'elle démarre automatiquement?
Byte Commander
@ByteCommander Pour tester l'utilisation du script--foreground
AB
2

Pour obtenir le nom de fichier de la miniature, commencez md5sumpar le nom de fichier d'origine:

% echo -n "file:///home/user/Pictures/image%201.png" | md5sum
6e1669aea9c118cb2b7ad23fc6646c71  -

% find ~/.cache/thumbnails -type f -name "6e1669aea9c118cb2b7ad23fc6646c71*"
/home/user/.cache/thumbnails/large/6e1669aea9c118cb2b7ad23fc6646c71.png

Maintenant, supprimez les autorisations de lecture:

chmod -r /home/user/.cache/thumbnails/large/6e1669aea9c118cb2b7ad23fc6646c71.png

Redémarrez nautilus:

nautilus -q

et vous n'aurez pas de vignette pour /home/user/Pictures/image 1.png.

Il ne vous reste plus qu'à écrire un script qui scanne vos dossiers particuliers et à effectuer automatiquement les étapes ci-dessus.

Crédits : P

Fabby
la source
Si vous ajoutez ce script et incluez une ligne qui écrase la vignette avec un fichier de 0 octet, je serai heureux! Oh, et vous devez me dire (ou créer un lien) comment exécuter le script automatiquement. Le mieux serait de réagir aux événements du système de fichiers dans ce dossier, si cela était possible ... Je ne sais pas comment vous donner cette prime, je suppose que @AB doit le faire comme il le propose ...
Byte Commander
@ByteCommander quelque chose comme ça ?
AB
@AB Oui, ça a l'air bien. Si vous écriviez maintenant une autre réponse avec ce script et tout ensemble, ce serait génial! :-)
Byte Commander
@ByteCommander fait :)
AB