发新帖

【整活时间】学习一下图标主题的继承关系

zty199 / 2020-10-17 00:20
浏览: 1112 / 回复: 15
查看: 1112|回复: 15

【整活时间】学习一下图标主题的继承关系

[复制链接]
收藏
跳转到指定楼层
  • 前情提要:自从从 Beta 版本更新到 RC 版本之后,总觉得任务栏的输入法指示器图标有点问题,以前长这样子:


截图录屏_选择区域_20201016232843.png

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

截图录屏_选择区域_20201016232242.png


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

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

  • 正文时间:


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

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

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


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

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

截图录屏_deepin-editor_20201016232652.png

这里,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 来修改了,很不方便。

评分

参与人数 1贡献 +3 收起 理由
wzb_td + 3 加分鼓励 : )

查看全部评分

Device: HP Pavilion Gaming Laptop 15-cb073tx
CPU: Intel Core i5-7300HQ
GPU: Intel HD Graphics 630 / NVidia GeForce GTX 1050
Network: Broadcom bcm94360cs2 / Realtek RTL8111
Audio: Realtek ALC295
OS: Windows 10 2004 / Deepin 20 / macOS Big Sur

32

主题

895

帖子

2767

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
2767
zty199 发表于 2020-10-17 01:03:44 | 显示全部楼层
本帖最后由 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
复制代码
(建议直接复制,因为命令中空格不明显)

* 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
复制代码
(建议直接复制,因为命令中空格不明显)

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

操作后效果如图所示(个人感觉稍微和谐一点?): 截图录屏_选择区域_20201017010803.png


Device: HP Pavilion Gaming Laptop 15-cb073tx
CPU: Intel Core i5-7300HQ
GPU: Intel HD Graphics 630 / NVidia GeForce GTX 1050
Network: Broadcom bcm94360cs2 / Realtek RTL8111
Audio: Realtek ALC295
OS: Windows 10 2004 / Deepin 20 / macOS Big Sur

32

主题

895

帖子

2767

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
2767
zty199 发表于 2020-10-17 01:22:22 | 显示全部楼层
本帖最后由 zty199 于 2020-10-17 02:00 编辑

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

fcitx-kbd.zip (2.25 KB, 下载次数: 8)
Device: HP Pavilion Gaming Laptop 15-cb073tx
CPU: Intel Core i5-7300HQ
GPU: Intel HD Graphics 630 / NVidia GeForce GTX 1050
Network: Broadcom bcm94360cs2 / Realtek RTL8111
Audio: Realtek ALC295
OS: Windows 10 2004 / Deepin 20 / macOS Big Sur

13

主题

369

帖子

1386

积分

-rw-r--r--

Rank: 4

积分
1386
winterfive 发表于 2020-10-17 01:23:16 | 显示全部楼层
截图录屏_选择区域_20201017011826.png

你看看我这套图标(bloom-classic主题),估计能逼死你这个强迫症。我会告诉你我的充电图标目前仍然有时候是图里这样,有时候像你1楼图里那样是个插头吗?然而这些我都不在乎,大概因为我没有强迫症吧。
OS: Deepin 20 (1003)
Model: Asus A52Jc
Kernel: 5.4.50-amd64
Shell: bash 5.0.3
Resolution: 1366x768
DE: Deepin
WM: KWin
CPU: Intel i3 M 370 (4) @ 2.399GHz
GPU: Intel Core Processor
Memory: 5749MB
Icons: bloom-classic [GTK2/3]
Terminal Font: DejaVu Sans Mono 12

21

主题

213

帖子

1008

积分

-rw-r--r--

Rank: 4

积分
1008
l17es 志愿者 发表于 2020-10-17 01:39:57 | 显示全部楼层
强迫症笑死!

32

主题

895

帖子

2767

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
2767
zty199 发表于 2020-10-17 01:45:44 | 显示全部楼层
winterfive 发表于 2020-10-17 01:23
你看看我这套图标(bloom-classic主题),估计能逼死你这个强迫症。我会告诉你我的充电图标目前仍然有时候 ...

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

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

我猜如果适配器功率不足,即使插电电脑运行时还要从电池取电,或者电池识别存在异常,就会出现图标变化的情况了......
Device: HP Pavilion Gaming Laptop 15-cb073tx
CPU: Intel Core i5-7300HQ
GPU: Intel HD Graphics 630 / NVidia GeForce GTX 1050
Network: Broadcom bcm94360cs2 / Realtek RTL8111
Audio: Realtek ALC295
OS: Windows 10 2004 / Deepin 20 / macOS Big Sur

41

主题

186

帖子

862

积分

-rw-r--r--

Rank: 4

积分
862
wzb_td 发表于 2020-10-17 13:25:19 | 显示全部楼层
干得漂亮.
是不是deepin团队缺美工啊

263

主题

1775

帖子

8987

积分

drw-r-----

Rank: 7Rank: 7Rank: 7

积分
8987
QQ
MMDMM 志愿者 发表于 2020-10-17 13:42:43 | 显示全部楼层
系统一更新,一大批强迫症患者上线。强迫症患者说:“你们要闹那样,这个看着不舒服,那个看着不舒服!”
只回复你们一句:“不服你们自己来!!!”
目前:
办公OS: Deepin 1002
备用OS: UOS 20 个人版
已宕机OS: Windows 10
已阵亡OS: Window 7


Deepin 漏洞搜查官
Deepin 论坛管理员

32

主题

895

帖子

2767

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
2767
zty199 发表于 2020-10-17 13:46:58 | 显示全部楼层
MMDMM 发表于 2020-10-17 13:42
系统一更新,一大批强迫症患者上线。强迫症患者说:“你们要闹那样,这个看着不舒服,那个看着不舒服 ...

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

不过还是建议设计师检查一遍 bloom 主题的图标继承关系,直接偷懒修改 bloom-classic 和 bloom 的继承顺序肯定有这个问题。有些图标的软链接确实没到位。
更别说 bloom-classic 里面还有重复的图标了,名字后面都多了数字 2 了......
Device: HP Pavilion Gaming Laptop 15-cb073tx
CPU: Intel Core i5-7300HQ
GPU: Intel HD Graphics 630 / NVidia GeForce GTX 1050
Network: Broadcom bcm94360cs2 / Realtek RTL8111
Audio: Realtek ALC295
OS: Windows 10 2004 / Deepin 20 / macOS Big Sur

263

主题

1775

帖子

8987

积分

drw-r-----

Rank: 7Rank: 7Rank: 7

积分
8987
QQ
MMDMM 志愿者 发表于 2020-10-17 13:53:43 | 显示全部楼层
zty199 发表于 2020-10-17 13:46
对嘛,所以我这不是自己整了吗......XD

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

那就希望你们多多找 问题,让设计师头发掉光光!!!哈哈哈
目前:
办公OS: Deepin 1002
备用OS: UOS 20 个人版
已宕机OS: Windows 10
已阵亡OS: Window 7


Deepin 漏洞搜查官
Deepin 论坛管理员

106

主题

1883

帖子

6090

积分

-rw-rw-rw-

Rank: 6Rank: 6

积分
6090
ghostry 发表于 2020-10-17 14:07:12 | 显示全部楼层
整了可以推到官方仓库去,

让别的强迫症也能少受点罪

17

主题

598

帖子

2432

积分

-rw-rw-r--

Rank: 5Rank: 5

积分
2432
sgb76 发表于 2020-10-17 18:23:48 | 显示全部楼层
linux系统最大的乐趣就是折腾

265

主题

2万

帖子

5万

积分

d-rw-rw-r--

Rank: 8Rank: 8

积分
57715
jingle 官方管理员 发表于 2020-10-17 18:44:48 来自移动端 | 显示全部楼层
感谢折腾,已经反馈到设计师

13

主题

369

帖子

1386

积分

-rw-r--r--

Rank: 4

积分
1386
winterfive 发表于 2020-10-18 09:27:06 | 显示全部楼层
zty199 发表于 2020-10-17 01:45
确实,强迫症难治......XD

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

我这个笔记本老了,电池可能是真的坏掉了。不光电池图标,我这套bloom-classic图标还有黑有白,没看到你这个帖子的话我还以为本来就应该是这样的。。。。
OS: Deepin 20 (1003)
Model: Asus A52Jc
Kernel: 5.4.50-amd64
Shell: bash 5.0.3
Resolution: 1366x768
DE: Deepin
WM: KWin
CPU: Intel i3 M 370 (4) @ 2.399GHz
GPU: Intel Core Processor
Memory: 5749MB
Icons: bloom-classic [GTK2/3]
Terminal Font: DejaVu Sans Mono 12

3

主题

14

帖子

68

积分

-r--------

Rank: 1

积分
68
xubooo 发表于 7 天前 | 显示全部楼层
winterfive 发表于 2020-10-17 01:23
你看看我这套图标(bloom-classic主题),估计能逼死你这个强迫症。我会告诉你我的充电图标目前仍然有时候 ...

请问右下角显示CPU 内存以及网速是怎么设置的?

13

主题

369

帖子

1386

积分

-rw-r--r--

Rank: 4

积分
1386
winterfive 发表于 6 天前 | 显示全部楼层
xubooo 发表于 2020-10-20 21:55
请问右下角显示CPU 内存以及网速是怎么设置的?

这个不是Deepin自带的设置,是本论坛Deepin用户开发的开源Deepin插件,插件项目地址:https://gitee.com/q77190858/dde-sys-monitor-plugin/
OS: Deepin 20 (1003)
Model: Asus A52Jc
Kernel: 5.4.50-amd64
Shell: bash 5.0.3
Resolution: 1366x768
DE: Deepin
WM: KWin
CPU: Intel i3 M 370 (4) @ 2.399GHz
GPU: Intel Core Processor
Memory: 5749MB
Icons: bloom-classic [GTK2/3]
Terminal Font: DejaVu Sans Mono 12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回列表 返回版块 返回顶部