surf-2.0-notifications.diff - sites - public wiki contents of suckless.org
 (HTM) git clone git://git.suckless.org/sites
 (DIR) Log
 (DIR) Files
 (DIR) Refs
       ---
       surf-2.0-notifications.diff (3032B)
       ---
            1 diff --git a/config.def.h b/config.def.h
            2 index 6d3135e..2b3a14f 100644
            3 --- a/config.def.h
            4 +++ b/config.def.h
            5 @@ -22,6 +22,7 @@ static Parameter defconfig[ParameterLast] = {
            6          SETB(KioskMode,          0),
            7          SETB(LoadImages,         1),
            8          SETB(MediaManualPlay,    0),
            9 +        SETB(Notifications,      0),
           10          SETB(Plugins,            1),
           11          SETV(PreferredLanguages, ((char *[]){ NULL })),
           12          SETB(RunInFullscreen,    0),
           13 @@ -148,6 +149,7 @@ static Key keys[] = {
           14          { MODKEY|GDK_SHIFT_MASK, GDK_KEY_g,      toggle,     { .i = Geolocation } },
           15          { MODKEY|GDK_SHIFT_MASK, GDK_KEY_s,      toggle,     { .i = JavaScript } },
           16          { MODKEY|GDK_SHIFT_MASK, GDK_KEY_i,      toggle,     { .i = LoadImages } },
           17 +        { MODKEY|GDK_SHIFT_MASK, GDK_KEY_l,      toggle,     { .i = Notifications } },
           18          { MODKEY|GDK_SHIFT_MASK, GDK_KEY_v,      toggle,     { .i = Plugins } },
           19          { MODKEY|GDK_SHIFT_MASK, GDK_KEY_b,      toggle,     { .i = ScrollBars } },
           20          { MODKEY|GDK_SHIFT_MASK, GDK_KEY_m,      toggle,     { .i = Style } },
           21 diff --git a/surf.c b/surf.c
           22 index 93a1629..d47dc60 100644
           23 --- a/surf.c
           24 +++ b/surf.c
           25 @@ -72,6 +72,7 @@ typedef enum {
           26          KioskMode,
           27          LoadImages,
           28          MediaManualPlay,
           29 +        Notifications,
           30          Plugins,
           31          PreferredLanguages,
           32          RunInFullscreen,
           33 @@ -568,7 +569,8 @@ gettogglestats(Client *c)
           34          togglestats[6] = curconfig[Plugins].val.b ?         'V' : 'v';
           35          togglestats[7] = curconfig[Style].val.b ?           'M' : 'm';
           36          togglestats[8] = curconfig[FrameFlattening].val.b ? 'F' : 'f';
           37 -        togglestats[9] = '\0';
           38 +        togglestats[9] = curconfig[Notifications].val.b ?   'L' : 'l';
           39 +        togglestats[10] = '\0';
           40  }
           41  
           42  void
           43 @@ -681,6 +683,9 @@ setparameter(Client *c, int refresh, ParamName p, const Arg *a)
           44          case MediaManualPlay:
           45                  webkit_settings_set_media_playback_requires_user_gesture(s, a->b);
           46                  break;
           47 +        case Notifications:
           48 +                refresh = 0;
           49 +                return;
           50          case Plugins:
           51                  webkit_settings_set_enable_plugins(s, a->b);
           52                  break;
           53 @@ -834,6 +839,7 @@ newwindow(Client *c, const Arg *a, int noembed)
           54          cmd[i++] = curconfig[Geolocation].val.b ?     "-G" : "-g" ;
           55          cmd[i++] = curconfig[LoadImages].val.b ?      "-I" : "-i" ;
           56          cmd[i++] = curconfig[KioskMode].val.b ?       "-K" : "-k" ;
           57 +        cmd[i++] = curconfig[Notifications].val.b ?   "-L" : "-l" ;
           58          cmd[i++] = curconfig[Style].val.b ?           "-M" : "-m" ;
           59          cmd[i++] = curconfig[Inspector].val.b ?       "-N" : "-n" ;
           60          cmd[i++] = curconfig[Plugins].val.b ?         "-P" : "-p" ;
           61 @@ -1301,6 +1307,14 @@ permissionrequested(WebKitWebView *v, WebKitPermissionRequest *r, Client *c)
           62                  return TRUE;
           63          }
           64  
           65 +        if (WEBKIT_IS_NOTIFICATION_PERMISSION_REQUEST(r)) {
           66 +                if (curconfig[Notifications].val.b)
           67 +                        webkit_permission_request_allow(r);
           68 +                else
           69 +                        webkit_permission_request_deny(r);
           70 +                return TRUE;
           71 +        }
           72 +
           73          return FALSE;
           74  }
           75  
           76 @@ -1703,6 +1717,12 @@ main(int argc, char *argv[])
           77          case 'K':
           78                  defconfig CSETB(KioskMode, 1);
           79                  break;
           80 +        case 'l':
           81 +                defconfig CSETB(Notifications, 0);
           82 +                break;
           83 +        case 'L':
           84 +                defconfig CSETB(Notifications, 1);
           85 +                break;
           86          case 'm':
           87                  defconfig CSETB(Style, 0);
           88                  break;