]> git.armaanb.net Git - config.org.git/blobdiff - config.org
Update mail setup
[config.org.git] / config.org
index ea6a389234b47938cbdab8d7b0286c86eb47367f..be4c70bbbb8ab80fd6a3ae63e623bdd98601b795 100644 (file)
@@ -6,7 +6,7 @@
 * Welcome
 Welcome to my system configuration! This file contains my Emacs configuration, but also my config files for many of the other programs on my system!
 ** Compatability
 * Welcome
 Welcome to my system configuration! This file contains my Emacs configuration, but also my config files for many of the other programs on my system!
 ** Compatability
-I am currently using Emacs 28 with native compilation, so some settings and packages may not be available for older versions of Emacs. This is a purely personal configuration, so while I can guarantee that it works on my setup, it might not work for you.
+I am currently using Emacs 27.2 on Linux, so some settings and packages may not be available for older versions of Emacs. This is a purely personal configuration, so while I can guarantee that it works on my setup, it might not work for you.
 ** Choices
 I chose to create a powerful, yet not overly heavy Emacs configuration. Things like a fancy modeline, icons, or LSP mode do not increase my productivity, and create visual clutter, and thus have been excluded.
 
 ** Choices
 I chose to create a powerful, yet not overly heavy Emacs configuration. Things like a fancy modeline, icons, or LSP mode do not increase my productivity, and create visual clutter, and thus have been excluded.
 
@@ -76,7 +76,8 @@ JetBrains Mono is a great programming font with ligatures. The "NF" means that i
        "[||]" "[<" "[|" "{|" "?." "?=" "?:" "##" "###" "####" "#["
        "#{" "#=" "#!" "#:" "#_(" "#_" "#?" "#(" ";;" "_|_" "__" "~~"
        "~~>" "~>" "~-" "~@" "$>" "^=" "]#"))
        "[||]" "[<" "[|" "{|" "?." "?=" "?:" "##" "###" "####" "#["
        "#{" "#=" "#!" "#:" "#_(" "#_" "#?" "#(" ";;" "_|_" "__" "~~"
        "~~>" "~>" "~-" "~@" "$>" "^=" "]#"))
-    (global-ligature-mode t))
+    ;; (global-ligature-mode t))
+    )
 #+end_src
 ** Line numbers
 Display relative line numbers except in certain modes.
 #+end_src
 ** Line numbers
 Display relative line numbers except in certain modes.
@@ -201,7 +202,11 @@ Makes commenting super easy
 ** Undo redo
 Fix the oopsies!
 #+begin_src emacs-lisp
 ** Undo redo
 Fix the oopsies!
 #+begin_src emacs-lisp
-  (evil-set-undo-system 'undo-redo)
+  (use-package undo-fu
+    :config (evil-set-undo-system 'undo-fu))
+
+  (use-package undo-fu-session
+    :config (global-undo-fu-session-mode))
 #+end_src
 ** Number incrementing
 Add back C-a/C-x bindings.
 #+end_src
 ** Number incrementing
 Add back C-a/C-x bindings.
@@ -234,7 +239,7 @@ Add back C-a/C-x bindings.
     :custom
     (org-ellipsis " ▾")
     (org-agenda-start-with-log-mode t)
     :custom
     (org-ellipsis " ▾")
     (org-agenda-start-with-log-mode t)
-    (org-agenda-files (quote ("~/Org/tasks.org" "~/Org/break.org")))
+    (org-agenda-files (quote ("~/org/tasks.org")))
     (org-log-done 'time)
     (org-log-into-drawer t)
     (org-src-tab-acts-natively t)
     (org-log-done 'time)
     (org-log-into-drawer t)
     (org-src-tab-acts-natively t)
@@ -254,18 +259,20 @@ Define templates for lots of common structure elements. Mostly just used within
     :after org
     :straight (:type built-in)
     :config
     :after org
     :straight (:type built-in)
     :config
-    (dolist (addition '(("el" . "src emacs-lisp")
-                        ("el" . "src emacs-lisp")
-                        ("sp" . "src conf :tangle ~/.spectrwm.conf")
+    (dolist (addition '(
+                        ("ag" . "src conf :tangle ~/.gnupg/gpg-agent.conf")
                         ("ash" . "src shell :tangle ~/.config/ash/ashrc")
                         ("ash" . "src shell :tangle ~/.config/ash/ashrc")
-                        ("pi" . "src conf :tangle ~/.config/picom/picom.conf")
+                        ("el" . "src emacs-lisp")
                         ("git" . "src conf :tangle ~/.gitconfig")
                         ("git" . "src conf :tangle ~/.gitconfig")
-                        ("za" . "src conf :tangle ~/.config/zathura/zathurarc")
-                        ("xr" . "src conf :tangle ~/.Xresources")
-                        ("tm" . "src conf :tangle ~/.tmux.conf")
                         ("gp" . "src conf :tangle ~/.gnupg/gpg.conf")
                         ("gp" . "src conf :tangle ~/.gnupg/gpg.conf")
-                        ("ag" . "src conf :tangle ~/.gnupg/gpg-agent.conf")
-                        ("xm" . "src conf :tangle ~/.config/xmodmap")))
+                        ("mb" . "src conf :tangle ~/.mbsyncrc")
+                        ("pi" . "src conf :tangle ~/.config/picom/picom.conf")
+                        ("sp" . "src conf :tangle ~/.spectrwm.conf")
+                        ("tm" . "src conf :tangle ~/.tmux.conf")
+                        ("xm" . "src conf :tangle ~/.config/xmodmap")
+                        ("xr" . "src conf :tangle ~/.Xresources")
+                        ("za" . "src conf :tangle ~/.config/zathura/zathurarc")
+                        ))
       (add-to-list 'org-structure-template-alist addition)))
 #+end_src
 * Autocompletion
       (add-to-list 'org-structure-template-alist addition)))
 #+end_src
 * Autocompletion
@@ -310,13 +317,59 @@ Use elfeed for reading RSS. I have another file with all the feeds in it that I'
     :bind (:map elfeed-search-mode-map ("C-c C-o" . 'elfeed-show-visit)))
 #+end_src
 ** Email
     :bind (:map elfeed-search-mode-map ("C-c C-o" . 'elfeed-show-visit)))
 #+end_src
 ** Email
-Use mu4e for reading emails.
+Use mu4e and mbsync for reading emails.
+
 Contexts are a not very well known feature of mu4e that makes it super easy to manage multiple accounts. Much better than some of the hacky methods and external packages that I've seen.
 Contexts are a not very well known feature of mu4e that makes it super easy to manage multiple accounts. Much better than some of the hacky methods and external packages that I've seen.
-*** TODO Switch to mbsync
-=offlineimap= really crappy (slow and requires python2), and I need to replace it with =mbsync=.
-*** TODO Include mbsync/offlineimap config
-*** TODO Split up and document this config a bit
-*** Setup
+*** mbsync
+**** General
+#+begin_src conf :tangle ~/.mbsyncrc
+  Create Near
+  Expunge Both
+  SyncState *
+#+end_src
+**** Personal
+#+begin_src conf :tangle ~/.mbsyncrc
+  IMAPStore personal-remote
+  Host imap.mailbox.org
+  User me@armaanb.net
+  PassCmd "pash show login.mailbox.org/me@armaanb.net | head -n 1"
+
+  MaildirStore personal-local
+  Path ~/mail/personal/
+  Inbox ~/mail/personal/Inbox
+  Subfolders Verbatim
+
+  Channel personal-channel
+  Far :personal-remote:
+  Near :personal-local:
+  Patterns "INBOX*" "Drafts" "Archive" "Sent" "Trash"
+
+  Group personal
+  Channel personal-channel
+#+end_src
+**** School
+#+begin_src conf :tangle ~/.mbsyncrc
+  IMAPStore school-remote
+  SSLType IMAPS
+  Host imap.gmail.com
+  User abhojwani22@nobles.edu
+  PassCmd "pash show gmail-otp/abhojwani22@nobles.edu | head -n 1"
+
+  MaildirStore school-local
+  Path ~/mail/school/
+  Inbox ~/mail/school/Inbox
+  Subfolders Verbatim
+
+  Channel school-channel
+  Far :school-remote:
+  Near :school-local:
+  Patterns * ![Gmail]* "[Gmail]/Sent Mail" "[Gmail]/All Mail"
+
+  Group school
+  Channel school-channel
+#+end_src
+*** mu4e
+**** Setup
 #+begin_src emacs-lisp
   (use-package smtpmail
     :straight (:type built-in))
 #+begin_src emacs-lisp
   (use-package smtpmail
     :straight (:type built-in))
@@ -330,7 +383,7 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
           smtpmail-stream-type 'ssl
           smtpmail-smtp-service '465
           mu4e-change-filenames-when-moving t
           smtpmail-stream-type 'ssl
           smtpmail-smtp-service '465
           mu4e-change-filenames-when-moving t
-          mu4e-get-mail-command "offlineimap -q"
+          mu4e-get-mail-command "mbsync -a"
           message-citation-line-format "On %a %d %b %Y at %R, %f wrote:\n"
           message-citation-line-function 'message-insert-formatted-citation-line
           mu4e-completing-read-function 'ivy-completing-read
           message-citation-line-format "On %a %d %b %Y at %R, %f wrote:\n"
           message-citation-line-function 'message-insert-formatted-citation-line
           mu4e-completing-read-function 'ivy-completing-read
@@ -372,13 +425,13 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
                        (smtpmail-smtp-server . "smtp.mailbox.org")))))
     (add-to-list 'mu4e-bookmarks
                  '(:name "Unified inbox"
                        (smtpmail-smtp-server . "smtp.mailbox.org")))))
     (add-to-list 'mu4e-bookmarks
                  '(:name "Unified inbox"
-                         :query "maildir:\"/personal/INBOX\" or maildir:\"/school/INBOX\""
+                         :query "maildir:\"/personal/Inbox\" or maildir:\"/school/Inbox\""
                          :key ?b))
     :hook ((mu4e-compose-mode . flyspell-mode)
            (message-send-hook . (lambda () (unless (yes-or-no-p "Ya sure 'bout that?")
                                              (signal 'quit nil))))))
 #+end_src
                          :key ?b))
     :hook ((mu4e-compose-mode . flyspell-mode)
            (message-send-hook . (lambda () (unless (yes-or-no-p "Ya sure 'bout that?")
                                              (signal 'quit nil))))))
 #+end_src
-*** Discourage Gnus from displaying HTML emails
+**** Discourage Gnus from displaying HTML emails
 #+begin_src emacs-lisp
   (with-eval-after-load "mm-decode"
     (add-to-list 'mm-discouraged-alternatives "text/html")
 #+begin_src emacs-lisp
   (with-eval-after-load "mm-decode"
     (add-to-list 'mm-discouraged-alternatives "text/html")
@@ -553,12 +606,8 @@ I never use this, but apparently its very powerful. Another item on my todo list
   (use-package projectile
     :config (projectile-mode)
     :custom ((projectile-completion-system 'ivy))
   (use-package projectile
     :config (projectile-mode)
     :custom ((projectile-completion-system 'ivy))
-    :bind-keymap
-    ("C-c p" . projectile-command-map)
-    :init
-    (when (file-directory-p "~/src")
-      (setq projectile-project-search-path '("~/src")))
-    (setq projectile-switch-project-action #'projectile-dired))
+    :bind-keymap ("C-c p" . projectile-command-map)
+    :init (setq projectile-switch-project-action #'projectile-dired))
 
   (use-package counsel-projectile
     :after projectile
 
   (use-package counsel-projectile
     :after projectile
@@ -602,13 +651,28 @@ A very good Git interface.
     :straight (git-email :repo "https://git.sr.ht/~yoctocell/git-email")
     :config (git-email-piem-mode))
 #+end_src
     :straight (git-email :repo "https://git.sr.ht/~yoctocell/git-email")
     :config (git-email-piem-mode))
 #+end_src
-* General text editing
-** Indentation
-Automatically indent after every change. I'm not sure how much I like this. It slows down the editor and code sometimes ends up in a half-indented state meaning I have to manually reformat using "==" anyways.
-#+begin_src emacs-lisp
-  (use-package aggressive-indent
-    :config (global-aggressive-indent-mode))
+** C
+Modified from https://eklitzke.org/smarter-emacs-clang-format.
+
+Style is basically ddevault's style guide but with 4 spaces instead of 8 char tabs.
+#+begin_src emacs-lisp
+  (use-package clang-format
+    :custom (clang-format-style "{
+        BasedOnStyle: llvm,
+        AlwaysBreakAfterReturnType: AllDefinitions,
+        IndentWidth: 4,
+        }"))
+
+  (defun clang-format-buffer-smart ()
+    "Reformat buffer if .clang-format exists in the projectile root."
+    (when (file-exists-p (expand-file-name ".clang-format" (projectile-project-root)))
+      (when (if (eq major-mode 'c-mode))
+        (message "Formatting with clang-format...")
+        (clang-format-buffer))))
+
+  (add-hook 'before-save-hook 'clang-format-buffer-smart nil)
 #+end_src
 #+end_src
+* General text editing
 ** Spell checking
 Spell check in text mode, and in prog-mode comments.
 #+begin_src emacs-lisp
 ** Spell checking
 Spell check in text mode, and in prog-mode comments.
 #+begin_src emacs-lisp
@@ -815,6 +879,8 @@ I'm not a huge fan of how spectrwm handles keybindings, probably my biggest grip
   program[calendar] = emacsclient -ce '(acheam-calendar)'
   program[calc] = emacsclient -ce '(progn (calc) (windmove-up) (delete-window))'
   program[emacs] = emacsclient -c
   program[calendar] = emacsclient -ce '(acheam-calendar)'
   program[calc] = emacsclient -ce '(progn (calc) (windmove-up) (delete-window))'
   program[emacs] = emacsclient -c
+  program[bookmarks] = /home/armaa/src/bin/bookmarks
+  program[browser] = chorizo
 
   bind[email] = MOD+Control+1
   bind[irc] = MOD+Control+2
 
   bind[email] = MOD+Control+1
   bind[irc] = MOD+Control+2
@@ -822,12 +888,15 @@ I'm not a huge fan of how spectrwm handles keybindings, probably my biggest grip
   bind[calendar] = MOD+Control+4
   bind[calc] = MOD+Control+5
   bind[emacs] = MOD+Control+Return
   bind[calendar] = MOD+Control+4
   bind[calc] = MOD+Control+5
   bind[emacs] = MOD+Control+Return
+  bind[bookmarks] = MOD+Control+o
+  bind[browser] = MOD+Control+p
 #+end_src
 *** Quirks
 Float some specific programs by default.
 #+begin_src conf :tangle ~/.spectrwm.conf
   quirk[Castle Menu] = FLOAT
   quirk[momen] = FLOAT
 #+end_src
 *** Quirks
 Float some specific programs by default.
 #+begin_src conf :tangle ~/.spectrwm.conf
   quirk[Castle Menu] = FLOAT
   quirk[momen] = FLOAT
+  quirk[pinentry-fltk] = FLOAT
 #+end_src
 ** Ash
 *** Options
 #+end_src
 ** Ash
 *** Options
@@ -851,7 +920,7 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
   }
 
   _uup() {
   }
 
   _uup() {
-      rsync "$1" "root@armaanb.net:/var/ftp/pub/$2" --chmod 644
+      rsync "$1" "armaa@armaanb.net:/srv/ftp/pub/$2" --chmod 644 --progress
   }
 
   ufile() {
   }
 
   ufile() {
@@ -888,22 +957,21 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
   export LC_ALL="en_US.UTF-8"
   export LC_CTYPE="en_US.UTF-8"
   export LANGUAGE="en_US.UTF-8"
   export LC_ALL="en_US.UTF-8"
   export LC_CTYPE="en_US.UTF-8"
   export LANGUAGE="en_US.UTF-8"
-
-  export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig"
+  export TZ="America/New_York"
 
   export KISS_PATH=""
 
   export KISS_PATH=""
+  export KISS_PATH="$KISS_PATH:$HOME/repos/personal"
   export KISS_PATH="$KISS_PATH:$HOME/repos/bin/bin"
   export KISS_PATH="$KISS_PATH:$HOME/repos/bin/bin"
-  export KISS_PATH="$KISS_PATH:$HOME/repos/community/community"
   export KISS_PATH="$KISS_PATH:$HOME/repos/main/core"
   export KISS_PATH="$KISS_PATH:$HOME/repos/main/extra"
   export KISS_PATH="$KISS_PATH:$HOME/repos/main/xorg"
   export KISS_PATH="$KISS_PATH:$HOME/repos/main/core"
   export KISS_PATH="$KISS_PATH:$HOME/repos/main/extra"
   export KISS_PATH="$KISS_PATH:$HOME/repos/main/xorg"
-  export KISS_PATH="$KISS_PATH:$HOME/repos/main/xorg"
+  export KISS_PATH="$KISS_PATH:$HOME/repos/community/community"
   export KISS_PATH="$KISS_PATH:$HOME/repos/mid/ports"
   export KISS_PATH="$KISS_PATH:$HOME/repos/mid/ports"
-  export KISS_PATH="$KISS_PATH:$HOME/repos/personal"
 
   export CFLAGS="-O3 -pipe -march=native"
   export CXXFLAGS="$CFLAGS"
   export MAKEFLAGS="-j$(nproc)"
 
   export CFLAGS="-O3 -pipe -march=native"
   export CXXFLAGS="$CFLAGS"
   export MAKEFLAGS="-j$(nproc)"
+  export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig"
 
   export XDG_DESKTOP_DIR="/dev/null"
   export XDG_DOCUMENTS_DIR="$HOME/documents"
 
   export XDG_DESKTOP_DIR="/dev/null"
   export XDG_DOCUMENTS_DIR="$HOME/documents"
@@ -911,12 +979,11 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
   export XDG_MUSIC_DIR="$HOME/music"
   export XDG_PICTURES_DIR="$HOME/pictures"
   export XDG_VIDEOS_DIR="$HOME/videos"
   export XDG_MUSIC_DIR="$HOME/music"
   export XDG_PICTURES_DIR="$HOME/pictures"
   export XDG_VIDEOS_DIR="$HOME/videos"
-
 #+end_src
 *** Aliases
 **** SSH
 #+begin_src shell :tangle ~/.config/ash/ashrc
 #+end_src
 *** Aliases
 **** SSH
 #+begin_src shell :tangle ~/.config/ash/ashrc
-  alias bhoji-drop='ssh -p 23 root@armaanb.net'
+  alias poki='ssh armaanb.net'
   alias irc='ssh root@armaanb.net -t abduco -A irc catgirl freenode'
   alias union='ssh 192.168.1.18'
   alias mine='ssh -p 23 root@pickupserver.cc'
   alias irc='ssh root@armaanb.net -t abduco -A irc catgirl freenode'
   alias union='ssh 192.168.1.18'
   alias mine='ssh -p 23 root@pickupserver.cc'
@@ -939,7 +1006,7 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
   alias ln='ln -v'
   alias grep='grep -in'
   alias mkdir='mkdir -pv'
   alias ln='ln -v'
   alias grep='grep -in'
   alias mkdir='mkdir -pv'
-  alias lanex='java -jar ~/.local/share/lxc/lanxchange.jar'
+  alias lanex='java -jar ~/.local/share/lxc/lanxchange.jar && rm lxc*'
   emacs() { $EDITOR "$@" & }
   alias vim="emacs"
 #+end_src
   emacs() { $EDITOR "$@" & }
   alias vim="emacs"
 #+end_src
@@ -957,14 +1024,14 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
   alias gps='gpg --keyserver keyserver.ubuntu.com --search-keys'
   alias gpp='gpg --keyserver keyserver.ubuntu.com --recv-key'
   alias plan='T=$(mktemp) && \
   alias gps='gpg --keyserver keyserver.ubuntu.com --search-keys'
   alias gpp='gpg --keyserver keyserver.ubuntu.com --recv-key'
   alias plan='T=$(mktemp) && \
-          rsync root@armaanb.net:/etc/finger/plan.txt "$T" && \
+          rsync armaanb.net:/home/armaa/plan.txt "$T" && \
           TT=$(mktemp) && \
           head -n -2 $T > $TT && \
           /bin/nvim $TT && \
           echo >> "$TT" && \
           echo "Last updated: $(date -R)" >> "$TT" && \
           fold -sw 72 "$TT" > "$T"| \
           TT=$(mktemp) && \
           head -n -2 $T > $TT && \
           /bin/nvim $TT && \
           echo >> "$TT" && \
           echo "Last updated: $(date -R)" >> "$TT" && \
           fold -sw 72 "$TT" > "$T"| \
-          rsync "$T" root@armaanb.net:/etc/finger/plan.txt && \
+          rsync "$T" armaanb.net:/home/armaa/plan.txt && \
           rm -f "$T"'
 #+end_src
 **** Virtual machines, chroots
           rm -f "$T"'
 #+end_src
 **** Virtual machines, chroots
@@ -1062,6 +1129,11 @@ This file is used for any GNU Readline programs. I use Emacs editing mode mostly
   gpgsign = true
   verbose = true
 #+end_src
   gpgsign = true
   verbose = true
 #+end_src
+*** Tag
+#+begin_src conf :tangle ~/.gitconfig
+  [tag]
+  gpgsign = true
+#+end_src
 ** Zathura
 The best document reader!
 *** Options
 ** Zathura
 The best document reader!
 *** Options
@@ -1144,27 +1216,21 @@ I use tmux in order to keep my st build light. Still learning how it works.
 #+end_src
 *** Agent
 #+begin_src conf :tangle ~/.gnupg/gpg-agent.conf
 #+end_src
 *** Agent
 #+begin_src conf :tangle ~/.gnupg/gpg-agent.conf
-  pinentry-program /sbin/pinentry-fltk
+  pinentry-program /sbin/pinentry
   max-cache-ttl 600
   default-cache-ttl 600
   allow-emacs-pinentry
 #+end_src
 ** Xmodmap
   max-cache-ttl 600
   default-cache-ttl 600
   allow-emacs-pinentry
 #+end_src
 ** Xmodmap
-#+begin_src conf :tangle ~/.config/xmodmap
-  !
+#+begin_src conf (if (eq system-name "frost.armaanb.net") ":tangle ~/.config/xmodmap")
   ! Unmap left super
   ! Unmap left super
-  !
   clear mod4
 
   clear mod4
 
-  !
   ! Turn right alt into super
   ! Turn right alt into super
-  !
   remove mod1 = Alt_R
   add mod4 = Alt_R
 
   remove mod1 = Alt_R
   add mod4 = Alt_R
 
-  !
   ! Swap caps and control
   ! Swap caps and control
-  !
   remove Lock = Caps_Lock
   remove Control = Control_L
   remove Lock = Control_L
   remove Lock = Caps_Lock
   remove Control = Control_L
   remove Lock = Control_L