Add dark mode toggle - surf - surf browser, a WebKit based browser
 (HTM) git clone git://git.suckless.org/surf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 1f5b8f3bd1f37d4d3dc45d21285f34ef4752dbaa
 (DIR) parent 11dca18a2d148e5a6463aba783567a3815424963
 (HTM) Author: Quentin Rameau <quinq@fifth.space>
       Date:   Sun, 10 Apr 2022 16:35:24 +0200
       
       Add dark mode toggle
       
       This sets dark gtk theme variant,
       which should make webkit2gtk use dark css variant
       from websites that provide it.
       
       Diffstat:
         M config.def.h                        |       2 ++
         M surf.1                              |       3 +++
         M surf.c                              |       6 ++++++
       
       3 files changed, 11 insertions(+), 0 deletions(-)
       ---
 (DIR) diff --git a/config.def.h b/config.def.h
       @@ -20,6 +20,7 @@ static Parameter defconfig[ParameterLast] = {
                [Certificate]         =       { { .i = 0 },     },
                [CaretBrowsing]       =       { { .i = 0 },     },
                [CookiePolicies]      =       { { .v = "@Aa" }, },
       +        [DarkMode]            =       { { .i = 0 },     },
                [DefaultCharset]      =       { { .v = "UTF-8" }, },
                [DiskCache]           =       { { .i = 1 },     },
                [DNSPrefetch]         =       { { .i = 0 },     },
       @@ -179,6 +180,7 @@ static Key keys[] = {
                { MODKEY|GDK_SHIFT_MASK, GDK_KEY_b,      toggle,     { .i = ScrollBars } },
                { MODKEY|GDK_SHIFT_MASK, GDK_KEY_t,      toggle,     { .i = StrictTLS } },
                { MODKEY|GDK_SHIFT_MASK, GDK_KEY_m,      toggle,     { .i = Style } },
       +        { MODKEY|GDK_SHIFT_MASK, GDK_KEY_d,      toggle,     { .i = DarkMode } },
        };
        
        /* button definitions */
 (DIR) diff --git a/surf.1 b/surf.1
       @@ -208,6 +208,9 @@ Toggle scrollbars. This will reload the page.
        .B Ctrl\-Shift\-c
        Toggle caret browsing. This will reload the page.
        .TP
       +.B Ctrl\-Shift\-d
       +Toggle dark mode. This will reload the page.
       +.TP
        .B Ctrl\-Shift\-i
        Toggle auto-loading of images. This will reload the page.
        .TP
 (DIR) diff --git a/surf.c b/surf.c
       @@ -56,6 +56,7 @@ typedef enum {
                CaretBrowsing,
                Certificate,
                CookiePolicies,
       +        DarkMode,
                DiskCache,
                DefaultCharset,
                DNSPrefetch,
       @@ -259,6 +260,7 @@ char *argv0;
        static ParamName loadtransient[] = {
                Certificate,
                CookiePolicies,
       +        DarkMode,
                DiskCache,
                DNSPrefetch,
                FileURLsCrossAccess,
       @@ -772,6 +774,10 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
                            cookiepolicy_get());
                        refresh = 0;
                        break;
       +        case DarkMode:
       +                g_object_set(gtk_settings_get_default(),
       +                             "gtk-application-prefer-dark-theme", a->i, NULL);
       +                break;
                case DiskCache:
                        webkit_web_context_set_cache_model(
                            webkit_web_view_get_context(c->view), a->i ?