| 
					
				 | 
			
			
				@@ -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) 
			 |