Файлы | Мануалы | Ссылки

Кастомная замена конкретных системных иконок Linux

Кастомная замена конкретных системных иконок Linux

/usr/share/icons/ИМЯ_ТЕМЫ используется для хранения системных иконок:

Debian, Ubuntu, Fedora, Arch Linux, Manjaro, Void Linux, NixOS, openSUSE, CentOS, Linux Mint, AlmaLinux, Rocky Linux, RHEL, SUSE Linux Enterprise, AlmaLinux, and others based on GNOME или KDE frameworks.

Узнаем тип mime

xdg-mime query filetype /mnt/game.exe

application/vnd.microsoft.portable-executable

Подробности должны быть в файле

/usr/share/mime/application/vnd.microsoft.portable-executable.xml

Ищем иконки

find /usr/share/icons/ -name "*vnd.microsoft.portable-executable*"

Скрипт по замене

#!/bin/bash

SOURCE_SVG="/home/oem/Изображения/ICO/newiconXXxXX.svg"

TARGET_FILES=(
    "/usr/share/icons/Papirus/16x16/mimetypes/application-x-executable.svg"
    "/usr/share/icons/Papirus/16x16/symbolic/mimetypes/application-x-executable-symbolic.svg"
    "/usr/share/icons/Papirus/22x22/mimetypes/application-x-executable.svg"
    "/usr/share/icons/Papirus/22x22/symbolic/mimetypes/application-x-executable-symbolic.svg"
    "/usr/share/icons/Papirus/24x24/mimetypes/application-x-executable.svg"
    "/usr/share/icons/Papirus/24x24/symbolic/mimetypes/application-x-executable-symbolic.svg"
    "/usr/share/icons/Papirus/32x32/mimetypes/application-x-executable.svg"
    "/usr/share/icons/Papirus/48x48/mimetypes/application-x-executable.svg"
    "/usr/share/icons/Papirus/64x64/mimetypes/application-x-executable.svg"
)

if [ ! -f "$SOURCE_SVG" ]; then
    echo "Ошибка: Исходный файл не найден!"
    exit 1
fi

for target_file in "${TARGET_FILES[@]}"; do
    if [ ! -f "$target_file" ]; then
        echo "Пропускаем: $target_file (не найден)"
        continue
    fi
    
    size=$(echo "$target_file" | grep -oE '[0-9]+x[0-9]+' | head -1)
    
    if [ -z "$size" ]; then
        echo "Не удалось определить размер для: $target_file"
        continue
    fi
    
    width=${size%x*}
    height=${size#*x}
    
    echo "Обработка: $target_file ($width x $height)"
    
    if command -v rsvg-convert >/dev/null 2>&1; then
        temp_file=$(mktemp)
        rsvg-convert -w "$width" -h "$height" -f svg "$SOURCE_SVG" -o "$temp_file"
        
        if [ $? -eq 0 ] && [ -s "$temp_file" ]; then
            sudo cp "$temp_file" "$target_file"
            echo "✓ Успешно: $target_file"
        else
            echo "✗ Ошибка: $target_file"
        fi
        
        rm -f "$temp_file"
    else
        echo "Установите librsvg: sudo apt install librsvg2-bin"
        exit 1
    fi
done

echo "Завершено!"