** License
Released under the [[https://opensource.org/licenses/MIT][MIT license]] by Armaan Bhojwani, 2021. Note that many snippets are taken from online, and other sources, who are credited for their work near their contributions.
* Package management
-** Emacs 28 fix
-This is temporary until some stuff gets fixed upstream
-#+begin_src emacs-lisp
- (setq straight-repository-branch "develop")
- (setq straight-disable-native-compile t)
-#+end_src
** Bootstrap straight.el
straight.el is really nice for managing package, and it integrates nicely with use-package. It uses the bootstrapping system defined here for installation.
#+begin_src emacs-lisp
+ (defvar native-comp-deferred-compilation-deny-list ())
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(setq display-fill-column-indicator-column 80)
(global-display-fill-column-indicator-mode)
#+end_src
-** Keybinding hints
-When starting a key chord, show possible future steps after 0.3 seconds.
-#+begin_src emacs-lisp
- (use-package which-key
- :config (which-key-mode)
- :custom (which-key-idle-delay 0.3))
-#+end_src
** Highlight todo items in comments
#+begin_src emacs-lisp
(use-package hl-todo
** Visual line mode
Soft wrap words and do operations by visual lines except in programming modes.
#+begin_src emacs-lisp
- (visual-line-mode 1)
- (add-hook 'prog-mode-hook 'visual-line-mode 0)
+ (global-visual-line-mode 1)
+ (dolist (hook '(prog-mode-hook
+ calc-trail-mode-hook
+ org-agenda-mode-hook
+ mu4e-headers-mode-hook))
+ (add-hook hook (lambda () (visual-line-mode -1))))
#+end_src
** Display number of matches in search
#+begin_src emacs-lisp
(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp"))
(add-to-list 'org-structure-template-alist '("sp" . "src conf :tangle ~/.spectrwm.conf"))
(add-to-list 'org-structure-template-alist '("ash" . "src shell :tangle ~/.config/ash/ashrc"))
- (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 conf :tangle ~/.gitconfig"))
(add-to-list 'org-structure-template-alist '("du" . "src conf :tangle ~/.config/dunst/dunstrc"))
(add-to-list 'mm-discouraged-alternatives "text/richtext"))
#+end_src
** Default browser
-Set EWW as default browser except for videos which should open in MPV.
+Set EWW as default browser except for multimedia which should open in MPV.
#+begin_src emacs-lisp
(defun browse-url-mpv (url &optional new-window)
"Open URL in MPV."
+ (interactive)
(start-process "mpv" "*mpv*" "mpv" url))
(setq browse-url-handlers
("peertube.*" . browse-url-mpv)
("vid.*" . browse-url-mpv)
("vid.*" . browse-url-mpv)
+ ("*.mp4" . browse-url-mpv)
+ ("*.mp3" . browse-url-mpv)
+ ("*.ogg" . browse-url-mpv)
("." . eww-browse-url)
)))
#+end_src
:config
(enable-lui-track)
(enable-circe-color-nicks)
- (circe "libera")
- (circe "oftc")
- (circe "tilde")
- (setq circe-networks '(("libera"
- :host "irc.armaanb.net"
- :nick "emacs"
- :user "emacs"
- :use-tls t
- :port "6698"
- :pass (lambda (null) (fetch-password
- :login "emacs"
- :machine "irc.armaanb.net"
- :port 6698)))
- ("oftc"
- :host "irc.armaanb.net"
- :nick "emacs"
- :user "emacs"
- :use-tls t
- :port "6699"
- :pass (lambda (null) (fetch-password
- :login "emacs"
- :machine "irc.armaanb.net"
- :port 6699)))
- ("tilde"
- :host "irc.armaanb.net"
- :nick "emacs"
- :user "emacs"
- :use-tls t
- :port "6696"
- :pass (lambda (null) (fetch-password
- :login "emacs"
- :machine "irc.armaanb.net"
- :port 6696)))
- ))
+ (setq circe-network-defaults '(("libera"
+ :host "irc.armaanb.net"
+ :nick "emacs"
+ :user "emacs"
+ :use-tls t
+ :port 6698
+ :pass (lambda (null) (fetch-password
+ :login "emacs"
+ :machine "irc.armaanb.net"
+ :port 6698)))
+ ("oftc"
+ :host "irc.armaanb.net"
+ :nick "emacs"
+ :user "emacs"
+ :use-tls t
+ :port 6699
+ :pass (lambda (null) (fetch-password
+ :login "emacs"
+ :machine "irc.armaanb.net"
+ :port 6699)))
+ ("tilde"
+ :host "irc.armaanb.net"
+ :nick "emacs"
+ :user "emacs"
+ :use-tls t
+ :port 6696
+ :pass (lambda (null) (fetch-password
+ :login "emacs"
+ :machine "irc.armaanb.net"
+ :port 6696)))
+ (circe "libera")
+ (circe "oftc")
+ (circe "tilde")))
:custom (circe-default-part-message "goodbye!")
:bind (:map circe-mode-map ("C-c C-r" . circe-reconnect-all)))
#+end_src
(defun sync-calendar ()
"Sync calendars with vdirsyncer"
(interactive)
- (shell-command "vdirsyncer -vcritical sync"))
+ (async-shell-command "vdirsyncer sync"))
(use-package calfw
:bind (:map cfw:calendar-mode-map ("C-S-u" . sync-calendar)))
(global-set-key (kbd "C-c c") 'acheam-calendar)
#+end_src
+** PDF reader
+#+begin_src emacs-lisp
+ (use-package pdf-tools
+ :hook (pdf-view-mode . pdf-view-midnight-minor-mode))
+#+end_src
* Emacs IDE
** Python formatting
#+begin_src emacs-lisp
(global-set-key (kbd "C-x C-r") #'doas-edit)
#+end_src
+** Markdown mode
+#+begin_src emacs-lisp
+ (use-package markdown-mode)
+#+end_src
* Keybindings
** Switch windows
#+begin_src emacs-lisp
** Automatically clean buffers
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))))
- (midnight-mode)
#+end_src
* Tangles
** Spectrwm
#+end_src
**** Programs
#+begin_src conf :tangle ~/.spectrwm.conf
- program[email] = emacsclient -c --eval "(mu4e)"
- program[irc] = emacsclient -c --eval '(switch-to-buffer "irc.armaanb.net:6698")'
- program[rss] = emacsclient -c --eval '(elfeed)'
- program[calendar] = emacsclient -c --eval '(acheam-calendar)'
- program[emacs] = emacsclient -c
+ program[email] = emacsclient -ce "(mu4e)"
+ program[irc] = emacsclient -ce '(switch-to-buffer "irc.armaanb.net:6698")'
+ program[rss] = emacsclient -ce '(elfeed)'
+ program[calendar] = emacsclient -ce '(acheam-calendar)'
program[calc] = emacsclient -ce '(progn (calc) (windmove-up) (delete-window))'
program[firefox] = firefox
+ program[emacs] = emacsclient -c
bind[email] = MOD+Control+1
bind[irc] = MOD+Control+2
set -o vi
#+end_src
*** Functions
-**** Update all packages
-#+begin_src shell :tangle ~/.config/ash/ashrc
- color=$(tput setaf 5)
- reset=$(tput sgr0)
-
- apu() {
- doas echo "${color}== upgrading with yay ==${reset}"
- yay
- echo ""
- echo "${color}== checking for pacnew files ==${reset}"
- doas pacdiff
- echo
- echo "${color}== upgrading flatpaks ==${reset}"
- flatpak update
- echo ""
- echo "${color}== updating nvim plugins ==${reset}"
- nvim +PlugUpdate +PlugUpgrade +qall
- echo "Updated nvim plugins"
- echo ""
- echo "${color}You are entirely up to date!${reset}"
- }
-#+end_src
-**** Clean all packages
-#+begin_src shell :tangle ~/.config/ash/ashrc
- apap() {
- doas echo "${color}== cleaning pacman orphans ==${reset}"
- (pacman -Qtdq | doas pacman -Rns - 2> /dev/null) || echo "No orphans"
- echo ""
- echo "${color}== cleaning flatpaks ==${reset}"
- flatpak remove --unused
- echo ""
- echo "${color}== cleaning nvim plugins ==${reset}"
- nvim +PlugClean +qall
- echo "Cleaned nvim plugins"
- echo ""
- echo "${color}All orphans cleaned!${reset}"
- }
-#+end_src
**** Interact with 0x0
#+begin_src shell :tangle ~/.config/ash/ashrc
zxz="https://envs.sh"
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 PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig"
#+end_src
*** Aliases
**** SSH
alias la='ls -A'
alias df='df -h / /boot'
alias du='du -h'
- alias free='free -h'
+ alias free='free -m'
alias cp='cp -riv'
alias rm='rm -iv'
alias mv='mv -iv'
alias ln='ln -v'
- alias grep='grep -in --color=auto'
+ alias grep='grep -in'
alias mkdir='mkdir -pv'
alias lanex='java -jar ~/.local/share/lxc/lanxchange.jar'
emacs() { $EDITOR "$@" & }
rsync root@armaanb.net:/etc/finger/plan.txt "$T" && \
TT=$(mktemp) && \
head -n -2 $T > $TT && \
- vim $TT && \
+ /bin/nvim $TT && \
echo "\nLast updated: $(date -R)" >> "$TT" && \
fold -sw 72 "$TT" > "$T"| \
rsync "$T" root@armaanb.net:/etc/finger/plan.txt'
-net user,smb=/home/armaa/Public \
-drive format=qcow2,file=/home/armaa/Virtual/windows.qcow2'
#+end_src
-**** Python
-#+begin_src shell :tangle ~/.config/ash/ashrc
- alias pip="python -m pip"
- alias black="black -l 79"
-#+end_src
**** Latin
#+begin_src shell :tangle ~/.config/ash/ashrc
alias words='gen-shell -c "words"'
alias words-e='gen-shell -c "words ~E"'
#+end_src
-**** Devour
-#+begin_src shell :tangle ~/.config/ash/ashrc
- alias zathura='devour zathura'
- alias cad='devour openscad'
- alias feh='devour feh'
-#+end_src
-**** Pacman
-#+begin_src shell :tangle ~/.config/ash/ashrc
- alias aps='yay -Ss'
- alias api='yay -Syu'
- alias apii='doas pacman -S'
- alias app='yay -Rns'
- alias azf='pacman -Q | fzf'
- alias favorites='pacman -Qe | cut -d " " -f 1 > ~/Documents/favorites'
-#+end_src
**** Other
#+begin_src shell :tangle ~/.config/ash/ashrc
alias bigrandomfile='dd if=/dev/urandom of=1GB-urandom bs=1M count=1024 \
- iflag=fullblock status=progress'
+ iflag=fullblock'
alias bigboringfile='dd if=/dev/zero of=1GB-zero bs=1M count=1024 \
- iflag=fullblock status=progress'
+ iflag=fullblock'
alias ytmusic="youtube-dl -x --add-metadata --audio-format aac \
--restrict-filenames -o '%(title)s.%(ext)s'"
- alias cal="cal -3 --color=auto"
alias bc='bc -l'
#+end_src
-** IPython
-#+begin_src python :tangle ~/.ipython/profile_default/ipython_config.py
- c.TerminalInteractiveShell.editing_mode = 'vi'
- c.InteractiveShell.colors = 'linux'
- c.TerminalInteractiveShell.confirm_exit = False
-#+end_src
** MPV
Make MPV play a little bit smoother.
#+begin_src conf :tangle ~/.config/mpv/mpv.conf
#+begin_src conf :tangle ~/.tmux.conf
set -g status off
set -g mouse on
+ set-option -g history-limit 50000
set-window-option -g mode-keys vi
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'xclip -in -selection clipboard'