copyparty 主题定制从零到一:用 3 条命令改掉默认界面
【免费下载链接】copypartyPortable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file项目地址: https://gitcode.com/GitHub_Trending/co/copyparty
你每天盯着的文件服务器界面,还是那副出厂模样?copyparty 是把断点续传、WebDAV、SFTP、媒体索引塞进单文件的便携文件服务器,而它的皮肤系统同样好上手。下面带你把界面换一张脸。
读完你将做到:
- 切换 10 个内置主题
- 看懂 CSS 变量机制
- 写出自定义配色主题
- 部署团队统一风格
- 快速定位不生效的坑
先弄懂机制
copyparty 的界面颜色全部来自一组 CSS 变量(样式表顶部的命名参数,可在任意层级覆盖)。每个内置主题本质上是<html>元素上的一个两字母类名(如az、ey),类里只重写那组变量的取值。--theme参数决定服务器下发的默认主题,而页面设置面板里的"theme"下拉框选择会存进浏览器 localStorage,优先级更高。想追加自己的样式文件,用--css-browser把它注入文件浏览器页面。自定义主题的常用做法,是在某个内置主题编号上做覆盖,而不是新建编号。核心文件:copyparty/web/ui.css(变量定义)、copyparty/web/browser.css(各主题覆盖)、contrib/themes/(示例主题)。
最快跑通
- 安装并启动:
pip install copyparty copyparty- 终端会打印一行访问地址,按提示在浏览器打开,看到文件列表即成功。
- 换个默认主题试试:
copyparty --theme=9 # 默认主题改为 9 号(0-9 共 10 个内置主题)- 预期效果:页面变成浅灰底的 "phi95" 风格;打开页面设置面板,"theme" 下拉框可实时切换主题,选择被记住,无需重启。
拆一个典型示例
仓库自带一个完整定制样例:蓝屏主题 contrib/themes/bsod.css。它没有画任何新元素,只在html.ey(对应 9 号主题)下重写一组颜色变量:
html.ey { --bg: #2067b2; /* 底色换成蓝屏蓝 */ --fg: #fff; /* 正文用白字 */ --w2: #3d7bbc; /* 面板与按钮的次级蓝 */ --w3: #5fcbec; /* 高亮色 */ --btn-bg: var(--w2); /* 按钮跟随次级蓝 */ --f-sh1: 0.1; /* 弱化阴影,界面更平 */ }这段在改什么:一个选择器把 9 号主题的所有"颜色"换掉,布局代码一行没碰。为什么这么写:浏览器渲染只看变量取值,覆盖变量等于换肤;作用域锁在html.ey,其他 9 个主题不受影响。
再补一行背景图,蓝屏味就出来了:
html.ey { background: url('bsod.png') top 5em right 4.5em no-repeat fixed var(--bg); }文件头部注释里就写了启动命令,直接照抄:
copyparty --themes=10 --theme=9 --css-browser=/.themes/bsod.css组合进阶
写自己的配色方案
目的:只换品牌色,不碰布局。做法:用 F12 查看<html>的类名(默认主题是az),在 webroot 下写:
html.az { --fg: #e8e8e8; /* 正文更柔和 */ --bg-u2: #141414; /* 面板更深 */ --bg-u5: #2c2c2c; }启动时加上--css-browser=/.themes/my.css。效果:界面整体压暗,按钮、悬停、选中态自动跟随变量变化。
给文件卡片加图标
目的:视频、音频一眼可辨。做法:仓库现成了图标插件 contrib/plugins/browser-icons.css,复制进.themes后追加参数:
copyparty --css-browser=/.themes/browser-icons.css效果:视频文件卡片上出现播放符号,音频是音符,纯 CSS 伪元素实现,不引入任何 JavaScript。
用 URL 锁定主题
目的:任何人打开同一地址都是同一套样式。做法:访问地址后拼?theme=参数,例如:
http://127.0.0.1:8000/?theme=5页面脚本会读取该参数并强制切换主题,效果:即使浏览器本地存过别的选择,URL 参数照样生效,适合分享演示链接。
落地与管理
推荐把主题文件集中放在 webroot 下的隐藏目录:
webroot/ # 你启动 copyparty 的目录 └── .themes/ ├── bsod.css ├── bsod.png ├── browser-icons.css └── my.css # 你自己的主题常用参数对照:
| 参数 | 作用 | 示例 |
|---|---|---|
--theme | 服务器默认主题编号,0-9 | --theme=9 |
--themes | 启用的主题数量,默认 10 | --themes=10 |
--css-browser | 注入文件浏览器页面的额外 CSS | --css-browser=/.themes/my.css |
调试技巧:.themes在 webroot 内,CSS 按静态文件直接读取,改完按 F5 刷新即可看到,不必重启服务。选择器写不写对,用 F12 检查<html>元素上的类名即可验证。
避坑与实践
症状:--css-browser传了,样式却没变化。原因:路径在 webroot 之外,服务器只能看到启动目录里的文件。解法:把文件放进 webroot 下的.themes,用/.themes/xxx.css引用。
症状:变量写了,只有一部分区域变色。原因:变量名拼错,比如写成--background而不是--bg。解法:对照 copyparty/web/ui.css 顶部的变量清单核对。
症状:自己浏览器正常,同事看到的还是默认样式。原因:主题选择存在各自浏览器的 localStorage 里。解法:URL 里带?theme=N强制指定,或统一--theme默认值。
症状:CSS 明明改了,页面却像没变。原因:浏览器缓存了旧样式。解法:Ctrl+Shift+R 强制刷新。
两个现成场景:
团队统一风格:把主背景、文字、强调色收敛进一个team.css,部署到各台机器的.themes,启动参数统一加--css-browser=/.themes/team.css,再配?theme=防止被个人选择覆盖。新成员接入只需一条启动命令。
高对比度场景:内置 8 号主题就是高对比风格(hi-con),先直接用:
copyparty --theme=8想更强时叠加一层自定义(8 号对应类名ez):
html.ez { --fg: #fff; --bg-u2: #000; }写在最后
copyparty 主题定制说到底就三步:认变量、找类名、写覆盖。从换配色到调整布局,任何说得出口的界面改动基本都能落进一个 CSS 文件。后续你可以关注官方主题目录的扩展,说不定会出现更省事的可视化管理。写得意犹未尽的话,把主题丢进.themes参考 CONTRIBUTING.md 提交给社区吧。
【免费下载链接】copypartyPortable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file项目地址: https://gitcode.com/GitHub_Trending/co/copyparty
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考