aboutsummaryrefslogtreecommitdiff
path: root/patches/surf-searchengines-20220804-609ea1c.diff
blob: 32aca05e2226e5e8f056bd7701d4f8f9a51e31ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
From 2f64431f15777d93d146707dccdb6ad063c7a316 Mon Sep 17 00:00:00 2001
From: Justinas Grigas <jstn_as@protonmail.com>
Date: Thu, 4 Aug 2022 23:18:40 +0300
Subject: [PATCH] searchengines: allows simple use of search engines

The previous patches had some issues:
* don't apply cleanly to the latest version.
* a space between the token and query is implied, so having " " as a
  token means you actually have to use "  ". Or if your token is "e",
  searching for "example.com" would trigger it. Now you specify the exact
  token to look for.
* has checks to skip badly configured search engines. The correct
  solution is to configure them right.

Now it works like a better version of the spacesearch patch, as it
allows you to specify " " as a token
---
 config.def.h |  5 +++++
 surf.c       | 22 +++++++++++++++++++++-
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/config.def.h b/config.def.h
index 075f7d0..7bb9c46 100644
--- a/config.def.h
+++ b/config.def.h
@@ -8,6 +8,11 @@ static char *cachedir       = "~/.local/share/surf/cache/";
 static char *cookiefile     = "~/.local/share/surf/cookies.txt";
 static char *historyfile    = "~/.local/share/surf/history.txt";
 
+static SearchEngine searchengines[] = {
+	{ " ", "https://duckduckgo.com/?q=%s" },
+	{ "osrs ", "https://oldschool.runescape.wiki/?search=%s" },
+};
+
 /* Webkit default features */
 /* Highest priority value will be used.
  * Default parameters are priority 0
diff --git a/surf.c b/surf.c
index a2b507c..7e85952 100644
--- a/surf.c
+++ b/surf.c
@@ -133,6 +133,11 @@ typedef struct {
 	unsigned int stopevent;
 } Button;
 
+typedef struct {
+	char *token;
+	char *uri;
+} SearchEngine;
+
 typedef struct {
 	const char *uri;
 	Parameter config[ParameterLast];
@@ -220,6 +225,7 @@ static void webprocessterminated(WebKitWebView *v,
                                  Client *c);
 static void closeview(WebKitWebView *v, Client *c);
 static void destroywin(GtkWidget* w, Client *c);
+static gchar *parseuri(const gchar *uri);
 
 /* Hotkeys */
 static void pasteuri(GtkClipboard *clipboard, const char *text, gpointer d);
@@ -584,7 +590,7 @@ loaduri(Client *c, const Arg *a)
 			url = g_strdup_printf("file://%s", path);
 			free(path);
 		} else {
-			url = g_strdup_printf("http://%s", uri);
+			url = parseuri(uri);
 		}
 		if (apath != uri)
 			free(apath);
@@ -1811,6 +1817,20 @@ destroywin(GtkWidget* w, Client *c)
 		gtk_main_quit();
 }
 
+gchar *
+parseuri(const gchar *uri)
+{
+	guint i;
+
+	for (i = 0; i < LENGTH(searchengines); i++) {
+		if (g_str_has_prefix(uri, searchengines[i].token))
+			return g_strdup_printf(searchengines[i].uri,
+					       uri + strlen(searchengines[i].token));
+	}
+
+	return g_strdup_printf("http://%s", uri);
+}
+
 void
 pasteuri(GtkClipboard *clipboard, const char *text, gpointer d)
 {
-- 
2.37.1