首页/新闻资讯/正文详情

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

发布时间:2026/11/4 1:45:00 来源:云帆数科 栏目:资讯中心
Geckium 是如何在 Firefox 上复刻老 Chrome 的?CSS+JS 换肤核心实现原理详解
【免费下载链接】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),仅供参考

相关推荐

在 VS Code 里跑起 OpenChamber:AI 编程助手从安装、实战到排错的完整指南
在 VS Code 里跑起 OpenChamber:AI 编程助手从安装、实战到排错的完整指南

在 VS Code 里跑起 OpenChamber:AI 编程助手从安装、实战到排错的完整指南 【免费下载链接】openchamber Agentic Development Environment based on OpenCode AI agent 项目地址: https://gitcode.com/gh_mirrors/op/openchamber OpenChamber 的 VS Code 扩展把 OpenCo… · 2026/11/4 1:44:00

终极指南:如何在10分钟内为LTX 2.3安装和配置LTX-LoRAs插件
终极指南:如何在10分钟内为LTX 2.3安装和配置LTX-LoRAs插件

终极指南:如何在10分钟内为LTX 2.3安装和配置LTX-LoRAs插件 【免费下载链接】LTX-LoRAs 项目地址: https://ai.gitcode.com/hf_mirrors/Alissonerdx/LTX-LoRAs LTX-LoRAs是一组专门为LTX 2.3视频生成模型设计的LoRA(低秩适应)插件&am… · 2026/11/4 1:44:00

MacType 完全教程:用这款免费字体渲染工具,彻底解决 Windows 字体发虚
MacType 完全教程:用这款免费字体渲染工具,彻底解决 Windows 字体发虚

MacType 完全教程:用这款免费字体渲染工具,彻底解决 Windows 字体发虚 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype MacType 是一款面向 Windows 的免费开源字体渲染优化工… · 2026/11/4 1:44:00

DHCP详解:动态主机配置协议原理与配置
DHCP详解:动态主机配置协议原理与配置

1. 一个场景:为什么电脑插上网线就能上网新入职一台电脑,插上网线,几分钟内自动拿到 192.168.10.66、网关、DNS,浏览器直接就能开网页——这背后就是 DHCP 在干活。要是靠人手工配,一百台设备就是一个下午的体力活&… · 2026/11/4 2:33:15

显存明明够,为什么生成到一半就断:自包含页面的资源与上下文陷阱
显存明明够,为什么生成到一半就断:自包含页面的资源与上下文陷阱

显存明明够,为什么生成到一半就断:自包含页面的资源与上下文陷阱 【免费下载链接】Qwen3.5-4B-3D-Coder 项目地址: https://ai.gitcode.com/hf_mirrors/ccore/Qwen3.5-4B-3D-Coder 前两天有个朋友在本地跑一个 3D 生成模型,显卡 24G&… · 2026/11/4 2:33:15

《信息论基础》第三章:离散信源及信源熵
《信息论基础》第三章:离散信源及信源熵

本章是《信息论基础》的核心基础章节,完整建立离散信源的数学模型体系。本章以概率空间、随机过程作为理论起点,依次对各类离散信源给出严格定义,系统推导自信息量、信源熵、条件熵、联合熵、平均符号熵与极限熵,研究扩展信源、平… · 2026/11/4 2:33:15

蚂蚁:AI科研团队高效协作与自我进化
蚂蚁:AI科研团队高效协作与自我进化

📖标题:AReaL-RSI: Adaptive Scaling and Coordination of Recursive Self-Improvement 🌐来源:arXiv, 2610.18083v1 🛎️文章简介 🔸研究问题:在递归自我改进(RSI)中&am… · 2026/11/4 2:33:15

C语言——位操作符
C语言——位操作符

一、 位操作符操作符名称形式计算规则&按位与a & b对应二进制位,有 0 就是 0,同时为 1 才是 1|按位或a | b对应二进制位,有 1 就是 1,同时为 0 才是 0^按位异或a ^ b对应二进制位,相同为 0,相异为 … · 2026/11/4 2:33:15

我花了两周,把 PyTorch 从头翻了一遍:这 6 张图,能省你三个月弯路
我花了两周,把 PyTorch 从头翻了一遍:这 6 张图,能省你三个月弯路

文章目录 一、先聊一个所有人都经历过的瞬间 二、先立个坐标系:PyTorch 到底是什么 先感受一下这个体量 三、五块积木:模块地图 四、六条设计哲学:这才是 PyTorch 的"手感"来源 4.1 GPU-Ready:张量天生就是双栖的 4.2 磁带式自动微分:PyTorch 最骄傲的一件事 这… · 2026/11/4 2:32:15

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码