首页 / 资讯中心 / 文章详情

Geckium 是如何在 Firefox 上复刻老 Chrome 的?CSS+JS 换肤核心实现原理详解

Geckium 是如何在 Firefox 上复刻老 Chrome 的?CSS+JS 换肤核心实现原理详解 ★ FEATURED ARTICLE
【免费下载链接】GeckiumChrome 1 - 58 theme for Firefox 115项目地址https://gitcode.com/gh_mirrors/ge/Geckium点击查看免费下载Geckium 是一款专为 Firefox 115 打造的换肤改造方案它通过 CSS 样式注入与 JS 动态修改 DOM 的组合方式在 Firefox 中完整复刻了 Chrome 1 到 58 共 12 个历史时代的外观甚至把 2008 年的 Chrome 1 界面都还原了出来。本文带你拆解它的核心实现原理样式如何注入、时代如何切换、页面如何被替换。![Geckium 主题界面横幅展示 Firefox 上复刻老 Chrome 外观](https://raw.gitcode.com/gh_mirrors/ge/Geckium/raw/3f1630560d49a3bb329ab9830560fab65ba38dce/Profile Folder/chrome/windows/gsettings/imgs/banner.jpg?utm_sourcegitcode_repo_files)一、它是什么一封写给 Chromium 历史的情书Geckium 支持 Chrome 12008、3、4、5、6、11、17、21、25、37、47、58 共 12 个时代覆盖 Windows、macOS、Linux 三大平台。它本质上是一组放进 Firefox 用户配置目录的CSS JS 文件不改动 Firefox 一行源码却能彻底改变浏览器外观。它的版本信息记录在 version.json 中当前为 0.20.13.1。二、启动链四个文件如何让改造自动生效Geckium 能随 Firefox 自动启动靠的是一条精心设计的自举链defaults/pref/config-prefs.js放入 Firefox 安装目录——通过 3 行 pref 配置告诉 Firefox启动时去执行 config.jsconfig-prefs.js 设置general.config.filename指向config.js并关闭沙箱限制config.js放入 Firefox 安装目录——启动时读取用户目录中的chrome.manifest并注册然后导入引导模块config.jschrome.manifest——声明资源路径映射是 Firefox 的目录登记表chrome.manifest 把chrome://userscripts映射到JS/目录、chrome://pages映射到pages/目录等boot.sys.mjs——真正的引导器基于 userChromeJS 机制boot.sys.mjs 扫描JS/目录下所有*.uc.js与*.sys.mjs脚本解析每个文件头的include、loadOrder等元信息决定哪些脚本注入哪个窗口、以什么顺序执行 关键点*.sys.mjs后缀的脚本以后台模块方式运行全局生效一次*.uc.js则按include注入到指定文档中。这套机制就是 Firefox 用户脚本生态的标准做法。三、CSS 侧把样式表塞进浏览器外壳CSS 要生效得先被浏览器加载。Geckium 用了两种层级① Agent Sheet代理样式表——最高优先级全局生效userChrome_ag_css.sys.mjs 调用 Firefox 的样式表服务把主样式表注册为 Agent Sheet可覆盖几乎所有 UI 元素。② Author Sheet作者样式表——预加载 按需注入userChrome_au_css.uc.js 先preloadSheet预加载样式再用windowUtils.addSheet注入当前窗口并通过UC_API.Windows.onCreated钩子确保每个新建窗口都能拿到样式。主样式表 geckiumChrome.scss 只有一行指向分时代组织的样式目录import styles/partials/chrome/eras;而 _eras.scss 就是时代切换的 CSS 核心——它用属性选择器给每个时代圈定样式作用域/* Chrome 3 */ :root[geckium-three] { import chrome-3/final; } /* Chrome 7 - 11 */ :root[geckium-eleven] { import chrome-11/final; }每个时代是一个独立子目录如 chrome-1/ 下按 UI 部件拆分为_tabs.scss、_titlebar.scss、_urlbar-searchbar.scss等 20 余个 partial维护起来非常清晰。四、JS 侧一个属性如何切换整个时代 这就是 Geckium 最优雅的设计JS 不改 CSSCSS 也不改 JS两者通过 HTML 属性握手。Geckium_styles.uc.js 中定义了完整的时代表eras每个时代记录了基础版本、年份、英文编号one、twentyone…以及各平台标题栏规范。切换逻辑在 applyEra() 中从about:config偏好Geckium.appearance.choice读取用户选择的时代给html根元素逐个增删geckium-one、geckium-three… 属性CSS 里的:root[geckium-eleven]选择器随之命中整套 Chrome 11 样式瞬间生效更妙的是脚本还注册了Services.prefs观察者L341-L351——你在 Geckium Settings 里点击切换时代偏好值一变监听器立即触发applyEra()无需重启所见即所得。五、JS 侧动态改 DOM 与替换内置页面 ️光有 CSS 只是涂妆真正的复刻还需要 JS 动手改结构① 替换内置页面——Geckium_aboutPageRegisterer.uc.js 通过nsIAboutModule机制把about:newtab、about:home、about:flags甚至about:dino恐龙页面统统指向 Geckium 自己的页面。于是 pages/newTabHome/ 里按时代存放的 12 套新标签页含 eras.scss 的样式切换就接管了浏览器。![Geckium 复刻的 Chrome 37 新标签页界面Google 搜索框与最常用站点网格](https://raw.gitcode.com/gh_mirrors/ge/Geckium/raw/3f1630560d49a3bb329ab9830560fab65ba38dce/Profile Folder/chrome/windows/gsettings/imgs/ntp/chrome-37.png?utm_sourcegitcode_repo_files)② 给标签页加料——Geckium_tabs.uc.js 用document.createElement动态创建静音按钮、分享图标等老 Chrome 独有的标签控件再插回 DOM。③ 系统主题联动——Geckium_themes.uc.js 根据当前时代和平台为根元素打上gksystheme属性如 win7/win8/macos让标题栏随时代一起穿越。![Geckium 复刻的 Chrome 1 macOS 版浏览器界面最古老的版本外观](https://raw.gitcode.com/gh_mirrors/ge/Geckium/raw/3f1630560d49a3bb329ab9830560fab65ba38dce/Profile Folder/chrome/windows/gsettings/imgs/main/chrome-1-mac.png?utm_sourcegitcode_repo_files)六、Geckium Zoo所有时代一次看全 ️想同时对比 12 个时代Geckium 内置了一个about:gmzoo展示页框架代码位于 frameworks/GeckiumMaterial/zoo/index.xhtml由 chrome.manifest 中chrome://gm的映射支撑。它的横幅图就来自仓库资源![Geckium Zoo 展示页横幅蓝色几何风格的 Firefox Chrome 主题视觉](https://raw.gitcode.com/gh_mirrors/ge/Geckium/raw/3f1630560d49a3bb329ab9830560fab65ba38dce/Profile Folder/chrome/frameworks/GeckiumMaterial/zoo/banner.webp?utm_sourcegitcode_repo_files)七、总结三层架构零侵入换肤层级职责代表文件引导层让脚本随 Firefox 启动config.js、boot.sys.mjsCSS 层按时代组织的样式属性选择器圈定作用域_eras.scss、chrome-1/JS 层读写偏好、改 DOM、替换页面、监听实时切换Geckium_styles.uc.js、Geckium_tabs.uc.jsGeckium 的核心思想一句话概括CSS 负责画JS 负责选属性选择器负责接线。这套 CSSJS 换肤方案对 Firefox 零侵入、可卸载、可实时切换堪称 Firefox 用户脚本生态中以最小代码量实现最大视觉改动的典范。⚠️ 提醒JS 改造拥有对浏览器的完全控制权请只从可信来源获取此类修改。赞分享【免费下载链接】GeckiumChrome 1 - 58 theme for Firefox 115项目地址https://gitcode.com/gh_mirrors/ge/Geckium点击查看免费下载相关推荐Silverfox 老用户迁移指南Geckium 一键切换 Firefox 复古 Chrome 主题Silverfox 老用户迁移指南Geckium 一键切换 Firefox 复古 Chrome 主题 Geckium 是一款面向 Firefox 115 的深入解析Linaria如何实现零运行时CSS转换的终极指南 深入解析Linaria如何实现零运行时CSS转换的终极指南 Linaria 是一款革命性的CSS in JS库它通过创新的构建时转换技术实现了真正的前端构建工具UI组件WiVRn测试策略确保Linux OpenXR流媒体应用质量的自动化测试方法WiVRn测试策略确保Linux OpenXR流媒体应用质量的自动化测试方法 WiVRn作为一款Linux OpenXR流媒体应用其测试策略对于确保代码质量上一篇ComfyUI依赖管理终极指南告别版本冲突的完整解决方案下一篇社交媒体数据采集与用户行为分析匿名用户数据处理技术深度解析创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站