我想合并标准 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 的图标。所以我想把这三个图标集结合起来。据我所知,最好的方法是隔离你喜欢的图标。
- 使用 ubuntu-mono-dark
- 使用 Faenza 的应用图标
- 否则使用 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 -s
为cp -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) 置于继承行的开头。