Como faço para definir emblemas em Thunar sem a GUI?

9

Gostaria de adicionar emblemas a um arquivo em Thunar usando um script, mas não consigo encontrar nenhuma documentação sobre isso.

É possível fazer isso? E se sim, como?

A mesma pergunta foi feita aqui , mas eles mencionam um ~/.cache/Thunar/metafile.tdbarquivo que não existe no meu sistema. Eu acho que essa pergunta e a resposta estão desatualizadas.

Remco Haszing
fonte
Tem certeza de que não existe? ~/.cacheé um arquivo oculto que você conhece ..
Seth
~/.cache/Thunar/nem existe. Nem mesmo depois de adicionar um emblema a um arquivo em Thunar. Eu tenho o Thunar versão 1.6.3 instalado.
Remco Haszing

Respostas:

13

Thunar, desde a versão 1.6, começou a usar o daemon gvfs-metadata para armazenar metadados. Os metadados são armazenados ~/.local/share/gvfs-metadata, no entanto, você não pode lê-los nos arquivos (eles estão armazenados em algum formato binário, eu acho). Para ler os metadados, use o gvfs-infocomando da seguinte maneira:

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

Qual imprimirá os metadados de /some/location.

Se você deseja alterar os metadados, pode usar o gvfs-set-attributecomando desta forma:

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

/some/locationé o local do arquivo / pasta cujos metadados você deseja editar, -t stringvdiz ao comando para esperar a entrada da string, mdtypedefine o tipo de metadados que você deseja alterar (por exemplo emblems) e new valuedefine valueos metadados mdtype. Por exemplo:

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

Dá à Downloadspasta o defaultemblema.

Defina o valor como nonepara remover emblemas. Você precisará reiniciar o gerenciador de arquivos para ver as alterações.


Escrevi um pequeno script que permite alterar o emblema de mais de uma pasta / arquivo por vez:

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

Fontes:

Seth
fonte
@RemcoHaszing Verifique minha resposta editada, cometi um erro e agora a corrigi.
Seth
Eu queria saber, porque queria escrever um script que defina os emblemas para indicar o status das minhas pastas do Dropbox. Descobri que preciso reiniciar o Thunar para ver os emblemas recém-adicionados e ler isso posteriormente na sua resposta atualizada. Você sabe se Thunar pode receber essas alterações enquanto executa alguma forma?
Remco Haszing
@RemcoHaszing Não, isso realmente não é possível, AFAIK. Thunar teria que pesquisar continuamente por mudanças e isso exigiria muitos recursos. Eu poderia editar o script para fechar todas as instâncias em execução do Thunar e abrir uma nova instância nas pastas do Dropbox, dependendo do que exatamente você está tentando fazer.
Seth
Script e comando muito bons. Isso funciona perfeitamente em arquivos e diretórios. No entanto, minha pasta do Dropbox é sua própria partição / dev / sda2, mas é montada em ~ / Dropbox. Tentei definir o emblema para ~ / Dropbox, mas não funcionou. Alguma ideia? Obrigado
jbrock
@jbrock Você reiniciou o gerenciador de arquivos? As alterações não terão efeito até serem reiniciadas. Se isso não resolver, receio não saber. Você pode tentar fazer uma nova pergunta. Eu adoraria ajudar, mas atualmente não tenho os recursos para testar esse problema específico. Desculpa!
Seth