10 ms·
Exwm – Emacs X Window Manager
- iambvk 8y agoIt has as much impact on my workflows as Magit does. If you are an Emacs user on Linux, you should give it a try.
- fxfan 8y agoYou have to tell us what you were using earlier? Magit people usually compare with stock git.
- deleted 8y ago[deleted]
- iLemming 8y agoI can share my anecdotal experience. I've used IntelliJ for about 7 years. For a long time I hesitated to switch to Emacs because IntelliJ has superb git integration. I thought Emacs simply cannot deliver same kind of experience. Oh boy - how wrong I was. Not only Magit turned out to be way more capable, but I also learned so much more about Git internals. I had no idea about so many things you can do with it. Most Git UIs are shallow and don't let you do extremely advanced stuff, like they're afraid users will be overwhelmed and perplexed. Magit doesn't lie to you, doesn't try to hide things. I simply can't imagine my life without Magit, Org-mode and (EXWM on Linux).
- CarelessSmirch 8y agoWhat does your magit workflow look like?
- platz 8y agoWhy not just run a tiling wm like i3 and use emacs 'make-frame'.
- weitzj 8y agoMy guess is “even more keyboard driven”. I am currently a happy i3/neovim/Mate User, but this looks really cool
- mbrock 8y agoWith EXWM, X windows are Emacs buffers and rendered inside of Emacs windows, so you switch between X windows the same way you switch between Emacs buffers; you use the same tiling system for both Emacs and other programs, so you don't need an extra set of key bindings, etc. It's a very nice unification.
- starpucks 8y agoDoes emacs have a common leader key set up ? I’m new to emacs
- sachdevap 8y agoIt can, and a significant part of the community uses that setup including me. You might be interested in checking 1. Spacemacs - http://spacemacs.org/ http://spacemacs.org/: A config for emacs with starter packs. They have a good collection of leader key and vim bindings. 2. evil mode and evil-leader - Well integrated standalone vim emulation and leader key. I personally started building into vim keybindings in emacs via spacemacs, and then over time created my own config with the features I needed from spacemacs (which is much more than just vim emulation). PS: Should also mention https://github.com/noctuid/general.el https://github.com/noctuid/general.el. I don't use this one, but it is pretty popular too.
- starpucks 8y agoThanks! I hopped ship from vim to emacs recently precisely because my vim setup was getting super bloated from adding hacky extensions to try to make it like an IDE. Trying to set up an ide per language in vim is an exercise in frustration. I guess I made a good choice since emacs is able to integrate an x manager (lol). The issue for me is my tmux leader is Ctrl-f and my vim Ctrl-p uses ctrl-p.. ctrl-d and ctrl-u are used in vim for page up and down. And some other nice Ctrlkeys are taken by vim as well. I will need to carry these key bindings into emacs evil mode... So Really running out of good leader keys I can use ! I started on evil-mode only. Heard about space macs but I wasn’t sure how well it could work with emacs ide-packages such as SLIME for lisp (and I will want to find emacs ides for Java, Js, Python, C, Cpp, ruby, Ocaml - any suggestions here much appreciated as well)
- nextos 8y agoI really like exwm but I currently prefer using StumpWM: https://stumpwm.github.io/ https://stumpwm.github.io/. If there was no StumpWM I'd use Exwm. Both have really similar designs, but for me StumpWM has a decisive advantage: it's implemented in Common Lisp and doesn't run inside of Emacs. Still, it has pretty good Emacs integration and many commands are Emacs-inspired. For example, there's a winner-mode equivalent. Since Emacs is not multi-threaded, if something inside Emacs freezes your whole X session will become in blocked case you run Exwm. For the same reason, it is a bit more responsive. After a decade using XMonad, I switched to StumpWM after carefully test-driving exwm and other options. I found I really prefer manual window tiling. StumpWM is really underappreciated. It's the successor of ratpoison, which kind of started the whole tiling window manager saga in Linux.
- josteink 8y agoWith StumpWM I found myself constantly wish it behaved like i3, and I never had enough time to write the CLisp code to make it do so. That said, it was neat running slime inside Emacs to connect to and reprogram the window manager Emacs was running inside, in real time. If StumpWM would get a “i3-mode” easily enabled OOB, I would probably give it another try.
- nextos 8y agoWhat behavior of i3 did you miss? I missed some aspects of XMonad and it was straightforward to set up.
- mbrock 8y agoI've been using Ratpoison and StumpWM for almost 15 years. They really hit the sweet spot for me. I don't even need to configure them, beyond changing the font and maybe adding one or two extra key bindings. I only rarely use the splitting function; mostly, I work with one window per monitor. I've worked for years on a laptop like this. Now I have two external displays and my laptop display. The main one in front of me usually shows Emacs; a vertical one on the side shows a terminal or two.
- nemoniac 8y ago
- manjana 8y agoThat is really cool! I just recently started using i3wm but miss my some features from OpenBox, this seems like it has some features of both i3wm and OpenBox. But will it work well with dmenu/i3bar i wonder?
- fovc 8y agoHow much configuration/yak shaving is required to get this or StumpWM running? I would love to set this up but am always afraid it will suck 3 days of my time
- deleted 8y ago[deleted]
- mbrock 8y agoIf your distribution packages StumpWM, it just works. I can use it very happily with zero configuration, although I do change the font.
- alalalahelp 8y agoWhat distro do you use?
- spindle 8y agoI'm not the person you're replying to, but stumpwm just works in NixOS.
- nextos 8y agoI fixed the NixOS package, it works fine now. The Arch AUR package is also fine. Lastly, you can go the Quicklisp route (which is a Common Lisp package manager, equivalent to pip or gem). That works fine too and is distribution independent.
- mbrock 8y agoCool, I’ve been using StumpWM from an old Nixpkgs tree because it was broken for some time, I guess I can upgrade it now!
- mruts 8y agoIt's not like you really have do anything but download with your package manager and add it to your .xinitrc or xsession files if you just want a vanilla experience.
- snackematician 8y agoIs it possible for emacs-exwm to run within another window manager, so that I use i3 as my main WM, but can also open X windows inside emacs? Love emacs, but I hang/tweak/break it enough that I would be scared to use it as my main WM. But it would be awesome to open R graphics inside it, a la Rstudio.
- shabble 8y agoback when I last looked, xnest[1] was the go-to for that sort of thing. It's been the best part of a decade though, so YMMV. [1] https://www.x.org/releases/X11R7.7/doc/man/man1/Xnest.1.xhtml https://www.x.org/releases/X11R7.7/doc/man/man1/Xnest.1.xhtm...
- throwamay1241 8y agoI switched to Xephyr[1] for reasons I can't remember some time ago, iirc it superseded xnest. [1] https://en.wikipedia.org/wiki/Xephyr https://en.wikipedia.org/wiki/Xephyr
- deleted 8y ago[deleted]
- alalalahelp 8y agoCan someone explain to an emacs noob what this does exactly? And how it differs from the window manager of Windows/Mac for example.
- iLemming 8y agoread my comment above https://news.ycombinator.com/item?id=19141645 https://news.ycombinator.com/item?id=19141645
- lbj 8y agoThis looks just like AWesomeWM - Only more awesome!
- JulianMorrison 8y agoNeeds a text editor, though.
- b3n 8y agoWhat's the value of the dynamic workspace support being built in to EXWM, rather than using one of the many packages which does something similar (e.g. persp-mode.el)?
- iLemming 8y agoI'm using Spacemacs and Layouts (they based on persp-mode). Either way - multi-monitor setup is a pain, but that's IMO more like X11 problem. I rarely use multiple monitors with my Linux machine though.
- gnulinux 8y agoEmacs is my favorite software (I do "basically" everything in emacs, except I also use firefox) but how is exwm a ood idea? Emacs is single threaded... How did they solve this problem?
- MultusSalus 8y agoThe answer is that they didn’t. If emacs freezes up, you just have to wait.
- iLemming 8y agoIn reality this almost never happens. Besides - it is so lightweight - killing a session and starting a new one takes seconds.
- gnulinux 8y agoNot sure what you mean? I don't use exwm but my emacs gets stuck e.g. when tramp-mode is connecting to ssh. This is not a problem for tasks I use emacs for, but if my entire OS gets stuck because I'm trying to connect a server, I'd get annoyed.
- tbe 8y agoMaybe it's less of an issue because your window manager doesn't need to connect to ssh servers or even do any kind of heavy lifting.
- emptysongglass 8y agoEXWM is great but one place it is in dire need of help is managing fullscreen applications such as videogames. Right now, those windows are unmanaged, meaning they don’t show up in your buffers. If you manage to leave the unmanaged window to check something else, it is impossible to return and you need to force kill the application in question. It is a big big problem and one that has almost driven me to leave EXWM more than once. The developer has stated this is intended behavior which is insane to me.
- molloy 8y agoI just started using exwm and was wondering about the cause of this, thanks for sharing. There should really be a way to open unmanaged windows into their own individual workspaces.
- emptysongglass 8y agoThe way to get around this, until (or if) this is ever fixed, is to first switch to a different numbered workspace than your primary then open the fullscreen app there. If you need to look something up without quitting the app you can then just use whatever keyboard shortcut you’ve assigned to your primary to switch.
- aerique 8y agoI do the same for games in StumpWM: I just switch to an unused virtual desktop. I don't really see the issue once you're used to it.
- iLemming 8y agoLet me try to explain what so awesome about this project and why I have chosen it instead of other, more popular WMs. The function of a window manager like managing windows to me is kind of secondary - more important is to have a complete keyboard-driven workflow. What this exactly means to me is the ability to manage as much possible with keeping fingers on the "home row", ideally without having to touch mouse or arrow keys at all. Is that achievable? Without having to introduce plethora of different keybindings? Yes, that's possible with modality. So for example: I want to be able to control my music volume by pressing `j` and `k`. And move windows up and down also by using `j` and `k`. And resize windows vertically, again, by `j` and `k`. And move windows across multiple monitors, and resize font in my browser, scroll up and down in my pdf viewer, etc. etc. Sounds crazy? Well, maybe. But I promise you, once you get used to it - you wouldn't want to go back to your ordinary, boring and complicated old way. My main work machine is a Mac and fortunately for OSX there's an automation tool called Hammerspoon. One day I wrote a nice config inspired by Spacemacs, so for the lack of better ideas I called it Spacehammer. You can find it here: https://github.com/agzam/spacehammer https://github.com/agzam/spacehammer. To my surprise sadly there's nothing similar to Hammerspoon exists for Linux. Initially I simply wanted something trivial: "how do I rebind `Ctrl+Tab`/`Shift+Ctrl+Tab` to `Win+J`/`Win+K` so I can switch between tabs in my browser more efficiently?". See? `j` and `k` again. Even something simple like that turned out to be difficult to achieve. And AFAIK none of the popular WMs let you do that sort of stuff. With the exception of StumpWM (formerly known as RatPoison). I wanted to try StumpWM but honestly I didn't give a heartfelt attempt to actually use it. I am still skeptical and the main reason is - CommonLisp. It is an amazing language but its popularity has declined drastically and at this point it's pretty much "Latin" of PLs. Yes, it's cool to know it but practicality of that knowledge might be a bit questionable. Learning whole new language for the sake of configuring a window manager doesn't feel very enticing to me. But at some point maybe I will give it a try. Then I found EXWM. And almost immediately regretted not trying it out sooner. It took a few days to configure it and next thing I know I wrote a plugin for it: https://github.com/agzam/exwm-edit https://github.com/agzam/exwm-edit. Yes, the project is still young and from time to time you stumble upon some rare quirks. Multimonitor setup is a pain. It doesn't support "gaps" so praised in other WMs - I personally don't care about aesthetics of my WM though. With EXWM everything simply becomes just a buffer in Emacs - your browser, Slack, pdf-viewer, music player - you name it. Because everything goes through Emacs you can create complex keybindings and "simulate" keypresses, for example: you can make `Win+W` to act like `Ctrl+W` in your browser or any other app (no context switching between Mac and Linux). It is indeed an awesome project and if you are an avid Emacsen and seasoned Linux user - I really encourage you to give it a try.