# Nyxt — The Keyboard-Driven Hacker's Browser in Common Lisp > Nyxt is a fully programmable web browser designed for power users, written in Common Lisp with Emacs and Vim-style keybindings, extensible through a built-in REPL and Lisp configuration. ## Install Save in your project root: # Nyxt — The Keyboard-Driven Hacker's Browser in Common Lisp ## Quick Use ```bash # Ubuntu/Debian sudo apt install nyxt # macOS brew install --cask nyxt # Launch nyxt ``` ## 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. ## Sources - https://github.com/atlas-engineer/nyxt - https://nyxt-browser.com --- Source: https://tokrepo.com/en/workflows/asset-0b20c07c Author: AI Open Source