Start EXWM through DBus and fix pinentry-gnome3 annoyances
[~bandali/configs] / .emacs.d / init.el
index 525348d..7f6ef96 100644 (file)
@@ -61,7 +61,7 @@
   ;;    (delight "1.7")
   ;;    (emms "7.7")
   ;;    (rt-liberation "2.4")))
   ;;    (delight "1.7")
   ;;    (emms "7.7")
   ;;    (rt-liberation "2.4")))
-(package-initialize))
+  (package-initialize))
 
 (setq package-archive-upload-base "/ssh:caffeine:~/www/p/elpa")
 
 
 (setq package-archive-upload-base "/ssh:caffeine:~/www/p/elpa")
 
 (defalias 'yes-or-no-p #'y-or-n-p)
 
 (when (display-graphic-p)
 (defalias 'yes-or-no-p #'y-or-n-p)
 
 (when (display-graphic-p)
+  ;; (set-frame-font "Source Code Pro-10.5:weight=medium" nil t)
+  ;; (set-frame-font "FreeSans" nil t)
   (set-fontset-font t 'arabic "Vazir"))
   (set-fontset-font t 'arabic "Vazir"))
-;; ;; (set-frame-font "Drafting Mono-14:weight=light" nil t)
-;; (set-frame-font "Drafting Mono:pixelsize=16" nil t)
-;; (set-face-attribute 'bold nil :weight 'semi-bold)
 
 ;;;; Elisp-level customizations
 
 
 ;;;; Elisp-level customizations
 
 (when (display-graphic-p)
   (with-eval-after-load 'faces
     (let ((grey "#e7e7e7"))
 (when (display-graphic-p)
   (with-eval-after-load 'faces
     (let ((grey "#e7e7e7"))
-      (set-face-attribute 'fixed-pitch nil :family "Source Code Pro")
+      (set-face-attribute 'fixed-pitch nil
+                          :font "Source Code Pro"
+                          :weight 'medium)
       (set-face-attribute 'mode-line nil
                           :background grey
                           :inherit 'fixed-pitch))))
       (set-face-attribute 'mode-line nil
                           :background grey
                           :inherit 'fixed-pitch))))
@@ -374,16 +375,16 @@ For disabling the behaviour for certain buffers and/or modes."
   (make-local-variable 'mouse-autoselect-window)
   (setq mouse-autoselect-window nil))
 
   (make-local-variable 'mouse-autoselect-window)
   (setq mouse-autoselect-window nil))
 
-(defun b/move-indentation-or-beginning-of-line (arg)
-  "Move to the indentation or to the beginning of line."
-  (interactive "^p")
-  ;; (if (bolp)
-  ;;     (back-to-indentation)
-  ;;   (move-beginning-of-line arg))
-  (if (= (point)
-         (progn (back-to-indentation)
-                (point)))
-      (move-beginning-of-line arg)))
+;; (defun b/move-indentation-or-beginning-of-line (arg)
+;;   "Move to the indentation or to the beginning of line."
+;;   (interactive "^p")
+;;   ;; (if (bolp)
+;;   ;;     (back-to-indentation)
+;;   ;;   (move-beginning-of-line arg))
+;;   (if (= (point)
+;;          (progn (back-to-indentation)
+;;                 (point)))
+;;       (move-beginning-of-line arg)))
 
 (defun b/join-line-top ()
   "Like `join-line', but join next line to the current line."
 
 (defun b/join-line-top ()
   "Like `join-line', but join next line to the current line."
@@ -417,12 +418,19 @@ Make N (default: 1) copies of the current line or region."
         (dotimes (_ (abs n1))
           (insert text))))))
 
         (dotimes (_ (abs n1))
           (insert text))))))
 
-(defun b/invert-default-face ()
-  "Invert the `default' face (swap its background and foreground).
-Effectively a very simple light/dark theme toggle switch."
-  (interactive)
-  (invert-face 'default (selected-frame))
-  (invert-face 'mode-line (selected-frame)))
+(defun b/invert-default-face (arg)
+  "Invert the `default' and `mode-line' faces for the current frame.
+Swap the background and foreground for the two `default' and
+`mode-line' faces, effectively acting like a simple light/dark
+theme toggle.  If prefix argument ARG is given, invert the faces
+for all frames."
+  (interactive "P")
+  (let ((frame (unless arg
+                 (selected-frame))))
+    (invert-face 'default frame)
+    (invert-face 'mode-line frame))
+  (when (fboundp #'exwm-systemtray--refresh-background-color)
+    (exwm-systemtray--refresh-background-color 'remap)))
 
 (defun b/export-frame ()
   (interactive)
 
 (defun b/export-frame ()
   (interactive)
@@ -437,7 +445,7 @@ Effectively a very simple light/dark theme toggle switch."
 \f
 ;;; General key bindings
 
 \f
 ;;; General key bindings
 
-(global-set-key (kbd "C-a") #'b/move-indentation-or-beginning-of-line)
+;; (global-set-key (kbd "C-a") #'b/move-indentation-or-beginning-of-line)
 (global-set-key (kbd "C-c i") #'ielm)
 (global-set-key (kbd "C-c d") #'b/duplicate-line-or-region)
 (global-set-key (kbd "C-c j") #'b/join-line-top)
 (global-set-key (kbd "C-c i") #'ielm)
 (global-set-key (kbd "C-c d") #'b/duplicate-line-or-region)
 (global-set-key (kbd "C-c j") #'b/join-line-top)
@@ -483,7 +491,14 @@ Effectively a very simple light/dark theme toggle switch."
  (expand-file-name
   (convert-standard-filename "lisp") user-emacs-directory))
 
  (expand-file-name
   (convert-standard-filename "lisp") user-emacs-directory))
 
-;; (require 'bandali-exwm)
+(when
+    (and
+     (display-graphic-p)
+     ;; we're not running in another WM/DE
+     (not (getenv "XDG_CURRENT_DESKTOP"))
+     (member (system-name) '("chaman")))
+  (require 'bandali-exwm)
+  (global-set-key (kbd "C-x b") #'exwm-workspace-switch-to-buffer))
 
 (require 'bandali-org)
 
 
 (require 'bandali-org)
 
@@ -771,12 +786,6 @@ Effectively a very simple light/dark theme toggle switch."
   (define-key b/boxquote-prefix-map (kbd "M-q") #'boxquote-fill-paragraph)
   (define-key b/boxquote-prefix-map (kbd "M-w") #'boxquote-kill-ring-save))
 
   (define-key b/boxquote-prefix-map (kbd "M-q") #'boxquote-fill-paragraph)
   (define-key b/boxquote-prefix-map (kbd "M-w") #'boxquote-kill-ring-save))
 
-(add-to-list 'load-path (b/lisp "hl-todo"))
-(run-with-idle-timer 0.5 nil #'require 'hl-todo)
-(with-eval-after-load 'hl-todo
-  ;; Highlight TODO in buffers.
-  (global-hl-todo-mode))
-
 ;; `debbugs'
 (global-set-key (kbd "C-c D d") #'debbugs-gnu)
 (global-set-key (kbd "C-c D b") #'debbugs-gnu-bugs)
 ;; `debbugs'
 (global-set-key (kbd "C-c D d") #'debbugs-gnu)
 (global-set-key (kbd "C-c D b") #'debbugs-gnu-bugs)