如何合并两个图标集?


14

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

我将如何处理?

Answers:


3

使用您喜欢的文本编辑器在下面编辑此文件

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

并将Faenza放在继承行的开头。


2
您应该避免修改系统文件。对ubuntu-mono的更新将还原您的更改。
idbrii 2011年

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

对于richzilla来说应该足够了,只需在外观中选择超级单声道即可。

添加自定义图标

我们还可以向该图标集添加单个图标:

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

现在,我们的超级单声道主题结合了ubuntu-mono-dark和Faenza,但它使用了Faenza-Darkest中的一个图标。请参阅后面的部分,以使用多个图标。

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

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

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

  1. 使用ubuntu-mono-dark
  2. 使用Faenza的应用程序图标
  3. 否则使用基本图标

为此,我们需要告诉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图标集也已损坏。它只有用于应用程序的图标。所有其他图标都丢失了,因为我们删除了Inherits。

现在我们创建将要使用的图标集。我们的图标集将不包含任何图标,只连接其他图标集。

# 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中。相反,我们使用继承来自动合并图标集。)


一些命令的说明

我使用了很多终端命令来简化此答案,但以下是它们的功能说明。

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

手段代替所有darklight在〜/文件。

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,您都可以编辑文件并手动应用编辑。


1
<sarcasm>我不确定这篇文章是否足够详细pydave </ sarcasm>很好,很好的答案。实际上,我对Clementines图标也有类似的问题,可以解决。
zookalicious
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.