ฉันจะตั้งตราสัญลักษณ์ใน Thunar โดยไม่มี GUI ได้อย่างไร


9

ฉันต้องการเพิ่มตราสัญลักษณ์ให้กับไฟล์ใน Thunar โดยใช้สคริปต์ แต่ฉันไม่พบเอกสารใด ๆ เกี่ยวกับเรื่องนี้

เป็นไปได้ที่จะทำเช่นนี้? และถ้าเป็นเช่นนั้นได้อย่างไร

มีการถามคำถามเดียวกันที่นี่แต่พวกเขาพูดถึง~/.cache/Thunar/metafile.tdbไฟล์ที่ไม่มีอยู่ในระบบของฉัน ฉันคิดว่าคำถามและคำตอบนั้นล้าสมัย


คุณแน่ใจหรือว่าไม่มีอยู่? ~/.cacheเป็นไฟล์ที่ซ่อนอยู่ที่คุณรู้ ..
เซท

~/.cache/Thunar/ไม่มีแม้กระทั่ง ไม่แม้กระทั่งหลังจากเพิ่มสัญลักษณ์ไปยังไฟล์ใน Thunar ฉันติดตั้ง Thunar เวอร์ชั่น 1.6.3 แล้ว
Remco Haszing

คำตอบ:


13

Thunar ตั้งแต่รุ่น 1.6 เริ่มใช้ gvfs-metadata daemon เพื่อเก็บข้อมูลเมตา ข้อมูลเมตาถูกเก็บไว้ใน~/.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 สามารถรับการเปลี่ยนแปลงเหล่านี้ได้หรือไม่
Remco Haszing

@RemcoHaszing ไม่นั่นเป็นไปไม่ได้จริงๆ AFAIK Thunar จะต้องสำรวจความเปลี่ยนแปลงอย่างต่อเนื่องและจะต้องใช้ทรัพยากรจำนวนมาก ฉันสามารถแก้ไขสคริปต์เพื่อปิดอินสแตนซ์ที่ทำงานอยู่ทั้งหมดของ Thunar และเปิดอินสแตนซ์ใหม่ที่โฟลเดอร์ Dropbox ของคุณขึ้นอยู่กับว่าคุณพยายามทำอะไร
เซท

สคริปต์และคำสั่งที่ดีมาก มันทำงานได้อย่างสมบูรณ์ในไฟล์และไดเรกทอรี อย่างไรก็ตามโฟลเดอร์ Dropbox ของฉันคือพาร์ติชั่น / dev / sda2 ของตัวเอง แต่มันเมานต์ที่ ~ / Dropbox ฉันลองตั้งสัญลักษณ์เป็น ~ / Dropbox แต่มันไม่ทำงาน ความคิดใด ๆ ขอบคุณ
jbrock

@jbrock คุณรีสตาร์ทตัวจัดการไฟล์หรือไม่ การเปลี่ยนแปลงจะไม่มีผลจนกว่าจะมีการรีสตาร์ท หากไม่สามารถแก้ได้ฉันกลัวว่าไม่รู้ คุณสามารถลองถามคำถามใหม่ ฉันชอบที่จะช่วย แต่ตอนนี้ฉันไม่มีทรัพยากรที่จะทดสอบปัญหาเฉพาะนี้ ขออภัย!
เซท
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.