Several Improvements to Emacs and NixOX

Emacs:
Fix: Emacs mouse wheel scrolling was overshooting sometimes
Feat: Hide more useless messages in the echo are (NO CHILDREN)
Feat: Add presentation mode using org-present
Fix: Fix org-tempo angled brackets insertion
Feat: better math mode in AucTeX in lieu of some yasnippet bits
Fix: add treesitter modes to eglot for automatic startup
Fix: Make mu4e automatic sender address choosing more robust

NixOS:
Feat: Add oama derivation
Feat: Add main email sender address to config
Feat: Add opacity toggle (for use with presentation mode)
This commit is contained in:
Swarsel 2024-06-01 01:55:32 +02:00
parent 85c3c8b69f
commit 4cdfd1e9ea
Signed by: swarsel
GPG key ID: 26A54C31F2A4FD84
8 changed files with 782 additions and 326 deletions

317
Emacs.org
View file

@ -119,6 +119,7 @@ Here I set up some things that are too minor to put under other categories.
(global-hl-line-mode 1) (global-hl-line-mode 1)
;; (setq redisplay-dont-pause t) ;; obsolete ;; (setq redisplay-dont-pause t) ;; obsolete
(setq blink-cursor-mode nil) ;; blink-cursor is an unexpected source of slowdown (setq blink-cursor-mode nil) ;; blink-cursor is an unexpected source of slowdown
(setq blink-matching-paren nil) ;; this makes the cursor jump around annoyingly
(delete-selection-mode 1) (delete-selection-mode 1)
(setq vc-follow-symlinks t) (setq vc-follow-symlinks t)
(setq require-final-newline t) (setq require-final-newline t)
@ -183,10 +184,24 @@ By default, emacs scrolls half a page when reaching the bottom of the buffer. Th
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq scroll-step 1 ;; (setq scroll-step 1
scroll-margin 4 ;; scroll-margin 4
scroll-conservatively 101) ;; scroll-conservatively 101)
(setq mouse-wheel-scroll-amount
'(1
((shift) . 5)
((meta) . 0.5)
((control) . text-scale))
mouse-drag-copy-region nil
make-pointer-invisible t
mouse-wheel-progressive-speed t
mouse-wheel-follow-mouse t)
(setq-default scroll-preserve-screen-position t
scroll-conservatively 1
scroll-margin 0
next-screen-context-lines 0)
;; (setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time ;; (setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time
;; (setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling ;; (setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling
;; (setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse ;; (setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse
@ -307,6 +322,7 @@ This function will check if a directory for which a file we want to open exists;
(advice-add 'mu4e--server-filter :around #'suppress-messages) (advice-add 'mu4e--server-filter :around #'suppress-messages)
(advice-add 'org-unlogged-message :around #'suppress-messages) (advice-add 'org-unlogged-message :around #'suppress-messages)
(advice-add 'magit-auto-revert-mode--init-kludge :around #'suppress-messages) (advice-add 'magit-auto-revert-mode--init-kludge :around #'suppress-messages)
(advice-add 'push-mark :around #'suppress-messages)
;; to reenable ;; to reenable
;; (advice-remove 'timer-event-handler #'suppress-messages) ;; (advice-remove 'timer-event-handler #'suppress-messages)
@ -322,7 +338,7 @@ This function will check if a directory for which a file we want to open exists;
;; (advice-add 'message :around #'who-called-me?) ;; (advice-add 'message :around #'who-called-me?)
;; disable to stop receiving backtrace ;; disable to stop receiving backtrace
;; (advice-remove 'message #'who-called-me?) (advice-remove 'message #'who-called-me?)
#+end_src #+end_src
@ -400,6 +416,8 @@ Base emacs undo logic is very useful, but not easy to understand. I prefer undo-
"mc" '((lambda () (interactive) (swarsel/open-calendar)) :which-key "calendar") "mc" '((lambda () (interactive) (swarsel/open-calendar)) :which-key "calendar")
"mp" '(popper-toggle :which-key "popper") "mp" '(popper-toggle :which-key "popper")
"md" '(dirvish :which-key "dirvish") "md" '(dirvish :which-key "dirvish")
"o" '(:ignore o :which-key "org")
"op" '((lambda () (interactive) (org-present)) :which-key "org-present")
;; "c" '(:ignore c :which-key "capture") ;; "c" '(:ignore c :which-key "capture")
;; "cj" '((lambda () (interactive) (org-capture nil "jj")) :which-key "journal") ;; "cj" '((lambda () (interactive) (org-capture nil "jj")) :which-key "journal")
;; "cs" '(markdown-download-screenshot :which-key "screenshot") ;; "cs" '(markdown-download-screenshot :which-key "screenshot")
@ -994,24 +1012,26 @@ Soon I want to try out this new hot stuff - just at the moment there is too much
;; ;; Set faces for heading levels ;; Set faces for heading levels
;; (with-eval-after-load 'org-faces (dolist (face '((org-level-1 . 1.3) (with-eval-after-load 'org-faces (dolist (face '((org-level-1 . 1.1)
;; (org-level-2 . 1.2) (org-level-2 . 0.9)
;; (org-level-3 . 1.15) (org-level-3 . 0.9)
;; (org-level-4 . 1.1) (org-level-4 . 0.9)
;; (org-level-5 . 1.1) (org-level-5 . 0.9)
;; (org-level-6 . 1.1) (org-level-6 . 0.9)
;; (org-level-7 . 1.1) (org-level-7 . 0.9)
;; (org-level-8 . 1.1))) (org-level-8 . 0.9)))
;; (set-face-attribute (car face) nil :font swarsel-alt-font :weight 'regular :height (cdr face))) (set-face-attribute (car face) nil :font swarsel-alt-font :weight 'medium :height (cdr face)))
;; ;; Ensure that anything that should be fixed-pitch in Org files appears that way ;; Ensure that anything that should be fixed-pitch in Org files appears that way
;; (set-face-attribute 'org-block nil :inherit '(fixed-pitch)) (set-face-attribute 'org-block nil :inherit 'fixed-pitch)
;; (set-face-attribute 'org-table nil :inherit '(shadow fixed-pitch)) (set-face-attribute 'org-table nil :inherit 'fixed-pitch)
;; (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch)) (set-face-attribute 'org-formula nil :inherit 'fixed-pitch)
;; (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch)) (set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch))
;; (set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch)) (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch))
;; (set-face-attribute 'org-checkbox nil :inherit '(fixed-pitch))) (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch))
(set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch))
(set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch))
#+end_src #+end_src
@ -1073,7 +1093,9 @@ Soon I want to try out this new hot stuff - just at the moment there is too much
(org-babel-do-load-languages (org-babel-do-load-languages
'org-babel-load-languages 'org-babel-load-languages
'((emacs-lisp . t) '((emacs-lisp . t)
(python . t))) (python . t)
(shell . t)
))
(push '("conf-unix" . conf-unix) org-src-lang-modes) (push '("conf-unix" . conf-unix) org-src-lang-modes)
@ -1088,7 +1110,7 @@ Soon I want to try out this new hot stuff - just at the moment there is too much
(require 'org-tempo) (require 'org-tempo)
(add-to-list 'org-structure-template-alist '("sh" . "src shell")) (add-to-list 'org-structure-template-alist '("sh" . "src shell"))
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
(add-to-list 'org-structure-template-alist '("py" . "src python")) (add-to-list 'org-structure-template-alist '("py" . "src python :results output"))
(add-to-list 'org-structure-template-alist '("nix" . "src nix :tangle")) (add-to-list 'org-structure-template-alist '("nix" . "src nix :tangle"))
#+end_src #+end_src
@ -1119,8 +1141,7 @@ Soon I want to try out this new hot stuff - just at the moment there is too much
#+begin_src emacs-lisp #+begin_src emacs-lisp
(use-package auctex (use-package auctex)
:ensure nil)
(setq TeX-auto-save t) (setq TeX-auto-save t)
(setq TeX-save-query nil) (setq TeX-save-query nil)
(setq TeX-parse-self t) (setq TeX-parse-self t)
@ -1130,7 +1151,9 @@ Soon I want to try out this new hot stuff - just at the moment there is too much
(add-hook 'LaTeX-mode-hook 'flyspell-mode) (add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
(add-hook 'LaTeX-mode-hook 'reftex-mode) (add-hook 'LaTeX-mode-hook 'reftex-mode)
(setq LaTeX-electric-left-right-brace t)
(setq font-latex-fontify-script nil)
(setq TeX-electric-sub-and-superscript t)
;; (setq reftex-plug-into-AUCTeX t) ;; (setq reftex-plug-into-AUCTeX t)
#+end_src #+end_src
@ -1192,6 +1215,114 @@ Soon I want to try out this new hot stuff - just at the moment there is too much
#+end_src #+end_src
** Presentations
#+begin_src emacs-lisp
(use-package org-present
:bind (:map org-present-mode-keymap
("q" . org-present-quit)
("<left>" . swarsel/org-present-prev)
("<up>" . 'ignore)
("<down>" . 'ignore)
("<right>" . swarsel/org-present-next))
:hook ((org-present-mode . swarsel/org-present-start)
(org-present-mode-quit . swarsel/org-present-end))
)
(use-package hide-mode-line)
(defun swarsel/org-present-start ()
(setq-local face-remapping-alist '((default (:height 1.5) variable-pitch)
(header-line (:height 4.0) variable-pitch)
(org-document-title (:height 1.75) org-document-title)
(org-code (:height 1.55) org-code)
(org-verbatim (:height 1.55) org-verbatim)
(org-block (:height 1.25) org-block)
(org-block-begin-line (:height 0.7) org-block)
))
(dolist (face '((org-level-1 . 1.1)
(org-level-2 . 1.2)
(org-level-3 . 1.2)
(org-level-4 . 1.2)
(org-level-5 . 1.2)
(org-level-6 . 1.2)
(org-level-7 . 1.2)
(org-level-8 . 1.2)))
(set-face-attribute (car face) nil :font swarsel-alt-font :weight 'medium :height (cdr face)))
(setq header-line-format " ")
(setq visual-fill-column-width 90)
(setq indicate-buffer-boundaries nil)
(setq inhibit-message nil)
(breadcrumb-mode 0)
(org-display-inline-images)
(global-hl-line-mode 0)
(display-line-numbers-mode 0)
(org-modern-mode 0)
(evil-insert-state 1)
(beginning-of-buffer)
(org-present-read-only)
;; (org-present-hide-cursor)
(swarsel/org-present-slide)
)
(defun swarsel/org-present-end ()
(setq-local face-remapping-alist '((default variable-pitch default)))
(dolist (face '((org-level-1 . 1.1)
(org-level-2 . 0.9)
(org-level-3 . 0.9)
(org-level-4 . 0.9)
(org-level-5 . 0.9)
(org-level-6 . 0.9)
(org-level-7 . 0.9)
(org-level-8 . 0.9)))
(set-face-attribute (car face) nil :font swarsel-alt-font :weight 'medium :height (cdr face)))
(setq header-line-format nil)
(setq visual-fill-column-width 150)
(setq indicate-buffer-boundaries t)
(setq inhibit-message nil)
(breadcrumb-mode 1)
(global-hl-line-mode 1)
(display-line-numbers-mode 1)
(org-remove-inline-images)
(org-modern-mode 1)
(evil-normal-state 1)
;; (org-present-show-cursor)
)
(defun swarsel/org-present-slide ()
(org-overview)
(org-show-entry)
(org-show-children)
)
(defun swarsel/org-present-prev ()
(interactive)
(org-present-prev)
(swarsel/org-present-slide))
(defun swarsel/org-present-next ()
(interactive)
(unless (eobp)
(org-next-visible-heading 1)
(org-fold-show-entry))
(when (eobp)
(org-present-next)
(swarsel/org-present-slide)
))
(defun clojure-leave-clojure-mode-function ()
)
(add-hook 'buffer-list-update-hook #'clojure-leave-clojure-mode-function)
(add-hook 'org-present-mode-hook 'swarsel/org-present-start)
(add-hook 'org-present-mode-quit-hook 'swarsel/org-present-end)
(add-hook 'org-present-after-navigate-functions 'swarsel/org-present-slide)
#+end_src
* Nix Mode * Nix Mode
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -1606,6 +1737,12 @@ I am not completely sure on electric-pair-mode yet, sometimes it is very helpful
;; don't skip newline when auto-pairing parenthesis ;; don't skip newline when auto-pairing parenthesis
(setq electric-pair-skip-whitespace-chars '(9 32)) (setq electric-pair-skip-whitespace-chars '(9 32))
;; in org-mode buffers, do not pair < and > in order not to interfere with org-tempo
(add-hook 'org-mode-hook (lambda ()
(setq-local electric-pair-inhibit-predicate
`(lambda (c)
(if (char-equal c ?<) t (,electric-pair-inhibit-predicate c))))))
#+end_src #+end_src
** IDE ** IDE
@ -1921,58 +2058,58 @@ The following block is 100% stolen from Dominik :P
#+begin_src emacs-lisp #+begin_src emacs-lisp
(setq wtf/latex-greek-prefix "'") ;; (setq wtf/latex-greek-prefix "'")
(setq wtf/latex-math-prefix "`") ;; (setq wtf/latex-math-prefix "`")
(setq wtf/latex-mathbb-prefix "''") (setq wtf/latex-mathbb-prefix "''")
(setq swarsel/latex-mathcal-prefix "``") (setq swarsel/latex-mathcal-prefix "``")
(use-package yasnippet (use-package yasnippet
:config :config
(setq swtf/greek-alphabet ;; (setq swtf/greek-alphabet
'(("a" . "\\alpha") ;; '(("a" . "\\alpha")
("b" . "\\beta" ) ;; ("b" . "\\beta" )
("g" . "\\gamma") ;; ("g" . "\\gamma")
("d" . "\\delta") ;; ("d" . "\\delta")
("e" . "\\epsilon") ;; ("e" . "\\epsilon")
("z" . "\\zeta") ;; ("z" . "\\zeta")
("h" . "\\eta") ;; ("h" . "\\eta")
("th" . "\\theta") ;; ("th" . "\\theta")
("i" . "\\iota") ;; ("i" . "\\iota")
("k" . "\\kappa") ;; ("k" . "\\kappa")
("l" . "\\lambda") ;; ("l" . "\\lambda")
("m" . "\\mu") ;; ("m" . "\\mu")
("n" . "\\nu") ;; ("n" . "\\nu")
("x" . "\\xi") ;; ("x" . "\\xi")
("p" . "\\pi") ;; ("p" . "\\pi")
("r" . "\\rho") ;; ("r" . "\\rho")
("s" . "\\sigma") ;; ("s" . "\\sigma")
("t" . "\\tau") ;; ("t" . "\\tau")
("u" . "\\upsilon") ;; ("u" . "\\upsilon")
("f" . "\\phi") ;; ("f" . "\\phi")
("c" . "\\chi") ;; ("c" . "\\chi")
("v" . "\\psi") ;; ("v" . "\\psi")
("o" . "\\omega"))) ;; ("o" . "\\omega")))
;; The same for capitalized letters ;; The same for capitalized letters
(dolist (elem swtf/greek-alphabet) ;; (dolist (elem swtf/greek-alphabet)
(let ((key (car elem)) ;; (let ((key (car elem))
(value (cdr elem))) ;; (value (cdr elem)))
(when (string-equal key (downcase key)) ;; (when (string-equal key (downcase key))
(add-to-list 'swtf/greek-alphabet ;; (add-to-list 'swtf/greek-alphabet
(cons ;; (cons
(capitalize (car elem)) ;; (capitalize (car elem))
(concat ;; (concat
(substring value 0 1) ;; (substring value 0 1)
(capitalize (substring value 1 2)) ;; (capitalize (substring value 1 2))
(substring value 2))))))) ;; (substring value 2)))))))
(yas-define-snippets ;; (yas-define-snippets
'latex-mode ;; 'latex-mode
(mapcar ;; (mapcar
(lambda (elem) ;; (lambda (elem)
(list (concat wtf/latex-greek-prefix (car elem)) (cdr elem) (concat "Greek letter " (car elem)))) ;; (list (concat wtf/latex-greek-prefix (car elem)) (cdr elem) (concat "Greek letter " (car elem))))
swtf/greek-alphabet)) ;; swtf/greek-alphabet))
(setq wtf/english-alphabet (setq wtf/english-alphabet
'("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z")) '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
@ -2031,7 +2168,6 @@ The following block is 100% stolen from Dominik :P
#+end_src #+end_src
*** Duplicate Lines *** Duplicate Lines
#+begin_src emacs-lisp #+begin_src emacs-lisp
@ -2139,9 +2275,13 @@ The following block is 100% stolen from Dominik :P
:ensure nil :ensure nil
:hook :hook
((python-mode ((python-mode
python-ts-mode
c-mode c-mode
c-ts-mode
c++-mode c++-mode
c++-ts-mode
tex-mode tex-mode
LaTeX-mode
) . (lambda () (progn ) . (lambda () (progn
(eglot-ensure) (eglot-ensure)
(add-hook 'before-save-hook 'eglot-format nil 'local)))) (add-hook 'before-save-hook 'eglot-format nil 'local))))
@ -2472,11 +2612,46 @@ The following block is 100% stolen from Dominik :P
(:maildir "/Drafts" :key ?d) (:maildir "/Drafts" :key ?d)
(:maildir "/All Mail" :key ?a)))) (:maildir "/All Mail" :key ?a))))
(setq user-mail-address "leon.schwarzaeugl@gmail.com" (setq user-mail-address "leon@swarsel.win"
user-full-name "Leon Schwarzäugl") user-full-name "Leon Schwarzäugl")
(setq mu4e-hide-index-messages t) (setq mu4e-hide-index-messages t)
(setq mu4e-user-mail-address-list '(leon.schwarzaeugl@gmail.com leon@swarsel.win nautilus.dw@gmail.com mrswarsel@gmail.com))
(defun swarsel/mu4e-switch-account ()
(interactive)
(let ((account (completing-read "Select account: " mu4e-user-mail-address-list)))
(setq user-mail-address account)))
(defun swarsel/mu4e-rfs--matching-address ()
(cl-loop for to-data in (mu4e-message-field mu4e-compose-parent-message :to)
for to-email = (pcase to-data
(`(_ . email) email)
(x (mu4e-contact-email x)))
for to-name = (pcase to-data
(`(_ . name) name)
(x (mu4e-contact-name x)))
when (mu4e-user-mail-address-p to-email)
return (list to-name to-email)))
(defun swarsel/mu4e-send-from-correct-address ()
(when mu4e-compose-parent-message
(save-excursion
(when-let ((dest (swarsel/mu4e-rfs--matching-address)))
(cl-destructuring-bind (from-user from-addr) dest
(setq user-mail-address from-addr)
(message-position-on-field "From")
(message-beginning-of-line)
(delete-region (point) (line-end-position))
(insert (format "%s <%s>" (or from-user user-full-name) from-addr)))))))
(defun swarsel/mu4e-restore-default ()
(setq user-mail-address "leon@swarsel.win"
user-full-name "Leon Schwarzäugl"))
(add-hook 'mu4e-compose-mode-hook #'swarsel/mu4e-send-from-correct-address)
(add-hook 'mu4e-compose-post-hook #'swarsel/mu4e-restore-default)
#+end_src #+end_src
** mu4e-alert ** mu4e-alert

49
Nix.org
View file

@ -4527,6 +4527,31 @@ Mostly used to install some compilers and lps's that I want to have available wh
(python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 epc orjson sexpdata six setuptools paramiko numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server])) (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 epc orjson sexpdata six setuptools paramiko numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
# (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server])) # (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
# -------------------------------------------- # --------------------------------------------
(stdenv.mkDerivation {
name = "oama";
src = pkgs.fetchurl {
name = "oama";
url = "https://github.com/pdobsan/oama/releases/download/0.13.1/oama-0.13.1-Linux-x86_64-static.tgz";
sha256 = "sha256-OTdCObVfnMPhgZxVtZqehgUXtKT1iyqozdkPIV+i3Gc=";
};
phases = [
"unpackPhase"
];
unpackPhase = ''
mkdir -p $out/bin
tar xvf $src -C $out/
mv $out/oama-0.13.1-Linux-x86_64-static/oama $out/bin/
'';
})
]; ];
#+end_src #+end_src
@ -4978,6 +5003,7 @@ I use sops-nix to handle secrets that I want to have available on my machines at
sops.secrets.mrswarsel = {path = "/run/user/1000/secrets/mrswarsel";}; sops.secrets.mrswarsel = {path = "/run/user/1000/secrets/mrswarsel";};
sops.secrets.nautilus = {path = "/run/user/1000/secrets/nautilus";}; sops.secrets.nautilus = {path = "/run/user/1000/secrets/nautilus";};
sops.secrets.leon = {path = "/run/user/1000/secrets/leon";}; sops.secrets.leon = {path = "/run/user/1000/secrets/leon";};
sops.secrets.swarselmail = {path = "/run/user/1000/secrets/swarselmail";};
sops.secrets.caldav = {path = "${config.home.homeDirectory}/.emacs.d/.caldav";}; sops.secrets.caldav = {path = "${config.home.homeDirectory}/.emacs.d/.caldav";};
# sops.secrets.leon = { }; # sops.secrets.leon = { };
# sops.secrets.nautilus = { }; # sops.secrets.nautilus = { };
@ -5565,6 +5591,28 @@ zsh is clearly the most convenient shell for me and it happens to be super neat
}; };
}; };
accounts.swarsel = {
address = "leon@swarsel.win";
userName = "8227dc594dd515ce232eda1471cb9a19";
realName = "Leon Schwarzäugl";
passwordCommand = "cat ${config.sops.secrets.swarselmail.path}";
smtp = {
host = "in-v3.mailjet.com";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
mu.enable = false;
msmtp = {
enable = true;
};
mbsync = {
enable = false;
};
};
accounts.nautilus = { accounts.nautilus = {
primary = false; primary = false;
address = "nautilus.dw@gmail.com"; address = "nautilus.dw@gmail.com";
@ -6365,6 +6413,7 @@ I am currently using SwayFX, which adds some nice effects to sway, like rounded
"${modifier}+x" = "exec \"bash ~/.dotfiles/scripts/checkkitty.sh\""; "${modifier}+x" = "exec \"bash ~/.dotfiles/scripts/checkkitty.sh\"";
"${modifier}+d" = "exec \"bash ~/.dotfiles/scripts/checkdiscord.sh\""; "${modifier}+d" = "exec \"bash ~/.dotfiles/scripts/checkdiscord.sh\"";
"${modifier}+Shift+r" = "exec \"bash ~/.dotfiles/scripts/restart.sh\""; "${modifier}+Shift+r" = "exec \"bash ~/.dotfiles/scripts/restart.sh\"";
"${modifier}+Shift+t" = "exec \"bash ~/.dotfiles/scripts/toggle_opacity.sh\"";
"${modifier}+Shift+F12" = "move scratchpad"; "${modifier}+Shift+F12" = "move scratchpad";
"${modifier}+F12" = "scratchpad show"; "${modifier}+F12" = "scratchpad show";
"${modifier}+c" = "exec qalculate-gtk"; "${modifier}+c" = "exec qalculate-gtk";

View file

@ -288,6 +288,7 @@ sops.validateSopsFiles = false;
sops.secrets.mrswarsel = {path = "/run/user/1000/secrets/mrswarsel";}; sops.secrets.mrswarsel = {path = "/run/user/1000/secrets/mrswarsel";};
sops.secrets.nautilus = {path = "/run/user/1000/secrets/nautilus";}; sops.secrets.nautilus = {path = "/run/user/1000/secrets/nautilus";};
sops.secrets.leon = {path = "/run/user/1000/secrets/leon";}; sops.secrets.leon = {path = "/run/user/1000/secrets/leon";};
sops.secrets.swarselmail = {path = "/run/user/1000/secrets/swarselmail";};
sops.secrets.caldav = {path = "${config.home.homeDirectory}/.emacs.d/.caldav";}; sops.secrets.caldav = {path = "${config.home.homeDirectory}/.emacs.d/.caldav";};
# sops.secrets.leon = { }; # sops.secrets.leon = { };
# sops.secrets.nautilus = { }; # sops.secrets.nautilus = { };
@ -796,6 +797,28 @@ accounts.email = {
}; };
}; };
accounts.swarsel = {
address = "leon@swarsel.win";
userName = "8227dc594dd515ce232eda1471cb9a19";
realName = "Leon Schwarzäugl";
passwordCommand = "cat ${config.sops.secrets.swarselmail.path}";
smtp = {
host = "in-v3.mailjet.com";
port = 587;
tls = {
enable = true;
useStartTls = true;
};
};
mu.enable = false;
msmtp = {
enable = true;
};
mbsync = {
enable = false;
};
};
accounts.nautilus = { accounts.nautilus = {
primary = false; primary = false;
address = "nautilus.dw@gmail.com"; address = "nautilus.dw@gmail.com";
@ -1545,6 +1568,7 @@ wayland.windowManager.sway = {
"${modifier}+x" = "exec \"bash ~/.dotfiles/scripts/checkkitty.sh\""; "${modifier}+x" = "exec \"bash ~/.dotfiles/scripts/checkkitty.sh\"";
"${modifier}+d" = "exec \"bash ~/.dotfiles/scripts/checkdiscord.sh\""; "${modifier}+d" = "exec \"bash ~/.dotfiles/scripts/checkdiscord.sh\"";
"${modifier}+Shift+r" = "exec \"bash ~/.dotfiles/scripts/restart.sh\""; "${modifier}+Shift+r" = "exec \"bash ~/.dotfiles/scripts/restart.sh\"";
"${modifier}+Shift+t" = "exec \"bash ~/.dotfiles/scripts/toggle_opacity.sh\"";
"${modifier}+Shift+F12" = "move scratchpad"; "${modifier}+Shift+F12" = "move scratchpad";
"${modifier}+F12" = "scratchpad show"; "${modifier}+F12" = "scratchpad show";
"${modifier}+c" = "exec qalculate-gtk"; "${modifier}+c" = "exec qalculate-gtk";

View file

@ -137,6 +137,31 @@ environment.systemPackages = with pkgs; [
(python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 epc orjson sexpdata six setuptools paramiko numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server])) (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 epc orjson sexpdata six setuptools paramiko numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
# (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server])) # (python3.withPackages(ps: with ps; [ jupyter ipython pyqt5 numpy pandas scipy matplotlib requests debugpy flake8 gnureadline python-lsp-server]))
# -------------------------------------------- # --------------------------------------------
(stdenv.mkDerivation {
name = "oama";
src = pkgs.fetchurl {
name = "oama";
url = "https://github.com/pdobsan/oama/releases/download/0.13.1/oama-0.13.1-Linux-x86_64-static.tgz";
sha256 = "sha256-OTdCObVfnMPhgZxVtZqehgUXtKT1iyqozdkPIV+i3Gc=";
};
phases = [
"unpackPhase"
];
unpackPhase = ''
mkdir -p $out/bin
tar xvf $src -C $out/
mv $out/oama-0.13.1-Linux-x86_64-static/oama $out/bin/
'';
})
]; ];
programs.dconf.enable = true; programs.dconf.enable = true;

View file

@ -66,6 +66,7 @@
(global-hl-line-mode 1) (global-hl-line-mode 1)
;; (setq redisplay-dont-pause t) ;; obsolete ;; (setq redisplay-dont-pause t) ;; obsolete
(setq blink-cursor-mode nil) ;; blink-cursor is an unexpected source of slowdown (setq blink-cursor-mode nil) ;; blink-cursor is an unexpected source of slowdown
(setq blink-matching-paren nil) ;; this makes the cursor jump around annoyingly
(delete-selection-mode 1) (delete-selection-mode 1)
(setq vc-follow-symlinks t) (setq vc-follow-symlinks t)
(setq require-final-newline t) (setq require-final-newline t)
@ -109,10 +110,24 @@
;;(set-face-background 'highlight-indent-guides-even-face "steel blue") ;;(set-face-background 'highlight-indent-guides-even-face "steel blue")
;;(set-face-foreground 'highlight-indent-guides-character-face "dark violet") ;;(set-face-foreground 'highlight-indent-guides-character-face "dark violet")
(setq scroll-step 1 ;; (setq scroll-step 1
scroll-margin 4 ;; scroll-margin 4
scroll-conservatively 101) ;; scroll-conservatively 101)
(setq mouse-wheel-scroll-amount
'(1
((shift) . 5)
((meta) . 0.5)
((control) . text-scale))
mouse-drag-copy-region nil
make-pointer-invisible t
mouse-wheel-progressive-speed t
mouse-wheel-follow-mouse t)
(setq-default scroll-preserve-screen-position t
scroll-conservatively 1
scroll-margin 0
next-screen-context-lines 0)
;; (setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time ;; (setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time
;; (setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling ;; (setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling
;; (setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse ;; (setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse
@ -206,6 +221,7 @@
(advice-add 'mu4e--server-filter :around #'suppress-messages) (advice-add 'mu4e--server-filter :around #'suppress-messages)
(advice-add 'org-unlogged-message :around #'suppress-messages) (advice-add 'org-unlogged-message :around #'suppress-messages)
(advice-add 'magit-auto-revert-mode--init-kludge :around #'suppress-messages) (advice-add 'magit-auto-revert-mode--init-kludge :around #'suppress-messages)
(advice-add 'push-mark :around #'suppress-messages)
;; to reenable ;; to reenable
;; (advice-remove 'timer-event-handler #'suppress-messages) ;; (advice-remove 'timer-event-handler #'suppress-messages)
@ -221,7 +237,7 @@
;; (advice-add 'message :around #'who-called-me?) ;; (advice-add 'message :around #'who-called-me?)
;; disable to stop receiving backtrace ;; disable to stop receiving backtrace
;; (advice-remove 'message #'who-called-me?) (advice-remove 'message #'who-called-me?)
(use-package undo-tree (use-package undo-tree
;; :init (global-undo-tree-mode) ;; :init (global-undo-tree-mode)
@ -280,6 +296,8 @@
"mc" '((lambda () (interactive) (swarsel/open-calendar)) :which-key "calendar") "mc" '((lambda () (interactive) (swarsel/open-calendar)) :which-key "calendar")
"mp" '(popper-toggle :which-key "popper") "mp" '(popper-toggle :which-key "popper")
"md" '(dirvish :which-key "dirvish") "md" '(dirvish :which-key "dirvish")
"o" '(:ignore o :which-key "org")
"op" '((lambda () (interactive) (org-present)) :which-key "org-present")
;; "c" '(:ignore c :which-key "capture") ;; "c" '(:ignore c :which-key "capture")
;; "cj" '((lambda () (interactive) (org-capture nil "jj")) :which-key "journal") ;; "cj" '((lambda () (interactive) (org-capture nil "jj")) :which-key "journal")
;; "cs" '(markdown-download-screenshot :which-key "screenshot") ;; "cs" '(markdown-download-screenshot :which-key "screenshot")
@ -768,24 +786,26 @@
;; (swarsel/org-font-setup) ;; (swarsel/org-font-setup)
) )
;; ;; Set faces for heading levels ;; Set faces for heading levels
;; (with-eval-after-load 'org-faces (dolist (face '((org-level-1 . 1.3) (with-eval-after-load 'org-faces (dolist (face '((org-level-1 . 1.1)
;; (org-level-2 . 1.2) (org-level-2 . 0.9)
;; (org-level-3 . 1.15) (org-level-3 . 0.9)
;; (org-level-4 . 1.1) (org-level-4 . 0.9)
;; (org-level-5 . 1.1) (org-level-5 . 0.9)
;; (org-level-6 . 1.1) (org-level-6 . 0.9)
;; (org-level-7 . 1.1) (org-level-7 . 0.9)
;; (org-level-8 . 1.1))) (org-level-8 . 0.9)))
;; (set-face-attribute (car face) nil :font swarsel-alt-font :weight 'regular :height (cdr face))) (set-face-attribute (car face) nil :font swarsel-alt-font :weight 'medium :height (cdr face)))
;; ;; Ensure that anything that should be fixed-pitch in Org files appears that way ;; Ensure that anything that should be fixed-pitch in Org files appears that way
;; (set-face-attribute 'org-block nil :inherit '(fixed-pitch)) (set-face-attribute 'org-block nil :inherit 'fixed-pitch)
;; (set-face-attribute 'org-table nil :inherit '(shadow fixed-pitch)) (set-face-attribute 'org-table nil :inherit 'fixed-pitch)
;; (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch)) (set-face-attribute 'org-formula nil :inherit 'fixed-pitch)
;; (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch)) (set-face-attribute 'org-code nil :inherit '(shadow fixed-pitch))
;; (set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch)) (set-face-attribute 'org-verbatim nil :inherit '(shadow fixed-pitch))
;; (set-face-attribute 'org-checkbox nil :inherit '(fixed-pitch))) (set-face-attribute 'org-special-keyword nil :inherit '(font-lock-comment-face fixed-pitch))
(set-face-attribute 'org-meta-line nil :inherit '(font-lock-comment-face fixed-pitch))
(set-face-attribute 'org-checkbox nil :inherit 'fixed-pitch))
;; Show hidden emphasis markers ;; Show hidden emphasis markers
;; (use-package org-appear ;; (use-package org-appear
@ -814,14 +834,16 @@
(org-babel-do-load-languages (org-babel-do-load-languages
'org-babel-load-languages 'org-babel-load-languages
'((emacs-lisp . t) '((emacs-lisp . t)
(python . t))) (python . t)
(shell . t)
))
(push '("conf-unix" . conf-unix) org-src-lang-modes) (push '("conf-unix" . conf-unix) org-src-lang-modes)
(require 'org-tempo) (require 'org-tempo)
(add-to-list 'org-structure-template-alist '("sh" . "src shell")) (add-to-list 'org-structure-template-alist '("sh" . "src shell"))
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) (add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
(add-to-list 'org-structure-template-alist '("py" . "src python")) (add-to-list 'org-structure-template-alist '("py" . "src python :results output"))
(add-to-list 'org-structure-template-alist '("nix" . "src nix :tangle")) (add-to-list 'org-structure-template-alist '("nix" . "src nix :tangle"))
(defun swarsel/org-babel-tangle-config () (defun swarsel/org-babel-tangle-config ()
@ -838,8 +860,7 @@
(add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook #'swarsel/org-babel-tangle-config))) (add-hook 'org-mode-hook (lambda () (add-hook 'after-save-hook #'swarsel/org-babel-tangle-config)))
(use-package auctex (use-package auctex)
:ensure nil)
(setq TeX-auto-save t) (setq TeX-auto-save t)
(setq TeX-save-query nil) (setq TeX-save-query nil)
(setq TeX-parse-self t) (setq TeX-parse-self t)
@ -849,7 +870,9 @@
(add-hook 'LaTeX-mode-hook 'flyspell-mode) (add-hook 'LaTeX-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook 'LaTeX-math-mode) (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode)
(add-hook 'LaTeX-mode-hook 'reftex-mode) (add-hook 'LaTeX-mode-hook 'reftex-mode)
(setq LaTeX-electric-left-right-brace t)
(setq font-latex-fontify-script nil)
(setq TeX-electric-sub-and-superscript t)
;; (setq reftex-plug-into-AUCTeX t) ;; (setq reftex-plug-into-AUCTeX t)
(use-package org-download (use-package org-download
@ -885,6 +908,108 @@
("src" "»" ""))) ("src" "»" "")))
:hook (org-mode . org-modern-mode)) :hook (org-mode . org-modern-mode))
(use-package org-present
:bind (:map org-present-mode-keymap
("q" . org-present-quit)
("<left>" . swarsel/org-present-prev)
("<up>" . 'ignore)
("<down>" . 'ignore)
("<right>" . swarsel/org-present-next))
:hook ((org-present-mode . swarsel/org-present-start)
(org-present-mode-quit . swarsel/org-present-end))
)
(use-package hide-mode-line)
(defun swarsel/org-present-start ()
(setq-local face-remapping-alist '((default (:height 1.5) variable-pitch)
(header-line (:height 4.0) variable-pitch)
(org-document-title (:height 1.75) org-document-title)
(org-code (:height 1.55) org-code)
(org-verbatim (:height 1.55) org-verbatim)
(org-block (:height 1.25) org-block)
(org-block-begin-line (:height 0.7) org-block)
))
(dolist (face '((org-level-1 . 1.1)
(org-level-2 . 1.2)
(org-level-3 . 1.2)
(org-level-4 . 1.2)
(org-level-5 . 1.2)
(org-level-6 . 1.2)
(org-level-7 . 1.2)
(org-level-8 . 1.2)))
(set-face-attribute (car face) nil :font swarsel-alt-font :weight 'medium :height (cdr face)))
(setq header-line-format " ")
(setq visual-fill-column-width 90)
(setq indicate-buffer-boundaries nil)
(setq inhibit-message nil)
(breadcrumb-mode 0)
(org-display-inline-images)
(global-hl-line-mode 0)
(display-line-numbers-mode 0)
(org-modern-mode 0)
(evil-insert-state 1)
(beginning-of-buffer)
(org-present-read-only)
;; (org-present-hide-cursor)
(swarsel/org-present-slide)
)
(defun swarsel/org-present-end ()
(setq-local face-remapping-alist '((default variable-pitch default)))
(dolist (face '((org-level-1 . 1.1)
(org-level-2 . 0.9)
(org-level-3 . 0.9)
(org-level-4 . 0.9)
(org-level-5 . 0.9)
(org-level-6 . 0.9)
(org-level-7 . 0.9)
(org-level-8 . 0.9)))
(set-face-attribute (car face) nil :font swarsel-alt-font :weight 'medium :height (cdr face)))
(setq header-line-format nil)
(setq visual-fill-column-width 150)
(setq indicate-buffer-boundaries t)
(setq inhibit-message nil)
(breadcrumb-mode 1)
(global-hl-line-mode 1)
(display-line-numbers-mode 1)
(org-remove-inline-images)
(org-modern-mode 1)
(evil-normal-state 1)
;; (org-present-show-cursor)
)
(defun swarsel/org-present-slide ()
(org-overview)
(org-show-entry)
(org-show-children)
)
(defun swarsel/org-present-prev ()
(interactive)
(org-present-prev)
(swarsel/org-present-slide))
(defun swarsel/org-present-next ()
(interactive)
(unless (eobp)
(org-next-visible-heading 1)
(org-fold-show-entry))
(when (eobp)
(org-present-next)
(swarsel/org-present-slide)
))
(defun clojure-leave-clojure-mode-function ()
)
(add-hook 'buffer-list-update-hook #'clojure-leave-clojure-mode-function)
(add-hook 'org-present-mode-hook 'swarsel/org-present-start)
(add-hook 'org-present-mode-quit-hook 'swarsel/org-present-end)
(add-hook 'org-present-after-navigate-functions 'swarsel/org-present-slide)
(use-package nix-mode (use-package nix-mode
:mode "\\.nix\\'") :mode "\\.nix\\'")
@ -1162,6 +1287,12 @@
;; don't skip newline when auto-pairing parenthesis ;; don't skip newline when auto-pairing parenthesis
(setq electric-pair-skip-whitespace-chars '(9 32)) (setq electric-pair-skip-whitespace-chars '(9 32))
;; in org-mode buffers, do not pair < and > in order not to interfere with org-tempo
(add-hook 'org-mode-hook (lambda ()
(setq-local electric-pair-inhibit-predicate
`(lambda (c)
(if (char-equal c ?<) t (,electric-pair-inhibit-predicate c))))))
;; (use-package company ;; (use-package company
;; :after lsp-mode ;; :after lsp-mode
;; :hook (lsp-mode . company-mode) ;; :hook (lsp-mode . company-mode)
@ -1405,58 +1536,58 @@
;; (use-package yasnippet-snippets) ;; (use-package yasnippet-snippets)
(setq wtf/latex-greek-prefix "'") ;; (setq wtf/latex-greek-prefix "'")
(setq wtf/latex-math-prefix "`") ;; (setq wtf/latex-math-prefix "`")
(setq wtf/latex-mathbb-prefix "''") (setq wtf/latex-mathbb-prefix "''")
(setq swarsel/latex-mathcal-prefix "``") (setq swarsel/latex-mathcal-prefix "``")
(use-package yasnippet (use-package yasnippet
:config :config
(setq swtf/greek-alphabet ;; (setq swtf/greek-alphabet
'(("a" . "\\alpha") ;; '(("a" . "\\alpha")
("b" . "\\beta" ) ;; ("b" . "\\beta" )
("g" . "\\gamma") ;; ("g" . "\\gamma")
("d" . "\\delta") ;; ("d" . "\\delta")
("e" . "\\epsilon") ;; ("e" . "\\epsilon")
("z" . "\\zeta") ;; ("z" . "\\zeta")
("h" . "\\eta") ;; ("h" . "\\eta")
("th" . "\\theta") ;; ("th" . "\\theta")
("i" . "\\iota") ;; ("i" . "\\iota")
("k" . "\\kappa") ;; ("k" . "\\kappa")
("l" . "\\lambda") ;; ("l" . "\\lambda")
("m" . "\\mu") ;; ("m" . "\\mu")
("n" . "\\nu") ;; ("n" . "\\nu")
("x" . "\\xi") ;; ("x" . "\\xi")
("p" . "\\pi") ;; ("p" . "\\pi")
("r" . "\\rho") ;; ("r" . "\\rho")
("s" . "\\sigma") ;; ("s" . "\\sigma")
("t" . "\\tau") ;; ("t" . "\\tau")
("u" . "\\upsilon") ;; ("u" . "\\upsilon")
("f" . "\\phi") ;; ("f" . "\\phi")
("c" . "\\chi") ;; ("c" . "\\chi")
("v" . "\\psi") ;; ("v" . "\\psi")
("o" . "\\omega"))) ;; ("o" . "\\omega")))
;; The same for capitalized letters ;; The same for capitalized letters
(dolist (elem swtf/greek-alphabet) ;; (dolist (elem swtf/greek-alphabet)
(let ((key (car elem)) ;; (let ((key (car elem))
(value (cdr elem))) ;; (value (cdr elem)))
(when (string-equal key (downcase key)) ;; (when (string-equal key (downcase key))
(add-to-list 'swtf/greek-alphabet ;; (add-to-list 'swtf/greek-alphabet
(cons ;; (cons
(capitalize (car elem)) ;; (capitalize (car elem))
(concat ;; (concat
(substring value 0 1) ;; (substring value 0 1)
(capitalize (substring value 1 2)) ;; (capitalize (substring value 1 2))
(substring value 2))))))) ;; (substring value 2)))))))
(yas-define-snippets ;; (yas-define-snippets
'latex-mode ;; 'latex-mode
(mapcar ;; (mapcar
(lambda (elem) ;; (lambda (elem)
(list (concat wtf/latex-greek-prefix (car elem)) (cdr elem) (concat "Greek letter " (car elem)))) ;; (list (concat wtf/latex-greek-prefix (car elem)) (cdr elem) (concat "Greek letter " (car elem))))
swtf/greek-alphabet)) ;; swtf/greek-alphabet))
(setq wtf/english-alphabet (setq wtf/english-alphabet
'("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z")) '("a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z"))
@ -1602,9 +1733,13 @@
:ensure nil :ensure nil
:hook :hook
((python-mode ((python-mode
python-ts-mode
c-mode c-mode
c-ts-mode
c++-mode c++-mode
c++-ts-mode
tex-mode tex-mode
LaTeX-mode
) . (lambda () (progn ) . (lambda () (progn
(eglot-ensure) (eglot-ensure)
(add-hook 'before-save-hook 'eglot-format nil 'local)))) (add-hook 'before-save-hook 'eglot-format nil 'local))))
@ -1856,11 +1991,47 @@
(:maildir "/Drafts" :key ?d) (:maildir "/Drafts" :key ?d)
(:maildir "/All Mail" :key ?a)))) (:maildir "/All Mail" :key ?a))))
(setq user-mail-address "leon.schwarzaeugl@gmail.com" (setq user-mail-address "leon@swarsel.win"
user-full-name "Leon Schwarzäugl") user-full-name "Leon Schwarzäugl")
(setq mu4e-hide-index-messages t) (setq mu4e-hide-index-messages t)
(setq mu4e-user-mail-address-list '(leon.schwarzaeugl@gmail.com leon@swarsel.win nautilus.dw@gmail.com mrswarsel@gmail.com))
(defun swarsel/mu4e-switch-account ()
(interactive)
(let ((account (completing-read "Select account: " mu4e-user-mail-address-list)))
(setq user-mail-address account)))
(defun swarsel/mu4e-rfs--matching-address ()
(cl-loop for to-data in (mu4e-message-field mu4e-compose-parent-message :to)
for to-email = (pcase to-data
(`(_ . email) email)
(x (mu4e-contact-email x)))
for to-name = (pcase to-data
(`(_ . name) name)
(x (mu4e-contact-name x)))
when (mu4e-user-mail-address-p to-email)
return (list to-name to-email)))
(defun swarsel/mu4e-send-from-correct-address ()
(when mu4e-compose-parent-message
(save-excursion
(when-let ((dest (swarsel/mu4e-rfs--matching-address)))
(cl-destructuring-bind (from-user from-addr) dest
(setq user-mail-address from-addr)
(message-position-on-field "From")
(message-beginning-of-line)
(delete-region (point) (line-end-position))
(insert (format "%s <%s>" (or from-user user-full-name) from-addr)))))))
(defun swarsel/mu4e-restore-default ()
(setq user-mail-address "leon@swarsel.win"
user-full-name "Leon Schwarzäugl"))
(add-hook 'mu4e-compose-mode-hook #'swarsel/mu4e-send-from-correct-address)
(add-hook 'mu4e-compose-post-hook #'swarsel/mu4e-restore-default)
(use-package mu4e-alert) (use-package mu4e-alert)
(mu4e-alert-set-default-style 'libnotify) (mu4e-alert-set-default-style 'libnotify)
(add-hook 'after-init-hook #'mu4e-alert-enable-notifications) (add-hook 'after-init-hook #'mu4e-alert-enable-notifications)

0
scripts/checkelement.sh Normal file → Executable file
View file

11
scripts/toggle_opacity.sh Executable file
View file

@ -0,0 +1,11 @@
#!/bin/bash
swaymsg opacity plus 0.01
if [ $? -eq 0 ]; then
# opacity was not 1, we toggle off
swaymsg opacity 1
else
# opacity was 1, we toggle on
swaymsg opacity 0.95
fi

View file

@ -3,6 +3,7 @@ nautilus: ENC[AES256_GCM,data:KTBIwO/m/O3RfYBf0kTdgM83mQ==,iv:fCVfS3eYE0F9Jhju+u
leon: ENC[AES256_GCM,data:5OAaO/8XiOJEUicx+otLoUUG9w==,iv:cxoNYOQCFIjX53ZgaL/Pu4ZDeL2EByClCIWG2JcRHMw=,tag:954bA4bjcLZsv2hFbtykSQ==,type:str] leon: ENC[AES256_GCM,data:5OAaO/8XiOJEUicx+otLoUUG9w==,iv:cxoNYOQCFIjX53ZgaL/Pu4ZDeL2EByClCIWG2JcRHMw=,tag:954bA4bjcLZsv2hFbtykSQ==,type:str]
caldav: ENC[AES256_GCM,data:CfWibtX+/BJcpXJNlpO8dpYJsdORzQZX5pEXX82CB2z+ZpIhIF66+x1GsXFFgP+MnQOS6O7hSUgckxtJBh7Bmy9jLmcdf3VMwnaAcg==,iv:bcahyj8MXSxvFOveFnXbEWHG03yHURb2zWelT5MiDo0=,tag:EguaYYuYNZUQlrKE8zjjrQ==,type:str] caldav: ENC[AES256_GCM,data:CfWibtX+/BJcpXJNlpO8dpYJsdORzQZX5pEXX82CB2z+ZpIhIF66+x1GsXFFgP+MnQOS6O7hSUgckxtJBh7Bmy9jLmcdf3VMwnaAcg==,iv:bcahyj8MXSxvFOveFnXbEWHG03yHURb2zWelT5MiDo0=,tag:EguaYYuYNZUQlrKE8zjjrQ==,type:str]
restic: ENC[AES256_GCM,data:YZv3dsx2U1XHfv4=,iv:82WoS3n6nlZpPLrwKFRiYwVSvB4R3AfQQDSR6vjiyno=,tag:Y88Lz2i43UEjUduUmfz/OQ==,type:str] restic: ENC[AES256_GCM,data:YZv3dsx2U1XHfv4=,iv:82WoS3n6nlZpPLrwKFRiYwVSvB4R3AfQQDSR6vjiyno=,tag:Y88Lz2i43UEjUduUmfz/OQ==,type:str]
swarselmail: ENC[AES256_GCM,data:QqOGUsip/nmbwFcCX5EhM9u3hCNN4onZpsQAg6qS6lw=,iv:LvQEHkhHJ7+7r4iV1VhxxPW23hJ+h6RMcNIX3NTlB0Y=,tag:/+iH0P/Dmc5m6DLUeUikGw==,type:str]
sops: sops:
kms: [] kms: []
gcp_kms: [] gcp_kms: []
@ -45,8 +46,8 @@ sops:
Q0NTRzR0cFVPT2phTlUyL0phU25TdncKD/4ZFw/oR2FEm0U8hUkF6ts5AkxfdXrS Q0NTRzR0cFVPT2phTlUyL0phU25TdncKD/4ZFw/oR2FEm0U8hUkF6ts5AkxfdXrS
2KdJTSXqy+UmbMHSoapcMQoeaOkfpIpmHZZzwhHzOBd3YPtBYMc91Q== 2KdJTSXqy+UmbMHSoapcMQoeaOkfpIpmHZZzwhHzOBd3YPtBYMc91Q==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2024-02-11T19:37:40Z" lastmodified: "2024-05-29T13:25:38Z"
mac: ENC[AES256_GCM,data:uPzSGAx+X5TAlctEZxao8GskyI/IcMP3zGeVPOLLcK9aw5/lsv2bYd1HUDduoWwQevnuV49//aFSYGIMIfr2bXIrrPkStsv+MQyyUDRdX2S8dK8vsQstH6cmq/xMOtIJekfvBH/ED+46oW7yCwkqYM6NWgrqBWocWAbLTV4MSzQ=,iv:xNN0dpID4eafpyFWN3flIt6b0PKWcxeXu01sxrANlRU=,tag:Qv49O+BkPiSs/Tk8+9LwBw==,type:str] mac: ENC[AES256_GCM,data:4zcLmHkzyg4UEHsDYNEKQ6gmgHHBquGWd2hMVYHg/1k2XPd24mNKOPSj9yLxJKkXKpKRRLi6M0HyxbSeONnP+YiNEvmjt9RM8DqOz+ykG7IPmnVUaLtWysS1aM46fUFBTQFhneZ3flypRbByHtaA7k+SIp86249A3ooffL0HWyY=,iv:SC7dfSEhesTCI2M8PRKUYCIWynlu1l2oW4wgCvtvnuw=,tag:u40eCLDX14/aJRJRSeb1GQ==,type:str]
pgp: pgp:
- created_at: "2024-02-07T21:17:55Z" - created_at: "2024-02-07T21:17:55Z"
enc: |- enc: |-