[HN Gopher] Emacs is my new window manager (2015)
___________________________________________________________________
Emacs is my new window manager (2015)
Author : gpi
Score : 210 points
Date : 2025-12-05 13:56 UTC (3 days ago)
(HTM) web link (www.howardism.org)
(TXT) w3m dump (www.howardism.org)
| dieulot wrote:
| (2015)
| https://web.archive.org/web/20150115000000*/https://www.howa...
| omnicognate wrote:
| Thanks to EXWM (not mentioned here), emacs has been my literal X
| window manager for several years. I installed it as a lark,
| thinking there's no way this will work properly, and just never
| stopped using it. It's brilliant.
| symfrog wrote:
| EXWM is great, having the same flow to manage X applications as
| for emacs buffers is a huge benefit. My only concern is if X11
| will be maintained sufficiently into the future to keep using
| it, currently there is no Wayland support in EXWM.
| noosphr wrote:
| I've moved to openbsd for this reason. It works well and I
| don't have to deal with Linux drama. Toxic slug strategy is
| really working well for them.
| karmakurtisaani wrote:
| I once read a comment here or reddit explaining that the
| X11 developers moved to Wayland because the X11 code has
| turned into an unmaintainable mess that can't be worked
| with anymore. So the reasons are not drama, but just plain
| old tech debt.
| noosphr wrote:
| Openbsd has brought in x11 into their own codebase:
| https://xenocara.org/
|
| This is why openbsd is great.
|
| I don't care about the drama that happens in Linux land
| at all.
| gh02t wrote:
| The drama was mostly over whether or not Wayland should
| have been the replacement. AFAIU, everyone agreed X11
| development was effectively unsustainable or at least at
| a dead end.
| silon42 wrote:
| Wayland is not a solution, just a name for some
| protocols... It's either KDE or Gnome (with it's weird
| quirks) or some alternative.
| gldrk wrote:
| This pre-packaged talking point is often repeated without
| evidence. The vast majority of X.org developers,
| including all of the original ones, simply moved to other
| venues at one point or another. Only a few, like Daniel
| Stone, have made contributions to both. And it shows in
| how many lessons had to be re-learned.
| sroerick wrote:
| I'm really happy with OpenBSD also. What is toxic slug
| strategy?
| Koshkin wrote:
| https://news.ycombinator.com/item?id=45794553
| omnicognate wrote:
| Emacs as a Wayland compositor has been shown to be possible.
| If we eventually get that and threading the future might be
| rather rosy.
|
| https://emacsconf.org/2022/talks/wayland/
|
| http://perma-curious.eu/repo-ewx/
| seanw444 wrote:
| > If we eventually get that and threading
|
| That's a really big ask. The entire ecosystem around Emacs
| isn't built for multithreading.
| omnicognate wrote:
| I don't mean adding threading to existing functionality,
| and I mostly wouldn't want that. I _very_ strongly prefer
| emacs ' behaviour of queueing up my input events and
| processing them deterministically regardless of how long
| it takes to get to them over eg. the JetBrains behaviour
| where something can happen asynchronously with my input
| events that can change their meaning depending on when it
| happens.
|
| What I mean is having threading capabilities available
| for things that want to (and should) use them. AIUI some
| support for that was added in emacs 26, so it might
| already be good enough.
|
| The relevance is that EXWM is single threaded, so the
| window management blocks when emacs does. I don't find
| that much of a problem with EXWM but I doubt it would fly
| for a Wayland compositor, though perhaps the separate
| server used in that emacsconf talk sidesteps the problem.
| kkfx wrote:
| Me too. Only having issues with floating windows so far.
| timeforcomputer wrote:
| You can also use EXWM in Xephyr, so you can have an emacs
| window with its own controlled windows instead of replacing the
| whole DE/window-manager. I suppose this doesn't work with
| multiple frames though.
|
| I have been experimenting with xdotool windowmap/windowunmap
| and override_redirect (and maybe LD_PRELOAD?) to try get
| something like EXWM to work without creating another X server,
| by capturing windows. I'm doing this in vim though.
|
| By the way, neovim has an apparently working EXWM-like plugin,
| NXWM/nwm: https://github.com/altermo/nwm
| rsync wrote:
| Hmm ... I used ratpoison 25 years ago ... is it
| current/maintained ?
|
| Is there a live release/support/discussion ecosystem for
| ratpoison in 2025 ?
| cess11 wrote:
| It was released 25 years and four days ago, and is still
| around. Simple enough to still work I'd bet, though the last
| official release was in 2017 or so.
|
| https://www.nongnu.org/ratpoison/
|
| http://savannah.nongnu.org/projects/ratpoison
|
| I used it for a while back then, before switching to IceWM
| because it was more fun to configure. Prepared me well for a
| much later move to i3.
| moirre wrote:
| A quick google search reveals a lot of (4 years old) youtube
| videos about it. And although not very meaningful, it's
| archwiki page was updated a lot in the past 4 years, which
| means there are still people visiting that page and potentially
| using it. I've also seen some recent ratpoison rices on the
| internet.
|
| For support, I'm sure the users in the past has generated
| enough forum threads for you.
| roryrjb wrote:
| Ratpoison was always my favourite tiling window manager.
| There's also a fork called sdorfehs[0] which seems to still be
| maintained and has a bunch of minor improvements here and
| there.
|
| 0. https://github.com/jcs/sdorfehs
| iLemming wrote:
| IIRC StumpWM authors thought of it as a [ideological] successor
| of ratpoison, no?
| tmtvl wrote:
| Shawn Betts, the driving force behind StumpWM was also one of
| the primary developers of ratpoison, according to Wikipedia:
| <https://en.wikipedia.org/wiki/Ratpoison>
| patrick4urcloud wrote:
| you can do the same with https://omarchy.org/
| uxcolumbo wrote:
| It looked good at the beginning, but then I found out about its
| creator - DHH. Not someone I want to support. There are better
| distros out there (Omarchy isn't a distro btw).
|
| Just a few issues highlighted here:
|
| https://jakelazaroff.com/words/dhh-is-way-worse-than-i-thoug...
|
| https://davidcel.is/articles/rails-needs-new-governance
|
| https://paulbjensen.co.uk/2025/09/17/on-dhhs-as-i-remember-l...
| philipallstar wrote:
| Then don't support him, whatever that means.
| BoredPositron wrote:
| Recommendation makes 0 sense in context.
| batrat wrote:
| Me: Open browser full screen, vscode selfhosted, termix,
| tacticalrmm/guacamole. Nowadays I only need a browser.
| defraudbah wrote:
| lol, another side of the spectrum nice setup
| finaard wrote:
| Nowadays there's eat as excellent terminal emulator for emacs,
| which should replace the need to run external terminals.
|
| I've been using it for a w while, and recently finally got fed up
| about terminals on my macbook not behaving as nicely as the ones
| on my linux box with proper tiling window managers, so spent some
| effort to make SSH into a terminal with completion easy from
| emacs, and now mostly handle terminals in emacs.
| volemo wrote:
| Thanks for the recommendation!
| finaard wrote:
| Also check out the pull requests on that repo if there's
| something useful - in my case I've been using eat as single
| terminal instance for a while now - but for replacing stand
| alone terminals just opening multiple instances via multi-sh
| or similar isn't really helping for finding the terminals
| again. My solution was patching eat to allow buffer renames
| to the terminal title, and for ssh sessions, initially set
| the terminal title to the host I'm connecting to. Now I can
| easily find the terminals when switching buffers.
|
| On top of that I'm using eyebrowse to have multiple
| workspaces, and some hooks around buffer switching that
| switch to the workspace a buffer is on instead modifying the
| current workspace.
| qyrhx wrote:
| tmux?
| kccqzy wrote:
| I use vterm which I believe prides itself for being the fastest
| terminal emulator inside Emacs. The eat README says 1.5 times
| faster than eat.
|
| This matters a lot to me because the proprietary build/test
| tool at work likes to dump the stack trace for every failing
| unit test.
| ElevenLathe wrote:
| I've been an ansi-term user for years (at least on unices,
| including Cygwin -- if I am forced to use vanilla w32 emacs
| without a *nix underneath, I will use eshell since I can do
| more in elisp-land without relying on the shitshow of Windows
| CLI utils). What are the benefits of eat vs ansi-term, in your
| opinion?
| skydhash wrote:
| A few QoL of life commands and better handling of now common
| escape sequences.
| mkesper wrote:
| With Debian as VM this would probably much leaner. Was shocked
| about current Ubuntu image sizes. E.g. no need to have to
| download about 500MB of firmware packages with each new kernel.
| prmoustache wrote:
| > I do not install personal software
|
| To the eyes of his employer installing a personal VM is probably
| exactly the same.
| calgoo wrote:
| The only issue I have had installing VMs on work machines in 20
| years of corporate jobs, is licensing questions. Once you prove
| your licensing is fine then they don't care anynore.
| ejflick wrote:
| Was just looking at this article yesterday and it inspired me to
| try it myself. Trying it out today, my fingers became really sore
| from trying to navigate. Can't imagine using this for a modern
| development workflow where there's a lot of jumping around. To
| make it more ergonomic, I'd just be recreating configuration
| other window managers give me out of the box.
|
| The author mentions in the footnotes he mostly uses this setup
| for note taking. That makes sense as he probably remains in one
| window for extended periods of time.
| JanisErdmanis wrote:
| I map the arrow keys for switching windows which works quite
| well for me.
| mgd wrote:
| Been a happy EXWM user for a few years now. Really impressed that
| it comes as a desktop option for GUIX.
|
| GUIX, EXWM, and Emacs are home for now :)
| lsth wrote:
| There is a third option besides replacing your window manager
| with EXWM or a simpler tiling window manager: to manage desktop
| windows from within Emacs using your existing X11 window manager
| or Wayland compositor. This means - you can position and resize
| all desktop windows, - you can switch between Emacs and desktop
| windows by moving to the left, right, up, down window and - you
| can switch back and forth between a named desktop app like
| Firefox, okular etc. and Emacs.
|
| You need to install just the Emacs package Emacs Desktop Window
| Manager (dwin) https://github.com/lsth/dwin, for example from
| MELPA. Currently it works with X11 window managers as well as
| with KDE/KWin on Wayland or X11 (using xdotool and kdotool,
| resp.). I am using it all day myself on KDE/KWin Wayland in my
| standard setup and there it works fine.
|
| (I am the author.)
| inatreecrown2 wrote:
| do you by chance know of a similar tool but for vim?
| jmclnx wrote:
| AFAIK, not yet. Give it time, seems vim is heading to
| becoming a similar Operating System to what Emacs is now :)
| lionkor wrote:
| This reminds me of "Emacs as PID 1" from a decade ago, to which I
| sadly cannot find a link anymore
| Fnoord wrote:
| I knew someone who ran it with inittab about 3 decades ago, and
| I very much doubt they were the only one. Emacs could be used
| as a full-blown OS long ago. It just depends on your needs.
|
| Also, the psychotherapist was one of a kind ;)
|
| Personally, I could live with tmux or zellij as PID 1. Because
| from there I can do everything, except GUI. Might as well use
| Sway then to achieve virtually the same.
| lionsdan wrote:
| I think this may be it (or something similar).
|
| https://web.archive.org/web/20041030060909/http://www.inform...
| kahirsch wrote:
| http://web.archive.org/web/20070320003919/www.informatimago....
|
| http://informatimago.free.fr/i/linux/emacs-on-user-mode-linu...
| ramon156 wrote:
| Last time I tried I felt like an old fart using emacs. None of
| the keys felt natural
|
| That said, i did not give it a fair shot. Does anyone have any
| good resources to get started? E.g lazygit has a good 15min vid
| to get u up to speed
| chimprich wrote:
| I felt like that when I started using Emacs, about 25 years
| ago. It turned out to be worth it, though.
|
| Emacs has its own tutorial (Help -> tutorial from the menus),
| which is a pretty good introduction. Learning to get help from
| Emacs itself is a bit of a learning curve, but really
| beneficial.
|
| Learning to the use the help tools properly was something I
| didn't get around to for years, but I wish I had sooner.
| massysett wrote:
| Emacs says it is "self-documenting."
|
| Years ago it was remarkable for software to have docs built-
| in as Emacs does.
|
| Then for many years it was standard for software to have help
| files, and it seemed anachronistic for Emacs to loudly
| proclaim it is self-documenting.
|
| Now in the Web and LLM age, much software doesn't even try to
| have built-in help or even much documentation, and it's again
| remarkable that Emacs is self-documenting, especially the
| part of Emacs that users can program.
| mschaef wrote:
| > Then for many years it was standard for software to have
| help files, and it seemed anachronistic for Emacs to loudly
| proclaim it is self-documenting.
|
| Emacs' notion of self documentation refers to something
| slightly different than the fact it has online help files.
| The help facilities can query the Lisp runtime for things
| like functions and keybindings. These update dynamically as
| the system is reconfigured. The result is something that
| isn't quite as cleanly presented as an online help
| document, but has the benefit of being deeply integrated
| into how the system is actually configured to behave at the
| moment. Very cool, and very much dependent on the open
| source nature of emacs.
| skydhash wrote:
| Everything in Emacs exists under the "M-x" keybind (M stands
| for Meta which is usually Alt on linux and Option on macOS).
| Because everything you can do is a command (which are just
| normal functions that have been annotated). Then you have
| bindings to directly execute those functions instead of going
| through a prompt.
|
| There's some terminology to learn to make sense of the
| commands. And the default keybindings are also useful to learn
| (and you can find them in anything that uses the readline
| library and equivalent: Bash, zsh, psql,.... You can also find
| them in macOS text widgets).
|
| But the thing is that Emacs have a lot of commands. They are
| assembled into packages and due to the nature of Elisp, can be
| edited and patched live. While it easy to get started (videos
| on youtube, the emacs documentation, the "Mastering Emacs"
| book), After a while, you config can become alien to anyone
| else. But it will stay discoverable as Emacs have a great help
| system.
| cmrdporcupine wrote:
| You could try cua-mode, which binds keys to more typical
| windows/mac/cua contemporary bindings.
| ajross wrote:
| > None of the keys felt natural
|
| The key bindings are sort of the least impactful idea behind
| the editor. The defaults are indeed ancient and opinionated,
| and don't match well with what other environments ended up
| adopting. They do work well for the most part if you want to
| take the time to learn them, though. But everyone has their own
| set of customizations[1], usually going along with a preferred
| set of physical key remappings[2]. Lots of folks use modes like
| Evil to get vi bindings, etc...
|
| The point is to think hard about how you use the editor and
| start working on making the editor work the way you need it to.
| Binding fluency will fall out naturally.
|
| [1] For myself, I'm mostly default. But for example I dislike
| the defaults for C-t and C-z which IMHO are footguns, and remap
| those to "top/end of buffer", functions I do use a lot and
| whose defaults are clumsy.
|
| [2] Ctrl to the left of A, obviously. But also the key below
| '/' really wants to be Meta and not whatever else the
| manufacturer put there.
| iLemming wrote:
| > lazygit has a good 15min vid to get u up to speed
|
| Doom Emacs install from scratch takes less than that.
| dillydogg wrote:
| I think the most straightforward way to a solid Emacs config is
| to use emacs-bedrock [1]. It's a very well curated set of
| packages that enhance the basic experience. It does leave you
| with plenty of room to fiddle, which is the beauty of Emacs to
| my mind. I personally use doom because I built my config on it
| for years, and am happy with my current setup, but if I started
| again I would go with emacs-bedrock to keep it more minimal.
|
| [1] https://codeberg.org/ashton314/emacs-bedrock
| SoftTalker wrote:
| Emacs has a built-in tutorial, have you tried that?
| tarruda wrote:
| A VM is displayed as a window on the host OS and Emacs is the
| window manager within that VM window. What's the difference from
| running emacs directly as an application on the host?
| aaaaaaron wrote:
| "However, I also don't like to carry two computers just to jot
| down personal notes. My remedy is to install a virtualization
| system and create a "personal" virtual machine."
|
| I have the same problem, but I'm not sure if a VM is a good
| solution. The work OS has full access to the VM and I don't trust
| putting my personal things even in the VM. (I consider the work
| laptop backdoored and full with spyware.)
| abc123abc123 wrote:
| Why bother with a VM? When I'm in that situation, I just run my
| stuff in the cloud and ssh to my machine, alternatively, ssh to
| my machine at home. Much more minimalist and light weight than
| a VM as long as your customer allows outgoing ssh and/or
| connections to a tor/i2p hidden service.
| basscomm wrote:
| If I'm just jotting down personal notes, I use a pen and a
| notepad. If I need to transcribe anything into my long-term
| notes, then I can do that at the end of the day/week/whatever,
| when I review what I wrote down.
| ainiriand wrote:
| Sometimes you just enjoy hard mode.
| 0xcb0 wrote:
| Active exwm user here: I've been using EXWM for one ~1,5-2 years
| now, and I've configured it pretty much the same way I would love
| to have the ideal desktop to look like. Minimal, clean, mostly 1
| app to focus on, and only 6 virtual desktops I really use.
|
| I struggled quite a bit with the xinit ath the start, and I had
| to switch to other terminals to get back to any UI. But now I
| have a pretty consistently well-running EXWM, only from time to
| time (once a month) it freezes. Most of the time, because I
| quickly want to do sth. Mess up pressing multiple wrong key
| combinations and am stuck with a frozen ui :D For login I use
| lightdm, that will then load emacs.
|
| What my key pain points still are:
|
| - char and line mode Switching between them is easy, but having
| different modes, in different buffers can still sometimes mess up
| with my keys. Esp. when pressing Ctrl-q for escaping, just to
| realize that this is in line mode, and closing the window,
| instead of staring a actual sequence, like C-q C-y. Also, when
| coing through my buffer list, while having the preview active. So
| in buffer list, use C-n, and when the preview then shows a
| buffer, that is in line mode, that will capture the focus, and
| the next C-n will be send to the buffer, instead of the buffer
| list. Leaving me with a open buffer list in the minibuffer, that
| I have to manually close.
|
| - some webpages e.g. payment providers open up a popup for
| confirming. From time to time, this popup is - in the background
| somehwhere - or floating - or not findable at all, even in my
| buffer list This is rare, but it happens. And when it happens,
| it's very annoying to interact with it
|
| - when altering my emacs init config, and rebooting, and I messed
| things up. Then there is no way other than switching to tty1 and
| roll back the changes. Though I guess I could change that,
| through having some kind of check before saving.
|
| - Not a pain point, but I still haven't gotten to the part of
| using it with multiple monitors. Looking at the config I always
| say that "I'll do it soon" >D
|
| But overall happy! And thanks to howardism.org for all the
| wonderfull great emacs write-ups he has. My all time fav. is
| still the Literate DevOps article, to which I came back often in
| the past. And now that I think about it, I should re-read it!
| Thanks Howard!
| uint32_t wrote:
| >consistently well-running
|
| >only from time to time (once a month) it freezes
|
| I'm not trying to call you out personally as I've said and
| thought similarly in the past but truly what an indictment on
| the state of software that your whole desktop freezing once a
| month is considered ok and running consistently
| SoftTalker wrote:
| I mean most people accepted multiple crashes or system
| freezes per day back in the Windows 3 and MacOS 7 era.
|
| I'm still someone who powers off his computer when I'm done
| with it for the day so I almost never get crashes or freezes.
| ecares wrote:
| cool, now, when will emacs get a good text editor?
| tmtvl wrote:
| My Emacs came with a good text editor out of the box. If yours
| doesn't you may have one of those terrible configurations which
| uses Evil.
| throwaway613745 wrote:
| Next Month: Emacs is my new operating system.
| MarsIronPI wrote:
| Well, if by "operating system" you mean "the layer of the
| computer that runs my applications" then I'm already there. ;)
| EXWM + Gnus + misc. other Emacs-based apps FTW.
|
| In all seriousness though, I've used two different machines and
| three different distros with my current setup on top and it all
| feels the same. I didn't even notice in my daily interactions
| with the system.
| iLemming wrote:
| Having a Lisp system to control your WM/compositor is amazingly
| empowering, being able to just write some expressions in a buffer
| and evaluate them on the fly to command windows, apps,
| keybindings, various settings from sound and display (e.g., color
| temp) to bluetooth, etc. is crazy awesome.
|
| Once you have that taste of freedom - there's no going back. The
| traditional way of "write, save, reload/restart" would feel so
| clunky, annoying and stupid.
|
| And you can absolutely do this as long your WM supports some kind
| of IPC. I'm slowly building my Hyprland config in Clojure using
| babashka. I wish I could share it publicly, but it's still in
| early experimental stage - too messy, too opinionated, there are
| some bugs, and I still may decide to switch to Janet, CL, nbb or
| some other Lisp option, I'm glad we have numerous options to
| choose from.
| colordrops wrote:
| What are some things you are doing with this capability?
| tra3 wrote:
| Automated behaviours like forcing windows to different
| virtual desktops, modifying windowing behaviour dynamically.
| Some windows are automatically tiled and others float, etc.
| iLemming wrote:
| Like I said: "writing my WM config".
|
| So, for example, I would write in my editor an expression to
| get the list of windows on the current display, then I can
| immediately map/filter through them, group, sort, read any
| parameters, etc. Then without missing a beat I can apply some
| transformations - programmatically move any window, resize,
| etc; on the fly, like playing a fucking video game.
|
| Compare that to "more traditional" approach of issuing
| commands, then piping them to jq or something, then figuring
| out where the stuff is, then writing that into a file, then
| having your WM to pick up those changes, often you'd
| completely lose the state, then you'd have to go back to the
| script files, etc. I, don't have to save anything anywhere
| until I'm sure that shit works - I simply eval things on the
| go - I can "touch, grab and interact" with entities
| immediately after querying their info, there's no physical,
| mental or contextual separation here - I don't have to write
| something in the terminal, then something in one of my
| scripts, some parts in some other file, etc. - everything
| controlled directly from my editor.
|
| Here's more practical example. Hyprland has something called
| Hyprsunset to deal with color temp and gamma. I wrote an
| extension that changes display color temp based on time of
| day - it's a simple clojure.core/async go loop, it reads from
| a hashmap where specific hours map to temperatures and then
| checks every 10 minutes; if it's time to apply new color, it
| does. That took me just a few minutes to whip out with a
| connected Lisp REPL. I'm pretty sure, it would've taken me
| far longer without it. The way how the "true" REPLs work
| (which e.g., Python one is not) simply is shockingly crazy
| awesome for rapid prototyping. Why more programmers don't do
| this is a complete mystery to me - getting into Lisp is not
| even that difficult, Clojure for example is far more simpler
| and more straightforward than even Javascript and Python.
| These days, you don't even need to know Emacs - install Calva
| for VSCode - that's all you need, it has quickstart guide and
| all.
| whalesalad wrote:
| How did I immediately know that this person would be a Clojure
| developer
___________________________________________________________________
(page generated 2025-12-08 23:01 UTC)