【整活时间】学习一下图标主题的继承关系
Tofloor
poster avatar
忘记、过去
deepin
2020-10-17 08:20
Author
  • 前情提要:自从从 Beta 版本更新到 RC 版本之后,总觉得任务栏的输入法指示器图标有点问题,以前长这样子:




现在莫名其妙变成了这样:




真的是格格不入,搞得我这个强迫症浑身难受。自 RC 内测开始我已经反馈了至少 4-5 次,可惜这个问题从来没有人管过......估计是不太当回事儿吧。

既然没人管,那咱就自己整活儿呗~

  • 正文时间:


首先,开动小脑筋,找找这个奇怪的图标从哪里来......如果是从 15.11 等远古版本开始用过 Deepin 系统的用户可能会对一个名为 Papirus 的图标主题有很大的印象,主要就是这种灰色为主色调,看上去有棱有角的图标风格。这个主题嘛,不说好看与否,但是人家图标的覆盖范围是真滴广,下至状态小图标,上至软件大图标,都有这个风格的版本......不得不说是真的牛逼。而这个输入法图标确实就在其中。

那么,为什么 bloom 主题里会混进这个主题的图标呢?

其实,仔细看看主题文件夹的大小,很明显,每个主题不可能涵盖的范围都有这么广。比如星火商店里我修改的 blossom 主题,就是只修改的启动器图标为 Deepin 的logo,其他图标都是和 bloom 一毛一样,然而整个文件夹大小只有 40KB,这又是怎么做到滴呢?


很简单,这需要继承其他的主题这里以 Beta 版本 deepin 20 系统中的 bloom 主题为例(图标没出问题的版本)。

首先,前往 /usr/share/icons/bloom 主题文件夹(其他主题基本同理)。在其中可以看到一个名为 index.theme 的文件,而这个就可以说是主题的配置文件了。打开文件,集中观察一下开头的部分,如图:



这里,Name 即主题名称,Inherits 就是继承关系了。继承大概意味着加载这个主题的图标时,会先加载父类主题的图标,之后如果在子类主题中存在同名文件或新的文件,才会被加载显示。所以嘛,我做的 blossom 主题只在 places 文件夹的各个尺寸文件夹中放进了 deepin-launcher.svg 新图标,而加载主题时优先加载了 bloom 主题,只有启动台图标被替换加载了。是不是很简单?有想自己做主题的童鞋应该会轻松很多吧......XD


接下来分析一下现在 bloom 主题出了啥问题。其实很简单,只是继承关系被改了而已。在 15.11 等旧版本中,只有现在被成为 bloom-classic 的主题,那个时候是直接继承 Papirus 的。到了 20 Beta 版本,为了新的风格,做了 bloom 主题,但是只替换了部分原有的图标,所以 bloom 主题依赖于 bloom-classic,间接依赖于 Papirus。但至少这个时候,deepin 自己的输入法图标还是在 bloom-classic 里面存在的。

然而 RC 测试版之后,个人猜测,由于官方又造了不少新轮子,多了一部分新的主题图标,自然是符合新的圆润风格,不可能再返回去适配 bloom-classic 主题。然后就变成了 bloom 直接依赖 Papirus,bloom-classic 才依赖 bloom 这个不算完整的主题的问题。自然,在 bloom 中缺失的输入法图标就显示成了 Papirus 主题中的对应图标......




咳咳,这种鸡毛蒜皮的小问题,也不指望官方自己修复了,先把大的 bug 修好了再说吧......

最简单的修改方式,那自然是修改 bloom 和 bloom-classic 两个主题的 index.theme 文件,修改为 bloom-classic 继承自 Papirus,bloom 继承自 bloom-classic,这样就回到了熟悉的白色图标风格啦。修改完了记得注销并重新登录,或者重启才能生效。只不过这样会导致使用 bloom-classic 主题时,部分新的系统应用图标缺失的问题。楼下再说说怎么更完美地处理这个残缺的主题。

* P.S > 一定要注意修改的顺序先修改 bloom-classic,再修改 bloom 主题的 index.theme!!!因为先修改 bloom 主题,就会造成 bloom 和 bloom-classic 两个主题互相依赖......这种死循环你也懂得,虽然没啥大问题,但是在图形界面下会造成一些编辑器软件打不开......那么剩下一个就只能靠终端 vim 或者 nano 来修改了,很不方便。

Reply Favorite View the author
All Replies
忘记、过去
deepin
2020-10-17 09:03
#1
本帖最后由 zty199 于 2020-10-17 01:14 编辑

难道 bloom 主题里面真的没有自己的输入法图标吗?

没有修改 index.theme 之前,你可能在某些情况下看到过一个和第一张图中白色的图标有点相似,但是更圆润,按键中间不是透明的而是黑色线条填充的图标。这个其实就是新的主题中的输入法图标了。为什么这个图标没有自己被加载替换显示?个人估计大概率是文件位置不太对劲。

过程就不细说了,测试下来只要在 /usr/share/icons/bloom/devices/16 文件夹下,建立一个名为 input-keyboard.svg 的软链接,指向 /usr/share/icons/bloom/apps/16/fcitx-kbd.svg 这个图标文件即可。注销后重新登录或者重启,即可看到效果。
依次执行以下命令即可:
  1. cd /usr/share/icons/bloom/devices/16/
  2. sudo ln -s -f ../../apps/16/fcitx-kbd.svg ./input-keyboard.svg
Copy the Code
(建议直接复制,因为命令中空格不明显)

* P.S > 搜狗输入法用户可以在 /usr/share/icons/bloom/apps/48 文件夹下,创建一个名为 fcitx-sogoupinyin.svg 的软链接,指向该文件夹内的 sogoupinyin.svg 图标即可。
依次执行以下命令即可:
  1. cd /usr/share/icons/bloom/apps/48/
  2. sudo ln -s -f sogoupinyin.svg ./fcitx-sogoupinyin.svg
Copy the Code
(建议直接复制,因为命令中空格不明显)

* P.S > 当然,不用软链接,直接复制一个图标过去改名字也可以,自己选择即可。

操作后效果如图所示(个人感觉稍微和谐一点?):


Reply View the author
忘记、过去
deepin
2020-10-17 09:22
#2
本帖最后由 zty199 于 2020-10-17 02:00 编辑

不过嘛,强迫症表示这个 fcitx-kbd.svg 图标中间是黑色线条,不是透明的,看着难受。于是就又制作了一个中间透明的版本。

fcitx-kbd.zip

直接替换 /usr/share/icons/bloom/apps/16/ 文件夹下的同名文件即可。

* P.S > 顺手做了一个灰色版本的,和 /usr/share/icons/bloom/devices/16/ 文件夹下的图标风格一致,但是没啥卵用,加载后输入法图标也是灰色的,不协调,就当是留着备用了......

不过还有一个新的问题就是这个输入法图标不会随着主题颜色变化。

理论上来说,这个输入法图标加载的应该是 /usr/share/bloom/status/20/keyboard-symbolic.svg 和 keyboard-symbolic-dark.svg 这两个图标才对,正好符合主题切换的要求。
然而,托盘区的显示图标似乎识别的是 fcitx 输入法框架的图标......这就没办法修改了,要改的话估计得改 fcitx 的代码,就无能为力了......

Reply View the author
Fredoong
deepin
2020-10-17 09:23
#3


你看看我这套图标(bloom-classic主题),估计能逼死你这个强迫症。我会告诉你我的充电图标目前仍然有时候是图里这样,有时候像你1楼图里那样是个插头吗?然而这些我都不在乎,大概因为我没有强迫症吧。
Reply View the author
stone
deepin
2020-10-17 09:39
#4
强迫症笑死!
Reply View the author
忘记、过去
deepin
2020-10-17 09:45
#5
https://bbs.deepin.org/post/203946
你看看我这套图标(bloom-classic主题),估计能逼死你这个强迫症。我会告诉你我的充电图标目前仍然有时候 ...

确实,强迫症难治......XD

电池图标是因为两个图标,你显示的是电池 100% 充电且适配器连接状态,我这里显示的是电池已充满状态。虽然意思都一样,但是图标确实是两个......不清楚系统具体是怎么识别这个状态的。

我猜如果适配器功率不足,即使插电电脑运行时还要从电池取电,或者电池识别存在异常,就会出现图标变化的情况了......
Reply View the author
wzb
deepin
2020-10-17 21:25
#6
干得漂亮.
是不是deepin团队缺美工啊
Reply View the author
MMHMM
deepin
2020-10-17 21:42
#7
系统一更新,一大批强迫症患者上线。强迫症患者说:“你们要闹那样,这个看着不舒服,那个看着不舒服!”
只回复你们一句:“不服你们自己来!!!”
Reply View the author
忘记、过去
deepin
2020-10-17 21:46
#8
https://bbs.deepin.org/post/203946
系统一更新,一大批强迫症患者上线。强迫症患者说:“你们要闹那样,这个看着不舒服,那个看着不舒服 ...

对嘛,所以我这不是自己整了吗......XD

不过还是建议设计师检查一遍 bloom 主题的图标继承关系,直接偷懒修改 bloom-classic 和 bloom 的继承顺序肯定有这个问题。有些图标的软链接确实没到位。
更别说 bloom-classic 里面还有重复的图标了,名字后面都多了数字 2 了......
Reply View the author
MMHMM
deepin
2020-10-17 21:53
#9
https://bbs.deepin.org/post/203946
对嘛,所以我这不是自己整了吗......XD

不过还是建议设计师检查一遍 bloom 主题的图标继承关系,直接偷懒 ...

那就希望你们多多找 问题,让设计师头发掉光光!!!哈哈哈
Reply View the author
ghostry
deepin
2020-10-17 22:07
#10
整了可以推到官方仓库去,

让别的强迫症也能少受点罪
Reply View the author
sgb76
deepin
2020-10-18 02:23
#11
linux系统最大的乐趣就是折腾
Reply View the author
jingle
deepin
2020-10-18 02:44
#12
感谢折腾,已经反馈到设计师
Reply View the author
Fredoong
deepin
2020-10-18 17:27
#13
https://bbs.deepin.org/post/203946
确实,强迫症难治......XD

电池图标是因为两个图标,你显示的是电池 100% 充电且适配器连接状态,我这里 ...

我这个笔记本老了,电池可能是真的坏掉了。不光电池图标,我这套bloom-classic图标还有黑有白,没看到你这个帖子的话我还以为本来就应该是这样的。。。。
Reply View the author
xubooo
deepin
2020-10-21 05:55
#14
https://bbs.deepin.org/post/203946
你看看我这套图标(bloom-classic主题),估计能逼死你这个强迫症。我会告诉你我的充电图标目前仍然有时候 ...

请问右下角显示CPU 内存以及网速是怎么设置的?
Reply View the author
Fredoong
deepin
2020-10-21 14:57
#15
https://bbs.deepin.org/post/203946
请问右下角显示CPU 内存以及网速是怎么设置的?

这个不是Deepin自带的设置,是本论坛Deepin用户开发的开源Deepin插件,插件项目地址:https://gitee.com/q77190858/dde-sys-monitor-plugin/
Reply View the author