
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 .desktop
arquivo.
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 .desktop
arquivo do seu aplicativo. Você não precisa ser root para isso. Essa cópia local reside .local/share/applications
e substitui o .desktop
arquivo 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"