web-dev-qa-db-ja.com

複数のフォルダー(映画)のフォルダーアイコンを変更する

多くのフォルダーのアイコンを変更するにはどうすればよいですか?

すべてのフォルダーの最初の画像をフォルダーアイコンとして設定する方法

私はここにいましたが、うまくいきません。私の映画はホームパーティションにないため、別のext4パーティションにあり、そのコマンドでそのパーティションの場所を指定しようとすると、自動的に/home/sumeet私が入力した場所の前。

2番目の投稿のスクリプトが機能していません!たぶん私は何か間違ったことをしている。

[編集2詳細]

{ while read -r d ; do [ -d "$d" ] && [ -e "$d/folder.png" ] || continue ; gvfs-set-attribute -t string "$d" metadata::custom-icon "file://$d/folder.png" ; done ; } < <(find ~/mnt/c2104e2a-cc8e-4b7b-9bba-a05d316472b4/I -mindepth 1 -maxdepth 1 -type d)

最初にこのコマンドを最初の投稿から実行しました。

find: ‘/home/sumeet/mnt/c2104e2a-cc8e-4b7b-9bba-a05d316472b4/I’: No such file or directory

次に、元の投稿で提案されているように、いくつかのファイルをhome/videos/filmsに移動し、このコマンドを実行しました

{ while read -r d ; do [ -d "$d" ] && [ -e "$d/folder.png" ] || continue ; gvfs-set-attribute -t string "$d" metadata::custom-icon "file://$d/folder.png" ; done ; } < <(find ~/Videos/Films -mindepth 1 -maxdepth 1 -type d)

これは完全にうまくいきましたが、映画コレクション全体をホームフォルダに移動できません。

その後、私は2番目の言及された投稿で解決策を試し、実行しました

python3 /home/sumeet/change_icon.py </mnt/c2104e2a-cc8e-4b7b-9bba-a05d316472b4/I>

そして、この出力を得ました

bash: syntax error near unexpected token `newline'

それから私は考えました、私は何か間違ったことをして、これを試しました

python3 /home/sumeet/change_icon.py /mnt/c2104e2a-cc8e-4b7b-9bba-a05d316472b4/I

出力は得られませんでしたが、機能しませんでした。

次に、2番目のスクリプトを3〜4回試しました。右クリックオプションが表示されましたが、機能しませんでした。私は両方の投稿が求めたすべてを実行しました。ログアウトし、再度ログインし、再起動してみました、-q nautilus

動作していないようです。

2
Sumeet Deshmukh

このスクリプトは Jacob Vlijm によって作成され、元々は here として投稿されました。

#!/usr/bin/env python3
import subprocess
import os

# --- set the list of valid extensions below (lowercase)
# --- use quotes, *don't* include the dot!
ext = ["jpg", "jpeg", "png", "gif", "icns", "ico"]
# ---

# retrieve the path of the targeted folder
current = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI").replace("file://", "").replace("%20", " ")
dr = os.path.realpath(current)

for root, dirs, files in os.walk(dr):
    for directory in dirs:
        folder = os.path.join(root, directory)
        try:
            first = min(p for p in os.listdir(folder) 
                        if p.split(".")[-1].lower() in ext)
        except ValueError:
            pass
        else:
              subprocess.Popen([
                  "gvfs-set-attribute", "-t", "string",
                  os.path.abspath(folder), "metadata::custom-icon",
                  "file://"+os.path.abspath(os.path.join(folder, first))
                  ])

使用するには

  1. ディレクトリがまだ存在しない場合は作成します

    ~/.local/share/nautilus/scripts
    
  2. スクリプトを空のファイルにコピーし、~/.local/share/nautilus/scriptsset_foldericons(拡張子なし!)として保存し、右クリックしてファイルプロパティに移動し、実行可能にします

  3. ログアウトして再度ログインすると、動作します。

すべてのフォルダーアイコンを非表示にする場合(誤ってフォルダーであると思わないように)、ファイル名の先頭に.を追加します。たとえば、folder.png.folder.pngになります

all set, with one script

オリジナル作品

6
Sumeet Deshmukh