UP | HOME
Impaktor

Impaktor

Inject Emacs intravenously

On flogging dead horses — Running Conkeror in 2020s
Published on Sep 06, 2020 by Impaktor.

He seeks fresh bodies in the morgue,
to test his new creation

Injecting serum in the corpses,
for the hope of re-animation

A super charged zombie awakes,
everyone’s death is at stake!

Rigor Mortis - s/t (1988)

Table of Contents

Introduction

What is conkeror?

Usually “fast browser” generally means “renders a page fast”. However, this does not take into account the user’s interaction with the page. How fast can you find the link you want, and follow it? Open it in a second buffer (read: “tab”), or navigate through a page? As it turns out, using the keyboard for these tasks are vastly superior to mouse.

As an Emacs user, I find Conkeror looms high above all other keyboard driven browsers, in this regard 1. Conkeror has been my daily driver for the past +7 years. (My configuration is available here).

Problem in 2020

Conkeror runs on top of Mozilla Xulrunner. However, this was deprecated by Mozilla in Firefox v57 Quantum, a few years ago. I have thus been running Conkeror on this old Firefox-52 “Extended Support Release”, well beyond the support date, but a few months ago, many pages started crashing, and things were reaching a critical point.

Sadly, the Conkeror dev-team have largely abandoned the source code, and switched to other browsers, even though there is no good alternative for us who must have Emacs-keybindings, rather than Vim.

I want to stick with Conkeror because I cant find any other browser that fulfils my princess-on-the-pea demands of:

  • I absolutely need keyboard driven browser, as it’s massively faster than using the mouse.
  • Keybindings have to be Emacs-like. E.g. C-s for searching, C-b or C-x b for listing all buffers (read: “tabs”), C-y for pasting (“yank”).
  • When link-hinting, I want the full link highlighted, i.e. no fancy “badges” (I’m looking at you nyxt-browser/#538)
  • Narrow to search for links (demonstrated in issue: nyxt/issues/536)
  • Also, I have years of browsing history that I want to keep, surprisingly often I want to see which sites I’ve previously been to. Especially true with stackoverflow posts. If I find “the next Conkeror”, I’ll gladly switch, but I’ll make an effor to convert the history, so I can move it with me.

Inject the serum, re-animate the corpse!

Conkeror can be revived, by following the simple steps below. The main serum for injecting life is Waterfox - a well maintained Firefox fork - which still uses Xulrunner.

  1. Rather than cloning the Conkeror repo, one need to clone the repo adapted for waterfox: https://github.com/aplaice/conkeror/tree/waterfox_quick
  2. Install Waterfox. Alternatively, this might also work with Palemoon, another Firefox fork, which is supposedly much better at protecting the user’s privacy, if doing the migration steps.
  3. Make an executable script, e.g. conkeror with:

    #!/bin/sh
    waterfox-classic -app $HOME/usr/src/conkeror/application.ini "$@"
    
  4. Internet is unusable without adblocking, I used to have ublock origin, but one needs an old version, so for now, I’m using the last working Adblock Plus 2.9.1 (download xpi-file here), which was the last before webextensions broke conkeror 2. They say older versions are available, but easiest for me was to just get the xpi file directly. M-x extensions, install Adblock
  5. Under preferences, add filter subscriptions:

If adblocking stops working again, perhaps one would have to look into PiHole, or better alternatives.

Conkeror alternatives

There are a number of Conkeror alternatives, as listed on the conkeror wiki, here are my notes on them:

  • nyxt - Developed in Common Lisp by a small team on a EU-grant. I initially thought Nyxt 3 was very interesting, but the dev-team have very different view than me, since they rather than supporting browser add-ons/extensions (such as adblocking), and make the keyboard navigation be useful (#538), especially for Emacs users (the core concept of the browser), they are pursuing making Nyxt be an email-client, IRC-client, RSS-reader, — things I’m very happy to use Emacs for, since it’s all text-processing. I’m only interested in leaving Emacs for non-text processing tasks, such as web-browsing and pdf-viewing 4.
  • webmacs - self proclaimed (feature) clone of Conkeror. Seems development is currently dormant, by the looks of it. I haven’t tested it, perhaps it has already reached perfection?
  • qutebrowser - Inspired by Vimperator so Vim-key bindings, that can not be clobbered into Emacs-like?
  • lispkit - Dormant for 6 years.
  • Surfingkeys - A Chrome/Firefox addon, reportedly it is supposed to be the closest to Conkeror at least as FF extensins go (more comprehensive than Saka or Tridactyl).
  • browsh “A fully-modern text-based browser. It renders anything that a modern browser can; HTML5, CSS3, JS, video and even WebGL. Its main purpose is to be run on a remote server and accessed via SSH/Mosh or the in-browser HTML service in order to significantly reduce bandwidth and thus both increase browsing speeds and decrease bandwidth costs”

Privacy hardening

Conkeror is built on Mozilla FireFox, which is good for privacy, assuming one use some addons and tweaks in aboutconfig. A full list of privacy alternatives for personal computing here.

Footnotes:

1

Disclaimer: I know there are many keyboard driven browsers using Vim-like key-bindings (e.g. tridactyl, vimperator, pentadactyl, vimium), these are un-interesting to me, since my muscle memory is Emacs “all the way down”.

2

ABP works just fine, my Internet is now 99% ad-free (some youtube videos start with a white (blocked) advert that I can click through instantaneously)

3

The browser was covered on Hacker News, back when they still used the name “nEXT-browser” (name changed due to “difficult to google”), and also on reddit, and then again under the new name, Nyxt, here. Since it is heavily inspired by Emacs, there is significant interoperability.

4

Yes, I know emacs can both browse web pages, (I use EWW from time to time), and render pdfs, but not as well as programs dedicated to the task.