]> git.armaanb.net Git - config.org.git/blobdiff - config.org
Add org-present
[config.org.git] / config.org
index b5308f5c6c4d04d119076cc22b20326343ec5685..2fe2571c2d9265c25e5ca965605d10a753f98ef2 100644 (file)
@@ -48,7 +48,7 @@ Its fine to set this here because I run Emacs in daemon mode, but if I were not,
 #+begin_src emacs-lisp
   (setq modus-themes-slanted-constructs t
         modus-themes-bold-constructs t
-        modus-themes-org-blocks 'rainbow
+        modus-themes-org-blocks 'grayscale
         modus-themes-mode-line '3d
         modus-themes-scale-headings t
         modus-themes-region 'no-extend
@@ -68,17 +68,18 @@ Great programming font with ligatures.
     :config
     (ligature-set-ligatures
      '(prog-mode text-mode)
-     '("-|" "-~" "---" "-<<" "-<" "--" "->" "->>" "-->" "///" "/=" "/=="
-       "/>" "//" "/*" "*>" "***" "*/" "<-" "<<-" "<=>" "<=" "<|" "<||"
-       "<|||" "<|>" "<:" "<>" "<-<" "<<<" "<==" "<<=" "<=<" "<==>" "<-|"
-       "<<" "<~>" "<=|" "<~~" "<~" "<$>" "<$" "<+>" "<+" "</>" "</" "<*"
-       "<*>" "<->" "<!--" ":>" ":<" ":::" "::" ":?" ":?>" ":=" "::=" "=>>"
-       "==>" "=/=" "=!=" "=>" "===" "=:=" "==" "!==" "!!" "!=" ">]" ">:"
-       ">>-" ">>=" ">=>" ">>>" ">-" ">=" "&&&" "&&" "|||>" "||>" "|>" "|]"
-       "|}" "|=>" "|->" "|=" "||-" "|-" "||=" "||" ".." ".?" ".=" ".-" "..<"
-       "..." "+++" "+>" "++" "[||]" "[<" "[|" "{|" "??" "?." "?=" "?:" "##"
-       "###" "####" "#[" "#{" "#=" "#!" "#:" "#_(" "#_" "#?" "#(" ";;" "_|_"
-       "__" "~~" "~~>" "~>" "~-" "~@" "$>" "^=" "]#"))
+     '("-|" "-~" "---" "-<<" "-<" "--" "->" "->>" "-->" "/=" "/=="
+       "/>" "//" "/*" "*>" "*/" "<-" "<<-" "<=>" "<=" "<|" "<||"
+       "<|||" "<|>" "<:" "<>" "<-<" "<<<" "<==" "<<=" "<=<" "<==>"
+       "<-|" "<<" "<~>" "<=|" "<~~" "<~" "<$>" "<$" "<+>" "<+" "</>"
+       "</" "<*" "<*>" "<->" "<!--" ":>" ":<" ":::" "::" ":?" ":?>"
+       ":=" "::=" "=>>" "==>" "=/=" "=!=" "=>" "===" "=:=" "==" "!=="
+       "!!" "!=" ">]" ">:" ">>-" ">>=" ">=>" ">>>" ">-" ">=" "&&&"
+       "&&" "|||>" "||>" "|>" "|]" "|}" "|=>" "|->" "|=" "||-" "|-"
+       "||=" "||" ".." ".?" ".=" ".-" "..<" "..." "+++" "+>" "++"
+       "[||]" "[<" "[|" "{|" "??" "?." "?=" "?:" "##" "###" "####"
+       "#[" "#{" "#=" "#!" "#:" "#_(" "#_" "#?" "#(" ";;" "_|_" "__"
+       "~~" "~~>" "~>" "~-" "~@" "$>" "^=" "]#"))
     (global-ligature-mode t))
 #+end_src
 *** Emoji
@@ -129,6 +130,12 @@ Show current column and file size.
   (use-package minions
     :config (minions-mode))
 #+end_src
+** Word count
+#+begin_src emacs-lisp
+ (use-package wc-mode
+   :straight (wc-mode :type git :host github :repo "bnbeckwith/wc-mode")
+   :hook (text-mode-hook . wc-mode))
+#+end_src
 ** Ruler
 Show a ruler at a certain number of chars depending on mode.
 #+begin_src emacs-lisp
@@ -148,11 +155,11 @@ Highlight when changes are made.
     :config (evil-goggles-mode)
     (evil-goggles-use-diff-faces))
 #+end_src
-** Highlight "TODO" comments
+** Highlight TODOs in comments
 #+begin_src emacs-lisp
   (use-package hl-todo
     :straight (hl-todo :type git :host github :repo "tarsius/hl-todo")
-    :config (global-hl-todo-mode))
+    :config (global-hl-todo-mode 1))
 #+end_src
 ** Don't lose cursor
 #+begin_src emacs-lisp
@@ -219,16 +226,10 @@ tpope prevails!
                 ("gc" . evilnc-comment-or-uncomment-lines))
     :custom (evilnc-invert-comment-line-by-line nil))
 #+end_src
-** Undo tree
+** Undo redo
 Fix the oopsies!
 #+begin_src emacs-lisp
-  (use-package undo-tree
-    :custom
-    (undo-tree-auto-save-history t)
-    (undo-tree-history-directory-alist '(("." . "~/.emacs.d/undo-tree")))
-    :config
-    (global-undo-tree-mode)
-    (evil-set-undo-system 'undo-tree))
+  (evil-set-undo-system 'undo-redo)
 #+end_src
 ** Number incrementing
 Add back C-a/C-x
@@ -269,19 +270,15 @@ Add back C-a/C-x
     :custom
     (org-ellipsis " ▾")
     (org-agenda-start-with-log-mode t)
+    (org-agenda-files (quote ("~/Org/tasks.org" "~/Org/break.org")))
     (org-log-done 'time)
     (org-log-into-drawer t)
     (org-src-tab-acts-natively t)
     (org-src-fontify-natively t)
     (org-startup-indented t)
     (org-hide-emphasis-markers t)
-    (org-fontify-whole-block-delimiter-line nil))
-#+end_src
-** Automatically tangle
-#+begin_src emacs-lisp
-  (add-hook 'org-mode-hook
-            (lambda () (add-hook 'after-save-hook #'org-babel-tangle
-                                 :append :local)))
+    (org-fontify-whole-block-delimiter-line nil)
+    :bind ("C-c a" . org-agenda))
 #+end_src
 ** Tempo
 #+begin_src emacs-lisp
@@ -296,7 +293,15 @@ Add back C-a/C-x
     (add-to-list 'org-structure-template-alist '("al" . "src yml :tangle ~/.config/alacritty/alacritty.yml"))
     (add-to-list 'org-structure-template-alist '("ipy" . "src python :tangle ~/.ipython/"))
     (add-to-list 'org-structure-template-alist '("pi" . "src conf :tangle ~/.config/picom/picom.conf"))
-    (add-to-list 'org-structure-template-alist '("git" . "src plain :tangle ~/.gitconfig")))
+    (add-to-list 'org-structure-template-alist '("git" . "src conf :tangle ~/.gitconfig"))
+    (add-to-list 'org-structure-template-alist '("du" . "src conf :tangle ~/.config/dunst/dunstrc"))
+    (add-to-list 'org-structure-template-alist '("ro" . "src plain :tangle ~/.config/rofi/config.rasi"))
+    (add-to-list 'org-structure-template-alist '("za" . "src plain :tangle ~/.config/zathura/zathurarc")))
+#+end_src
+** Presentations
+#+begin_src emacs-lisp
+  (use-package org-present
+    :straight (org-present :type git :host github :repo "rlister/org-present"))
 #+end_src
 * Autocompletion
 ** Ivy
@@ -307,13 +312,13 @@ Simple, but not too simple autocompletion.
            :map ivy-minibuffer-map
            ("TAB" . ivy-alt-done)
            :map ivy-switch-buffer-map
-           ("C-d" . ivy-switch-buffer-kill))
+           ("M-d" . ivy-switch-buffer-kill))
     :config (ivy-mode))
 #+end_src
 ** Ivy-rich
 #+begin_src emacs-lisp
   (use-package ivy-rich
-    :after ivy
+    :after (ivy counsel)
     :config (ivy-rich-mode))
 #+end_src
 ** Counsel
@@ -371,17 +376,17 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
     :load-path "/usr/share/emacs/site-lisp/mu4e"
     :bind (("C-c m" . mu4e))
     :config
-
     (setq user-full-name "Armaan Bhojwani"
           smtpmail-local-domain "armaanb.net"
           smtpmail-stream-type 'ssl
           smtpmail-smtp-service '465
           mu4e-change-filenames-when-moving t
-          message-kill-buffer-on-exit t
           mu4e-get-mail-command "offlineimap -q"
           message-citation-line-format "On %a %d %b %Y at %R, %f wrote:\n"
           message-citation-line-function 'message-insert-formatted-citation-line
-          mu4e-context-policy "pick-first"
+          mu4e-completing-read-function 'ivy-completing-read
+          mu4e-confirm-quit nil
+          mail-user-agent 'mu4e-user-agent
           mu4e-contexts
           `( ,(make-mu4e-context
                :name "school"
@@ -390,14 +395,14 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
                :match-func (lambda (msg)
                              (when msg
                                (string-match-p "^/school" (mu4e-message-field msg :maildir))))
-               :vars '( (user-mail-address . "abhojwani22@nobles.edu")
-                        (mu4e-sent-folder . "/school/Sent")
-                        (mu4e-drafts-folder . "/school/Drafts")
-                        (mu4e-trash-folder . "/school/Trash")
-                        (mu4e-refile-folder . "/school/Archive")
-                        (user-mail-address . "abhojwani22@nobles.edu")
-                        (smtpmail-smtp-user . "abhojwani22@nobles.edu")
-                        (smtpmail-smtp-server . "smtp.gmail.com")))
+               :vars '((user-mail-address . "abhojwani22@nobles.edu")
+                       (mu4e-sent-folder . "/school/Sent")
+                       (mu4e-drafts-folder . "/school/Drafts")
+                       (mu4e-trash-folder . "/school/Trash")
+                       (mu4e-refile-folder . "/school/Archive")
+                       (user-mail-address . "abhojwani22@nobles.edu")
+                       (smtpmail-smtp-user . "abhojwani22@nobles.edu")
+                       (smtpmail-smtp-server . "smtp.gmail.com")))
              ,(make-mu4e-context
                :name "personal"
                :enter-func (lambda () (mu4e-message "Entering personal context"))
@@ -405,8 +410,7 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
                :match-func (lambda (msg)
                              (when msg
                                (string-match-p "^/personal" (mu4e-message-field msg :maildir))))
-               :vars '(
-                       (mu4e-sent-folder . "/personal/Sent")
+               :vars '((mu4e-sent-folder . "/personal/Sent")
                        (mu4e-drafts-folder . "/personal/Drafts")
                        (mu4e-trash-folder . "/personal/Trash")
                        (mu4e-refile-folder . "/personal/Archive")
@@ -415,12 +419,12 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
                        (smtpmail-smtp-server "smtp.mailbox.org")
                        (mu4e-drafts-folder . "/school/Drafts")
                        (mu4e-trash-folder . "/school/Trash")))))
-
     (add-to-list 'mu4e-bookmarks
-                 '(
-                   :name  "Unified inbox"
-                   :query "maildir:\"/personal/INBOX\" or maildir:\"/school/INBOX\""
-                   :key   ?b)))
+                 '(:name "Unified inbox"
+                         :query "maildir:\"/personal/INBOX\" or maildir:\"/school/INBOX\""
+                         :key ?b))
+    :hook ((mu4e-compose-mode . flyspell-mode)
+           (mu4e-view-mode-hook . turn-on-visual-line-mode)))
 #+end_src
 ** Calendar
 #+begin_src emacs-lisp
@@ -445,33 +449,82 @@ Contexts are a not very well known feature of mu4e that makes it super easy to m
 Another file has more specific network configuration.
 #+begin_src emacs-lisp
   (use-package circe
-    :config
-    (load "~/.emacs.d/irc.el"))
-  (use-package circe-color-nicks
-    :after circe
-    :straight (:type built-in))
+    :config (load-file "~/.emacs.d/irc.el"))
+
   (use-package circe-chanop
-    :after circe
-    :straight (:type built-in))
+    :straight (:type built-in)
+    :after circe)
+
+  (use-package circe-color-nicks
+    :straight (:type built-in)
+    :after circe)
 #+end_src
 ** Default browser
-Set EWW as default browser except for videos
+Set EWW as default browser except for videos.
 #+begin_src emacs-lisp
   (defun browse-url-mpv (url &optional new-window)
     "Open URL in MPV."
     (start-process "mpv" "*mpv*" "mpv" url))
 
-  (setq browse-url-browser-function
+  (setq browse-url-handlers
         (quote
          (("youtu\\.?be" . browse-url-mpv)
-          ("." . eww-browse-url))))
+          ("." . eww-browse-url)
+          )))
+#+end_src
+** EWW
+Some EWW enhancements.
+*** Give buffer a useful name
+#+begin_src emacs-lisp
+  ;; From https://protesilaos.com/dotemacs/
+  (defun prot-eww--rename-buffer ()
+    "Rename EWW buffer using page title or URL.
+  To be used by `eww-after-render-hook'."
+    (let ((name (if (eq "" (plist-get eww-data :title))
+                    (plist-get eww-data :url)
+                  (plist-get eww-data :title))))
+      (rename-buffer (format "*%s # eww*" name) t)))
+
+  (add-hook 'eww-after-render-hook #'prot-eww--rename-buffer)
+#+end_src
+*** Better entrypoint
+#+begin_src emacs-lisp
+  ;; From https://protesilaos.com/dotemacs/
+  (defun prot-eww-browse-dwim (url &optional arg)
+    "Visit a URL, maybe from `eww-prompt-history', with completion.
+
+  With optional prefix ARG (\\[universal-argument]) open URL in a
+  new eww buffer.
+
+  If URL does not look like a valid link, run a web query using
+  `eww-search-prefix'.
+
+  When called from an eww buffer, provide the current link as
+  initial input."
+    (interactive
+     (list
+      (completing-read "Query:" eww-prompt-history
+                       nil nil (plist-get eww-data :url) 'eww-prompt-history)
+      current-prefix-arg))
+    (eww url (if arg 4 nil)))
+
+  (global-set-key (kbd "C-c w") 'prot-eww-browse-dwim)
 #+end_src
 ** Emacs Anywhere
 Use Emacs globally. Use the Emacs daemon and bind a key in your wm to
-"emacsclient --eval "(emacs-everywhere)".
+=emacsclient --eval "(emacs-everywhere)"=.
 #+begin_src emacs-lisp
   (use-package emacs-everywhere)
 #+end_src
+** Eshell
+#+begin_src emacs-lisp
+  (setq eshell-prompt-function
+        (lambda nil
+          (propertize (concat
+                       "\n" (eshell/pwd) " ➤ ")
+                       'face '(:foreground "cyan")))
+        eshell-highlight-prompt nil)
+#+end_src
 * Emacs IDE
 ** LSP
 *** General
@@ -579,16 +632,77 @@ Company-box adds icons.
 #+end_src
 ** Git
 *** Magit
+# TODO: Write a command that commits hunk, skipping staging step.
 #+begin_src emacs-lisp
-  (use-package magit
-    :hook (git-commit-setup-hook . pinentry-start))
+  (use-package magit)
 #+end_src
 *** Colored diff in line number area
 #+begin_src emacs-lisp
   (use-package diff-hl
     :straight (diff-hl :type git :host github :repo "dgutov/diff-hl")
+    :hook ((magit-pre-refresh-hook . diff-hl-magit-pre-refresh)
+           (magit-post-refresh-hook . diff-hl-magit-post-refresh))
     :config (global-diff-hl-mode))
 #+end_src
+* General text editing
+** Indentation
+Indent after every change.
+#+begin_src emacs-lisp
+  (use-package aggressive-indent
+    :config (global-aggressive-indent-mode))
+#+end_src
+** Spell checking
+Spell check in text mode, and in prog-mode comments.
+#+begin_src emacs-lisp
+  (dolist (hook '(text-mode-hook))
+    (add-hook hook (lambda () (flyspell-mode))))
+  (dolist (hook '(change-log-mode-hook log-edit-mode-hook))
+    (add-hook hook (lambda () (flyspell-mode -1))))
+  (add-hook 'prog-mode (lambda () (flyspell-prog mode)))
+#+end_src
+** Expand tabs to spaces
+#+begin_src emacs-lisp
+  (setq-default tab-width 2)
+#+end_src
+** Copy kill ring to clipboard
+#+begin_src emacs-lisp
+  (setq x-select-enable-clipboard t)
+  (defun copy-kill-ring-to-xorg ()
+    "Copy the current kill ring to the xorg clipboard."
+    (interactive)
+    (x-select-text (current-kill 0)))
+#+end_src
+** Browse kill ring
+#+begin_src emacs-lisp
+  (use-package browse-kill-ring)
+#+end_src
+** Save place
+Opens file where you left it.
+#+begin_src emacs-lisp
+  (save-place-mode)
+#+end_src
+** Writing mode
+Distraction free writing a la junegunn/goyo.
+#+begin_src emacs-lisp
+  (use-package olivetti
+    :config
+    (evil-leader/set-key "o" 'olivetti-mode))
+#+end_src
+** Abbreviations
+Abbreviate things!
+#+begin_src emacs-lisp
+  (setq abbrev-file-name "~/.emacs.d/abbrevs")
+  (setq save-abbrevs 'silent)
+  (setq-default abbrev-mode t)
+#+end_src
+** TRAMP
+#+begin_src emacs-lisp
+  (setq tramp-default-method "ssh")
+#+end_src
+** Don't ask about following symlinks in vc
+#+begin_src emacs-lisp
+  (setq vc-follow-symlinks t)
+#+end_src
 * Functions
 ** Easily convert splits
 Converts splits from horizontal to vertical and vice versa. Lifted from EmacsWiki.
@@ -638,11 +752,6 @@ Makes "C-x k" binding faster.
   (substitute-key-definition 'kill-buffer 'kill-buffer-and-window global-map)
 #+end_src
 * Other settings
-** Save place
-Opens file where you left it.
-#+begin_src emacs-lisp
-  (save-place-mode)
-#+end_src
 ** OpenSCAD
 Render OpenSCAD files, and add a preview window.
 
@@ -652,29 +761,11 @@ Personal fork just merges a PR.
   (use-package scad-preview
     :straight (scad-preview :type git :host github :repo "Armaanb/scad-preview"))
 #+end_src
-** Writing mode
-Distraction free writing a la junegunn/goyo.
-#+begin_src emacs-lisp
-  (use-package olivetti
-    :config
-    (evil-leader/set-key "o" 'olivetti-mode))
-#+end_src
 ** Control backup files
 Stop backup files from spewing everywhere.
 #+begin_src emacs-lisp
   (setq backup-directory-alist `(("." . "~/.emacs.d/backups")))
 #+end_src
-** Abbreviations
-Abbreviate things!
-#+begin_src emacs-lisp
-  (setq abbrev-file-name "~/.emacs.d/abbrevs")
-  (setq save-abbrevs 'silent)
-  (setq-default abbrev-mode t)
-#+end_src
-** Expand tabs to spaces
-#+begin_src emacs-lisp
-  (setq-default tab-width 2)
-#+end_src
 ** Make yes/no easier
 #+begin_src emacs-lisp
   (defalias 'yes-or-no-p 'y-or-n-p)
@@ -701,12 +792,14 @@ No more clogging up init.el.
 ** GPG
 #+begin_src emacs-lisp
   (use-package epa-file
-    :straight (:type built-in))
-  (setq epa-file-select-keys nil
-        epa-file-encrypt-to '("me@armaanb.net")
-        password-cache-expiry (* 60 15))
+    :straight (:type built-in)
+    :custom
+    (epa-file-select-keys nil)
+    (epa-file-encrypt-to '("me@armaanb.net"))
+    (password-cache-expiry (* 60 15)))
 
-  (use-package pinentry)
+  (use-package pinentry
+    :config (pinentry-start))
 #+end_src
 ** Pastebin
 #+begin_src emacs-lisp
@@ -720,18 +813,6 @@ No more clogging up init.el.
               "0c" '0x0-upload-kill-ring
               "0p" '0x0-upload-popup))
 #+end_src
-** Copy kill ring to clipboard
-#+begin_src emacs-lisp
-  (setq x-select-enable-clipboard t)
-  (defun copy-kill-ring-to-xorg ()
-    "Copy the current kill ring to the xorg clipboard."
-    (interactive)
-    (x-select-text (current-kill 0)))
-#+end_src
-** Browse kill ring
-#+begin_src emacs-lisp
-  (use-package browse-kill-ring)
-#+end_src
 * Tangles
 ** Spectrwm
 *** General settings
@@ -740,16 +821,16 @@ No more clogging up init.el.
   warp_pointer = 1
   modkey = Mod4
   border_width = 4
-  tile_gap = 10
   autorun = ws[1]:/home/armaa/Code/scripts/autostart
 #+end_src
-*** Apprearance
-Gruvbox colors
+*** Appearance
+#+begin_src conf :tangle ~/.spectrwm.conf
+  color_focus = rgb:ff/ff/ff
+  color_focus_maximized = rgb:ee/cc/00
+  color_unfocus = rgb:55/55/55
+#+end_src
+*** Bar
 #+begin_src conf :tangle ~/.spectrwm.conf
-  color_focus = rgb:83/a5/98
-  color_focus_maximized = rgb:d6/5d/0e
-  color_unfocus = rgb:58/58/58
-
   bar_enabled = 0
   bar_font = xos4 Fira Code:pixelsize=14:antialias=true # any installed font
 #+end_src
@@ -793,10 +874,10 @@ Gruvbox colors
   program[k] = xdotool keyup k key --clearmodifiers Up
   program[l] = xdotool keyup l key --clearmodifiers Right
 
-  bind[h] = MOD + Control + h
-  bind[j] = MOD + Control + j
-  bind[k] = MOD + Control + k
-  bind[l] = MOD + Control + l
+  bind[h] = Mod1 + Tab + h
+  bind[j] = Mod1 + Tab + j
+  bind[k] = Mod1 + Tab + k
+  bind[l] = Mod1 + Tab + l
 #+end_src
 **** Programs
 #+begin_src conf :tangle ~/.spectrwm.conf
@@ -808,13 +889,13 @@ Gruvbox colors
   program[thunderbird] = thunderbird
   program[slack] = slack
 
-  bind[aerc] = MOD+Control+s
-  bind[weechat] = MOD+Control+d
-  bind[emacs] = MOD+Control+f
-  bind[emacs-anywhere] = MOD+f
-  bind[firefox] = MOD+Control+u
-  bind[thunderbird] = MOD+Control+i
-  bind[slack] = MOD+Control+o
+  bind[aerc] = MOD+Control+1
+  bind[weechat] = MOD+Control+2
+  bind[emacs-anywhere] = MOD+Control+3
+  bind[firefox] = MOD+Control+4
+  bind[thunderbird] = MOD+Control+5
+  bind[slack] = MOD+Control+6
+  bind[emacs] = MOD+Control+Return
 #+end_src
 ** Zsh
 *** Settings
@@ -1097,6 +1178,7 @@ I manage plugins using my own plugin manager, ZPE. https://git.sr.ht/~armaan/zpe
 #+begin_src shell :tangle ~/.config/zsh/zshrc
   alias aps='yay -Ss'
   alias api='yay -Syu'
+  alias apii='sudo pacman -S'
   alias app='yay -Rns'
   alias apc='yay -Sc'
   alias apo='yay -Qttd'
@@ -1104,21 +1186,18 @@ I manage plugins using my own plugin manager, ZPE. https://git.sr.ht/~armaan/zpe
   alias favorites='pacman -Qe | cut -d " " -f 1 > ~/Documents/favorites'
   alias ufetch='ufetch-arch'
   alias reflect='reflector --verbose --sort rate --save \
-    ~/.local/etc/pacman.d/mirrorlist --download-timeout 60' # Takes ~45m to run
+     ~/.local/etc/pacman.d/mirrorlist --download-timeout 60' # Takes ~45m to run
 #+end_src
 *** Exports
 #+begin_src shell :tangle ~/.config/zsh/zshrc
-  export EDITOR="emacsclient -c"                  # $EDITOR opens in terminal
-  export VISUAL="emacsclient -c -a emacs"         # $VISUAL opens in GUI mode
+  export EDITOR="emacsclient -c"
+  export VISUAL="$EDITOR"
   export TERM=xterm-256color # for compatability
 
   export GPG_TTY="$(tty)"
   export MANPAGER='nvim +Man!'
   export PAGER='less'
 
-  # generated with "vivid generate gruvbox"
-  export LS_COLORS="$(cat ~/.local/share/zsh/gruvbox)"
-
   export GTK_USE_PORTAL=1
 
   export PATH="/home/armaa/.local/bin:$PATH" # prioritize .local/bin
@@ -1158,7 +1237,7 @@ window:
     x: 5
     y: 5
 
-background_opacity: 0.6
+background_opacity: 1
 #+end_src
 *** Keybindings
 Send <RET> + modifier through
@@ -1176,35 +1255,50 @@ key_bindings:
   }
 #+end_src
 *** Color scheme
-Gruvbox
+Modus vivendi. Source: https://github.com/ishan9299/Nixos/blob/d4bbb7536be95b59466bb9cca4d671be46e04e81/user/alacritty/alacritty.yml#L30-L118
 #+begin_src yml :tangle ~/.config/alacritty/alacritty.yml
 colors:
   # Default colors
   primary:
     background: '#000000'
-    foreground: '#ebdbb2'
+    foreground: '#ffffff'
 
-  # Normal colors
-  normal:
-    black:   '#282828'
-    red:     '#cc241d'
-    green:   '#98971a'
-    yellow:  '#d79921'
-    blue:    '#458588'
-    magenta: '#b16286'
-    cyan:    '#689d6a'
-    white:   '#a89984'
+  cursor:
+    text: '#000000'
+    background: '#ffffff'
 
-  # Bright colors
+  # Normal colors (except green it is from intense colors)
+  normal:
+    black:   '#000000'
+    red:     '#ff8059'
+    green:   '#00fc50'
+    yellow:  '#eecc00'
+    blue:    '#29aeff'
+    magenta: '#feacd0'
+    cyan:    '#00d3d0'
+    white:   '#eeeeee'
+
+  # Bright colors [all the faint colors in the modus theme]
   bright:
-    black:   '#928374'
-    red:     '#fb4934'
-    green:   '#b8bb26'
-    yellow:  '#fabd2f'
-    blue:    '#83a598'
-    magenta: '#d3869b'
-    cyan:    '#8ec07c'
-    white:   '#ebdbb2'
+    black:   '#555555'
+    red:     '#ffa0a0'
+    green:   '#88cf88'
+    yellow:  '#d2b580'
+    blue:    '#92baff'
+    magenta: '#e0b2d6'
+    cyan:    '#a0bfdf'
+    white:   '#ffffff'
+
+  # dim [all the intense colors in modus theme]
+  dim:
+    black:   '#222222'
+    red:     '#fb6859'
+    green:   '#00fc50'
+    yellow:  '#ffdd00'
+    blue:    '#00a2ff'
+    magenta: '#ff8bd4'
+    cyan:    '#30ffc0'
+    white:   '#dddddd'
 #+end_src
 ** IPython
 *** General
@@ -1242,199 +1336,155 @@ Make MPV play a little bit smoother.
   ytdl-format="bestvideo[height<=?1080]+bestaudio/best"
   hwdec=auto-copy
 #+end_src
-** Picom
-*** Shadows
-#+begin_src conf :tangle ~/.config/picom/picom.conf
-  shadow = true;
-  shadow-radius = 10;
-  shadow-offset-x = -5;
-  shadow-offset-y = -5;
-#+end_src
-*** Fading
-#+begin_src conf :tangle ~/.config/picom/picom.conf
-  fading = true
-  fade-delta = 5
-#+end_src
-*** Blur
-#+begin_src conf :tangle ~/.config/picom/picom.conf
-  blur:
-  {
-  method = "gaussian";
-  size = 5;
-  deviation = 5;
-  };
-#+end_src
-*** Backend
-Needs picom to be run with "--experimental-backends"
-#+begin_src conf :tangle ~/.config/picom/picom.conf
-  backend = "glx";
-#+end_src
 ** Inputrc
 For any GNU Readline programs
 #+begin_src plain :tangle ~/.inputrc
   set editing-mode vi
 #+end_src
-** Vivid
-https://github.com/sharkdp/vivid
-*** Colors
-#+begin_src yml :tangle ~/.config/vivid/gruvbox.yml
-  colors:
-    background_color: '282A36'
-    black: '21222C'
-    orange: 'd65d0e'
-    purple: 'b16286'
-    red: 'cc241d'
-    blue: '458588'
-    pink: 'd3869b'
-    lime: '689d6a'
-
-    gray: '928374'
-#+end_src
-*** Core
-#+begin_src yml :tangle ~/.config/vivid/gruvbox.yml
-  core:
-    regular_file: {}
-
-    directory:
-      foreground: blue
-
-    executable_file:
-      foreground: red
-      font-style: bold
-
-    symlink:
-      foreground: pink
-
-    broken_symlink:
-      foreground: black
-      background: red
-    missing_symlink_target:
-      foreground: black
-      background: red
-
-    fifo:
-      foreground: black
-      background: blue
-
-    socket:
-      foreground: black
-      background: pink
-
-    character_device:
-      foreground: black
-      background: lime
-
-    block_device:
-      foreground: black
-      background: red
-
-    normal_text:
-      {}
-
-    sticky:
-      {}
-
-    sticky_other_writable:
-      {}
-
-    other_writable:
-      {}
-
-  text:
-    special:
-      foreground: black
-      background: orange
-
-    todo:
-      font-style: bold
-
-    licenses:
-      foreground: gray
-
-    configuration:
-      foreground: orange
-
-    other:
-      foreground: orange
-
-  markup:
-    foreground: orange
-
-  programming:
-    source:
-      foreground: purple
-
-    tooling:
-      foreground: purple
-
-      continuous-integration:
-        foreground: purple
-
-  media:
-    foreground: pink
-
-  office:
-    foreground: red
-
-  archives:
-    foreground: lime
-    font-style: underline
-
-  executable:
-    foreground: red
-    font-style: bold
-
-  unimportant:
-    foreground: gray
-#+end_src
 ** Git
 *** User
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
 [user]
-       name = Armaan Bhojwani
-       email = me@armaanb.net
-       signingkey = 0FEB9471E19C49C60CFBEB133C9ED82FFE788E4A
+  name = Armaan Bhojwani
+  email = me@armaanb.net
+  signingkey = 0FEB9471E19C49C60CFBEB133C9ED82FFE788E4A
 #+end_src
 *** Init
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
 [init]
-       defaultBranch = main
+  defaultBranch = main
 #+end_src
 *** GPG
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
 [gpg]
-       program = gpg
+  program = gpg
 #+end_src
 *** Sendemail
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
 [sendemail]
-       smtpserver = smtp.mailbox.org
-       smtpuser = me@armaanb.net
-       smtpencryption = ssl
-       smtpserverport = 465
-       confirm = auto
+  smtpserver = smtp.mailbox.org
+  smtpuser = me@armaanb.net
+  smtpencryption = ssl
+  smtpserverport = 465
+  confirm = auto
 #+end_src
 *** Submodules
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
 [submodule]
-       recurse = true
+  recurse = true
 #+end_src
 *** Aliases
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
 [alias]
-       stat = diff --stat
-       sclone = clone --depth 1
-       sclean = clean -dfX
-       a = add
-       aa = add .
-       c = commit
-       p = push
-       subup = submodule update --remote
-       loc = diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 # Empty hash
-       mirror = git config --global alias.mirrormirror
+  stat = diff --stat
+  sclone = clone --depth 1
+  sclean = clean -dfX
+  a = add
+  aa = add .
+  c = commit
+  p = push
+  subup = submodule update --remote
+  loc = diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904 # Empty hash
+  mirror = git config --global alias.mirrormirror
 #+end_src
 *** Commits
-#+begin_src plain :tangle ~/.gitconfig
+#+begin_src conf :tangle ~/.gitconfig
 [commit]
-       gpgsign = true
+  gpgsign = true
+#+end_src
+** Dunst
+Lightweight notification daemon.
+*** General
+#+begin_src conf :tangle ~/.config/dunst/dunstrc
+  [global]
+  font = "JetBrains Mono Medium Nerd Font 11"
+  allow_markup = yes
+  format = "<b>%s</b>\n%b"
+  sort = no
+  indicate_hidden = yes
+  alignment = center
+  bounce_freq = 0
+  show_age_threshold = 60
+  word_wrap = yes
+  ignore_newline = no
+  geometry = "400x5-10+10"
+  transparency = 0
+  idle_threshold = 120
+  monitor = 0
+  sticky_history = yes
+  line_height = 0
+  separator_height = 4
+  padding = 8
+  horizontal_padding = 8
+  max_icon_size = 32
+  separator_color = "#ffffff"
+  startup_notification = false
+#+end_src
+*** Modes
+#+begin_src conf :tangle ~/.config/dunst/dunstrc
+  [frame]
+  width = 3
+  color = "#ffffff"
+
+  [shortcuts]
+  close = mod4+c
+  close_all = mod4+shift+c
+  history = mod4+ctrl+c
+
+  [urgency_low]
+  background = "#222222"
+  foreground = "#ffffff"
+  highlight = "#ffffff"
+  timeout = 5
+
+  [urgency_normal]
+  background = "#222222"
+  foreground = "#ffffff"
+  highlight = "#ffffff"
+  timeout = 15
+
+  [urgency_critical]
+  background = "#222222"
+  foreground = "#a60000"
+  highlight = "#ffffff"
+  timeout = 0
+#+end_src
+** Rofi
+Modus vivendi theme that extends DarkBlue.
+#+begin_src plain :tangle ~/.config/rofi/config.rasi
+@import "/usr/share/rofi/themes/DarkBlue.rasi"
+ * {
+    white:                        rgba ( 255, 255, 255, 100 % );
+    foreground:                   @white;
+    selected-normal-background:   @white;
+    separatorcolor:               @white;
+    background:                   rgba ( 34, 34, 34, 100 % );
+}
+
+window {
+    border: 3;
+}
+#+end_src
+** Zathura
+*** Options
+#+begin_src plain :tangle ~/.config/zathura/zathurarc
+map <C-i> recolor
+map <A-b> toggle_statusbar
+set selection-clipboard clipboard
+set scroll-step 200
+
+set window-title-basename "true"
+set selection-clipboard "clipboard"
+#+end_src
+*** Colors
+#+begin_src plain :tangle ~/.config/zathura/zathurarc
+set default-bg         "#000000"
+set default-fg         "#ffffff"
+set render-loading     true
+set render-loading-bg  "#000000"
+set render-loading-fg  "#ffffff"
+
+set recolor-lightcolor "#000000" # bg
+set recolor-darkcolor  "#ffffff" # fg
+set recolor            "true"
 #+end_src