sites

public wiki contents of suckless.org
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 <jstn_as@protonmail.com>
      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/cache/";
     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, gpointer d);
     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(searchengines[i].token));
     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