Take a look at new Desktop.org file. We have to update auto-tangle hook to accomodate this:
;; Automatically tangle our Emacs.org config file when we save it
(defun efs/org-babel-tangle-config ()
(when (string-equal (file-name-directory (buffer-file-name))
(expand-file-name "~/.emacs.d/"))
;; Dynamic scoping to the rescue
(let ((org-confirm-babel-evaluate nil))
(org-babel-tangle))))
Only load desktop.el when EXWM is needed in start-exwm.sh
:
exec dbus-launch --exit-with-session emacs -mm --debug-init -l ~/.emacs.d/desktop.el
Use exwm-init-hook
:
(defun efs/run-in-background (command)
(let ((command-parts (split-string command "[ ]+")))
(apply #'call-process `(,(car command-parts) nil 0 nil ,@(cdr command-parts)))))
(defun dw/exwm-init-hook ()
;; Make workspace 1 be the one where we land at startup
(exwm-workspace-switch-create 1)
;; Open eshell by default
;;(eshell)
;; Launch apps that will run in the background
(efs/run-in-background "nm-applet"))
In use-package exwm
:
;; When EXWM finishes initialization, do some extra setup
(add-hook 'exwm-init-hook #'efs/after-exwm-init)
Install and run Compton:
sudo apt install compton
compton &
There’s a newer program called Picom for this purpose, but it may not be in all Linux distributions. Compton is pretty universal.
Install and run feh:
sudo apt install feh
feh --bg-scale /usr/share/backgrounds/matt-mcnulty-nyc-2nd-ave.jpg
Set frame transparency and maximize windows by default.
;; Set frame transparency
(set-frame-parameter (selected-frame) 'alpha '(90 . 90))
(add-to-list 'default-frame-alist '(alpha . (90 . 90)))
(set-frame-parameter (selected-frame) 'fullscreen 'maximized)
(add-to-list 'default-frame-alist '(fullscreen . maximized))
Add to your configuration early in EXWM setup:
(defun efs/set-wallpaper ()
(interactive)
(start-process-shell-command
"feh" nil "feh --bg-scale /usr/share/backgrounds/matt-mcnulty-nyc-2nd-ave.jpg"))
Run this function after running xrandr
to make sure it stretches to screen size!
;; Set the wallpaper after setting screen resolution
(efs/set-wallpaper)
In start-exwm.sh:
# Enable screen compositing
compton &
Use the desktop-environment
package!
https://github.com/DamienCassou/desktop-environment
(use-package desktop-environment
:after exwm
:config (desktop-environment-mode)
:custom
(desktop-environment-brightness-small-increment "2%+")
(desktop-environment-brightness-small-decrement "2%-")
(desktop-environment-brightness-normal-increment "5%+")
(desktop-environment-brightness-normal-decrement "5%-"))
Make sure to install dependencies:
sudo apt install scrot brightnessctl playerctl
Tray apps like blueman and pasystray:
sudo apt install blueman pasystray pavucontrol
(efs/run-in-background "pavucontrol"))
(efs/run-in-background "blueman-applet"))
Make sure to add exwm-systemtray-height
to make sure icons appear!
(setq exwm-systemtray-height 32)
Battery and time display:
;; Show battery status in the mode line
(display-battery-mode 1)
;; Show the time and date in modeline
(setq display-time-day-and-date t)
(display-time-mode 1)
;; Also take a look at display-time-format and format-time-string
Use counsel-linux-app!
In your use-package counsel:
:custom
(counsel-linux-app-format-function #'counsel-linux-app-format-function-name-only)
In your EXWM config:
(exwm-input-set-key (kbd "s-SPC") 'counsel-linux-app)
(exwm-input-set-key (kbd "s-f") 'exwm-layout-toggle-fullscreen)
Use slock
and xss-lock
!
sudo apt install slock xss-lock
Add this to start-exwm.sh
:
# Enable screen locking on suspend
xss-lock -- slock &