如何合并两组图标?

如何合并两组图标?

我想合并标准 Ubuntu Mono 图标集和 Faenza 图标集。我想保留面板中的标准 Ubuntu 图标(包括 Dropbox、文件传输等图标),并用 Faenza 版本替换所有其他应用程序图标。

我该如何处理这个问题?

答案1

我认为合并图标集的最佳方法是创建所谓的轻量级图标集。此图标集位于您的主目录中,因此不会被系统更新所破坏,但它链接到系统图标集,因此它将与系统图标集一起更新。这些主题将不会提供给系统上的其他用户。

轻量级图标集

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 完全相同的新图标集。

为了合并我们的两个主题,我们将 super-mono 主题改为从 ubuntu-mono-dark 继承,然后从 Faenza 继承。

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

对于 richzilla 来说这应该足够了,只需在外观中选择 super-mono。

添加自定义图标

我们还可以向该图标集中添加单独的图标:

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

现在我们的 super-mono 主题结合了 ubuntu-mono-dark 和 Faenza,只不过它使用了一个来自 Faenza-Darkest 的图标。请参阅后面的部分以了解如何使用不止几个图标。

重要的是,我从 Faenza-Darkest 复制了 index.theme,然后使用了 Faenza-Darkest 中的图标。index.theme 文件说明了图标可能在哪里。如果您想从不同的图标集中提取单个图标,则需要合并它们的 index.theme 文件。您可以查看这些文件,您会看到一个名为目录的字段,其中列出了所有包含图标的文件夹。然后,您会看到描述这些文件夹的其他字段。如果您添加这些字段未描述的图标,则该图标将被忽略。您可以在index.theme 规范

高级:选择性地组合三个图标集

我也喜欢 ubuntu-mono 图标。我喜欢 Faenza 的应用程序图标,我不喜欢 Faenza 的单色图标(指示器和按钮)。我也喜欢 elementary 的图标。所以我想把这三个图标集结合起来。据我所知,最好的方法是隔离你喜欢的图标。

  1. 使用 ubuntu-mono-dark
  2. 使用 Faenza 的应用图标
  3. 否则使用 elementary 的图标

为此,我们需要告诉 ubuntu-mono-dark 不要从任何东西继承(这样我们也可以使用 Faenza 和 elementary)。

# 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,这样我们就有了一个漂亮的新图标集!(注意:我们不需要合并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 -scp -r

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

意思是将~/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=ubuntu-mono-dark,

无论我在哪里使用sed,您都可以编辑文件并手动应用编辑。

答案2

使用您最喜欢的文本编辑器编辑下面这个文件

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

并将法恩莎 (Faenza) 置于继承行的开头。

相关内容