Wyłącz tworzenie miniatur tylko dla określonych folderów, ale dla wszystkich użytkowników

12

Jak mogę uniemożliwić mojemu Ubuntu 14.10 (teraz 15.04) tworzenie i zapisywanie miniatur tylko dla określonego folderu?
Chcę powiedzieć miniaturce, aby pomijała ten pojedynczy folder (i podfoldery), ale dla wszystkich istniejących i przyszłych kont użytkowników.

Przeczytałem niektóre odpowiedzi na pytania dotyczące wykluczenia określonego typu pliku, ale muszę wykluczyć pliki według ich lokalizacji!
Próbowałem już ukryć folder (przemianowany na .foldername), ale bez powodzenia. Nawiasem mówiąc, folder jest własnością root.

Bajt Dowódca
źródło
6
To tylko początek pomysłu (i będzie działał tylko dla jednego użytkownika): miniatury są tworzone, o ile dobrze rozumiem, przez zaszyfrowanie ścieżki i zapisanie pliku o nazwie [hash] .png w katalogu .thumbnails/normal/i / lub .thumbnails/large/w katalog domowy użytkownika. Twój program może wykonać ten sam skrót i zamiast tego zapisać miniaturowy plik miniatury. Przy odrobinie szczęścia procedura tworzenia miniaturek zauważy, że plik miniaturek już istnieje i pomiń miniaturkę obrazu.
Jos
Jakiego miniaturki używasz? Gdzie zapisujesz miniatury?
daltonfury42
@ daltonfury42 Nie mogę ci powiedzieć. Sytuacja, w której szczególnie tego potrzebowałem, dotyczyła starego, teraz martwego laptopa. Uruchomiłem tam Ubuntu z XFCE, więc myślę, że był to tumbler lub jakkolwiek nazywano jego miniaturę. W każdym razie myślę, że jeśli jest to możliwe, powinno to być bardziej ogólne rozwiązanie.
Bajt Dowódca

Odpowiedzi:

2

Oprócz odpowiedzi @Fabby :

  1. Zainstaluj pakiet inoticoming

    sudo apt-get install inoticoming
    
  2. Utwórz skrypt opakowania 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. Zrób to

    chmod +x disable_thumbnails
    
  4. W razie potrzeby zabij uruchomione procesy

    killall inoticoming
    
  5. Obejrzyj swój folder

    Unikaj kończenia /nazw folderów

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

Jest tylko jeden problem. Zmiany są widoczne dopiero ponautilus -q

Użyj, inoticoming --foreground …aby uniknąć trybu demona, jeśli testujesz skrypt.

AB
źródło
Okej, nautilus -qzabija proces tła nautilusa i wydaje się, że zwalnia miniatury zapisane w pamięci. I dlaczego jest \;na końcu inoticomingpolecenia?
Bajt Dowódca
@ByteCommander Aby zamaskować ;Potrzebujemy ;polecenia w poleceniu, a nie jako separatora dla następnego polecenia.
AB
O co w tym chodzi inoticoming --foreground _? Co jest nie tak z trybem demona? Myślałem, że powinien działać automatycznie w tle. Aha, a jak mam ustawić automatyczne uruchamianie tej rzeczy?
Bajt Dowódca
@ByteCommander Aby przetestować skrypt, użyj--foreground
AB
2

Aby uzyskać nazwę pliku miniatury, zacznij md5sumod oryginalnej nazwy pliku:

% 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

Teraz usuń uprawnienia do odczytu:

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

Uruchom ponownie nautilus:

nautilus -q

i nie będziesz mieć miniatury dla /home/user/Pictures/image 1.png.

Teraz musisz tylko napisać skrypt, który skanuje poszczególne foldery i automatycznie wykonuje powyższe kroki.

Kredyty : P

Fabby
źródło
Jeśli dodasz ten skrypt i dodasz wiersz, który zastępuje miniaturę plikiem 0-bajtowym, będę szczęśliwy! Aha, i musisz mi powiedzieć (lub link), jak uruchomić skrypt automatycznie. Najlepiej byłoby zareagować na zdarzenia systemu plików w tym folderze, gdyby było to możliwe ... Nie mam pojęcia, jak dać ci tę nagrodę, chyba @AB musi to zrobić, jak to oferuje ...
Byte Commander
@ByteCommander coś jak to ?
AB
@AB Tak, wygląda dobrze. Gdybyś teraz napisał inną odpowiedź z tym skryptem i wszystkim razem, byłoby wspaniale! :-)
Byte Commander
@ByteCommander zrobione :)
AB