- Lua 70%
- Emacs Lisp 22%
- Python 2.1%
- Go Template 1.8%
- C 1.7%
- Other 2.3%
|
|
||
|---|---|---|
| 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. subsonic.el browses my Gonic server as tabulated lists and plays through MPV. Library browsing, search and podcasts 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.
Files. dired with dirvish is the file manager. Preview, move, copy, delete, all in Emacs. It replaced yazi. Visual mode works like yazi's: v starts a selection, j/k extend it, and d, x, y, p act on every file in it.
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.
Phone transfers. A small front-end for qrcp (qrcp.el) moves files between the phone and the PC over Wi-Fi. SPC o q asks send or receive. Receive asks for a folder and shows the QR code as an image. Send opens dirvish: m marks files, C-c C-a queues them so you can pick from other directories, C-c C-c sends, C-c C-k cancels. q stops the server.
Documents. emacs-reader opens PDF, EPUB, MOBI, FB2, XPS and CBZ through MuPDF. It replaced pdf-tools and doc-view, and covers ebooks too. n/p turn pages, g/G jump to the first and last page, o shows the outline.
Everything else. Images open 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 |
|---|---|
| subsonic.el (music) | mpv |
| jellyfin (movies & TV) | mpv |
| mu4e (mail) | mu, isync |
| jabber (chat) | mbedtls3 (OMEMO module) |
| dirvish (files) | libvips (previews) |
| gopass (passwords) | gopass, wl-copy |
| qrcp (phone transfers) | qrcp, qrencode |
| emacs-reader (documents) | libmupdf |
| magit | git |
The keys
Meow modal editing, 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 j | chat |
| SPC o m | |
| SPC o q | phone transfers (qrcp) |
| SPC n | notes (org agenda, capture, todos) |
| SPC h | Hermes Agent |
| SPC s | terminal |
| SPC SPC | M-x |
| SPC . | open a file |
| SPC / | ripgrep search |
| SPC , | buffers |
| SPC f | files |
| SPC p | project |
| SPC w | windows |
| SPC b | buffer actions |
| SPC T | tabs (workspaces) |
| SPC ? | help |
Clarifications
I'm currently using this pretty cool wayland compositor called cwc. I also use mango. 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/


