1. 4

    I’ve been a happy user for ~5 years. In the last 20 years of heavily using email, it’s been overall the best mail user agent I’ve seen. Strongly recommended.

    Some things that set mu4e apart for me: Super fast search and UX, ability to handle multiple email addresses transparently, ability to use Org mode capture templates and good support for viewing HTML emails. There’s many more good reasons, if we want to get geekier, for example the ability to use procmail (spam, auto sorting, etc), the ability for offline mails, very good GPG support, and much more^^

    The initial configuration is a little bit of work, but it’s paying off for years to come. If you’re looking for a setup apart from the docs, here’s my config: https://github.com/munen/emacs.d/blob/master/configuration.org#mu4e

    1. 3

      I’d second this.

      Super fast search

      This is one of the major wins. Mu’s Xapian backend chews through heaps of email and gives incredible search results. I’d completely skipped any type of filing to folders; it just works.

      The only reason I’m not using it right now is that we lost the war on HTML email and bottom posting, so I’ve surrendered and gone to Outlook so my coworkers stop asking me why my email comes out funny on their phones.

      If anyone knows a good set of hooks to make mail-mode transform to “quasi-nice HTML” – turn > into a blockquote, maybe * and _ to <b> and <u>, etc., I’d love to see it.

      1. 2

        Hi owen

        Thanks for bringing up this valid concern. I’ve heard it often before, but personally have not encountered an issue. To share my experience and setup, I quickly created a screencast and a blog post that shows how I work with HTML emails: https://200ok.ch/posts/2020-05-27_using_emacs_and_mu4e_for_emails_even_with_html.html

        All the best and good email consumption/writing(;

        Update: And now I’ve just read that you’re talking about the opposite waylol

        Well, there’s a built-in way to transform Org to HTML, but I haven’t used it: https://github.com/djcb/mu/blob/master/mu4e/org-mu4e.el

        Update 2: If I understand you correctly, your issue was that people read mails on their phone and that you used fixed with mails (maybe 74 chars). That’s easily fixed by using format flowed. The config for that is a one liner in mu4e.

        1. 1

          Thanks for the screencast and blog post: they look like they will still be worth a peek to try to improve my environment! I’ll also have to take a look at org-mu4e as well – funny enough, I used mu4e-org a ton to get emails in my agenda… wish I’d have thought about going the other direction ;-)

          That’s easily fixed by using format flowed. The config for that is a one liner in mu4e.

          Two problems:

          1. f=f just doesn’t work with the MUAs I’m emailing to (Outlook, some Android mail users). 998-wide lines, as in the proposal there, were OK, but:
          2. Beyond the “funny phone” problem the real problem is that the users I communicate with almost always expect a very specific thing: HTML emails generated by Outlook, period. Plain text emails were never workable because the use of highlights/tables/etc. was essentially stripped out.

          But I’m definitely going to check out org-mu4e though to see if it fits. It probably won’t take a ton to line it up to look like Outlook…and if I can get close enough it might be worth it.

          1. 2

            Thank you for the information that format=flowed by default doesn’t work well with some clients like Outlook. The additional configuration of setting the maximum allowed width seems like a good workaround. I just confirmed that it works with Outlook 365 (in my tests).

            FWIW, based on my experience, f=f works well at least with Apple Mail and iOS.

            As for mail threads that let HTML prevail on responding whilst sending plain text, that’s probably going to be a hard problem, indeed. I might be lucky, because in my experience people with HTML mailers don’t start threads. Especially not with Outlook (365) which doesn’t seem to have the capability to quote from the previous mail. And without quoting, longer mail threads become completely unintelligible quite fast. Having said that, I do understand that some people prefer to communicate in this manner all the time anyway^^

            In any case, all the best, and thank you, again for the additional information on f=f!🙏

      2. 3

        Super fast search

        That is not my experience. Even things like bu (Unread messages) take ~5 seconds. notmuch on the other hand has always been super fast. Maybe I’m doing something wrong?

        I like the UI of mu4e more fwiw.

        1. 2

          bu is near instant for me, as are other queries. I’ve got a mail archive of just short of 40k messages. Maybe you’ve got significantly more?

          munen@lambda:~% time mu find flag:unread >& /dev/null
          mu find flag:unread >&/dev/null  0.00s user 0.00s system 94% cpu 0.009 total
          munen@lambda:~% find Maildir -type f | wc -l
          1. 3

            I’ve got a mail archive of just short of 40k messages

            I’ve got around 165K, not significantly more. Calling mu from the CLI is instantaneous. It is when I call it from Emacs that it takes ~5 seconds. The issue is likely on the Emacs. I have a similar experience in the three machines I’ve setup mu4e in.

            $ time mu find flag:unread >& /dev/null
            real    0m0.016s
            user    0m0.006s
            sys     0m0.010s
            $ find Maildir -type f | wc -l
            1. 1

              I don’t have nearly as many mails as you so I’m not certain, but you can try bumping up gc-cons-threshold and read-process-output-max:

              (setq gc-cons-threshold 100000000
                    read-process-output-max (* 1024 1024))
              1. 2

                Thanks, that did it. The gc-cons-threshold took it down to 2 seconds and the read-process-output-max to instant. Looks like I only need to update the read-process-output-max

        2. 1

          I managed to get this up just yesterday for my work gmail account. I haven’t managed to figure out how to setup multiple gmail accounts by using the recommended contexts just yet. The contexts example is a bit naive and doesn’t talk about separating Maildirs for each account refresh rates etc.

          So far the look and feel of mu4e is very good I must say.

        1. 2

          The URL to your config seems to not be a link – URL still is valid, just have to copy-paste it. Just so you know, thanks for sharing!

          1. 1

            Thank you for pointing it out! 🙏

            My mistake - I used a MD file instead of an Org file for the post. In Org, URLs will automatically be exported as a link, in MD (at least with pandoc) I have to make an explicit link from it. I didn’t remember that.

          1. 1

            What advantage does this have to Emacs’ built in client?

            1. 1

              Which emacs built-in client? :D There are three different ones that come bundled with emacs by default.

              1. 1

                Last I checked all the built-in MUAs in Emacs are written synchronously; any operation which takes a nontrivial amount of time blocks the entire UI. They’re also not built with the assumption of search in mind; at beast search is tacked on afterwards as an advanced optional feature rather than being used as the heart of the entire interface.

                1. 1

                  I haven’t looked into the workings of any of the three (MH, Rmail, and Gnus, I’m assuming) in particular detail, but I think this really depends on how you use them. MU shells out to an external process for most of its features; so does MH, and when I used it I never experienced any slowdown in usage. The same with both Rmail and Gnus, working on a local spool, and I’ve heard that connecting to a local mail server in Gnus also has fine speed.

                  Search is the big one. I never found advanced search particularly advantageous, but by default all three are pretty bad. All of them can have something like Mairix or Notmuch tacked on, but that’s it - it feels tacked on, and is less cohesive than something designed around search.

                2. 1

                  mu is search based. Maybe you’ve heard of notmuch - it’s a similar approach, but different^^

                  1. 1

                    As a long time notmuch user: How do they differ? From when I quickly tried mu4e a while back it mainly seemed to offer a slightly different UI. The workflows mostly seemed to be the same.

                    1. 1

                      I haven’t really used notmuch, so I cannot really speak to that. I mentioned it, because with regards to ‘search based’ mail workflows (that are not Gmail or similar) notmuch seems to be more well known.

                      Having said that, the search interfaces are similar to what I know of it.

                1. 8

                  Clojure is amazing, I really like it. At my company, it’s one of our primary languages. We’ve released some FOSS projects written in Clojure:

                  We’ve also built our primary product alephDAM using Clojure. It’s a digital asset management system used by news agencies and publishers: https://alephdam.200ok.ch/

                  In all above projects, having a live REPL in the editor, paired with immutable data structures, proved to be a fun, fast and robust programming experience. I haven’t seen another language family - other than LISP - to give the programmer such fast and concise feedback. I can only recommend it.

                  We also host the Clojure meetup in Zurich, Switzerland: https://www.meetup.com/zh-clj-Zurich-Clojure-User-Group/

                  1. 2

                    The article mentions that it’s a good companion to jq. Personally, I’m already using jq for constructing JSON[1]. After reading the article and looking the Github repo of jo, I’m afraid I don’t see what it adds when already using jq.

                    Bonus points: It’s also really nice to use jq with live queries in Emacs[2].

                    1. https://200ok.ch/posts/jq-my-new-favorite-tool-to-work-with-json-on-the-command-line.html
                    2. https://github.com/200ok-ch/counsel-jq/
                    1. 13

                      I use a Kinesis Advantage 2, which took a while to learn. Now, I’m back to typing speed, and I love it. I prefer to use it with my Linux machine, mainly due to my customized window manager and shortcuts.

                      1. 8

                        I’ve been using Kinesis ergo keyboards for - no joke - 20 years. I was starting to get some wrist pain, and it stopped when I started using them. I have the same setup at home and work: Kinesis Advantage 2 w/an Apple trackpad velcroed into the center.

                        I would probably use Ergodox, but my use case is keyboard on lap, feet up on desk, and I’d have to mount it on a board, whereas the Kinesis is one piece.

                        battle station with Kinesis

                        1. 2

                          My problem with the Ergodox is that it’s not really that ergonomic. Sure it’s split and has thumb clusters, but the killer feature of the Kinesis is the sculpted key-wells. I find myself awkwardly reaching a lot more with the Ergodox than my Kinesis.

                        2. 4

                          I’ve been using Kinesis Advantage keyboards for 7 years as my daily driver - I started having pains in my hands on prolonged keyboard usage and it went away immediately. Took me two weeks to get up to speed, but it was incredibly worth it. I still get pain in the hands if I have to use keyboards for longer than two hours that are not the Kinesis. Even if I spend 18h a day over 7d on the Kinesis, I have no trouble whatsoever. On the contrary, it feels like playing an instrument(;

                          Battlestation: https://twitter.com/preek/status/1243281502890229766

                          1. 4

                            It only took me about two weeks to adjust to, and that was about 15 years ago. Definitely recommend, it is better for your long-term health.

                            1. 2

                              I love love love love my Kinesis keyboards. I have two (one for home, one for the office) and I press them on people all the time. I’d like to try a Dactyl, but the cost is pretty steep for something that I’d have to get blind.

                            1. 1

                              Good job with organice! I have looked for such a project for quite some time. However, even if it looks great (and has mobile/web apps), it still misses one element from my flow: there is no git backend. Are there any plans to add it?

                              1. 2

                                Thank you for your kind words 🙏

                                organice already features a huge amount of synchronization options: Dropbox, Google Drive, WebDAV (which opens the door to ownCloud, Nextcloud and Seafile, but also self hosted dedicated WebDAV servers like Apache or Nginx).

                                For that, synchronization is build using the strategy pattern which is consumed here[1]. Implementing a new backend implies implementing 8 functions[2]. For Dropbox, it’s about 120 LOC JavaScript.

                                I’ll happily merge any PR enabling a different backend and support the development of it and will test it if I have access to a compatible backend.

                                As for me, I have no plans to build a Git client in the browser as this would be a huge undertaking with uncertain benefits. Personally, I’m happy synchronizing to storage like Dropbox wherein my Org files are sitting in a Git repository. Then, I can properly manage them from a proper Git client (in Emacs).

                                1. https://github.com/200ok-ch/organice/blob/master/src/actions/sync_backend.js
                                2. https://github.com/200ok-ch/organice/blob/master/src/sync_backend_clients/dropbox_sync_backend_client.js#L159-L166
                                1. 2

                                  Got it, however, there are some existing Git clients for browser/node environment like Isomorphic-Git. [1] I’d be interested to add such to the organice, test it by dogfooding it. ;)

                                  Regarding other features: I have reviewed the current capabilities and they represent very good coverage of my workflow. Almost fitting my sweet spot. ;) Additionally, I am a GSuite user, so GDrive fits perfectly. However, any Linux-based client for it is an abomination, mildly put (paid/free, doesn’t matter), and I do not have any incentive to use Dropbox.

                                  1. https://github.com/isomorphic-git/isomorphic-git
                                  1. 2

                                    From a quick glance, isomorphic-git looks nice! I’d be happy to support you if you have any questions whilst creating a PR for integration.

                                    NB: I’ve heard people use GDrive as a back-end for NextCloud[1]. I have no experience with that, but find the NextCloud Linux client itself quite good.

                                    1. https://docs.nextcloud.com/server/stable/admin_manual/configuration_files/external_storage_configuration_gui.html?highlight=google#available-storage-backends
                              1. 2

                                Related update: organice just got comprehensive documentation (https://organice.200ok.ch/documentation.html).

                                1. 10

                                  Battlestation (with screenshot):



                                  • Kinesis Advantage keyboard
                                  • Lenovo X1 Extreme 2nd gen
                                  1. 4

                                    Wow! What a beautiful environment to hack in <3

                                    1. 2


                                      You’re welcome to co-work anytime: https://zen-temple.net/lambda-zen-temple/introduction/

                                    2. 2

                                      And you even have a real shack that you could paint or go to to run away from the internet :)

                                      1. 1

                                        There was quite some painting going on at the house - all the outside surfaces have been redone for example^^

                                        The shak is for storing 6.5 qm^3 of local wood for the fireplaces, though:

                                        In summer, when it’s empty and raining outside, I do tend to sit inside it from time to time enjoy life with a cup of coffee and a good book^^

                                      2. 2

                                        No MacBook anymore? ;D

                                        1. 1

                                          Unfortunately, the last subjectively ‘good’ MBP was the 2015 model which broke down on me hard close to two years ago.

                                          Objectively speaking - or at least to the best of my knowledge, the new MBPs are not capable of running Linux due to loads of proprietary hardware.

                                          If only Apple still sold the 2015 model with a RAM, SSD and CPU upgrade, I’d still have a MBP and would have saved weeks of research and tinkering on slightly less differently proprietary hardware(;

                                        1. 1

                                          I second organice. It works well for journaling with a capture template. It equally works well for other kinds of support documents and todos. You can even generate an agenda out of your notes.

                                          Also, it’s FOSS, so you don’t have to worry that your work will be made obsolete at some point.

                                        1. 1

                                          Out of curiousness: Why did this get downvoted as off-topic?

                                          My take: I’ve been having conflicting files in Dropbox on Linux for years and spend time on writing up a solution for others to find, so they don’t have to figure it out for themselves. What’s yours?

                                          1. 14

                                            I agree that Windows is a pain for Linux development — but if one wants to do Linux development, why not … just use Linux? I’ve been using it for two decades now, and I would never willingly switch to Windows or macOS.

                                            I have a desktop which is finely tuned to exactly the way I work, which enhances my efficiency and productivity, and is fun. Isn’t that the goal?

                                            1. 5

                                              I’ve been running Linux for decades and for the most part I couldn’t imagine using anything else. I’m very comfortable with all of the tools available and the highly configurable desktops. The main pain point for me these days is that the more popular desktop environments handle hotplugging of peripherals extremely poorly.

                                              My main workstation is a laptop with a hardware dock. When undocked, it’s a regular laptop. When docked, the laptop sees (at least) another screen, another mouse, another keyboard, and sometimes a few other things like USB sound cards and scanners. Modern DEs handle this poorly and every time I dock the thing (which can be multiple times per day), I have to spend up to 30 seconds fixing the display layout, window placement, keyboard repeat rate, or audio configuration. I suspect Mac and Windows do better with this but wouldn’t know. I know it can work because a decade ago, GNOME 2 had this all figured out. (Unfortunately it’s successor MATE has other issues.)

                                              I can’t imagine the pain I will experience when I have to switch to a USB 3 or Thunderchicken dock because that’s what all laptops seem to be moving to.

                                              1. 1

                                                The post is from DHH, the creator of Ruby on Rails. He doesn’t want to do Linux development, he wants to work on a Rails application. Using the *nix toolset is just a proxy, because he heard that this works best on Windows using WSL.

                                              1. 13

                                                Big fan of Firefox, have used it for years as my primary browser. Just a few days ago, I updated to 69 will happily piggyback this v70 announcement.

                                                In case anyone of you uses a user stylesheet on Firefox and wonders why stuff doesn’t work in FF 69 anymore, the reason is that they disabled reading user stylesheets by default. You can enable it again by setting toolkit.legacyUserProfileCustomizations.stylesheets to true.

                                                Don’t go down the same rabbit hole like me and try to figure out why the one thing you did in the user stylesheet doesn’t work anymore. You’ll find zillions of people with opinions - and none of their proposed solutions will work(;

                                                1. 4

                                                  I hope that you have telemetry enabled. When a feature becomes not the default, that means that it is on the cutting block. If you’re not reporting that you are using a user stylesheet, then don’t be surprised when it is removed a few versions down the line.

                                                  1. 3

                                                    Thank you! This was driving me crazy!

                                                    1. 2

                                                      can you elaborate? Are you talking about userContent.css, or Stylus and similar?

                                                      1. 1

                                                        Sorry for the late answer. I was talking about userContent.css.

                                                    1. 1

                                                      fantastic library called libpurple which “is intended to be the core of an IM program”

                                                      And which had as much vulnerabilities as the cheese in the author’s country. ;)

                                                      1. 3

                                                        I once heard it described as “a swarm of 0-days flying in formation”.

                                                        1. 2

                                                          Feel free to attack the docker container in which only bitlbee and libpurple run any time. Enjoy^^

                                                          1. 1

                                                            Phew. Docker is not really the best software for security isolation.

                                                        1. 7

                                                          Whatever works for you. But personally, in a work environment, the ability to use rich text and images to communicate is really useful. I use Teams and it has a lot of convenience features like code sections, different headers, and of course bold and italic.

                                                          (This is of course used by some coworkers to post “funny” GIFs all the time though…)

                                                          I’ve done my time integrating Emacs into different systems (mostly email), but after a while it takes more energy to maintain than I get out of it.

                                                          1. 10

                                                            “Whatever works for you” - that’s the spirit of the article(;

                                                            Inline images are actually supported in some IRC clients - for example ERC in Emacs. And markup like *bold* and /italic/ (or **bold** and *italic* if you prefer md) are likely understood (and used) by programmers^^

                                                            As for other convenience features, sure - use the best tool available, that’s what this post is about. You can pick and chose. And choosing a text editor for managing text seems like a reasonable choice.

                                                            As for maintaining systems in Emacs, I find it rather easy. Ever since I migrated my email there (years ago), it’s stable for the first time in my life. For example, the Uni where I teach switched from exchange to outlook 365. That was a huge change for most people and the Web UI is completely different. For me it was literally just a change of SMTP and IMAP servers - two strings in my emacs config. Then, mu4e kept chugging along.

                                                            With IRC integration, the burden of integrating the ever changing messengers it’s likely similar: Emacs and IRC stay, the messengers change. As long as Bitlbee and libpurple keep up, nothing changes. And if they don’t, just use the messenger. In any case, there’s actually nothing to integrate and maintain within Emacs since ERC is already built in.

                                                            1. 5

                                                              I’m just a cranky old dude. I’m happy you’ve found a solution that works for you.

                                                            2. 3

                                                              rich text: that’s what figlet is for

                                                              images: sixel4lyfe

                                                            1. 5

                                                              Awesome! Do you plan on supporting other backends?

                                                              1. 8

                                                                There is some interest in the community on adding other backends[1, 2].

                                                                Synchronization is build using the strategy pattern which is consumed here[3]. Implementing a new backend implies implementing 8 functions[4]. For Dropbox, it’s about 120 LOC JavaScript.

                                                                I’ll happily merge any PR enabling a different backend and support the development of it and will test it if I have access to a compatible backend.

                                                                1. https://www.reddit.com/r/emacs/comments/dn0ar3/introduction_to_organice_using_org_mode_from_a/f56zpvh/
                                                                2. https://github.com/200ok-ch/organice/issues/77
                                                                3. https://github.com/200ok-ch/organice/blob/master/src/actions/sync_backend.js
                                                                4. https://github.com/200ok-ch/organice/blob/master/src/sync_backend_clients/dropbox_sync_backend_client.js#L134-L141
                                                                1. 4

                                                                  MAJOR Update: A very kind contributor[1] has build WebDAV support today! We collaborated over the day to get the feature in quickly and I’m happy to report that it’s done!

                                                                  With WebDAV, organice can now potentially be synchronized with all kinds of back-ends - for example NextCloud, OwnCloud, Seafile or your own Nginx or Apache.

                                                                  1. https://github.com/200ok-ch/organice/pull/82
                                                                  1. 3

                                                                    Oh heck yes! Thanks for the update!!

                                                                1. 11

                                                                  I’m on strike against SLYT posts. After a web search and a look at your profile, I found the canonical repo for organice. It has a nice readme.

                                                                  1. 5

                                                                    It’s also linked in the video description. No need for me to hide the repo whilst doing a promo video^^

                                                                    After reading your comment, I also linked to it from the posts description.

                                                                    1. 2

                                                                      I’m a little put off by my first introduction to a new piece of software being a link to a video myself. That said, this video is nicely concise and has the valid purpose of demoing the software live, and it links to to text documentation, so I don’t mind too much. I currently use another piece of note-taking software that doesn’t work particularly well in a mobile browser, so I’m excited to try organice out and see if it solves my problem.

                                                                    1. 0


                                                                      When submitting a URL, the text field is optional and should only be used when additional context or explanation of the URL is needed. Commentary or opinion should be reserved for a comment, so that it can be voted on separately from the story.

                                                                      1. 5

                                                                        Dear WilhelmVonWeiner

                                                                        Thank you for the comment. I’m new to this community and therefore it is my turn to learn the rules of this community. Therefore, I’m very grateful to any hints.

                                                                        Having said this, I did read the guidelines before posting. And, from personal experience, I would claim that most people wouldn’t know what this post is about just from the title. Hence, I added some context to the submission. It’s neither commentary nor opinion. In fact, the context that I provided is verbatim the very beginning of the blog post.

                                                                        Did I go wrong in my assumption that people won’t understand with more context or with the implementation that I added context by copying the beginning of the post? Or, did I read the guidelines correctly?(;

                                                                        1. 8

                                                                          Some people prefer to have a summary or excerpt (as you did) before going to the linked article, some others do not.

                                                                          In any case, if you are quoting from the article it would be good to mark it as quoted text, by prefixing it with “> as documented in the “Markdown formatting available” link under the input box when you are composing your post.

                                                                          1. 3

                                                                            That sounds very reasonable! I’ll do that in the future. Thank you 🙏

                                                                          2. 2

                                                                            The contents of the post should stand on its own. There’s no need to summarize or repeat its content.

                                                                            The text field is appropriate if the title is, for example “I’m over the moon today!” and the actual contents refers to, for example, a long-awaited release of a software project relevant to this site. Even so, information like the domain name and the tags will give context.

                                                                          3. 3

                                                                            The text here is taken 1:1 from the article, so while an unusual use of the text field, I’d argue that it doesn’t need to be separated from the story.

                                                                            1. 4

                                                                              Plus the site has really terrible contrast and this helps. :)

                                                                              1. 3

                                                                                it’s not that unusual - it’s a fairly common practice to excerpt what you feel is the key paragraph of an article to let people know whether it’s worth their reading (and to serve as a tl;dr for people who don’t).

                                                                                1. 2

                                                                                  Since you’re the oldest user of lobste.rs with the most karma in this thread, I’m happy to hear your take on this. I’m especially happy to hear that it seems that I didn’t violate the qualitative standard on my second post(;

                                                                                  Thank you for adding your thoughts!

                                                                                2. 2

                                                                                  So what’s the point in linking an article at all?

                                                                              1. 2

                                                                                Many thanks to Alain (@munen), Phil, and others involved in putting this satellite/sister event together!

                                                                                Since the space is limited, please be sure to RSVP per the instructions in the announcement if you would like to attend.

                                                                                1. 3

                                                                                  Thank you for organicing EmacsConf @bandali and for letting us be a small part of it (^_^)/