106 lines
5.2 KiB
Org Mode
106 lines
5.2 KiB
Org Mode
#+TITLE: EXWM layer
|
|
|
|
#+TAGS: layer|tool
|
|
|
|
[[file:img/spacemacsOS.jpg]]
|
|
|
|
* Table of Contents :TOC_5_gh:noexport:
|
|
- [[#description][Description]]
|
|
- [[#features][Features:]]
|
|
- [[#install][Install]]
|
|
- [[#note-about-display-managers][Note about Display Managers]]
|
|
- [[#not-having-display-managers][Not having Display Managers]]
|
|
- [[#osx][OSX]]
|
|
- [[#system-tray-integratios][System Tray Integratios]]
|
|
- [[#xdg-autostart][XDG Autostart]]
|
|
- [[#key-bindings][Key bindings]]
|
|
|
|
* Description
|
|
The time has arrived when one can finally use Emacs as a Window Manager, long
|
|
ago the concepts of *windows* and *frames* made so much sense when one was
|
|
working in a TTY, and basically that's all the window management you got. In
|
|
these *modern* times though, it sounds silly to have those names. But not
|
|
Anymore!
|
|
|
|
Thanks to @ch11ng and his [[https://github.com/ch11ng/exwm][EXWM]] project we can now use Emacs as our window
|
|
manager, and all those *windows* that didn't make sense before, now can not only
|
|
hold buffers, but X Windows, that means that you can spawn a Browser Window, or
|
|
your music player, or anything.
|
|
|
|
I urge you to read the [[https://github.com/ch11ng/exwm/wiki][EXWM Wiki]] for a more in depth explanation and if you can
|
|
contribute, please do so! The purpose of me making this layer is that I find it
|
|
awesome and having nice defaults would make more people dive into it and the
|
|
project would receive more attention and contributions which will only make it
|
|
more awesome, so if you try it and like it, share it!
|
|
|
|
** Features:
|
|
- Support for using Spacemacs as window manager
|
|
|
|
* Install
|
|
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
|
|
add =exwm= to the existing =dotspacemacs-configuration-layers= list in this
|
|
file.
|
|
|
|
** Note about Display Managers
|
|
This is most common among Ubuntu and derivative users:
|
|
|
|
LightDM, GDM, and other Display managers that need a session file will need you
|
|
to copy the [[file:files/exwm.desktop][desktop file]] I bundled with this layer to
|
|
~/usr/local/xsessions/exwm.desktop~, that's what I used on my Ubuntu box, but
|
|
make sure the [[file:files/exwm-start][exwm-start script]] is in your PATH, you can put it in
|
|
~/usr/local/bin/exwm-start~ and that should be enough, next time you log out,
|
|
select the EXWM session instead of the Ubuntu one and you should be alright.
|
|
|
|
** Not having Display Managers
|
|
If you use Arch, Gentoo, or any other Linux, most probably you'll start your
|
|
configurations via a ~.xinitrc~ file, just append ~exwm-start~ to the end of
|
|
that file and you should be fine. I do recommend to check the [[https://github.com/ch11ng/exwm/wiki][EXWM Wiki]] for more
|
|
details.
|
|
|
|
** OSX
|
|
If you are an OSX user, please report back on whether this works with xQuartz,
|
|
always back up your data before attempting to try stuff like this.
|
|
|
|
** System Tray Integratios
|
|
To enable system tray integration, set =exwm-enable-systray= to =t=.
|
|
|
|
** XDG Autostart
|
|
If =exwm-autostart-xdg-applications= is non-nil, =.desktop= files in
|
|
=$XDG_CONFIG_HOME/autostart= and =XDG_CONFIG_DIRS= will be used to run applications at
|
|
startup. (See [[https://specifications.freedesktop.org/autostart-spec/autostart-spec-latest.html][Specification]] for details).
|
|
|
|
For the purpose of controlling whether an entry should be run under SpacemacsOS,
|
|
the =OnlyShowIn= and =NotShotIn= keys are checked for the string =EXWM=.
|
|
|
|
This is disabled per default.
|
|
|
|
* Key bindings
|
|
As other window managers the ~s~ or *Super* key (Windows Key) is the one that
|
|
is the prefix to every action. We'll use a lot of ~s~.
|
|
|
|
I have, for convenience, disabled the use of ~C-x~ and ~C-c~ in X windows,
|
|
mainly because that's something we could use for Cutting and Copying text, but if
|
|
you want you can enable it, this layer focuses on less Emacs-y bindings.
|
|
|
|
| Key binding | Description |
|
|
|-----------------------+------------------------------------------------|
|
|
| ~C-q~ | Send next key pressed to the X window |
|
|
| ~C-g~ | Universal GetMeOuttaHere Key from Emacs |
|
|
| ~C-u~ | Universal Argument |
|
|
| ~C-[0-9]~ | Universal Prefix for [0-9] |
|
|
| ~M-m~ | Spacemacs Leader Key |
|
|
| ~s-[1 2 3 ... 8 9 0]~ | Switch to workspace [1 2 3 ... 8 9 10] |
|
|
| ~s-TAB~ | Switch to last workspace |
|
|
| ~s-w~ | Workspace Switch Menu (kinda like micro-state) |
|
|
| ~s-r~ | Reset window state |
|
|
| ~s-SPC~ | App Launcher |
|
|
| ~s-ESC~ | Lock Screen |
|
|
| ~s-RET~ | Pop shell |
|
|
| ~s-:~ and ~s-;~ | Helm M-x (same as ~SPC :~) |
|
|
| ~s-u,U~ | Undo, Redo window configurations |
|
|
| ~s-b~ | Show all opened buffers |
|
|
| ~s-h,j,k,l~ | Switch to left,lower,upper,right window |
|
|
| ~s-H,J,K,L~ | Move window to far left,down,lower,upper,right |
|
|
| ~M-s-h,j,k,l~ | Resizing (try them, it's too hard to explain) |
|
|
| ~s-[,]~ | Switch to prev,next workspace |
|