Nome do ícone a ser usado em um arquivo da área de trabalho quando diferentes temas de ícones usam nomes diferentes para o mesmo aplicativo

Nome do ícone a ser usado em um arquivo da área de trabalho quando diferentes temas de ícones usam nomes diferentes para o mesmo aplicativo

A questão

Quero saber se existe uma maneira de fornecer várias opções de ícones em arquivos da área de trabalho. Por exemplo, no arquivo da área de trabalho que tenho para o Android Studio, esta é a linha do ícone:

Icon=/opt/android-studio/bin/studio.png

funciona bem, MAS o problema é que quero que o ícone seja qualquer que seja o tema do ícone que estou usando, em vez de ser o mesmo "studio.png" antigo o tempo todo. Eu sei que posso mudar isso para algo como:

Icon=androidstudio

e como você sabe, funciona bem com temas de ícones que fornecem o ícone do Android Studio com esse nome, ou seja, "androidstudio". O problema é que diferentes temas de ícones fornecem ícones com nomes diferentes para o Android Studio, incluindo:

  • com.google.AndroidStudio
  • android-studio
  • androidstudio
  • estúdio
  • etc.

Existe uma maneira de colocar todos esses nomes no arquivo da área de trabalho para que ele possa usar qualquer que seja o tema do ícone?


O que eu tentei

Com base no que vi em alguns arquivos da área de trabalho, tentei separar valores diferentes (ou seja, nomes de ícones) com ponto e vírgula, mas não funcionou:

Icon=com.google.AndroidStudio;studio;androidstudio;

O que eu já li:

Responder1

A maneira como você indica também é como funciona. Você fornece um nome de ícone genérico, por exemplo androidstudio. O sistema verificará primeiro se o seu tema atual fornece tal ícone e, caso contrário, pegue um ícone de um tema substituto ou use um ícone genérico. Como tal, não há nenhuma disposição para indicar vários ícones alternativos em um .desktoparquivo.

Você está usando apenas um tema por vez, normalmente. Portanto, o mais fácil seria codificar o ícone que você deseja usar em uma cópia local do .desktoparquivo do seu aplicativo. Você não precisa ser root para isso. Essa cópia local reside .local/share/applicationse substitui o .desktoparquivo de todo o sistema.

Se, por um ou outro motivo, você preferir trocar de tema e sempre ter o ícone do tema específico para seu aplicativo, então você pode renomear (ou melhor, copiar) o arquivo de ícone para que existam ícones correspondentes em todos os temas que você deseja usar. Você precisa ser root para editar um tema de todo o sistema dessa maneira.

Responder2

Depois que @vanadium disse que não há como fornecer vários ícones ao mesmo tempo em um arquivo da área de trabalho e que eu deveria codificar, renomear ou copiar o ícone, pensei por que não escrever um script para isso. O script a seguir modifica o arquivo da área de trabalho para definir o ícone para qualquer que seja o tema do ícone fornecido para o Android Studio:

#!/bin/bash

# note 1) run this script when you want to change the icon
# note 2) pass 0 to this script (./script_name 0) to use the studio.png
#   if you want that for some reason
# note 3) before using this script, be sure to edit desktop_file and default_icon variables
# note 4) before using this script, edit the switch (the keyword is 'case' in the script),
#   based on the icon themes you have

# tip: for easier use, go to ~/.bash_aliases and define an alias

desktop_file=~/.local/share/applications/jetbrains-studio.desktop
default_icon=/opt/android-studio/bin/studio.png

function print_use() { echo "Use: $0 0[optional]"; }
function print_done() { echo "android studio icon has changed. enjoy :)"; }

if [[ ! -f $desktop_file ]]; then
    echo "$0: desktop file does not exist. you need to edit this script."
    exit 1
fi

# check and act based on arguments passed to script
if [[ $# -gt 1 ]]; then
    print_use
    exit 1
elif [[ $# -eq 1 ]]; then
    if [[ $1 -eq 0 ]]; then
        sed --in-place "s@^Icon=.*@Icon=$default_icon@" $desktop_file
        print_done
        exit 0
    else
        print_use
        exit 1
    fi
fi


# get the name of the icon theme in use
icon_theme=$(dconf read /org/gnome/desktop/interface/icon-theme)
echo "active icon theme: $icon_theme"
# trim starting and ending single quotes
icon_theme=${icon_theme:1:$((${#icon_theme}-2))}

# choose icon name based on the icon theme name
case $icon_theme in

    Vimix-* | Flat-Remix* | Deepin | Flattery | Gruvbox | Oranchelo | SURU-PLUS* | Korla)
        icon_name="androidstudio"
        ;;

    Tela-red | Uos | Xenlism-Storm)
        icon_name="android-studio"
        ;;

    *)
        echo "no icon found :( ... using the default icon"
        icon_name=$default_icon
        ;;
esac

sed --in-place "s@^Icon=.*@Icon=$icon_name@" $desktop_file
print_done

Eu defini o seguinte alias em ~/.bash_aliases então agora toda vez que eu mudo o tema do ícone, tudo que preciso fazer é digitar 'u' no meu terminal e pressionar enter:

alias u="$scripts/android_studio_icon.sh"

informação relacionada