Jak ustawić emblematy w Thunar bez GUI?

9

Chciałbym dodać emblematy do pliku w Thunar za pomocą skryptu, ale nie mogę znaleźć żadnej dokumentacji na ten temat.

Czy można to zrobić? A jeśli tak, to w jaki sposób?

To samo pytanie zostało tutaj zadane , ale wspominają o ~/.cache/Thunar/metafile.tdbpliku, który nie istnieje w moim systemie. Myślę, że to pytanie i odpowiedź są nieaktualne.

Remco Haszing
źródło
Jesteś pewien, że to nie istnieje? ~/.cacheto ukryty plik, o którym wiesz ...
Seth
~/.cache/Thunar/nawet nie istnieje. Nawet po dodaniu emblematu do pliku w Thunar. Mam zainstalowaną wersję Thunar 1.6.3.
Remco Haszing

Odpowiedzi:

13

Thunar, od wersji 1.6, zaczął używać demona gvfs-metadata do przechowywania metadanych. Metadane są przechowywane ~/.local/share/gvfs-metadata, ale nie można ich odczytać z plików ( myślę, że są przechowywane w formacie binarnym ). Aby odczytać metadane, użyj następującego gvfs-infopolecenia:

gvfs-info -a metadata:: /some/location  

Które wydrukują metadane /some/location.

Jeśli chcesz zmienić metadane, możesz użyć następującego gvfs-set-attributepolecenia:

gvfs-set-attribute /some/location -t stringv metadata::mdtype value  

/some/locationto lokalizacja pliku / folderu, którego metadane, które chcesz edytować, -t stringvnakazuje komendzie oczekiwanie na ciąg znaków, mdtypeustawia typ metadanych, które chcesz zmienić (np. emblems) i new valueustawia valuejako metadane mdtype. Na przykład:

gvfs-set-attribute Downloads -t stringv metadata::emblems emblem-default  

Nadaje Downloadsfolderowi defaultemblemat.

Ustaw wartość, noneaby usunąć emblematy. Będziesz musiał zrestartować menedżera plików, aby zobaczyć zmiany.


Napisałem mały skrypt, który pozwala zmienić emblemat więcej niż jednego folderu / pliku na raz:

run() {    
cd # make sure we're in the home directory
echo 'What emblem do you want to apply?'
read emblem

if ! [ -z $emblem ]; then
    for i in $@
    do
        echo 'Changing stuff...'
        $(gvfs-set-attribute $i -t stringv metadata::emblems $emblem)
    done
    echo 'Done!'
else
    echo 'Emblem must be specified! Exiting...'
    exit  
fi
}

init() {

if [[ -z $@  ]]; then
    echo "No arguments provided"
else   
    run $@
fi
}

init $@  

Źródła:

Seth
źródło
@RemcoHaszing Sprawdź moją zredagowaną odpowiedź, popełniłem błąd i poprawiłem go.
Seth
Chciałem wiedzieć, ponieważ chciałem napisać skrypt, który ustawia emblematy wskazujące status moich folderów Dropbox. Dowiedziałem się, że muszę ponownie uruchomić Thunar, aby zobaczyć nowo dodane emblematy i przeczytać to później w zaktualizowanej odpowiedzi. Czy wiesz, czy Thunar może wykryć te zmiany podczas działania?
Remco Haszing
@RemcoHaszing Nie, to naprawdę niemożliwe AFAIK. Thunar musiałby nieustannie sprawdzać zmiany, co wymagałoby wielu zasobów. Mógłbym edytować skrypt, aby zamknąć wszystkie działające instancje Thunara i otworzyć nowe wystąpienie w folderach Dropbox, w zależności od tego, co dokładnie próbujesz zrobić.
Seth
Bardzo fajny skrypt i polecenie. Działa to doskonale w przypadku plików i katalogów. Jednak mój folder Dropbox jest własną partycją / dev / sda2, ale montuje się w ~ / Dropbox. Próbowałem ustawić emblemat ~ / Dropbox, ale to nie zadziałało. Jakieś pomysły? Dziękuję
jbrock
@jbrock Czy zrestartowałeś menedżera plików? Zmiany nie zostaną uwzględnione, dopóki nie zostaną ponownie uruchomione. Jeśli to nie rozwiąże, obawiam się, że nie wiem. Możesz spróbować zadać nowe pytanie. Chciałbym pomóc, ale obecnie brakuje mi zasobów do przetestowania tego konkretnego problemu. Przepraszam!
Seth