diff options
| author | Magdalena Szweda <hi@roughlynamed.net> | 2026-10-04 11:28:28 +0200 |
|---|---|---|
| committer | Magdalena Szweda <hi@roughlynamed.net> | 2026-10-04 13:34:36 +0200 |
| commit | 59b10310dd37a19c951f197692e6f92ef91e8130 (patch) | |
| tree | 5cb149fe37320903fde2ae533cb8004fda1c6606 | |
| parent | 231d98ca60e667e557b4bbf28178caa651a4ad41 (diff) | |
emacs(ui): add vertico-carousel & work on EMMS/XMonad
Emacs:
ADD(ui) :: Vertico-carousel package for nicer searches via vertico
ADD(music) :: EMMS keybinding to add playlist via file (m3u, pls)
XMonad:
ADD(startup) :: Spawn feh on XMonad startup for a nice background
| -rw-r--r-- | config.el | 10 | ||||
| -rw-r--r-- | config.org | 222 | ||||
| -rw-r--r-- | packages.el | 3 |
3 files changed, 134 insertions, 101 deletions
@@ -55,6 +55,10 @@ (setq +zen-mixed-pitch-modes '()) +(use-package! vertico-carousel + :config + (vertico-carousel-mode 1)) + (defun my/hs-eval () (interactive) (let* ((src (buffer-file-name)) @@ -232,7 +236,8 @@ (message "emms: resync done")))) (use-package! emms - :commands (emms emms-browser emms-player-mpd-update-all emms-cache-set-from-mpd-all) + :commands (emms emms-browser emms-player-mpd-update-all emms-cache-set-from-mpd-all emms emms-pause emms-next emms-previous emms-stop + emms-random emms-add-directory-tree emms-play-playlist) :init (map! :leader @@ -243,6 +248,7 @@ :desc "Next" "n" #'emms-next :desc "Previous" "p" #'emms-previous :desc "Stop" "s" #'emms-stop + :desc "Add" "a" #'emms-add-playlist :desc "Clear" "c" #'emms-playlist-clear)) :config @@ -258,7 +264,7 @@ emms-player-mpd-server-name "localhost" emms-player-mpd-server-port "6600" emms-player-mpd-music-directory "~/Music" -emms-source-file-default-directory (expand-file-name "~/Music/") +emms-source-file-default-directory (expand-file-name "~/Music/playlists/") emms-repeat-playlist t @@ -1,4 +1,5 @@ #+TITLE: Literate DOOM Emacs configuration + Emacs is a great operating system. But every operating system has 1 essential line of code. For us, this line of code is... (drumroll please) @@ -6,7 +7,9 @@ For us, this line of code is... (drumroll please) ;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- #+end_src -Yea i need to work on the foreword don't i +Almost every ~(use-package!)~ block in this literate configuration has a ~(package!)~ block before it, which is tangled into ~$DOOMDIR/packages.el~. This is how Doom Emacs installs it's packages. + + * TODO Splash screen Here we load a custom splash screen. @@ -145,6 +148,25 @@ I don't like that, especially when im editing source blocks (e.g here). Let's tu #+begin_src emacs-lisp (setq +zen-mixed-pitch-modes '()) #+end_src +** vertico-carousel +~vertico~ is the equivalent of nvim's ~telescope~ in Emacs. +#+begin_quote +~vertico-carousel~ is a display extension for Vertico. It always shows +the currently selected candidate on the first line of the candidate list, +then displays the following candidates below it, cycling from the end back +to the beginning. + -- vertico-carousel README +#+end_quote + +#+begin_src emacs-lisp :tangle ~/.config/doom/packages.el + (package! vertico-carousel + :recipe (:host github :repo "kn66/vertico-carousel")) +#+end_src +#+begin_src emacs-lisp + (use-package! vertico-carousel + :config + (vertico-carousel-mode 1)) +#+end_src * Languages & LSP ~M-x vscode~ ** Haskell @@ -492,104 +514,106 @@ The following makes the commands ~emms~ and ~emms-browser~ available even before #+begin_src emacs-lisp (use-package! emms - :commands (emms emms-browser emms-player-mpd-update-all emms-cache-set-from-mpd-all) -#+end_src - -Configure the mappings for EMMS -~:init~ in elisp runs the following code =before= a package is loaded. -In this case, it makes the emms mappings available right when emacs starts up. -#+begin_src emacs-lisp - :init - (map! :leader - (:prefix ("e" . "emms") - :desc "Browser" "b" #'emms-full-resync - :desc "Playlist" "m" #'emms-playlist-mode-go - :desc "Play/pause" "SPC" #'emms-pause - :desc "Next" "n" #'emms-next - :desc "Previous" "p" #'emms-previous - :desc "Stop" "s" #'emms-stop - :desc "Clear" "c" #'emms-playlist-clear)) -#+end_src - -Here we tell EMMS to use the preset configuration loader, this makes it so that i dont have to wire up a bunch of emms submodules myself. -#+begin_src emacs-lisp - :config -(require 'emms-setup) -#+end_src - -We then use ~emms-all~ to load every emms submodule. Possible variations include: -| Name | What it does | -|---------------+----------------------------------------------------------------| -| ~emms-all~ | Loads every EMMS submodule. (browser, cover art, lyrics, etc.) | -|---------------+----------------------------------------------------------------| -| ~emms-standard~ | Smaller and more curated subset of features | -|---------------+----------------------------------------------------------------| -| ~emms-minimal~ | Very barebones EMMS | - -#+begin_src emacs-lisp - (emms-all) -#+end_src - -Here we tell EMMS to use MPD instead of MPRIS. -#+begin_src emacs-lisp - (require 'emms-player-mpd) -(setq emms-player-list '(emms-player-mpd) - emms-info-functions '(emms-info-mpd) -#+end_src - - -Here we point EMMS/MPD at the default server and port for MPD -#+begin_src emacs-lisp - emms-player-mpd-server-name "localhost" -emms-player-mpd-server-port "6600" -#+end_src - -Tell EMMS where MPD's music dir lives, and where its own music dir lives. -#+begin_src emacs-lisp - emms-player-mpd-music-directory "~/Music" -emms-source-file-default-directory (expand-file-name "~/Music/") -#+end_src -Make playlists loop instead of stopping at the last track. -#+begin_src emacs-lisp - emms-repeat-playlist t -#+end_src - -Make EMMS use Doom Emacs' cache instead of its own. -#+begin_src emacs-lisp - emms-cache-file (concat doom-cache-dir "emms-cache")) -#+end_src - -Clear the playlist both on EMMS and MPD -#+begin_src emacs-lisp - (add-hook 'emms-playlist-cleared-hook #'emms-player-mpd-clear) -#+end_src - -Connect to MPD as soon as this config loads. -#+begin_src emacs-lisp - (emms-player-mpd-connect) -#+end_src - -Turn on the little [ARTIST - ALBUM - TITLE] indicator in the modeline. -#+begin_src emacs-lisp - (emms-mode-line-mode 1) -#+end_src - -Show lyrics in the buffer whenever its free -#+begin_src emacs-lisp - (emms-lyrics-toggle-display-on-minibuffer) -#+end_src - -LISTENED/LENGTH indicator in the modeline - -#+begin_src emacs-lisp - (emms-playing-time-mode 1) -#+end_src - -This makes it so that presing RET on a song in normal mode adds the tracks to the playlist and plays it. -This currently doesnt work. -#+begin_src emacs-lisp - (map! :map emms-browser-mode-map - :n "RET" #'emms-browser-add-tracks-and-play)) + :commands (emms emms-browser emms-player-mpd-update-all emms-cache-set-from-mpd-all emms emms-pause emms-next emms-previous emms-stop + emms-random emms-add-directory-tree emms-play-playlist) + #+end_src + + Configure the mappings for EMMS + ~:init~ in elisp runs the following code =before= a package is loaded. + In this case, it makes the emms mappings available right when emacs starts up. + #+begin_src emacs-lisp + :init + (map! :leader + (:prefix ("e" . "emms") + :desc "Browser" "b" #'emms-full-resync + :desc "Playlist" "m" #'emms-playlist-mode-go + :desc "Play/pause" "SPC" #'emms-pause + :desc "Next" "n" #'emms-next + :desc "Previous" "p" #'emms-previous + :desc "Stop" "s" #'emms-stop + :desc "Add" "a" #'emms-add-playlist + :desc "Clear" "c" #'emms-playlist-clear)) + #+end_src + + Here we tell EMMS to use the preset configuration loader, this makes it so that i dont have to wire up a bunch of emms submodules myself. + #+begin_src emacs-lisp + :config + (require 'emms-setup) + #+end_src + + We then use ~emms-all~ to load every emms submodule. Possible variations include: + | Name | What it does | + |---------------+----------------------------------------------------------------| + | ~emms-all~ | Loads every EMMS submodule. (browser, cover art, lyrics, etc.) | + |---------------+----------------------------------------------------------------| + | ~emms-standard~ | Smaller and more curated subset of features | + |---------------+----------------------------------------------------------------| + | ~emms-minimal~ | Very barebones EMMS | + + #+begin_src emacs-lisp + (emms-all) + #+end_src + + Here we tell EMMS to use MPD instead of MPRIS. + #+begin_src emacs-lisp + (require 'emms-player-mpd) + (setq emms-player-list '(emms-player-mpd) + emms-info-functions '(emms-info-mpd) + #+end_src + + + Here we point EMMS/MPD at the default server and port for MPD + #+begin_src emacs-lisp + emms-player-mpd-server-name "localhost" + emms-player-mpd-server-port "6600" + #+end_src + + Tell EMMS where MPD's music dir lives, and where its own music dir lives. + #+begin_src emacs-lisp + emms-player-mpd-music-directory "~/Music" + emms-source-file-default-directory (expand-file-name "~/Music/playlists/") + #+end_src + Make playlists loop instead of stopping at the last track. + #+begin_src emacs-lisp + emms-repeat-playlist t + #+end_src + + Make EMMS use Doom Emacs' cache instead of its own. + #+begin_src emacs-lisp + emms-cache-file (concat doom-cache-dir "emms-cache")) + #+end_src + + Clear the playlist both on EMMS and MPD + #+begin_src emacs-lisp + (add-hook 'emms-playlist-cleared-hook #'emms-player-mpd-clear) + #+end_src + + Connect to MPD as soon as this config loads. + #+begin_src emacs-lisp + (emms-player-mpd-connect) + #+end_src + + Turn on the little [ARTIST - ALBUM - TITLE] indicator in the modeline. + #+begin_src emacs-lisp + (emms-mode-line-mode 1) + #+end_src + + Show lyrics in the buffer whenever its free + #+begin_src emacs-lisp + (emms-lyrics-toggle-display-on-minibuffer) + #+end_src + + LISTENED/LENGTH indicator in the modeline + + #+begin_src emacs-lisp + (emms-playing-time-mode 1) + #+end_src + + This makes it so that presing RET on a song in normal mode adds the tracks to the playlist and plays it. + This currently doesnt work. + #+begin_src emacs-lisp + (map! :map emms-browser-mode-map + :n "RET" #'emms-browser-add-tracks-and-play)) #+end_src * vc diff --git a/packages.el b/packages.el index b486f62..a488046 100644 --- a/packages.el +++ b/packages.el @@ -7,6 +7,9 @@ (package! breadcrumb) +(package! vertico-carousel + :recipe (:host github :repo "kn66/vertico-carousel")) + (package! eglot-booster :recipe (:host github :repo "jdtsmith/eglot-booster")) |
