Nombre del ícono para usar en un archivo de escritorio cuando diferentes temas de íconos usan nombres diferentes para la misma aplicación

Nombre del ícono para usar en un archivo de escritorio cuando diferentes temas de íconos usan nombres diferentes para la misma aplicación

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 .desktoparchivo.

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 .desktoparchivo de su aplicación. No necesitas ser root para esto. Dicha copia local reside en .local/share/applicationsel 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"

información relacionada