surf-searchengines-20220804-609ea1c.diff - sites - public wiki contents of suck… | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
surf-searchengines-20220804-609ea1c.diff (2833B) | |
--- | |
1 From 2f64431f15777d93d146707dccdb6ad063c7a316 Mon Sep 17 00:00:00 2001 | |
2 From: Justinas Grigas <[email protected]> | |
3 Date: Thu, 4 Aug 2022 23:18:40 +0300 | |
4 Subject: [PATCH] searchengines: allows simple use of search engines | |
5 | |
6 The previous patches had some issues: | |
7 * don't apply cleanly to the latest version. | |
8 * a space between the token and query is implied, so having " " as a | |
9 token means you actually have to use " ". Or if your token is "e", | |
10 searching for "example.com" would trigger it. Now you specify the exact | |
11 token to look for. | |
12 * has checks to skip badly configured search engines. The correct | |
13 solution is to configure them right. | |
14 | |
15 Now it works like a better version of the spacesearch patch, as it | |
16 allows you to specify " " as a token | |
17 --- | |
18 config.def.h | 5 +++++ | |
19 surf.c | 22 +++++++++++++++++++++- | |
20 2 files changed, 26 insertions(+), 1 deletion(-) | |
21 | |
22 diff --git a/config.def.h b/config.def.h | |
23 index 075f7d0..7bb9c46 100644 | |
24 --- a/config.def.h | |
25 +++ b/config.def.h | |
26 @@ -8,6 +8,11 @@ static char *cachedir = "~/.local/share/surf/cach… | |
27 static char *cookiefile = "~/.local/share/surf/cookies.txt"; | |
28 static char *historyfile = "~/.local/share/surf/history.txt"; | |
29 | |
30 +static SearchEngine searchengines[] = { | |
31 + { " ", "https://duckduckgo.com/?q=%s" }, | |
32 + { "osrs ", "https://oldschool.runescape.wiki/?search=%s" }, | |
33 +}; | |
34 + | |
35 /* Webkit default features */ | |
36 /* Highest priority value will be used. | |
37 * Default parameters are priority 0 | |
38 diff --git a/surf.c b/surf.c | |
39 index a2b507c..7e85952 100644 | |
40 --- a/surf.c | |
41 +++ b/surf.c | |
42 @@ -133,6 +133,11 @@ typedef struct { | |
43 unsigned int stopevent; | |
44 } Button; | |
45 | |
46 +typedef struct { | |
47 + char *token; | |
48 + char *uri; | |
49 +} SearchEngine; | |
50 + | |
51 typedef struct { | |
52 const char *uri; | |
53 Parameter config[ParameterLast]; | |
54 @@ -220,6 +225,7 @@ static void webprocessterminated(WebKitWebView *v, | |
55 Client *c); | |
56 static void closeview(WebKitWebView *v, Client *c); | |
57 static void destroywin(GtkWidget* w, Client *c); | |
58 +static gchar *parseuri(const gchar *uri); | |
59 | |
60 /* Hotkeys */ | |
61 static void pasteuri(GtkClipboard *clipboard, const char *text, gpointe… | |
62 @@ -584,7 +590,7 @@ loaduri(Client *c, const Arg *a) | |
63 url = g_strdup_printf("file://%s", path); | |
64 free(path); | |
65 } else { | |
66 - url = g_strdup_printf("http://%s", uri); | |
67 + url = parseuri(uri); | |
68 } | |
69 if (apath != uri) | |
70 free(apath); | |
71 @@ -1811,6 +1817,20 @@ destroywin(GtkWidget* w, Client *c) | |
72 gtk_main_quit(); | |
73 } | |
74 | |
75 +gchar * | |
76 +parseuri(const gchar *uri) | |
77 +{ | |
78 + guint i; | |
79 + | |
80 + for (i = 0; i < LENGTH(searchengines); i++) { | |
81 + if (g_str_has_prefix(uri, searchengines[i].token)) | |
82 + return g_strdup_printf(searchengines[i].uri, | |
83 + uri + strlen(searchengin… | |
84 + } | |
85 + | |
86 + return g_strdup_printf("http://%s", uri); | |
87 +} | |
88 + | |
89 void | |
90 pasteuri(GtkClipboard *clipboard, const char *text, gpointer d) | |
91 { | |
92 -- | |
93 2.37.1 | |
94 |