Introduction
Introduction Statistics Contact Development Disclaimer Help
surf-websearch-20190510-d068a38.diff - sites - public wiki contents of suckless…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
surf-websearch-20190510-d068a38.diff (3487B)
---
1 From c5ca896c5ba969b90f1e098d117c205a9b71d0db Mon Sep 17 00:00:00 2001
2 From: Bryon Meinka <[email protected]>
3 Date: Sat, 11 May 2019 00:52:29 -0400
4 Subject: [PATCH] Web Search
5
6 ---
7 config.def.h | 10 ++++++++++
8 surf.c | 20 +++++++++++++++++++-
9 2 files changed, 29 insertions(+), 1 deletion(-)
10
11 diff --git a/config.def.h b/config.def.h
12 index 34265f6..69657bf 100644
13 --- a/config.def.h
14 +++ b/config.def.h
15 @@ -6,6 +6,7 @@ static char *styledir = "~/.surf/styles/";
16 static char *certdir = "~/.surf/certificates/";
17 static char *cachedir = "~/.surf/cache/";
18 static char *cookiefile = "~/.surf/cookies.txt";
19 +static char *searchurl = "duckduckgo.com/?q=%s";
20
21 /* Webkit default features */
22 /* Highest priority value will be used.
23 @@ -76,6 +77,14 @@ static WebKitFindOptions findopts = WEBKIT_FIND_OPTIO…
24 } \
25 }
26
27 +#define SEARCH() { \
28 + .v = (const char *[]){ "/bin/sh", "-c", \
29 + "xprop -id $1 -f $2 8u -set $2 \"" \
30 + "$(dmenu -p Search: -w $1 < /dev/null)\"", \
31 + "surf-search", winid, "_SURF_SEARCH", NULL \
32 + } \
33 +}
34 +
35 /* DOWNLOAD(URI, referer) */
36 #define DOWNLOAD(u, r) { \
37 .v = (const char *[]){ "st", "-e", "/bin/sh", "-c",\
38 @@ -133,6 +142,7 @@ static Key keys[] = {
39 { MODKEY, GDK_KEY_g, spawn, SETPROP("_…
40 { MODKEY, GDK_KEY_f, spawn, SETPROP("_…
41 { MODKEY, GDK_KEY_slash, spawn, SETPROP("_…
42 + { MODKEY, GDK_KEY_s, spawn, SEARCH() },
43
44 { 0, GDK_KEY_Escape, stop, { 0 } },
45 { MODKEY, GDK_KEY_c, stop, { 0 } },
46 diff --git a/surf.c b/surf.c
47 index 2b54e3c..077fb76 100644
48 --- a/surf.c
49 +++ b/surf.c
50 @@ -35,7 +35,7 @@
51 #define LENGTH(x) (sizeof(x) / sizeof(x[0]))
52 #define CLEANMASK(mask) (mask & (MODKEY|GDK_SHIFT_MASK))
53
54 -enum { AtomFind, AtomGo, AtomUri, AtomLast };
55 +enum { AtomFind, AtomSearch, AtomGo, AtomUri, AtomLast };
56
57 enum {
58 OnDoc = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT,
59 @@ -231,6 +231,7 @@ static void togglefullscreen(Client *c, const Arg *a…
60 static void togglecookiepolicy(Client *c, const Arg *a);
61 static void toggleinspector(Client *c, const Arg *a);
62 static void find(Client *c, const Arg *a);
63 +static void search(Client *c, const Arg *a);
64
65 /* Buttons */
66 static void clicknavigate(Client *c, const Arg *a, WebKitHitTestResult …
67 @@ -326,6 +327,7 @@ setup(void)
68
69 /* atoms */
70 atoms[AtomFind] = XInternAtom(dpy, "_SURF_FIND", False);
71 + atoms[AtomSearch] = XInternAtom(dpy, "_SURF_SEARCH", False);
72 atoms[AtomGo] = XInternAtom(dpy, "_SURF_GO", False);
73 atoms[AtomUri] = XInternAtom(dpy, "_SURF_URI", False);
74
75 @@ -577,6 +579,19 @@ loaduri(Client *c, const Arg *a)
76 g_free(url);
77 }
78
79 +void
80 +search(Client *c, const Arg *a)
81 +{
82 + Arg arg;
83 + char *url;
84 +
85 + url = g_strdup_printf(searchurl, a->v);
86 + arg.v = url;
87 + loaduri(c, &arg);
88 +
89 + g_free(url);
90 +}
91 +
92 const char *
93 geturi(Client *c)
94 {
95 @@ -1311,6 +1326,9 @@ processx(GdkXEvent *e, GdkEvent *event, gpointer d)
96 find(c, NULL);
97
98 return GDK_FILTER_REMOVE;
99 + } else if (ev->atom == atoms[AtomSearch]) {
100 + a.v = getatom(c, AtomSearch);
101 + search(c, &a);
102 } else if (ev->atom == atoms[AtomGo]) {
103 a.v = getatom(c, AtomGo);
104 loaduri(c, &a);
105 --
106 2.21.0
107
You are viewing proxied material from suckless.org. 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.