diff --git a/copyparty/__main__.py b/copyparty/__main__.py index 1aa0304d..fcbe64f6 100644 --- a/copyparty/__main__.py +++ b/copyparty/__main__.py @@ -263,6 +263,9 @@ def run_argparse(argv, formatter): ap.add_argument("--urlform", metavar="MODE", type=str, default="print,get", help="how to handle url-forms") ap.add_argument("--salt", type=str, default="hunter2", help="up2k file-hash salt") + ap2 = ap.add_argument_group('appearance options') + ap2.add_argument("--css-browser", metavar="L", help="URL to additional CSS to include") + ap2 = ap.add_argument_group('admin panel options') ap2.add_argument("--no-rescan", action="store_true", help="disable ?scan (volume reindexing)") ap2.add_argument("--no-stack", action="store_true", help="disable ?stack (list all stacks)") @@ -274,10 +277,10 @@ def run_argparse(argv, formatter): ap2.add_argument("--th-no-crop", action="store_true", help="dynamic height; show full image") ap2.add_argument("--th-no-jpg", action="store_true", help="disable jpg output") ap2.add_argument("--th-no-webp", action="store_true", help="disable webp output") + ap2.add_argument("--th-ff-jpg", action="store_true", help="force jpg for video thumbs") ap2.add_argument("--th-poke", metavar="SEC", type=int, default=300, help="activity labeling cooldown") ap2.add_argument("--th-clean", metavar="SEC", type=int, default=43200, help="cleanup interval") ap2.add_argument("--th-maxage", metavar="SEC", type=int, default=604800, help="max folder age") - ap2.add_argument("--th-ff-jpg", action="store_true", help="force jpg for video thumbs") ap2 = ap.add_argument_group('database options') ap2.add_argument("-e2d", action="store_true", help="enable up2k database") diff --git a/copyparty/httpcli.py b/copyparty/httpcli.py index 26f5648d..2a838b7b 100644 --- a/copyparty/httpcli.py +++ b/copyparty/httpcli.py @@ -1808,9 +1808,13 @@ class HttpCli(object): j2a["files"] = dirs + files j2a["logues"] = logues j2a["taglist"] = taglist + if "mte" in vn.flags: j2a["tag_order"] = json.dumps(vn.flags["mte"].split(",")) + if self.args.css_browser: + j2a["css"] = self.args.css_browser + html = self.j2(tpl, **j2a) self.reply(html.encode("utf-8", "replace"), headers=NO_STORE) return True diff --git a/copyparty/web/browser.css b/copyparty/web/browser.css index 21fee194..11cfeccb 100644 --- a/copyparty/web/browser.css +++ b/copyparty/web/browser.css @@ -644,7 +644,6 @@ input[type="checkbox"]:checked+label { } #treeul a+a { width: calc(100% - 2em); - background: #333; line-height: 1em; } #treeul a+a:hover { diff --git a/copyparty/web/browser.html b/copyparty/web/browser.html index decd96a0..5e5f23ba 100644 --- a/copyparty/web/browser.html +++ b/copyparty/web/browser.html @@ -8,6 +8,9 @@ + {%- if css %} + + {%- endif %} diff --git a/docs/browser.css b/docs/browser.css new file mode 100644 index 00000000..d0c4e36d --- /dev/null +++ b/docs/browser.css @@ -0,0 +1,29 @@ +html { + background: url('/wp/wallhaven-mdjrqy.jpg') center / cover no-repeat fixed; +} +#files th { + background: rgba(32, 32, 32, 0.9) !important; +} +#ops, +#treeul, +#files td { + background: rgba(32, 32, 32, 0.3) !important; +} + + +html.light { + background: url('/wp/wallhaven-dpxl6l.png') center / cover no-repeat fixed; +} +html.light #files th { + background: rgba(255, 255, 255, 0.9) !important; +} +html.light #ops, +html.light #treeul, +html.light #files td { + background: rgba(248, 248, 248, 0.8) !important; +} + + +#files * { + background: transparent !important; +}