surf-history-20181009-2b71a22.diff (3405B)
1 diff -up surf-2.0/config.def.h surf-2.0-history/config.def.h 2 --- surf-2.0/config.def.h 2017-11-26 14:29:37.963786915 +0100 3 +++ surf-2.0-history/config.def.h 2017-11-26 19:48:31.300096237 +0100 4 @@ -6,6 +6,7 @@ static char *styledir = "~/.surf/s 5 static char *certdir = "~/.surf/certificates/"; 6 static char *cachedir = "~/.surf/cache/"; 7 static char *cookiefile = "~/.surf/cookies.txt"; 8 +static char *historyfile = "~/.surf/history.txt"; 9 10 /* Webkit default features */ 11 /* Highest priority value will be used. 12 @@ -101,6 +102,11 @@ static WebKitFindOptions findopts = WEBK 13 } \ 14 } 15 16 +#define SETURI(p) { .v = (char *[]){ "/bin/sh", "-c", \ 17 +"prop=\"`surf_history_dmenu.sh`\" &&" \ 18 +"xprop -id $1 -f $0 8s -set $0 \"$prop\"", \ 19 +p, winid, NULL } } 20 + 21 /* styles */ 22 /* 23 * The iteration will stop at the first match, beginning at the beginning of 24 @@ -181,6 +187,7 @@ static Key keys[] = { 25 { MODKEY|GDK_SHIFT_MASK, GDK_KEY_b, toggle, { .i = ScrollBars } }, 26 { MODKEY|GDK_SHIFT_MASK, GDK_KEY_t, toggle, { .i = StrictTLS } }, 27 { MODKEY|GDK_SHIFT_MASK, GDK_KEY_m, toggle, { .i = Style } }, 28 + { MODKEY , GDK_KEY_Return, spawn, SETURI("_SURF_GO") }, 29 }; 30 31 /* button definitions */ 32 Only in surf-2.0-history/: config.h 33 Only in surf-2.0: .git 34 Only in surf-2.0-history/: surf 35 diff -up surf-2.0/surf.c surf-2.0-history/surf.c 36 --- surf-2.0/surf.c 2017-11-26 14:29:37.963786915 +0100 37 +++ surf-2.0-history/surf.c 2017-11-26 14:20:36.757100476 +0100 38 @@ -171,6 +171,7 @@ static void newwindow(Client *c, const A 39 static void spawn(Client *c, const Arg *a); 40 static void destroyclient(Client *c); 41 static void cleanup(void); 42 +static void updatehistory(const char *u, const char *t); 43 44 /* GTK/WebKit */ 45 static WebKitWebView *newview(Client *c, WebKitWebView *rv); 46 @@ -336,10 +337,11 @@ setup(void) 47 curconfig = defconfig; 48 49 /* dirs and files */ 50 - cookiefile = buildfile(cookiefile); 51 - scriptfile = buildfile(scriptfile); 52 - cachedir = buildpath(cachedir); 53 - certdir = buildpath(certdir); 54 + cookiefile = buildfile(cookiefile); 55 + historyfile = buildfile(historyfile); 56 + scriptfile = buildfile(scriptfile); 57 + cachedir = buildpath(cachedir); 58 + certdir = buildpath(certdir); 59 60 gdkkb = gdk_seat_get_keyboard(gdk_display_get_default_seat(gdpy)); 61 62 @@ -1042,12 +1044,28 @@ cleanup(void) 63 while (clients) 64 destroyclient(clients); 65 g_free(cookiefile); 66 + g_free(historyfile); 67 g_free(scriptfile); 68 g_free(stylefile); 69 g_free(cachedir); 70 XCloseDisplay(dpy); 71 } 72 73 +void 74 +updatehistory(const char *u, const char *t) 75 +{ 76 + FILE *f; 77 + f = fopen(historyfile, "a+"); 78 + 79 + char b[20]; 80 + time_t now = time (0); 81 + strftime (b, 20, "%Y-%m-%d %H:%M:%S", localtime (&now)); 82 + fputs(b, f); 83 + 84 + fprintf(f, " %s %s\n", u, t); 85 + fclose(f); 86 +} 87 + 88 WebKitWebView * 89 newview(Client *c, WebKitWebView *rv) 90 { 91 @@ -1417,6 +1435,7 @@ loadfailedtls(WebKitWebView *v, gchar *u 92 return TRUE; 93 } 94 95 + 96 void 97 loadchanged(WebKitWebView *v, WebKitLoadEvent e, Client *c) 98 { 99 @@ -1445,6 +1464,7 @@ loadchanged(WebKitWebView *v, WebKitLoad 100 break; 101 case WEBKIT_LOAD_FINISHED: 102 seturiparameters(c, uri, loadfinished); 103 + updatehistory(uri, c->title); 104 /* Disabled until we write some WebKitWebExtension for 105 * manipulating the DOM directly. 106 evalscript(c, "document.documentElement.style.overflow = '%s'", 107 Only in surf-2.0-history/: surf.o