123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- From c5ca896c5ba969b90f1e098d117c205a9b71d0db Mon Sep 17 00:00:00 2001
- From: Bryon Meinka <bryon.meinka@gmail.com>
- Date: Sat, 11 May 2019 00:52:29 -0400
- Subject: [PATCH] Web Search
- ---
- config.def.h | 10 ++++++++++
- surf.c | 20 +++++++++++++++++++-
- 2 files changed, 29 insertions(+), 1 deletion(-)
- diff --git a/config.def.h b/config.def.h
- index 34265f6..69657bf 100644
- --- a/config.def.h
- +++ b/config.def.h
- @@ -6,6 +6,7 @@ static char *styledir = "~/.surf/styles/";
- static char *certdir = "~/.surf/certificates/";
- static char *cachedir = "~/.surf/cache/";
- static char *cookiefile = "~/.surf/cookies.txt";
- +static char *searchurl = "duckduckgo.com/?q=%s";
-
- /* Webkit default features */
- /* Highest priority value will be used.
- @@ -76,6 +77,14 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE |
- } \
- }
-
- +#define SEARCH() { \
- + .v = (const char *[]){ "/bin/sh", "-c", \
- + "xprop -id $1 -f $2 8s -set $2 \"" \
- + "$(dmenu -p Search: -w $1 < /dev/null)\"", \
- + "surf-search", winid, "_SURF_SEARCH", NULL \
- + } \
- +}
- +
- /* DOWNLOAD(URI, referer) */
- #define DOWNLOAD(u, r) { \
- .v = (const char *[]){ "st", "-e", "/bin/sh", "-c",\
- @@ -133,6 +142,7 @@ static Key keys[] = {
- { MODKEY, GDK_KEY_g, spawn, SETPROP("_SURF_URI", "_SURF_GO", PROMPT_GO) },
- { MODKEY, GDK_KEY_f, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
- { MODKEY, GDK_KEY_slash, spawn, SETPROP("_SURF_FIND", "_SURF_FIND", PROMPT_FIND) },
- + { MODKEY, GDK_KEY_s, spawn, SEARCH() },
-
- { 0, GDK_KEY_Escape, stop, { 0 } },
- { MODKEY, GDK_KEY_c, stop, { 0 } },
- diff --git a/surf.c b/surf.c
- index 2b54e3c..077fb76 100644
- --- a/surf.c
- +++ b/surf.c
- @@ -35,7 +35,7 @@
- #define LENGTH(x) (sizeof(x) / sizeof(x[0]))
- #define CLEANMASK(mask) (mask & (MODKEY|GDK_SHIFT_MASK))
-
- -enum { AtomFind, AtomGo, AtomUri, AtomLast };
- +enum { AtomFind, AtomSearch, AtomGo, AtomUri, AtomLast };
-
- enum {
- OnDoc = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT,
- @@ -231,6 +231,7 @@ static void togglefullscreen(Client *c, const Arg *a);
- static void togglecookiepolicy(Client *c, const Arg *a);
- static void toggleinspector(Client *c, const Arg *a);
- static void find(Client *c, const Arg *a);
- +static void search(Client *c, const Arg *a);
-
- /* Buttons */
- static void clicknavigate(Client *c, const Arg *a, WebKitHitTestResult *h);
- @@ -326,6 +327,7 @@ setup(void)
-
- /* atoms */
- atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False);
- + atoms[AtomSearch] = XInternAtom(dpy, "_SURF_SEARCH", False);
- atoms[AtomGo] = XInternAtom(dpy, "_SURF_GO", False);
- atoms[AtomUri] = XInternAtom(dpy, "_SURF_URI", False);
-
- @@ -577,6 +579,19 @@ loaduri(Client *c, const Arg *a)
- g_free(url);
- }
-
- +void
- +search(Client *c, const Arg *a)
- +{
- + Arg arg;
- + char *url;
- +
- + url = g_strdup_printf(searchurl, a->v);
- + arg.v = url;
- + loaduri(c, &arg);
- +
- + g_free(url);
- +}
- +
- const char *
- geturi(Client *c)
- {
- @@ -1311,6 +1326,9 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d)
- find(c, NULL);
-
- return GDK_FILTER_REMOVE;
- + } else if (ev->atom == atoms[AtomSearch]) {
- + a.v = getatom(c, AtomSearch);
- + search(c, &a);
- } else if (ev->atom == atoms[AtomGo]) {
- a.v = getatom(c, AtomGo);
- loaduri(c, &a);
- --
- 2.21.0
|