Introduction
Introduction Statistics Contact Development Disclaimer Help
tchanging xprops - surf - customized build of surf, the suckless webkit browser
git clone git://src.adamsgaard.dk/surf
Log
Files
Refs
README
LICENSE
---
commit 36129338cfd64fd9aee8862060cddfd186d8b486
parent 0a6eafe0778f96d98502bf5ebc71179ac5f2d241
Author: Enno Boland (tox) <[email protected]>
Date: Mon, 17 May 2010 11:45:28 +0200
changing xprops
Diffstat:
M config.def.h | 12 ++++++------
M surf.c | 55 ++++++++++++++++-------------…
2 files changed, 35 insertions(+), 32 deletions(-)
---
diff --git a/config.def.h b/config.def.h
t@@ -8,10 +8,10 @@ static char *cookiefile = ".surf/cookies.txt";
static time_t sessiontime = 0;
#define NOBACKGROUND 0
-#define SETPROP(p) { .v = (char *[]){ "/bin/sh", "-c", \
- "prop=\"`xprop -id $1 $0 | cut -d '\"' -f 2 | dmenu`\" &&" \
- "xprop -id $1 -f $0 8s -set $0 \"$prop\"", \
- p, winid, NULL } }
+#define SETPROP(p, q) { .v = (char *[]){ "/bin/sh", "-c", \
+ "prop=\"`xprop -id $2 $0 | cut -d '\"' -f 2 | dmenu`\" &&" \
+ "xprop -id $2 -f $1 8s -set $1 \"$prop\"", \
+ p, q, winid, NULL } }
#define MODKEY GDK_CONTROL_MASK
static Key keys[] = {
/* modifier keyval function arg Foc…
t@@ -29,8 +29,8 @@ static Key keys[] = {
{ MODKEY, GDK_k, scroll, { .i = -1 } },
{ 0, GDK_Escape, stop, { 0 } },
{ MODKEY, GDK_o, source, { 0 } },
- { MODKEY, GDK_g, spawn, SETPROP("_SURF_URI") },
- { MODKEY, GDK_slash, spawn, SETPROP("_SURF_FIND") },
+ { MODKEY, GDK_g, spawn, SETPROP("_SURF_URI", "_SUR…
+ { MODKEY, GDK_slash, spawn, SETPROP("_SURF_FIND", "_SU…
{ MODKEY, GDK_n, find, { .b = TRUE } },
{ MODKEY|GDK_SHIFT_MASK,GDK_n, find, { .b = FALSE } },
};
diff --git a/surf.c b/surf.c
t@@ -23,6 +23,8 @@
#define LENGTH(x) (sizeof x / sizeof x[0])
#define CLEANMASK(mask) (mask & ~(GDK_MOD2_MASK))
+enum { AtomFind, AtomGo, AtomUri, AtomHiLight, AtomLast };
+
typedef union Arg Arg;
union Arg {
gboolean b;
t@@ -54,11 +56,10 @@ typedef struct {
} Key;
static Display *dpy;
-static Atom uriprop, findprop;
+static Atom atoms[AtomLast];
static Client *clients = NULL;
static GdkNativeWindow embed = 0;
static gboolean showxid = FALSE;
-static int ignorexprop = 0;
static char winid[64];
static char *progname;
static gboolean loadimage = 1, plugin = 1, script = 1;
t@@ -76,7 +77,7 @@ static void die(char *str);
static void drawindicator(Client *c);
static gboolean exposeindicator(GtkWidget *w, GdkEventExpose *e, Client *c);
static void find(Client *c, const Arg *arg);
-static const char *getatom(Client *c, Atom a);
+static const char *getatom(Client *c, int a);
static const char *getcookies(SoupURI *uri);
static char *geturi(Client *c);
void gotheaders(SoupMessage *msg, gpointer user_data);
t@@ -95,7 +96,7 @@ static void progresschange(WebKitWebView *view, GParamSpec *…
static void reload(Client *c, const Arg *arg);
static void resize(GtkWidget *w, GtkAllocation *a, Client *c);
static void scroll(Client *c, const Arg *arg);
-static void setatom(Client *c, Atom a, const char *v);
+static void setatom(Client *c, int a, const char *v);
static void setcookie(SoupCookie *c);
static void setup(void);
static void sigchld(int unused);
t@@ -247,7 +248,7 @@ drawindicator(Client *c) {
GdkGC *gc;
GdkColor fg;
- uri = getatom(c, uriprop);
+ uri = geturi(c);
w = c->indicator;
width = c->progress * w->allocation.width / 100;
gc = gdk_gc_new(w->window);
t@@ -272,7 +273,7 @@ void
find(Client *c, const Arg *arg) {
const char *s;
- s = getatom(c, findprop);
+ s = getatom(c, AtomFind);
gboolean forward = *(gboolean *)arg;
webkit_web_view_search_text(c->view, s, FALSE, forward, TRUE);
}
t@@ -287,7 +288,7 @@ getcookies(SoupURI *uri) {
}
const char *
-getatom(Client *c, Atom a) {
+getatom(Client *c, int a) {
static char buf[BUFSIZ];
Atom adummy;
int idummy;
t@@ -295,7 +296,7 @@ getatom(Client *c, Atom a) {
unsigned char *p = NULL;
XGetWindowProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window),
- a, 0L, BUFSIZ, False, XA_STRING,
+ atoms[a], 0L, BUFSIZ, False, XA_STRING,
&adummy, &idummy, &ldummy, &ldummy, &p);
if(p)
strncpy(buf, (char *)p, LENGTH(buf)-1);
t@@ -360,7 +361,7 @@ void
loadstatuschange(WebKitWebView *view, GParamSpec *pspec, Client *c) {
switch(webkit_web_view_get_load_status (c->view)) {
case WEBKIT_LOAD_COMMITTED:
- setatom(c, uriprop, geturi(c));
+ setatom(c, AtomUri, geturi(c));
break;
case WEBKIT_LOAD_FINISHED:
c->progress = 0;
t@@ -491,8 +492,9 @@ newclient(void) {
g_object_set(G_OBJECT(settings), "enable-plugins", plugin, NULL);
g_object_set(G_OBJECT(settings), "enable-scripts", script, NULL);
g_free(uri);
- setatom(c, findprop, "");
- setatom(c, uriprop, "");
+
+ setatom(c, AtomFind, "");
+ setatom(c, AtomUri, "about:blank");
if(NOBACKGROUND)
webkit_web_view_set_transparent(c->view, TRUE);
t@@ -569,18 +571,17 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d) {
if(((XEvent *)e)->type == PropertyNotify) {
ev = &((XEvent *)e)->xproperty;
- if(ignorexprop)
- ignorexprop--;
- else if(ev->state == PropertyNewValue) {
- if(ev->atom == uriprop) {
- arg.v = getatom(c, uriprop);
- loaduri(c, &arg);
- }
- else if(ev->atom == findprop) {
+ if(ev->state == PropertyNewValue) {
+ if(ev->atom == atoms[AtomFind]) {
arg.b = TRUE;
find(c, &arg);
+ return GDK_FILTER_REMOVE;
+ }
+ else if(ev->atom == atoms[AtomGo]) {
+ arg.v = getatom(c, AtomGo);
+ loaduri(c, &arg);
+ return GDK_FILTER_REMOVE;
}
- return GDK_FILTER_REMOVE;
}
}
return GDK_FILTER_CONTINUE;
t@@ -647,10 +648,9 @@ setcookie(SoupCookie *c) {
}
void
-setatom(Client *c, Atom a, const char *v) {
+setatom(Client *c, int a, const char *v) {
XSync(dpy, False);
- ignorexprop++;
- XChangeProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window), a,
+ XChangeProperty(dpy, GDK_WINDOW_XID(GTK_WIDGET(c->win)->window), atoms…
XA_STRING, 8, PropModeReplace, (unsigned char *)v,
strlen(v) + 1);
}
t@@ -670,8 +670,12 @@ setup(void) {
dpy = GDK_DISPLAY();
s = webkit_get_default_session();
- uriprop = XInternAtom(dpy, "_SURF_URI", False);
- findprop = XInternAtom(dpy, "_SURF_FIND", False);
+
+ /* atoms */
+ atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False);
+ atoms[AtomGo] = XInternAtom(dpy, "_SURF_GO", False);
+ atoms[AtomUri] = XInternAtom(dpy, "_SURF_URI", False);
+ atoms[AtomHiLight] = XInternAtom(dpy, "_SURF_HILIGHT", False);
/* dirs and files */
cookiefile = buildpath(cookiefile);
t@@ -688,7 +692,6 @@ setup(void) {
if((proxy = getenv("http_proxy")) && strcmp(proxy, "")) {
new_proxy = g_strrstr(proxy, "http://") ? g_strdup(proxy) :
g_strdup_printf("http://%s", proxy);
-
puri = soup_uri_new(new_proxy);
g_object_set(G_OBJECT(s), "proxy-uri", puri, NULL);
soup_uri_free(puri);
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.