copyparty 换主题实操:3 条命令 + 一份变量表,把轻量文件服务器的界面改成自己的
2026/9/11 11:36:41 网站建设 项目流程

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 默认的文件浏览器,想换个配色,翻遍页面却找不到任何入口——其实它压根没藏起来:copyparty 主题定制靠的就是启动参数加一个 CSS 文件,全程不碰代码。下面从换主题的机制讲起,覆盖内置主题切换、CSS 变量体系、从 0 到 1 造一个蓝屏风格界面,以及图标插件的配合和部署检查清单。

主题机制:根类名 + 变量覆盖,一句话讲清

copyparty 的页面在生成时,会把一个类名写到<html>根元素上,这个类名来自--theme参数或浏览器里保存的上次选择。所有 CSS 文件再拿这个类名当选择器,批量覆盖颜色变量。内置的 10 套主题就是这样来的:不同类名配不同变量值,并不存在单独的"主题包"。

示意一下这条链路:

  • --fg→ 正文文字颜色
  • --bg-u2→ 列表、面板的底色
  • --a→ 链接和高亮色
  • --font-main→ 字体族

界面配色全部由变量驱动,你在某个类名下把这些变量覆盖一遍,copyparty 深色主题还是浅色主题就切换完成了。变量的完整定义见 ui.css。

3 条命令跑通第一个主题

先跑通,再回头解释为什么有效。第一条只换内置主题,编号 0 到 9:

copyparty --theme=4 /path/to/your/files

第二条加载你自己的样式表:把写好的 CSS 放进 webroot 下的.themes文件夹,用--css-browser指向它,文件浏览器页面会连同默认样式一起引用:

copyparty --css-browser=/.themes/bsod.css /path/to/your/files

第三条是最完整的写法:--themes=10告诉设置面板里列多少套主题,--theme=9让浏览器默认落在你的自定义主题上,--css-browser负责把样式真正注入页面:

copyparty --themes=10 --theme=9 --css-browser=/.themes/bsod.css /path/to/your/files

回头看机制:--theme决定根元素拿到哪个类名,--css-browser决定额外加载哪个样式表,两者一个管"选中谁",一个管"长什么样"。

变量字典:定制前只需要认识这 11 个

做 copyparty CSS 定制,核心不是背一百个变量,而是认出该动哪几个。基本集都定义在 ui.css 开头:

变量作用
--font-main/--font-serif/--font-mono正文 / 衬线 / 等宽字体族
--fg正文基础文字色
--fg-max强调文字色,标题和重要内容用它
--fg-weak弱化文字色,次级信息
--bg页面背景主色
--bg-u2/--bg-u5深浅不一的背景层,列表、面板、输入框各取不同层
--a/--a-hil链接色 / 悬停高亮色
--btn-bg/--btn-fg按钮底色与文字色
--txt-sh文本阴影

浅色与深色主题的切换只是换了根类名,变量机制完全一样,不再重复。

从 0 到 1 造一个蓝屏主题

仓库里带了一份现成的 bsod.css 可以参考,但这里按你自己的思路走一遍。

选色。蓝屏风格其实就一个蓝底加白字,需要定三个蓝:底蓝铺满背景,亮一点的蓝做按钮和面板,再亮一档做高亮和滚动条。

写变量覆盖。用html.ey当选择器——这个类名只要和内置的 10 套不撞就行:

html.ey { --fg: #fff; /* 白字 */ --fg-max: #fff; --bg: #2067b2; /* 蓝屏底蓝 */ --bg-u2: var(--bg); --bg-u5: #3d7bbc; /* 面板用亮蓝 */ --a: #fff; /* 链接也保持白 */ }

想要"蓝屏"而不只是"蓝色",再给背景贴一张图,并微调顶部操作栏的阴影和圆角:

html.ey { background: url('bsod.png') top 5em right 4.5em no-repeat fixed var(--bg); } html.ey #ops { text-shadow: 1px 1px 0 rgba(0,0,0,.5); border-radius: .3em; }

放文件、启动验证。CSS 和背景图一起放进 webroot 下的.themes文件夹,然后:

copyparty --themes=10 --theme=9 --css-browser=/.themes/bsod.css /path/to/your/files

浏览器打开看一眼,哪块颜色不对就回到变量表补一条,改完刷新即可。

图标插件:给文件类型加标识的独立一层

仓库的 contrib/plugins/ 里有个 browser-icons.css 插件,按扩展名给文件加图标。比如给视频文件在缩略图中央压一个半透明播放键:

#ggrid>a[href$=".mp4"i]:before { content: '▶'; opacity: .8; background: rgba(0,0,0,.7); }

图标插件管"每类文件长什么样",主题管"整体什么颜色",两者正交,随便叠加互不干扰。

部署检查清单:4 步核对一遍

  1. 目录:webroot 下建.themes/,你的 CSS 和它引用的图片都放里面,CSS 里用相对路径引用同目录图片。
  2. 参数:--themes--theme--css-browser三个一起给,只给--css-browser也能生效,只是设置面板里看不到自定义编号。
  3. 预览:改完 CSS 直接刷新页面即可,服务端每次给样式链接带时间戳参数,不会被浏览器缓存卡住。
  4. 回退:把--theme改回 0,或者在浏览器设置面板里把主题编号选回 0,就恢复默认外观。

两个进阶场景:品牌色与高对比度

公司 NAS 上的界面想带上司认出来的颜色,覆盖一组变量就够:

html.brand { --fg: #333; --bg-u2: #f5f5f5; --bg: #fff; --a: #0066cc; /* 公司主色 */ --btn-bg: #0066cc; }

给看不清默认灰底的用户,高对比度主题的思路是纯黑底、纯白字、亮黄强调:

html.hc { --fg: #fff; --fg-max: #fff; --bg: #000; --bg-u2: #000; --a: #ff0; --btn-fg: #000; }

这类主题落地前建议实测:文字与背景对比度至少 4.5:1,字号别小于 16px,高对比不等于把字调小。

从三条命令到一份变量覆盖,copyparty 自定义界面这件事没有别的机关了——三个启动参数,改完 CSS 刷新就能看到结果。仓库里 contrib/themes/ 放着现成主题可以抄,更多机制细节在 docs/ 里。现在的问题只剩一个:你的界面准备换成什么风格?

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询