Nyxt V3

August 20, 2022

Two years ago I presented the Nyxt browser, and how I thought at that time it fit well in my text-oriented workflow. This is still the case, although I had neglected this browser a bit because of big web developments these last twenty months. Now I’m back to it as my daily driver for browsing, using the v3 (pre release), after trying out v2.2.4 for a week or so. I must admit it changes the surfing experience quite a bit, but it’s all good.


Last time, I only scratched the surface of this wonderful app. Let’s go into the details of what I like:

Vim users will get the comfort of modal mappings for free, and the normal mode can be defined for all but text input (e.g., input box in web document, status prompt in Nyxt). The Nyxt team even defined some g mappings, like in Vim. As I said in the other post, I can simply yt and yu to get the title and URL of a web page in my primary clipboard. It doesn’t look like much but it saves so much copy/paste back and forth between my text editor and the browser. The shortcut yy is used to copy (yank in Vim parlance) text, but you can safely add a C-c shortcut in addition.

Here is a list of shortcuts I use in my daily browsing activities using Nyxt:

Mapping Mode Command Role
C-w*buffer-listing-modebuffers-panellist all buffers in a separate buffer
C-h*history-modelist-historylist history in a separate buffer
Hhistory-modehistory-backwardsgo backward in history
Lhistory-modehistory-forwardsgo forward in history
fhint-modefollow-hintprompt for hint and follow in current buffer
Fhint-modefollow-hint-new-buffer-focusprompt for hint and follow in new buffer
/search-buffer-modesearch-buffersearch in current buffer
C-jdownload-modelist-downloadsshow all dowload in a separate buffer
+document-modezoom-pagezoom in
-document-modeunzoom-pagezoom out
C-d*document-modescroll-page-downscroll down (one page height)
C-u*document-modescroll-page-upscroll up (one page height)
ghdocument-modejump-to-headingjump to a given heading (H1, H2, etc.)
}document-modenext-headingjump to next heading
{document-modeprevious-headingjump to previous heading
C-c*document-modecopycopy highlighted text to clipboard
oset-urlopen URL in current buffer
Oset-url-new-bufferopen URL in new buffer
Ddelete-current-bufferclose buffer
Rreload-current-bufferreload page
ytcopy-titlesave page title to clipboard
yucopy-urlsave URL to clipboard
gbswitch-bufferswitch buffer using fuzzy completion
]switch-buffer-nextswitch to next buffer
[switch-buffer-previousswitch to previous buffer

In addition to the above mappings where custom mappings are highlighted using an asterisk, I also use a custom shortcut (C-o) to open the current buffer in Firefox:

(define-command-global open-external-browser ()
  "Open the current url in Firefox"
  (uiop:run-program (list "firefox" (render-url (url (current-buffer))))))

As I said, Nyxt is great for basic navigation but when it comes to inspecting HTML or CSS elements I’m more comfortable using Firefox developer tools. Time will tell if I can manage to do even basic web dev tasks in Nyxt. Also, Nyxt 3 introduced some changes in how we defined our configuration files (config.lisp versus init.lisp) and how we address some components. Basic stuff I showed in my earlier post no longer works, unfortunately. You can start with Artyom Bologov’s config to get an idea of how it feels to customize Nyxt a bit. I used some of his macros to define my own shortcuts, for example.

♪ Kendra Morris • This Life

See Also

» Zathura viewer » Back to Matrix » Rhythmbox » Kopia backup » Helix editor