【免费下载链接】Amethyst-Mod-Manager
A Linux native mod manager for a variety of games
Amethyst Mod Manager 是一款 Linux 原生的游戏 Mod 管理器,它内置了一套灵活的主题系统:十余款开箱即用的外观调色板(Dark、Amethyst、Cyberpunk、OLED 等),以及一套面向开发者/玩家的自定义主题机制,让你可以用图形化编辑器从零打造属于自己的外观。本文带你弄清这些主题背后的实现原理,并给出一份完整的自定义外观开发指南。
一、快速上手:在哪里切换 Amethyst Mod Manager 主题
对普通用户来说,整个过程不需要写任何代码:
- 打开Settings(设置)→ User Interface(用户界面)。
- 在主题预览网格(theme gallery)里点击你喜欢的主题色块。
- 界面会即时换肤并自动保存选择。
切换动作由 settings_view.py 里的_on_theme_changed完成——它同时做两件事:调用save_appearance_mode持久化你的选择,再调用apply_theme让整窗立即生效。
💡 小贴士:Qt 界面默认使用名为
amethyst的“签名主题”(近黑底 + 紫色强调色),它的设计灵感就来自应用本身的名字。
二、内置主题一览:13 款调色板 + 自定义机制
所有内置主题都集中放在 src/themes/ 目录下,一个主题 = 一个.py文件。下表是应用随附的主题调色板(外加 1 套自定义 JSON 机制,即第“14”项能力):
| 主题名称 | 源文件 | 明/暗 | 风格速写 |
|---|---|---|---|
| Dark | dark.py | 暗 | 原始调色板,蓝色#0078d4强调色 |
| Light | light.py | 亮 | 经典浅色界面 |
| Amethyst | amethyst.py | 暗 | 签名主题,紫色#8b5cf6强调色 |
| Breeze Dark | breeze.py | 暗 | 仿 KDE Breeze 暗色 |
| Breeze Light | breezelight.py | 亮 | 仿 KDE Breeze 浅色 |
| Adwaita | adwaita.py | 亮 | 仿 GNOME Adwaita |
| Catppuccin Mocha | catppuccin.py | 暗 | 柔和低对比粉彩 |
| Tokyo Night | tokyonight.py | 暗 | 墨蓝底 + 薰衣草紫 |
| Cyberpunk | cyberpunk.py | 暗 | 深红黑底 + 黄按钮 |
| OLED | oled.py | 暗 | 纯黑背景,省 OLED 功耗 |
| Noir | noir.py | 暗 | 单色胶片感,靠亮度分层 |
| Pip-Boy | pipboy.py | 暗 | 绿色磷光 CRT 风 |
| Stardew | stardew.py | 亮 | 羊皮纸奶油 + 田园绿 |
| Custom(自定义) | custom.py | 可选 | 用户 JSON 主题,见第五节 |
三、一个主题文件里到底藏着什么
打开任意主题文件(以 amethyst.py 为例),每个模块只需导出三个东西:
NAME:人类可读的名称,显示在设置下拉框里。CTK_APPEARANCE:声明该主题是"light"还是"dark",用于驱动内置 CustomTkinter 控件。PALETTE:一个{颜色键: "#hex"}字典,覆盖整个应用用到的每一处颜色。
这些键是按“角色”分组的,语义清晰,例如:
- 背景层:
BG_DEEP、BG_PANEL、BG_HEADER、BG_ROW… - 强调色:
ACCENT、ACCENT_HOV、TEXT_ON_ACCENT - 文本:
TEXT_MAIN、TEXT_DIM、TEXT_OK/TEXT_ERR/TEXT_WARN - 语义按钮:
BTN_DANGER/BTN_SUCCESS/BTN_WARN/BTN_INFO… - 状态高亮:文件冲突
FILE_WIN/FILE_LOSE、插件循环状态、跨面板冲突高亮等。
⚠️ 铁律:每个键必须在所有主题文件中都存在。缺一个键,切到该主题时对应 UI 就会破相。官方源码注释也反复强调了这一点。
四、主题是如何被加载与自动发现的
主题发现逻辑全部在 src/themes/init.py 中:
load_palettes()用pkgutil扫描 src/themes/ 下的每一个.py模块,只要它带有一个PALETTE字典就会被收录,theme_id 就是去掉.py的文件名(如dark、light)。- 容错优先:格式错误的主题文件(缺
PALETTE/NAME或导入报错)会被跳过并打印警告,而不会让应用崩溃。 - 扫描完内置主题后,它还会合并
load_custom_palettes()读到的用户 JSON 主题。 load_display_names()则收集每个主题的显示名;get_ctk_appearance()读取每个主题声明的明/暗模式,缺失时安全回退到"dark"。
在 Qt 端,调色板数据被 theme_qt.py 直接复用——它把这份“与工具无关”的颜色字典翻译成一份 QSS 样式表,而不是重复维护一套颜色。其中还内置了实时换肤的巧妙机制:给控件样式里的颜色值嵌入一个 CSS 注释标记(@amm-theme:KEY),当主题变更时可精准替换对应角色,无需重建整个界面。
五、自定义外观开发指南(从零打造主题)
这里有两条路径,按需选择。
方式 A:贡献一个内置 Python 主题
适合熟悉代码、想让主题随应用分发的人。按 src/themes/init.py 顶部注释的“四步法”:
- 复制一个现有文件(如
dark.py)为新文件,例如solarized.py。 - 修改
NAME常量和PALETTE里的色值。 - 保留全部键——一个都不能少。
- 保存即可,主题会在启动时被自动发现,无需改动其他代码。
方式 B:用图形化编辑器制作 JSON 自定义主题(推荐新手)
这是官方为普通玩家准备的路径,完全可视化:
- 在Settings → User Interface里点击 “Edit / Create Theme…”,打开全屏主题编辑器(入口见 settings_view.py 的
_open_theme_editor)。 - 选一个“Start from”基础主题(任意内置或已有自定义主题)。
- 颜色按角色分组展示;改一个基础色,其 hover/深色调变体会自动联动重算(配色数学逻辑在 theme_editor_groups.py)。
- 右侧是实时预览面板(theme_preview.py),按钮、输入框、列表、进度条都会即时反映你的修改。
- 点Save / Save As落盘。
保存时,主题以 JSON 形式写入用户配置目录(遵循 XDG 规范,见 config_paths.py):
~/.config/AmethystModManager/themes/<主题名>.jsonJSON 结构非常简洁(详见 custom.py 的 schema):
{ "NAME": "My Theme", "CTK_APPEARANCE": "dark", "PALETTE": { "BG_DEEP": "#101010", "ACCENT": "#8b5cf6" } }- 自定义主题的 id 带
custom:前缀命名空间,永远不会和内置 id 冲突。 - 用Save As会基于名字去重(
my-theme→my-theme-2),保证不会覆盖已有主题。 - 因为保存在 App 包外,应用更新后你的自定义主题依旧保留,还能当作单个文件分享。
六、常见问题排查
- 切到某主题后出现“破相”/空白色:多半是某个
PALETTE键缺失或色值非法,回到该主题文件核对键是否齐全。 - 我的 JSON 主题没出现在列表里:确认文件位于
~/.config/AmethystModManager/themes/,且含非空PALETTE字典;格式错误的文件会被跳过并在日志里打印警告。 - 想让浅色主题的 hover 更深:编辑器在非“Fine tune”模式下会根据源主题明暗自动决定变体变浅还是变深,放心用图形化模式调整即可。
小结
Amethyst Mod Manager 的主题系统把“外观”抽象成了一份与工具无关的调色板字典:内置 13 款.py主题开箱即用 + 1 套图形化 JSON 自定义机制,靠启动时自动发现和容错加载保证稳定。无论你是只想换个皮肤的玩家,还是想动手开发新主题的开发者,都能在 src/themes/ 与主题编辑器里找到清晰、低门槛的入口。
【免费下载链接】Amethyst-Mod-Manager
A Linux native mod manager for a variety of games
相关推荐
lnav 主题系统完全指南:内置主题切换与自定义 UI 主题定义
lnav 主题系统完全指南:内置主题切换与自定义 UI 主题定义 lnav 是一个日志文件导航器,从 v0.9.0 起,它的用户界面支持通过 主题(Theme)
开发工具日志分析CLID2Admin主题定制完整指南:7款内置主题切换与自定义主题开发教程
D2Admin主题定制完整指南:7款内置主题切换与自定义主题开发教程 D2Admin 是一款基于 Vue 2 + Element UI 的优雅后台管理系统(An
前端企业应用C4-PlantUML 主题系统完全指南:内置样式、`!NEW_C4_STYLE` 现代化外观、自定义主题与多语言图例
C4 PlantUML 主题系统完全指南:内置样式、 !NEW_C4_STYLE 现代化外观、自定义主题与多语言图例 C4 PlantUML 在 README.
开发工具文档
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考