From e1e64db7f02d187b1820d0fe827c3d2c3e4b2c82 Mon Sep 17 00:00:00 2001 From: "Dirk-Jan C. Binnema" Date: Tue, 14 Apr 2026 21:15:19 +0300 Subject: [PATCH] mu4e: update docs --- NEWS.org | 3 +- README.org | 189 +++++++++++++++++++++++++++++++++++++++- assets/mu-structure.png | Bin 0 -> 24298 bytes mu4e/mu4e-helpers.el | 7 +- mu4e/mu4e.texi | 15 ++++ 5 files changed, 205 insertions(+), 9 deletions(-) create mode 100644 assets/mu-structure.png diff --git a/NEWS.org b/NEWS.org index 7d599bed..be15a9f5 100644 --- a/NEWS.org +++ b/NEWS.org @@ -26,7 +26,8 @@ - You can get icons for MIME-types in the message-view and when using ~mu4e-view-mime-part-action~, by configuring ~mu4e-file-name-to-icon-function~ (see docstring). E.g. when you have the "Nerd Icons" package, you can set - this to ~nerd-icons-icon-for-file~. (1.14.1) + this to ~nerd-icons-icon-for-file~; or alternatively with "All The Icons", use + ~all-the-icons-icon-for-file~ (1.14.1) - The message-view display has been stream-lined in number of ways, removing some of the Gnus-elements. (1.14.1) diff --git a/README.org b/README.org index 41ba1ed3..9cba3d00 100644 --- a/README.org +++ b/README.org @@ -13,7 +13,6 @@ Welcome to ~mu~! - Latest development news: [[NEWS.org]]. With the enormous amounts of e-mail many people gather and the importance of @@ -25,6 +24,10 @@ now, and quickly file away message for later use. Maildir-format. ~mu~'s goal is to help you to quickly find the messages you need, view them, extract attachments, and so on. +#+BEGIN_HTML + +#+END_HTML + After indexing your messages into a [[http://www.xapian.org][Xapian]]-database, you can search them through a query language. You can use various message fields or words in the body text to find the right messages. @@ -44,6 +47,10 @@ under the name ~maildir-utils~; apparently because they don't like short names. All of the code is distributed under the terms of the [[https://www.gnu.org/licenses/gpl-3.0.en.html][GNU General Public License version 3]] (or higher). +The ~mu~ project welcomes contributions; see the Github issue list and [[IDEAS.org]]. + +Users and developers are encouraged to join the [[https://groups.google.com/g/mu-discuss/][mu-discuss]] mailing-list. + * Versions *mu* attempts to balance development speed and stability. @@ -144,6 +151,182 @@ queries: $ mu find hello #+end_example -* Contributing +* Mu4e -Contributions are welcome! See the Github issue list and [[IDEAS.org]]. +Mu4e is an e-mail client for [[https://www.gnu.org/software/emacs/][GNU/Emacs]] that works on top of ~mu~. + +~mu4e~ is shipped as part of the ~mu~ package, and the versions must match. + +Since there are so many different ways people use e-mail, there are a lot of +ways to customize it to your needs; see the [[https://www.djcbsoftware.nl/code/mu/mu4e/][Mu4e Reference Manual]] for all the +details, here we include quick-start instructions, in the form of ~use-package~ +declaration. Much of it is commented-out, pick the parts that best fit your +particular needs; see the manual for a deeper dive. + +#+begin_src elisp +(use-package mu4e + :ensure nil + :config +;;;; Basics + + ;; (setq mu4e-mu-binary "/path/to/mu") ; only needed if mu is not in PATH + (setq mail-user-agent 'mu4e) ;; mu4e as the default emacs mail program + + ;; Identify yourself. Not strictly necessary. + ;; (setq + ;; user-mail-address "mickey@example.com" + ;; user-full-name "Mickey Mouse") + + ;; +;;;; Retrieving mail + ;; + ;; Here, put the command you use for getting mail from some + ;; remote server to your local Maildir. You can leave it at its + ;; default when you have local delivery (rare these days) + ;; + ;; The command depends on your local setup, e.g.: + ;; "offlineimap", "mbsync", "fetchmail", ... or some shell script + (setq mu4e-get-mail-command "/bin/true" ;; + mu4e-update-interval 180) ;; check every 3 minutes + + ;; +;;;; Reading mail + ;; + ;; You need to tell mu4e where it can find certain mail folders + ;; in your Maildir; these are the paths relative to your maildir-root. + ;; (setq + ;; mu4e-inbox-folder "/inbox" + ;; mu4e-sent-folder "/sent" + ;; mu4e-drafts-folder "/drafts" + ;; mu4e-trash-folder "/trash") + ;; + ;; For Gmail, these could look something like: + ;; (setq + ;; mu4e-inbox-folder "/INBOX" + ;; mu4e-sent-folder "/[Gmail]/Sent Mail" + ;; mu4e-drafts-folder "/drafts" + ;; mu4e-trash-folder "/trash") + ;; ;; (here we keep /drafts & /trash local) + + ;; define some shortcuts to maildirs you use often + ;; the :key defines the shortcut key, the other parameters + ;; determine what is (not) shown in the main-view. See the + ;; `mu4e-maildir-shortcuts' docstring. + ;; (setq mu4e-maildir-shortcuts + ;; '((:maildir "/inbox" :key ?i :hide-if-no-unread t :favorite t) + ;; (:maildir "/lists" :key ?l :hide-if-no-unread t) + ;; (:maildir "/sent" :key ?s :hide-unread t)))) + + ;; Defaults to homedir. Can also be a function, for file-specific + ;; dirs; see docstring. + ;; (setq mu4e-attachment-dir "~/Downloads") + + ;; +;;;; Sending mail + ;; + ;; Mail sending goes through the Emacs smtpmail package + ;; the exact settings depend on your SMTP provider + (setq + send-mail-function smtpmail-send-it + message-send-mail-function smtpmail-send-it + ;; smtpmail-smtp-user "user@example.com" + ;; smtpmail-smtp-server "smtp.example.com" + ;; smtpmail-smtp-service 465 + ;; smtpmail-stream-type 'tls + ) + + ;; +;;;; Extras + ;; + ;; There are *many* more settings to customize mu4e. Here are a few common + ;; ones; just some examples, tweak to your preferences. + + ;; prefer text when mails have both text and html + ;; (with-eval-after-load "mm-decode" + ;; (add-to-list 'mm-discouraged-alternatives "text/html") + ;; (add-to-list 'mm-discouraged-alternatives "text/richtext") + ;; (add-to-list 'mm-discouraged-alternatives "multipart/related")) + + ;; Some visual tweaks + (setq mu4e-use-fancy-chars t) ;; allow for unicode emojis + + ;; + ;;;; Custom bookmarks / queries + ;; e.g.: + ;; (add-to-list 'mu4e-bookmarks + ;; '( :name "Inbox messages in the last 7 days" + ;; :query (lambda () + ;; (format "maildir:/inbox AND date:%s" + ;; (format-time-string + ;; "%Y%m%d.." + ;; (subtract-time (current-time) + ;; (days-to-time 7))))) + ;; :key ?w)) + + ;; Tweak headers display; i.e. what headers to show, sizes etc. + ;; Eg: + ;; (setq + ;; mu4e-headers-date-format "%Y-%m-%d" + ;; mu4e-headers-time-format "%H:%M" + ;; mu4e-headers-fields + ;; '((:human-date . 10) + ;; (:flags . 4) + ;; (:from-or-to . 20) + ;; (:mailing-list . 8) + ;; (:maildir . 8) + ;; (:labels . 8) + ;; (:thread-subject . nil))) + + ;; Refiling a messages ('r'), i.e., move messages to some other folder, + ;; based on their properties. mu4e-refile-folder can be a folder-name + ;; or a function taking a message and returning a folder-name + ;; (setq mu4e-refile-folder + ;; (lambda (msg) + ;; (cond + ;; ;; all messages sent by me go to the sent folder + ;; ((mu4e-message-sent-by-me msg) (mu4e-get-sent-folder msg)) + ;; ;; all mu-related messages go to the mu folder + ;; ((mu4e-message-contact-field-matches msg :to + ;; "mu-discuss@googlegroups.com") + ;; "/mu") + ;; ;; some work-related senders + ;; ((seq-some + ;; (lambda (addr) (mu4e-message-contact-field-matches msg :from addr)) + ;; `(,(rx "boss@company.com" eos) + ;; ,(rx "lucy@bookkeeper.com" eos) + ;; ,(rx "jim@taxes.gov" eos))) + ;; "/work") + ;; ;; everything else goes to /archive + ;; (t + ;; "/archive")))) + + ;; Tweak the message-view + ;; (setq + ;; mu4e-view-date-format "%Y-%m-%d %H:%M" + ;; mu4e-view-fields + ;; '(:from :to :cc :bcc :subject :flags :date :maildir :mailing-list)) + + ;; with nerd-icons or all-the-icons installed, you can get some icons when + ;; view messaages, e.g. + ;; (setq mu4e-file-name-to-icon-function #'nerd-icons-icon-for-file) + ;; or + ;; (setq mu4e-file-name-to-icon-function #'all-the-icons-icon-for-file) + + ;; Set a message signature: + ;; (setq message-signature + ;; (concat + ;; "User McUserFace\n" + ;; "http://www.example.com\n")) + + :hook + ;; tweak the composer + ((mu4e-compose-mode . (lambda () + (set-fill-column 72) + (flyspell-mode))) + ;; allow for inserting attachments with dired, + ;; with `M-x gnus-dired-attach' + (dired-mode . turn-on-gnus-dired-mode)) + + :bind ;; the Mu4e transient menu + (("C-c m" . mu4e-transient-menu))) +#+end_src diff --git a/assets/mu-structure.png b/assets/mu-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..43a306fa68c023ae500899f74ea126e07c9a0d47 GIT binary patch literal 24298 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

#;1rq>F45fWHdCs0K*3CPg9VZ!=XvoXXY26 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 ZNGiV}HP&FH4W2?AGPgH-e$e~kzW^YW!ixX^ literal 0 HcmV?d00001 diff --git a/mu4e/mu4e-helpers.el b/mu4e/mu4e-helpers.el index 6d521434..a616f7f6 100644 --- a/mu4e/mu4e-helpers.el +++ b/mu4e/mu4e-helpers.el @@ -46,11 +46,8 @@ When set, this should be a function that takes a file name and returns a string (icon) or nil. If you have the `nerd-icons' package, you can put -`nerd-icons-icon-for-file'. If those icons are too big, consider -installing the special nerd fonts, or perhaps use a value like: - - (lambda (name) - (nerd-icons-icon-for-file name :height 1.0)))" +`nerd-icons-icon-for-file' here; or with `all-the-icons', use +`all-the-icons-icon-for-file'." :type '(choice (const :tag "None" nil) function) :group 'mu4e) diff --git a/mu4e/mu4e.texi b/mu4e/mu4e.texi index 7f61002a..5a296340 100644 --- a/mu4e/mu4e.texi +++ b/mu4e/mu4e.texi @@ -3992,6 +3992,7 @@ with other tools. * BBDB::Hooking up with the Insidious Big Brother Database * Sauron::Getting new mail notifications with Sauron * Hydra:: Custom shortcut menus +* Emojis:: Emojis for MIME-types @end menu @node Org-contacts @@ -4155,6 +4156,20 @@ With Hydra installed, we can add multi-character shortcuts, for instance: Now, you can bind a convenient key to my-mu4e-bookmarks/body. @end lisp +@node Nerd-icons +@section Nerd-icons + +With packages such as +@uref{https://github.com/rainstormstudio/nerd-icons.el,Nerd Icons} and +@uref{https://github.com/domtronn/all-the-icons.el, All The Icons} you can use +'emoji' icons in various places in Emacs; see the specific packages for details. + +@code{mu4e} has support for these in its message-view, where it can use the +emojis to decorate the mime-types for attachments. You can enable this through +the variable @code{mu4e-file-name-to-icon-function}, which you can set to e.g., +@code{all-the-icons-icon-for-file} or @code{nerd-icons-icon-for-file name}, for +All-the-Icons and Nerd-Fonts, respectively. + @node Example configurations @appendix Example configurations