diff -r fee97b4579f2 config.def.h
--- a/config.def.h	Mon Sep 21 03:27:20 2009 +0200
+++ b/config.def.h	Wed Sep 23 13:59:44 2009 +0200
@@ -30,3 +30,6 @@
     { 0,                    GDK_Return, hideurl,    { 0 },          UrlBar },
 };
 
+static SearchEngine searchengines[] = {
+    { NULL, NULL },
+}
diff -r fee97b4579f2 surf.c
--- a/surf.c	Mon Sep 21 03:27:20 2009 +0200
+++ b/surf.c	Wed Sep 23 13:59:44 2009 +0200
@@ -58,6 +58,11 @@
 	KeyFocus focus;
 } Key;
 
+typedef struct {
+    char *token;
+    char *uri;
+} SearchEngine;
+
 static Display *dpy;
 static Atom urlprop;
 static SoupCookieJar *cookiejar;
@@ -92,6 +97,7 @@
 static Client *newclient(void);
 static WebKitWebView *newwindow(WebKitWebView  *v, WebKitWebFrame *f, Client *c);
 static void pasteurl(GtkClipboard *clipboard, const gchar *text, gpointer d);
+static gchar *parseuri(const gchar *uri);
 static GdkFilterReturn processx(GdkXEvent *xevent, GdkEvent *event, gpointer d);
 static void print(Client *c, const Arg *arg);
 static void proccookies(SoupMessage *m, Client *c);
@@ -348,14 +354,33 @@
 	g_free(uri);
 }
 
+gchar *
+parseuri(const gchar *uri) {
+    guint i;
+    gchar *prefix, *ret = NULL;
+    for (i = 0; i < LENGTH(searchengines); i++) {
+        if (searchengines[i].token == NULL || searchengines[i].uri == NULL)
+            continue;
+        prefix = g_strdup_printf("%s ", searchengines[i].token);
+        if(g_str_has_prefix(uri, prefix)) {
+            ret = g_strdup_printf(searchengines[i].uri, uri+(strlen(searchengines[i].token) + 1));
+            g_free(prefix);
+            break;
+        }
+    }
+    if (ret == NULL)
+        ret = g_strrstr(uri, "://") ? g_strdup(uri) : g_strdup_printf("http://%s", uri);
+
+    return ret;
+}
+
 void
 loaduri(Client *c, const Arg *arg) {
 	gchar *u;
 	const gchar *uri = (gchar *)arg->v;
 	if(!uri)
 		uri = gtk_entry_get_text(GTK_ENTRY(c->urlbar));
-	u = g_strrstr(uri, "://") ? g_strdup(uri)
-		: g_strdup_printf("http://%s", uri);
+	u = parseuri(uri);
 	webkit_web_view_load_uri(c->view, u);
 	c->progress = 0;
 	c->title = copystr(&c->title, u);
