I'm not sure how best to start doing this, but the branch over at
timor:spacemacsOS has moved ahead a bit. I've grown used to a lot of these
changes, and would like to see them moved to the main develop branch. But, the
pull request (formed by merging in CestDiego:spacemacs/SpacemacsOS in #3321)
started diverging.
Again, I'm not sure how to approach moving together these two changes. Maybe
@timor can help somehow??
This at the least moves in some little things from Timor's branch:
- Can enable exwm-systemtray with `exwm-enable-systray`
- Can enable running XDG autostart applications (only in XDG_USER_HOME/autostart
for now) with `exwm-autostart-xdg-applications`
- Support for reading `.desktop` files and XDG autostart.
- Can specify additional code appended to exwm-init hook with `exwm-custom-init`
---
This PR also fixed some other existing issues, and improved documentation.
Co-authored-by: timor <timor.dd@googlemail.com>
Co-authored-by: Benjamin Yang <be11ng@users.noreply.github.com>
* Add Emacs Window Manager (EXWM) Layer
The time has come of SpacemacsOS
* set window manager name to EXWM
* update copyright notice
* start server when EXWM is active
When using EXWM, Emacs should be ready to receive clients but the final choice
should be the user's in their shell configuration.
* respect Spacemacs naming conventions and layer organization
* leave keyboard remapping to users
* add EXWM states for Evil
* add support for helm-exwm when helm is in use
* use both exwm-randr and exwm-systemtray
* set up workspaces to match displays by default
* use ido-config instead of the deprecated workaround
When using helm-exwm, its sources distinguish title and class automatically. It
is only necessary to keep the buffer name updated when the window title changes.
When using ido, rename differently for different applications.
* add bindings for common X keys
* use standard prefix commands where available
Spacemacs already has prefix commands for controlling windows.
These are directly available in exwm-state as well as in exwm-insert-state
through leader
* remove most keybindings as they are available directly in exwm-state
* enable exwm directly in the layer configuration
It is safe to enable it here as an existing window manager will simply fail with
a warning.
* add user-configurable variables for RandR and workspaces
By default, create as many workspaces as there are displays and assign them in
RandR order.
* fix naming convention for variables
* use helm for launching applications when possible
* fix conditional helm-exwm leader keys
* remove redundant function
EXWM provides the equivalent
* conform to naming convention for Spacemacs
* separate prefix commands into those for major mode and global
* remove all default bindings
* improve readability
* clean up bindings
* remove obsolete comments
Co-authored-by: M. Domenzain <luis.domenzain@parrot.com>