(global-auto-revert-non-file-buffers nil))
;; time and battery in mode-line
-(comment
- (use-feature time
- :init
- (setq display-time-default-load-average nil)
- :config
- (display-time-mode))
+(use-feature time
+ :config
+ (display-time-mode)
+ :custom
+ (display-time-default-load-average nil)
+ (display-time-format "%a %b %-e, %-l:%M%P"))
- (use-feature battery
- :config
- (display-battery-mode)))
+(use-feature battery
+ :config
+ (display-battery-mode)
+ :custom
+ (battery-mode-line-format " %b%p%% %t"))
(use-feature fringe
:demand
;;; Essential packages
(use-package exwm
- :disabled
:demand
:config
(require 'exwm-config)
- ;; Set the initial workspace number.
- (setq exwm-workspace-number 4)
+ (setq
+ exwm-workspace-number 4
+ exwm-workspace-index-map (lambda (i) (number-to-string (1+ i))))
;; Make class name the buffer name, truncating beyond 50 characters
(defun exwm-rename-buffer ()
(add-hook 'exwm-update-class-hook 'exwm-rename-buffer)
(add-hook 'exwm-update-title-hook 'exwm-rename-buffer)
+ (defun b/exwm-ws-prev-index ()
+ "Return the index for the previous EXWM workspace, wrapping
+around if needed."
+ (if (= exwm-workspace-current-index 0)
+ (1- exwm-workspace-number)
+ (1- exwm-workspace-current-index)))
+
+ (defun b/exwm-ws-next-index ()
+ "Return the index for the next EXWM workspace, wrapping
+around if needed."
+ (if (= exwm-workspace-current-index
+ (1- exwm-workspace-number))
+ 0
+ (1+ exwm-workspace-current-index)))
+
;; 's-R': Reset
(exwm-input-set-key (kbd "s-R") #'exwm-reset)
;; 's-\': Switch workspace
(kbd (format "s-%d" i))
(lambda ()
(interactive)
- (exwm-workspace-switch-create i))))
+ (exwm-workspace-switch-create (1- i)))))
+ ;; 's-[': Switch to previous workspace
+ (defun b/exwm-ws-prev ()
+ "Switch to previous EXWM workspace, wrapping around if needed."
+ (interactive)
+ (exwm-workspace-switch-create (b/exwm-ws-prev-index)))
+ (exwm-input-set-key (kbd "s-[") #'b/exwm-ws-prev)
+ ;; 's-]': Switch to next workspace
+ (defun b/exwm-ws-next ()
+ "Switch to next EXWM workspace, wrapping around if needed."
+ (interactive)
+ (exwm-workspace-switch-create (b/exwm-ws-next-index)))
+ (exwm-input-set-key (kbd "s-]") #'b/exwm-ws-next)
+ ;; 's-{': Move window to previous workspace
+ (defun b/exwm-move-window-to-prev-ws ()
+ "Move window to previous EXWM workspace, wrapping around if
+needed."
+ (interactive)
+ (exwm-workspace-move-window (b/exwm-ws-prev-index)))
+ (exwm-input-set-key (kbd "s-{") #'b/exwm-move-window-to-prev-ws)
+ ;; 's-}': Move window to next workspace
+ (defun b/exwm-move-window-to-next-ws ()
+ "Move window to next EXWM workspace, wrapping around if
+needed."
+ (interactive)
+ (exwm-workspace-move-window (b/exwm-ws-next-index)))
+ (exwm-input-set-key (kbd "s-}") #'b/exwm-move-window-to-next-ws)
;; 's-SPC': Launch application
;; (exwm-input-set-key
;; (kbd "s-SPC")
;; Line-editing shortcuts
(setq exwm-input-simulation-keys
- '(;; movement
- ([?\C-b] . [left])
- ([?\M-b] . [C-left])
- ([?\C-f] . [right])
- ([?\M-f] . [C-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])
- ;; cut/copy/paste
- ;; ([?\C-w] . [?\C-x])
- ([?\M-w] . [?\C-c])
- ([?\C-y] . [?\C-v])
- ;; search
- ([?\C-s] . [?\C-f])))
+ '(;; movement
+ ([?\C-b] . [left])
+ ([?\M-b] . [C-left])
+ ([?\C-f] . [right])
+ ([?\M-f] . [C-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])
+ ;; cut/copy/paste
+ ;; ([?\C-w] . [?\C-x])
+ ([?\M-w] . [?\C-c])
+ ([?\C-y] . [?\C-v])
+ ;; search
+ ([?\C-s] . [?\C-f])))
;; Enable EXWM
(exwm-enable)
;; (interactive)
;; (start-process-shell-command "mpc" nil "mpv next")))
- (defun b/exwm-pasystray ()
- "A command used to start pasystray."
+ (comment
+ (defun b/exwm-pasystray ()
+ "A command used to start pasystray."
+ (interactive)
+ (if (executable-find "pasystray")
+ (progn
+ (message "EXWM: starting pasystray ...")
+ (start-process-shell-command "pasystray" nil "pasystray --notify=all"))
+ (message "EXWM: pasystray is not installed, abort!")))
+ (add-hook 'exwm-init-hook #'b/exwm-pasystray))
+
+ (defun b/exwm-nm-applet ()
+ "A command used to start nm-applet."
(interactive)
- (if (executable-find "pasystray")
- (progn
- (message "EXWM: starting pasystray ...")
- (start-process-shell-command "pasystray" nil "pasystray --notify=all"))
- (message "EXWM: pasystray is not installed, abort!")))
-
- (add-hook 'exwm-init-hook #'b/exwm-pasystray)
+ (if (executable-find "nm-applet")
+ (progn
+ (message "EXWM: starting nm-applet ...")
+ (start-process-shell-command "nm-applet" nil "nm-applet"))
+ (message "EXWM: nm-applet is not installed, abort!")))
+ (add-hook 'exwm-init-hook #'b/exwm-nm-applet)
(exwm-input-set-key
(kbd "s-t")
(nconc magit-section-initial-visibility-alist
'(([unpulled status] . show)
([unpushed status] . show)))
- :custom (magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1)
+ :custom
+ (magit-diff-refine-hunk t)
+ (magit-display-buffer-function #'magit-display-buffer-fullframe-status-v1)
:custom-face (magit-diff-file-heading ((t (:weight normal)))))
;; recently opened files