- Lua 75.4%
- Emacs Lisp 18.7%
- Python 2.3%
- CSS 1.3%
- Shell 1.2%
- Other 1.1%
| dot_config | ||
| private_dot_gnupg | ||
| screenshots | ||
| .chezmoiignore | ||
| dot_bash_profile | ||
| dot_bashrc | ||
| dot_gitconfig | ||
| dot_gtkrc-2.0.tmpl | ||
| dot_profile | ||
| README.md | ||
melon dotfiles
My dotfiles. Emacs is the whole interface and MPV is the media engine. Each piece hands its heavy lifting to one external binary, listed under External dependencies below. Apply the repo with chezmoi and you get the same desktop on any machine. I run it on a desktop and a laptop.
Everything is configured from ~/.config/emacs, split between init.el and the modules in lisp/. The rest of the repo is window manager and app settings.
Screenshots
Everything lives in Emacs
Chat. jabber.el is the XMPP client. The server bridges WhatsApp and Telegram into XMPP, so every conversation shows up in the same Emacs buffer.
Mail. mu4e on top of isync. Mail is indexed, searched, drafted and archived without leaving Emacs.
Music. empv plays music from my Gonic server through MPV. Library browsing, search and playlists all stay inside Emacs. MPV is the only external piece, and it is the media engine anyway.
Jellyfin. A minimal Jellyfin client (jellyfin.el) browses movies and TV shows with completing-read and plays them in MPV. Playback position is tracked over MPV's IPC socket and reported back to the server, so Continue Watching and resume just work.
YouTube. yeetube scrapes YouTube into a results table and plays in MPV. Search, channel browsing, downloads and per-buffer quality settings all from SPC y.
Twitch. A minimal Twitch client browses top games and searches live channels with completing-read, then plays them in MPV through Streamlink. The browsing part is exclusively on Twitch, but the stream-watch supports any stream link (as long as Streamlink supports it).
Files. dired with dirvish is the file manager. Preview, move, copy, delete, all in Emacs. It replaced yazi.
Launcher. A floating Emacs frame opens apps and recent files. Bound to SPC l and to a global keybind. It replaced my Noctalia launcher.
Passwords. gopass runs the password store. SPC G opens it as a tabulated list with a live-filtering search; RET copies a password (kill-ring + clipboard, auto-cleared), o copies a TOTP, e edits a secret and n creates one. The buffers hold plaintext only in memory, are wiped on exit and never persist.
Everything else. PDFs open in pdf-tools, images in image-mode, git is magit. I dropped lazygit, swayimg and the rest along the way. If it can be done in Emacs, it is.
External dependencies
Each Emacs piece hands playback or heavy lifting to one external binary. Most are packaged in every distro.
| Emacs | Needs |
|---|---|
| yeetube (YouTube) | yt-dlp, mpv |
| twitch (streams) | streamlink, mpv |
| empv (music) | mpv |
| jellyfin (movies & TV) | mpv |
| mu4e (mail) | mu, isync |
| jabber (chat) | mbedtls3 (OMEMO module) |
| dirvish (files) | libvips (previews) |
| gopass (passwords) | gopass, wl-copy |
| pdf-tools | poppler (via native compile) |
| magit | git |
The keys
Evil mode, so vim keys, with SPC as the prefix.
| Key | Action |
|---|---|
| SPC d | file manager |
| SPC g | magit |
| SPC G | password manager (gopass) |
| SPC l | launcher |
| SPC m | music |
| SPC v | jellyfin (movies & TV) |
| SPC y | YouTube |
| SPC t | twitch |
| SPC j | chat |
| SPC o m | |
| SPC s | terminal |
| SPC . | open a file |
| SPC , | buffers |
| SPC f | files |
| SPC p | project |
| SPC w | windows |
Clarifications
My preferred compositor is mangowm, but I'm fine using Niri and Hyprcuck too. Sway is also fine if the machine does not use an Nvidia gpu. Noctalia is really good, but if not packaged in the operating system repo I use waybar as my fallback with some extra stuff.
Credits
The layout and dashboard are inspired by Studium Emacs: https://github.com/joshuablais/studium-emacs
The same Gonic server also feeds termsonic, another great client for Subsonic-compatible servers: https://git.sixfoisneuf.fr/termsonic/about/
The Waybar config I got entirely from here: https://github.com/RiccardoPP/dotfiles/tree/main/Hyprland-Elite-Mini (if you speak Italian I highly suggest watching Riccardo Palombo's channel)
The Caelus colorway comes from Dacctal: https://git.symlinx.net/daccfiles/about/


