nyxt-config icon indicating copy to clipboard operation
nyxt-config copied to clipboard

My configuration files for Nyxt browser.

#+TITLE:My Nyxt Configuration Files

WARNING: [[https://www.aartaka.me.eu.org/nyxt-to-surf][I no longer use Nyxt]], so this config is likely to rot and get wildly irrelevant. Proceed with caution.

  • The hub of configuration (config.lisp) This loads other configuration files:
  • Nyxt-dependent:
    • keybinds.lisp,
    • passwd.lisp,
    • status.lisp,
    • style.lisp,
    • commands.lisp,
    • hsplit.lisp,
    • unpdf.lisp;
    • objdump.lisp;
  • and extension-dependent:
    • ace.lisp
    • kaomoji.lisp
    • search-engines.lisp
    • freestance.lisp
    • dark-reader.lisp

And configures some basic things, like default modes for buffers.

Everything interesting is in other files.

  • Some custom keybindings (keybinds.lisp)

There are some things that irritate me in default keybindings and I want to unbind/rebind these.

There are some commands that I lack keybindings for (e.g., password management, prompting history movement) and I want to add these.

A good example of how you can redefine mode keybinding there!

  • Alternative format for status-buffer (status.lisp)

I don't like the default wordy version of status-buffer (especially with long mode names), so I define my own styles and layouts to make it lighter.

This can evolve into an extension someday.

  • Styling (style.lisp)

I love dark themes everywhere, and I don't like any colors but red. This have made me to do black-red-and-green [[https://github.com/aartaka/laconia-theme][laconia-theme]]. I'm trying to reproduce it in style.lisp.

Right now it uses the 3.0 =theme= library (made by yours truly :P).

  • Additional commands (commands.lisp)

I lack some things in Nyxt, like the ability to evaluate arbitrary Lisp expression without a REPL (there used to be a command for that in 1.5, but it was phased out) and horisontal split, so I hack those with some possibly non-portable things and internal Nyxt APIs.

  • Hacky hsplit (hsplit.lisp)

It's too useful to have hsplit to not implement a hacky one based on panel buffers :P

  • A barebones PDF text reader (unpdf.lisp)

This one leverages Nyxt 3.* improved request processing to redirect any PDF file I load to a separate buffer, where its text is parsed with ~pdftotext~. I like ~pdftotext~ (even if it's quite chaotic at times), so why not extend this passion to Nyxt? :P

  • Experiments with objdump (objdump.lisp)

I cherish a dream of getting into reverse engineering, and ~objdump~ seems to be a good and simple utility to get one's feet wet. Thus, this simple ~objdump~ command to display section contents as a webpage.

  • Lots of search engines for different things (search-engines.lisp) This file has actually evolved from small configuration to an extension: [[https://github.com/aartaka/nx-search-engines][nx-search-engines]], so now it's basically an extension configuration. To use it, you need to do #+BEGIN_SRC lisp (define-nyxt-user-system-and-load "nyxt-user/search-engines" :depends-on (:nx-search-engines) (:components "search-engines.lisp")) #+END_SRC in your init.lisp.

  • A KeePassXC configuration (passwd.lisp) This used to contain a =setup-keepassxc= function to setup KeePassXC to better work with built-in password interface. Now this function is merged upstream as part of this password interface, so what's left is just a simple re-configuration of defaults.

  • Bookmarks relocation (bookmarks.lisp)

This is a file with all my bookmarks, Git-synced across devices. The snippet (in init.lisp) that enables it is: #+begin_src lisp (defmethod files:resolve ((profile nyxt:nyxt-profile) (file nyxt/bookmark-mode:bookmarks-file)) (uiop:parse-unix-namestring "~/.config/nyxt/bookmarks.lisp")) #+end_src

  • Ace editor inside Nyxt (ace.lisp)

This configures [[https://github.com/atlas-engineer/nx-ace][nx-ace]] to work as a default =editor-mode=. To enable it, you need to use #+BEGIN_SRC lisp (define-nyxt-user-system-and-load "nyxt-user/search-engines" :depends-on (:nx-ace) (:components "ace.lisp")) #+END_SRC in your init.lisp.

  • Easy-to-paste Kaomojis (kaomoji.lisp)

I fell in love with Kaomojis, and I need an easy way to paste these in my browser. That's why I made [[https://github.com/aartaka/nx-kaomoji][nx-kaomoji]]! Now I can paste over-emotional responses everywhere!

This file is simply a keybinding configuration. To enable nx-kaomoji, you need to use #+BEGIN_SRC lisp (define-nyxt-user-system-and-load "nyxt-user/search-engines" :depends-on (:nx-kaomoji) (:components "kaomoji.lisp")) #+END_SRC in your init.lisp.

  • Redirections to free alternatives for Twitter/YouTube I rely on [[https://github.com/kssytsrk/nx-freestance-handler][kssytsrk/nx-freestance-handler]] here. It's mostly plug-n-play, so not much configuration there.

  • A reasonable dark theme via Dark Reader This is based on [[https://github.com/aartaka/nx-dark-reader][my extension]] using [[https://github.com/darkreader/darkreader][Dark Reader]] to offer a good dark theme for almost any website. Does nothing special -- simply configures some colors for Dark Reader to work better with my theme from [[Styling (style.lisp)][style.lisp]].