Hi,

Similarly to what has been done for the OpenBSD project pages [0], this
diff adds a "dark mode" to directory listings and error pages in httpd,
using OpenBSD's dark color scheme.

The goal is to avoid switching from a "dark mode" html page to a pure
white {directory listing,error} one, and this on the same site,
because it's very upsetting.

This is how it looks like [1] in Firefox (Iridium is in light mode).

I already had some comments and feedback from florian@ (error pages
need love too), clematis (correct background color), danj@
(improve code readability) amongst others, but more is welcome :)

Charlène.


[0] https://marc.info/?l=openbsd-cvs&m=155942699008642&w=2
[1] http://0x0.st/i_yc.png


Index: usr.sbin/httpd/server_file.c
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/server_file.c,v
retrieving revision 1.66
diff -u -p -r1.66 server_file.c
--- usr.sbin/httpd/server_file.c        15 Jun 2018 12:36:05 -0000      1.66
+++ usr.sbin/httpd/server_file.c        10 May 2020 22:29:59 -0000
@@ -477,7 +477,11 @@ server_file_index(struct httpd *env, str
 
        /* A CSS stylesheet allows minimal customization by the user */
        style = "body { background-color: white; color: black; font-family: "
-           "sans-serif; }\nhr { border: 0; border-bottom: 1px dashed; }\n";
+           "sans-serif; }\nhr { border: 0; border-bottom: 1px dashed; }\n"
+           "@media (prefers-color-scheme: dark) {\n"
+           "body { background-color: #1e1f21; color: #EEEFF1; }\n"
+           "a { color: #BAD7FF; }\n}";
+
        /* Generate simple HTML index document */
        if (evbuffer_add_printf(evb,
            "<!DOCTYPE html>\n"
Index: usr.sbin/httpd/server_http.c
===================================================================
RCS file: /cvs/src/usr.sbin/httpd/server_http.c,v
retrieving revision 1.137
diff -u -p -r1.137 server_http.c
--- usr.sbin/httpd/server_http.c        25 Feb 2020 15:18:41 -0000      1.137
+++ usr.sbin/httpd/server_http.c        10 May 2020 22:30:00 -0000
@@ -921,7 +921,10 @@ server_abort_http(struct client *clt, un
        /* A CSS stylesheet allows minimal customization by the user */
        style = "body { background-color: white; color: black; font-family: "
            "'Comic Sans MS', 'Chalkboard SE', 'Comic Neue', sans-serif; }\n"
-           "hr { border: 0; border-bottom: 1px dashed; }\n";
+           "hr { border: 0; border-bottom: 1px dashed; }\n"
+           "@media (prefers-color-scheme: dark) {\n"
+           "body { background-color: #1e1f21; color: #EEEFF1; }\n"
+           "a { color: #BAD7FF; }\n}";
 
        /* Generate simple HTML error document */
        if ((bodylen = asprintf(&body,

Reply via email to