我如何在没有GUI的情况下在Thunar中设置标志?


9

我想使用脚本将标志添加到Thunar中的文件中,但是我找不到任何文档。

是否有可能做到这一点?如果是这样,怎么办?

这里提出相同的问题,但是他们提到了~/.cache/Thunar/metafile.tdb我的系统上不存在的文件。我认为这个问题和答案已经过时了。


您确定它不存在吗?~/.cache是你知道的一个隐藏文件..
赛斯

~/.cache/Thunar/甚至不存在。即使在Thunar的文件中添加标志后也没有。我安装了Thunar 1.6.3版。
Remco Haszing 2014年

Answers:


13

从1.6版开始,Thunar已开始使用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请检查编辑后的答案,我犯了一个错误,现已更正。
赛斯2014年

我想知道,因为我想编写一个脚本来设置标志以指示我的Dropbox文件夹的状态。我发现必须重新启动Thunar才能看到新添加的标志,然后在更新后的答案中阅读此内容。您知道Thunar是否可以以某种方式运行这些变化?
Remco Haszing 2014年

@RemcoHaszing不,AFAIK真的不可能。Thunar将不得不不断地调查更改,这将占用大量资源。我可以编辑脚本以关闭所有正在运行的Thunar实例,并在Dropbox文件夹中打开新实例,具体取决于您要尝试执行的操作。
赛斯

非常好的脚本和命令。这完美地适用于文件和目录。但是,我的Dropbox文件夹是其自己的分区/ dev / sda2,但它挂载在〜/ Dropbox中。我尝试将标志设置为〜/ Dropbox,但没有用。有任何想法吗?谢谢
jbrock

@jbrock您是否重新启动了文件管理器?更改在重新启动之前不会生效。如果那不能解决问题,那么恐怕我不知道。您可以尝试问一个新问题。我很乐意提供帮助,但目前我缺乏资源来测试此特定问题。抱歉!
赛斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.