diff options
Diffstat (limited to '.config')
56 files changed, 317 insertions, 482 deletions
diff --git a/.config/Makefile b/.config/Makefile index 909486d..9ee3115 100644 --- a/.config/Makefile +++ b/.config/Makefile @@ -1,7 +1,11 @@ #!/usr/bin/make -f +ifeq ($(XDG_CACHE_HOME),) +default: all; @: +%: + . ~/.profile && $(MAKE) '$@' +else -SHELL = /bin/bash - +SHELL = /bin/bash -o pipefail GIT_DIR = ${HOME}/.git targets = \ @@ -12,10 +16,11 @@ targets = \ all: $(targets) clean: - rm -f $(targets) + rm -f -- $(targets) +.PHONY: all clean ${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 -L $< -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' | 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@^\./@/@' ) > $@ @@ -36,6 +41,5 @@ ${HOME}/Maildir/%: | ${HOME}/Maildir touch '$@'/maildirfolder .DELETE_ON_ERROR: -.PHONY: FORCE PHONY -FORCE: ; -PHONY: ; +.SECONDARY: +endif diff --git a/.config/X11/clientrc b/.config/X11/clientrc index 1ad935f..8bced30 100755..100644 --- a/.config/X11/clientrc +++ b/.config/X11/clientrc @@ -1,4 +1,4 @@ -#!/bin/sh +#!/hint/sh # Load system xinit modules (disabled) # Remove "false &&" to enable @@ -19,9 +19,11 @@ fi exec mate-session -trap "rm -f $(printf '%q' "${XDG_RUNTIME_DIR}/x11-wm@${DISPLAY}")" EXIT -mkfifo "${XDG_RUNTIME_DIR}/x11-wm@${DISPLAY}" +[ -n "$XDG_RUNTIME_DIR" ] || exit 1 +_DISPLAY="$(systemd-escape -- "$DISPLAY")" +trap "rm -f $(printf '%q' "${XDG_RUNTIME_DIR}/x11-wm@${_DISPLAY}")" EXIT +mkfifo "${XDG_RUNTIME_DIR}/x11-wm@${_DISPLAY}" -cat "${XDG_RUNTIME_DIR}/x11-wm@${DISPLAY}" & -systemctl --user start "wm@${DISPLAY}.target" & +cat "${XDG_RUNTIME_DIR}/x11-wm@${_DISPLAY}" & +systemctl --user start "wm@${_DISPLAY}.target" & wait diff --git a/.config/X11/login b/.config/X11/login index 84931df..d02088a 100755 --- a/.config/X11/login +++ b/.config/X11/login @@ -1,9 +1,4 @@ #!/bin/sh +# ~/.xsession: Executed by the XDM at login, maybe after sourcing ~/.xprofile -# -# ~/.xsession -# -# Executed by xdm/gdm/kdm at login -# - -exec bash --login -i ~/.xinitrc +exec bash --login ~/.xinitrc diff --git a/.config/X11/modmap b/.config/X11/modmap index 1736e09..b332204 100644 --- a/.config/X11/modmap +++ b/.config/X11/modmap @@ -1,3 +1,5 @@ +! -*- Mode: Xmodmap -*- + ! My desktop doesn't have a super key, so I map Caps_Lock to Super_L ! Also, use Caps_Lock for the compose key remove lock = Caps_Lock diff --git a/.config/X11/serverrc b/.config/X11/serverrc index ce14133..e6f4c8f 120000..100644 --- a/.config/X11/serverrc +++ b/.config/X11/serverrc @@ -1 +1,6 @@ -/etc/X11/xinit/xserverrc
\ No newline at end of file +#!/hint/sh +if [ -z "$XDG_VTNR" ]; then + exec /usr/bin/X -nolisten tcp "$@" +else + exec /usr/bin/X -nolisten tcp "$@" vt$XDG_VTNR +fi diff --git a/.config/bash/login.sh b/.config/bash/login.sh index 1269a03..08f26b8 100644 --- a/.config/bash/login.sh +++ b/.config/bash/login.sh @@ -1,6 +1,5 @@ -# ~/.bash_login: executed by bash(1) when login shell starts. - -# I think this is sane default behavior +#!/hint/bash +# ~/.bash_login: Sourced by bash(1) when login shell starts # Load user settings . "$HOME/.profile" diff --git a/.config/bash/logout.sh b/.config/bash/logout.sh index 5dd8f7d..623f0a0 100644 --- a/.config/bash/logout.sh +++ b/.config/bash/logout.sh @@ -1,4 +1,5 @@ -# ~/.bash_logout: sourced by bash(1) when login shell exits. +#!/hint/bash +# ~/.bash_logout: Sourced by bash(1) when login shell exits # Clear the screen for privacy's sake. clear diff --git a/.config/bash/aliases.sh b/.config/bash/rc.d/aliases.sh index 28b9923..cd2cfd8 100644 --- a/.config/bash/aliases.sh +++ b/.config/bash/rc.d/aliases.sh @@ -1,6 +1,4 @@ -#!/bin/bash -# The above line probably should never be *used* in this file, but it -# lets text editors know that this is BASH syntax. +#!/hint/bash ###################################################################### # Set up colors and settings for ls/dir/vdir # @@ -48,7 +46,18 @@ alias userctl='systemctl --user' ###################################################################### alias lock="clear; away -C 'This terminal is locked'" alias plock="term-title Terminal Locked;lock" -mvln() { mv $1 $2; ln -s $2 $1; } +mvln() { + if [[ ! -L "$1" ]]; then + libremessages error 'Not a soft link: %s' "$1" + fi + target=$(readlink -f -- "$1") + ln -srT -- "$target" "$2" + if cmp -- "$1" "$2"; then + rm -f -- "$1" + else + libremessages error 'Failed moving link: %s -> %s' "$1" "$2" + fi +} jarls() { jar tf "$1" | sed -n 's/\.class$//p' | LC_ALL=C sort | xargs -r -d $'\n' javap -classpath "$1"; } tarls() { local file; for file in "$@"; do bsdtar tf "$file" | sed "s|^|$file:|"; done; } jarmain() { jarls "$1" 2>/dev/null | grep -E '(^[a-z]|public static void main\(java\.lang\.String\[\]\))' | grep -B1 '^ '; } diff --git a/.config/bash/rc.d/emacs.sh b/.config/bash/rc.d/emacs.sh index bb6454b..d8e1d80 100644 --- a/.config/bash/rc.d/emacs.sh +++ b/.config/bash/rc.d/emacs.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/hint/bash if [[ $TERM == eterm* ]]; then SELECTED_EDITOR='emacsclient' diff --git a/.config/bash/rc.sh b/.config/bash/rc.sh index c7acaf8..a85d308 100644 --- a/.config/bash/rc.sh +++ b/.config/bash/rc.sh @@ -1,7 +1,6 @@ -# ~/.bashrc: executed by bash(1) for interactive non-login shells. -# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) -# for examples - +#!/hint/bash +# ~/.bashrc: Sourced by bash(1) for interactive non-login shells +# # I include this file for all interactive invocations of bash(1), whether # they are login shells or not. @@ -74,11 +73,6 @@ unset make_prompt ################################################################################ -# Load my aliases -if [[ -f ${XDG_CONFIG_HOME}/bash/aliases.sh ]]; then - . ${XDG_CONFIG_HOME}/bash/aliases.sh -fi - # Include modular config files if [[ -d ${XDG_CONFIG_HOME}/bash/rc.d ]]; then for file in "${XDG_CONFIG_HOME}/bash/rc.d"/*.sh; do diff --git a/.config/cron/make-config b/.config/cron/make-config index 30985df..a4a3480 100644 --- a/.config/cron/make-config +++ b/.config/cron/make-config @@ -1,2 +1,2 @@ #m h dom mon dow command -*/5 * * * * $HOME/.local/bin/cronic bash -l -c 'make -C "$XDG_CONFIG_HOME"' +*/5 * * * * chronic make -C ~/.config diff --git a/.config/emacs/custom.el b/.config/emacs/custom.el index e4208b5..8291602 100644 --- a/.config/emacs/custom.el +++ b/.config/emacs/custom.el @@ -16,6 +16,28 @@ ((Nginx-indent-tabs-mode) (Nginx-indent-level . 4) (Nginx-indent-level . 8)))) + '(graphviz-dot-auto-indent-on-semi nil) + '(org-latex-default-packages-alist + (quote + (("" "fontspec" t) + ("" "fixltx2e" nil) + ("" "graphicx" t) + ("" "longtable" nil) + ("" "float" nil) + ("" "wrapfig" nil) + ("" "rotating" nil) + ("normalem" "ulem" t) + ("" "amsmath" t) + ("" "textcomp" t) + ("" "marvosym" t) + ("" "wasysym" t) + ("" "amssymb" t) + ("" "hyperref" nil) + "\\tolerance=1000"))) + '(org-latex-pdf-process + (quote + ("xelatex -interaction nonstopmode -output-directory %o %f" "xelatex -interaction nonstopmode -output-directory %o %f" "xelatex -interaction nonstopmode -output-directory %o %f"))) + '(org-src-fontify-natively t) '(scroll-bar-mode nil) '(scss-compile-at-save nil) '(send-mail-function (quote smtpmail-send-it)) diff --git a/.config/emacs/init.el b/.config/emacs/init.el index f8f19e0..e14d0f5 100644 --- a/.config/emacs/init.el +++ b/.config/emacs/init.el @@ -1,4 +1,5 @@ ;; This config requires Emacs 24.4(+?) +;; Hey, Emacs: -*- Indent-tabs-mode: nil -*- ;; Without (advice-add) it should work in older versions of Emacs 24. ;;;; Use XDG-ish locations ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq xdg-cache-home (file-name-as-directory (or (getenv "XDG_CACHE_HOME") "~/.cache"))) @@ -88,13 +89,16 @@ (:name dtrt-indent :type elpa ;; Detect indent style for existing files :after (dtrt-indent-mode 1)) (:name page-break-lines :type elpa ;; Display form-feeds pretty - :before (advice-add 'page-break-lines-mode-maybe :override #'page-break-lines-mode) + :before (advice-add 'page-break-lines-mode-maybe + :override #'page-break-lines-mode) :after (global-page-break-lines-mode 1)) (:name smart-tabs-mode :type elpa ;; Indent with tabs, align with spaces :after (progn (smart-tabs-mode 1) - (apply 'smart-tabs-insinuate (mapcar 'car smart-tabs-insinuate-alist)))) + (apply 'smart-tabs-insinuate + (mapcar 'car smart-tabs-insinuate-alist)))) ;; Major modes + (:name bison-mode :type elpa) (:name coffee-mode :type elpa :after (add-hook 'coffee-mode-hook '(lambda () @@ -102,6 +106,7 @@ (set (make-local-variable 'indent-tabs-mode) nil) ))) (:name graphviz-dot-mode :type elpa) + (:name haml-mode :type elpa) (:name markdown-mode :type elpa :after (add-to-list 'auto-mode-alist '("\\.ronn\\'" . markdown-mode))) (:name nginx-mode :type elpa @@ -110,19 +115,28 @@ )) ;; What packages el-get should install, both from above, and it's ;; internal list of sources. -(el-get 'sync '(el-get +(el-get 'sync (append + '(el-get) ;; Minor modes - dtrt-indent - smart-tabs-mode - page-break-lines + '(dtrt-indent + page-break-lines + smart-tabs-mode + ) ;; Major modes - ;;apel flim semi wanderlust - graphviz-dot-mode - markdown-mode - nginx-mode - ;;nxhtml ; nxhtml is invasive, only enable if actively using - php-mode-improved - )) + (if (file-exists-p "~/Maildir") ; wanderlust is huge, only use on emailing boxes + '(apel flim semi wanderlust) + '()) + '( + ;;nxhtml ; nxhtml is invasive, only enable if actively using + bison-mode + coffee-mode + graphviz-dot-mode + haml-mode + markdown-mode + nginx-mode + php-mode-improved + scss-mode + ))) ;; Misc. crap @@ -223,6 +237,16 @@ sh-script.el is broken." (smerge-mode 1)))) (add-hook 'find-file-hook 'try-smerge-mode t) +;; http://www.emacswiki.org/emacs/XModMapMode +(when (not (fboundp 'xmodmap-mode)) + (define-generic-mode 'xmodmap-mode + '(?!) + '("add" "clear" "keycode" "keysym" "pointer" "remove") + nil + '("[xX]modmap\\(rc\\)?\\'") + nil + "Simple mode for xmodmap files.")) + ;; All my weird mode-specific settings ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -273,3 +297,4 @@ sh-script.el is broken." (add-to-list 'auto-mode-alist '("PKGBUILD" . sh-mode)) (add-to-list 'auto-mode-alist '("SRCBUILD" . sh-mode)) +(add-to-list 'auto-mode-alist '("\\.jad\\'" . java-mode)) diff --git a/.config/git/ignore b/.config/git/ignore index e69de29..d0f607c 100644 --- a/.config/git/ignore +++ b/.config/git/ignore @@ -0,0 +1,3 @@ +#*# +.#* +*~ 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=<path>:<pid>: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/libretools/.gitignore b/.config/libretools/.gitignore deleted file mode 100644 index 1881962..0000000 --- a/.config/libretools/.gitignore +++ /dev/null @@ -1 +0,0 @@ -blacklist.txt diff --git a/.config/libretools/libretools.conf b/.config/libretools/libretools.conf new file mode 100644 index 0000000..a2f2c24 --- /dev/null +++ b/.config/libretools/libretools.conf @@ -0,0 +1,4 @@ +HOOKPOSTRELEASE=":" +if [[ -n "${ONLY_ARCH:-}" ]]; then + ARCHES=("$ONLY_ARCH") +fi diff --git a/.config/login.d/00_coredumps.sh b/.config/login.d/00_coredumps.sh index 8fcc61b..45d19b8 100644 --- a/.config/login.d/00_coredumps.sh +++ b/.config/login.d/00_coredumps.sh @@ -1 +1,2 @@ +#!/hint/sh ulimit -c unlimited # save core dumps diff --git a/.config/login.d/00_path.sh b/.config/login.d/00_path.sh index f4ca3a6..2d5f4a5 100644 --- a/.config/login.d/00_path.sh +++ b/.config/login.d/00_path.sh @@ -1,3 +1,4 @@ +#!/hint/sh if type config-path &>/dev/null; then config_path=config-path else diff --git a/.config/login.d/00_umask.sh b/.config/login.d/00_umask.sh index 8e71ad5..c6187dd 100644 --- a/.config/login.d/00_umask.sh +++ b/.config/login.d/00_umask.sh @@ -1 +1,2 @@ +#!/hint/sh umask 022 diff --git a/.config/login.d/01_xdg.sh b/.config/login.d/01_xdg.sh index 4464764..ed17ddb 100644 --- a/.config/login.d/01_xdg.sh +++ b/.config/login.d/01_xdg.sh @@ -1,4 +1,4 @@ -# This should be readable by /bin/sh +#!/hint/sh # Sets up XDG environmental variables, so programs using them don't have to # worry about checking if they are set. @@ -9,35 +9,12 @@ [ -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 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..864eadd --- /dev/null +++ b/.config/login.d/02_xdg_runtime_dir.sh @@ -0,0 +1,29 @@ +#!/hint/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" + if ! [ /dev/fd/7 -ef "$XDG_CACHE_HOME/xdg-runtime-dir/.lock" ]; then + exec 7>"$XDG_CACHE_HOME/xdg-runtime-dir/.lock" + if flock -xn 7; then + 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 + # Unfortunately this doesn't survive across exec(1). + trap _diy_xdg_runtime_logout EXIT + flock -sn 7 + fi + fi + } + _diy_xdg_runtime_logout() { + exec 7>&- + exec 7>"$XDG_CACHE_HOME/xdg-runtime-dir/.lock" + 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..62413a7 --- /dev/null +++ b/.config/login.d/03_tmpdir.sh @@ -0,0 +1,5 @@ +#!/hint/sh +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/10_gpg.sh b/.config/login.d/10_gpg.sh index cf3c88c..c1c5f82 100644 --- a/.config/login.d/10_gpg.sh +++ b/.config/login.d/10_gpg.sh @@ -1,3 +1,4 @@ +#!/hint/sh if [[ -z $GPGKEY ]] && [[ -f "${HOME}/.gnupg/gpg.conf" ]]; then export GPGKEY=`sed -nr 's/^\s*default-key\s+//p' "${GNUPG_HOME:-${HOME}/.gnupg}/gpg.conf"` fi diff --git a/.config/login.d/10_java.sh b/.config/login.d/10_java.sh index 3c49368..94452a9 100644 --- a/.config/login.d/10_java.sh +++ b/.config/login.d/10_java.sh @@ -1,3 +1,4 @@ +#!/hint/sh _JAVA_OPTIONS='' _JAVA_OPTIONS+=' -Dawt.useSystemAAFontSettings=on' _JAVA_OPTIONS+=' -Dswing.aatext=true' diff --git a/.config/login.d/10_less.sh b/.config/login.d/10_less.sh index c5934d6..314a8b9 100644 --- a/.config/login.d/10_less.sh +++ b/.config/login.d/10_less.sh @@ -1,2 +1,3 @@ +#!/hint/sh export LESSHISTFILE="$XDG_CACHE_HOME/less/histfile" mkdir -p -- "${LESSHISTFILE%/*}" diff --git a/.config/login.d/10_makeflags.sh b/.config/login.d/10_makeflags.sh new file mode 100644 index 0000000..671c6d3 --- /dev/null +++ b/.config/login.d/10_makeflags.sh @@ -0,0 +1,2 @@ +#!/hint/sh +export MAKEFLAGS="-j$(nproc)" diff --git a/.config/login.d/10_selected-editor.sh b/.config/login.d/10_selected-editor.sh index c1c18fb..1a33e76 100644 --- a/.config/login.d/10_selected-editor.sh +++ b/.config/login.d/10_selected-editor.sh @@ -1,8 +1,9 @@ +#!/hint/sh # PAM seems to be setting EDITOR... -if [[ $EDITOR = /usr/bin/vi ]]; then +if [ "$EDITOR" = /usr/bin/vi ]; then unset EDITOR fi -if [[ -f "$HOME/.selected_editor" ]]; then +if [ -f "$HOME/.selected_editor" ]; then . "$HOME/.selected_editor" export SELECTED_EDITOR export ALTERNATE_EDITOR diff --git a/.config/login.d/10_spell-check.sh b/.config/login.d/10_spell-check.sh index 9a24b7e..3f67b8f 100644 --- a/.config/login.d/10_spell-check.sh +++ b/.config/login.d/10_spell-check.sh @@ -1,3 +1,4 @@ -if [[ -z "$DICTIONARY" ]] && [[ -n "$LANG" ]]; then +#!/hint/sh +if [ -z "$DICTIONARY" ] && [ -n "$LANG" ]; then export DICTIONARY="${LANG%%.*}" fi diff --git a/.config/login.d/10_xauthority.sh b/.config/login.d/10_xauthority.sh index a27202c..787b6ed 100644 --- a/.config/login.d/10_xauthority.sh +++ b/.config/login.d/10_xauthority.sh @@ -1,4 +1,5 @@ +#!/hint/sh # This was needed once with SSH and Fedora boxes. -if [[ -z $XAUTHORITY ]]; then +if [ -z $XAUTHORITY ]; then export XAUTHORITY="$HOME/.Xauthority" fi diff --git a/.config/login.sh b/.config/login.sh index c09f15c..9499299 100644 --- a/.config/login.sh +++ b/.config/login.sh @@ -1,16 +1,15 @@ -#!/bin/bash -# ~/.profile: sourced by the command interpreter for login shells. -# I like that graphical login scripts be configured to load this, so -# it always runs, graphical or not. +#!/hint/sh +# ~/.profile: Sourced by the command interpreter for login shells # -# This file should be executable by /bin/sh, but I'm going to assume bash(1) -# -# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login -# exists. - -# the default umask is set in /etc/profile; for setting the umask -# for ssh logins, install and configure the libpam-umask package. +# Other ~/.*profile scripts may take precedence, or be used instead +# (for example: ~/.bash_{profile,login} takes precidence, and +# ~/.xprofile is used for graphical logins). I dislike duplication, +# so I have them all configured to source this. +if [ -z "$HOME" ]; then + eval 'HOME=~' + export HOME +fi for file in "${XDG_CONFIG_HOME:-$HOME/.config}/login.d/"*.sh; do . "$file" done diff --git a/.config/maildirproc/att.rc b/.config/maildirproc/att.rc index 6b31260..792b42c 100644 --- a/.config/maildirproc/att.rc +++ b/.config/maildirproc/att.rc @@ -4,10 +4,24 @@ import os import os.path import subprocess import datetime +import re processor.maildir_base = "~/Maildir" processor.auto_reload_rcfile = True -processor.logfile = os.getenv('XDG_CACHE_HOME', "~/.cache")+"/maildirproc/att.log" + +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: + 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(1) + return None def is_to_or_from(mail,address): """ @@ -77,17 +91,21 @@ def handle_incoming_unknown(mail): or is_to_or_from(mail, "parabola.nu") or is_to_or_from(mail, "parabolagnulinux.org") or mail["From"] == "MAILER-DAEMON@yahoo.com" + or mail["From"] == "3174451635@mms.att.net" or mail["From"].contains("@facebookmail.com>") or mail["From"].contains("@gandi.net") + or mail["From"].contains("@github.com>") or mail["From"].contains("@goodwillindy.org>") + or mail["From"].contains("@kickstarter.com>") or mail["From"].contains("@lpi.org>") or mail["From"].contains("@msdlt.k12.in.us>") or mail["From"].contains("@parabola.nu") or mail["From"].contains("@post.oreilly.com>") or mail["From"].contains("@scouting.org>") 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]") @@ -112,66 +130,30 @@ def handle_incoming_unknown(mail): return 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' ]: - if ( - False - or mail["List-Id"].matches(list+"\.gnu\.org") - or mail["Subject"].contains('['+list+']') - ): - move_ham(mail,".software."+list) + # Sort mail from various mailing lists + # https://lists.gnu.org/mailman/options/bug-librejs/lukeshu@sbcglobal.net + # https://lists.nongnu.org/mailman/options/libreboot/lukeshu@sbcglobal.net + # https://mail.gnome.org/mailman/options/networkmanager-list/lukeshu@sbcglobal.net + 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 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") - return - - if mail["List-Id"].matches("maintenance\.lists\.parabola(gnulinux\.org|\.nu)"): - move_ham(mail,".software.parabola.maintenance") - return - - if is_to_or_from(mail, "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 - - if (mail["List-Id"].matches("pacman-dev.archlinux.org")): - move_ham(mail,".software.pacman-dev") + move_ham(mail,".software.parabola") 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"): @@ -254,12 +236,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", @@ -271,28 +268,34 @@ 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]"): + mail.delete() + return # Sort mail from software people for address in [ "@archlinux.org", "@canonical.org", "@cnuk.org", + "@core3.amsl.com", + "@defectivebydesign.org", "@eff.org", + "@fedorahosted.org", "@foocorp.net", "@fsf.org", "@github.com", @@ -301,41 +304,24 @@ def my_filters(mail): "@gnu.org", "@ietf.org", "@kde.org", + "@lists.fedorahosted.org", + "@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 @@ -363,7 +349,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 diff --git a/.config/maildirproc/purdue.rc b/.config/maildirproc/purdue.rc index b1f64af..f086eee 100644 --- a/.config/maildirproc/purdue.rc +++ b/.config/maildirproc/purdue.rc @@ -5,7 +5,6 @@ import subprocess processor.maildir_base = "~/Maildir.purdue" processor.auto_reload_rcfile = True -processor.logfile = os.getenv('XDG_CACHE_HOME', "~/.cache")+"/maildirproc/purdue.log" def is_to_or_from(mail,address): """ @@ -106,6 +105,15 @@ def my_filters(mail): 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 + + if ( + False or mail["Subject"].contains("[CS Opportunity Update]") or mail["Subject"].contains("[CS Majors]") ): @@ -265,13 +273,25 @@ def my_filters(mail): return # CS448 (Databases) if piazza_topic(mail, "CS 44800"): - mail.move("INBOX.classes.2015.1.CS448") + 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) - if mail["Subject"].contains("[ME297]"): + if (False + or mail["Subject"].contains("[ME297]") + or is_to_or_from(mail, "heller5@purdue.edu") + ): 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, diff --git a/.config/offlineimaprc b/.config/offlineimaprc index 36b382c..4b3d4e3 100644 --- a/.config/offlineimaprc +++ b/.config/offlineimaprc @@ -17,7 +17,7 @@ folderfilter = lambda folder: folder in [ 'Inbox', 'Bulk Mail' ] [Repository Remote-SBCGlobal] type = IMAP ssl = yes -cert_fingerprint = 9751f610c2631b3d4e63afcd096e5eb94c1f6fc8 +cert_fingerprint = a920541d377a4249259bcc59846a1faf621b4287 remotehost = imap.mail.yahoo.com remoteuser = lukeshu@sbcglobal.net folderfilter = lambda folder: folder in [ 'Inbox', 'Bulk Mail' ] diff --git a/.config/pacman/makepkg.conf b/.config/pacman/makepkg.conf index 8389fb5..dc3c5ba 100644 --- a/.config/pacman/makepkg.conf +++ b/.config/pacman/makepkg.conf @@ -1,4 +1,4 @@ -#!/phony/bash +#!/hint/bash PKGDEST="${LIBREHOME:-$HOME}/packages/pkgdest" SRCDEST="${LIBREHOME:-$HOME}/packages/srcdest" diff --git a/.config/ssh/config b/.config/ssh/config index 07240a6..dc32703 100644 --- a/.config/ssh/config +++ b/.config/ssh/config @@ -6,10 +6,9 @@ Host * # Purdue ################################################### -Host lore - HostName lore.cs.purdue.edu -Host data - HostName data.cs.purdue.edu +Host data lore borg?? xinu?? sac?? sslab?? moore?? + HostName %h.cs.purdue.edu + User shumakl Host *.cs.purdue.edu User shumakl @@ -25,16 +24,14 @@ Host lukeshu.com Port 1863 User lukeshu +Match host build64-par exec "host %n.lan." + HostName build64-par + Port 22 + ForwardX11 yes + ForwardX11Trusted yes Host build64-par User luke - HostName lukeshu.com Port 1864 ForwardX11 no ForwardX11Trusted no - - Match host %h.lan. - HostName build64-par - Port 22 - ForwardX11 yes - ForwardX11Trusted yes diff --git a/.config/symlinks b/.config/symlinks index 37a7267..c99afba 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 @@ -26,16 +23,14 @@ .config/irbrc .irbrc .config/linphonerc .linphonerc # .config/selected_editor .selected_editor +.config/X11/login .vnc/xstartup .config/offlineimaprc .offlineimaprc .cache/offlineimap .offlineimap # Directories -.cache/maildirproc/ .maildirproc - .config/arduino/ .arduino .config/bazaar/ .bazaar -.config/cpan/ .cpan .config/emacs/ .emacs.d .config/icons/ .icons .config/mozilla/ .mozilla # @@ -46,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 # diff --git a/.config/systemd/user/maildirproc@.service b/.config/systemd/user/maildirproc@.service index bdca746..9c4181c 100644 --- a/.config/systemd/user/maildirproc@.service +++ b/.config/systemd/user/maildirproc@.service @@ -3,7 +3,7 @@ Description=maildirproc mail filter [Service] Type=simple -ExecStart=/usr/bin/maildirproc -r ${HOME}/.config/maildirproc/%I.rc +ExecStart=/usr/bin/maildirproc --rcfile=${HOME}/.config/maildirproc/%I.rc --logfile=- Restart=on-failure [Install] diff --git a/.config/wmii-hg/config.sh b/.config/wmii-hg/config.sh index 7ef8305..785529e 100644 --- a/.config/wmii-hg/config.sh +++ b/.config/wmii-hg/config.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/hint/bash MODKEY=Mod4 # "super" UP=p @@ -52,6 +52,7 @@ Event() { done < <(lstags) ;; WmiircQuit) ## No args + trap - EXIT echo ' ==> Stopping wmiirc' exit;; WmiircMount) ## No args @@ -67,9 +68,7 @@ Event() { ## WMII-meta events Quit) ## No args trap - EXIT - if [ -S "$NOTIFY_SOCKET" ]; then - echo STOPPING=1 | socat STDIO UNIX-SENDTO:"$NOTIFY_SOCKET" - fi + systemd-notify STOPPING=1 || true Event WmiircUnmount Event WmiircQuit;; Warning) ## $@=string diff --git a/.config/wmii-hg/help-events b/.config/wmii-hg/help-events index 08abd18..9aeb3e9 100755 --- a/.config/wmii-hg/help-events +++ b/.config/wmii-hg/help-events @@ -1,3 +1,3 @@ -#!/bin/bash +#!/usr/bin/env bash . include.sh scansection Event | xmessage -file - diff --git a/.config/wmii-hg/help-keys b/.config/wmii-hg/help-keys index 6f4bd1c..f7a975e 100755 --- a/.config/wmii-hg/help-keys +++ b/.config/wmii-hg/help-keys @@ -1,3 +1,3 @@ -#!/bin/bash +#!/usr/bin/env bash . include.sh scansection Key | xmessage -file - diff --git a/.config/wmii-hg/include.sh b/.config/wmii-hg/include.sh index f9e3078..4e86276 100644 --- a/.config/wmii-hg/include.sh +++ b/.config/wmii-hg/include.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/hint/bash if [[ -z "$WMII_NAMESPACE" ]]; then export WMII_NAMESPACE="$(wmiir namespace)" diff --git a/.config/wmii-hg/quit b/.config/wmii-hg/quit index 341468e..b34a913 100755 --- a/.config/wmii-hg/quit +++ b/.config/wmii-hg/quit @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash if type systemctl &>/dev/null; then systemctl --user stop "wmii@$DISPLAY.service" else diff --git a/.config/wmii-hg/rbar b/.config/wmii-hg/rbar index 9aaa485..0709ed3 100755 --- a/.config/wmii-hg/rbar +++ b/.config/wmii-hg/rbar @@ -1,8 +1,4 @@ -#!/bin/bash -IFS=: -read -r name prefix DISPLAY <<<"$1" -export DISPLAY - +#!/usr/bin/env bash id=$1 name=${id#[0-9][0-9]_} diff --git a/.config/wmii-hg/rbar.sh b/.config/wmii-hg/rbar.sh index 8bff558..0c9efa6 100644 --- a/.config/wmii-hg/rbar.sh +++ b/.config/wmii-hg/rbar.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/hint/bash setup_trap() { trap "rm -f -- \"\${XDG_RUNTIME_DIR}\"/n/wmii*/rbar/${1}" EXIT } diff --git a/.config/wmii-hg/rbar_acpi b/.config/wmii-hg/rbar_acpi index 5e77abb..2e9f3d4 100755 --- a/.config/wmii-hg/rbar_acpi +++ b/.config/wmii-hg/rbar_acpi @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash update() { id=$1 diff --git a/.config/wmii-hg/rbar_clock b/.config/wmii-hg/rbar_clock index a09f016..e84d5c3 100755 --- a/.config/wmii-hg/rbar_clock +++ b/.config/wmii-hg/rbar_clock @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash update() { id=$1 diff --git a/.config/wmii-hg/rbar_wifi b/.config/wmii-hg/rbar_wifi index 195df7c..dad4e61 100755 --- a/.config/wmii-hg/rbar_wifi +++ b/.config/wmii-hg/rbar_wifi @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash iwinfo() { local interface=$1 @@ -29,7 +29,7 @@ right-click() { IFS='' while read -r line; do list+=("$line") - done < <({ netctl-auto list; printf '> %s\n' 'New Network' 'Disable All' 'Enable All';} | sed 's,$,$,' | column -s '$' -t) + done < <({ netctl-auto list | sort -k1.2; printf '> %s\n' 'New Network' 'Disable All' 'Enable All';} | sed 's,$,$,' | column -s '$' -t) cur='' for item in "${list[@]}"; do @@ -38,6 +38,7 @@ right-click() { fi done + IFS=$' \t\n' item=$(wmii9menu -i "$cur" "${list[@]}") case "$item" in '') diff --git a/.config/wmii-hg/rules b/.config/wmii-hg/rules index 3576983..6334a7c 100644 --- a/.config/wmii-hg/rules +++ b/.config/wmii-hg/rules @@ -1,8 +1,5 @@ /wimenu/ floating=always /panel/ tags=/.*/ floating=always -/xfce4-notifyd/ tags=/.*/ floating=always - -/nm-applet/ floating=off /^FLTK:FLTK:/ floating=always diff --git a/.config/wmii-hg/theme-solarized b/.config/wmii-hg/theme-solarized index 5dc830d..8c40e4d 100644 --- a/.config/wmii-hg/theme-solarized +++ b/.config/wmii-hg/theme-solarized @@ -1,3 +1,4 @@ +#!/hint/bash SOL_BASE03='#002b36' SOL_BASE02='#073642' SOL_BASE01='#586e75' diff --git a/.config/wmii-hg/theme-solarized-dark b/.config/wmii-hg/theme-solarized-dark index fde361b..fc74b6c 100644 --- a/.config/wmii-hg/theme-solarized-dark +++ b/.config/wmii-hg/theme-solarized-dark @@ -1,4 +1,4 @@ -#!/bin/sh +#!/hint/bash # Solarized-dark . theme-solarized diff --git a/.config/wmii-hg/theme-tango b/.config/wmii-hg/theme-tango index f4c20a2..6ba744f 100644 --- a/.config/wmii-hg/theme-tango +++ b/.config/wmii-hg/theme-tango @@ -1,3 +1,4 @@ +#!/hint/bash TANGO_butter=("#fce94f" "#edd400" "#c4a000") TANGO_orange=("#fcaf3e" "#f57900" "#ce5c00") TANGO_choc=( "#e9b96e" "#c17d11" "#8f5902") diff --git a/.config/wmii-hg/theme-tango-dark b/.config/wmii-hg/theme-tango-dark index 04a9fa6..efea1e9 100644 --- a/.config/wmii-hg/theme-tango-dark +++ b/.config/wmii-hg/theme-tango-dark @@ -1,4 +1,4 @@ -#!/bin/bash +#!/hint/bash # Tango-tark . theme-tango diff --git a/.config/wmii-hg/util.sh b/.config/wmii-hg/util.sh index b28a3b6..55344b2 100644 --- a/.config/wmii-hg/util.sh +++ b/.config/wmii-hg/util.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/hint/bash ################################################################################ # Added shell features # diff --git a/.config/wmii-hg/wmiirc b/.config/wmii-hg/wmiirc index 6fd348f..379de79 100755 --- a/.config/wmii-hg/wmiirc +++ b/.config/wmii-hg/wmiirc @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash unset WMII_NAMESPACE unset WMII_DIR @@ -13,9 +13,7 @@ wmiir xwrite /event WmiircQuit # close any existing wmiirc's Event WmiircStart # Notify systemd that we're ready -if [ -S "$NOTIFY_SOCKET" ]; then - echo READY=1 | socat STDIO UNIX-SENDTO:"$NOTIFY_SOCKET" -fi +systemd-notify READY=1 || true trap "Event Quit" EXIT |