Имя значка для использования в файле на рабочем столе, когда различные знаковые темы, используйте различные названия того же приложения

Вопрос

Я хочу знать, существует ли способ обеспечить несколько вариантов значка в файлах на рабочем столе. Например, в файле на рабочем столе я имею для студии андроида, это - строка значка:

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

это хорошо работает, НО проблема состоит в том, что я хочу, чтобы значок был безотносительно знаковой темы, которую я использую, обеспечивает, вместо того, чтобы быть тем же старым "studio.png" все время. Я знаю, что могу изменить это на что-то как:

Icon=androidstudio

и как Вы знаете, это хорошо работает со знаковыми темами, которые обеспечивают студийный значок андроида тем именем т.е. "androidstudio". Проблема состоит в том, что различные знаковые темы предоставляют значкам различные названия студии андроида, включая:

  • com.google. AndroidStudio
  • студия андроида
  • androidstudio
  • студия
  • и т.д.

Существует ли способ поставить все эти имена в файле на рабочем столе, таким образом, он может использовать, какой бы ни знаковая тема обеспечивает?


Что я попробовал

На основе того, что я видел в некоторых файлах на рабочем столе, я пытался разделить различные значения (т.е. имена значка) с точками с запятой, но не работал:

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

Что я уже считал:

1
задан 18 March 2020 в 23:37

2 ответа

Путем Вы указываете, также, как это работает. Вы обеспечиваете универсальное имя значка, например. androidstudio. Система сначала посмотрит, если Ваша текущая тема обеспечит такой значок, и если это не делает, берет значок темы нейтрализации или использует универсальный значок. По сути, нет никакого условия для указания на несколько альтернативных значков в a .desktop файл.

Вы используете только единственную тему за один раз, обычно. Таким образом, самое легкое должно было бы трудно кодировать значок, который Вы хотите использовать в локальной копии .desktop файл Вашего приложения. Вы не должны быть, поддерживают это. Такая локальная копия живет в .local/share/applications и переопределяет в масштабе всей системы .desktop файл.

Если, для одного или другой причины, Вы предпочитаете переключать темы, и каждый раз имеют тему определенный значок для Вашего приложения, то можно переименовать (или лучшая копия) файл значка, настолько соответствующие значки существуют во всех темах, которые Вы хотите использовать. Необходимо быть корнем для редактирования темы в масштабе всей системы этот путь.

0
ответ дан 7 April 2020 в 23:33

После того, как @vanadium сказал, что нет никакого способа обеспечить несколько значков одновременно в файле на рабочем столе, и я должен или трудно кодировать, переименовать или скопировать значок, я полагал, почему бы не записать сценарий для этого. Следующий сценарий изменяет файл на рабочем столе для установки значка на то, что знаковая тема предусматривает студию андроида:

#!/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

Я определил следующий псевдоним в ~/.bash_aliases поэтому теперь каждый раз, когда я изменяю знаковую тему, все, что я должен сделать, тип 'u' в моем терминале, и нажмите Enter:

alias u="$scripts/android_studio_icon.sh"
0
ответ дан 7 April 2020 в 23:33

Другие вопросы по тегам:

Похожие вопросы: