X-Git-Url: https://git.shemshak.org/gitweb.cgi/~bandali/configs/blobdiff_plain/50fff474a3439e5479ae8c8943d89e128c18c132..1e55aaa3b2c2868478c3929e7a7de9fc50ad0e9a:/rc.org diff --git a/rc.org b/rc.org index 298bee3..6a1ab97 100644 --- a/rc.org +++ b/rc.org @@ -14,47 +14,6 @@ Note: This file is best viewed inside Emacs with org mode. This section contains the configuration files (dotfiles) of various programs I use. -** [[https://github.com/afewmail/afew][afew]] -:PROPERTIES: -:header-args+: :tangle ~/.config/afew/config -:END: - -#+begin_quote -an initial tagging script for notmuch mail -#+end_quote - -#+begin_src conf -# This is the default filter chain -[SpamFilter] -#[ClassifyingFilter] -[KillThreadsFilter] -#[ListMailsFilter] -[ArchiveSentMailsFilter] -sent_tag = sent -[InboxFilter] - -#[Filter.1] -#query = 'folder:amin/lists/.haskell-cafe' -#tags = +lists;+lists/haskell-cafe -#message = lists/haskell-cafe - -#[Filter.2] -#query = 'folder:amin/lists/.haskell-weekly' -#tags = +lists;+lists/haskell-weekly -#message = lists/haskell-weekly - -#[Filter.3] -#query = 'folder:amin/lists/.hackernewsletter' -#tags = +lists;+lists/hackernewsletter -#message = lists/hackernewsletter - - -#[FolderNameFilter] -#folder_blacklist = Inbox -#maildir_separator = /. -#folder_transforms = Drafts:draft Junk:spam Trash:deleted Sent:sent Archive:archive lists/haskell-cafe:lists/haskell-cafe -#+end_src - ** bspwm *** bspwmrc @@ -66,7 +25,7 @@ sent_tag = sent sxhkd & sh ~/.fehbg & xfce4-panel -d & -#compton & +compton & sleep 0.5 && pasystray --notify=all & bspc monitor -d I II III IV V VI VII VIII IX X @@ -85,7 +44,7 @@ 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 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 @@ -177,6 +136,9 @@ XF86Audio{Raise,Lower}Volume XF86AudioMute pamixer --toggle-mute +XF86AudioMicMute + pactl set-source-mute 1 toggle + # playback control XF86Audio{Play,Prev,Next} mpc {toggle,prev,next} @@ -204,6 +166,9 @@ super + apostrophe #XF86KbdBrightness{Up,Down} # kbdlight {up,down} +XF86RotateWindows + toggle-tablet + # # bspwm hotkeys # @@ -623,7 +588,7 @@ timeout = 0 ** Fontconfig :PROPERTIES: -:header-args+: :tangle ~/.config/fontconfig/fonts.conf +:header-args+: :tangle ~/.config/fontconfig/fonts.conf :comments none :END: #+begin_src xml @@ -787,6 +752,22 @@ $clean_ext = "aux out"; # $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 @@ -799,7 +780,7 @@ $clean_ext = "aux out"; type = SimplePOP3SSLRetriever server = fencepost.gnu.org username = aminb -password_command = ("gpg2", "--no-tty", "-q", "-d", "~/.passwd/gnu.gpg") +password_command = ("gpg2", "--no-tty", "-q", "-d", "/home/amin/.passwd/gnu.gpg") port = 995 use_apop = True @@ -1415,7 +1396,7 @@ logfile ~/.msmtp.log # aminb account aminb host nix.aminb.org -tls_fingerprint BB:98:B3:02:83:B0:E0:C3:49:3E:C2:B2:A8:60:62:78:03:B3:5D:B3:BD:B8:0A:39:BB:E4:B0:66:D1:CF:D1:6B +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 tls_starttls on from amin@aminb.org user amin@aminb.org @@ -1424,7 +1405,8 @@ passwordeval gpg2 --no-tty -q -d ~/.passwd/amin.gpg # gnu account gnu host fencepost.gnu.org -tls_fingerprint 94:0E:37:EB:EA:44:5A:4B:B6:6F:16:3D:6C:7E:7E:44:2D:93:61:C1:FE:82:A8:29:5E:3C:12:4E:2D:BE:0E:2C +# 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_starttls on from aminb@gnu.org user aminb @@ -2065,7 +2047,7 @@ path=/home/amin/mail [user] name=Amin Bandali primary_email=amin@aminb.org -other_email=amin.bandali@uwaterloo.ca;mbandali@uwaterloo.ca;aminb@gnu.org; +other_email=abandali@uwaterloo.ca;amin.bandali@uwaterloo.ca;aminb@gnu.org; # Configuration for "notmuch new" # @@ -2084,7 +2066,7 @@ other_email=amin.bandali@uwaterloo.ca;mbandali@uwaterloo.ca;aminb@gnu.org; [new] tags=new; #tags=unread;inbox; -ignore=.uidvalidity;.mbsyncstate +ignore=.uidvalidity;.mbsyncstate;/.*/dovecot*/ # Search configuration # @@ -2133,23 +2115,71 @@ synchronize_flags=true gpg_path=gpg #+end_src +*** pre-new hook +:PROPERTIES: +:header-args+: :tangle ~/mail/.notmuch/hooks/pre-new :shebang "#!/bin/sh" +:END: + +#+begin_src sh +touch /tmp/gnusieve.log +sieve-filter -eW -o postmaster_address=postmaster@aminb.org \ + -o mail_location=maildir:$MAILDIR/gnu:LAYOUT=fs:INBOX=$MAILDIR/gnu/Inbox ~/sieve/gnu.sieve INBOX delete &>>/tmp/gnusieve.log +#+end_src + *** post-new hook :PROPERTIES: :header-args+: :tangle ~/mail/.notmuch/hooks/post-new :shebang "#!/bin/sh" :END: #+begin_src sh -afew -tn +# 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 + +# initial tagging +notmuch tag +inbox +unread -new -- tag:new + # apply tags to lists -notmuch tag +lists +lists/deepspec -- folder:amin/lists/deepspec -notmuch tag +lists +lists/haskell-cafe -- folder:amin/lists/haskell-cafe -notmuch tag +lists +lists/haskell-weekly -- folder:amin/lists/haskell-weekly -notmuch tag +lists +lists/hackernewsletter -- folder:amin/lists/hackernewsletter -notmuch tag +lists +lists/notmuch -- folder:amin/lists/notmuch -notmuch tag +lists +lists/info-gnu-emacs -- folder:amin/lists/info-gnu-emacs -notmuch tag +lists +lists/help-gnu-emacs -- folder:amin/lists/help-gnu-emacs -notmuch tag +lists +lists/emacs-devel -- folder:amin/lists/emacs-devel + +# +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 +lists/cs136 -- folder:uwaterloo/lists/cs136 +notmuch tag -inbox +lists/se463 -- folder:uwaterloo/lists/se463 + +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 +notmuch tag -inbox +lists/scs-grads -- folder:uwaterloo/lists/scs-grads +notmuch tag -inbox +lists/watform-students -- folder:uwaterloo/lists/Watform-students +# + +# +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 +# #+end_src *** notmuch.service @@ -2280,6 +2310,56 @@ def prime_gpg_agent(): prime_gpg_agent() #+end_src +** pigeonhole +*** gnu.sieve +:PROPERTIES: +:header-args+: :tangle ~/sieve/gnu.sieve :comments none +:END: + +#+begin_src conf +require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", "include" ]; + +if anyof ( + address :is "from" "webmasters@gnu.org", + address :is "from" "webmasters-comment@gnu.org") { + fileinto :create "webmasters"; + stop; +} + +include :personal "lists"; +#+end_src + +*** lists.sieve +:PROPERTIES: +:header-args+: :tangle ~/sieve/lists.sieve :comments none +:END: + +#+begin_src conf +require [ "regex", "variables", "fileinto", "envelope", "mailbox", "imap4flags", + "include" ]; + +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" "") { + if header :regex "list-id" "<([a-z_0-9-]+)[.@]" { + set :lower "listname" "${1}"; + fileinto :create "l/${listname}"; + } +} +#+end_src + ** polybar *** config @@ -3335,7 +3415,7 @@ exit 1 ** redshift :PROPERTIES: -:header-args+: :tangle ~/.config/redshift.conf +:header-args+: :tangle ~/.config/redshift.conf :comments none :END: #+begin_src conf @@ -3443,7 +3523,7 @@ rofi.theme: /usr/share/rofi/themes//gruvbox-light.rasi # rofi command. Make sure to have "$@" as last argument _rofi () { #rofi -no-auto-select -kb-accept-entry "!Return" -i -no-levenshtein-sort "$@" - rofi -i -no-auto-select "$@" + rofi -i -no-auto-select -kb-accept-entry "!Return" "$@" } # xdotool needs the keyboard layout to be set using setxkbmap @@ -3842,6 +3922,7 @@ choice. #+begin_src sh xset -b # disable bell +xset r rate 200 45 # repeat delay (ms) and rate (repeats/sec) # setxkbmap -option compose:ralt @@ -3865,15 +3946,12 @@ source $HOME/.zprofile export _JAVA_AWT_WM_NONREPARENTING=1 export _JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true' -# unlock-def-gk.py & - if [ $(hostname) = "plasma" ] then - bspwm & -elif [ $(hostname) = "enigma" ] -then - emacs -ib 0 & + unlock-def-gk.py & fi + +bspwm & #+end_src *** X resources @@ -4394,7 +4472,7 @@ export MOZ_USE_XINPUT2=1 # precise scrolling in firefox #export JAVA_HOME=/usr/lib/jvm/java-8-openjdk #export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G" -#if [ -e /home/amin/.nix-profile/etc/profile.d/nix.sh ]; then . /home/amin/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer +if [ -e /home/amin/.nix-profile/etc/profile.d/nix.sh ]; then . /home/amin/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer #+end_src *** zshenv @@ -4475,8 +4553,8 @@ alias scl=systemctl alias jcl=journalctl alias m="mbsync -Va; getmail; notmuch new" alias best="youtube-dl -f best" -alias ace="mosh amin@ace.aminb.org" -alias nix="ssh amin@aminb.org" +alias nixx="ssh amin@nix.aminb.org" +alias fence="ssh aminb@fencepost.gnu.org" aur() { cd ~/usr/build @@ -4534,6 +4612,44 @@ fi xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/presentation-mode -T #+end_src +** toggle-tablet +:PROPERTIES: +:header-args+: :tangle ~/.local/bin/toggle-tablet :shebang "#!/bin/bash" +:END: + +This script toggles between a 'normal' mode and a 'tablet' mode, doing +a few things: + +- rotates the screen using =xrandr=, so that rotating the physical + display of my X220t would have the laptop's battery on the right + hand side, +- enables touch screen, +- properly rotates the stylus pen and touch screen pointers, and +- toggles between RGB and Vertical BGR sub-pixel order. + +#+begin_src bash +case $(xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation) in + 0) # Screen is not rotated, we should rotate it right (90°) + xrandr -o 3 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation -s 1 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Device_Enabled -s 1 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Wacom_Rotation -s 1 + xfconf-query -c xsettings -p /Xft/RGBA -s vbgr + ;; + 1) # Currently top is rotated right, we should set it normal (0°) + xrandr -o 0 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation -s 0 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Wacom_Rotation -s 0 + xfconf-query -c pointers -p /Wacom_ISDv4_E6_Finger_touch/Properties/Device_Enabled -s 0 + xfconf-query -c xsettings -p /Xft/RGBA -s rgb + ;; + *) + echo "Unknown result from 'xfconf-query -c pointers -p /Wacom_ISDv4_E6_Pen_stylus/Properties/Wacom_Rotation'" >&2 + exit 1 + ;; +esac +#+end_src + ** unlock-def-gk.py :PROPERTIES: :header-args+: :tangle ~/.local/bin/unlock-def-gk.py :shebang "#!/usr/bin/env python2"