English | 简体中文
一个让 HyperOS 通过 Magisk 模块支持 Material You Monet 风格图标的 Python 脚本。
本项目通过移植转换并着色 Lawnicons 的SVG图标资源到 HyperOS 规范的 PNG 分层图标资源,为缺乏完整 Material You 图标着色支持且无法使用三方图标包的 HyperOS 提供了优雅的 Monet 风格图标支持。
主要特点:
- 通过 Magisk 模块安装
- 兼容 HyperOS 1 & 2
- 完整移植 Lawnicons 图标包的 7400+ 个高质量svg图标,上游图标库更新频繁,国内外应用支持度高
- 包含线条和填充两种样式 (Outlined & Filled)
- 保持 HyperOS 图标原生的连续曲率圆角矩形
- 支持配置图标前景色和背景色
- 支持配置图标映射
- 支持一键锁屏快捷方式
- 支持 Github Action 云端自动化构建打包 Magisk 模块,无需配置本地环境
Important
需要 root 权限
如果觉得还不错,欢迎给本项目和 Lawnicons 点个Star 🌟
Xiaomi 13 | HyperOS 2 (CN) | Android 15 | Kitsune Mask 27001
保持 Lawnicons 的原始样式,不进行任何修改
灵感来源于 Niagara Launcher 的 Anycon - Material 样式
在 Outlined 样式的基础之上新增了对图标封闭区域的推断和填充,无封闭区域的图标保持 Outlined
不论是Magisk模块还是mtz主题包,MIUI/HyperOS的图标主题核心都在于其中包含的icons文件,其本质是一个去掉后缀的zip包,用来存放图标资源
icons包结构如下:
icons/
├─ transform_config.xml
└─ res/
└─ drawable-xxhdpi/
├─ com.tencent.mm/
│ ├─ 0.png
│ └─ 1.png
├─ com.coolapk.market/
│ ├─ 0.png
│ └─ 1.png
└─ ...
其中drawable-xxhdpi
中存放以对应应用包名命名的目录,每个应用的静态分层图标以png图片形式存在,由背景0.png,图标本体1.png组成,不支持SVG和drawable xml
Lawnicons 包含了大量用于生成动态配色图标的SVG矢量图标,而SVG文件可以通过cairoSVG
和pil
库转换为png并着色。
Lawnicons 还包含了图标-包名的映射文件appfilter.xml
,这为生成以包名命名的目录提供了可能。不过其使用了包名/activity
而非仅包名来映射图标,一个包名下可能列举了多个activity,同一个包名或图标可能会出现在多个映射条目中,不利于icons包的构建。
本项目的核心是将 Lawnicons 的 SVG 图标转换为 HyperOS 可用的主题资源。脚本主要工作流程如下:
-
图标映射处理
- 解析 Lawnicons 的 appfilter.xml
- 简化和去重映射数据,确保每个应用只对应一个图标,得到方便使用的icon_mapper.xml,
- 支持通过 icon_mapper_alt.xml 自定义映射
-
图标资源转换
- 将 SVG 矢量图标转换为 PNG 格式
- 按指定颜色对图标进行着色
- 按 HyperOS 主题规范调整图标大小和缩放比例
- 生成符合 HyperOS 规范的分层图标(背景层和图标层)
-
主题包构建
- 按应用包名组织图标资源
- 生成符合 HyperOS 规范的 icons 资源包
- 打包为 Magisk 模块
虽然无法实现真正的端侧动态取色,但通过自定义颜色方案,仍可以实现与壁纸色彩高度统一的 Monet 图标效果。
- 确保 HyperOS 已经 root
- 有一定的折腾动手能力
Monet 图标分为前景色和背景色。前景色 FG_COLOR 用作图标线条颜色,背景色 BG_COLOR 用作图标背景底色。通常在亮色模式下,前景色是深色,背景色是浅色;在暗色模式下,前景色是浅色,背景色是深色。
这一步将基于你的壁纸获取合适的前景色 FG_COLOR 和背景色 BG_COLOR
下面提供了几种可行的获取颜色的方式,但似乎都不太优雅:
安装任意版本的 Lawnicons,直接截图取色。以获得与 Lawnicons 完全相同的效果
通过取色器选取图标线条 FG_COLOR,选取图标背景颜色 BG_COLOR,例如,下图中获取的是暗色模式下 Lawnicons 图标的前景色。
将壁纸上传到 Material Theme Builder,以获得完整的 Material You 配色方案
如欲创建深色模式下使用的图标,可在页面右侧下方的 Light Scheme 中选取 (Primary 或 Secondary) Container 即 P-90 或 S-90 作为 FG_COLOR,On (Primary 或 Secondary) Container 即 P-10 或 S-10 作为 BG_COLOR。
如欲创建浅色模式下使用的图标,可在页面右侧下方的 Dark Scheme 中选取 (Primary 或 Secondary) Container 即 P-30 或 S-30 作为 FG_COLOR,On (Primary 或 Secondary) Container 即 P-90 或 S-90 作为 BG_COLOR。
也可根据个人喜好搭配色彩、深浅和对比度
下面提供了几组样例图片中所使用的配色方案
# 深色主题 蓝色
FG_COLOR = "#d1e2fc"
BG_COLOR = "#1c232b"
# 浅色主题 蓝色
FG_COLOR = "#011c31"
BG_COLOR = "#e8ecf7"
# 深色主题 红色
FG_COLOR = "#fcdbcf"
BG_COLOR = "#2d2017"
# 浅色主题 红色
FG_COLOR = "#331300"
BG_COLOR = "#f5eae4"
# 深色主题 绿色
FG_COLOR = "#c7efac"
BG_COLOR = "#1e241a"
# 浅色主题 绿色
FG_COLOR = "#071e02"
BG_COLOR = "#eaeee0"
# 浅色主题 黑白 (构建速度最快)
FG_COLOR = "#000000"
BG_COLOR = "#ffffff"
无需配置环境,直接在线构建:
- 确保你有Github账号并登录
- Fork 本仓库
- 进入 Fork 仓库的 Actions 页面
- 点击左侧的 "Build"
- 点击右侧的 "Run workflow":
- 填入先前获取的前景色和背景色(十六进制颜色值,如 #d1e2fc),或使用默认的深蓝色配色
- 可选添加颜色主题名称(将包含在输出文件名中)
- 需要处理7000+个图标,耗时大约6分钟
- 待构建完成后下载 Artifacts:
magisk_HyperMonetIcon_*.zip
和mtz_HyperMonetIcon_*.zip
,并解压一次
需要配置本地环境:
-
下载或克隆本仓库和 Lawnicons develop 分支
-
将 lawnicons-develop 目录置于本项目目录下,确保 lawnicons-develop 下不存在更进一步的嵌套目录
- 应当看起来如下
-
安装 Python 3.x,务必记住勾选 "Add Python to Path"
-
安装包含了 Cairo 图形库的 GTK For Windows Runtime
-
安装 cairoSVG 和 pillow,在终端中执行:
pip install cairoSVG pillow
-
按需编辑
configs/config.py
中 15-16行 的颜色值和 51行 的线程数 -
按需编辑
mappers/icon_mapper_alt.xml
,自定义图标映射 (建议阅读注释) -
在当前目录下的终端中执行:
python HyperMonetIconThemeScript.py
-
运行耗时取决于CPU性能和线程数设置,大约需要5分钟
-
运行结束后,工件
magisk_HyperMonetIcon_*.zip
和mtz_HyperMonetIcon_*.mtz
将输出至当前目录
- 通过 Magisk / Kitsune Mask / KernelSU 刷入 zip 模块
- 重启设备
- 如需更新图标,建议删除旧模块并重启后再刷入新模块
- 确保已经安装 LSPosed 和主题破解
- 在主题商店中从SD卡导入 mtz 文件
- 进入 模块混搭-图标,使用本主题图标
Warning
务必优先使用 Magisk 模块而非 mtz 主题包
mtz还在测试当中。受版本影响较大,无高级材质,部分图标无法生效,应用开闭动画圆角可能有问题
兼容性取决于模板文件。
已测试,一切正常:
-
Xiaomi 13 (CN)
- HyperOS 2.0.17 (Android 15) + Kitsune Mask 27.1
-
Xiaomi 12S (CN)
- HyperOS 1.0.24.7.28.DEV (Android 14) + Magisk 26.4
MIUI14及更低版本可能会遇到遮罩圆角问题。
Global 和 EU 系统版本待进一步测试。
其他系统版本、其他分辨率机型待测试补充。
- 基础实现
- 自定义图标映射
- 集成到 Github Action
- 一键锁屏快捷方式
- 其他快捷方式图标
- 更多形状及遮罩:Pixel圆形、OneUI风格
- 兼容性增强
-
不规则图标
-
图标分应用着色
-
图标分区着色
将实现类似于 Niagara Launcher 的 Anycons 各样式效果:
请向上游 Lawnicons 提交 SVG 图标
图标规则与提交向导 https://github.com/LawnchairLauncher/lawnicons/blob/develop/CONTRIBUTING.md
123云盘: 包含一切需要的文件和预构建包,方便Github下载慢的同学