diff -r e83fbd17d63a surf.c --- a/surf.c Tue Jun 08 09:06:15 2010 +0200 +++ b/surf.c Thu Jul 08 13:25:22 2010 +0100 @@ -23,7 +23,7 @@ #define LENGTH(x) (sizeof x / sizeof x[0]) #define CLEANMASK(mask) (mask & ~(GDK_MOD2_MASK)) -enum { AtomFind, AtomGo, AtomUri, AtomLast }; +enum { AtomFind, AtomGo, AtomUri, AtomStyle, AtomLast }; typedef union Arg Arg; union Arg { @@ -99,6 +99,7 @@ static void scroll(Client *c, const Arg *arg); static void setatom(Client *c, int a, const char *v); static void setcookie(SoupCookie *c); +static void setstyle(Client *c, const char *file); static void setup(void); static void sigchld(int unused); static void source(Client *c, const Arg *arg); @@ -593,6 +594,11 @@ loaduri(c, &arg); return GDK_FILTER_REMOVE; } + else if(ev->atom == atoms[AtomStyle]) { + arg.v = getatom(c, AtomStyle); + setstyle(c, (const char *)arg.v); + return GDK_FILTER_REMOVE; + } } } return GDK_FILTER_CONTINUE; @@ -667,6 +673,17 @@ } void +setstyle(Client *c, const char *file) { + WebKitWebSettings *settings; + char *uri; + + uri = g_strconcat("file://", buildpath(file), NULL); + settings = webkit_web_view_get_settings(c->view); + g_object_set(G_OBJECT(settings), "user-stylesheet-uri", uri, NULL); + g_free(uri); +} + +void setup(void) { char *proxy; char *new_proxy; @@ -686,6 +703,7 @@ atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False); atoms[AtomGo] = XInternAtom(dpy, "_SURF_GO", False); atoms[AtomUri] = XInternAtom(dpy, "_SURF_URI", False); + atoms[AtomStyle] = XInternAtom(dpy, "_SURF_STYLE", False); /* dirs and files */ cookiefile = buildpath(cookiefile);