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
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
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
XF86AudioMute
pamixer --toggle-mute
+XF86AudioMicMute
+ pactl set-source-mute 1 toggle
+
# playback control
XF86Audio{Play,Prev,Next}
mpc {toggle,prev,next}
#XF86KbdBrightness{Up,Down}
# kbdlight {up,down}
+XF86RotateWindows
+ toggle-tablet
+
#
# bspwm hotkeys
#
** Fontconfig
:PROPERTIES:
-:header-args+: :tangle ~/.config/fontconfig/fonts.conf
+:header-args+: :tangle ~/.config/fontconfig/fonts.conf :comments none
:END:
#+begin_src xml
# $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
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
# 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
# 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
+tls_fingerprint 95:B7:AC:05:37:97:F8:BE:0B:C0:71:4A:8A:4C:0B:A7:59:FD:2F:B8:93:C8:CC:B6:FF:82:83:90:CF:03:91:93
tls_starttls on
from aminb@gnu.org
user aminb
[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"
#
[new]
tags=new;
#tags=unread;inbox;
-ignore=.uidvalidity;.mbsyncstate
+ignore=.uidvalidity;.mbsyncstate;/.*/dovecot*/
# Search configuration
#
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/haskell-weekly -- folder:amin/lists/haskell-weekly
+notmuch tag -inbox +lists/hackernewsletter -- folder:amin/lists/hackernewsletter
+notmuch tag -inbox +lists/emacs-devel -- folder:gnu/l/emacs-devel
+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/info-gnu-emacs -- folder:gnu/l/info-gnu-emacs
+notmuch tag -inbox +lists/help-gnu-emacs -- folder:gnu/l/help-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 +lists/fencepost-users -- folder:gnu/l/fencepost-users
+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/notmuch -- folder:gnu/l/notmuch
#+end_src
*** notmuch.service
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" "<emacs-devel.gnu.org>",
+ header :contains "list-id" "<guix-devel.gnu.org>",
+ header :contains "list-id" "<guile-devel.gnu.org>",
+ header :contains "list-id" "<help-gnu-emacs.gnu.org>",
+ header :contains "list-id" "<info-gnu-emacs.gnu.org>",
+ header :contains "list-id" "<www-commits.gnu.org>",
+ header :contains "list-id" "<www-discuss.gnu.org>",
+ header :contains "list-id" "<fencepost-users.gnu.org>",
+ header :contains "list-id" "<deepspec.lists.cs.princeton.edu>",
+ header :contains "list-id" "<haskell-cafe.haskell.org>",
+ header :contains "list-id" "<notmuch.notmuchmail.org>") {
+ if header :regex "list-id" "<([a-z_0-9-]+)[.@]" {
+ set :lower "listname" "${1}";
+ fileinto :create "l/${listname}";
+ }
+}
+#+end_src
+
** polybar
*** config
** redshift
:PROPERTIES:
-:header-args+: :tangle ~/.config/redshift.conf
+:header-args+: :tangle ~/.config/redshift.conf :comments none
:END:
#+begin_src conf
# 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
#+begin_src sh
xset -b # disable bell
+xset r rate 200 45 # repeat delay (ms) and rate (repeats/sec)
# setxkbmap -option compose:ralt
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
#+begin_src sh
#PATH="$(ruby -e 'print Gem.user_dir')/bin:$PATH"
#PATH=$HOME/.gem/ruby/2.4.0/bin:$PATH
-export PATH=$HOME/.local/bin:$HOME/.cabal/bin:$HOME/.cargo/bin:$PATH
+export PATH=$HOME/.local/bin:$HOME/.cabal/bin:$HOME/.cargo/bin:$HOME/.elan/bin:$PATH
export XDG_CONFIG_HOME=$HOME/.config
export XDG_DATA_HOME=$HOME/.local/share
export XDG_DATA_DIRS=/usr/local/share:/usr/share
#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
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
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"