From 8b283d6f76ffd82770e65026cad21adc11b98e42 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 14:31:41 -0400 Subject: X11: Arch's default xserverrc no longer looks at XDG_VTNR --- .config/X11/serverrc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) mode change 120000 => 100644 .config/X11/serverrc diff --git a/.config/X11/serverrc b/.config/X11/serverrc deleted file mode 120000 index ce14133..0000000 --- a/.config/X11/serverrc +++ /dev/null @@ -1 +0,0 @@ -/etc/X11/xinit/xserverrc \ No newline at end of file diff --git a/.config/X11/serverrc b/.config/X11/serverrc new file mode 100644 index 0000000..6b57eeb --- /dev/null +++ b/.config/X11/serverrc @@ -0,0 +1,6 @@ +#!/bin/sh +if [ -z "$XDG_VTNR" ]; then + exec /usr/bin/X -nolisten tcp "$@" +else + exec /usr/bin/X -nolisten tcp "$@" vt$XDG_VTNR +fi -- cgit v1.2.3 From c0a9c2902e60cc980343a65f5519e7c9e2dcd081 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 14:32:52 -0400 Subject: xdg.sh: include XDG_VTNR --- .config/login.d/01_xdg.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.config/login.d/01_xdg.sh b/.config/login.d/01_xdg.sh index 4464764..c9f789c 100644 --- a/.config/login.d/01_xdg.sh +++ b/.config/login.d/01_xdg.sh @@ -9,6 +9,10 @@ [ -n "$XDG_DATA_DIRS" ] || export XDG_DATA_DIRS="/usr/local/share/:/usr/share/" [ -n "$XDG_CONFIG_DIRS" ] || export XDG_CONFIG_DIRS="/etc/xdg" [ -n "$XDG_CACHE_HOME" ] || export XDG_CACHE_HOME="$HOME/.cache" +[ -n "$XDG_VTNR" ] || export XDG_VTNR="$(tty 2>/dev/null | sed -n 's,^/dev/tty,,p')" + +# Check if XDG_VTNR got set to empty +[ -n "$XDG_VTNR" ] || unset XDG_VTNR # Check if XDG_RUNTIME_DIR is set, but has a bogus setting if [ -n "$XDG_RUNTIME_DIR" ] && [ ! -d "$XDG_RUNTIME_DIR" ]; then -- cgit v1.2.3 From 969410c5af909199724973b8851fcb6bf19eaba2 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 14:34:02 -0400 Subject: clean up XDG_RUNTIME_DIR handling --- .config/X11/clientrc | 1 + .config/login.d/01_xdg.sh | 27 -------------------------- .config/login.d/02_tmpdir.sh | 2 -- .config/login.d/02_xdg_runtime_dir.sh | 28 +++++++++++++++++++++++++++ .config/login.d/03_tmpdir.sh | 4 ++++ .config/login.d/90_dot-runtime.sh | 4 ---- .config/login.d/90_symlink_xdg_runtime_dir.sh | 4 ++++ .config/ssh/config | 2 +- 8 files changed, 38 insertions(+), 34 deletions(-) delete mode 100644 .config/login.d/02_tmpdir.sh create mode 100644 .config/login.d/02_xdg_runtime_dir.sh create mode 100644 .config/login.d/03_tmpdir.sh delete mode 100644 .config/login.d/90_dot-runtime.sh create mode 100644 .config/login.d/90_symlink_xdg_runtime_dir.sh diff --git a/.config/X11/clientrc b/.config/X11/clientrc index 4773ea4..2c965da 100755 --- a/.config/X11/clientrc +++ b/.config/X11/clientrc @@ -17,6 +17,7 @@ if [ -f "$usermodmap" ]; then xmodmap "$usermodmap" fi +[ -n "$XDG_RUNTIME_DIR" ] || exit 1 trap "rm -f $(printf '%q' "${XDG_RUNTIME_DIR}/x11-wm@${DISPLAY}")" EXIT mkfifo "${XDG_RUNTIME_DIR}/x11-wm@${DISPLAY}" diff --git a/.config/login.d/01_xdg.sh b/.config/login.d/01_xdg.sh index c9f789c..22bbc01 100644 --- a/.config/login.d/01_xdg.sh +++ b/.config/login.d/01_xdg.sh @@ -18,30 +18,3 @@ if [ -n "$XDG_RUNTIME_DIR" ] && [ ! -d "$XDG_RUNTIME_DIR" ]; then unset XDG_RUNTIME_DIR fi - -# Set XDG_RUNTIME_DIR if we can -if [ -z "$XDG_RUNTIME_DIR" ] && type flock &>/dev/null; then - _diy_xdg_runtime_login() { - export XDG_RUNTIME_DIR="$XDG_CACHE_HOME/xdg-runtime-dir/$HOSTNAME" - # There's a race condition here, between the `ln -s` and `flock`. - # But it's not like I'll be hammering a box with logins. - if [ ! -d "$XDG_RUNTIME_DIR" ]; then - local tmp="$(mktemp -d --tmpdir -- "${USER}@${HOSTNAME}-runtime.XXXXXXXXXX")" - mkdir -p -- "$XDG_CACHE_HOME/xdg-runtime-dir" - ln -sfT -- "$tmp" "$XDG_RUNTIME_DIR" - fi - if ! [ /dev/fd/7 -ef "$XDG_CACHE_HOME/xdg-runtime-dir/.lock" ]; then - exec 7>"$XDG_CACHE_HOME/xdg-runtime-dir/.lock" - if flock -sn 7; then - # Unfortunately this doesn't survive across exec(1). - trap _diy_xdg_runtime_logout EXIT - fi - fi - } - _diy_xdg_runtime_logout() { - if flock -xn 7; then - rm -rf -- "$(readlink "$XDG_RUNTIME_DIR")" - fi - } - _diy_xdg_runtime_login -fi diff --git a/.config/login.d/02_tmpdir.sh b/.config/login.d/02_tmpdir.sh deleted file mode 100644 index c0d5f18..0000000 --- a/.config/login.d/02_tmpdir.sh +++ /dev/null @@ -1,2 +0,0 @@ -mkdir -p -- "$XDG_RUNTIME_DIR/tmpdir" -export TMPDIR="$XDG_RUNTIME_DIR/tmpdir" diff --git a/.config/login.d/02_xdg_runtime_dir.sh b/.config/login.d/02_xdg_runtime_dir.sh new file mode 100644 index 0000000..6d93359 --- /dev/null +++ b/.config/login.d/02_xdg_runtime_dir.sh @@ -0,0 +1,28 @@ +# This should be readable by /bin/sh + +# Set XDG_RUNTIME_DIR if we can +if [ -z "$XDG_RUNTIME_DIR" ] && shopt -q login_shell && type flock &>/dev/null; then + _diy_xdg_runtime_login() { + export XDG_RUNTIME_DIR="$XDG_CACHE_HOME/xdg-runtime-dir/$HOSTNAME" + # There's a race condition here, between the `ln -s` and `flock`. + # But it's not like I'll be hammering a box with logins. + if [ ! -d "$XDG_RUNTIME_DIR" ]; then + local tmp="$(mktemp -d --tmpdir -- "${USER}@${HOSTNAME}-runtime.XXXXXXXXXX")" + mkdir -p -- "$XDG_CACHE_HOME/xdg-runtime-dir" + ln -sfT -- "$tmp" "$XDG_RUNTIME_DIR" + fi + if ! [ /dev/fd/7 -ef "$XDG_CACHE_HOME/xdg-runtime-dir/.lock" ]; then + exec 7>"$XDG_CACHE_HOME/xdg-runtime-dir/.lock" + if flock -sn 7; then + # Unfortunately this doesn't survive across exec(1). + trap _diy_xdg_runtime_logout EXIT + fi + fi + } + _diy_xdg_runtime_logout() { + if flock -xn 7; then + rm -rf -- "$(readlink "$XDG_RUNTIME_DIR")" + fi + } + _diy_xdg_runtime_login +fi diff --git a/.config/login.d/03_tmpdir.sh b/.config/login.d/03_tmpdir.sh new file mode 100644 index 0000000..b94ef1a --- /dev/null +++ b/.config/login.d/03_tmpdir.sh @@ -0,0 +1,4 @@ +if [ -n "$XDG_RUNTIME_DIR" ]; then + mkdir -p -- "$XDG_RUNTIME_DIR/tmpdir" + export TMPDIR="$XDG_RUNTIME_DIR/tmpdir" +fi diff --git a/.config/login.d/90_dot-runtime.sh b/.config/login.d/90_dot-runtime.sh deleted file mode 100644 index 87d30ec..0000000 --- a/.config/login.d/90_dot-runtime.sh +++ /dev/null @@ -1,4 +0,0 @@ -# This is really only needed for ssh ControlPath; as I don't have a -# way to communicate XD -mkdir -p -- ~/.runtime -ln -sfT -- "$XDG_RUNTIME_DIR" ~/.runtime/"$HOSTNAME" diff --git a/.config/login.d/90_symlink_xdg_runtime_dir.sh b/.config/login.d/90_symlink_xdg_runtime_dir.sh new file mode 100644 index 0000000..b89f7b1 --- /dev/null +++ b/.config/login.d/90_symlink_xdg_runtime_dir.sh @@ -0,0 +1,4 @@ +# This is really only needed for ssh ControlPath; as I don't have a +# way to communicate XDG_RUNTIME_DIR +mkdir -p -- "$XDG_CACHE_HOME/xdg-runtime-dir" +ln -sfT -- "$XDG_RUNTIME_DIR" "$XDG_CACHE_HOME/xdg-runtime-dir/$HOSTNAME" diff --git a/.config/ssh/config b/.config/ssh/config index cc796ed..5ea36ba 100644 --- a/.config/ssh/config +++ b/.config/ssh/config @@ -1,7 +1,7 @@ Host * Protocol 2 ControlMaster auto - ControlPath ~/.runtime/%l/ssh-%r@%h:%p + ControlPath ~/.cache/xdg-runtime-dir/%l/ssh-%r@%h:%p Compression yes # Purdue ################################################### -- cgit v1.2.3 From 35e5363eec303944b902b9f1603e38392ca4558b Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 14:34:24 -0400 Subject: fix up Purdue hosts in ssh/config --- .config/ssh/config | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.config/ssh/config b/.config/ssh/config index 5ea36ba..84df253 100644 --- a/.config/ssh/config +++ b/.config/ssh/config @@ -6,8 +6,9 @@ Host * # Purdue ################################################### -Host data lore borg* xinu* sac* sslab* +Host data lore borg?? xinu?? sac?? sslab?? HostName %h.cs.purdue.edu + User shumakl Host *.cs.purdue.edu User shumakl -- cgit v1.2.3 From 479e2d7bcdc352626a7c4f0289d8f0c75360a978 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 15:09:22 -0400 Subject: Makefile: don't error if there are no Maildir folders --- .config/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/Makefile b/.config/Makefile index 909486d..c4cd5d0 100644 --- a/.config/Makefile +++ b/.config/Makefile @@ -15,7 +15,7 @@ clean: rm -f $(targets) ${HOME}/.folders: ${HOME}/Maildir $(MAKEFILE_LIST) - find $< -mindepth 2 -maxdepth 2 \( -type f -name "maildirfolder" -o -type d -name new -o -type d -name tmp -o -type d -name cur \) -printf '%P\0' | xargs -0 dirname -z -- | sort -zu | xargs -0 printf -- '.%s\n' >'$@' + find $< -mindepth 2 -maxdepth 2 \( -type f -name "maildirfolder" -o -type d -name new -o -type d -name tmp -o -type d -name cur \) -printf '%P\0' | xargs -r0 dirname -z -- | sort -zu | xargs -0 printf -- '.%s\n' >'$@' ${GIT_DIR}/info/exclude: ${HOME}/.git.info.exclude.in $(shell echo .??*/) ( cat $<; find $^ -type f -name 'CACHEDIR.TAG' -printf '%h\n'|sed 's@^\./@/@' ) > $@ -- cgit v1.2.3 From 9f5efa128ef0c1177856682659969e2bc8accfd2 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 15:09:56 -0400 Subject: Makefile: Don't require to be run from a login shell --- .config/Makefile | 7 ++++++- .config/cron/make-config | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.config/Makefile b/.config/Makefile index c4cd5d0..c530806 100644 --- a/.config/Makefile +++ b/.config/Makefile @@ -1,5 +1,9 @@ #!/usr/bin/make -f - +ifeq ($(XDG_CACHE_HOME),) +default: all; @: +%: + . ~/.profile && $(MAKE) '$@' +else SHELL = /bin/bash GIT_DIR = ${HOME}/.git @@ -39,3 +43,4 @@ ${HOME}/Maildir/%: | ${HOME}/Maildir .PHONY: FORCE PHONY FORCE: ; PHONY: ; +endif diff --git a/.config/cron/make-config b/.config/cron/make-config index d079c92..6a7e9d6 100644 --- a/.config/cron/make-config +++ b/.config/cron/make-config @@ -1,2 +1,2 @@ #m h dom mon dow command -*/5 * * * * cronic bash -l -c 'make -C "$XDG_CONFIG_HOME"' +*/5 * * * * cronic make -C ~/.config -- cgit v1.2.3 From 3295c5fd9b09fe0af48e11222c41d69f5bae5dbe Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 15:10:22 -0400 Subject: login.sh: Do a better job of handling if variables aren't set --- .config/login.d/90_symlink_xdg_runtime_dir.sh | 6 ++++-- .config/login.sh | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.config/login.d/90_symlink_xdg_runtime_dir.sh b/.config/login.d/90_symlink_xdg_runtime_dir.sh index b89f7b1..bc6109d 100644 --- a/.config/login.d/90_symlink_xdg_runtime_dir.sh +++ b/.config/login.d/90_symlink_xdg_runtime_dir.sh @@ -1,4 +1,6 @@ # This is really only needed for ssh ControlPath; as I don't have a # way to communicate XDG_RUNTIME_DIR -mkdir -p -- "$XDG_CACHE_HOME/xdg-runtime-dir" -ln -sfT -- "$XDG_RUNTIME_DIR" "$XDG_CACHE_HOME/xdg-runtime-dir/$HOSTNAME" +if [ -n "$XDG_RUNTIME_DIR" ]; then + mkdir -p -- "$XDG_CACHE_HOME/xdg-runtime-dir" + ln -sfT -- "$XDG_RUNTIME_DIR" "$XDG_CACHE_HOME/xdg-runtime-dir/$HOSTNAME" +fi diff --git a/.config/login.sh b/.config/login.sh index b2cc80a..538920a 100644 --- a/.config/login.sh +++ b/.config/login.sh @@ -11,6 +11,10 @@ # the default umask is set in /etc/profile; for setting the umask # for ssh logins, install and configure the libpam-umask package. +if [ -z "$HOME" ]; then + eval 'HOME=~' + export HOME +fi for file in "${XDG_CONFIG_HOME:-$HOME/.config}/login.d/"*.sh; do . "$file" done -- cgit v1.2.3 From 39c0d7a5c7538350e96fc135147f56cdb7d45093 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 15:59:10 -0400 Subject: There's a really silly restriction for the path length of domain sockets. --- .config/ssh/config | 2 +- .config/symlinks | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.config/ssh/config b/.config/ssh/config index 84df253..8649e61 100644 --- a/.config/ssh/config +++ b/.config/ssh/config @@ -1,7 +1,7 @@ Host * Protocol 2 ControlMaster auto - ControlPath ~/.cache/xdg-runtime-dir/%l/ssh-%r@%h:%p + ControlPath ~/.runtime/%l/ssh-%r@%h:%p Compression yes # Purdue ################################################### diff --git a/.config/symlinks b/.config/symlinks index 37a7267..af0f1af 100644 --- a/.config/symlinks +++ b/.config/symlinks @@ -32,6 +32,7 @@ # Directories .cache/maildirproc/ .maildirproc +.cache/xdg-runtime-dir/ .runtime .config/arduino/ .arduino .config/bazaar/ .bazaar -- cgit v1.2.3 From 971fb829748b8c1727825c03cfc8b8ef6e3fea35 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 12 Apr 2015 02:58:06 -0400 Subject: maildirproc: work on filters --- .config/maildirproc/att.rc | 152 ++++++++++++++++++++++++--------------------- 1 file changed, 82 insertions(+), 70 deletions(-) diff --git a/.config/maildirproc/att.rc b/.config/maildirproc/att.rc index 7ee5f42..c94ac8d 100644 --- a/.config/maildirproc/att.rc +++ b/.config/maildirproc/att.rc @@ -89,7 +89,7 @@ def handle_incoming_unknown(mail): or mail["From"].contains("@wolframalpha.com>") or mail["From"].contains("margieshu@sbcglobal.net") or mail["From"].contains("parabolagnulinux.org") - or mail["List-Id"].matches(".*\.(gnu|gnome|archlinux|parabolagnulinuxlibre)\.org") + or mail["List-Id"].matches(".*\.(gnu|gnome|archlinux|parabolagnulinuxlibre|fedorahosted)\.org") or mail["List-Id"].matches(".*\.parabola\.nu") or mail["Subject"].contains("[Dev]") or mail["Subject"].contains("[Maintenance]") @@ -115,36 +115,66 @@ def handle_incoming_unknown(mail): def my_filters(mail): # Sort mail from GNU mailing lists - for list in [ 'bug-gsrc', 'bug-make', 'help-make', 'social', 'help-grub', 'bug-gnuzilla', 'bug-librejs' ]: + # https://lists.gnu.org/mailman/options/bug-librejs/lukeshu@sbcglobal.net + #m = mail["List-Id"].matches("(.*<)?([^<]*)\.gnu\.org") + #if m: + # move_ham(mail,".software.gnu."+m.group(2)) + # return + + for list in [ 'bug-librejs', + 'bug-make', + 'help-grub', + 'help-make', + 'social', + 'social-discuss', + 'stow-devel', + 'bug-gnuzilla', + 'bug-gsrc' ]: if ( False or mail["List-Id"].matches(list+"\.gnu\.org") or mail["Subject"].contains('['+list+']') ): - move_ham(mail,".software."+list) + import pdb; pdb.set_trace() + move_ham(mail,".software.gnu."+list) return - - # Sort mail from other software mailing lists - if ( - False - or mail["List-Id"].matches("social-discuss\.gnu\.org") - or mail["Subject"].contains("social-discuss") - ): - move_ham(mail,".software.social") - return - - if mail["List-Id"].matches("networkmanager-list\.gnome\.org"): - move_ham(mail,".software.networkmanager") + # Sort mail from non-GNU mailing lists + # https://lists.nongnu.org/mailman/options/libreboot/lukeshu@sbcglobal.net + for list in [ 'libreboot', + 'libreboot-dev', + 'librefm-announce', + 'social-announce', + 'gnu-linux-libre' ]: + if ( + False + or mail["List-Id"].matches(list+"\.nongnu\.org") + or mail["Subject"].contains('['+list+']') + ): + import pdb; pdb.set_trace() + move_ham(mail,".software.nongnu."+list) + return + # Sort mail from Gnome mailing lists + # https://mail.gnome.org/mailman/options/networkmanager-list/lukeshu@sbcglobal.net + for list in [ 'networkmanager-list' ]: + if mail["List-Id"].matches(list+"\.gnome\.org"): + move_ham(mail,".software.gnome."+list) + return + # Sort mail from Arch Linux mailing lists + for list in [ 'arch-projects', 'pacman-dev' ]: + if mail["List-Id"].matches(list+"\.archlinux\.org"): + move_ham(mail,".software.archlinux."+list) + return + # Sort mail from other mailing lists + if (mail["List-Id"].matches("systemd-devel.lists.freedesktop.org") or is_to_or_from(mail, "systemd-devel@lists.freedesktop.org")): + move_ham(mail,".software.systemd-devel") return - - if mail["List-Id"].matches("maintenance\.lists\.parabola(gnulinux\.org|\.nu)"): + # Sort mail from Parabola mailing lists + if mail["List-Id"].matches("maintenance\.lists\.parabola\.nu"): move_ham(mail,".software.parabola.maintenance") return - - if is_to_or_from(mail, "labs@parabola.nu"): + if mail["List-Id"].matches("labs\.parabola\.nu"): move_ham(mail,".software.parabola.labs") return - if ( False or mail["List-Id"].matches("parabolagnulinux\.org") @@ -159,21 +189,6 @@ def my_filters(mail): else: move_ham(mail,".software.parabola.dev") return - - if (mail["List-Id"].matches("pacman-dev.archlinux.org")): - move_ham(mail,".software.pacman-dev") - return - - if (mail["List-Id"].matches("systemd-devel.lists.freedesktop.org") or is_to_or_from(mail, "systemd-devel@lists.freedesktop.org")): - move_ham(mail,".software.systemd-devel") - return - - for subject_re in [ - "\[Stow-[^\]]*\].*", - ]: - if mail["Subject"].matches(subject_re): - move_ham(mail,".software") - return # Sort mail from some social websites if mail["From"].matches("facebook(|mail)\.com"): @@ -256,12 +271,27 @@ def my_filters(mail): return # Sort mail from FRC people + # Generic + for address in [ "@ni.com", "@usfirst.org" ]: + if is_to_or_from(mail,address): + move_ham(mail,".FRC") + return + # FRC 829 + for address in [ + "wcxctrack829@aim.com", # Pat + "william.walk@gmail.com", + ]: + if is_to_or_from(mail,address): + move_ham(mail,".FRC.829") + return + if mail["Subject"].matches("\b829\b"): + move_hame(mail,".FRC.829") + return + # FRC 1024 for address in [ - "@ni.com", - "@usfirst.org", "BBonahoom@stanleyworks.com", - "allison.m.babcock@gmail.com", "bryanbonahoom@gmail.com", + "allison.m.babcock@gmail.com", "cdewalt3@yahoo.com", "dave.nelson@ecolab.com", "dickaustin190@yahoo.com", @@ -273,24 +303,23 @@ def my_filters(mail): "silioso@gmail.com", "skiplittell@comcast.net", "tswilson4801@att.net", - "wcxctrack829@aim.com", # Pat - "william.walk@gmail.com", ]: if is_to_or_from(mail,address): - move_ham(mail,".School.Robotics") + move_ham(mail,".FRC.1024") return - for subject_re in [ - "robotics", - "\b1024\b", - "\b4272\b", - "kil-?a-?bytes", - ]: + for subject_re in [ "\b1024\b", "kil-?a-?bytes" ]: if mail["Subject"].matches(subject_re): - move_ham(mail,".School.Robotics") + move_ham(mail,".FRC.1024") return + # FRC 4272 + if mail["Subject"].matches("\b4272\b"): + move_hame(mail,".FRC.4272") + return + # Catch BS things because of CS classes before the general + # software filters if mail["Subject"].contains("[Quizroom]"): - move_ham(mail,".School.CS408") + mail.delete() return # Sort mail from software people @@ -298,6 +327,8 @@ def my_filters(mail): "@archlinux.org", "@canonical.org", "@cnuk.org", + "@core3.amsl.com", + "@defectivebydesign.org", "@eff.org", "@foocorp.net", "@fsf.org", @@ -310,39 +341,20 @@ def my_filters(mail): "@nongnu.org", "@sourceforge.com", "@thyrsus.com", - "trustees@core3.amsl.com", ]: if is_to_or_from(mail,address): move_ham(mail,".software") return - # Sort mail from the school newspaper if ( False or is_to_or_from(mail, "@lnnorthstar.org") or is_to_or_from(mail, "lnnorthstar.org@tigertech.net") ): - move_ham(mail,".School.Newspaper") - return - - # Sort mail from various employers/people who pay me - if is_to_or_from(mail, "@precisepath.com"): - move_ham(mail,".Work.PrecisePath") + move_ham(mail,".HighSchool.Newspaper") return - if is_to_or_from(mail,"susyphil@aol.com"): - move_ham(mail,".Work.PMCH") - - for address in [ - "d.farrar@comcast.net", - "dfarrar@avacoustics.net", - "@vmware.com", - ]: - if is_to_or_from(mail,address): - move_ham(mail,".Work.FAST") - return - # Sort misc newsletters if ( False @@ -370,7 +382,7 @@ def my_filters(mail): or mail["Subject"].contains("NHS") or mail["Subject"].contains("National Honor Society") ): - move_ham(mail,".School") + move_ham(mail,".HighSchool") return # from college stuff -- cgit v1.2.3 From 7b1858b944e6f9e6fa225bbf4c32d2bf8238233b Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 16:06:01 -0400 Subject: Makefile: exclude old FOLDERS in ~/.folders --- .config/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/Makefile b/.config/Makefile index 909486d..18672b0 100644 --- a/.config/Makefile +++ b/.config/Makefile @@ -15,7 +15,7 @@ clean: rm -f $(targets) ${HOME}/.folders: ${HOME}/Maildir $(MAKEFILE_LIST) - find $< -mindepth 2 -maxdepth 2 \( -type f -name "maildirfolder" -o -type d -name new -o -type d -name tmp -o -type d -name cur \) -printf '%P\0' | xargs -0 dirname -z -- | sort -zu | xargs -0 printf -- '.%s\n' >'$@' + find $< -mindepth 2 -maxdepth 2 \( -type f -name "maildirfolder" -o -type d -name new -o -type d -name tmp -o -type d -name cur \) -printf '%P\0' | xargs -0 dirname -z -- | sort -zu | xargs -0 printf -- '.%s\n' | grep -vP '^\.FOLDERS.Ham.20(?!15)' > '$@' ${GIT_DIR}/info/exclude: ${HOME}/.git.info.exclude.in $(shell echo .??*/) ( cat $<; find $^ -type f -name 'CACHEDIR.TAG' -printf '%h\n'|sed 's@^\./@/@' ) > $@ -- cgit v1.2.3 From a0df355c33eec18158e4e87800992f50e4eff3a8 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 16:07:38 -0400 Subject: track ~/.gnupg separately --- .config/gpg/gpg.conf | 242 --------------------------------------------------- .config/symlinks | 3 - 2 files changed, 245 deletions(-) delete mode 100644 .config/gpg/gpg.conf diff --git a/.config/gpg/gpg.conf b/.config/gpg/gpg.conf deleted file mode 100644 index f43a58e..0000000 --- a/.config/gpg/gpg.conf +++ /dev/null @@ -1,242 +0,0 @@ -# Options for GnuPG -# Copyright 1998, 1999, 2000, 2001, 2002, 2003, -# 2010 Free Software Foundation, Inc. -# -# This file is free software; as a special exception the author gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. -# -# This file is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the -# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -# -# Unless you specify which option file to use (with the command line -# option "--options filename"), GnuPG uses the file ~/.gnupg/gpg.conf -# by default. -# -# An options file can contain any long options which are available in -# GnuPG. If the first non white space character of a line is a '#', -# this line is ignored. Empty lines are also ignored. -# -# See the man page for a list of options. - -# Uncomment the following option to get rid of the copyright notice - -no-greeting - -# If you have more than 1 secret key in your keyring, you may want to -# uncomment the following option and set your preferred keyid. - -default-key D4FFBFC9 - -# If you do not pass a recipient to gpg, it will ask for one. Using -# this option you can encrypt to a default key. Key validation will -# not be done in this case. The second form uses the default key as -# default recipient. - -#default-recipient some-user-id -#default-recipient-self - -# Use --encrypt-to to add the specified key as a recipient to all -# messages. This is useful, for example, when sending mail through a -# mail client that does not automatically encrypt mail to your key. -# In the example, this option allows you to read your local copy of -# encrypted mail that you've sent to others. - -#encrypt-to some-key-id - -# By default GnuPG creates version 4 signatures for data files as -# specified by OpenPGP. Some earlier (PGP 6, PGP 7) versions of PGP -# require the older version 3 signatures. Setting this option forces -# GnuPG to create version 3 signatures. - -#force-v3-sigs - -# Because some mailers change lines starting with "From " to ">From " -# it is good to handle such lines in a special way when creating -# cleartext signatures; all other PGP versions do it this way too. - -#no-escape-from-lines - -# If you do not use the Latin-1 (ISO-8859-1) charset, you should tell -# GnuPG which is the native character set. Please check the man page -# for supported character sets. This character set is only used for -# metadata and not for the actual message which does not undergo any -# translation. Note that future version of GnuPG will change to UTF-8 -# as default character set. In most cases this option is not required -# as GnuPG is able to figure out the correct charset at runtime. - -charset utf-8 - -# Group names may be defined like this: -# group mynames = paige 0x12345678 joe patti -# -# Any time "mynames" is a recipient (-r or --recipient), it will be -# expanded to the names "paige", "joe", and "patti", and the key ID -# "0x12345678". Note there is only one level of expansion - you -# cannot make an group that points to another group. Note also that -# if there are spaces in the recipient name, this will appear as two -# recipients. In these cases it is better to use the key ID. - -#group mynames = paige 0x12345678 joe patti - -# Lock the file only once for the lifetime of a process. If you do -# not define this, the lock will be obtained and released every time -# it is needed, which is usually preferable. - -#lock-once - -# GnuPG can send and receive keys to and from a keyserver. These -# servers can be HKP, email, or LDAP (if GnuPG is built with LDAP -# support). -# -# Example HKP keyserver: -# hkp://keys.gnupg.net -# hkp://subkeys.pgp.net -# -# Example email keyserver: -# mailto:pgp-public-keys@keys.pgp.net -# -# Example LDAP keyservers: -# ldap://keyserver.pgp.com -# -# Regular URL syntax applies, and you can set an alternate port -# through the usual method: -# hkp://keyserver.example.net:22742 -# -# Most users just set the name and type of their preferred keyserver. -# Note that most servers (with the notable exception of -# ldap://keyserver.pgp.com) synchronize changes with each other. Note -# also that a single server name may actually point to multiple -# servers via DNS round-robin. hkp://keys.gnupg.net is an example of -# such a "server", which spreads the load over a number of physical -# servers. To see the IP address of the server actually used, you may use -# the "--keyserver-options debug". - -#keyserver hkp://keys.gnupg.net -#keyserver mailto:pgp-public-keys@keys.nl.pgp.net -#keyserver ldap://keyserver.pgp.com - -#keyserver hkps://keys.indymedia.org -#keyserver-options ca-cert-file=/etc/ssl/certs/cacert.org.pem - -keyserver hkps://zimmermann.mayfirst.org -keyserver-options ca-cert-file=/home/luke/.gnupg/mfpl.crt - -# Common options for keyserver functions: -# -# include-disabled : when searching, include keys marked as "disabled" -# on the keyserver (not all keyservers support this). -# -# no-include-revoked : when searching, do not include keys marked as -# "revoked" on the keyserver. -# -# verbose : show more information as the keys are fetched. -# Can be used more than once to increase the amount -# of information shown. -# -# use-temp-files : use temporary files instead of a pipe to talk to the -# keyserver. Some platforms (Win32 for one) always -# have this on. -# -# keep-temp-files : do not delete temporary files after using them -# (really only useful for debugging) -# -# http-proxy="proxy" : set the proxy to use for HTTP and HKP keyservers. -# This overrides the "http_proxy" environment variable, -# if any. -# -# auto-key-retrieve : automatically fetch keys as needed from the keyserver -# when verifying signatures or when importing keys that -# have been revoked by a revocation key that is not -# present on the keyring. -# -# no-include-attributes : do not include attribute IDs (aka "photo IDs") -# when sending keys to the keyserver. - -#keyserver-options auto-key-retrieve - -# Display photo user IDs in key listings - -# list-options show-photos - -# Display photo user IDs when a signature from a key with a photo is -# verified - -# verify-options show-photos - -# Use this program to display photo user IDs -# -# %i is expanded to a temporary file that contains the photo. -# %I is the same as %i, but the file isn't deleted afterwards by GnuPG. -# %k is expanded to the key ID of the key. -# %K is expanded to the long OpenPGP key ID of the key. -# %t is expanded to the extension of the image (e.g. "jpg"). -# %T is expanded to the MIME type of the image (e.g. "image/jpeg"). -# %f is expanded to the fingerprint of the key. -# %% is %, of course. -# -# If %i or %I are not present, then the photo is supplied to the -# viewer on standard input. If your platform supports it, standard -# input is the best way to do this as it avoids the time and effort in -# generating and then cleaning up a secure temp file. -# -# If no photo-viewer is provided, GnuPG will look for xloadimage, eog, -# or display (ImageMagick). On Mac OS X and Windows, the default is -# to use your regular JPEG image viewer. -# -# Some other viewers: -# photo-viewer "qiv %i" -# photo-viewer "ee %i" -# -# This one saves a copy of the photo ID in your home directory: -# photo-viewer "cat > ~/photoid-for-key-%k.%t" -# -# Use your MIME handler to view photos: -# photo-viewer "metamail -q -d -b -c %T -s 'KeyID 0x%k' -f GnuPG" - -# Passphrase agent -# -# We support the old experimental passphrase agent protocol as well as -# the new Assuan based one (currently available in the "newpg" package -# at ftp.gnupg.org/gcrypt/alpha/aegypten/). To make use of the agent, -# you have to run an agent as daemon and use the option -# -use-agent -# -# which tries to use the agent but will fallback to the regular mode -# if there is a problem connecting to the agent. The normal way to -# locate the agent is by looking at the environment variable -# GPG_AGENT_INFO which should have been set during gpg-agent startup. -# In certain situations the use of this variable is not possible, thus -# the option -# -# --gpg-agent-info=::1 -# -# may be used to override it. - -# Automatic key location -# -# GnuPG can automatically locate and retrieve keys as needed using the -# auto-key-locate option. This happens when encrypting to an email -# address (in the "user@example.com" form), and there are no -# user@example.com keys on the local keyring. This option takes the -# following arguments, in the order they are to be tried: -# -# cert = locate a key using DNS CERT, as specified in RFC-4398. -# GnuPG can handle both the PGP (key) and IPGP (URL + fingerprint) -# CERT methods. -# -# pka = locate a key using DNS PKA. -# -# ldap = locate a key using the PGP Universal method of checking -# "ldap://keys.(thedomain)". For example, encrypting to -# user@example.com will check ldap://keys.example.com. -# -# keyserver = locate a key using whatever keyserver is defined using -# the keyserver option. -# -# You may also list arbitrary keyservers here by URL. -# -# Try CERT, then PKA, then LDAP, then hkp://subkeys.net: -#auto-key-locate cert pka ldap hkp://subkeys.pgp.net diff --git a/.config/symlinks b/.config/symlinks index 37a7267..7e791f8 100644 --- a/.config/symlinks +++ b/.config/symlinks @@ -15,9 +15,6 @@ .config/bash/login.sh .bash_login .config/bash/logout.sh .bash_logout -# Files plucked out of multi-purpose directories -.config/gpg/gpg.conf .gnupg/gpg.conf - # Individual config files .config/abs.conf .abs.conf .config/conkerorrc .conkerorrc -- cgit v1.2.3 From 7ee9aaeaa18608bbeb01c4fdb8e69d9772eebeb6 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 16:10:41 -0400 Subject: .maildirproc must exist, even though it is not used --- .config/symlinks | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.config/symlinks b/.config/symlinks index 7e791f8..24bd5fe 100644 --- a/.config/symlinks +++ b/.config/symlinks @@ -28,8 +28,6 @@ .cache/offlineimap .offlineimap # Directories -.cache/maildirproc/ .maildirproc - .config/arduino/ .arduino .config/bazaar/ .bazaar .config/cpan/ .cpan @@ -43,6 +41,9 @@ .config/wmii-hg/ .wmii-hg .config/wmii/ .wmii # +# .maildirproc is not used, but must exist +/tmp/ .maildirproc + # KDE .config/ .kde/share/apps # .config/ .kde/share/config # -- cgit v1.2.3 From f181c08119e7bf00ce6520331afb737321f350ad Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Mon, 13 Apr 2015 16:11:24 -0400 Subject: maildirproc: update filters --- .config/maildirproc/att.rc | 101 ++++++++++++++---------------------------- .config/maildirproc/purdue.rc | 16 ++++++- 2 files changed, 48 insertions(+), 69 deletions(-) diff --git a/.config/maildirproc/att.rc b/.config/maildirproc/att.rc index c94ac8d..98ef8ae 100644 --- a/.config/maildirproc/att.rc +++ b/.config/maildirproc/att.rc @@ -4,10 +4,26 @@ import os import os.path import subprocess import datetime +import re processor.maildir_base = "~/Maildir" processor.auto_reload_rcfile = True +def mailman_domain(mail, domain): + """ + Return a string that is the list-name for a mailman domain + """ + m = mail["List-Id"].matches("(.*<)?([^<]*)\."+re.escape(domain)) + if m: + if mail["Subject"].contains("["+m.group(2)+"]"): + return m.group(2) + for hdr in [ 'To', 'Cc', 'From' ]: + m = mail[hdr].matches("(\w*)@"+re.escape(domain)) + if m: + if mail["Subject"].contains("["+m.group(1)+"]"): + return m.group(2) + return None + def is_to_or_from(mail,address): """ Return true if [mail] is to or from an address that contains [address]. @@ -114,81 +130,30 @@ def handle_incoming_unknown(mail): return def my_filters(mail): - # Sort mail from GNU mailing lists + # Sort mail from various mailing lists # https://lists.gnu.org/mailman/options/bug-librejs/lukeshu@sbcglobal.net - #m = mail["List-Id"].matches("(.*<)?([^<]*)\.gnu\.org") - #if m: - # move_ham(mail,".software.gnu."+m.group(2)) - # return - - for list in [ 'bug-librejs', - 'bug-make', - 'help-grub', - 'help-make', - 'social', - 'social-discuss', - 'stow-devel', - 'bug-gnuzilla', - 'bug-gsrc' ]: - if ( - False - or mail["List-Id"].matches(list+"\.gnu\.org") - or mail["Subject"].contains('['+list+']') - ): - import pdb; pdb.set_trace() - move_ham(mail,".software.gnu."+list) - return - # Sort mail from non-GNU mailing lists # https://lists.nongnu.org/mailman/options/libreboot/lukeshu@sbcglobal.net - for list in [ 'libreboot', - 'libreboot-dev', - 'librefm-announce', - 'social-announce', - 'gnu-linux-libre' ]: - if ( - False - or mail["List-Id"].matches(list+"\.nongnu\.org") - or mail["Subject"].contains('['+list+']') - ): - import pdb; pdb.set_trace() - move_ham(mail,".software.nongnu."+list) - return - # Sort mail from Gnome mailing lists # https://mail.gnome.org/mailman/options/networkmanager-list/lukeshu@sbcglobal.net - for list in [ 'networkmanager-list' ]: - if mail["List-Id"].matches(list+"\.gnome\.org"): - move_ham(mail,".software.gnome."+list) + for pair in [ [ 'gnu.org', 'gnu' ], + [ 'nongnu.org', 'nongnu' ], + [ 'gnome.org', 'gnome' ], + [ 'archlinux.org', 'archlinux' ], + [ 'lists.freedesktop.org', 'freedesktop' ], + [ 'lists.fedorahosted.org', 'fedorahosted' ], + [ 'lists.parabola.nu', 'parabola' ], + [ 'parabola.nu', 'parabola' ] ]: + list = mailman_domain(mail, pair[0]) + if list: + move_ham(mail,".software."+pair[1]+"."+list) return - # Sort mail from Arch Linux mailing lists - for list in [ 'arch-projects', 'pacman-dev' ]: - if mail["List-Id"].matches(list+"\.archlinux\.org"): - move_ham(mail,".software.archlinux."+list) - return - # Sort mail from other mailing lists - if (mail["List-Id"].matches("systemd-devel.lists.freedesktop.org") or is_to_or_from(mail, "systemd-devel@lists.freedesktop.org")): - move_ham(mail,".software.systemd-devel") - return - # Sort mail from Parabola mailing lists - if mail["List-Id"].matches("maintenance\.lists\.parabola\.nu"): - move_ham(mail,".software.parabola.maintenance") - return - if mail["List-Id"].matches("labs\.parabola\.nu"): - move_ham(mail,".software.parabola.labs") - return if ( False - or mail["List-Id"].matches("parabolagnulinux\.org") - or mail["List-Id"].matches("parabola\.nu") - or is_to_or_from(mail, "parabolagnulinux.org") - or is_to_or_from(mail, "kiwwwi.com.ar") - or is_to_or_from(mail, "parabola.nu") + or is_to_or_from(mail, "parabolagnulinux.org") + or is_to_or_from(mail, "parabola.nu") + or is_to_or_from(mail, "kiwwwi.com.ar") ): - if mail["Subject"].contains("[Django]"): - move_ham(mail,".software.parabola.maintenance.django") - return - else: - move_ham(mail,".software.parabola.dev") - return + move_ham(mail,".software.parabola") + return # Sort mail from some social websites if mail["From"].matches("facebook(|mail)\.com"): diff --git a/.config/maildirproc/purdue.rc b/.config/maildirproc/purdue.rc index d1505f9..f086eee 100644 --- a/.config/maildirproc/purdue.rc +++ b/.config/maildirproc/purdue.rc @@ -103,7 +103,12 @@ def my_filters(mail): mail.move("INBOX.work.2013.Comcast") return - if is_to_or_from(mail,"@Cartus.com"): + if ( + False + or is_to_or_from(mail,"@qualcomm.com") + or is_to_or_from(mail,"@Cartus.com") + or is_to_or_from(mail,"@quicinc.com") + ): mail.move("INBOX.work.2015.qualcomm") return @@ -268,6 +273,9 @@ def my_filters(mail): return # CS448 (Databases) if piazza_topic(mail, "CS 44800"): + mail.move("INBOX.classes.2015-1.CS448.Piazza") + return + if mail["Subject"].matches("CS *448"): mail.move("INBOX.classes.2015-1.CS448") return # ME297 (FRC) @@ -278,6 +286,12 @@ def my_filters(mail): mail.move("INBOX.classes.2015-1.ME297") return # SOC324 (Criminology) + if mail["Subject"].contains("spring-2015-soc-32400"): + mail.move("INBOX.classes.2015-1.SOC324") + return + + # Everything else ##################################################### + mail.move("INBOX.ham"); handle_mapping = { "INBOX": my_filters, -- cgit v1.2.3