Introduction
Nyxt is a web browser built for keyboard-driven workflows and deep extensibility. Unlike traditional browsers that prioritize mouse interaction, Nyxt treats browsing as a programmable activity where every action can be scripted, chained, and customized through Common Lisp.
What Nyxt Does
- Provides Emacs-style and Vim-style keybinding modes for keyboard navigation
- Renders web pages using WebKitGTK or WebEngine backends
- Offers a command prompt (similar to Emacs M-x) for executing any browser action
- Supports tree-style history with full-text search across visited pages
- Allows live customization via an integrated Common Lisp REPL
Architecture Overview
Nyxt is written entirely in Common Lisp with a modular architecture. The browser core manages buffers (tabs), modes, and commands while delegating rendering to platform-specific backends (WebKitGTK on Linux, WebEngine elsewhere). Configuration is native Lisp code loaded at startup, and users can redefine any function or class at runtime via the REPL.
Self-Hosting & Configuration
- Install via system package manager or download pre-built binaries
- Configuration lives in ~/.config/nyxt/config.lisp as plain Lisp code
- Define custom keybindings by creating or modifying mode classes
- Install extensions by adding Lisp systems to the ASDF load path
- Configure proxy, search engines, and download paths in the config file
Key Features
- Built-in ad blocker with customizable filter lists
- Smart bookmark system with tags and full-text search
- Password manager integration (KeePassXC, Pass, 1Password)
- Cloned buffer and session restoration across restarts
- Programmable scripting for automating repetitive browsing tasks
Comparison with Similar Tools
- Qutebrowser — Vim-keybindings browser in Python but less extensible
- Vimb — Minimal Vim-like browser but lacks programmability
- Luakit — Lua-scriptable browser, lighter but fewer features
- Firefox with Vimium — Extension-based approach limited by browser sandbox
- Emacs EWW — Text-mode browser inside Emacs, no JavaScript support
FAQ
Q: Does Nyxt support browser extensions like Firefox? A: Nyxt does not use WebExtensions. Instead, it provides native Lisp extensibility which offers deeper integration than sandboxed extensions.
Q: Can Nyxt render modern JavaScript-heavy websites? A: Yes. It uses WebKitGTK which is a full modern rendering engine with JavaScript support.
Q: Do I need to know Lisp to use Nyxt? A: No. Nyxt works out of the box with sensible defaults. Lisp knowledge is only needed for advanced customization.
Q: How is Nyxt different from a terminal browser? A: Nyxt is a full graphical browser with modern rendering capabilities. It simply prioritizes keyboard interaction and programmability over mouse-driven UI.