
La pregunta
Quiero saber si hay alguna manera de ofrecer múltiples opciones de íconos en los archivos del escritorio. Por ejemplo, en el archivo de escritorio que tengo para Android Studio, esta es la línea del icono:
Icon=/opt/android-studio/bin/studio.png
funciona bien, PERO el problema es que quiero que el ícono sea cualquiera que sea el tema del ícono que estoy usando, en lugar de ser el mismo "studio.png" de siempre. Sé que puedo cambiar eso a algo como:
Icon=androidstudio
y como sabes, funciona bien con temas de iconos que proporcionan el icono de Android Studio con ese nombre, es decir, "androidstudio". El problema es que diferentes temas de íconos proporcionan íconos con diferentes nombres para Android Studio, que incluyen:
- com.google.AndroidStudio
- estudio-android
- androidestudio
- estudio
- etc.
¿Hay alguna manera de poner todos estos nombres en el archivo del escritorio para que pueda usar el tema del ícono que proporcione?
lo que he probado
Según lo que había visto en algunos archivos de escritorio, intenté separar diferentes valores (es decir, nombres de iconos) con punto y coma, pero no funcionó:
Icon=com.google.AndroidStudio;studio;androidstudio;
Lo que ya he leído:
Respuesta1
La forma en que indicas también es cómo funciona. Proporciona un nombre de icono genérico, por ejemplo androidstudio
. El sistema primero buscará si su tema actual proporciona dicho ícono y, si no es así, tomará un ícono de un tema alternativo o usará un ícono genérico. Como tal, no existe ninguna disposición para indicar múltiples íconos alternativos en un .desktop
archivo.
Normalmente, estás utilizando solo un tema a la vez. Entonces, lo más fácil sería codificar el ícono que desea usar en una copia local del .desktop
archivo de su aplicación. No necesitas ser root para esto. Dicha copia local reside en .local/share/applications
el archivo de todo el sistema y lo anula .desktop
.
Si, por una razón u otra, prefiere cambiar de tema y cada vez tener el ícono específico del tema para su aplicación, entonces puede cambiar el nombre (o mejor copiar) el archivo de ícono para que existan íconos coincidentes en todos los temas que desee usar. Debes ser root para editar un tema para todo el sistema de esta manera.
Respuesta2
Después de que @vanadium dijo que no hay forma de proporcionar varios íconos al mismo tiempo en un archivo de escritorio y que debería codificar, cambiar el nombre o copiar el ícono, pensé por qué no escribir un script para eso. La siguiente secuencia de comandos modifica el archivo del escritorio para configurar el ícono en cualquier tema que el ícono proporcione para 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
He definido el siguiente alias en ~/.bash_aliases, por lo que ahora cada vez que cambio el tema del ícono, todo lo que tengo que hacer es escribir 'u' en mi terminal y presionar Enter:
alias u="$scripts/android_studio_icon.sh"