X-Git-Url: https://git.armaanb.net/?a=blobdiff_plain;f=config.org;h=fc47ba8b4b58d503708dc840d7cc5fac6fa06e57;hb=069e2fcc2febcb8bf6069c2269755797a84a2022;hp=d3ce9550b490d590b8a4f28e1f487383fcc9ece4;hpb=45d7c3f462f9b1495f1b994d8ae3b29a9f048b16;p=config.org.git diff --git a/config.org b/config.org index d3ce955..fc47ba8 100644 --- a/config.org +++ b/config.org @@ -55,7 +55,7 @@ Use the Modus Operandi theme by Protesilaos Stavrou. Its the best theme for Emac *** Font JetBrains Mono is a great programming font with ligatures. The "NF" means that it has been patched with the [[https://www.nerdfonts.com/][Nerd Fonts]]. #+begin_src emacs-lisp - (add-to-list 'default-frame-alist '(font . "JetBrainsMonoNF-12")) + (add-to-list 'default-frame-alist '(font . "JetBrainsMonoNF-11")) #+end_src *** Ligatures #+begin_src emacs-lisp @@ -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. @@ -122,7 +123,7 @@ Highlight whitespace and other bad text practices. (add-hook hook (lambda () (whitespace-mode 1)))) #+end_src ** Highlight todo items in comments -+begin_src emacs-lisp +#+begin_src emacs-lisp (use-package hl-todo :straight (hl-todo :type git :host github :repo "tarsius/hl-todo") :config (global-hl-todo-mode 1)) @@ -149,8 +150,12 @@ Soft wrap words and do operations by visual lines in some modes. ** Display number of matches in search #+begin_src emacs-lisp (use-package anzu + :after (evil) :config (global-anzu-mode) :bind + ([remap isearch-forward] . isearch-forward-regexp) + ([remap isearch-backward] . isearch-backward-regexp) + ([remap query-replace] . anzu-query-replace) ([remap query-replace] . anzu-query-replace) ([remap query-replace-regexp] . anzu-query-replace-regexp)) #+end_src @@ -163,18 +168,30 @@ Invert modeline color instead of audible bell or the standard visual bell. (lambda () (invert-face 'mode-line) (run-with-timer 0.1 nil #'invert-face 'mode-line))) #+end_src +** GUI +#+begin_src emacs-lisp + (scroll-bar-mode -1) + (tool-bar-mode -1) + (menu-bar-mode -1) +#+end_src * Evil mode ** General #+begin_src emacs-lisp (use-package evil :custom (select-enable-clipboard nil) + :init (setq evil-want-keybinding nil + evil-want-minibuffer t + evil-want-C-d-scroll t + evil-want-C-u-scroll t) :config (evil-mode) (fset 'evil-visual-update-x-selection 'ignore) ;; Keep clipboard and register seperate ;; Use visual line motions even outside of visual-line-mode buffers (evil-global-set-key 'motion "j" 'evil-next-visual-line) (evil-global-set-key 'motion "k" 'evil-previous-visual-line) - (global-set-key (kbd "") 'keyboard-escape-quit)) + :bind + ("" . keyboard-escape-quit) + ("C-M-u" . universal-argument)) #+end_src ** Evil collection Evil bindings for tons of packages. @@ -238,7 +255,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) @@ -258,18 +275,15 @@ 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 '( ("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") + ("mb" . "src conf :tangle ~/.mbsyncrc") + ("sp" . "src conf :tangle ~/.spectrwm.conf") ("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"))) + ("za" . "src conf :tangle ~/.config/zathura/zathurarc") + )) (add-to-list 'org-structure-template-alist addition))) #+end_src * Autocompletion @@ -314,13 +328,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]* + + Group school + Channel school-channel +#+end_src +*** mu4e +**** Setup #+begin_src emacs-lisp (use-package smtpmail :straight (:type built-in)) @@ -334,7 +394,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 @@ -376,13 +436,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") @@ -557,12 +617,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,17 +658,32 @@ A very good Git interface. *** Email #+begin_src emacs-lisp (use-package piem) - (use-package git-email - :straight (git-email :repo "https://git.sr.ht/~yoctocell/git-email") - :config (git-email-piem-mode)) + ;; (use-package git-email + ;; :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 @@ -753,9 +824,10 @@ Similar to the ufile alias in my ashrc Automatically close unused buffers (except those of Circe) at midnight. #+begin_src emacs-lisp (midnight-mode) - (add-to-list 'clean-buffer-list-kill-never-regexps (lambda (buffer-name) - (with-current-buffer buffer-name - (derived-mode-p 'lui-mode)))) + (add-to-list 'clean-buffer-list-kill-never-regexps + (lambda (buffer-name) + (with-current-buffer buffer-name + (derived-mode-p 'lui-mode)))) #+end_src * Tangles ** Spectrwm @@ -819,6 +891,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 @@ -826,6 +900,8 @@ 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. @@ -856,7 +932,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() { @@ -874,42 +950,57 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac } #+end_src *** Exports +**** Default programs #+begin_src shell :tangle ~/.config/ash/ashrc export EDITOR="emacsclient -c" export VISUAL="$EDITOR" export TERM=xterm-256color # for compatability - + #+end_src +**** General program configs +#+begin_src shell :tangle ~/.config/ash/ashrc 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/src/bin:$PATH" # prioritize my bin - export PATH="//home/armaa/src/bin/bin:$PATH" # prioritize my bins - export PATH="$PATH:/usr/sbin" - + export LESSHISTFILE=/dev/null + export PASH_KEYID=me@armaanb.net + export PASH_LENGTH=20 +#+end_src +**** PATH +#+begin_src shell :tangle ~/.config/ash/ashrc + export PATH="/home/armaa/src/bin:$PATH" + export PATH="/home/armaa/src/bin/bin:$PATH" + export PATH="/home/armaa/.local/bin:$PATH" + export PATH="/usr/lib/ccache/bin:$PATH" +#+end_src +**** Locale +#+begin_src shell :tangle ~/.config/ash/ashrc 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" - +#+end_src +**** KISS +#+begin_src shell :tangle ~/.config/ash/ashrc 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/main/xorg" export KISS_PATH="$KISS_PATH:$HOME/repos/community/community" export KISS_PATH="$KISS_PATH:$HOME/repos/mid/ports" - +#+end_src +**** Compilation flags +#+begin_src shell :tangle ~/.config/ash/ashrc export CFLAGS="-O3 -pipe -march=native" export CXXFLAGS="$CFLAGS" export MAKEFLAGS="-j$(nproc)" export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig" - +#+end_src +**** XDG desktop dirs +#+begin_src shell :tangle ~/.config/ash/ashrc export XDG_DESKTOP_DIR="/dev/null" export XDG_DOCUMENTS_DIR="$HOME/documents" export XDG_DOWNLOAD_DIR="$HOME/downloads" @@ -920,7 +1011,7 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac *** 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' @@ -943,7 +1034,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 @@ -961,21 +1052,19 @@ 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 #+begin_src shell :tangle ~/.config/ash/ashrc - alias ckiss="doas chrooter ~/Virtual/kiss" - alias cdebian="doas chrooter ~/Virtual/debian bash" - alias cwindows='devour qemu-system-x86_64 \ + alias cwindows='qemu-system-x86_64 \ -smp 3 \ -cpu host \ -enable-kvm \ @@ -984,8 +1073,8 @@ Use the vi editing mode. I still haven't found a good way to show visual feedbac -device intel-hda \ -device hda-duplex \ -net nic \ - -net user,smb=/home/armaa/Public \ - -drive format=qcow2,file=/home/armaa/Virtual/windows.qcow2' + -net user,smb=/home/armaa/public \ + -drive format=qcow2,file=/home/armaa/virtual/windows.qcow2' #+end_src **** Latin #+begin_src shell :tangle ~/.config/ash/ashrc @@ -1066,6 +1155,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 @@ -1148,28 +1242,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 - max-cache-ttl 600 - default-cache-ttl 600 + pinentry-program /sbin/pinentry + max-cache-ttl 6000 + default-cache-ttl 6000 allow-emacs-pinentry #+end_src ** Xmodmap -#+begin_src conf :tangle ~/.config/xmodmap - ! +#+begin_src conf :tangle (progn (if (string= (system-name) "frost.armaanb.net") "~/.config/xmodmap" "no")) ! Unmap left super - ! clear mod4 - ! ! Turn right alt into super - ! remove mod1 = Alt_R add mod4 = Alt_R -#+end_src -#+begin_src conf (if (eq system-name "frost.armaanb.net") ":tangle ~/.config/xmodmap") - ! + ! Swap caps and control - ! remove Lock = Caps_Lock remove Control = Control_L remove Lock = Control_L @@ -1179,3 +1266,9 @@ I use tmux in order to keep my st build light. Still learning how it works. add Lock = Caps_Lock add Control = Control_L #+end_src +** sx +#+begin_src shell :tangle ~/.config/sx/sxrc :tangle-mode (identity #o755) + autostart & + dwmsetroot & + exec dwm +#+end_src