Как объединить два набора иконок?

14

Я хочу объединить стандартный набор иконок Ubuntu Mono и набор иконок Faenza. Я хотел бы сохранить стандартные значки Ubuntu на панели (включая значки для подобных Dropbox, передачи файлов и т. Д.) И заменить все другие значки приложений версиями Faenza.

Как бы я пошел по этому поводу?

richzilla
источник

Ответы:

3

Отредактируйте этот файл ниже с вашим любимым текстовым редактором

/usr/share/icons/ubuntu-mono-(which mono set you want)/index.theme

и поместите Фаэнцу в начале строки наследования.

Vallery
источник
2
Вы должны избегать изменения системных файлов. Обновление ubuntu-mono отменит ваши изменения.
idbrii
12

Я думаю, что лучший способ объединить наборы значков - создать то, что я называю облегченным набором значков. Этот набор значков находится в вашем домашнем каталоге, поэтому он не будет засорен системными обновлениями, но он ссылается на наборы системных значков, поэтому он будет обновляться вместе с ними. Эти темы не будут доступны другим пользователям в вашей системе.

Легкие наборы иконок

Тема менеджер Ubuntu будет выглядеть в ~/.iconsи /usr/share/iconsдля иконок наборов. Что-нибудь в ~/.iconsпереопределениях/usr/share/icons. Итак, вы можете скопировать набор значков из системного каталога в ваш домашний каталог, чтобы настроить значок, и вы включите только те части, которые хотите изменить!

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

Создание набора иконок для слияния тем

Давайте создадим супер-моно набор иконок:

# Create a new icon set
mkdir -p ~/.icons/super-mono

# Copy an existing icon config and modify it for our new icon set
cp /usr/share/icons/Faenza-Darkest/index.theme      ~/.icons/super-mono/.
sed -ie "s/Name=Faenza-Darkest/Name=super-mono/"    ~/.icons/super-mono/index.theme
sed -ie "s/Comment=.*$/Comment=Created with by me/" ~/.icons/super-mono/index.theme
sed -ie "s/Inherits=/Inherits=ubuntu-mono-dark,/"   ~/.icons/super-mono/index.theme

Теперь у нас есть новый набор иконок, который выглядит точно так же, как Faenza-Darkest.

Чтобы объединить наши две темы, мы меняем тему супер-моно на наследование от ubuntu-mono-dark и затем Faenza.

sed -ie "s/Inherits=.*$/Inherits=ubuntu-mono-dark,Faenza/" ~/.icons/super-mono/index.theme

Этого должно быть достаточно для Ричзиллы, просто выберите супер-моно в Внешний вид.

Добавление пользовательских значков

Мы также можем добавить отдельные иконки к этому набору иконок:

ln -s /usr/share/icons/Faenza-Darkest/actions/22/gtk-paste.png ~/.icons/super-mono/actions/22/.

И теперь наша тема супер-моно сочетает в себе ubuntu-mono-dark и Faenza, за исключением того, что она использует одну иконку из Faenza-Darkest. Смотрите более поздние разделы, чтобы использовать больше, чем просто несколько значков.

Важно видеть, что я скопировал index.theme из Faenza-Darkest, а затем использовал иконки из Faenza-Darkest. Файл index.theme сообщает, где могут быть иконки. Если вы хотите извлечь отдельные значки из разных наборов значков, вам нужно объединить их файлы index.theme. Вы можете посмотреть на файлы, и вы увидите поле под названием Каталоги, в котором перечислены все папки, содержащие значки. Затем вы увидите другие поля, которые описывают эти папки. Если вы добавите значок, который не описан в этих полях, этот значок будет игнорироваться. Вы можете найти больше информации в спецификации index.theme .

Дополнительно: выборочное объединение трех наборов иконок

Я также люблю убунту-моно иконки. Мне нравятся иконки приложений Faenza, но мне не нравятся моно иконки Faenza (индикаторы и кнопки). Мне также нравятся элементарные иконки. Поэтому я хочу объединить эти три набора иконок. Насколько я знаю, лучший способ сделать это - выделить значки, которые вам нравятся.

  1. Используйте убунту-моно-темный
  2. Используйте иконки приложений Faenza
  3. В противном случае используйте элементарные иконки

Для этого нам нужно указать ubuntu-mono-dark не наследовать ни от чего (поэтому мы также можем использовать Faenza и элементарный).

# First, ubuntu-mono-dark
# Create a shadow of the system icon set
mkdir -p ~/.icons/ubuntu-mono-dark

# Copy an existing icon config and modify it for our shadow icon set
cp /usr/share/icons/ubuntu-mono-dark/index.theme   ~/.icons/ubuntu-mono-dark/.
sed -ie "s/Comment=.*$/Comment=A shadow to prevent inherits/" ~/.icons/ubuntu-mono-dark/index.theme
sed -ie "s/Inherits=.*$/Inherits=/"                ~/.icons/ubuntu-mono-dark/index.theme

Вы заметите, что набор значков ubuntu-mono dark теперь не работает. В нем будут отсутствовать значки, предоставленные Humanity-Dark, и другие наборы значков, от которых он наследуется. Это изменение повлияет только на вашего пользователя.

Теперь мы можем создать новый набор иконок, который использует иконки приложений от Faenza.

# Create a new icon set
mkdir -p ~/.icons/Faenza-apps

# Copy the existing icon config and modify it for our new icon set
cp /usr/share/icons/Faenza/index.theme             ~/.icons/Faenza-apps/.
sed -ie "s/Name=Faenza/Name=Faenza-apps/"          ~/.icons/Faenza-apps/index.theme
sed -ie "s/Comment=.*$/Comment=Just Faenza app icons/" ~/.icons/Faenza-apps/index.theme
sed -ie "s/Inherits=.*$/Inherits=/"                ~/.icons/Faenza-apps/index.theme

# Use Faenza's app icons
ln -s /usr/share/icons/Faenza/apps/ ~/.icons/Faenza-apps/.

Этот набор иконок Faenza-apps также не работает. Он имеет только значки для приложений. Все остальные значки отсутствуют, потому что мы удалили наследство.

Теперь мы создаем набор иконок, который будем использовать. Наш набор иконок не будет содержать иконок, он просто соединяет другие наши наборы иконок.

# Create a new icon set
mkdir -p ~/.icons/merge-mono-dark

# Copy an existing icon config and modify it for our new icon set
cp /usr/share/icons/Faenza/index.theme                 ~/.icons/merge-mono-dark/.
sed -ie "s/Name=Faenza/Name=merge-mono-dark/"          ~/.icons/merge-mono-dark/index.theme
sed -ie "s/Comment=.*$/Comment=Created with by me/"    ~/.icons/merge-mono-dark/index.theme
sed -ie "s/Inherits=.*$/Inherits=ubuntu-mono-dark,Faenza-apps,elementary-mono-dark/" ~/.icons/merge-mono-dark/index.theme

Теперь у нас должна быть возможность выбрать merge-mono-dark в Appearance, и у нас будет новый красивый набор иконок! (Примечание: нам не нужно объединять файлы index.theme, потому что мы не добавляем значки из разных наборов значков в merge-mono-dark. Вместо этого мы используем Inherits для автоматического объединения значков.)


Объяснение некоторых команд

Я использую много команд терминала для упрощения этого ответа, но вот описание того, что они делают.

ln -s /usr/share/icons/Faenza-Darkest/actions/22/gtk-paste.png ~/.icons/Faenza-Alan/actions/22/.

Это создает указатель в вашем наборе значков на значок gtk-paste в системном значке. Таким образом, дополнительное пространство на жестком диске не используется, и ваш набор значков обновляется вместе с набором значков системы. Если вы этого не хотите, замените ln -sна cp -r.

sed -ie "s/dark/light/" ~/file

Значит , чтобы заменить все darkс lightв ~ / файл.

sed -ie "s/Comment=.*$/Comment=Created with by me/" ~/.icons/super-mono/index.theme

.*$Средство для сопоставления любого текста (. *) До конца строки ($).

sed -ie "s/Inherits=/Inherits=ubuntu-mono-dark,/"   ~/.icons/super-mono/index.theme

Здесь мы вставляем ubuntu-mono-dark перед списком Inherits, потому что ищем Inherits= и заменяем его наInherits=ubuntu-mono-dark,

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

idbrii
источник
1
<sarcasm> Я не уверен, что этот пост достаточно подробный pydave </ sarcasm>, если серьезно, отличный ответ. У меня на самом деле была похожая проблема с иконкой Клементины, с которой это решается.
zookalicious