;;My EΧWM configuration ;;This files loads before .emacs/init.el when used with emacs-exwm (defun apollo/exwm-init-hook () "Do this upon start." (display-battery-mode 0) ;;Change to 1 to display battery (setq display-time-day-and-date t) (display-time-mode 1) ;;Launch apps that will run in the background ;; (apollo/run-in-background "blueman-applet") (apollo/run-in-background "picom") ;; (apollo/run-in-background "nm-applet") (apollo/emacs-keys) (apollo/restore-wallpaper) ) (defun apollo/exwm-update-class () (exwm-workspace-rename-buffer exwm-class-name)) (setq exwm-workspace-number 6) ;; When window "class" updates, use it to set the buffer name (add-hook 'exwm-update-class-hook #'apollo/exwm-update-class) ;;When EXWM starts up, run this hook (add-hook 'exwm-init-hook #'apollo/exwm-init-hook) (start-process-shell-command "xrandr" nil "xrandr --output DisplayPort-2 --primary --mode 2560x1440 --pos 1920x0 --rotate normal --output HDMI-A-0 --mode 1920x1080 --pos 0x0 --rotate normal") ;; Set the screen resolution (require 'exwm-randr) (setq exwm-randr-workspace-output-plist '(1 "DP-1" 2 "HDMI-A-0")) (add-hook 'exwm-randr-screen-change-hook (lambda () (start-process-shell-command "xrandr" nil "xrandr --output DisplayPort-2 --primary --mode 2560x1440 --pos 1920x0 --rotate normal --output HDMI-A-0 --mode 1920x1080 --pos 0x0 --rotate normal" ))) (exwm-randr-enable) ;; Load the system tray before exwm-init (require 'exwm-systemtray) (exwm-systemtray-enable) ;; These keys should always pass through to Emacs (setq exwm-input-prefix-keys '(?\C-x ?\C-u ?\C-h ?\C-w ?\M-x ?\M-` ?\M-& ?\M-: ?\s-d ?\C-\M-j ;; Buffer list ?\C-\ ?\C-k ?\C-y)) ;; Ctrl+Q will enable the next key to be sent directly (define-key exwm-mode-map [?\C-q] 'exwm-input-send-next-key) ;; Set up global key bindings. These always work, no matter the input state! ;; Keep in mind that changing this list after EXWM initializes has no effect. (setq exwm-input-global-keys `( ;; Reset to line-mode (C-c C-k switches to char-mode via exwm-input-release-keyboard) ([?\s-r] . exwm-reset) ;; Move between windows ; ([s-up] . windmove-up) ; ([s-down] . windmove-down) ;; Launch applications via shell command ([?\s-&] . (lambda (command) (interactive (list (read-shell-command "$ "))) (start-process-shell-command command nil command))) ;; Switch workspace ([?\s-e] . exwm-workspace-switch) ([?\s-`] . (lambda () (interactive) (exwm-workspace-switch-create 0))) ([?\s-1] . (lambda () (interactive) (exwm-workspace-switch-create 1))) ([?\s-2] . (lambda () (interactive) (exwm-workspace-switch-create 2))) ([?\s-3] . (lambda () (interactive) (exwm-workspace-switch-create 3))) ([?\s-4] . (lambda () (interactive) (exwm-workspace-switch-create 4))) ,@(mapcar (lambda (i) `(,(kbd (format "s-%d" i)) . (lambda () (interactive) (exwm-workspace-switch-create ,i)))) (number-sequence 0 9)))) (defun exwm-enlarge-horizontally-50 () (interactive) (exwm-layout-enlarge-window-horizontally 50)) (defun exwm-shrink-horizontally-50 () "Shrink window horizontally by 10" (interactive) (exwm-layout-shrink-window-horizontally 50)) (defun exwm-shrink-vertically-50 () "Shrink window by 50." (interactive) (exwm-layout-shrink-window 50)) (defun exwm-enlarge-vertically-50 () "Enlarge window by 50." (interactive) (exwm-layout-enlarge-window 50)) (exwm-input-set-key (kbd "C-c d") 'dmenu) (exwm-input-set-key (kbd "s-") 'rofi) (exwm-input-set-key (kbd "s-Q") 'kill-emacs) (exwm-input-set-key (kbd "") 'apollo/volume-increase) (exwm-input-set-key (kbd "") 'apollo/volume-decrease) (exwm-input-set-key (kbd "s-0") 'apollo/emacs-keys) (exwm-input-set-key (kbd "s-9") 'apollo/greek-keyboard) (exwm-input-set-key (kbd "C-w C-") 'exwm-shrink-horizontally-50) (exwm-input-set-key (kbd "C-w C-") 'exwm-enlarge-horizontally-50) (exwm-input-set-key (kbd "C-w C-") 'exwm-shrink-vertically-50) (exwm-input-set-key (kbd "C-w C-") 'exwm-enlarge-vertically-50) (exwm-enable) ;;Transparency (set-frame-parameter (selected-frame) 'alpha '(90 90)) (add-to-list 'default-frame-alist '(alpha 90 90))