Как установить эмблемы в Thunar без графического интерфейса?

9

Я хотел бы добавить эмблемы в файл в Thunar, используя скрипт, но я не могу найти никакой документации по этому вопросу.

Можно ли сделать это? И если да, то как?

Тот же вопрос был задан здесь , но они упоминают ~/.cache/Thunar/metafile.tdbфайл, который не существует в моей системе. Я думаю, что вопрос и ответ устарели.

Ремко Хасинг
источник
Вы уверены, что его не существует? ~/.cacheэто скрытый файл, который вы знаете ..
Сет
~/.cache/Thunar/даже не существует. Даже после добавления эмблемы в файл в Thunar. У меня установлена ​​версия Thunar 1.6.3.
Ремко Хасзинг

Ответы:

13

Thunar, начиная с версии 1.6, начал использовать демон gvfs-metadata для хранения метаданных. Метаданные хранятся в ~/.local/share/gvfs-metadata, но вы не можете прочитать их из файлов ( я думаю, что они хранятся в каком-то двоичном формате ). Для чтения метаданных вы используете gvfs-infoкоманду, подобную этой:

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

Который распечатает метаданные /some/location.

Если вы хотите изменить метаданные, вы можете использовать следующую gvfs-set-attributeкоманду:

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

/some/locationявляется местоположением файла / папки, метаданные которого вы хотите отредактировать, -t stringvуказывает команде ожидать ввода строки, mdtypeустанавливает тип метаданных, которые вы хотите изменить (например, emblems) и new valueустанавливает valueв качестве метаданных mdtype. Например:

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

Придает Downloadsпапке defaultэмблему.

Установите значение noneдля удаления эмблем. Вам нужно будет перезапустить файловый менеджер, чтобы увидеть изменения.


Я написал небольшой скрипт, который позволяет менять эмблему более чем одной папки / файла одновременно:

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 $@  

Источники:

Сет
источник
@RemcoHaszing Пожалуйста, проверьте мой отредактированный ответ, я сделал ошибку и теперь исправил ее.
Сет
Я хотел знать, потому что я хотел написать скрипт, который устанавливает эмблемы, чтобы указать состояние моих папок Dropbox. Я узнал, что мне нужно перезапустить Thunar, чтобы увидеть новые добавленные эмблемы, и прочитать это позже в своем обновленном ответе. Вы знаете, может ли Thunar подобрать эти изменения во время работы?
Ремко Хэзинг
@RemcoHaszing Нет, это действительно невозможно AFAIK. Тунару придется постоянно опрашивать на предмет изменений, а для этого потребуется много ресурсов. Я мог бы отредактировать скрипт, чтобы закрыть все запущенные экземпляры Thunar и открыть новый экземпляр в ваших папках Dropbox, в зависимости от того, что именно вы пытаетесь сделать.
Сет
Очень хороший сценарий и команда. Это прекрасно работает с файлами и каталогами. Тем не менее, моя папка Dropbox - это отдельный раздел / dev / sda2, но он монтируется в ~ / Dropbox. Я попытался установить эмблему для ~ / Dropbox, но она не сработала. Любые идеи? Спасибо
Jbrock
@jbrock Вы перезапустили файловый менеджер? Изменения не вступают в силу, пока они не будут перезапущены. Если это не решит, то, боюсь, я не знаю. Вы можете попробовать задать новый вопрос. Я бы хотел помочь, но в настоящее время мне не хватает ресурсов для тестирования этой конкретной проблемы. Сожалею!
Сет