X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/5c7c14c75aded925eb0ee6d4125237dc309525ba..a4eeb63a2e7fcf946546e2c10e48b1865d7706ca:/rc.org diff --git a/rc.org b/rc.org index bc755f2..15ec884 100644 --- a/rc.org +++ b/rc.org @@ -14,281 +14,12 @@ Note: This file is best viewed inside Emacs with org mode. This section contains the configuration files (dotfiles) of various programs I use. -** bspwm - -*** bspwmrc -:PROPERTIES: -:header-args+: :tangle ~/.config/bspwm/bspwmrc :shebang "#!/bin/sh" -:END: - -#+begin_src sh -sxhkd & -sh ~/.fehbg & -xfce4-panel -d & -compton & -sleep 0.5 && pasystray --notify=all & - -bspc monitor -d I II III IV V VI VII VIII IX X -#bspc monitor eDP-1 -d I II III IV V -#bspc monitor HDMI-1 -d VI VII VIII IX X - -#bspc config border_width 2 -#bspc config window_gap 8 -bspc config window_gap 0 - -bspc config bottom_padding 26 - -bspc config split_ratio 0.52 -bspc config borderless_monocle true -bspc config gapless_monocle true -bspc config click_to_focus button1 -bspc config directional_focus_tightness low - -#bspc rule -a Firefox desktop='^1' follow=on -bspc rule -a Nightly desktop='^1' follow=on -bspc rule -a Emacs desktop='^2' state=tiled follow=on -#bspc rule -a Chromium desktop='^4' follow=on -bspc rule -a URxvt state=floating -bspc rule -a URxvt:tiled state=tiled -bspc rule -a Connman-gtk state=floating -bspc rule -a Xfce4-panel state=floating -bspc rule -a TelegramDesktop state=floating -bspc rule -a Ec state=floating -bspc rule -a Pavucontrol state=floating -bspc rule -a Eog state=floating -bspc rule -a Seahorse state=floating -bspc rule -a mpv state=floating -bspc rule -a Evince state=floating -bspc rule -a Meld state=floating -bspc rule -a Autokey-gtk state=floating -bspc rule -a Mousepad state=floating -bspc rule -a Wrapper-1.0 state=floating -bspc rule -a File-roller state=floating -bspc rule -a Gnome-disks state=floating -bspc rule -a Termite state=floating -bspc rule -a Termite:tiled state=tiled -bspc rule -a Thunderbird:Calendar state=floating -bspc rule -a Audacity state=floating -bspc rule -a Proof state=floating # pvs x-show-proof -bspc rule -a Nm-connection-editor state=floating -bspc rule -a Wire state=floating -bspc rule -a discord state=floating -bspc rule -a X2goclient state=floating -bspc rule -a SimpleScreenRecorder state=floating -bspc rule -a Gimp state=floating -bspc rule -a Wrapper-2.0 state=floating -bspc rule -a Zathura state=tiled -#+end_src - -*** sxhkdrc -:PROPERTIES: -:header-args+: :tangle ~/.config/sxhkd/sxhkdrc -:END: - -#+begin_src conf -# -# wm independent hotkeys -# - -# terminal emulator -super + {_,shift} + Return - urxvt{_, -name tiled} - -#super + {_,shift} + Return -# termite{_, --name=tiled} - -# program launcher -super + space - rofi -show run -display-run '> ' -display-window ' 🗔 ' - -super + alt + space - xfce4-popup-whiskermenu - -# window finder -super + backslash - rofi -show window -display-run '> ' -display-window ' 🗔 ' - -# password manager -alt + space - rofi-pass - -# firefox -#super + r -# firefox - -# chromium -#super + c -# chromium -incognito - -# emacs -super + e - emacs - -# make sxhkd reload its configuration files: -super + Escape - pkill -USR1 -x sxhkd - -# volume {up,down} -XF86Audio{Raise,Lower}Volume - pamixer --allow-boost --{in,de}crease 5 - -# mute -XF86AudioMute - pamixer --toggle-mute - -XF86AudioMicMute - pactl set-source-mute 1 toggle - -# playback control -XF86Audio{Play,Prev,Next} - mpc {toggle,prev,next} - -# lock the screen -super + shift + q - light-locker-command -l - -# Toggle keyboard layout -super + F7 - toggle-layout - -# Toggle Xfce presentation mode -XF86LaunchB - toggle-presentation-mode - -# monitor brightness -XF86MonBrightness{Up,Down} - light -{A,U} 5 - -super + apostrophe - rofi-light - -# keyboard brightness -#XF86KbdBrightness{Up,Down} -# kbdlight {up,down} - -XF86RotateWindows - toggle-tablet - -# -# bspwm hotkeys -# - -# quit bspwm normally -super + alt + Escape - bspc quit - -# close and kill -super + {w,q} - bspc node -{c,k} - -# alternate between the tiled and monocle layout -super + m - bspc desktop -l next - -# send the newest marked node to the newest preselected node -super + y - bspc node newest.marked.local -n newest.!automatic.local - -# swap the current node and the biggest node -super + g - bspc node -s biggest - -# -# state/flags -# - -# set the window state -super + {t,shift + t,s,f} - bspc node -t {tiled,pseudo_tiled,floating,fullscreen} - -# set the node flags -super + ctrl + {m,x,y,z} - bspc node -g {marked,locked,sticky,private} - -# -# focus/swap -# - -# focus the node in the given direction -super + {_,shift + }{h,j,k,l} - bspc node -{f,s} {west,south,north,east} - -# focus the node for the given path jump -super + {p,b,comma,period} - bspc node -f @{parent,brother,first,second} - -# focus the next/previous node in the current desktop -super + {_,shift + }c - bspc node -f {next,prev}.local - -# focus the next/previous desktop in the current monitor -super + bracket{left,right} - bspc desktop -f {prev,next}.local - -# send to next/prev desktop -super + shift + bracket{left,right} - bspc node -d {prev,next} --follow - -# focus the last node/desktop -super + {grave,Tab} - bspc {node,desktop} -f last - -# focus the older or newer node in the focus history -super + {o,i} - bspc wm -h off; \ - bspc node {older,newer} -f; \ - bspc wm -h on - -# focus or send to the given desktop -super + {_,shift + }{1-9,0} - bspc {desktop -f,node -d} '^{1-9,10}' - -# -# preselect -# - -# preselect the direction -super + ctrl + {h,j,k,l} - bspc node -p {west,south,north,east} - -# preselect the ratio -super + ctrl + {1-9} - bspc node -o 0.{1-9} - -# cancel the preselection for the focused node -super + ctrl + space - bspc node -p cancel - -# cancel the preselection for the focused desktop -super + ctrl + shift + space - bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel - -# -# move/resize -# - -# expand a window by moving one of its side outward -super + alt + {h,j,k,l} - bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} - -# contract a window by moving one of its side inward -super + alt + shift + {h,j,k,l} - bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0} - -# move a floating window -super + {Left,Down,Up,Right} - bspc node -v {-20 0,0 20,0 -20,20 0} - -#alt + bracket{left,right} -# xdotool key --clearmodifiers ctrl+Page_{Up,Down} -#+end_src - ** compton :PROPERTIES: :header-args+: :tangle ~/.config/compton.conf :END: -#+begin_src conf +#+begin_src conf :tangle no # Shadow shadow = false; # Enabled client-side shadows on windows. no-dock-shadow = true; # Avoid drawing shadows on dock/panel windows. @@ -389,6 +120,52 @@ wintypes: }; #+end_src +** dovecot +:PROPERTIES: +:header-args+: :tangle "/sudo::/etc/dovecot/dovecot.conf" +:END: + +#+begin_src conf +protocols = imap + +listen = 127.0.0.1 +log_path = /var/log/dovecot.log +info_log_path = /var/log/dovecot-info.log + +ssl = no +disable_plaintext_auth = no + +auth_verbose = yes +auth_mechanisms = plain + +passdb { + driver = passwd-file + args = /etc/dovecot/passwd +} + +userdb { + driver = static + args = uid=amin gid=amin home=/home/amin/mail/%d/%n + default_fields = mail=maildir:/home/amin/mail/%d/%n/mail +} + +# mail_home = /home/amin/mail/%d/%n +# mail_location = maildir:/home/amin/mail/%d/%n/mail:LAYOUT=fs:INBOX=/home/amin/mail/%d/%n/mail/Inbox + +# namespace { +# inbox = yes +# separator = / +# } + +mail_plugins = $mail_plugins fts fts_lucene + +plugin { + fts = lucene + fts_lucene = whitespace_chars=@. + fts_autoindex = yes +} +#+end_src + ** Dunst :PROPERTIES: :header-args+: :tangle ~/.config/dunst/dunstrc @@ -625,13 +402,76 @@ timeout = 0 Helvetica - + Liberation Sans - + #+end_src +** getmail + +*** getmailrc +:PROPERTIES: +:header-args+: :tangle ~/.getmail/getmailrc +:END: + +#+begin_src conf +[retriever] +type = SimplePOP3SSLRetriever +server = fencepost.gnu.org +username = bandali +password_command = ("gpg2", "--no-tty", "-q", "-d", "/home/amin/.passwd/gnu.gpg") +port = 995 +use_apop = True + +[destination] +type = Maildir +path = ~/mail/gnu/Inbox/ + +# [destination] +# type = MDA_external +# path = /usr/lib/dovecot/deliver +# arguments = ('-d', 'amin@aminb.org') + +[options] +delete = True +#+end_src + +*** getmail.service +:PROPERTIES: +:header-args+: :tangle ~/.config/systemd/user/getmail.service +:END: + +#+begin_src conf :tangle no +[Unit] +Description=getmail service + +[Service] +Type=oneshot +ExecStart=/usr/bin/getmail +StandardOutput=syslog +StandardError=syslog +#+end_src + +*** getmail.timer +:PROPERTIES: +:header-args+: :tangle ~/.config/systemd/user/getmail.timer +:END: + +#+begin_src conf :tangle no +[Unit] +Description=getmail timer + +[Timer] +OnCalendar=*:0/30 +Persistent=true +Unit=getmail.service + +[Install] +WantedBy=timers.target +#+end_src + ** Git *** gitconfig @@ -643,8 +483,8 @@ timeout = 0 #+begin_src conf [user] name = Amin Bandali - email = amin@aminb.org - signingkey = 4E05246AB0BF7FFB + email = bandali@gnu.org + signingkey = BE6273738E616D6D1B3A08E8A21A020248816103 #+end_src **** signing @@ -686,6 +526,8 @@ timeout = 0 pr = pull --rebase ps = push psf = push --force + nmam = "!f() { notmuch show --format=raw $1 | git am -; }; f" + nmam3 = "!f() { notmuch show --format=raw $1 | git am -3 -; }; f" #+end_src **** color @@ -721,8 +563,8 @@ timeout = 0 **** send-email #+begin_src conf [sendemail] - smtpuser = amin@aminb.org - smtpserver = nix.aminb.org + smtpuser = bandali + smtpserver = fencepost.gnu.org smtpserverport = 587 smtpencryption = tls annotate = yes @@ -743,99 +585,6 @@ timeout = 0 *-autoloads.el #+end_src -** Latexmk -:PROPERTIES: -:header-args+: :tangle ~/.latexmkrc -:END: - -#+begin_src conf -$pdf_previewer = "start zathura %O %S"; -$clean_ext = "aux out"; - -# $pdf_update_method = 4; -# $pdf_update_command = "zathura %O %S"; - -# Synctex allows one to jump to from the PDF in Zathura to the source in Emacs -# by Ctrl+click in the PDF. -# Tell latexmk to use Zathura as a previewer, and run emacsclient as the Synctex -# editor. -# $pdf_previewer = 'exec zathura --synctex-forward -x \'emacsclient --no-wait +%{line} %{input}\' %O %S'; -#+end_src - -** libinput - -Improve XPS 15 9560's touchpad experience. - -#+begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "plasma")) "/sudo::/etc/X11/xorg.conf.d/30-touchpad.conf") -Section "InputClass" - Identifier "libinput touchpad catchall" - Driver "libinput" - MatchIsTouchpad "on" - Option "ClickMethod" "clickfinger" - Option "NaturalScrolling" "true" - Option "Tapping" "on" - Option "TappingButtonMap" "lrm" -EndSection -#+end_src - -** getmail - -*** getmailrc -:PROPERTIES: -:header-args+: :tangle ~/.getmail/getmailrc -:END: - -#+begin_src conf -[retriever] -type = SimplePOP3SSLRetriever -server = fencepost.gnu.org -username = aminb -password_command = ("gpg2", "--no-tty", "-q", "-d", "/home/amin/.passwd/gnu.gpg") -port = 995 -use_apop = True - -[destination] -type = Maildir -path = ~/mail/gnu/Inbox/ - -[options] -delete = True -#+end_src - -*** getmail.service -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/getmail.service -:END: - -#+begin_src conf :tangle no -[Unit] -Description=getmail service - -[Service] -Type=oneshot -ExecStart=/usr/bin/getmail -StandardOutput=syslog -StandardError=syslog -#+end_src - -*** getmail.timer -:PROPERTIES: -:header-args+: :tangle ~/.config/systemd/user/getmail.timer -:END: - -#+begin_src conf :tangle no -[Unit] -Description=getmail timer - -[Timer] -OnCalendar=*:0/30 -Persistent=true -Unit=getmail.service - -[Install] -WantedBy=timers.target -#+end_src - ** GnuPG :PROPERTIES: :header-args+: :tangle ~/.gnupg/gpg-agent.conf @@ -884,38 +633,170 @@ gtk-font-name = Ubuntu 10 # gtk-key-theme-name = Emacs #+end_src -** isync +** [[https://github.com/Leinnan/i3gs][i3gs]] +:PROPERTIES: +:header-args+: :tangle ~/.config/i3gs/config +:END: -*** mbsyncrc +#+begin_src conf :comments none :tangle no +borders_width=0 0 2 0 +separator_width=10 + +#[mpd] +#preset=MPD +#title=  +#borders_color=#7FDBFF + +[ram] +preset=RAM +title=  +borders_color=#3D9970 + +#[cpu] +#preset=CPU +#title=  +#borders_color=#2ECC40 + +#[hdd] +#preset=HDD +#title=  +#borders_color=#01FF70 + +[volume] +command=volume-info +title= +borders_color=#7FDBFF + +[battery] +preset=BAT +command=battery-percentage-time +title=  +borders_color=#39CCCC + +[wifi] +preset=WIFI +title=  +borders_color=#01FF70 + +[date] +preset=DATE +command=date '+%-I:%M, %a %b %d ' +title=  +borders_color=#FFDC00 +separator_width=0 +#+end_src + +** i3status :PROPERTIES: -:header-args+: :tangle ~/.mbsyncrc +:header-args+: :tangle ~/.config/i3status/config :END: -#+begin_src conf -# Global defaults -CopyArrivalDate yes +#+begin_src conf :comments none +# i3status configuration file. +# see "man i3status" for documentation. -###### -IMAPAccount amin -Host nix.aminb.org -User amin@aminb.org -PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin.gpg" +# It is important that this file is edited as UTF-8. +# The following line should contain a sharp s: +# ß +# If the above line is not correctly displayed, fix your editor first! + +general { + colors = true + interval = 5 + output_format = "i3bar" +} + +# order += "ipv6" +order += "disk /" +order += "disk /data" +# order += "wireless _first_" +order += "ethernet _first_" +order += "battery 0" +order += "volume master" +order += "load" +order += "tztime local" + +wireless _first_ { + format_up = "W:%quality %essid %ip" + format_down = "W: down" +} + +ethernet _first_ { + # if you use %speed, i3status requires root privileges + format_up = "E: %ip (%speed)" + format_down = "E: down" +} + +battery 0 { + format = "%status %percentage %remaining (%consumption)" + path = "/sys/class/power_supply/BAT%d/uevent" + low_threshold = "10" + threshold_type = "percentage" + last_full_capacity = true + integer_battery_capacity = true + hide_seconds = true +} + +tztime local { + format = "%-I:%M%P %a %b %d" +} + +volume master { + format = "♪ %volume" + format_muted = "🔇 %volume" + device = "pulse" +} + +load { + format = "%1min" +} + +disk "/" { + format = "/ %avail" +} + +disk "/data" { + format = "/data %avail" +} +#+end_src + +** isync + +*** mbsyncrc +:PROPERTIES: +:header-args+: :tangle ~/.mbsyncrc +:END: + +#+begin_src conf +# Global defaults +CopyArrivalDate yes +Create Both +Expunge Both + +###### +IMAPAccount amin +Host mail.bndl.org +User amin@bndl.org +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin.gpg" SSLType IMAPS IMAPStore amin-remote Account amin -MaildirStore amin-local -Path ~/mail/amin/ -Inbox ~/mail/amin/Inbox -SubFolders Verbatim +IMAPAccount amin-dovecot +Host 127.0.0.1 +Port 143 +User amin@bndl.org +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/amin-dovecot.gpg" +SSLType None + +IMAPStore amin-local +Account amin-dovecot Channel amin Master :amin-remote: Slave :amin-local: -Patterns * !dovecot* -Create Both -SyncState * +Patterns * ###### IMAPAccount uwaterloo @@ -927,17 +808,45 @@ SSLType IMAPS IMAPStore uwaterloo-remote Account uwaterloo -MaildirStore uwaterloo-local -Path ~/mail/uwaterloo/ -Inbox ~/mail/uwaterloo/Inbox -SubFolders Verbatim +IMAPAccount uwaterloo-dovecot +Host 127.0.0.1 +Port 143 +User abandali@uwaterloo.ca +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/uwaterloo-dovecot.gpg" +SSLType None + +IMAPStore uwaterloo-local +Account uwaterloo-dovecot Channel uwaterloo Master :uwaterloo-remote: Slave :uwaterloo-local: -Patterns * !dovecot* -Create Both -SyncState * +Patterns * + +###### +IMAPAccount csclub +Host mail.csclub.uwaterloo.ca +User abandali +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/csclub.gpg" +SSLType IMAPS + +IMAPStore csclub-remote +Account csclub + +IMAPAccount csclub-dovecot +Host 127.0.0.1 +Port 143 +User abandali@csclub.uw +PassCmd "gpg -q --for-your-eyes-only --no-tty -d ~/.passwd/csclub-dovecot.gpg" +SSLType None + +IMAPStore csclub-local +Account csclub-dovecot + +Channel csclub +Master :csclub-remote: +Slave :csclub-local: +Patterns * #+end_src *** mbsync.service @@ -974,6 +883,113 @@ Unit=mbsync.service WantedBy=timers.target #+end_src +** Latexmk +:PROPERTIES: +:header-args+: :tangle ~/.latexmkrc +:END: + +#+begin_src conf +$pdf_previewer = "start zathura %O %S"; +$clean_ext = "aux out"; + +# $pdf_update_method = 4; +# $pdf_update_command = "zathura %O %S"; + +# Synctex allows one to jump to from the PDF in Zathura to the source in Emacs +# by Ctrl+click in the PDF. +# Tell latexmk to use Zathura as a previewer, and run emacsclient as the Synctex +# editor. +# $pdf_previewer = 'exec zathura --synctex-forward -x \'emacsclient --no-wait +%{line} %{input}\' %O %S'; +#+end_src + +** libinput + +Improve XPS 15 9560's touchpad experience. + +# begin_src conf :tangle (when (and (eq system-type 'gnu/linux) (string= (system-name) "plasma")) "/sudo::/etc/X11/xorg.conf.d/30-touchpad.conf") +#+begin_src conf :tangle no +Section "InputClass" + Identifier "libinput touchpad catchall" + Driver "libinput" + MatchIsTouchpad "on" + Option "ClickMethod" "clickfinger" + Option "NaturalScrolling" "true" + Option "Tapping" "on" + Option "TappingButtonMap" "lrm" +EndSection +#+end_src + +** mkinitcpio + +#+begin_src conf :tangle /sudo::/etc/mkinitcpio.conf :comments none +# vim:set ft=sh +# MODULES +# The following modules are loaded before any boot hooks are +# run. Advanced users may wish to specify all system modules +# in this array. For instance: +# MODULES=(piix ide_disk reiserfs) +MODULES=(i915) + +# BINARIES +# This setting includes any additional binaries a given user may +# wish into the CPIO image. This is run last, so it may be used to +# override the actual binaries included by a given hook +# BINARIES are dependency parsed, so you may safely ignore libraries +BINARIES=() + +# FILES +# This setting is similar to BINARIES above, however, files are added +# as-is and are not parsed in any way. This is useful for config files. +FILES=() + +# HOOKS +# This is the most important setting in this file. The HOOKS control the +# modules and scripts added to the image, and what happens at boot time. +# Order is important, and it is recommended that you do not change the +# order in which HOOKS are added. Run 'mkinitcpio -H ' for +# help on a given hook. +# 'base' is _required_ unless you know precisely what you are doing. +# 'udev' is _required_ in order to automatically load modules +# 'filesystems' is _required_ unless you specify your fs modules in MODULES +# Examples: +## This setup specifies all modules in the MODULES setting above. +## No raid, lvm2, or encrypted root is needed. +# HOOKS=(base) +# +## This setup will autodetect all modules for your system and should +## work as a sane default +# HOOKS=(base udev autodetect block filesystems) +# +## This setup will generate a 'full' image which supports most systems. +## No autodetection is done. +# HOOKS=(base udev block filesystems) +# +## This setup assembles a pata mdadm array with an encrypted root FS. +## Note: See 'mkinitcpio -H mdadm' for more information on raid devices. +# HOOKS=(base udev block mdadm encrypt filesystems) +# +## This setup loads an lvm2 volume group on a usb device. +# HOOKS=(base udev block lvm2 filesystems) +# +## NOTE: If you have /usr on a separate partition, you MUST include the +# usr, fsck and shutdown hooks. +HOOKS=(base udev autodetect modconf block keyboard encrypt lvm2 resume filesystems fsck) + +# COMPRESSION +# Use this to compress the initramfs image. By default, gzip compression +# is used. Use 'cat' to create an uncompressed image. +#COMPRESSION="gzip" +#COMPRESSION="bzip2" +#COMPRESSION="lzma" +#COMPRESSION="xz" +#COMPRESSION="lzop" +#COMPRESSION="lz4" + +# COMPRESSION_OPTIONS +# Additional options for the compressor +#COMPRESSION_OPTIONS=() +#+end_src + ** mpd :PROPERTIES: :header-args+: :tangle ~/.config/mpd/mpd.conf @@ -1403,25 +1419,37 @@ auth on #tls_trust_file /etc/ssl/certs/ca-certificates.crt logfile ~/.msmtp.log -# aminb -account aminb -host nix.aminb.org -tls_fingerprint 65:DD:B8:32:D8:CD:F1:DC:B6:34:EE:35:04:18:AC:09:F3:1D:6D:20:F2:4A:E2:BD:64:48:B7:1F:90:BD:C4:BA +# amin +account amin +host mail.bndl.org +# use `msmtp -a amin --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint +tls_fingerprint B8:17:DF:D7:26:56:4F:CD:F0:51:D5:E5:4C:44:B6:F1:C9:47:E7:A2:C7:36:C9:C1:F2:10:85:18:43:72:9D:ED tls_starttls on -from amin@aminb.org -user amin@aminb.org +from amin@bndl.org +user amin@bndl.org passwordeval gpg2 --no-tty -q -d ~/.passwd/amin.gpg +account aminb : amin +from amin@aminb.org + # gnu account gnu host fencepost.gnu.org # use `msmtp -a gnu --serverinfo --tls --tls-certcheck=off --tls-fingerprint=` to get the current fingerprint -tls_fingerprint 28:70:42:76:1C:EC:91:5F:D1:B3:27:A1:CD:3B:32:A4:8B:0B:DC:3A:CD:CA:F6:6F:E4:61:BA:69:D7:4D:0D:0B +tls_fingerprint FB:DB:E3:7D:96:22:22:20:9F:4A:FD:70:96:99:50:5C:39:B2:29:D9:47:47:52:A8:5A:4A:DF:70:9D:21:DE:C4 tls_starttls on -from aminb@gnu.org -user aminb +from bandali@gnu.org +user bandali passwordeval gpg2 --no-tty -q -d ~/.passwd/gnu.gpg +# gnu (old) +account gnu-aminb : gnu +from aminb@gnu.org +account gnu-amin : gnu +from amin@gnu.org +account gnu-mab : gnu +from mab@gnu.org + # uwaterloo account uwaterloo host connect.uwaterloo.ca @@ -1431,12 +1459,17 @@ user abandali passwordeval gpg2 --no-tty -q -d ~/.passwd/uwaterloo.gpg tls_trust_file /etc/ssl/certs/ca-certificates.crt -# uwaterloo (friendly address) -account uwaterloo-friendly : uwaterloo -from amin.bandali@uwaterloo.ca +# csclub +account csclub +host mail.csclub.uwaterloo.ca +tls_starttls on +from abandali@csclub.uwaterloo.ca +user abandali +passwordeval gpg2 --no-tty -q -d ~/.passwd/csclub.gpg +tls_trust_file /etc/ssl/certs/ca-certificates.crt # Set a default account -account default : aminb +account default : amin #+end_src ** ncmpcpp @@ -2037,7 +2070,7 @@ def_key "K" # configured here named ".notmuch". # [database] -path=/home/amin/mail +path=/home/amin/oldmail # User configuration # @@ -2057,7 +2090,7 @@ path=/home/amin/mail [user] name=Amin Bandali primary_email=amin@aminb.org -other_email=abandali@uwaterloo.ca;amin.bandali@uwaterloo.ca;aminb@gnu.org; +other_email=bandali@gnu.org;abandali@uwaterloo.ca; # Configuration for "notmuch new" # @@ -2143,28 +2176,32 @@ sieve-filter -eW -o postmaster_address=postmaster@aminb.org \ #+begin_src sh # apply sent tag to messages sent by me -notmuch tag -new +sent -- from:amin@aminb.org or from:aminb@gnu.org or from:abandali@uwaterloo.ca or from:amin.bandali@uwaterloo.ca +notmuch tag -new +sent -- from:amin@aminb.org or from:bandali@gnu.org or from:aminb@gnu.org or from:amin@gnu.org or from:mab@gnu.org or from:abandali@uwaterloo.ca # initial tagging -notmuch tag +inbox +unread -new -- tag:new +notmuch tag -latest -- tag:latest +notmuch tag +inbox +unread +latest -new -- tag:new # apply tags to lists # -notmuch tag -inbox +lists/~sircmpwn/srht-admins -- folder:amin/lists/~sircmpwn/srht-admins -notmuch tag -inbox +lists/~sircmpwn/srht-announce -- folder:amin/lists/~sircmpwn/srht-announce -notmuch tag -inbox +lists/~sircmpwn/srht-dev -- folder:amin/lists/~sircmpwn/srht-dev -notmuch tag -inbox +lists/~sircmpwn/srht-discuss -- folder:amin/lists/~sircmpwn/srht-discuss - notmuch tag -inbox +lists/hackernewsletter -- folder:amin/lists/hackernewsletter notmuch tag -inbox +lists/haskell-weekly -- folder:amin/lists/haskell-weekly + +notmuch tag -inbox +pay -- folder:amin/pay +notmuch tag -inbox +banking -- folder:amin/banking +notmuch tag -inbox +work -- folder:amin/work # # -notmuch tag -inbox +lists/cs136 -- folder:uwaterloo/lists/cs136 -notmuch tag -inbox +lists/se463 -- folder:uwaterloo/lists/se463 +notmuch tag -inbox +uw/cs136 -- folder:uwaterloo/lists/cs136 +notmuch tag -inbox +uw/cs846 -- folder:uwaterloo/lists/cs846 +notmuch tag -inbox +uw/ece750 -- folder:uwaterloo/lists/ece750 +notmuch tag -inbox +uw/se212 -- folder:uwaterloo/lists/se212 +notmuch tag -inbox +uw/se463 -- folder:uwaterloo/lists/se463 +notmuch tag -inbox +lists/alloytools -- folder:uwaterloo/lists/alloytools notmuch tag -inbox +lists/clvsingle -- folder:uwaterloo/lists/Clvsingle notmuch tag -inbox +lists/gsa -- folder:uwaterloo/lists/GSA notmuch tag -inbox +lists/math-grad -- folder:uwaterloo/lists/Math-grad @@ -2173,23 +2210,32 @@ notmuch tag -inbox +lists/watform-students -- folder:uwaterloo/lists/Watform-stu # # -notmuch tag -inbox +lists/emacs-devel -- folder:gnu/l/emacs-devel -notmuch tag -inbox +lists/emacs-orgmode -- folder:gnu/l/emacs-orgmode -notmuch tag -inbox +lists/emacsconf-discuss -- folder:gnu/l/emacsconf-discuss -notmuch tag -inbox +lists/fencepost-users -- folder:gnu/l/fencepost-users -notmuch tag -inbox +lists/guix-devel -- folder:gnu/l/guix-devel -notmuch tag -inbox +lists/guile-devel -- folder:gnu/l/guile-devel -notmuch tag -inbox +lists/help-gnu-emacs -- folder:gnu/l/help-gnu-emacs -notmuch tag -inbox +lists/info-gnu-emacs -- folder:gnu/l/info-gnu-emacs -notmuch tag -inbox +lists/www-commits -- folder:gnu/l/www-commits -notmuch tag -inbox +lists/www-discuss -- folder:gnu/l/www-discuss -notmuch tag -inbox +webmasters -- folder:gnu/webmasters - -notmuch tag -inbox +lists/deepspec -- folder:gnu/l/deepspec -notmuch tag -inbox +lists/haskell-cafe -- folder:gnu/l/haskell-cafe -notmuch tag -inbox +lists/haskell-art -- folder:gnu/l/haskell-art -notmuch tag -inbox +lists/notmuch -- folder:gnu/l/notmuch -# +notmuch tag -inbox +l/emacs-devel -- folder:gnu/l/emacs-devel +notmuch tag -inbox +l/emacs-orgmode -- folder:gnu/l/emacs-orgmode +notmuch tag -inbox +l/emacsconf-discuss -- folder:gnu/l/emacsconf-discuss +notmuch tag -inbox +l/fencepost-users -- folder:gnu/l/fencepost-users +notmuch tag -inbox +l/guix-devel -- folder:gnu/l/guix-devel +notmuch tag -inbox +l/guile-devel -- folder:gnu/l/guile-devel +notmuch tag -inbox +l/help-gnu-emacs -- folder:gnu/l/help-gnu-emacs +notmuch tag -inbox +l/info-gnu-emacs -- folder:gnu/l/info-gnu-emacs +notmuch tag -inbox +l/www-commits -- folder:gnu/l/www-commits +notmuch tag -inbox +l/www-discuss -- folder:gnu/l/www-discuss +notmuch tag -inbox +webmasters -- folder:gnu/webmasters + +notmuch tag -inbox +l/deepspec -- folder:gnu/l/deepspec +notmuch tag -inbox +l/haskell-cafe -- folder:gnu/l/haskell-cafe +notmuch tag -inbox +l/haskell-art -- folder:gnu/l/haskell-art +notmuch tag -inbox +l/notmuch -- folder:gnu/l/notmuch + +notmuch tag -inbox +l/~aminb/test-priv -- folder:gnu/l/~aminb/test-priv +notmuch tag -inbox +l/~sircmpwn/sr.ht-admins -- folder:gnu/l/~sircmpwn/sr.ht-admins +notmuch tag -inbox +l/~sircmpwn/sr.ht-announce -- folder:gnu/l/~sircmpwn/sr.ht-announce +notmuch tag -inbox +l/~sircmpwn/sr.ht-dev -- folder:gnu/l/~sircmpwn/sr.ht-dev +notmuch tag -inbox +l/~sircmpwn/sr.ht-discuss -- folder:gnu/l/~sircmpwn/sr.ht-discuss +# + +notmuch tag -inbox -unread +archive/notmuch -- path:archive/notmuch/** +notmuch tag -inbox -unread +archive/emacs-devel -- path:archive/emacs-devel/** #+end_src *** notmuch.service @@ -2226,113 +2272,240 @@ Unit=notmuch.service WantedBy=timers.target #+end_src -** offlineimap +** pacman -*** offlineimaprc -:PROPERTIES: -:header-args+: :tangle ~/.offlineimaprc -:END: +*** conf -#+begin_src conf :tangle no -[general] -pythonfile = ~/.offlineimap.py -accounts = Gmail, aminb -maxsyncaccounts = 3 +#+begin_src conf :tangle /sudo::/etc/pacman.conf :comments none +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives -[Account Gmail] -localrepository = GmailL -remoterepository = GmailR +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +#HookDir = /etc/pacman.d/hooks/ +HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -L -C - -f -o %o %u +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +Color +TotalDownload +CheckSpace +VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all Arch/Parabola packagers +# with `pacman-key --populate archlinux` and `pacman-key --populate parabola`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +# NOTE: Nonprism is a particular repository that aims to provide software built +# and patched without services under global data surveillance programs like PRISM, +# XKeyscore and Tempora. For more info see: https://wiki.parabola.nu/Nonprism + +#[nonprism-testing] +#Include = /etc/pacman.d/mirrorlist + +#[nonprism] +#Include = /etc/pacman.d/mirrorlist + +[libre-testing] +Include = /etc/pacman.d/mirrorlist + +[libre] +Include = /etc/pacman.d/mirrorlist + +#[testing] +#Include = /etc/pacman.d/mirrorlist -[Account aminb] -localrepository = aminbL -remoterepository = aminbR +[core] +Include = /etc/pacman.d/mirrorlist -[Repository GmailL] -type = Maildir -localfolders = ~/Maildir/Gmail - -[Repository GmailR] -type = IMAP -remotehost = imap.gmail.com -remoteusereval = mailuser("gmail") -remotepasseval = mailpasswd("gmail") -sslcacertfile = /etc/ssl/certs/ca-certificates.crt -ssl = yes -folderfilter = lambda foldername: foldername not in '[Gmail]/All Mail' -maxconnections = 1 -realdelete = no - -[Repository aminbL] -type = Maildir -localfolders = ~/Maildir/aminb - -[Repository aminbR] -type = IMAP -remotehost = mail.aminb.org -remoteusereval = mailuser("aminb") -remotepasseval = mailpasswd("aminb") -sslcacertfile = /etc/ssl/certs/ca-certificates.crt -ssl = yes -folderfilter = lambda foldername: foldername not in 'dovecot.sieve' -maxconnections = 1 -realdelete = no -#+end_src +[extra] +Include = /etc/pacman.d/mirrorlist -*** offlineimap.py -:PROPERTIES: -:header-args+: :tangle ~/.offlineimap.py -:END: +#[community-testing] +#Include = /etc/pacman.d/mirrorlist -#+begin_src python :tangle no -import os -import subprocess +[community] +Include = /etc/pacman.d/mirrorlist -def mailpasswd(acct): - acct = os.path.basename(acct) - path = "/home/amin/.passwd/%s.gpg" % acct - args = ["gpg", "--use-agent", "--quiet", "--batch", "-d", path] - try: - return subprocess.check_output(args).strip() - except subprocess.CalledProcessError: - return "" - -def mailuser(acct): - acct = os.path.basename(acct) - path = "/home/amin/.passwd/%s" % acct - args = ["cat", path] - try: - return subprocess.check_output(args).strip() - except subprocess.CalledProcessError: - return "" - -def prime_gpg_agent(): - ret = False - i = 1 - while not ret: - ret = (mailpasswd("prime") == "prime") - if i > 2: - from offlineimap.ui import getglobalui - sys.stderr.write("Error reading in passwords. Terminating.\n") - getglobalui().terminate() - i += 1 - return ret - -prime_gpg_agent() +# The PCR (Parabola Community Repository) contains packages maintained by trusted +# members of the Parabola community. It also contains packages maintained by +# Parabola developers, but that the developer decided didn't belong in core/libre. + +#[pcr-testing] +#Include = /etc/pacman.d/mirrorlist + +[pcr] +Include = /etc/pacman.d/mirrorlist + +# If you want to run 32 bit applications on your x86_64 system, +# enable the libre-multilib, multilib and pcr-multilib repositories as required here. + +#[nonprism-multilib-testing] +#Include = /etc/pacman.d/mirrorlist + +#[nonprism-multilib] +#Include = /etc/pacman.d/mirrorlist + +#[libre-multilib-testing] +#Include = /etc/pacman.d/mirrorlist + +#[libre-multilib] +#Include = /etc/pacman.d/mirrorlist + +#[multilib-testing] +#Include = /etc/pacman.d/mirrorlist + +#[multilib] +#Include = /etc/pacman.d/mirrorlist + +#[pcr-multilib-testing] +#Include = /etc/pacman.d/mirrorlist + +#[pcr-multilib] +#Include = /etc/pacman.d/mirrorlist + +# Parabola also supports another community projects and personal repositories, to +# find them check out this wiki page: https://wiki.parabola.nu/Repositories + +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs + +Include = /etc/pacman.d/*.conf +#+end_src + +*** mirrorlist + +#+begin_src conf :tangle /sudo::/etc/pacman.d/mirrorlist :comments none +# Parabola GNU/Linux-libre - Last Updated: Wed Dec 20 02:59:35 GMT 2017 + +Server = http://mirror.fsf.org/parabola/$repo/os/$arch +Server = http://mirror.fsf.org/parabola/$repo/os/$arch +Server = http://mirror.fsf.org/parabola/$repo/os/$arch +Server = http://mirror.fsf.org/parabola/$repo/os/$arch + +# Location: London, UK +# Responsible: Parabola Project +# Note: Not really a mirror, automatically redirects you to an Arch +# mirror when possible. Works best specifying it a few times in a +# row (404s workaround). +# Server = http://redirector.parabola.nu/$repo/os/$arch +Server = https://redirector.parabola.nu/$repo/os/$arch + +# Location: Reykjavík, Iceland +# Responsible: Parabola Project +# Note: Not really a mirror, automatically redirects you to a Parabola +# mirror that has the file you are looking for. +# Server = http://repomirror.parabola.nu/$repo/os/$arch +Server = https://repomirror.parabola.nu/$repo/os/$arch + +# Location: Falkenstein, Germany +# Server = http://mirror.grapentin.org/parabola/$repo/os/$arch +Server = https://mirror.grapentin.org/parabola/$repo/os/$arch + +# Location: Volendam, Netherlands +Server = https://jeweet.net/repo/parabola/$repo/os/$arch + +# Location: Amsterdam, Netherlands +# Note: Not really a mirror, but a high-speed 10GiB cache for +# mirror.yandex.ru/mirrors/parabola +# Server = http://parabola.isacdaavid.info:8080/$repo/os/$arch +Server = https://parabola.isacdaavid.info:8081/$repo/os/$arch + +# Location: Moscow, Russian Federation +# Server = http://mirror.yandex.ru/mirrors/parabola/$repo/os/$arch +Server = https://mirror.yandex.ru/mirrors/parabola/$repo/os/$arch + +# Location: Ho Chi Minh City, Vietnam +# Server = http://mirror.freedif.org/Parabola/$repo/os/$arch +Server = https://mirror.freedif.org/Parabola/$repo/os/$arch + +# Location: Los Angeles, CA, USA +# Note: Also visit http://alfplayer.com/ for its SNAPSHOTS ARCHIVE +Server = http://alfplayer.com/parabola/$repo/os/$arch + +# Location: Boston, MA, USA +Server = http://mirror.fsf.org/parabola/$repo/os/$arch + +# Location: Austin, TX, USA +# Server = http://parabola.serverpit.com/ +Server = https://parabola.serverpit.com/ + +# Location: Reykjavík, Iceland +# Responsible: Parabola Project +# Note: Currently pointing to repomirror.parabola.nu +# Server = http://repo.parabola.nu/$repo/os/$arch +Server = https://repo.parabola.nu/$repo/os/$arch #+end_src ** pigeonhole -*** gnu.sieve +*** amin.sieve :PROPERTIES: -:header-args+: :tangle ~/sieve/gnu.sieve :comments none +:header-args+: :tangle ~/mail/bndl.org/amin/sieve/amin.sieve :comments none :END: #+begin_src conf -require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", "include" ]; +require ["regex", "variables", "fileinto", "envelope", + "mailbox", "imap4flags", "include"]; +# webmasters if anyof ( - address :is "from" "webmasters@gnu.org", - address :is "from" "webmasters-comment@gnu.org") { - fileinto :create "webmasters"; + address :is "from" ["webmasters@gnu.org", "webmasters-comment@gnu.org"]) { + fileinto :create "gnu.webmasters"; stop; } @@ -2341,438 +2514,55 @@ include :personal "lists"; *** lists.sieve :PROPERTIES: -:header-args+: :tangle ~/sieve/lists.sieve :comments none +:header-args+: :tangle ~/mail/bndl.org/amin/sieve/lists.sieve :comments none :END: #+begin_src conf -require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", - "include" ]; +require ["regex", "variables", "fileinto", "envelope", + "mailbox", "imap4flags", "include"]; +# mailing lists if anyof ( - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "", - header :contains "list-id" "") { + header :contains "list-id" + [ "" + , "" + , "" + , "" + , "" + , "" + , "" + , "" + , "" + , "" + , "" + , "" + , "" + , "" + , "" + ] ) { if header :regex "list-id" "<([a-z_0-9-]+)[.@]" { set :lower "listname" "${1}"; - fileinto :create "l/${listname}"; + fileinto :create "gnu.${listname}"; + stop; } } -#+end_src - -** polybar - -*** config -:PROPERTIES: -:header-args+: :tangle ~/.config/polybar/config -:END: - -#+begin_src conf :tangle no -;===================================================== -; -; To learn more about how to configure Polybar -; go to https://github.com/jaagr/polybar -; -; The README contains alot of information -; -;===================================================== - -[colors] -;background = ${xrdb:color0:#222} -background = #222 -background-alt = #444 -;foreground = ${xrdb:color7:#222} -foreground = #eee -foreground-alt = #888 -primary = #ffb52a -secondary = #e60053 -alert = #bd2c40 - -[bar/main] -;monitor = ${env:MONITOR:HDMI-1} -width = 100% -height = 27 -;offset-x = 1% -;offset-y = 1% -radius = 3.0 -fixed-center = true - -background = ${colors.background} -foreground = ${colors.foreground} - -line-size = 3 -line-color = #f00 - -border-size = 4 -border-color = #00000000 - -padding-left = 0 -padding-right = 2 - -module-margin-left = 2 -module-margin-right = 2 - -font-0 = Ubuntu:fontformat=truetype:antialias=true:pixelsize=9;1 -font-1 = unifont:fontformat=truetype:size=8:antialias=false;0 -font-2 = Wuncon Siji:pixelsize=10;1 -font-3 = FontAwesome:pixelsize=10;1 - -modules-left = bspwm xwindow -modules-center = -modules-right = volume filesystem mail xkeyboard memory cpu temperature date powermenu - -tray-position = right -tray-padding = 1 -;tray-transparent = true -;tray-background = #0063ff -tray-maxsize = 18 - -wm-restack = bspwm - -;override-redirect = true - -scroll-up = bspwm-desknext -scroll-down = bspwm-deskprev - -[module/xwindow] -type = internal/xwindow -label = %title:0:50:...% - -[module/xkeyboard] -type = internal/xkeyboard -blacklist-0 = num lock - -format-prefix = " " -format-prefix-foreground = ${colors.foreground-alt} -format-prefix-underline = ${colors.secondary} - -label-layout = %layout% -label-layout-underline = ${colors.secondary} - -label-indicator-padding = 2 -label-indicator-margin = 1 -label-indicator-background = ${colors.secondary} -label-indicator-underline = ${colors.secondary} - -[module/filesystem] -type = internal/fs -interval = 25 - -mount-0 = / - -label-mounted = %{F#0a81f5}%mountpoint%%{F-}: %percentage_used%% -label-unmounted = %mountpoint% not mounted -label-unmounted-foreground = ${colors.foreground-alt} - -[module/bspwm] -type = internal/bspwm - -label-focused = %index% -label-focused-background = ${colors.background-alt} -label-focused-underline= ${colors.primary} -label-focused-padding = 2 - -label-occupied = %index% -label-occupied-padding = 2 - -label-urgent = %index%! -label-urgent-background = ${colors.alert} -label-urgent-padding = 2 - -label-empty = %index% -label-empty-foreground = ${colors.foreground-alt} -label-empty-padding = 2 - -[module/i3] -type = internal/i3 -format = -index-sort = true -wrapping-scroll = false - -; Only show workspaces on the same output as the bar -;pin-workspaces = true - -label-mode-padding = 2 -label-mode-foreground = #000 -label-mode-background = ${colors.primary} - -; focused = Active workspace on focused monitor -label-focused = %index% -label-focused-background = ${module/bspwm.label-focused-background} -label-focused-underline = ${module/bspwm.label-focused-underline} -label-focused-padding = ${module/bspwm.label-focused-padding} - -; unfocused = Inactive workspace on any monitor -label-unfocused = %index% -label-unfocused-padding = ${module/bspwm.label-occupied-padding} - -; visible = Active workspace on unfocused monitor -label-visible = %index% -label-visible-background = ${self.label-focused-background} -label-visible-underline = ${self.label-focused-underline} -label-visible-padding = ${self.label-focused-padding} - -; urgent = Workspace with urgency hint set -label-urgent = %index% -label-urgent-background = ${module/bspwm.label-urgent-background} -label-urgent-padding = ${module/bspwm.label-urgent-padding} - -[module/mpd] -type = internal/mpd -format-online = - -icon-prev =  -icon-stop =  -icon-play =  -icon-pause =  -icon-next =  - -label-song-maxlen = 25 -label-song-ellipsis = true - -[module/xbacklight] -type = internal/xbacklight - -format =