explaingit

atlas-engineer/nyxt

10,911Common LispAudience · developerComplexity · 4/5Setup · moderate

TLDR

A keyboard-driven web browser for programmers, written in Common Lisp. Modeled after Emacs and Vim, it is infinitely extensible and includes tree-style history, fuzzy tab switching, and tagged bookmarks.

Mindmap

mindmap
  root((Nyxt browser))
    Navigation
      Keyboard driven
      Fuzzy tab switching
      Tree history
    Features
      Tagged bookmarks
      Multi-tab search
      Multiple selection
    Customization
      Common Lisp scripts
      Emacs keybindings
      Vim keybindings
    Platforms
      GNU/Linux Flathub
      macOS in dev
      Windows in dev
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Replace your standard browser with a keyboard-first alternative if you prefer Emacs or Vim style navigation.

USE CASE 2

Extend the browser with custom Lisp scripts to automate repetitive web tasks or add new navigation commands.

USE CASE 3

Use tree-style history to research a topic across many branching pages without losing track of where you started.

USE CASE 4

Manage large collections of bookmarks with tags and compound search queries for faster retrieval.

Tech stack

Common LispWebKit

Getting it running

Difficulty · moderate Time to first run · 30min

Available on Linux via Flathub, macOS and Windows support is still in development.

License not mentioned in the README.

In plain English

Nyxt is a web browser built for people who prefer controlling their computer with the keyboard rather than the mouse. It takes inspiration from Emacs and Vim, two highly extensible text editors popular with programmers, and brings that same philosophy to browsing the web. It ships with three keybinding modes (Emacs, Vim, and CUA), so you can pick the style you already know. The browser comes with several features designed to make navigation faster. You can switch between open tabs by typing a few letters of a URL or page title, and it uses fuzzy matching so you do not need to type exactly. You can also perform actions on multiple items at once, like opening several bookmarks simultaneously. Bookmarks support tags and compound search queries so you can organize and find them in more detail than a standard browser allows. One unusual feature is how Nyxt handles browsing history. Instead of a simple forward and backward button, it records your navigation as a tree structure. If you visit multiple pages from a single starting point, each branch is preserved, so you can return to any earlier point without losing the other paths you explored. Nyxt is written in Common Lisp and is designed to be extended through Lisp code. You can customize almost any behavior, define new commands, and change keybindings to suit your workflow. This makes it popular among programmers who want a browser they can reshape the same way they reshape their text editor. The browser runs on GNU/Linux today, available through Flathub and various community-maintained packages. Support for macOS and Windows is in active development. The project welcomes bug reports and feature requests through GitHub Issues.

Copy-paste prompts

Prompt 1
I'm new to Nyxt browser. Show me the most important keyboard shortcuts for tab switching, bookmarking, and history navigation in Emacs mode.
Prompt 2
Write a Nyxt configuration in Common Lisp that adds a custom command to copy the current page URL to the clipboard with a single keystroke.
Prompt 3
How do I install Nyxt on Ubuntu via Flathub? Walk me through the steps and how to launch it for the first time.
Prompt 4
With Nyxt, how does the tree-style history work? Show me how to navigate back to a specific earlier branch of my browsing session.
Open on GitHub → Explain another repo

← atlas-engineer on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.