diff --git a/articles/auto-suggestions-for-duckduckgo-in-conkeror.org b/articles/auto-suggestions-for-duckduckgo-in-conkeror.org new file mode 100644 index 0000000..ef35273 --- /dev/null +++ b/articles/auto-suggestions-for-duckduckgo-in-conkeror.org @@ -0,0 +1,69 @@ +#+TITLE: +#+STARTUP: showall + +* Auto-suggestions for DuckDuckGo in Conkeror :conkeror:config: + :PROPERTIES: + :PUBDATE: <2014-06-03 Tue 22:08> + :END: + + Recently [[https://duckduckgo.com][DuckDuckGo]] gave its UI a big overhaul. One of the new parts + of the UI is the auto-suggestions, which are pretty cool, especially + when working with ~!bang~ syntax. I want that in my conkeror webjump! + So I started looking... + + Turns out that [[http://conkeror.org][Conkeror]] can work with [[https://en.wikipedia.org/wiki/OpenSearch][OpenSearch]] descriptions to + create webjumps and actually already has a DuckDuckGo OpenSearch XML + file. However, DuckDuckGo has a newer version of that file. + + So, for starters you should download the proper XML [[https://duckduckgo.com/opensearch.xml][file]]. After + this, you can replace the + ~/usr/share/conkeror/search-engines/duckduckgo.xml~ file[fn:1] with + the newly downloaded one and you'd be done, ready to use the new + auto-suggest functionality[fn:2]. + + If, however, you don't like overwriting your package's files because + they may get overwritten again in the future[fn:3] or you really + don't think it's proper, you can also create a custom webjump that + does the same thing, which is what I did. + + In case you are following my lead, first we'd need to put the + downloaded XML file somewhere. I suggest + =~/.conkerorrc/search-engines= because that way everything in your + configuration stays nice and contained, although you might want to + put it in your + =~/.conkeror.mozdev.org/conkeror/CODE.PROFILE/search-engines=, where + ~CODE~ is an eight-character alphanumeric sequence (as far as I can + tell) and ~PROFILE~ is the name of the profile you use[fn:4], because + that should already be included in your =opensearch_load_paths=. + + If you put the XML in your ~.conkerorrc~ you'll need to add that + directory to your =opensearch_load_paths=, so put something like the + following in your ~init.js~, or whichever filename you use for your + conkeror init: + + #+BEGIN_SRC javascript + opensearch_load_paths.push(make_file("~/.conkerorrc/search-engines")); + #+END_SRC + + After Conkeror knows where to find your custom search engine + specifications you can create a webjump for it: + + #+BEGIN_SRC javascript + define_opensearch_webjump("ddg", "ddg.xml"); + #+END_SRC + + Once you evaluate these lines or restart your Conkeror, you should + have a ~ddg~ webjump with auto-suggestion. Yay! + +* Footnotes + +[fn:1] I have Conkeror installed in ~/usr~, so if you have it installed + somewhere else your path will be different. + +[fn:2] You might have to restart Conkeror first, I didn't test it + without restarting. + +[fn:3] This can of course happen when, for example, your package + manager updates your Conkeror installation. + +[fn:4] The default profile is named (appropriately) ~default~.