How I like to use my pc. Setup is mostly centered around Emacs
  • Lua 75.4%
  • Emacs Lisp 18.7%
  • Python 2.3%
  • CSS 1.3%
  • Shell 1.2%
  • Other 1.1%
Find a file
2026-09-08 10:55:24 +02:00
dot_config Fix gopass editing in Emacs 2026-09-08 10:55:24 +02:00
private_dot_gnupg Update .chezmoiignore 2026-09-04 18:06:44 +02:00
screenshots Update README screenshot 2026-09-04 11:55:31 +02:00
.chezmoiignore Update .chezmoiignore 2026-09-05 18:10:05 +02:00
dot_bash_profile Dotfiles via chezmoi (secrets and identifiers gitignored) 2026-08-31 12:23:39 +02:00
dot_bashrc Dotfiles via chezmoi (secrets and identifiers gitignored) 2026-08-31 12:23:39 +02:00
dot_gitconfig Update .gitconfig 2026-09-07 15:53:17 +02:00
dot_gtkrc-2.0.tmpl Dotfiles via chezmoi (secrets and identifiers gitignored) 2026-08-31 12:23:39 +02:00
dot_profile Dotfiles via chezmoi (secrets and identifiers gitignored) 2026-08-31 12:23:39 +02:00
README.md Document gopass password manager module 2026-09-03 08:48:48 +02:00

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

Desktop

Desktop

Desktop

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 mail
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/