]> Skullheadx's Git Forge - surf.git/commitdiff
Add dark mode toggle
authorQuentin Rameau <quinq@fifth.space>
Sun, 10 Apr 2022 14:35:24 +0000 (16:35 +0200)
committerQuentin Rameau <quinq@fifth.space>
Sun, 10 Apr 2022 14:35:24 +0000 (16:35 +0200)
This sets dark gtk theme variant,
which should make webkit2gtk use dark css variant
from websites that provide it.

config.def.h
surf.1
surf.c

index 1355ba3d44d6e2217c31c8353a9b4fef8371add7..93cfeebe034300dfb77a6a6c0a587b6becf58870 100644 (file)
@@ -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 */
diff --git a/surf.1 b/surf.1
index 496afb9188b389cd167760e9cb89d5f5802cfba9..5d69a079fb9966e999fd9c68232afaf9fffc9a0e 100644 (file)
--- 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
diff --git a/surf.c b/surf.c
index 03d824228b1ea01340eaf982cec50155a0b40436..31322494c25d8a1588f1cb8da0526a1e592a9245 100644 (file)
--- 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 ?