Апр232008

Встановлення обкладинки для каталогу

Забажав зробити, щоб для всіх музикальних альбомів відображувалася обкладинка альбому.
Складного тут нічого немає, але клацати мишею та обирати для кожного альбому обкладинку за допомогою Конкверора якось не має жодного бажання.

Взагалі що для окремого каталогу відображувалась не стандартне зображення достатньо створити в ньому файл .directory з таким змістом:

[Desktop Entry]
Icon=Посилання_на_зображення

Тому вирішив дещо спростити собі життя та написав дію для mc-меню:

=+ f .jpg$ | f .jpeg$ | f .gif$ | f .png$
f       Встановити як обкладинку каталогу
        unset EXT
        case %f in
            *.png)  EXT=png;;
            *.jpg)  EXT=jpg;;
            *.jpeg) EXT=jpeg;;
            *.gif)  EXT=gif;;
       esac
        if [ "$EXT" != "png" ]; then
            NAME=%f
        else
            NAME="`basename %f .$EXT`.png"
            convert %f $NAME
        fi
        if [ -f $NAME ]; then
            echo "[Desktop Entry]
            Icon=./"$NAME >.directory
        fi

Тобто, якщо додати до mc-меню ці рядки, то встановлення обкладинки для каталогу зводиться до того що обравши зображення, тиснемо F2 -> f, після цього цей невеличкий скрипт конвертує зображення до формату .png та створить файл .directory.

А ось дещо змінена версія. Зміни полягають в тому, що оригінальний файл не зберігається та файл для обкладинки буде створюватись з ім’ям cover.png

=+ f .jpg$ | f .jpeg$ | f .gif$ | f .png$
f       Встановити як обкладинку каталогу (cover.png)
        if [ "%f" != "cover.png" ]; then
            unset EXT
            case %f in
                *.png)  EXT=png;;
                *.jpg)  EXT=jpg;;
                *.jpeg) EXT=jpeg;;
                *.gif)  EXT=gif;;
            esac
            if [ "$EXT" != "png" ]; then
                convert %f cover.png
            else
                cp %f cover.png
            fi
            if [ -f cover.png ]; then
                rm -f %f
            fi
        fi
        if [ -f cover.png ]; then
            echo "[Desktop Entry]
            Icon=./cover.png" >.directory
        fi
sHa @ 16:04