]> git.armaanb.net Git - config.org.git/blobdiff - config.org
Update mail setup
[config.org.git] / config.org
index 610d0c7e154de5ebc52d10b4d5e1b34d661da655..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
-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.
 
@@ -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.
@@ -201,7 +202,11 @@ Makes commenting super easy
 ** 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.
@@ -234,7 +239,7 @@ Add back C-a/C-x bindings.
     :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)
@@ -254,18 +259,20 @@ Define templates for lots of common structure elements. Mostly just used within
     :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")
-                        ("pi" . "src conf :tangle ~/.config/picom/picom.conf")
+                        ("el" . "src emacs-lisp")
                         ("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")
-                        ("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
@@ -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
-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.
-*** 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))
@@ -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
-          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
@@ -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"
-                         :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
-*** 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")
@@ -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))
-    :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
@@ -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
-* 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
+* General text editing
 ** Spell checking
 Spell check in text mode, and in prog-mode comments.
 #+begin_src emacs-lisp
@@ -774,9 +838,9 @@ I'm not a huge fan of how spectrwm handles keybindings, probably my biggest grip
 **** WM actions
 #+begin_src conf :tangle ~/.spectrwm.conf
   program[term] = st -e tmux
-  program[screenshot_all] = flameshot gui
   program[notif] = /home/armaa/src/bin/setter status
   program[pass] = /home/armaa/src/bin/passmenu
+  program[lock] = slock
 
   bind[notif] = MOD+n
   bind[pass] = MOD+Shift+p
@@ -788,18 +852,12 @@ I'm not a huge fan of how spectrwm handles keybindings, probably my biggest grip
   program[pamute] = /home/armaa/src/bin/setter audio
   program[brigup] = /home/armaa/src/bin/setter brightness +10%
   program[brigdown] = /home/armaa/src/bin/setter brightness 10%-
-  program[next] = playerctl next
-  program[prev] = playerctl previous
-  program[pause] = playerctl play-pause
 
   bind[padown] = XF86AudioLowerVolume
   bind[paup] = XF86AudioRaiseVolume
   bind[pamute] = XF86AudioMute
   bind[brigdown] = XF86MonBrightnessDown
   bind[brigup] = XF86MonBrightnessUp
-  bind[pause] = XF86AudioPlay
-  bind[next] = XF86AudioNext
-  bind[prev] = XF86AudioPrev
 #+end_src
 **** HJKL
 #+begin_src conf :tangle ~/.spectrwm.conf
@@ -821,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[bookmarks] = /home/armaa/src/bin/bookmarks
+  program[browser] = chorizo
 
   bind[email] = MOD+Control+1
   bind[irc] = MOD+Control+2
@@ -828,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[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
+  quirk[pinentry-fltk] = FLOAT
 #+end_src
 ** Ash
 *** Options
@@ -857,7 +920,7 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
   }
 
   _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() {
@@ -883,35 +946,44 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac
   export GPG_TTY="$(tty)"
   export MANPAGER='nvim +Man!'
   export PAGER='less'
-
   export GTK_USE_PORTAL=1
+  export CDPATH=:~
 
   export PATH="/home/armaa/.local/bin:$PATH" # prioritize .local/bin
-  export PATH="/home/armaa/Code/scripts:$PATH" # prioritize my scripts
-  export PATH="/home/armaa/Code/scripts/bin:$PATH" # prioritize my bins
-  export PATH="$PATH:/home/armaa/.cargo/bin"
-  export PATH="$PATH:/home/armaa/.local/share/gem/ruby/2.7.0/bin"
+  export PATH="/home/armaa/src/bin:$PATH" # prioritize my bin
+  export PATH="//home/armaa/src/bin/bin:$PATH" # prioritize my bins
   export PATH="$PATH:/usr/sbin"
-  export PATH="$PATH:/opt/FreeTube/freetube"
 
   export LC_ALL="en_US.UTF-8"
   export LC_CTYPE="en_US.UTF-8"
   export LANGUAGE="en_US.UTF-8"
+  export TZ="America/New_York"
 
-  export CDPATH=:~
+  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/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/community/community"
+  export KISS_PATH="$KISS_PATH:$HOME/repos/mid/ports"
 
-  export KISS_PATH="/home/armaa/Virtual/kiss/home/armaa/kiss-repo"
-  export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-main/core"
-  export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-main/extra"
-  export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-main/xorg"
-  export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-main/testing"
-  export KISS_PATH="$KISS_PATH:/home/armaa/Clone/repo-community/community"
+  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_DOWNLOAD_DIR="$HOME/downloads"
+  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
-  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'
@@ -934,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 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
@@ -952,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) && \
-          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"| \
-          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
@@ -1057,6 +1129,11 @@ This file is used for any GNU Readline programs. I use Emacs editing mode mostly
   gpgsign = true
   verbose = true
 #+end_src
+*** Tag
+#+begin_src conf :tangle ~/.gitconfig
+  [tag]
+  gpgsign = true
+#+end_src
 ** Zathura
 The best document reader!
 *** Options
@@ -1139,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
-  pinentry-program /sbin/pinentry-fltk
+  pinentry-program /sbin/pinentry
   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
-  !
   clear mod4
 
-  !
   ! Turn right alt into super
-  !
   remove mod1 = Alt_R
   add mod4 = Alt_R
 
-  !
   ! Swap caps and control
-  !
   remove Lock = Caps_Lock
   remove Control = Control_L
   remove Lock = Control_L