aboutsummaryrefslogtreecommitdiff
diff options
from:
to:
context:
space:
mode:
authorGravatar Saya Andy <saya.andy@posteo.com> 2026-08-01 17:33:19 +0700
committerGravatar Saya Andy <saya.andy@posteo.com> 2026-08-01 17:50:26 +0700
commit3beb4785562b158fc4c4e67185ac488d5bfa5c60 (patch)
treea32beedc071849a1ca7a9687a941405ee5a31c3b
parent8a90bca75c8d8755016b46747ca943bb7b37140c (diff)
downloadcgitext-1.3.1+12.tar.gz
cgitext-1.3.1+12.zip
theming: include solarized.css theme addonv1.3.1+12
The solarized.css includes adoption of Solarized Light/Dark themes for cgit, switching between light and dark variant depending on preferred color scheme. It is not used by default, but can be easily switched on with css directive.
-rw-r--r--Makefile2
-rw-r--r--README.md8
-rw-r--r--cgitrc.5.txt2
-rw-r--r--solarized.css140
4 files changed, 150 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index c75f67b..b87116a 100644
--- a/Makefile
+++ b/Makefile
@@ -87,6 +87,7 @@ install: all
$(INSTALL) -m 0755 cgit $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
$(INSTALL) -m 0755 -d $(DESTDIR)$(CGIT_DATA_PATH)
$(INSTALL) -m 0644 cgit.css $(DESTDIR)$(CGIT_DATA_PATH)/cgit.css
+ $(INSTALL) -m 0644 solarized.css $(DESTDIR)$(CGIT_DATA_PATH)/solarized.css
$(INSTALL) -m 0644 cgit.js $(DESTDIR)$(CGIT_DATA_PATH)/cgit.js
$(INSTALL) -m 0644 cgit.png $(DESTDIR)$(CGIT_DATA_PATH)/cgit.png
$(INSTALL) -m 0644 cgit.svg $(DESTDIR)$(CGIT_DATA_PATH)/cgit.svg
@@ -118,6 +119,7 @@ endef
uninstall:
rm -f $(DESTDIR)$(CGIT_SCRIPT_PATH)/$(CGIT_SCRIPT_NAME)
rm -f $(DESTDIR)$(CGIT_DATA_PATH)/cgit.css
+ rm -f $(DESTDIR)$(CGIT_DATA_PATH)/solarized.css
rm -f $(DESTDIR)$(CGIT_DATA_PATH)/cgit.js
rm -f $(DESTDIR)$(CGIT_DATA_PATH)/cgit.png
rm -f $(DESTDIR)$(CGIT_DATA_PATH)/cgit.svg
diff --git a/README.md b/README.md
index 2f7727e..68db236 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## cgitext - CGI for Git extension by Saya Andy
+## cgitext – CGI for Git extension by Saya Andy
This is a custom expansion to cgit. Its most prominent changes by now are:
@@ -8,9 +8,13 @@ This is a custom expansion to cgit. Its most prominent changes by now are:
* Allow to use multiple favicons and of MIME type different from x-icon (f.ex. svg/png/webp).
+* Use vector-based format for favicon and cgit logo and make it default.
+
+* Include optional solarized.css addon theme.
+
The original cgit project is hosted at [git.zx2c4.com](https://git.zx2c4.com/cgit/about/)
-## cgit - CGI for Git
+## cgit – CGI for Git
This is an attempt to create a fast web interface for the Git SCM, using a built-in cache to decrease server I/O pressure.
diff --git a/cgitrc.5.txt b/cgitrc.5.txt
index 6ddb977..527233d 100644
--- a/cgitrc.5.txt
+++ b/cgitrc.5.txt
@@ -921,8 +921,10 @@ cache-size=1000
# Specify some default clone urls using macro expansion
clone-url=git://foo.org/$CGIT_REPO_URL git@foo.org:$CGIT_REPO_URL
+
# Specify the css url
css=/css/cgit.css
+css=/css/solarized.css
# Add a "ci" tab pointing at a Jenkins multibranch pipeline
diff --git a/solarized.css b/solarized.css
new file mode 100644
index 0000000..2e6e3d4
--- /dev/null
+++ b/solarized.css
@@ -0,0 +1,140 @@
+/*
+ * Solarized theme (Ethan Schoonover) with automatic light/dark selection
+ * based on the prefers-color-scheme media query.
+ *
+ * Must be listed after cgit.css, e.g.
+ *
+ * css=/cgit.css
+ * css=/solarized.css
+ */
+
+:root {
+ --sol-base03: #002b36;
+ --sol-base02: #073642;
+ --sol-base01: #586e75;
+ --sol-base00: #657b83;
+ --sol-base0: #839496;
+ --sol-base1: #93a1a1;
+ --sol-base2: #eee8d5;
+ --sol-base3: #fdf6e3;
+
+ --sol-yellow: #b58900;
+ --sol-orange: #cb4b16;
+ --sol-red: #dc322f;
+ --sol-magenta: #d33682;
+ --sol-violet: #6c71c4;
+ --sol-blue: #268bd2;
+ --sol-cyan: #2aa198;
+ --sol-green: #859900;
+
+ --sol-canvas: var(--sol-base3);
+ --sol-panel: var(--sol-base2);
+ --sol-body: var(--sol-base00);
+ --sol-emph: var(--sol-base01);
+ --sol-muted: var(--sol-base0);
+ --sol-secondary: var(--sol-base1);
+ --sol-shade: var(--sol-base03);
+ --sol-page: var(--sol-panel);
+
+ --sol-tint-soft: 18%;
+ --sol-tint: 25%;
+ --sol-tint-strong: 45%;
+
+ color-scheme: light dark;
+}
+
+@media (prefers-color-scheme: dark) {
+ :root {
+ --sol-canvas: var(--sol-base03);
+ --sol-panel: var(--sol-base02);
+ --sol-body: var(--sol-base0);
+ --sol-emph: var(--sol-base1);
+ --sol-muted: var(--sol-base00);
+ --sol-secondary: var(--sol-base01);
+ --sol-shade: var(--sol-base3);
+
+ --sol-tint-soft: 30%;
+ --sol-tint: 35%;
+ --sol-tint-strong: 55%;
+ }
+}
+
+body:has(> div#cgit) {
+ margin: 0;
+ background-color: var(--sol-page);
+}
+
+div#cgit {
+ --bg: var(--sol-canvas);
+ --bg-zebra: color-mix(in srgb, var(--sol-panel) 40%, var(--sol-canvas));
+ --bg-hl: var(--sol-panel);
+ --bg-hl2: color-mix(in srgb, var(--sol-panel) 85%, var(--sol-shade));
+ --fg: var(--sol-body);
+ --fg-strong: var(--sol-emph);
+ --fg-mid: var(--sol-body);
+ --fg-mute: var(--sol-muted);
+ --fg-dim: var(--sol-secondary);
+ --fg-faint: color-mix(in srgb, var(--sol-secondary) 65%, var(--sol-canvas));
+ --fg-faintest: color-mix(in srgb, var(--sol-secondary) 45%, var(--sol-canvas));
+ --fg-on-tint: var(--sol-emph);
+ --fg-linenum: var(--sol-secondary);
+ --border: var(--sol-panel);
+ --border-mid: var(--sol-secondary);
+ --border-dark: var(--sol-muted);
+ --border-strong: var(--sol-emph);
+
+ --red: var(--sol-red);
+ --red-mid: color-mix(in srgb, var(--sol-red) 75%, var(--sol-shade));
+ --red-dark: color-mix(in srgb, var(--sol-red) 55%, var(--sol-shade));
+ --green: var(--sol-green);
+ --green-mid: color-mix(in srgb, var(--sol-green) 70%, var(--sol-shade));
+ --green-dark: color-mix(in srgb, var(--sol-green) 50%, var(--sol-shade));
+ --blue: var(--sol-blue);
+ --blue-dark: color-mix(in srgb, var(--sol-blue) 70%, var(--sol-shade));
+
+ --graph-col1: var(--sol-red);
+ --graph-col2: var(--sol-green);
+ --graph-col3: var(--sol-yellow);
+ --graph-col4: var(--sol-blue);
+ --graph-col5: var(--sol-magenta);
+ --graph-col6: var(--sol-cyan);
+
+ --graph-add-bg: var(--sol-green);
+ --graph-rem-bg: var(--sol-red);
+
+ --notes-bg: color-mix(in srgb, var(--sol-yellow) var(--sol-tint-soft), var(--sol-canvas));
+ --notes-border: var(--sol-yellow);
+ --add-bg: color-mix(in srgb, var(--sol-green) var(--sol-tint), var(--sol-canvas));
+ --add-bg-dark: color-mix(in srgb, var(--sol-green) var(--sol-tint-strong), var(--sol-canvas));
+ --del-bg: color-mix(in srgb, var(--sol-red) var(--sol-tint), var(--sol-canvas));
+ --del-bg-dark: color-mix(in srgb, var(--sol-red) var(--sol-tint-strong), var(--sol-canvas));
+ --changed-bg: color-mix(in srgb, var(--sol-yellow) var(--sol-tint), var(--sol-canvas));
+ --changed-bg-dark: color-mix(in srgb, var(--sol-yellow) var(--sol-tint-strong), var(--sol-canvas));
+ --hunk-bg: color-mix(in srgb, var(--sol-blue) var(--sol-tint), var(--sol-canvas));
+
+ --deco-branch-bg: color-mix(in srgb, var(--sol-green) var(--sol-tint-soft), var(--sol-canvas));
+ --deco-branch-border: var(--sol-green);
+ --deco-tag-bg: color-mix(in srgb, var(--sol-yellow) var(--sol-tint-soft), var(--sol-canvas));
+ --deco-tag-border: var(--sol-yellow);
+ --deco-tag-annotated-bg: color-mix(in srgb, var(--sol-orange) var(--sol-tint-soft), var(--sol-canvas));
+ --deco-tag-annotated-border: var(--sol-yellow);
+ --deco-remote-bg: color-mix(in srgb, var(--sol-violet) var(--sol-tint-soft), var(--sol-canvas));
+ --deco-remote-border: var(--sol-violet);
+ --deco-other-bg: color-mix(in srgb, var(--sol-red) var(--sol-tint-soft), var(--sol-canvas));
+ --deco-other-border: var(--sol-red);
+
+ --syn-keyword: var(--sol-emph);
+ --syn-keyword-alt: var(--sol-blue);
+ --syn-type: var(--blue-dark);
+ --syn-string: var(--sol-red);
+ --syn-string-alt: var(--sol-green);
+ --syn-escape: var(--sol-magenta);
+ --syn-comment: var(--sol-secondary);
+ --syn-number: var(--sol-yellow);
+ --syn-preproc: var(--green-mid);
+ --syn-operator: var(--sol-emph);
+ --syn-interpolation: var(--sol-blue);
+ --syn-linenum: var(--sol-secondary);
+ --syn-error: var(--sol-red);
+ --syn-mark-bg: color-mix(in srgb, var(--sol-yellow) var(--sol-tint), var(--sol-canvas));
+}