Làm cách nào để đặt biểu tượng trong Thunar mà không cần GUI?


9

Tôi muốn thêm biểu tượng vào một tệp trong Thunar bằng cách sử dụng tập lệnh, nhưng tôi không thể tìm thấy bất kỳ tài liệu nào về điều này.

có khả năng làm cái này không? Và nếu vậy thì thế nào?

Câu hỏi tương tự đã được hỏi ở đây , nhưng họ đề cập đến một ~/.cache/Thunar/metafile.tdbtệp không tồn tại trên hệ thống của tôi. Tôi nghĩ rằng câu hỏi và câu trả lời đã lỗi thời.


Bạn có chắc là nó không tồn tại? ~/.cachelà một tập tin ẩn mà bạn biết ..
Seth

~/.cache/Thunar/thậm chí không tồn tại. Ngay cả sau khi thêm một biểu tượng vào một tập tin trong Thunar. Tôi đã cài đặt Thunar phiên bản 1.6.3.
Remco Haszing

Câu trả lời:


13

Thunar, kể từ phiên bản 1.6, đã bắt đầu sử dụng trình nền siêu dữ liệu gvfs để lưu trữ siêu dữ liệu. Siêu dữ liệu được lưu trữ trong ~/.local/share/gvfs-metadata, tuy nhiên bạn không thể đọc nó từ các tệp (tôi nghĩ nó được lưu trữ ở một số định dạng nhị phân ). Để đọc siêu dữ liệu, bạn sử dụng gvfs-infolệnh như thế này:

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

Mà sẽ in ra siêu dữ liệu của /some/location.

Nếu bạn muốn thay đổi siêu dữ liệu, bạn có thể sử dụng gvfs-set-attributelệnh như thế này:

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

/some/locationlà vị trí của tệp / thư mục có siêu dữ liệu bạn muốn chỉnh sửa, -t stringvbáo lệnh để mong đợi đầu vào chuỗi, mdtypeđặt loại siêu dữ liệu bạn muốn thay đổi (ví dụ emblems) và new valueđặt valuelàm siêu dữ liệu cho mdtype. Ví dụ:

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

Cung cấp cho các Downloadsthư mục defaultbiểu tượng.

Đặt giá trị noneđể loại bỏ biểu tượng. Bạn sẽ phải khởi động lại trình quản lý tập tin để xem các thay đổi.


Tôi đã viết một tập lệnh nhỏ cho phép bạn thay đổi biểu tượng của nhiều thư mục / tệp cùng một lúc:

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

Nguồn:


@RemcoHaszing Vui lòng kiểm tra câu trả lời đã chỉnh sửa của tôi, tôi đã gặp lỗi và hiện đã sửa nó.
Seth

Tôi muốn biết, vì tôi muốn viết một tập lệnh đặt biểu tượng để chỉ trạng thái của các thư mục Dropbox của tôi. Tôi phát hiện ra rằng tôi phải khởi động lại Thunar để xem các biểu tượng mới được thêm vào và đọc nó sau đó trong câu trả lời được cập nhật của bạn. Bạn có biết liệu Thunar có thể nhận những thay đổi này trong khi chạy bằng cách nào đó không?
Remco Haszing

@RemcoHaszing Không, điều đó thực sự không thể AFAIK. Thunar sẽ phải liên tục thăm dò các thay đổi và điều đó sẽ tốn rất nhiều tài nguyên. Tôi có thể chỉnh sửa tập lệnh để đóng tất cả các phiên bản đang chạy của Thunar và mở một phiên bản mới trong các thư mục Dropbox của bạn, tùy thuộc vào chính xác những gì bạn đang cố gắng thực hiện.
Seth

Kịch bản và lệnh rất hay. Điều này hoạt động hoàn hảo trên các tập tin và thư mục. Tuy nhiên, thư mục Dropbox của tôi là phân vùng riêng / dev / sda2 nhưng nó gắn kết tại ~ / Dropbox. Tôi đã thử đặt biểu tượng cho ~ / Dropbox nhưng nó không hoạt động. Có ý kiến ​​gì không? Cảm ơn bạn
jbrock

@jbrock Bạn đã khởi động lại trình quản lý tập tin chưa? Những thay đổi không ảnh hưởng cho đến khi nó được khởi động lại. Nếu điều đó không giải quyết được thì tôi sợ tôi không biết. Bạn có thể thử hỏi một câu hỏi mới. Tôi muốn giúp đỡ, nhưng tôi hiện thiếu tài nguyên để kiểm tra vấn đề cụ thể này. Lấy làm tiếc!
Seth
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.