55fe4b48efaca3d851bfcc35292bb652a50c6614
commit 55fe4b48efaca3d851bfcc35292bb652a50c6614
Author: Simon Watson <spw01@protonmail.com>
Date: Tue Jul 13 15:38:10 2021 -0400

Finalized exwm config (I hope)

diff --git a/emacs/.emacs-all b/emacs/.emacs-all
index d91f071..6ffd629 100644
--- a/emacs/.emacs-all
+++ b/emacs/.emacs-all
@@ -38,6 +38,7 @@
(straight-use-package 'rainbow-delimiters)
(straight-use-package 'focus)
(straight-use-package 'exwm)
+(straight-use-package 'solarized-theme)

;; Configure focus
(require 'focus)
@@ -203,7 +204,7 @@

(setq visible-bell 1)
(load "~/Repos/dotfiles/emacs/linux-load/customs.el")
- (load-theme 'leuven t))))
+ (load-theme 'solarized-light t))))

;; Load for Term
(unless (display-graphic-p)
diff --git a/emacs/linux-load/customs.el b/emacs/linux-load/customs.el
index d9e0e99..2a6aa4c 100644
--- a/emacs/linux-load/customs.el
+++ b/emacs/linux-load/customs.el
@@ -4,12 +4,12 @@
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(custom-safe-themes
- '("01106ca9b4446341ecb86a76b9db48f1100e2eb13980aa0ec6f6adf8e69fd9a7" default))
+ '("2809bcb77ad21312897b541134981282dc455ccd7c14d74cc333b6e549b824f3" "c433c87bd4b64b8ba9890e8ed64597ea0f8eb0396f4c9a9e01bd20a04d15d358" "0fffa9669425ff140ff2ae8568c7719705ef33b7a927a0ba7c5e2ffcfac09b75" "01106ca9b4446341ecb86a76b9db48f1100e2eb13980aa0ec6f6adf8e69fd9a7" default))
'(display-time-mode t)
+ '(frame-background-mode 'dark))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(default ((t (:family "Gohu GohuFont" :foundry "UNKN" :slant normal :weight normal :height 83 :width normal)))))
-
diff --git a/emacs/linux-load/exwm-config.el b/emacs/linux-load/exwm-config.el
new file mode 100644
index 0000000..8589aa7
--- /dev/null
+++ b/emacs/linux-load/exwm-config.el
@@ -0,0 +1,110 @@
+(require 'exwm)
+(require 'ido)
+
+(define-obsolete-function-alias 'exwm-config-default
+ #'exwm-config-example "27.1")
+
+(defun exwm-config-spw ()
+ "Default configuration of EXWM."
+ ;; Set the initial workspace number.
+ (unless (get 'exwm-workspace-number 'saved-value)
+ (setq exwm-workspace-number 4))
+ ;; Make class name the buffer name
+ (add-hook 'exwm-update-class-hook
+ (lambda ()
+ (exwm-workspace-rename-buffer exwm-class-name)))
+ ;; Global keybindings.
+ (unless (get 'exwm-input-global-keys 'saved-value)
+ (setq exwm-input-global-keys
+ `(
+ ;; 's-r': Reset (to line-mode).
+ ([?\s-r] . exwm-reset)
+ ;; 's-w': Switch workspace.
+ ([?\s-w] . exwm-workspace-switch)
+ ;; 's-&': Launch application.
+ ([?\s-&] . (lambda (command)
+ (interactive (list (read-shell-command "$ ")))
+ (start-process-shell-command command nil command)))
+ ;; 's-N': Switch to certain workspace.
+ ,@(mapcar (lambda (i)
+ `(,(kbd (format "s-%d" i)) .
+ (lambda ()
+ (interactive)
+ (exwm-workspace-switch-create ,i))))
+ (number-sequence 0 9)))))
+ ;; Line-editing shortcuts
+ (unless (get 'exwm-input-simulation-keys 'saved-value)
+ (setq exwm-input-simulation-keys
+ '(([?\C-b] . [left])
+ ([?\C-f] . [right])
+ ([?\C-p] . [up])
+ ([?\C-n] . [down])
+ ([?\C-a] . [home])
+ ([?\C-e] . [end])
+ ([?\M-v] . [prior])
+ ([?\C-v] . [next])
+ ([?\C-d] . [delete])
+ ([?\C-k] . [S-end delete]))))
+
+ (require 'exwm-randr)
+ (setq exwm-randr-workspace-output-plist
+ '(0 "DisplayPort-0" 1 "DVI-0"))
+ (add-hook 'exwm-randr-screen-change-hook
+ (lambda ()
+ (start-process-shell-command
+ "xrandr" nil "xrandr --output DisplayPort-0 --below DVI-0 --auto")))
+ (exwm-randr-enable)
+
+ ;; Enable EXWM
+ (exwm-enable)
+ ;; Configure Ido
+ (exwm-config-ido)
+ ;; Other configurations
+ (exwm-config-misc))
+
+(defun exwm-config--fix/ido-buffer-window-other-frame ()
+ "Fix `ido-buffer-window-other-frame'."
+ (defalias 'exwm-config-ido-buffer-window-other-frame
+ (symbol-function #'ido-buffer-window-other-frame))
+ (defun ido-buffer-window-other-frame (buffer)
+ "This is a version redefined by EXWM.
+You can find the original one at `exwm-config-ido-buffer-window-other-frame'."
+ (with-current-buffer (window-buffer (selected-window))
+ (if (and (derived-mode-p 'exwm-mode)
+ exwm--floating-frame)
+ ;; Switch from a floating frame.
+ (with-current-buffer buffer
+ (if (and (derived-mode-p 'exwm-mode)
+ exwm--floating-frame
+ (eq exwm--frame exwm-workspace--current))
+ ;; Switch to another floating frame.
+ (frame-root-window exwm--floating-frame)
+ ;; Do not switch if the buffer is not on the current workspace.
+ (or (get-buffer-window buffer exwm-workspace--current)
+ (selected-window))))
+ (with-current-buffer buffer
+ (when (derived-mode-p 'exwm-mode)
+ (if (eq exwm--frame exwm-workspace--current)
+ (when exwm--floating-frame
+ ;; Switch to a floating frame on the current workspace.
+ (frame-selected-window exwm--floating-frame))
+ ;; Do not switch to exwm-mode buffers on other workspace (which
+ ;; won't work unless `exwm-layout-show-all-buffers' is set)
+ (unless exwm-layout-show-all-buffers
+ (selected-window)))))))))
+
+(defun exwm-config-ido ()
+ "Configure Ido to work with EXWM."
+ (ido-mode 1)
+ (add-hook 'exwm-init-hook #'exwm-config--fix/ido-buffer-window-other-frame))
+
+(defun exwm-config-misc ()
+ "Other configurations."
+ ;; Make more room
+ (menu-bar-mode -1)
+ (tool-bar-mode -1)
+ (scroll-bar-mode -1)
+ (fringe-mode 1))
+
+
+(provide 'exwm-config-spw)