diff options
47 files changed, 668 insertions, 1340 deletions
@@ -25,7 +25,6 @@ /bin/dfv /bin/dfv.m4 /bin/dfv.sh -/bin/dmenu_pass /bin/dub /bin/edda /bin/edda.m4 @@ -178,14 +177,15 @@ /games/zs /git/config /git/config.m4 +/git/template/hooks/post-update /git/template/hooks/pre-commit /git/template/hooks/prepare-commit-msg -/git/template/hooks/post-update /gnupg/profile.d/gnupg.sh /gnupg/profile.d/gnupg.sh.m4 /include/mktd.m4 /less/less /mutt/filters/markdown-to-html +/mutt/muttrc.d/src +/rofi/bin/rofi_pass /tmux/bin/tmux -/urxvt/ext/select /x/xsession @@ -42,23 +42,20 @@ install-rbenv \ install-readline \ install-redshift \ + install-rofi \ install-scrot \ install-sh \ install-subversion \ install-sxhkd \ install-systemd \ - install-terminfo \ install-tidy \ install-tmux \ - install-urxvt \ install-vim \ install-vim-gui \ install-vint \ install-wget \ install-x \ - install-xfce \ install-xsession \ - install-yt-dlp \ install-zsh \ check \ check-bash \ @@ -69,7 +66,6 @@ check-login-shell \ check-man \ check-sh \ - check-urxvt \ check-x \ check-xsession \ check-zsh \ @@ -80,7 +76,6 @@ lint-git-template-hooks \ lint-ksh \ lint-sh \ - lint-urxvt \ lint-vim \ lint-x \ lint-xsession @@ -119,7 +114,6 @@ BINS = bin/ap \ bin/ddup \ bin/defang \ bin/dfv \ - bin/dmenu_pass \ bin/dub \ bin/edda \ bin/eds \ @@ -302,8 +296,8 @@ clean distclean: include/mktd.m4 \ less/less \ mutt/filters/markdown-to-html \ + mutt/muttrc.d/src \ tmux/bin/tmux \ - urxvt/ext/select \ x/xsession .awk: @@ -462,7 +456,8 @@ install-gnupg: gnupg/profile.d/gnupg.sh install-sh install-i3: install-x mkdir -p -- $(XDG_CONFIG_HOME)/i3 cp -p -- i3/config $(XDG_CONFIG_HOME)/i3 - cp -p -- i3/status $(XDG_CONFIG_HOME)/i3 + mkdir -p -- $(XDG_CONFIG_HOME)/i3status + cp -p -- i3/status $(XDG_CONFIG_HOME)/i3status/config install-init: if test -d /run/systemd/system ; then make install-systemd ; fi @@ -494,7 +489,7 @@ install-mpv: $(XDG_DATA_HOME)/mpv/screenshots cp -p -- mpv/mpv.conf $(XDG_CONFIG_HOME)/mpv -install-mutt: install-gnupg install-mail mutt/filters/markdown-to-html +install-mutt: install-gnupg install-mail mutt/filters/markdown-to-html mutt/muttrc.d/src mkdir -p -- \ $(XDG_CONFIG_HOME)/mutt \ $(XDG_CONFIG_HOME)/mutt/muttrc.d \ @@ -570,15 +565,20 @@ install-redshift: install-x cp -p -- redshift/redshift.conf $(XDG_CONFIG_HOME) cp -p -- redshift/xsession.d/redshift.sh $(HOME)/.xsession.d +install-rofi: rofi/bin/rofi_pass + mkdir -p -- $(HOME)/.local/bin + cp -p -- rofi/bin/rofi_pass $(HOME)/.local/bin + install-scrot: mkdir -p -- $(XDG_DATA_HOME)/scrot/screenshots install-sh: check-sh - mkdir -p -- $(HOME)/.profile.d $(HOME)/.shrc.d cp -p -- sh/profile $(HOME)/.profile + mkdir -p -- $(HOME)/.profile.d cp -p -- sh/profile.d/*.sh $(HOME)/.profile.d cp -p -- sh/shinit $(HOME)/.shinit cp -p -- sh/shrc $(HOME)/.shrc + mkdir -p -- $(HOME)/.shrc.d cp -p -- sh/shrc.d/*.sh $(HOME)/.shrc.d install-subversion: @@ -605,35 +605,18 @@ install-systemd: install-sh cp -p -- systemd/user/run-.service.d/50-notify-email.conf \ $(XDG_DATA_HOME)/systemd/user/run-.service.d -# Need to install these in appropriate order to meet dependencies; could trust -# the system glob, but a fixed list is just more straightforward -install-terminfo: - tic terminfo/putty.ti - tic terminfo/putty-256color.ti - tic terminfo/rxvt.ti - tic terminfo/rxvt-256color.ti - tic terminfo/rxvt-unicode.ti - tic terminfo/rxvt-unicode-256color.ti - tic terminfo/screen.ti - tic terminfo/screen-256color.ti - install-tidy: install-sh cp -p -- tidy/profile.d/tidy.sh $(HOME)/.profile.d mkdir -p -- $(XDG_CONFIG_HOME)/tidy cp -p -- tidy/tidyrc $(XDG_CONFIG_HOME)/tidy/tidyrc -install-tmux: tmux/bin/tmux tmux/tmux.conf install-systemd install-terminfo +install-tmux: tmux/bin/tmux tmux/tmux.conf install-systemd cp -p -- tmux/bin/tmux $(HOME)/.local/bin cp -p -- tmux/profile.d/tmux.sh $(HOME)/.profile.d cp -p -- tmux/tmux.conf $(HOME)/.tmux.conf cp -p -- tmux/systemd/user/tmux.service \ $(XDG_DATA_HOME)/systemd/user -install-urxvt: urxvt/ext/select install-x - mkdir -p -- $(HOME)/.urxvt/ext - cp -p -- urxvt/ext/select $(HOME)/.urxvt/ext - cp -p -- urxvt/xsession.d/urxvt.sh $(HOME)/.xsession.d - VIM = vim VIMDIR = $(HOME)/.vim VIMRC = $(VIMDIR)/vimrc @@ -673,21 +656,13 @@ install-wget: install-sh install-x: check-x install-logrotate install-sh cp -p -- x/Xresources $(HOME)/.Xresources - mkdir -p -- $(HOME)/.xsession.d cp -p -- x/shrc.d/x.sh $(HOME)/.shrc.d - mkdir -p -- $(XDG_CONFIG_HOME)/log/xsession - cp -p -- x/logrotate/config.d/xsession $(XDG_CONFIG_HOME)/logrotate/config.d - -install-xfce: install-x - mkdir -p $(XDG_CONFIG_HOME)/xfce4/terminal - cp -p -- xfce/terminalrc $(XDG_CONFIG_HOME)/xfce4/terminal/ + mkdir -p -- $(HOME)/.xsession.d install-xsession: x/xsession check-xsession install-x cp -p -- x/xsession $(HOME)/.xsession - -install-yt-dlp install-youtube-dl: - mkdir -p -- $(XDG_CONFIG_HOME)/yt-dlp - cp -p -- yt-dlp/config $(XDG_CONFIG_HOME)/yt-dlp + mkdir -p -- $(XDG_CONFIG_HOME)/log/xsession + cp -p -- x/logrotate/config.d/xsession $(XDG_CONFIG_HOME)/logrotate/config.d install-zsh: check-zsh install-sh mkdir -p -- $(HOME)/.zshrc.d @@ -726,9 +701,6 @@ check-login-shell: check-sh: sh check/sh.sh -check-urxvt: urxvt/ext/select - sh check/urxvt.sh - check-x: sh check/x.sh @@ -744,7 +716,6 @@ lint: lint-bash \ lint-git-template-hooks \ lint-ksh \ lint-sh \ - lint-urxvt \ lint-vim \ lint-x @@ -766,9 +737,6 @@ lint-ksh: check-ksh lint-sh: check-sh sh lint/sh.sh -lint-urxvt: check-urxvt - sh lint/urxvt.sh - lint-vim: sh lint/vim.sh @@ -103,8 +103,6 @@ Configuration is included for: - [Perl::Tidy](http://perltidy.sourceforge.net/)---reformats Perl source code - [Readline](https://tiswww.case.edu/php/chet/readline/rltop.html)---GNU library for user input used by Bash, MySQL, and others -- [rxvt-unicode](http://software.schmorp.de/pkg/rxvt-unicode.html)---Fork of - the rxvt terminal emulator with Unicode support - [Subversion](https://subversion.apache.org/)---Apache Subversion, a version control system - [tidy](http://www.html-tidy.org/)---HTML/XHTML linter and tidier @@ -112,8 +110,6 @@ Configuration is included for: - [Vim](https://www.vim.org/)---Vi IMproved, a text editor - [X11](https://www.x.org/wiki/)---Windowing system with network transparency for Unix -- [yt-dlp](https://github.com/yt-dlp/yt-dlp)---Download manager for video - hosting websites There is also some slightly customized support for multi-version environment management for three major scripting languages: @@ -124,8 +120,7 @@ management for three major scripting languages: The configurations for shells, Mutt, tmux, and Vim are the most likely to be of interest. The i3 configuration is limited mainly to changing window switching -key bindings to match Vim's. There are a fair few resources defined for -rxvt-unicode. +key bindings to match Vim's. ### Shell @@ -245,8 +240,6 @@ in `sh/shrc.d` to be loaded by any POSIX interactive shell. Those include: - `ll()` runs `ls -Al` if it can, or `ls -al` otherwise. - `path()` manages the contents of `PATH` conveniently. - `scp()` tries to detect forgotten hostnames in `scp(1)` command calls. -- `sudo()` forces `-H` for `sudo(8)` calls so that `$HOME` is never preserved; - I hate having `root`-owned files in my home directory. - `tor()` is just a terse shortcut for using Torsocks to anonymize TCP connections from the current shell. - `tree()` colorizes GNU `tree(1)` output if possible (without having @@ -323,16 +316,6 @@ appealing. You'll need Abook installed if you want to use the `query_command` I have defined, and msmtp for the `sendmail` command. -### rxvt-unicode - -I've butchered the URxvt Perl extensions `selection-to-clipboard` and -`selection` into a single `select` extension in `~/.urxvt/ext`, which is the -only extension I define in `~/.Xresources`. - -The included `.Xresources` file assumes that `urxvt` can use 256 colors and -Perl extensions. If you're missing functionality, try changing -`perl-ext-common` to `default`. - ### tmux These are just generally vi-friendly settings, and there isn't much out of the @@ -525,8 +508,6 @@ These scripts are installed by the `install-bin` target: - `dam(1df)` buffers all its input before emitting it as output. - `ddup(1df)` removes duplicate lines from unsorted input. - `defang(1df)` prevents dangerous URLs from being made into clickable links. -- `dmenu_pass(1df)` copies a pass(1) entry selected by `dmenu(1)` to the - X CLIPBOARD. - `dub(1df)` lists the biggest entries in a directory. - `edda(1df)` provides a means to run `ed(1)` over a set of files preserving any options, mostly useful for scripts. @@ -656,8 +637,6 @@ available to run them: - `lint-ksh` - `lint-sh` - `lint-x` -- Perl::Critic: - - `lint-urxvt` - [Vint](https://github.com/Kuniwak/vint): - `lint-vim` @@ -1,2 +1,2 @@ -tejr dotfiles v12.23.0 -Tue, 20 Sep 2022 11:01:07 +0000 +tejr dotfiles v12.41.0 +Wed, 02 Aug 2023 21:39:23 +0000 diff --git a/bash/bash_completion.d/mosh.bash b/bash/bash_completion.d/mosh.bash new file mode 100644 index 00000000..17d72ca1 --- /dev/null +++ b/bash/bash_completion.d/mosh.bash @@ -0,0 +1,5 @@ +# Completion for mosh(1) with ssh_config(5) hostnames +if ! declare -F _ssh_config_hosts >/dev/null ; then + source "$HOME"/.bash_completion.d/_ssh_config_hosts.bash +fi +complete -F _ssh_config_hosts -o bashdefault -o default mosh diff --git a/bin/dmenu_pass.sh b/bin/dmenu_pass.sh deleted file mode 100644 index 2969cd16..00000000 --- a/bin/dmenu_pass.sh +++ /dev/null @@ -1,18 +0,0 @@ -# Pick and type out a pass(1) password with dmenu(1) and xdotool(1) -self=dmenu_pass -cd -- "${PASSWORD_STORE_DIR:-"$HOME"/.password-store}" || exit -# shellcheck disable=SC2016 -name=$( - find . -name \*.gpg ! -type d | - sed -e 's_^\./__' -e 's_\.gpg$__' | - LC_ALL=C sort -f | - dmenu -) -[ -n "$name" ] || exit -password=$(pass show -- "$name" | head -n 1) || exit -[ -n "$password" ] || exit -printf %s "$password" | xdotool type --clearmodifiers --file - \ - || exit -notify-send --app-name="$self" -- \ - "Password typed" \ - "$name" diff --git a/check/urxvt.sh b/check/urxvt.sh deleted file mode 100644 index e64ba1e5..00000000 --- a/check/urxvt.sh +++ /dev/null @@ -1,3 +0,0 @@ -for perl in urxvt/ext/*.pl ; do - perl -c "${perl%.pl}" || exit -done diff --git a/finger/pgpkey b/finger/pgpkey index c10eab51..f9569c8f 100644 --- a/finger/pgpkey +++ b/finger/pgpkey @@ -1,4 +1,4 @@ -pub rsa4096 2013-03-12 [SC] [expires: 2023-06-30] +pub rsa4096 2013-03-12 [SC] [expires: 2024-06-16] FA09 C06E 1B67 0CD0 B2F5 DE60 C142 86EA 77BB 8872 uid [ultimate] Thomas Ryder (tyrmored, tejr) <tom@sanctum.geek.nz> uid [ultimate] Thomas Ryder <tejr@echo-n.nz> @@ -6,6 +6,6 @@ uid [ultimate] Thomas Ryder <secretary@plug.org.nz> uid [ultimate] Thomas Ryder (TEJR) <tejr@cpan.org> uid [ultimate] Thomas Ryder <tyrmored@inspire.net.nz> uid [ultimate] Thomas Ryder <tej.ryder@gmail.com> -sub rsa4096 2013-03-12 [E] [expires: 2023-06-30] -sub rsa4096 2013-03-12 [S] [expires: 2023-06-30] -sub rsa4096 2019-08-06 [A] [expires: 2023-06-30] +sub rsa4096 2013-03-12 [E] [expires: 2024-06-16] +sub rsa4096 2013-03-12 [S] [expires: 2024-06-16] +sub rsa4096 2019-08-06 [A] [expires: 2024-06-16] @@ -4,11 +4,8 @@ set $mod Mod4 # Use Mouse+$mod to drag floating windows to their wanted position floating_modifier $mod -# If the window is the only one on the workspace, forego the borders -hide_edge_borders smart - -# Use a Unicode-capable font that should be available -font pango:Liberation Mono 8 +# Use a nice Unicode-aware condensed font +font pango:Noto Sans 10 # Mod+Shift+r restarts i3wm bindsym $mod+Shift+r restart @@ -87,17 +84,10 @@ mode "resize" { # i3bar at bottom of screen bar { - position bottom - status_command i3status --config ~/.config/i3/status - workspace_buttons yes - + separator_symbol "—" + status_command i3status + tray_padding 0 colors { background #111111 - statusline #eeeeee - - focused_workspace #ffffff #285577 - active_workspace #ffffff #333333 - inactive_workspace #888888 #222222 - urgent_workspace #ffffff #900000 } } @@ -2,7 +2,6 @@ order += "load" order += "tztime local" -order += "battery 0" load { format = "%1min/%5min/%15min" @@ -10,8 +9,3 @@ load { tztime local { format = "%Y-%m-%d %H:%M:%S" } -battery 0 { - format = "%status %percentage %remaining %emptytime" - path = "/sys/class/power_supply/BAT%d/uevent" - low_threshold = 15 -} diff --git a/lint/urxvt.sh b/lint/urxvt.sh deleted file mode 100644 index 6e5fb503..00000000 --- a/lint/urxvt.sh +++ /dev/null @@ -1,5 +0,0 @@ -set -- -for pl in urxvt/ext/*.pl ; do - set -- "$@" "${pl%.pl}" -done -perlcritic --brutal -- "${pl%.pl}" diff --git a/man/man1/dmenu_pass.1df b/man/man1/dmenu_pass.1df deleted file mode 100644 index c83cd837..00000000 --- a/man/man1/dmenu_pass.1df +++ /dev/null @@ -1,17 +0,0 @@ -.TH DMENU_PASS 1df "May 2022" "Manual page for dmenu_pass" -.SH NAME -.B dmenu_pass -\- pick and type a password-store password -.SH SYNOPSIS -.B dmenu_pass -.SH DESCRIPTION -.B dmenu_pass -applies dmenu(1) to pick a password entry from a pass(1) store and types it out -with xdotool(1). -.P -A notification with the default priority is sent when the password is -successfully typed. -.SH SEE ALSO -dmenu(1), notify-send(1), pass(1), xdotool(1) -.SH AUTHOR -Tom Ryder <tom@sanctum.geek.nz> diff --git a/man/man1/xrq.1df b/man/man1/xrq.1df index 9dd7f0d1..184aa186 100644 --- a/man/man1/xrq.1df +++ b/man/man1/xrq.1df @@ -1,4 +1,4 @@ -.TH XRQ 1df "January 2017" "Manual page for xrq" +.TH XRQ 1df "February 2023" "Manual page for xrq" .SH NAME .B xrq \- query X resource values @@ -7,7 +7,7 @@ Xft.hintstyle .br .B xrq -URxvt.color0 URxvt.color9 +XTerm.vt100.color0 XTerm.vt100.color9 .SH DESCRIPTION .B xrq runs xrdb(1) with the -query option and filters for the values of the named diff --git a/man/man7/dotfiles.7df b/man/man7/dotfiles.7df index 16366c51..83616552 100644 --- a/man/man7/dotfiles.7df +++ b/man/man7/dotfiles.7df @@ -1,11 +1,25 @@ -.\" Automatically generated by Pandoc 2.9.2.1 +.\" Automatically generated by Pandoc 2.17.1.1 .\" +.\" Define V font for inline verbatim, using C font in formats +.\" that render this, and otherwise B font. +.ie "\f[CB]x\f[]"x" \{\ +. ftr V B +. ftr VI BI +. ftr VB B +. ftr VBI BI +.\} +.el \{\ +. ftr V CR +. ftr VI CI +. ftr VB CB +. ftr VBI CBI +.\} .TH "DOTFILES" "7" "October 2017" "Tom Ryder\[cq]s personal scripts and configuration" "" .hy .SH Dotfiles (Tom Ryder) .PP This is my personal repository of configuration files and scripts for -\f[C]$HOME\f[R], including most of the settings that migrate well +\f[V]$HOME\f[R], including most of the settings that migrate well between machines. .PP This repository began as a simple way to share Vim and tmux @@ -26,12 +40,12 @@ $ make install \f[R] .fi .PP -For the default \f[C]all\f[R] target, you\[cq]ll need a POSIX-fearing -userland, including \f[C]make(1)\f[R] and \f[C]m4(1)\f[R]. +For the default \f[V]all\f[R] target, you\[cq]ll need a POSIX-fearing +userland, including \f[V]make(1)\f[R] and \f[V]m4(1)\f[R]. .PP -The installation \f[C]Makefile\f[R] overwrites things standing in the +The installation \f[V]Makefile\f[R] overwrites things standing in the way of its installed files without backing them up, so read the output -of \f[C]make -n install\f[R] before running \f[C]make install\f[R] +of \f[V]make -n install\f[R] before running \f[V]make install\f[R] carefully, to make sure you aren\[cq]t going to lose anything unexpected. If you\[cq]re still not sure, install it in a temporary directory first, @@ -45,44 +59,44 @@ $ env -i HOME=\[dq]$tmpdir\[dq] TERM=\[dq]$TERM\[dq] \[dq]$SHELL\[dq] -l \f[R] .fi .PP -The default \f[C]install\f[R] target will install these targets and all +The default \f[V]install\f[R] target will install these targets and all their dependencies: .IP \[bu] 2 -\f[C]install-bin\f[R] +\f[V]install-bin\f[R] .IP \[bu] 2 -\f[C]install-curl\f[R] +\f[V]install-curl\f[R] .IP \[bu] 2 -\f[C]install-ex\f[R] +\f[V]install-ex\f[R] .IP \[bu] 2 -\f[C]install-git\f[R] +\f[V]install-git\f[R] .IP \[bu] 2 -\f[C]install-gnupg\f[R] +\f[V]install-gnupg\f[R] .IP \[bu] 2 -\f[C]install-less\f[R] +\f[V]install-less\f[R] .IP \[bu] 2 -\f[C]install-login-shell\f[R] +\f[V]install-login-shell\f[R] .IP \[bu] 2 -\f[C]install-man\f[R] +\f[V]install-man\f[R] .IP \[bu] 2 -\f[C]install-readline\f[R] +\f[V]install-readline\f[R] .IP \[bu] 2 -\f[C]install-vim\f[R] +\f[V]install-vim\f[R] .PP -The \f[C]install-login-shell\f[R] target looks at your \f[C]SHELL\f[R] +The \f[V]install-login-shell\f[R] target looks at your \f[V]SHELL\f[R] environment variable, and tries to figure out which shell\[cq]s -configuration files to install, falling back on \f[C]install-sh\f[R]. +configuration files to install, falling back on \f[V]install-sh\f[R]. .PP -The remaining files can be installed with the other \f[C]install-*\f[R] +The remaining files can be installed with the other \f[V]install-*\f[R] targets. -Try \f[C]awk -f bin/mftl.awk Makefile\f[R] in the project\[cq]s root +Try \f[V]awk -f bin/mftl.awk Makefile\f[R] in the project\[cq]s root directory to see a list. .SS Configuration .PP -To keep a set of \f[C]make\f[R] targets useful for a specific user or +To keep a set of \f[V]make\f[R] targets useful for a specific user or host, you can list them in a newline-separated file -\f[C]\[ti]/.config/dotfiles/config\f[R], and install using that with the -special \f[C]install-conf\f[R] target. -This can include macro settings for the \f[C]Makefile\f[R], too: +\f[V]\[ti]/.config/dotfiles/config\f[R], and install using that with the +special \f[V]install-conf\f[R] target. +This can include macro settings for the \f[V]Makefile\f[R], too: .IP .nf \f[C] @@ -98,14 +112,14 @@ $ make -C .local/src/dotfiles install-conf .PP Configuration is included for: .IP \[bu] 2 -Bourne-style POSIX shells, sharing a \f[C].profile\f[R], an -\f[C]ENV\f[R] file, and some helper functions: +Bourne-style POSIX shells, sharing a \f[V].profile\f[R], an +\f[V]ENV\f[R] file, and some helper functions: .RS 2 .IP \[bu] 2 GNU Bash (https://www.gnu.org/software/bash/) (v3.0 or newer) .IP \[bu] 2 -Korn shell (http://www.kornshell.com/) (\f[C]ksh93\f[R], -\f[C]pdksh\f[R], \f[C]mksh\f[R]) +Korn shell (http://www.kornshell.com/) (\f[V]ksh93\f[R], +\f[V]pdksh\f[R], \f[V]mksh\f[R]) .IP \[bu] 2 Z shell (https://www.zsh.org/) .RE @@ -117,7 +131,7 @@ with URL syntax .IP \[bu] 2 Dillo (https://www.dillo.org/)\[em]A lightweight web browser .IP \[bu] 2 -\f[C]finger(1)\f[R]\[em]User information lookup program +\f[V]finger(1)\f[R]\[em]User information lookup program .IP \[bu] 2 Git (https://git-scm.com/)\[em]Distributed version control system .IP \[bu] 2 @@ -135,7 +149,7 @@ mpv (https://mpv.io/)\[em]Media player .IP \[bu] 2 Mutt (http://www.mutt.org/)\[em]Terminal mail user agent .IP \[bu] 2 -\f[C]mysql(1)\f[R] (https://linux.die.net/man/1/mysql)\[em]Command-line +\f[V]mysql(1)\f[R] (https://linux.die.net/man/1/mysql)\[em]Command-line MySQL client .IP \[bu] 2 ncmpcpp (https://rybczak.net/ncmpcpp/)\[em]ncurses based MPD client @@ -143,7 +157,7 @@ inspired by ncmpc .IP \[bu] 2 Newsboat (https://newsboat.org/)\[em]Terminal RSS/Atom feed reader .IP \[bu] 2 -\f[C]psql(1)\f[R] (https://linux.die.net/man/1/psql)\[em]Command-line +\f[V]psql(1)\f[R] (https://linux.die.net/man/1/psql)\[em]Command-line PostgreSQL client .IP \[bu] 2 Parcellite (http://parcellite.sourceforge.net/)\[em]clipboard manager @@ -158,9 +172,6 @@ code Readline (https://tiswww.case.edu/php/chet/readline/rltop.html)\[em]GNU library for user input used by Bash, MySQL, and others .IP \[bu] 2 -rxvt-unicode (http://software.schmorp.de/pkg/rxvt-unicode.html)\[em]Fork -of the rxvt terminal emulator with Unicode support -.IP \[bu] 2 Subversion (https://subversion.apache.org/)\[em]Apache Subversion, a version control system .IP \[bu] 2 @@ -173,9 +184,6 @@ Vim (https://www.vim.org/)\[em]Vi IMproved, a text editor .IP \[bu] 2 X11 (https://www.x.org/wiki/)\[em]Windowing system with network transparency for Unix -.IP \[bu] 2 -yt-dlp (https://github.com/yt-dlp/yt-dlp)\[em]Download manager for video -hosting websites .PP There is also some slightly customized support for multi-version environment management for three major scripting languages: @@ -190,27 +198,26 @@ The configurations for shells, Mutt, tmux, and Vim are the most likely to be of interest. The i3 configuration is limited mainly to changing window switching key bindings to match Vim\[cq]s. -There are a fair few resources defined for rxvt-unicode. .SS Shell .PP On GNU/Linux, I use Bash; on *BSD, I use some variant of Korn Shell, -preferably \f[C]ksh93\f[R] if it\[cq]s available. +preferably \f[V]ksh93\f[R] if it\[cq]s available. .SS POSIX core .PP -My \f[C]\[ti]/.profile\f[R] and other files in \f[C]sh\f[R] are written +My \f[V]\[ti]/.profile\f[R] and other files in \f[V]sh\f[R] are written in POSIX shell script, so they \f[I]should\f[R] work in most -POSIX-conforming \f[C]sh(1)\f[R] implementations. +POSIX-conforming \f[V]sh(1)\f[R] implementations. Please email me if you find a case where they don\[cq]t! .PP Further shell snippets to run on login are sourced from -\f[C]\[ti]/.profile.d\f[R] by \f[C]\[ti]/.profile\f[R]. +\f[V]\[ti]/.profile.d\f[R] by \f[V]\[ti]/.profile\f[R]. Most of these boil down to exporting variables appropriate to the system and the software it has available. .PP Configuration that should be sourced for all conforming -\f[I]interactive\f[R] shells is kept in \f[C]\[ti]/.shrc\f[R], with -subscripts read from \f[C]\[ti]/.shrc.d\f[R]. -There\[cq]s a \f[C]\[ti]/.shinit\f[R] shim to act as \f[C]ENV\f[R]. +\f[I]interactive\f[R] shells is kept in \f[V]\[ti]/.shrc\f[R], with +subscripts read from \f[V]\[ti]/.shrc.d\f[R]. +There\[cq]s a \f[V]\[ti]/.shinit\f[R] shim to act as \f[V]ENV\f[R]. .SS GNU Bash .PP My Bash scripts are written to work with GNU Bash v3.0 or @@ -234,9 +241,9 @@ array+=(\[dq]$item\[dq]) .fi .PP I do use some features that are only available in versions after v3.0, -such as newer \f[C]shopt\f[R] options like \f[C]dirspell\f[R], or -variables like \f[C]PROMPT_DIRTRIM\f[R]. -These are set only after testing \f[C]BASH_VERSINFO\f[R] appropriately. +such as newer \f[V]shopt\f[R] options like \f[V]dirspell\f[R], or +variables like \f[V]PROMPT_DIRTRIM\f[R]. +These are set only after testing \f[V]BASH_VERSINFO\f[R] appropriately. .SS Prompt .PP A terminal session with my prompt looks something like this: @@ -258,7 +265,7 @@ remote:\[ti]/.local/src/dotfiles(master+!){1}$ .fi .PP The hostname is elided if not connected via SSH. -The working directory with tilde abbreviation for \f[C]$HOME\f[R] is +The working directory with tilde abbreviation for \f[V]$HOME\f[R] is always shown. The rest of the prompt expands based on context to include these elements, in this order: @@ -268,165 +275,165 @@ Whether in a Git repository if applicable, The current version control branch, tag, or commit/revision if applicable, and punctuation to show repository status including reference to upstreams at a glance. -Subversion support can also be enabled, in which case a \f[C]git:\f[R] -or \f[C]svn:\f[R] prefix is added appropriately for disambiguation. +Subversion support can also be enabled, in which case a \f[V]git:\f[R] +or \f[V]svn:\f[R] prefix is added appropriately for disambiguation. .IP \[bu] 2 The number of running background jobs, if non-zero. .IP \[bu] 2 The exit status of the last command, if non-zero. .PP -You can set \f[C]PROMPT_COLOR\f[R], \f[C]PROMPT_PREFIX\f[R], and -\f[C]PROMPT_SUFFIX\f[R] too, which all do about what you\[cq]d expect. +You can set \f[V]PROMPT_COLOR\f[R], \f[V]PROMPT_PREFIX\f[R], and +\f[V]PROMPT_SUFFIX\f[R] too, which all do about what you\[cq]d expect. .PP If you start up GNU Bash, Korn shell, or Z shell, and that doesn\[cq]t match your login shell, the prompt should display an appropriate prefix. .PP -This is all managed within the \f[C]prompt\f[R] function. -There\[cq]s some mildly hacky logic on \f[C]tput\f[R] codes included +This is all managed within the \f[V]prompt\f[R] function. +There\[cq]s some mildly hacky logic on \f[V]tput\f[R] codes included such that it should work correctly for most common terminals using both -\f[C]termcap(5)\f[R] and \f[C]terminfo(5)\f[R], including *BSD systems. +\f[V]termcap(5)\f[R] and \f[V]terminfo(5)\f[R], including *BSD systems. It\[cq]s also designed to degrade gracefully for eight-color and no-color terminals. .SS Functions .PP -If a function can be written in POSIX \f[C]sh\f[R] without too much -hackery, I put it in \f[C]sh/shrc.d\f[R] to be loaded by any POSIX +If a function can be written in POSIX \f[V]sh\f[R] without too much +hackery, I put it in \f[V]sh/shrc.d\f[R] to be loaded by any POSIX interactive shell. Those include: .IP \[bu] 2 Four functions for using a \[lq]marked\[rq] directory, which I find a -more manageable concept than the \f[C]pushd\f[R]/\f[C]popd\f[R] +more manageable concept than the \f[V]pushd\f[R]/\f[V]popd\f[R] directory stack: .RS 2 .IP \[bu] 2 -\f[C]md()\f[R] marks a given (or the current) directory. +\f[V]md()\f[R] marks a given (or the current) directory. .IP \[bu] 2 -\f[C]gd()\f[R] goes to the marked directory. +\f[V]gd()\f[R] goes to the marked directory. .IP \[bu] 2 -\f[C]pmd()\f[R] prints the marked directory. +\f[V]pmd()\f[R] prints the marked directory. .IP \[bu] 2 -\f[C]xd()\f[R] swaps the current and marked directories. +\f[V]xd()\f[R] swaps the current and marked directories. .RE .IP \[bu] 2 Ten other directory management and navigation functions: .RS 2 .IP \[bu] 2 -\f[C]bd()\f[R] changes into a named ancestor of the current directory. +\f[V]bd()\f[R] changes into a named ancestor of the current directory. .IP \[bu] 2 -\f[C]gt()\f[R] changes into a directory or into a file\[cq]s directory. +\f[V]gt()\f[R] changes into a directory or into a file\[cq]s directory. .IP \[bu] 2 -\f[C]lgt()\f[R] runs \f[C]gt()\f[R] on the first result from a -\f[C]loc(1df)\f[R] search. +\f[V]lgt()\f[R] runs \f[V]gt()\f[R] on the first result from a +\f[V]loc(1df)\f[R] search. .IP \[bu] 2 -\f[C]mkcd()\f[R] creates a directory and changes into it. +\f[V]mkcd()\f[R] creates a directory and changes into it. .IP \[bu] 2 -\f[C]pd()\f[R] changes to the argument\[cq]s parent directory. +\f[V]pd()\f[R] changes to the argument\[cq]s parent directory. .IP \[bu] 2 -\f[C]rd()\f[R] replaces the first instance of its first argument with -its second argument in \f[C]$PWD\f[R], emulating a feature of the Zsh -\f[C]cd\f[R] builtin that I like. +\f[V]rd()\f[R] replaces the first instance of its first argument with +its second argument in \f[V]$PWD\f[R], emulating a feature of the Zsh +\f[V]cd\f[R] builtin that I like. .IP \[bu] 2 -\f[C]scr()\f[R] creates a temporary directory and changes into it. +\f[V]scr()\f[R] creates a temporary directory and changes into it. .IP \[bu] 2 -\f[C]sd()\f[R] changes into a sibling of the current directory. +\f[V]sd()\f[R] changes into a sibling of the current directory. .IP \[bu] 2 -\f[C]ud()\f[R] changes into an indexed ancestor of a directory. +\f[V]ud()\f[R] changes into an indexed ancestor of a directory. .IP \[bu] 2 -\f[C]vr()\f[R] tries to change to the root directory of a source control +\f[V]vr()\f[R] tries to change to the root directory of a source control repository. .RE .IP \[bu] 2 Two editor wrapper functions: .RS 2 .IP \[bu] 2 -\f[C]e()\f[R] invokes \f[C]$EDITOR\f[R], or \f[C]ed(1)\f[R] if not set. +\f[V]e()\f[R] invokes \f[V]$EDITOR\f[R], or \f[V]ed(1)\f[R] if not set. .IP \[bu] 2 -\f[C]v()\f[R] invokes \f[C]$VISUAL\f[R], or \f[C]vi(1)\f[R] if not set. +\f[V]v()\f[R] invokes \f[V]$VISUAL\f[R], or \f[V]vi(1)\f[R] if not set. .RE .IP \[bu] 2 -\f[C]bc()\f[R] silences startup messages from GNU \f[C]bc(1)\f[R]. +\f[V]bc()\f[R] silences startup messages from GNU \f[V]bc(1)\f[R]. .IP \[bu] 2 -\f[C]ed()\f[R] tries to get verbose error messages, a prompt, and a -Readline environment for \f[C]ed(1)\f[R]. +\f[V]ed()\f[R] tries to get verbose error messages, a prompt, and a +Readline environment for \f[V]ed(1)\f[R]. .IP \[bu] 2 -\f[C]gdb()\f[R] silences startup messages from \f[C]gdb(1)\f[R]. +\f[V]gdb()\f[R] silences startup messages from \f[V]gdb(1)\f[R]. .IP \[bu] 2 -\f[C]grep()\f[R] tries to apply color and other options good for +\f[V]grep()\f[R] tries to apply color and other options good for interactive use if available. .IP \[bu] 2 -\f[C]hgrep()\f[R] allows searching \f[C]$HISTFILE\f[R]. +\f[V]hgrep()\f[R] allows searching \f[V]$HISTFILE\f[R]. .IP \[bu] 2 -\f[C]ls()\f[R] tries to apply color and other options good for +\f[V]ls()\f[R] tries to apply color and other options good for interactive use if available. .RS 2 .IP \[bu] 2 -\f[C]la()\f[R] runs \f[C]ls -A\f[R] if it can, or \f[C]ls -a\f[R] +\f[V]la()\f[R] runs \f[V]ls -A\f[R] if it can, or \f[V]ls -a\f[R] otherwise. .IP \[bu] 2 -\f[C]ll()\f[R] runs \f[C]ls -Al\f[R] if it can, or \f[C]ls -al\f[R] +\f[V]ll()\f[R] runs \f[V]ls -Al\f[R] if it can, or \f[V]ls -al\f[R] otherwise. .RE .IP \[bu] 2 -\f[C]path()\f[R] manages the contents of \f[C]PATH\f[R] conveniently. +\f[V]path()\f[R] manages the contents of \f[V]PATH\f[R] conveniently. .IP \[bu] 2 -\f[C]scp()\f[R] tries to detect forgotten hostnames in \f[C]scp(1)\f[R] +\f[V]scp()\f[R] tries to detect forgotten hostnames in \f[V]scp(1)\f[R] command calls. .IP \[bu] 2 -\f[C]sudo()\f[R] forces \f[C]-H\f[R] for \f[C]sudo(8)\f[R] calls so that -\f[C]$HOME\f[R] is never preserved; I hate having \f[C]root\f[R]-owned +\f[V]sudo()\f[R] forces \f[V]-H\f[R] for \f[V]sudo(8)\f[R] calls so that +\f[V]$HOME\f[R] is never preserved; I hate having \f[V]root\f[R]-owned files in my home directory. .IP \[bu] 2 -\f[C]tor()\f[R] is just a terse shortcut for using Torsocks to anonymize +\f[V]tor()\f[R] is just a terse shortcut for using Torsocks to anonymize TCP connections from the current shell. .IP \[bu] 2 -\f[C]tree()\f[R] colorizes GNU \f[C]tree(1)\f[R] output if possible -(without having \f[C]LS_COLORS\f[R] set). +\f[V]tree()\f[R] colorizes GNU \f[V]tree(1)\f[R] output if possible +(without having \f[V]LS_COLORS\f[R] set). .IP \[bu] 2 -\f[C]x()\f[R] is a one-key shortcut for \f[C]exec startx\f[R]. +\f[V]x()\f[R] is a one-key shortcut for \f[V]exec startx\f[R]. .PP There are a few other little tricks defined for other shells providing non-POSIX features, as compatibility allows: .IP \[bu] 2 -\f[C]keep()\f[R] stores ad-hoc shell functions and variables (Bash, Korn +\f[V]keep()\f[R] stores ad-hoc shell functions and variables (Bash, Korn Shell 93, Z shell). .IP \[bu] 2 -\f[C]prompt()\f[R] sets up my interactive prompt (Bash, Korn Shell, Z +\f[V]prompt()\f[R] sets up my interactive prompt (Bash, Korn Shell, Z shell). .IP \[bu] 2 -\f[C]pushd()\f[R] adds a default destination of \f[C]$HOME\f[R] to the -\f[C]pushd\f[R] builtin (Bash). +\f[V]pushd()\f[R] adds a default destination of \f[V]$HOME\f[R] to the +\f[V]pushd\f[R] builtin (Bash). .IP \[bu] 2 -\f[C]vared()\f[R] allows interactively editing a variable with Readline, +\f[V]vared()\f[R] allows interactively editing a variable with Readline, emulating a Z shell function I like by the same name (Bash). .IP \[bu] 2 -\f[C]ver()\f[R] prints the current shell\[cq]s version information +\f[V]ver()\f[R] prints the current shell\[cq]s version information (Bash, Korn Shell, Z shell). .SS Completion .PP -I find the \f[C]bash-completion\f[R] package a bit too heavy for my +I find the \f[V]bash-completion\f[R] package a bit too heavy for my tastes, and turn it off using a stub file installed in -\f[C]\[ti]/.config/bash_completion\f[R]. +\f[V]\[ti]/.config/bash_completion\f[R]. The majority of the time I just want to complete paths anyway, and this makes for a quicker startup without a lot of junk functions in my Bash namespace. .PP I do make some exceptions with completions defined in files in -\f[C]\[ti]/.bash_completion.d\f[R] for things I really do get tired of +\f[V]\[ti]/.bash_completion.d\f[R] for things I really do get tired of typing repeatedly: .IP \[bu] 2 Bash builtins: commands, help topics, shell options, variables, etc. .IP \[bu] 2 -\f[C]find(1)\f[R]\[cq]s more portable options +\f[V]find(1)\f[R]\[cq]s more portable options .IP \[bu] 2 -\f[C]gpg(1)\f[R] long options +\f[V]gpg(1)\f[R] long options .IP \[bu] 2 -\f[C]make(1)\f[R] targets read from a \f[C]Makefile\f[R] +\f[V]make(1)\f[R] targets read from a \f[V]Makefile\f[R] .IP \[bu] 2 -\f[C]man(1)\f[R] page titles +\f[V]man(1)\f[R] page titles .IP \[bu] 2 -\f[C]pass(1)\f[R] entries +\f[V]pass(1)\f[R] entries .IP \[bu] 2 -\f[C]ssh(1)\f[R] hostnames from \f[C]\[ti]/.ssh/config\f[R] +\f[V]ssh(1)\f[R] hostnames from \f[V]\[ti]/.ssh/config\f[R] .PP For commands that pretty much always want to operate on text, such as text file or stream editors, I exclude special file types and extensions @@ -441,18 +448,18 @@ Otherwise, they\[cq]re all loaded on startup. .SS Korn shell .PP These are experimental; they are mostly used to tinker with MirBSD -\f[C]mksh\f[R], AT&T \f[C]ksh93\f[R], and OpenBSD \f[C]pdksh\f[R]. +\f[V]mksh\f[R], AT&T \f[V]ksh93\f[R], and OpenBSD \f[V]pdksh\f[R]. All shells in this family default to a yellow prompt if detected. .SS Z shell .PP These are experimental; I do not like Z shell much at the moment. -The files started as a joke (\f[C]exec bash\f[R]). -\f[C]zsh\f[R] shells default to having a prompt colored cyan. +The files started as a joke (\f[V]exec bash\f[R]). +\f[V]zsh\f[R] shells default to having a prompt colored cyan. .SS Mutt .PP My mail is kept in individual Maildir-format directories under -\f[C]\[ti]/mail\f[R], with the system mail spool in -e.g.\ \f[C]/var/mail/tejr\f[R] being where most unfiltered new mail is +\f[V]\[ti]/mail\f[R], with the system mail spool in +e.g.\ \f[V]/var/mail/tejr\f[R] being where most unfiltered new mail is spooled. I use Getmail (http://pyropus.ca/software/getmail/), maildrop (https://www.courier-mta.org/maildrop/), and @@ -469,19 +476,8 @@ setup (https://blog.sanctum.geek.nz/gnu-linux-crypto-email/) if it sounds appealing. .PP You\[cq]ll need Abook installed if you want to use the -\f[C]query_command\f[R] I have defined, and msmtp for the -\f[C]sendmail\f[R] command. -.SS rxvt-unicode -.PP -I\[cq]ve butchered the URxvt Perl extensions -\f[C]selection-to-clipboard\f[R] and \f[C]selection\f[R] into a single -\f[C]select\f[R] extension in \f[C]\[ti]/.urxvt/ext\f[R], which is the -only extension I define in \f[C]\[ti]/.Xresources\f[R]. -.PP -The included \f[C].Xresources\f[R] file assumes that \f[C]urxvt\f[R] can -use 256 colors and Perl extensions. -If you\[cq]re missing functionality, try changing -\f[C]perl-ext-common\f[R] to \f[C]default\f[R]. +\f[V]query_command\f[R] I have defined, and msmtp for the +\f[V]sendmail\f[R] command. .SS tmux .PP These are just generally vi-friendly settings, and there isn\[cq]t much @@ -490,10 +486,10 @@ Note that the configuration presently uses a hard-coded 256-color color scheme, and uses non-login shells, with an attempt to control the environment to stop shells thinking they have access to an X display. .PP -The shell scripts in \f[C]bin\f[R] include \f[C]tm(1df)\f[R], a shortcut -to make \f[C]attach\f[R] into the default command if no arguments are +The shell scripts in \f[V]bin\f[R] include \f[V]tm(1df)\f[R], a shortcut +to make \f[V]attach\f[R] into the default command if no arguments are given and sessions do already exist. -My \f[C]\[ti]/.inputrc\f[R] file binds Alt+M to run that, and Tmux in +My \f[V]\[ti]/.inputrc\f[R] file binds Alt+M to run that, and Tmux in turn binds the same key combination to detach. .SS Vim .PP @@ -506,51 +502,51 @@ The XDG Base Directory Specification (https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)\[cq]s environment variables are checked on startup, and appropriate directories are added to the start and end of -\f[C]\[aq]runtimepath\[aq]\f[R]. +\f[V]\[aq]runtimepath\[aq]\f[R]. I use these separate directories for machine-local configuration, -usually in \f[C]\[ti]/.config/vim\f[R], while all the files that this -suite installs land in \f[C]\[ti]/.vim\f[R]. +usually in \f[V]\[ti]/.config/vim\f[R], while all the files that this +suite installs land in \f[V]\[ti]/.vim\f[R]. Backups, swap files, persistent undo data, saved views, and the -\f[C]viminfo\f[R] file all live under \f[C]XDG_CACHE_HOME\f[R], normally -\f[C]\[ti]/.cache/vim\f[R]. +\f[V]viminfo\f[R] file all live under \f[V]XDG_CACHE_HOME\f[R], normally +\f[V]\[ti]/.cache/vim\f[R]. .SS Filetypes .PP -I define my own \f[C]filetype.vim\f[R] and \f[C]scripts.vim\f[R], so +I define my own \f[V]filetype.vim\f[R] and \f[V]scripts.vim\f[R], so that filetype detection works in a way I like, and loads quickly. They are unlikely to suit you as they are, but if you want to use it, you can extend them with your favorite filetypes in custom -\f[C]ftdetect\f[R] rules. +\f[V]ftdetect\f[R] rules. .SS Plugins .PP If the logic for doing something involves more than a few lines or any -structures like functions that can be decoupled from \f[C]$MYVIMRC\f[R], -I like to implement it as a plugin in \f[C]\[ti]/.vim/plugin\f[R] and/or -\f[C]\[ti]/.vim/autoload\f[R], with documentation for each in -\f[C]\[ti]/.vim/doc\f[R]. +structures like functions that can be decoupled from \f[V]$MYVIMRC\f[R], +I like to implement it as a plugin in \f[V]\[ti]/.vim/plugin\f[R] and/or +\f[V]\[ti]/.vim/autoload\f[R], with documentation for each in +\f[V]\[ti]/.vim/doc\f[R]. .PP They eventually get either discarded if I stop using them, or spun off into their own repositories and added to this repository as submodules -under \f[C]vim/bundle\f[R] if I don\[cq]t. +under \f[V]vim/bundle\f[R] if I don\[cq]t. Some of them I upload to vim.org (https://www.vim.org/account/profile.php?user_id=73687). .SS Filetype plugins .PP I apply some replacement or supplementary configuration specific to file -types I often edit in \f[C]\[ti]/.vim\f[R] and -\f[C]\[ti]/.vim/after\f[R], in the \f[C]ftplugin\f[R], \f[C]indent\f[R], -and \f[C]syntax\f[R] subdirectories. +types I often edit in \f[V]\[ti]/.vim\f[R] and +\f[V]\[ti]/.vim/after\f[R], in the \f[V]ftplugin\f[R], \f[V]indent\f[R], +and \f[V]syntax\f[R] subdirectories. Some of these filetype plugins or extensions may also eventually be removed to be separately distributed, and installed via submodules instead. .SS Compilers .PP -I define a few of my own \f[C]:compiler\f[R] scripts for -\f[C]\[ti]/.vim/compiler\f[R] to check and lint appropriate filetypes. +I define a few of my own \f[V]:compiler\f[R] scripts for +\f[V]\[ti]/.vim/compiler\f[R] to check and lint appropriate filetypes. I bind checking\[em]\[lq]does it run?\[rq]\[em]and linting\[em]\[lq]is it good?\[rq]\[em]with separate local leader maps; for example, for -\f[C]perl\f[R] filetypes, \f[C]<LocalLeader>c\f[R] switches -\f[C]makeprg\f[R] to \f[C]perl -c\f[R] for checking, and -\f[C]<LocalLeader>l\f[R] to \f[C]perlcritic\f[R] for linting. +\f[V]perl\f[R] filetypes, \f[V]<LocalLeader>c\f[R] switches +\f[V]makeprg\f[R] to \f[V]perl -c\f[R] for checking, and +\f[V]<LocalLeader>l\f[R] to \f[V]perlcritic\f[R] for linting. .SS No Neovim support .PP The configuration doesn\[cq]t explicitly support Neovim, although most @@ -559,111 +555,111 @@ settings for a few of the removed options. .SS Scripts .PP Where practical, I make short scripts into POSIX (but not Bourne) -\f[C]sh(1)\f[R], \f[C]awk(1)\f[R], or \f[C]sed(1)\f[R] scripts in -\f[C]\[ti]/.local/bin\f[R]. +\f[V]sh(1)\f[R], \f[V]awk(1)\f[R], or \f[V]sed(1)\f[R] scripts in +\f[V]\[ti]/.local/bin\f[R]. I try to use shell functions only when I actually need to, which tends to be when I need to change the state of the user\[cq]s current shell, or to limit a change in behavior only to interactive shells. .PP -These scripts are installed by the \f[C]install-bin\f[R] target: +These scripts are installed by the \f[V]install-bin\f[R] target: .IP \[bu] 2 Three SSH-related scripts: .RS 2 .IP \[bu] 2 -\f[C]sls(1df)\f[R] prints hostnames read from \f[C]ssh_config(5)\f[R] +\f[V]sls(1df)\f[R] prints hostnames read from \f[V]ssh_config(5)\f[R] files. -It uses \f[C]slsf(1df)\f[R] to read each one. +It uses \f[V]slsf(1df)\f[R] to read each one. .IP \[bu] 2 -\f[C]sra(1df)\f[R] runs a command on multiple hosts read from -\f[C]sls(1df)\f[R] and prints output. +\f[V]sra(1df)\f[R] runs a command on multiple hosts read from +\f[V]sls(1df)\f[R] and prints output. .IP \[bu] 2 -\f[C]sta(1df)\f[R] runs a command on multiple hosts read from -\f[C]sls(1df)\f[R] and prints the hostname if the command returns zero. +\f[V]sta(1df)\f[R] runs a command on multiple hosts read from +\f[V]sls(1df)\f[R] and prints the hostname if the command returns zero. .RE .IP \[bu] 2 Five URL-related shortcut scripts: .RS 2 .IP \[bu] 2 -\f[C]hurl(1df)\f[R] extracts values of \f[C]href\f[R] attributes of -\f[C]<a>\f[R] tags, sorts them uniquely, and writes them to -\f[C]stdout\f[R]; it requires pup (https://github.com/ericchiang/pup). +\f[V]hurl(1df)\f[R] extracts values of \f[V]href\f[R] attributes of +\f[V]<a>\f[R] tags, sorts them uniquely, and writes them to +\f[V]stdout\f[R]; it requires pup (https://github.com/ericchiang/pup). .IP \[bu] 2 -\f[C]murl(1df)\f[R] converts Markdown documents to HTML with -\f[C]pandoc(1)\f[R] and runs the output through \f[C]hurl(1df)\f[R]. +\f[V]murl(1df)\f[R] converts Markdown documents to HTML with +\f[V]pandoc(1)\f[R] and runs the output through \f[V]hurl(1df)\f[R]. .IP \[bu] 2 -\f[C]urlc(1df)\f[R] accepts a list of URLs on \f[C]stdin\f[R] and writes -error messages to \f[C]stderr\f[R] if any of the URLs are broken, +\f[V]urlc(1df)\f[R] accepts a list of URLs on \f[V]stdin\f[R] and writes +error messages to \f[V]stderr\f[R] if any of the URLs are broken, redirecting, or are insecure and have working secure versions; requires -\f[C]curl(1)\f[R]. +\f[V]curl(1)\f[R]. .IP \[bu] 2 -\f[C]urlh(1df)\f[R] prints the values for a given HTTP header from a +\f[V]urlh(1df)\f[R] prints the values for a given HTTP header from a HEAD response. .IP \[bu] 2 -\f[C]urlmt(1df)\f[R] prints the MIME type from the -\f[C]Content-Type\f[R] header as retrieved by \f[C]urlh(1df)\f[R]. +\f[V]urlmt(1df)\f[R] prints the MIME type from the +\f[V]Content-Type\f[R] header as retrieved by \f[V]urlh(1df)\f[R]. .RE .IP \[bu] 2 Three RFC-related shortcut scripts: .RS 2 .IP \[bu] 2 -\f[C]rfcf(1df)\f[R] fetches ASCII RFCs from the IETF website. +\f[V]rfcf(1df)\f[R] fetches ASCII RFCs from the IETF website. .IP \[bu] 2 -\f[C]rfct(1df)\f[R] formats ASCII RFCs. +\f[V]rfct(1df)\f[R] formats ASCII RFCs. .IP \[bu] 2 -\f[C]rfcr(1df)\f[R] does both, displaying in a pager if appropriate, -like a \f[C]man(1)\f[R] reader for RFCs. +\f[V]rfcr(1df)\f[R] does both, displaying in a pager if appropriate, +like a \f[V]man(1)\f[R] reader for RFCs. .RE .IP \[bu] 2 Five toy random-number scripts (not for sensitive/dead-serious use): .RS 2 .IP \[bu] 2 -\f[C]rndi(1df)\f[R] gets a random integer within two bounds. +\f[V]rndi(1df)\f[R] gets a random integer within two bounds. .IP \[bu] 2 -\f[C]rnds(1df)\f[R] attempts to get an optional random seed for -\f[C]rndi(1df)\f[R]. +\f[V]rnds(1df)\f[R] attempts to get an optional random seed for +\f[V]rndi(1df)\f[R]. .IP \[bu] 2 -\f[C]rnda(1df)\f[R] uses \f[C]rndi(1df)\f[R] to choose a random +\f[V]rnda(1df)\f[R] uses \f[V]rndi(1df)\f[R] to choose a random argument. .IP \[bu] 2 -\f[C]rndf(1df)\f[R] uses \f[C]rnda(1df)\f[R] to choose a random file +\f[V]rndf(1df)\f[R] uses \f[V]rnda(1df)\f[R] to choose a random file from a directory. .IP \[bu] 2 -\f[C]rndl(1df)\f[R] uses \f[C]rndi(1df)\f[R] to choose a random line +\f[V]rndl(1df)\f[R] uses \f[V]rndi(1df)\f[R] to choose a random line from files. .RE .IP \[bu] 2 Four file formatting scripts: .RS 2 .IP \[bu] 2 -\f[C]d2u(1df)\f[R] converts DOS line endings in files to UNIX ones. +\f[V]d2u(1df)\f[R] converts DOS line endings in files to UNIX ones. .IP \[bu] 2 -\f[C]u2d(1df)\f[R] converts UNIX line endings in files to DOS ones. +\f[V]u2d(1df)\f[R] converts UNIX line endings in files to DOS ones. .IP \[bu] 2 -\f[C]stbl(1df)\f[R] strips a trailing blank line from the files in its +\f[V]stbl(1df)\f[R] strips a trailing blank line from the files in its arguments. .IP \[bu] 2 -\f[C]stws(1df)\f[R] strips trailing spaces from the ends of lines of the +\f[V]stws(1df)\f[R] strips trailing spaces from the ends of lines of the files in its arguments. .RE .IP \[bu] 2 Seven stream formatting scripts: .RS 2 .IP \[bu] 2 -\f[C]sd2u(1df)\f[R] converts DOS line endings in streams to UNIX ones. +\f[V]sd2u(1df)\f[R] converts DOS line endings in streams to UNIX ones. .IP \[bu] 2 -\f[C]su2d(1df)\f[R] converts UNIX line endings in streams to DOS ones. +\f[V]su2d(1df)\f[R] converts UNIX line endings in streams to DOS ones. .IP \[bu] 2 -\f[C]slow(1df)\f[R] converts uppercase to lowercase. +\f[V]slow(1df)\f[R] converts uppercase to lowercase. .IP \[bu] 2 -\f[C]supp(1df)\f[R] converts lowercase to uppercase. +\f[V]supp(1df)\f[R] converts lowercase to uppercase. .IP \[bu] 2 -\f[C]tl(1df)\f[R] tags input lines with a prefix or suffix, basically a -\f[C]sed(1)\f[R] shortcut. +\f[V]tl(1df)\f[R] tags input lines with a prefix or suffix, basically a +\f[V]sed(1)\f[R] shortcut. .IP \[bu] 2 -\f[C]tlcs(1df)\f[R] executes a command and uses \f[C]tl(1df)\f[R] to tag +\f[V]tlcs(1df)\f[R] executes a command and uses \f[V]tl(1df)\f[R] to tag standard output and standard error lines, and color them if you want. .IP \[bu] 2 -\f[C]unf(1df)\f[R] joins lines with leading spaces to the previous line. +\f[V]unf(1df)\f[R] joins lines with leading spaces to the previous line. Intended for unfolding HTTP headers, but it should work for most RFC 822 formats. .RE @@ -671,388 +667,379 @@ formats. Six simple aggregate scripts for numbers: .RS 2 .IP \[bu] 2 -\f[C]max(1df)\f[R] prints the maximum. +\f[V]max(1df)\f[R] prints the maximum. .IP \[bu] 2 -\f[C]mean(1df)\f[R] prints the mean. +\f[V]mean(1df)\f[R] prints the mean. .IP \[bu] 2 -\f[C]med(1df)\f[R] prints the median. +\f[V]med(1df)\f[R] prints the median. .IP \[bu] 2 -\f[C]min(1df)\f[R] prints the minimum. +\f[V]min(1df)\f[R] prints the minimum. .IP \[bu] 2 -\f[C]mode(1df)\f[R] prints the first encountered mode. +\f[V]mode(1df)\f[R] prints the first encountered mode. .IP \[bu] 2 -\f[C]tot(1df)\f[R] totals the set. +\f[V]tot(1df)\f[R] totals the set. .RE .IP \[bu] 2 Three quick-and-dirty HTML tools: .RS 2 .IP \[bu] 2 -\f[C]htenc(1df)\f[R] encodes. +\f[V]htenc(1df)\f[R] encodes. .IP \[bu] 2 -\f[C]htdec(1df)\f[R] decodes. +\f[V]htdec(1df)\f[R] decodes. .IP \[bu] 2 -\f[C]htrec(1df)\f[R] wraps \f[C]a\f[R] tags around URLs. +\f[V]htrec(1df)\f[R] wraps \f[V]a\f[R] tags around URLs. .RE .IP \[bu] 2 Two internet message quoting tools: .RS 2 .IP \[bu] 2 -\f[C]quo(1df)\f[R] indents with quoting right angle-brackets. +\f[V]quo(1df)\f[R] indents with quoting right angle-brackets. .IP \[bu] 2 -\f[C]wro(1df)\f[R] adds a quote attribution header to its input. +\f[V]wro(1df)\f[R] adds a quote attribution header to its input. .RE .IP \[bu] 2 Six Git-related tools: .RS 2 .IP \[bu] 2 -\f[C]fgscr(1df)\f[R] finds Git repositories in a directory root and -scrubs them with \f[C]gscr(1df)\f[R]. +\f[V]fgscr(1df)\f[R] finds Git repositories in a directory root and +scrubs them with \f[V]gscr(1df)\f[R]. .IP \[bu] 2 -\f[C]grc(1df)\f[R] quietly tests whether the given directory appears to +\f[V]grc(1df)\f[R] quietly tests whether the given directory appears to be a Git repository with pending changes. .IP \[bu] 2 -\f[C]gscr(1df)\f[R] scrubs Git repositories. +\f[V]gscr(1df)\f[R] scrubs Git repositories. .IP \[bu] 2 -\f[C]isgr(1df)\f[R] quietly tests whether the given directory appears to +\f[V]isgr(1df)\f[R] quietly tests whether the given directory appears to be a Git repository. .IP \[bu] 2 -\f[C]jfc(1df)\f[R] adds and commits lazily to a Git repository. +\f[V]jfc(1df)\f[R] adds and commits lazily to a Git repository. .IP \[bu] 2 -\f[C]jfcd(1df)\f[R] watches a directory for changes and runs -\f[C]jfc(1df)\f[R] if it sees any. +\f[V]jfcd(1df)\f[R] watches a directory for changes and runs +\f[V]jfc(1df)\f[R] if it sees any. .RE .IP \[bu] 2 Two time duration functions: .RS 2 .IP \[bu] 2 -\f[C]hms(1df)\f[R] converts seconds to \f[C]hh:mm:ss\f[R] or -\f[C]mm:ss\f[R] timestamps. +\f[V]hms(1df)\f[R] converts seconds to \f[V]hh:mm:ss\f[R] or +\f[V]mm:ss\f[R] timestamps. .IP \[bu] 2 -\f[C]sec(1df)\f[R] converts \f[C]hh:mm:ss\f[R] or \f[C]mm:ss\f[R] +\f[V]sec(1df)\f[R] converts \f[V]hh:mm:ss\f[R] or \f[V]mm:ss\f[R] timestamps to seconds. .RE .IP \[bu] 2 Three pipe interaction tools: .RS 2 .IP \[bu] 2 -\f[C]pst(1df)\f[R] runs an interactive program on data before passing it +\f[V]pst(1df)\f[R] runs an interactive program on data before passing it along a pipeline. .IP \[bu] 2 -\f[C]ped(1df)\f[R] runs \f[C]pst(1df)\f[R] with \f[C]$EDITOR\f[R] or -\f[C]ed(1)\f[R]. +\f[V]ped(1df)\f[R] runs \f[V]pst(1df)\f[R] with \f[V]$EDITOR\f[R] or +\f[V]ed(1)\f[R]. .IP \[bu] 2 -\f[C]pvi(1df)\f[R] runs \f[C]pvi(1df)\f[R] with \f[C]$VISUAL\f[R] or -\f[C]vi(1)\f[R]. +\f[V]pvi(1df)\f[R] runs \f[V]pvi(1df)\f[R] with \f[V]$VISUAL\f[R] or +\f[V]vi(1)\f[R]. .RE .IP \[bu] 2 Two editor wrapper tools: .RS 2 .IP \[bu] 2 -\f[C]mked(1df)\f[R] creates paths to all its arguments before invoking -\f[C]$EDITOR\f[R]. +\f[V]mked(1df)\f[R] creates paths to all its arguments before invoking +\f[V]$EDITOR\f[R]. .IP \[bu] 2 -\f[C]mkvi(1df)\f[R] creates paths to all its arguments before invoking -\f[C]$VISUAL\f[R]. +\f[V]mkvi(1df)\f[R] creates paths to all its arguments before invoking +\f[V]$VISUAL\f[R]. .RE .IP \[bu] 2 -\f[C]ap(1df)\f[R] reads arguments for a given command from the standard +\f[V]ap(1df)\f[R] reads arguments for a given command from the standard input, prompting if appropriate. .IP \[bu] 2 -\f[C]apf(1df)\f[R] inserts arguments to a command with ones read from a +\f[V]apf(1df)\f[R] inserts arguments to a command with ones read from a file, intended as a framework for shell wrappers or functions. .IP \[bu] 2 -\f[C]ax(1df)\f[R] evaluates an AWK expression given on the command line; +\f[V]ax(1df)\f[R] evaluates an AWK expression given on the command line; this is intended as a quick way to test how AWK would interpret a given expression. .IP \[bu] 2 -\f[C]bcq(1df)\f[R] runs \f[C]bc(1)\f[R], quieting it down if need be. +\f[V]bcq(1df)\f[R] runs \f[V]bc(1)\f[R], quieting it down if need be. .IP \[bu] 2 -\f[C]bel(1df)\f[R] prints a terminal bell character. +\f[V]bel(1df)\f[R] prints a terminal bell character. .IP \[bu] 2 -\f[C]bl(1df)\f[R] generates a given number of blank lines. +\f[V]bl(1df)\f[R] generates a given number of blank lines. .IP \[bu] 2 -\f[C]bp(1df)\f[R] runs \f[C]br(1df)\f[R] after prompting for an URL. +\f[V]bp(1df)\f[R] runs \f[V]br(1df)\f[R] after prompting for an URL. .IP \[bu] 2 -\f[C]br(1df)\f[R] launches \f[C]$BROWSER\f[R]. +\f[V]br(1df)\f[R] launches \f[V]$BROWSER\f[R]. .IP \[bu] 2 -\f[C]ca(1df)\f[R] prints a count of its given arguments. +\f[V]ca(1df)\f[R] prints a count of its given arguments. .IP \[bu] 2 -\f[C]cf(1df)\f[R] prints a count of entries in a given directory. +\f[V]cf(1df)\f[R] prints a count of entries in a given directory. .IP \[bu] 2 -\f[C]cfr(1df)\f[R] does the same as \f[C]cf(1df)\f[R], but recurses into +\f[V]cfr(1df)\f[R] does the same as \f[V]cf(1df)\f[R], but recurses into subdirectories as well. .IP \[bu] 2 -\f[C]chc(1df)\f[R] caches the output of a command. +\f[V]chc(1df)\f[R] caches the output of a command. .IP \[bu] 2 -\f[C]chn(1df)\f[R] runs a filter over its input a given number of times. +\f[V]chn(1df)\f[R] runs a filter over its input a given number of times. .IP \[bu] 2 -\f[C]clog(1df)\f[R] is a tiny timestamped log system. +\f[V]clog(1df)\f[R] is a tiny timestamped log system. .IP \[bu] 2 -\f[C]clrd(1df)\f[R] sets up a per-line file read, clearing the screen +\f[V]clrd(1df)\f[R] sets up a per-line file read, clearing the screen first. .IP \[bu] 2 -\f[C]clwr(1df)\f[R] sets up a per-line file write, clearing the screen +\f[V]clwr(1df)\f[R] sets up a per-line file write, clearing the screen before each line. .IP \[bu] 2 -\f[C]csmw(1df)\f[R] prints an English list of monospace-quoted words +\f[V]csmw(1df)\f[R] prints an English list of monospace-quoted words read from the input. .IP \[bu] 2 -\f[C]dam(1df)\f[R] buffers all its input before emitting it as output. +\f[V]dam(1df)\f[R] buffers all its input before emitting it as output. .IP \[bu] 2 -\f[C]ddup(1df)\f[R] removes duplicate lines from unsorted input. +\f[V]ddup(1df)\f[R] removes duplicate lines from unsorted input. .IP \[bu] 2 -\f[C]defang(1df)\f[R] prevents dangerous URLs from being made into +\f[V]defang(1df)\f[R] prevents dangerous URLs from being made into clickable links. .IP \[bu] 2 -\f[C]dmenu_pass(1df)\f[R] copies a pass(1) entry selected by -\f[C]dmenu(1)\f[R] to the X CLIPBOARD. -.IP \[bu] 2 -\f[C]dub(1df)\f[R] lists the biggest entries in a directory. +\f[V]dub(1df)\f[R] lists the biggest entries in a directory. .IP \[bu] 2 -\f[C]edda(1df)\f[R] provides a means to run \f[C]ed(1)\f[R] over a set +\f[V]edda(1df)\f[R] provides a means to run \f[V]ed(1)\f[R] over a set of files preserving any options, mostly useful for scripts. .IP \[bu] 2 -\f[C]eds(1df)\f[R] edits executable script files in \f[C]EDSPATH\f[R], -defaulting to \f[C]\[ti]/.local/bin\f[R], for personal scripting +\f[V]eds(1df)\f[R] edits executable script files in \f[V]EDSPATH\f[R], +defaulting to \f[V]\[ti]/.local/bin\f[R], for personal scripting snippets. .IP \[bu] 2 -\f[C]exm(1df)\f[R] works around a screen-clearing quirk of Vim\[cq]s -\f[C]ex\f[R] mode. +\f[V]exm(1df)\f[R] works around a screen-clearing quirk of Vim\[cq]s +\f[V]ex\f[R] mode. .IP \[bu] 2 -\f[C]finc(1df)\f[R] counts the number of results returned from a set of -given \f[C]find(1)\f[R] conditions. +\f[V]finc(1df)\f[R] counts the number of results returned from a set of +given \f[V]find(1)\f[R] conditions. .IP \[bu] 2 -\f[C]fnl(1df)\f[R] runs a command and saves its output and error into +\f[V]fnl(1df)\f[R] runs a command and saves its output and error into temporary files, printing their paths and line counts. .IP \[bu] 2 -\f[C]fnp(1df)\f[R] prints the given files to standard output, each with +\f[V]fnp(1df)\f[R] prints the given files to standard output, each with a plain text heading with the filename in it. .IP \[bu] 2 -\f[C]gms(1df)\f[R] runs a set of \f[C]getmailrc\f[R] files; does much -the same thing as the script \f[C]getmails\f[R] in the \f[C]getmail\f[R] +\f[V]gms(1df)\f[R] runs a set of \f[V]getmailrc\f[R] files; does much +the same thing as the script \f[V]getmails\f[R] in the \f[V]getmail\f[R] suite, but runs the requests in parallel and does up to three silent -retries using \f[C]try(1df)\f[R]. +retries using \f[V]try(1df)\f[R]. .IP \[bu] 2 -\f[C]grec(1df)\f[R] is a more logically-named \f[C]grep -c\f[R]. +\f[V]grec(1df)\f[R] is a more logically-named \f[V]grep -c\f[R]. .IP \[bu] 2 -\f[C]gred(1df)\f[R] is a more logically-named \f[C]grep -v\f[R]. +\f[V]gred(1df)\f[R] is a more logically-named \f[V]grep -v\f[R]. .IP \[bu] 2 -\f[C]gwp(1df)\f[R] searches for alphanumeric words in a similar way to -\f[C]grep(1)\f[R]. +\f[V]gwp(1df)\f[R] searches for alphanumeric words in a similar way to +\f[V]grep(1)\f[R]. .IP \[bu] 2 -\f[C]han(1df)\f[R] provides a \f[C]keywordprg\f[R] for Vim\[cq]s Bash -script file type that will look for \f[C]help\f[R] topics. +\f[V]han(1df)\f[R] provides a \f[V]keywordprg\f[R] for Vim\[cq]s Bash +script file type that will look for \f[V]help\f[R] topics. You could use it from the shell too. .IP \[bu] 2 -\f[C]igex(1df)\f[R] wraps around a command to allow you to ignore error +\f[V]igex(1df)\f[R] wraps around a command to allow you to ignore error conditions that don\[cq]t actually worry you, exiting with 0 anyway. .IP \[bu] 2 -\f[C]ix(1df)\f[R] posts its input to the \f[C]ix.io\f[R] pastebin. +\f[V]ix(1df)\f[R] posts its input to the \f[V]ix.io\f[R] pastebin. .IP \[bu] 2 -\f[C]jfp(1df)\f[R] prints its input, excluding any shebang on the first +\f[V]jfp(1df)\f[R] prints its input, excluding any shebang on the first line only. .IP \[bu] 2 -\f[C]loc(1df)\f[R] is a quick-search wrapped around \f[C]find(1)\f[R]. +\f[V]loc(1df)\f[R] is a quick-search wrapped around \f[V]find(1)\f[R]. .IP \[bu] 2 -\f[C]maybe(1df)\f[R] is like \f[C]true(1)\f[R] or \f[C]false(1)\f[R]; +\f[V]maybe(1df)\f[R] is like \f[V]true(1)\f[R] or \f[V]false(1)\f[R]; given a probability of success, it exits with success or failure. Good for quick tests. .IP \[bu] 2 -\f[C]mex(1df)\f[R] makes given filenames in \f[C]$PATH\f[R] executable. +\f[V]mex(1df)\f[R] makes given filenames in \f[V]$PATH\f[R] executable. .IP \[bu] 2 -\f[C]mi5(1df)\f[R] is a crude preprocessor for \f[C]m4\f[R]. +\f[V]mi5(1df)\f[R] is a crude preprocessor for \f[V]m4\f[R]. .IP \[bu] 2 -\f[C]mim(1df)\f[R] starts an interactive Mutt message with its input. +\f[V]mim(1df)\f[R] starts an interactive Mutt message with its input. .IP \[bu] 2 -\f[C]mftl(1df)\f[R] finds usable-looking targets in Makefiles. +\f[V]mftl(1df)\f[R] finds usable-looking targets in Makefiles. .IP \[bu] 2 -\f[C]mkcp(1df)\f[R] creates a directory and copies preceding arguments +\f[V]mkcp(1df)\f[R] creates a directory and copies preceding arguments into it. .IP \[bu] 2 -\f[C]mkmv(1df)\f[R] creates a directory and moves preceding arguments +\f[V]mkmv(1df)\f[R] creates a directory and moves preceding arguments into it. .IP \[bu] 2 -\f[C]motd(1df)\f[R] shows the system MOTD. +\f[V]motd(1df)\f[R] shows the system MOTD. .IP \[bu] 2 -\f[C]msc(1df)\f[R] crudely counts messages in an mbox. +\f[V]msc(1df)\f[R] crudely counts messages in an mbox. .IP \[bu] 2 -\f[C]mw(1df)\f[R] prints alphabetic space-delimited words from the input +\f[V]mw(1df)\f[R] prints alphabetic space-delimited words from the input one per line. .IP \[bu] 2 -\f[C]oii(1df)\f[R] runs a command on input only if there is any. +\f[V]oii(1df)\f[R] runs a command on input only if there is any. .IP \[bu] 2 -\f[C]onl(1df)\f[R] crunches input down to one printable line. +\f[V]onl(1df)\f[R] crunches input down to one printable line. .IP \[bu] 2 -\f[C]osc(1df)\f[R] implements a \f[C]netcat(1)\f[R]-like wrapper for -\f[C]openssl(1)\f[R]\[cq]s \f[C]s_client\f[R] sub-command. +\f[V]osc(1df)\f[R] implements a \f[V]netcat(1)\f[R]-like wrapper for +\f[V]openssl(1)\f[R]\[cq]s \f[V]s_client\f[R] sub-command. .IP \[bu] 2 -\f[C]p(1df)\f[R] prints concatenated standard input; \f[C]cat(1)\f[R] as +\f[V]p(1df)\f[R] prints concatenated standard input; \f[V]cat(1)\f[R] as it should always have been. .IP \[bu] 2 -\f[C]pa(1df)\f[R] prints its arguments, one per line. +\f[V]pa(1df)\f[R] prints its arguments, one per line. .IP \[bu] 2 -\f[C]phpcsff(1df)\f[R] wraps around +\f[V]phpcsff(1df)\f[R] wraps around PHP-CS-Fixer (https://github.com/FriendsOfPHP/PHP-CS-Fixer) to make it a -source code filter suitable for use as an \f[C]equalprg\f[R] in Vim. +source code filter suitable for use as an \f[V]equalprg\f[R] in Vim. .IP \[bu] 2 -\f[C]pp(1df)\f[R] prints the full path of each argument using -\f[C]$PWD\f[R]. +\f[V]pp(1df)\f[R] prints the full path of each argument using +\f[V]$PWD\f[R]. .IP \[bu] 2 -\f[C]pph(1df)\f[R] runs \f[C]pp(1df)\f[R] and includes a leading -\f[C]$HOSTNAME:\f[R]. +\f[V]pph(1df)\f[R] runs \f[V]pp(1df)\f[R] and includes a leading +\f[V]$HOSTNAME:\f[R]. .IP \[bu] 2 -\f[C]paz(1df)\f[R] print its arguments terminated by NULL chars. +\f[V]paz(1df)\f[R] print its arguments terminated by NULL chars. .IP \[bu] 2 -\f[C]pit(1df)\f[R] runs its input through a pager if its standard output +\f[V]pit(1df)\f[R] runs its input through a pager if its standard output looks like a terminal. .IP \[bu] 2 -\f[C]pwg(1df)\f[R] generates just one decent password with -\f[C]pwgen(1)\f[R]. +\f[V]pwg(1df)\f[R] generates just one decent password with +\f[V]pwgen(1)\f[R]. .IP \[bu] 2 -\f[C]qat(1df)\f[R] disables \f[C]stty echo\f[R] for the duration of a +\f[V]qat(1df)\f[R] disables \f[V]stty echo\f[R] for the duration of a paste. .IP \[bu] 2 -\f[C]rep(1df)\f[R] repeats a command a given number of times. +\f[V]rep(1df)\f[R] repeats a command a given number of times. .IP \[bu] 2 -\f[C]rgl(1df)\f[R] is a very crude interactive \f[C]grep(1)\f[R] loop. +\f[V]rgl(1df)\f[R] is a very crude interactive \f[V]grep(1)\f[R] loop. .IP \[bu] 2 -\f[C]shb(1df)\f[R] attempts to build shebang lines for scripts from the +\f[V]shb(1df)\f[R] attempts to build shebang lines for scripts from the system paths. .IP \[bu] 2 -\f[C]sqs(1df)\f[R] chops off query strings from filenames, usually +\f[V]sqs(1df)\f[R] chops off query strings from filenames, usually downloads. .IP \[bu] 2 -\f[C]sshi(1df)\f[R] prints human-readable SSH connection details. +\f[V]sshi(1df)\f[R] prints human-readable SSH connection details. .IP \[bu] 2 -\f[C]stex(1df)\f[R] strips extensions from filenames. +\f[V]stex(1df)\f[R] strips extensions from filenames. .IP \[bu] 2 -\f[C]sue(8df)\f[R] execs \f[C]sudoedit(8)\f[R] as the owner of all the +\f[V]sue(8df)\f[R] execs \f[V]sudoedit(8)\f[R] as the owner of all the file arguments given, perhaps in cases where you may not necessarily -have \f[C]root\f[R] \f[C]sudo(8)\f[R] privileges. +have \f[V]root\f[R] \f[V]sudo(8)\f[R] privileges. .IP \[bu] 2 -\f[C]swr(1df)\f[R] allows you to run commands locally specifying remote -files in \f[C]scp(1)\f[R]\[cq]s HOST:PATH format. +\f[V]swr(1df)\f[R] allows you to run commands locally specifying remote +files in \f[V]scp(1)\f[R]\[cq]s HOST:PATH format. .IP \[bu] 2 -\f[C]td(1df)\f[R] manages a to-do file for you with \f[C]$EDITOR\f[R] -and \f[C]git(1)\f[R]; I used to use Taskwarrior, but found it too +\f[V]td(1df)\f[R] manages a to-do file for you with \f[V]$EDITOR\f[R] +and \f[V]git(1)\f[R]; I used to use Taskwarrior, but found it too complex and buggy. .IP \[bu] 2 -\f[C]tm(1df)\f[R] runs \f[C]tmux(1)\f[R] with -\f[C]attach-session -d\f[R] if a session exists, and -\f[C]new-session\f[R] if it doesn\[cq]t. +\f[V]tm(1df)\f[R] runs \f[V]tmux(1)\f[R] with +\f[V]attach-session -d\f[R] if a session exists, and +\f[V]new-session\f[R] if it doesn\[cq]t. .IP \[bu] 2 -\f[C]trs(1df)\f[R] replaces strings (not regular expression) in its +\f[V]trs(1df)\f[R] replaces strings (not regular expression) in its input. .IP \[bu] 2 -\f[C]try(1df)\f[R] repeats a command up to a given number of times until +\f[V]try(1df)\f[R] repeats a command up to a given number of times until it succeeds, only printing error output if all three attempts failed. -Good for tolerating blips or temporary failures in \f[C]cron(8)\f[R] +Good for tolerating blips or temporary failures in \f[V]cron(8)\f[R] scripts. .IP \[bu] 2 -\f[C]umake(1df)\f[R] iterates upwards through the directory tree from -\f[C]$PWD\f[R] until it finds a Makefile for which to run -\f[C]make(1)\f[R] with the given arguments. +\f[V]umake(1df)\f[R] iterates upwards through the directory tree from +\f[V]$PWD\f[R] until it finds a Makefile for which to run +\f[V]make(1)\f[R] with the given arguments. .IP \[bu] 2 -\f[C]uts(1df)\f[R] gets the current UNIX timestamp in an unorthodox way +\f[V]uts(1df)\f[R] gets the current UNIX timestamp in an unorthodox way that should work on all POSIX-compliant operating systems. .IP \[bu] 2 -\f[C]vest(1df)\f[R] runs \f[C]test(1)\f[R] but fails with explicit -output via \f[C]vex(1df)\f[R]. +\f[V]vest(1df)\f[R] runs \f[V]test(1)\f[R] but fails with explicit +output via \f[V]vex(1df)\f[R]. .IP \[bu] 2 -\f[C]vex(1df)\f[R] runs a command and prints \f[C]true\f[R] or -\f[C]false\f[R] explicitly to \f[C]stdout\f[R] based on the exit value. +\f[V]vex(1df)\f[R] runs a command and prints \f[V]true\f[R] or +\f[V]false\f[R] explicitly to \f[V]stdout\f[R] based on the exit value. .IP \[bu] 2 -\f[C]vic(1df)\f[R] tries to run a POSIX-compliant \f[C]vi(1)\f[R]. +\f[V]vic(1df)\f[R] tries to run a POSIX-compliant \f[V]vi(1)\f[R]. .IP \[bu] 2 -\f[C]xrbg(1df)\f[R] applies the same randomly-selected background to +\f[V]xrbg(1df)\f[R] applies the same randomly-selected background to each X screen. .IP \[bu] 2 -\f[C]xrq(1df)\f[R] gets the values of specific resources out of -\f[C]xrdb -query\f[R] output. +\f[V]xrq(1df)\f[R] gets the values of specific resources out of +\f[V]xrdb -query\f[R] output. .PP -There\[cq]s some silly stuff in \f[C]install-games\f[R]: +There\[cq]s some silly stuff in \f[V]install-games\f[R]: .IP \[bu] 2 -\f[C]aaf(6df)\f[R] gets a random ASCII Art +\f[V]aaf(6df)\f[R] gets a random ASCII Art Farts (http://www.asciiartfarts.com/) comic. .IP \[bu] 2 -\f[C]acq(6df)\f[R] allows you to interrogate AC, the interplanetary +\f[V]acq(6df)\f[R] allows you to interrogate AC, the interplanetary computer. .IP \[bu] 2 -\f[C]aesth(6df)\f[R] converts English letters to their full width CJK +\f[V]aesth(6df)\f[R] converts English letters to their full width CJK analogues, for \[uFF41]\[uFF45]\[uFF53]\[uFF54]\[uFF48]\[uFF45]\[uFF54]\[uFF49]\[uFF43] purposes. .IP \[bu] 2 -\f[C]squ(6df)\f[R] makes a reduced Latin square out of each line of +\f[V]squ(6df)\f[R] makes a reduced Latin square out of each line of input. .IP \[bu] 2 -\f[C]kvlt(6df)\f[R] translates input to emulate a style of typing unique +\f[V]kvlt(6df)\f[R] translates input to emulate a style of typing unique to black metal communities on the internet. .IP \[bu] 2 -\f[C]philsay(6df)\f[R] shows a picture to accompany \f[C]pks(6df)\f[R] +\f[V]philsay(6df)\f[R] shows a picture to accompany \f[V]pks(6df)\f[R] output. .IP \[bu] 2 -\f[C]pks(6df)\f[R] laughs at a randomly selected word. +\f[V]pks(6df)\f[R] laughs at a randomly selected word. .IP \[bu] 2 -\f[C]rndn(6df)\f[R] implements an esoteric random number generation +\f[V]rndn(6df)\f[R] implements an esoteric random number generation algorithm. .IP \[bu] 2 -\f[C]strik(6df)\f[R] outputs +\f[V]strik(6df)\f[R] outputs s\[u0336]t\[u0336]r\[u0336]i\[u0336]k\[u0336]e\[u0336]d\[u0336] \[u0336]o\[u0336]u\[u0336]t\[u0336] struck out text. .IP \[bu] 2 -\f[C]rot13(6df)\f[R] rotates the Latin letters in its input. +\f[V]rot13(6df)\f[R] rotates the Latin letters in its input. .IP \[bu] 2 -\f[C]uuu(6df)\f[R] uuuuu uuuu uu uuuuuu uuuuuuu u uuu uuuuu. +\f[V]uuu(6df)\f[R] uuuuu uuuu uu uuuuuu uuuuuuu u uuu uuuuu. .IP \[bu] 2 -\f[C]xyzzy(6df)\f[R] teleports to a marked location on the filesystem. +\f[V]xyzzy(6df)\f[R] teleports to a marked location on the filesystem. .IP \[bu] 2 -\f[C]zs(6df)\f[R] prefixes \[lq]z\[rq] case-appropriately to every +\f[V]zs(6df)\f[R] prefixes \[lq]z\[rq] case-appropriately to every occurrence of \[lq]s\[rq] in the text on its standard input. .SS Manuals .PP -The \f[C]install-bin\f[R] and \f[C]install-games\f[R] targets install +The \f[V]install-bin\f[R] and \f[V]install-games\f[R] targets install manuals for each script. If you want to read the manuals, you may need to add -\f[C]\[ti]/.local/share/man\f[R] to your \f[C]\[ti]/.manpath\f[R] or -\f[C]/etc/manpath\f[R] configuration, depending on your system. +\f[V]\[ti]/.local/share/man\f[R] to your \f[V]\[ti]/.manpath\f[R] or +\f[V]/etc/manpath\f[R] configuration, depending on your system. .SS Testing .PP You can check that both sets of shell scripts are syntactically correct -with \f[C]make check-bash\f[R] or \f[C]make check-sh\f[R], or -\f[C]make check\f[R] for everything including the scripts in -\f[C]bin\f[R] and \f[C]games\f[R]. +with \f[V]make check-bash\f[R] or \f[V]make check-sh\f[R], or +\f[V]make check\f[R] for everything including the scripts in +\f[V]bin\f[R] and \f[V]games\f[R]. There\[cq]s no proper test suite for the actual functionality (yet). .PP -There are also optional \f[C]lint\f[R] targets, if you have the +There are also optional \f[V]lint\f[R] targets, if you have the appropriate tools available to run them: .IP \[bu] 2 ShellCheck (https://www.shellcheck.net/): .RS 2 .IP \[bu] 2 -\f[C]lint-bash\f[R] +\f[V]lint-bash\f[R] .IP \[bu] 2 -\f[C]lint-bin\f[R] +\f[V]lint-bin\f[R] .IP \[bu] 2 -\f[C]lint-games\f[R] +\f[V]lint-games\f[R] .IP \[bu] 2 -\f[C]lint-ksh\f[R] +\f[V]lint-ksh\f[R] .IP \[bu] 2 -\f[C]lint-sh\f[R] -.IP \[bu] 2 -\f[C]lint-x\f[R] -.RE -.IP \[bu] 2 -Perl::Critic: -.RS 2 +\f[V]lint-sh\f[R] .IP \[bu] 2 -\f[C]lint-urxvt\f[R] +\f[V]lint-x\f[R] .RE .IP \[bu] 2 Vint (https://github.com/Kuniwak/vint): .RS 2 .IP \[bu] 2 -\f[C]lint-vim\f[R] +\f[V]lint-vim\f[R] .RE .SS Future development .PP @@ -1062,7 +1049,7 @@ See IDEAS.md. See ISSUES.md. .SS License .PP -Public domain; see the included \f[C]UNLICENSE\f[R] file. +Public domain; see the included \f[V]UNLICENSE\f[R] file. It\[cq]s just configuration and simple scripts, so do whatever you like with it if any of it\[cq]s useful to you. If you\[cq]re feeling generous, please join and/or donate to a free diff --git a/mpv/mpv.conf b/mpv/mpv.conf index d1624a79..553d73b7 100644 --- a/mpv/mpv.conf +++ b/mpv/mpv.conf @@ -22,3 +22,13 @@ screenshot-format="png" # ~/.local/share/mpv/screenshots/Red Dwarf S01E01.mkv/mpv_Red Dwarf S01E01.mkv_00:08:20.461_0001.png # screenshot-template="%f/mpv_%f_%P_%04n" + +# Don't try to find external subtitles for me; I'll specify if I want them. +sub-auto=no + +# Get somewhat lower-resolution (<=640kps), lower-bitrate (<=500kbps) videos, +# so that they come down quicker and slower systems are less likely to stutter +# while playing them at busy times; if I want archival quality, I'll just +# invoke yt-dlp directly. +# +ytdl-format="[height<=?640][tbr<=?500]" diff --git a/mutt/muttrc b/mutt/muttrc index 2a3dca8b..aba87363 100644 --- a/mutt/muttrc +++ b/mutt/muttrc @@ -23,7 +23,8 @@ set alias_file \ source $alias_file # Don't send terminal bells on errors, but do send them when new mail arrives, -# because that should light up my tmux window label and/or urxvt window. +# because that should light up either my terminal emulator window or my tmux +# window label. # unset beep set beep_new diff --git a/mutt/muttrc.d/src b/mutt/muttrc.d/src.sh index 47cb2df1..60e0c566 100755..100644 --- a/mutt/muttrc.d/src +++ b/mutt/muttrc.d/src.sh @@ -1,5 +1,3 @@ -#!/bin/sh - # Build groups from address lists for rc in "$HOME"/.config/mutt/muttrc.d/groups/*.list ; do [ -e "$rc" ] || continue diff --git a/readline/inputrc b/readline/inputrc index 0da55708..90c53633 100644 --- a/readline/inputrc +++ b/readline/inputrc @@ -1,13 +1,6 @@ -# Don't mess with the eighth bit of characters -set input-meta on -set output-meta on - # Never ring any sort of bell during line reading set bell-style none -# Let readline do stuff like word killing, not stty(1) -set bind-tty-special-chars off - # Color files by type in the same way as `ls` set colored-stats on diff --git a/rofi/bin/rofi_pass.sh b/rofi/bin/rofi_pass.sh new file mode 100644 index 00000000..fb31a454 --- /dev/null +++ b/rofi/bin/rofi_pass.sh @@ -0,0 +1,92 @@ +# Pick password from local or remote password-store with rofi's dmenu emulation +# mode, and write it to the active X11 window. Optionally, prefix it with the +# username, being the last part of the slash-delimited password's name, and +# a TAB press to move to the next field in a form. +# +self=rofi_pass + +# Abstraction to handle running shell commands (args or stdin) in either +# a remote or local shell. If the environment variable PASSWORD_STORE_HOST is +# set, it's used as the destination SSH hostname to the password store. +# +pass_shell() { + [ "$#" -le 1 ] || return + if [ -n "$PASSWORD_STORE_HOST" ] ; then + ssh -o StrictHostKeyChecking=yes -T -X -- \ + "$PASSWORD_STORE_HOST" "$@" + elif [ "$#" -eq 1 ] ; then + "${SHELL:-/bin/sh}" -c "$1" + else + "${SHELL:-/bin/sh}" -s + fi +} + +# Get a list of all the password paths, relative to the password store root, +# including leading dot-slash and trailing .gpg extension. +# +get_paths() { + pass_shell <<-'EOF' + dir=${PASSWORD_STORE_DIR:-"$HOME"/.password-store} + cd -- "$dir" || exit + find . -name \*.gpg -type f || exit + EOF +} + +# Get a list of all the password names, bytewise-sorted, with leading dot-slash +# and trailing .gpg extension removed. +# +get_names() { + get_paths | + sed -e 's_^[.]/__' -e 's_[.]gpg$__' | + LC_COLLATE=C sort -f +} + +# Write a password name to a shell to retrieve it, and read its first line; +# write the name safely to the shell's input rather than as an argument. +# +get_password() { + name=$1 + [ -n "$name" ] || return + printf '%s\n' "$name" | + pass_shell 'IFS= read -r name ; pass show "$name"' | + head -n 1 +} + +# Check for --login/-l option to paste a username-password combo, not just the +# password (defaults to the latter). +# +login=0 +case $1 in + --login|-l) login=1 ;; +esac + +# Apply rofi -dmenu to pick a password name. Use case-insensitive matching, +# and don't accept arbitrary input. +# +name=$(get_names | rofi -dmenu -i -no-lazy-grab -only_match -p pass) || exit +[ -n "$name" ] || exit + +# Retrieve the username for the chosen password, and then the secret itself; +# check that we actually got more than an empty string back in both cases. +# +username=${name##*/} +[ -n "$username" ] || exit +password=$(get_password "$name") || exit +[ -n "$password" ] || exit + +# Have xdotool type either the username-TAB-password, or just the password; +# receiving it on its standard input rather than its arguments, for security. +# +if [ "$login" -eq 1 ] ; then + printf '%s\t%s' \ + "$username" "$password" +else + printf '%s' \ + "$password" +fi | xdotool type --clearmodifiers --delay=0 --file - || exit + +# Tell the user we wrote the password out, in case they're typing a password +# into a field with echo turned off. +# +notify-send --app-name="$self" --icon=gcr-password -- \ + 'Password typed' "$name" diff --git a/sh/shrc.d/sudo.sh b/sh/shrc.d/sudo.sh deleted file mode 100644 index d9e30bc4..00000000 --- a/sh/shrc.d/sudo.sh +++ /dev/null @@ -1,8 +0,0 @@ -# Add the -H parameter to sudo(8) calls, always use the target user's $HOME -sudo() { - case $1 in - -v) ;; - *) set -- -H "$@" ;; - esac - command sudo "$@" -} diff --git a/sxhkd/sxhkdrc b/sxhkd/sxhkdrc index d655dc30..b4f823b6 100644 --- a/sxhkd/sxhkdrc +++ b/sxhkd/sxhkdrc @@ -8,7 +8,7 @@ super + b exec x-www-browser super + d - exec dmenu_run + exec rofi -modi drun -show drun super + g exec xgoc @@ -17,16 +17,19 @@ super + i exec gimp super + m - exec x-terminal-emulator -e tm + exec x-terminal-emulator -title tm -e tm super + p - exec dmenu_pass + exec rofi_pass + +super + shift + p + exec rofi_pass --login super + t exec thunar super + v - exec x-terminal-emulator -e "$VISUAL" + exec x-terminal-emulator -title "$VISUAL" -e "$VISUAL" Print exec xsnap @@ -47,4 +50,4 @@ XF86Audio{Lower,Raise}Volume exec pactl set-sink-volume @DEFAULT_SINK@ {-5%,+5%} XF86Calculator - exec x-terminal-emulator -e bcq + exec x-terminal-emulator -title bcq -e bcq diff --git a/terminfo/putty-256color.ti b/terminfo/putty-256color.ti deleted file mode 100644 index 09d022b8..00000000 --- a/terminfo/putty-256color.ti +++ /dev/null @@ -1,7 +0,0 @@ -putty-256color| PuTTY with 256 colors, - use=putty, - colors#256, - initc@, - pairs#32767, - setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m, - setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m, diff --git a/terminfo/putty.ti b/terminfo/putty.ti deleted file mode 100644 index 068dbbd5..00000000 --- a/terminfo/putty.ti +++ /dev/null @@ -1,128 +0,0 @@ -putty| PuTTY, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - am, - bce, - bel=^G, - blink=\E[5m, - bold=\E[1m, - bw, - cbt=\E[Z, - ccc, - civis=\E[?25l, - clear=\E[H\E[J, - cnorm=\E[?25h, - colors#8, - cr=^M, - csr=\E[%i%p1%d;%p2%dr, - cub1=^H, - cub=\E[%p1%dD, - cud1=\ED, - cud=\E[%p1%dB, - cuf1=\E[C, - cuf=\E[%p1%dC, - cup=\E[%i%p1%d;%p2%dH, - cuu1=\EM, - cuu=\E[%p1%dA, - dch1=\E[P, - dch=\E[%p1%dP, - dispc=%?%p1%{8}%=%t\E%%G\342\227\230\E%%@%e%p1%{10}%=%t\E%%G\342\227\231\E%%@%e%p1%{12}%=%t\E%%G\342\231\0\E%%@%e%p1%{13}%=%t\E%%G\342\231\252\E%%@%e%p1%{14}%=%t\E%%G\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;, - dl1=\E[M, - dl=\E[%p1%dM, - dsl=\E]0;\007, - ech=\E[%p1%dX, - ed=\E[J, - el1=\E[1K, - el=\E[K, - enacs=\E(B\E)0, - flash=\E[?5h\E[?5l, - fsl=^G, - home=\E[H, - hpa=\E[%i%p1%dG, - hs, - ht=^I, - hts=\EH, - il1=\E[L, - il=\E[%p1%dL, - ind=^J, - indn=\E[%p1%dS, - initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x, - is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>\E]R, - it#8, - kb2=\E[G, - kbs=\177, - kcbt=\E[Z, - kcub1=\E[D, - kcud1=\E[B, - kcuf1=\E[C, - kcuu1=\E[A, - kdch1=\E[3~, - kend=\E[4~, - kf10=\E[21~, - kf11=\E[23~, - kf12=\E[24~, - kf13=\E[25~, - kf14=\E[26~, - kf15=\E[28~, - kf16=\E[29~, - kf17=\E[31~, - kf18=\E[32~, - kf19=\E[33~, - kf1=\E[11~, - kf20=\E[34~, - kf2=\E[12~, - kf3=\E[13~, - kf4=\E[14~, - kf5=\E[15~, - kf6=\E[17~, - kf7=\E[18~, - kf8=\E[19~, - kf9=\E[20~, - khome=\E[1~, - kich1=\E[2~, - kmous=\E[M, - knp=\E[6~, - kpp=\E[5~, - kspd=^Z, - mir, - msgr, - ncv#22, - nel=^M^J, - oc=\E]R, - op=\E[39;49m, - pairs#64, - rc=\E8, - rev=\E[7m, - ri=\EM, - rin=\E[%p1%dT, - rmacs=^O, - rmam=\E[?7l, - rmcup=\E[2J\E[?47l, - rmir=\E[4l, - rmpch=\E[10m, - rmso=\E[27m, - rmul=\E[24m, - rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l, - s0ds=\E[10m, - s1ds=\E[11m, - s2ds=\E[12m, - sc=\E7, - setab=\E[4%p1%dm, - setaf=\E[3%p1%dm, - sgr0=\E[m\017, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, - smacs=^N, - smam=\E[?7h, - smcup=\E[?47h, - smir=\E[4h, - smpch=\E[11m, - smso=\E[7m, - smul=\E[4m, - tbc=\E[3g, - tsl=\E]0;, - u6=\E[%i%d;%dR, - u7=\E[6n, - u8=\E[?6c, - u9=\E[c, - vpa=\E[%i%p1%dd, - xenl, - xon, diff --git a/terminfo/rxvt-256color.ti b/terminfo/rxvt-256color.ti deleted file mode 100644 index 22c35ec2..00000000 --- a/terminfo/rxvt-256color.ti +++ /dev/null @@ -1,8 +0,0 @@ -rxvt-256color| rxvt with 256 colors, - use=rxvt, - ccc, - colors#256, - initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, - pairs#32767, - setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m, - setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m, diff --git a/terminfo/rxvt-unicode-256color.ti b/terminfo/rxvt-unicode-256color.ti deleted file mode 100644 index 1a34a46f..00000000 --- a/terminfo/rxvt-unicode-256color.ti +++ /dev/null @@ -1,4 +0,0 @@ -rxvt-unicode-256color| rxvt-unicode with 256 colors, - use=rxvt-unicode, - colors#256, - pairs#32767, diff --git a/terminfo/rxvt-unicode.ti b/terminfo/rxvt-unicode.ti deleted file mode 100644 index 05bef84a..00000000 --- a/terminfo/rxvt-unicode.ti +++ /dev/null @@ -1,160 +0,0 @@ -rxvt-unicode| rxvt-unicode, - acsc=+C\,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - am, - bce, - bel=^G, - blink=\E[5m, - bold=\E[1m, - btns#5, - bw, - ccc, - civis=\E[?25l, - clear=\E[H\E[2J, - cnorm=\E[?25h, - colors#88, - cols#80, - cr=^M, - csr=\E[%i%p1%d;%p2%dr, - cub1=^H, - cub=\E[%p1%dD, - cud1=^J, - cud=\E[%p1%dB, - cuf1=\E[C, - cuf=\E[%p1%dC, - cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, - cuu=\E[%p1%dA, - cvvis=\E[?25h, - dch1=\E[P, - dch=\E[%p1%dP, - dl1=\E[M, - dl=\E[%p1%dM, - dsl=\E]2;\007, - ech=\E[%p1%dX, - ed=\E[J, - el1=\E[1K, - el=\E[K, - enacs=, - eo, - flash=\E[?5h$<20/>\E[?5l, - fsl=^G, - home=\E[H, - hpa=\E[%i%p1%dG, - hs, - ht=^I, - hts=\EH, - ich1=\E[@, - ich=\E[%p1%d@, - il1=\E[L, - il=\E[%p1%dL, - ind=^J, - indn=\E[%p1%dS, - initc=\E]4;%p1%d;rgb\:%p2%{65535}%*%{1000}%/%4.4X/%p3%{65535}%*%{1000}%/%4.4X/%p4%{65535}%*%{1000}%/%4.4X\E\\, - is1=\E[!p, - is2=\E[r\E[m\E[2J\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l, - it#8, - kDC=\E[3$, - kEND=\E[8$, - kHOM=\E[7$, - kIC=\E[2$, - kLFT=\E[d, - kNXT=\E[6$, - kPRV=\E[5$, - kRIT=\E[c, - ka1=\EOw, - ka3=\EOy, - kb2=\EOu, - kbs=\177, - kc1=\EOq, - kc3=\EOs, - kcbt=\E[Z, - kcub1=\E[D, - kcud1=\E[B, - kcuf1=\E[C, - kcuu1=\E[A, - kdch1=\E[3~, - kel=\E[8\^, - kend=\E[8~, - kent=\EOM, - kf10=\E[21~, - kf11=\E[23~, - kf12=\E[24~, - kf13=\E[25~, - kf14=\E[26~, - kf15=\E[28~, - kf16=\E[29~, - kf17=\E[31~, - kf18=\E[32~, - kf19=\E[33~, - kf1=\E[11~, - kf20=\E[34~, - kf2=\E[12~, - kf3=\E[13~, - kf4=\E[14~, - kf5=\E[15~, - kf6=\E[17~, - kf7=\E[18~, - kf8=\E[19~, - kf9=\E[20~, - kfnd=\E[1~, - khome=\E[7~, - kich1=\E[2~, - km, - kmous=\E[M, - knp=\E[6~, - kpp=\E[5~, - kslt=\E[4~, - lines#24, - lm#0, - mc0=\E[i, - mc4=\E[4i, - mc5=\E[5i, - mc5i, - mir, - msgr, - ncv#0, - npc, - op=\E[39;49m, - pairs#7744, - rc=\E8, - rev=\E[7m, - ri=\EM, - rin=\E[%p1%dT, - ritm=\E[23m, - rmacs=\E(B, - rmam=\E[?7l, - rmcup=\E[r\E[?1049l, - rmir=\E[4l, - rmkx=\E>, - rmso=\E[27m, - rmul=\E[24m, - rs1=\Ec, - rs2=\E[r\E[m\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l, - s0ds=\E(B, - s1ds=\E(0, - s2ds=\E*B, - s3ds=\E+B, - sc=\E7, - setab=\E[48;5;%p1%dm, - setaf=\E[38;5;%p1%dm, - setb=%?%p1%{7}%>%t\E[48;5;%p1%dm%e\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m%;, - setf=%?%p1%{7}%>%t\E[38;5;%p1%dm%e\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m%;, - sgr0=\E[m\E(B, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;, - sitm=\E[3m, - smacs=\E(0, - smam=\E[?7h, - smcup=\E[?1049h, - smir=\E[4h, - smkx=\E=, - smso=\E[7m, - smul=\E[4m, - tbc=\E[3g, - tsl=\E]2;, - u6=\E[%i%d;%dR, - u7=\E[6n, - u8=\E[?1;2c, - u9=\E[c, - vpa=\E[%i%p1%dd, - xenl, - xon, diff --git a/terminfo/rxvt.ti b/terminfo/rxvt.ti deleted file mode 100644 index 62808d3c..00000000 --- a/terminfo/rxvt.ti +++ /dev/null @@ -1,151 +0,0 @@ -rxvt| rxvt, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - am, - bce, - bel=^G, - blink=\E[5m, - bold=\E[1m, - civis=\E[?25l, - clear=\E[H\E[2J, - cnorm=\E[?25h, - colors#8, - cols#80, - cr=^M, - csr=\E[%i%p1%d;%p2%dr, - cub1=^H, - cub=\E[%p1%dD, - cud1=^J, - cud=\E[%p1%dB, - cuf1=\E[C, - cuf=\E[%p1%dC, - cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, - cuu=\E[%p1%dA, - dl1=\E[M, - dl=\E[%p1%dM, - ed=\E[J, - el1=\E[1K, - el=\E[K, - enacs=\E(B\E)0, - eo, - flash=\E[?5h\E[?5l, - home=\E[H, - hpa=\E[%i%p1%dG, - ht=^I, - hts=\EH, - ich1=\E[@, - ich=\E[%p1%d@, - il1=\E[L, - il=\E[%p1%dL, - ind=^J, - is1=\E[?47l\E=\E[?1l, - is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, - it#8, - kDC=\E[3$, - kEND=\E[8$, - kHOM=\E[7$, - kLFT=\E[d, - kNXT=\E[6$, - kPRV=\E[5$, - kRIT=\E[c, - ka1=\EOw, - ka3=\EOy, - kb2=\EOu, - kbs=\177, - kc1=\EOq, - kc3=\EOs, - kcbt=\E[Z, - kcub1=\E[D, - kcud1=\E[B, - kcuf1=\E[C, - kcuu1=\E[A, - kdch1=\E[3~, - kel=\E[8\^, - kend=\E[8~, - kent=\EOM, - kf10=\E[21~, - kf11=\E[23~, - kf12=\E[24~, - kf13=\E[25~, - kf14=\E[26~, - kf15=\E[28~, - kf16=\E[29~, - kf17=\E[31~, - kf18=\E[32~, - kf19=\E[33~, - kf1=\E[11~, - kf20=\E[34~, - kf21=\E[23$, - kf22=\E[24$, - kf23=\E[11\^, - kf24=\E[12\^, - kf25=\E[13\^, - kf26=\E[14\^, - kf27=\E[15\^, - kf28=\E[17\^, - kf29=\E[18\^, - kf2=\E[12~, - kf30=\E[19\^, - kf31=\E[20\^, - kf32=\E[21\^, - kf33=\E[23\^, - kf34=\E[24\^, - kf35=\E[25\^, - kf36=\E[26\^, - kf37=\E[28\^, - kf38=\E[29\^, - kf39=\E[31\^, - kf3=\E[13~, - kf40=\E[32\^, - kf41=\E[33\^, - kf42=\E[34\^, - kf43=\E[23@, - kf44=\E[24@, - kf4=\E[14~, - kf5=\E[15~, - kf6=\E[17~, - kf7=\E[18~, - kf8=\E[19~, - kf9=\E[20~, - kfnd=\E[1~, - khome=\E[7~, - kich1=\E[2~, - km, - kmous=\E[M, - knp=\E[6~, - kpp=\E[5~, - kslt=\E[4~, - lines#24, - mir, - msgr, - ncv@, - op=\E[39;49m, - pairs#64, - rc=\E8, - rev=\E[7m, - ri=\EM, - rmacs=^O, - rmcup=\E[2J\E[?47l\E8, - rmir=\E[4l, - rmkx=\E>, - rmso=\E[27m, - rmul=\E[24m, - rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, - rs2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E=\E[?1000l\E[?25h, - s0ds=\E(B, - s1ds=\E(0, - sc=\E7, - setab=\E[4%p1%dm, - setaf=\E[3%p1%dm, - sgr0=\E[m\017, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, - smacs=^N, - smcup=\E7\E[?47h, - smir=\E[4h, - smkx=\E=, - smso=\E[7m, - smul=\E[4m, - tbc=\E[3g, - vpa=\E[%i%p1%dd, - xenl, - xon, diff --git a/terminfo/screen-256color.ti b/terminfo/screen-256color.ti deleted file mode 100644 index cc7faffe..00000000 --- a/terminfo/screen-256color.ti +++ /dev/null @@ -1,7 +0,0 @@ -screen-256color| GNU Screen or tmux with 256 colors, - use=screen, - colors#256, - initc@, - pairs#32767, - setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m, - setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m, diff --git a/terminfo/screen.ti b/terminfo/screen.ti deleted file mode 100644 index 4658f424..00000000 --- a/terminfo/screen.ti +++ /dev/null @@ -1,100 +0,0 @@ -screen| GNU Screen or tmux, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - am, - bel=^G, - blink=\E[5m, - bold=\E[1m, - cbt=\E[Z, - civis=\E[?25l, - clear=\E[H\E[J, - cnorm=\E[34h\E[?25h, - colors#8, - cols#80, - cr=^M, - csr=\E[%i%p1%d;%p2%dr, - cub1=^H, - cub=\E[%p1%dD, - cud1=^J, - cud=\E[%p1%dB, - cuf1=\E[C, - cuf=\E[%p1%dC, - cup=\E[%i%p1%d;%p2%dH, - cuu1=\EM, - cuu=\E[%p1%dA, - cvvis=\E[34l, - dch1=\E[P, - dch=\E[%p1%dP, - dl1=\E[M, - dl=\E[%p1%dM, - ed=\E[J, - el1=\E[1K, - el=\E[K, - enacs=\E(B\E)0, - flash=\Eg, - home=\E[H, - ht=^I, - hts=\EH, - ich=\E[%p1%d@, - il1=\E[L, - il=\E[%p1%dL, - ind=^J, - is2=\E)0, - it#8, - kbs=\177, - kcbt=\E[Z, - kcub1=\EOD, - kcud1=\EOB, - kcuf1=\EOC, - kcuu1=\EOA, - kdch1=\E[3~, - kend=\E[4~, - kf10=\E[21~, - kf11=\E[23~, - kf12=\E[24~, - kf1=\EOP, - kf2=\EOQ, - kf3=\EOR, - kf4=\EOS, - kf5=\E[15~, - kf6=\E[17~, - kf7=\E[18~, - kf8=\E[19~, - kf9=\E[20~, - khome=\E[1~, - kich1=\E[2~, - km, - kmous=\E[M, - knp=\E[6~, - kpp=\E[5~, - lines#24, - mir, - msgr, - ncv@, - nel=\EE, - op=\E[39;49m, - pairs#64, - rc=\E8, - rev=\E[7m, - ri=\EM, - ritm=\E[23m, - rmacs=^O, - rmcup=\E[?1049l, - rmir=\E[4l, - rmkx=\E[?1l\E>, - rmso=\E[27m, - rmul=\E[24m, - rs2=\Ec\E[?1000l\E[?25h, - sc=\E7, - setab=\E[4%p1%dm, - setaf=\E[3%p1%dm, - sgr0=\E[m\017, - sgr=\E[0%?%p6%t;1%;%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, - sitm=\E[3m, - smacs=^N, - smcup=\E[?1049h, - smir=\E[4h, - smkx=\E[?1h\E=, - smso=\E[7m, - smul=\E[4m, - tbc=\E[3g, - xenl, diff --git a/tmux/tmux.conf b/tmux/tmux.conf index f6109afd..ad420528 100644 --- a/tmux/tmux.conf +++ b/tmux/tmux.conf @@ -4,9 +4,6 @@ set-option -g update-environment '' # Setting this makes each new pane a non-login shell, which suits me better set-option -g default-command "exec $SHELL" -# Expect a 256-color terminal -set-option -g default-terminal 'screen-256color' - # Change the prefix to ^A rather than the default of ^B, because I'm a godless # GNU Screen refugee, and also I like using ^B in my shell and in Vim more unbind-key C-b diff --git a/urxvt/Xresources.d/URxvt b/urxvt/Xresources.d/URxvt deleted file mode 100644 index f4c30d54..00000000 --- a/urxvt/Xresources.d/URxvt +++ /dev/null @@ -1,32 +0,0 @@ -! URxvt -URxvt.cursorBlink: on -URxvt.cutchars: <>│ -URxvt.internalBorder: 0 -URxvt.iso14755: false -URxvt.iso14755_52: false -URxvt.perl-ext-common: select -URxvt.pointerBlank: true -URxvt.saveLines: 10000 -URxvt.scrollBar: false -URxvt.scrollTTyKeypress: true -URxvt.scrollTTyOutput: false -URxvt.secondaryScroll: true -URxvt.urgentOnBell: true -URxvt.background: #030303 -URxvt.foreground: #E0E0E0 -URxvt.color0: #030303 -URxvt.color1: #CC0000 -URxvt.color2: #3EAA06 -URxvt.color3: #C4A000 -URxvt.color4: #3465A4 -URxvt.color5: #75507B -URxvt.color6: #06989A -URxvt.color7: #D3D7CF -URxvt.color8: #303030 -URxvt.color9: #EF2929 -URxvt.color10: #7AF234 -URxvt.color11: #FCE94F -URxvt.color12: #729FCF -URxvt.color13: #AD7FA8 -URxvt.color14: #34E2E2 -URxvt.color15: #EEEEEC diff --git a/urxvt/ext/select.pl b/urxvt/ext/select.pl deleted file mode 100644 index 7701e963..00000000 --- a/urxvt/ext/select.pl +++ /dev/null @@ -1,85 +0,0 @@ -# Tom Ryder's choice of selection behaviours for urxvt, butchered from included -# URxvt extension scripts. - -# Force me to write this properly -use strict; -use warnings; -use utf8; - -# Require at least this version of Perl -use 5.006; - -# Use plain-English variable names -use English qw(-no_match_vars); - -# Set version of this extension -our $VERSION = 1.0; - -# On creation, read all of cutchars into a list of regex-quoted patterns -sub on_init { - my ($self) = @_; - if ( defined( my $res = $self->resource('cutchars') ) ) { - $res = $self->locale_decode($res); - push @{ $self->{patterns} }, - qr{\G [\Q$res\E[:space:]]* ([^\Q$res\E[:space:]]+) }msx; - } - return (); -} - -# Handle multiple-clicking selection extension -sub on_sel_extend { - my ($self) = @_; - - # Get attributes of the current selection - my ( $row, $col ) = $self->selection_mark; - my $line = $self->line($row); - my $text = $line->t; - my $markofs = $line->offset_of( $row, $col ); - my $curlen = - $line->offset_of( $self->selection_end ) - - $line->offset_of( $self->selection_beg ); - - # Find all the possible matches - my @matches; - if ( $markofs < $line->l ) { - - # `perldoc -f study` says this does nothing useful anymore since - # version 5.16 - study $text; - - for my $regex ( @{ $self->{patterns} } ) { - while ( $text =~ m{$regex}gmsx ) { - if ( $LAST_MATCH_START[1] <= $markofs - and $markofs <= $LAST_MATCH_END[1] ) - { - my $ofs = $LAST_MATCH_START[1]; - my $match = $1; - - push @matches, [ $ofs, length $match ]; - } - } - } - } - - # If no more clever patterns matched, just snarf the whole line - push @matches, [ 0, ( $line->end - $line->beg + 1 ) * $self->ncol ]; - - # Iterate over the matches to choose the shortest one - MATCH: - for ( - sort { ## no critic (ProhibitReverseSortBlock) - $a->[1] <=> $b->[1] - or $b->[0] <=> $a->[0] - } @matches - ) - { - my ( $ofs, $len ) = @{$_}; - next MATCH if $len <= $curlen; - $self->selection_beg( $line->coord_of($ofs) ); - $self->selection_end( $line->coord_of( $ofs + $len ) ); - return 1; - } - - # Done - return (); -} diff --git a/urxvt/xsession.d/urxvt.sh b/urxvt/xsession.d/urxvt.sh deleted file mode 100644 index 766c2939..00000000 --- a/urxvt/xsession.d/urxvt.sh +++ /dev/null @@ -1,2 +0,0 @@ -# Start X terminator emulator daemon -urxvtd --fork --opendisplay diff --git a/vim/after/ftplugin/python.vim b/vim/after/ftplugin/python.vim index b5071e3b..2ca1ae89 100644 --- a/vim/after/ftplugin/python.vim +++ b/vim/after/ftplugin/python.vim @@ -1,3 +1,11 @@ +" The Python runtime files didn't define b:undo_ftplugin until Vim v8.1.1048; +" if it's not set yet, set it here (to something innoccuous) so that the +" appending :let commands in the rest of this file don't break. +" +if !exists('b:undo_ftplugin') + let b:undo_ftplugin = 'setlocal tabstop<' +endif + " Use pyflakes for syntax checking and autopep8 for tidying compiler pyflakes if executable('autopep8') @@ -20,7 +28,7 @@ let b:undo_ftplugin .= '|nunmap <buffer> <LocalLeader>c' " Mappings to choose 'equalprg' nnoremap <buffer> <LocalLeader>t - \ :<C-U>setlocal equalprg=equalprg=autopep8\ -aaa\ --\ -<CR> + \ :<C-U>setlocal equalprg=autopep8\ -aaa\ --\ -<CR> nnoremap <buffer> <LocalLeader>i \ :<C-U>setlocal equalprg<<CR> let b:undo_ftplugin .= '|nunmap <buffer> <LocalLeader>t' diff --git a/vim/after/plugin/dist.vim b/vim/after/plugin/dist.vim index 98574de8..c53ebd2c 100644 --- a/vim/after/plugin/dist.vim +++ b/vim/after/plugin/dist.vim @@ -7,3 +7,4 @@ unlet loaded_rrhelper unlet loaded_spellfile_plugin unlet loaded_tarPlugin unlet loaded_zipPlugin +unlet loaded_manpager_plugin diff --git a/vim/bundle/copy_linebreak b/vim/bundle/copy_linebreak -Subproject 6692eef760ccfc2e1b888d1d604e3e1a156fcbc +Subproject a0004c18da5f524f62e2da6e19be1a51ce282f3 diff --git a/vim/bundle/spellfile_local b/vim/bundle/spellfile_local -Subproject 0958f0f8d9754b2e7571b6a50f4db434b719564 +Subproject 6199ee785c6fb964292ec6e82c5b8a0f79e2606 diff --git a/vim/bundle/strip_trailing_whitespace b/vim/bundle/strip_trailing_whitespace -Subproject 90e60095bcfcfeb60bea60ba7f51bbfac3bf469 +Subproject 03782cdaf9db6329665316e1dc2d1b8270714a3 diff --git a/vim/filetype.vim b/vim/filetype.vim index c616babd..eea7f1f5 100644 --- a/vim/filetype.vim +++ b/vim/filetype.vim @@ -73,6 +73,7 @@ augroup filetypedetect \ sources.list \,*/etc/apt/sources.list.d/*.list \ setfiletype debsources + " Desktop files autocmd BufNewFile,BufRead \ ?*.desktop \,?*.directory @@ -94,6 +95,10 @@ augroup filetypedetect autocmd BufNewFile,BufRead \ ?*.dot \ setfiletype dot + " NFS exports + autocmd BufNewFile,BufRead + \ exports + \ setfiletype exports " Forth autocmd BufNewFile,BufRead \ ?*.fs,?*.ft @@ -363,6 +368,10 @@ augroup filetypedetect autocmd BufNewFile,BufRead \ ?*.rb \ setfiletype ruby + " Rust + autocmd BufNewFile,BufRead + \ ?*.rs + \ setfiletype rust " Samba config autocmd BufNewFile,BufRead \ smb.conf @@ -472,10 +481,6 @@ augroup filetypedetect autocmd BufNewFile,BufRead \ ?*.ti \ setfiletype terminfo - " TextEditorAnywhere text field - autocmd BufNewFile,BufRead - \ TextEditorAnywhere_??_??_??.txt - \ setfiletype textarea " Tidy config autocmd BufNewFile,BufRead \ .tidyrc @@ -518,9 +523,7 @@ augroup filetypedetect " Add automatic commands to find .Xresources subfiles autocmd BufNewFile,BufRead \ .Xresources - \,*/.Xresources.d/* \,Xresources - \,*/Xresources.d/* \ setfiletype xdefaults " XHTML files autocmd BufNewFile,BufRead diff --git a/vim/ftplugin/textarea.vim b/vim/ftplugin/textarea.vim deleted file mode 100644 index 4db97b58..00000000 --- a/vim/ftplugin/textarea.vim +++ /dev/null @@ -1,12 +0,0 @@ -" Set mail message as an alternative filetype -if !exists('b:alternate_filetypes') - let b:alternate_filetypes = [&filetype, 'mail'] -endif - -" Stop here if the user doesn't want ftplugin mappings -if exists('no_plugin_maps') || exists('no_textarea_maps') - finish -endif - -" #s expands to the #signature tag used in Cerb -inoreabbrev #s #signature diff --git a/vim/plugin/dist.vim b/vim/plugin/dist.vim index 3a84abaa..94974f5f 100644 --- a/vim/plugin/dist.vim +++ b/vim/plugin/dist.vim @@ -14,3 +14,5 @@ let loaded_netrwPlugin = 1 let loaded_rrhelper = 1 " I don't need extra spelling files let loaded_spellfile_plugin = 1 +" No thanks, just plain `less` is fine for manual pages +let loaded_manpager_plugin = 1 @@ -2,7 +2,7 @@ " Tom Ryder (tejr)'s Literate Vimrc " ----------------------------------- " -" Last updated: Fri, 06 May 2022 12:23:48 +0000 +" Last updated: Sun, 14 Jan 2024 03:06:40 +0000 " " > And I was lifted up in heart, and thought " > Of all my late-shown prowess in the lists, @@ -556,6 +556,14 @@ if exists('+breakindent') set breakindent endif +" I use `cd` with no argument to go $HOME in the shell all the time. +" Analogous behavior for Vim with :cd makes sense to me. I can use :pwd (or +" my <Leader>g mapping) if I want to see where I am. +" +if exists('+cdhome') + set cdhome +endif + " Rather than rejecting operations like :write or :saveas when 'readonly' is " set or in other situations in which data might be lost, Vim should give me " a prompt to allow me to confirm that I know what I'm doing. @@ -798,6 +806,15 @@ set noshowcmd " set shortmess+=I +" Scrolling by screen line rather than file line makes sense to me. Turn the +" option to do so on, if it's there. This only works with mouse scrolling, +" which I don't use, and with CTRL-E, CTRL-Y, which I should be using more +" anyway. +" +if exists('+smoothscroll') + set smoothscroll +endif + " I find the defaults of new windows opening above or to the left of the " previous window too jarring, because I'm used to both the i3 window manager " and the tmux terminal multiplexer doing it the other way around, in reading @@ -812,17 +829,6 @@ set splitbelow splitright " set notitle -" Vim has an internal list of terminal types that support using smoother -" terminal redrawing, and for which 'ttyfast' is normally set, described in -" `:help 'ttyfast'`. That list includes most of the terminals I use, but -" there are a couple more for which the 'ttyfast' option should apply: the -" windows terminal emulator PuTTY, and the terminal multiplexer tmux, both of -" which I use heavily. -" -if &term =~# '^putty\|^tmux' - set ttyfast -endif - " We really don't want a mouse; while I use it a lot for cut and paste in X, " it just gets in the way if the tool running in the terminal tries to use it " too. Mouse events should be exclusively handled by the terminal emulator @@ -1027,9 +1033,9 @@ endif " many of these. " -" Use backspace as an even quicker way to switch to the current buffer's -" alternate buffer. User nickspoons of #vim was incredulous that I had never -" used CTRL-^ and indeed did not know about it. I have since repented. +" I use Mosh (the mobile shell) a lot, which uses CTRL-^ as its escape key. +" That shadows Vim's shortcut to switch to the alternate buffer. Map +" <Backspace> to do that instead. " nnoremap <Backspace> \ <C-^> @@ -1251,13 +1257,6 @@ noremap <Leader>w ounmap <Leader>w sunmap <Leader>w -" This next one just shows option state of the 'formatoptions' affecting how -" text is automatically formatted; it doesn't change its value. - -"" Leader,f shows the current 'formatoptions' at a glance -nnoremap <Leader>f - \ :<C-U>set formatoptions?<CR> - " I often have to switch between US English and NZ English. The latter is " almost exactly the same as UK English in most locales, although we use " dollars rather than pounds. This is mostly so I remember things like @@ -1269,6 +1268,17 @@ nnoremap <Leader>z nnoremap <Leader>u \ :<C-U>set spelllang=en_us<CR> +" I've also been trying to learn French lately (2023-04-03), and having +" a spelling check there is handy for doing my homework. +" +" This mapping used to show the state of 'formatoptions', but I haven't been +" using that nearly as often lately. +" +" <https://sanctum.geek.nz/images/ze-cultured-frenchman.png> +" +nnoremap <Leader>f + \ :<C-U>set spelllang=fr<CR> + " The next mapping is also for toggling an option, but it's more complicated; " it uses a simple plugin of mine called copy_linebreak.vim to manage several " options at once, related to the 'wrap' option that soft-wraps text. diff --git a/vim/vimrc.stub b/vim/vimrc.stub index 23a90608..2acd2d10 100644 --- a/vim/vimrc.stub +++ b/vim/vimrc.stub @@ -1,10 +1,9 @@ " We have a big, important decision to make here. " " Check that we're not running in 'compatible' mode, nor that the environment -" calls for the same, that we're running Vim v7.0.0 or newer, and that we -" haven't been invoked as just plain `vi`. If it's all clear, we can load the -" main vimrc file from ~/.vim/vimrc to use Vim in all of its incompatible -" glory, and then stop sourcing the rest of this file. +" calls for the same, and that we're running Vim v7.0.0 or newer. If it's all +" clear, we can load the main vimrc file from ~/.vim/vimrc to use Vim in all +" of its incompatible glory, and then stop sourcing the rest of this file. " if !&compatible && !exists('$POSIXLY_CORRECT') if v:version >= 700 @@ -14,13 +13,13 @@ if !&compatible && !exists('$POSIXLY_CORRECT') endif " If we got this far, it means we're running a tiny, 'compatible', and/or -" ancient version of Vim. -" -" So, strip out the user runtime directories from 'runtimepath', force -" 'compatible' on, source your trusty '~/.exrc', put on your dubbed cassette -" copy of Kraftwerk's 'Computerwelt', and start using vi v3.7 on your -" engineering department's Sun OS 4.x server via your VT220 terminal. It's -" July 1985, you write K&R C, and it's good for you, like raisin bran. +" ancient version of Vim. So: strip out the user runtime dirs from +" 'runtimepath', force 'compatible' on, :source your trusty ~/.exrc, put on +" your dubbed cassette copy of Kraftwerk's 'Computerwelt', and start using vi +" v3.7 on your engineering department's SunOS 2.0 server via your shiny new +" VT220 terminal. It's December 1985, and you're going home soon for the +" holidays. You're writing K&R C tonight. It's good for you, like raisin +" bran. " set runtimepath-=~/.vim set runtimepath-=~/.vim/after diff --git a/x/Xresources b/x/Xresources index 3f586a87..829b208e 100644 --- a/x/Xresources +++ b/x/Xresources @@ -1,2 +1,106 @@ -#include ".Xresources.d/URxvt" -#include ".Xresources.d/XTerm" +/* Declare our xterms have 256 colors */ +XTerm.termName: xterm-256color + +/** + * Just use "xterm" as the title, no need to complicate it with the name of the + * actual binary called. + */ +XTerm.title: xterm + +/** + * Don't pass mouse events to applications, even if they ask for it; mouse + * interaction with command-line tools isn't normally very well-written anyway. + * Better just to treat it as text. + */ +XTerm.vt100.allowMouseOps: false + +/** + * Don't let applications set the window title; it's usually more confusing + * than helpful, with things like command wrappers getting in the way. + */ +XTerm.vt100.allowTitleOps: false + +/* Don't munge characters' 8th bit with Alt, send Escape prefix instead */ +XTerm.vt100.altIsNotMeta: true +XTerm.vt100.altSendsEscape: true + +/* Flash my window manager if a BEL is sounded in an xterm */ +XTerm.vt100.bellIsUrgent: true + +/** + * Stick all of the non-control ASCII characters into the same xterm selection + * group as the alphanumeric ones added by default, except for space and the + * left and right angle brackets (less-than and greater-than), because being + * able to click URLs quickly outweighs anything else. + */ +XTerm.vt100.charClass: \ + 33-59:48, \ + 60:60, \ + 61:48, \ + 62:60, \ + 63-126:48 + +/** + * Set some less harsh colors than the xterm defaults; I think I got these from + * somewhere else and tweaked them, but I can't remember where it was now. + */ +XTerm.vt100.background: rgb:03/03/03 +XTerm.vt100.foreground: rgb:e0/e0/e0 +XTerm.vt100.color0: rgb:03/03/03 +XTerm.vt100.color1: rgb:cc/00/00 +XTerm.vt100.color2: rgb:3e/aa/06 +XTerm.vt100.color3: rgb:c4/a0/00 +XTerm.vt100.color4: rgb:34/65/a4 +XTerm.vt100.color5: rgb:75/50/7b +XTerm.vt100.color6: rgb:06/98/9a +XTerm.vt100.color7: rgb:d3/d7/cf +XTerm.vt100.color8: rgb:30/30/30 +XTerm.vt100.color9: rgb:ef/29/29 +XTerm.vt100.color10: rgb:7a/f2/34 +XTerm.vt100.color11: rgb:fc/e9/4f +XTerm.vt100.color12: rgb:72/9f/cf +XTerm.vt100.color13: rgb:ad/7f/a8 +XTerm.vt100.color14: rgb:34/e2/e2 +XTerm.vt100.color15: rgb:ee/ee/ec + +/** + * Use Ubuntu Mono as a TrueType font if I decide to switch to it, but default + * to using the default bitmap font. + */ +XTerm.vt100.faceName: xft:Ubuntu Mono +XTerm.vt100.faceSize: 9 +XTerm.vt100.renderFont: defaultOff + +/** + * Draw our own box characters, even if the font seems to support them. Using + * Ubuntu Mono at least, this removes gaps between vertical lines. + */ +XTerm.vt100.forceBoxChars: true + +/** + * Put the terminal text contents flush against the edges of the window, + * otherwise things like tmux look awkward. + */ +XTerm.vt100.internalBorder: 0 + +/** + * Jump to the end of the buffer if I write to it, but don't if there's just + * something new to read. Funny how the defaults are the other way around... + */ +XTerm.vt100.scrollKey: true +XTerm.vt100.scrollTtyOutput: false + +/** + * Bind extra keys to copy/paste to/from CLIPBOARD rather than PRIMARY, as + * a simple selection does. + */ +XTerm.vt100.translations: #override \n\ + Ctrl Shift <Key>C: copy-selection(CLIPBOARD) \n\ + Ctrl Shift <Key>V: insert-selection(CLIPBOARD) + +/** + * Trim trailing spaces from selections; if I'm copying text from a terminal + * emulator window, I probably don't want it byte-perfect for hashing purposes + * or anything like that. + */ +XTerm.vt100.trimSelection: true diff --git a/x/Xresources.d/XTerm b/x/Xresources.d/XTerm deleted file mode 100644 index 706abd87..00000000 --- a/x/Xresources.d/XTerm +++ /dev/null @@ -1,24 +0,0 @@ -! XTerm -XTerm.termName: xterm-256color -XTerm.vt100.bellIsUrgent: true -XTerm.vt100.internalBorder: 0 -XTerm.vt100.eightBitInput: false -XTerm.vt100.metaSendsEscape: true -XTerm.vt100.background: #030303 -XTerm.vt100.foreground: #E0E0E0 -XTerm.vt100.color0: #030303 -XTerm.vt100.color1: #CC0000 -XTerm.vt100.color2: #3EAA06 -XTerm.vt100.color3: #C4A000 -XTerm.vt100.color4: #3465A4 -XTerm.vt100.color5: #75507B -XTerm.vt100.color6: #06989A -XTerm.vt100.color7: #D3D7CF -XTerm.vt100.color8: #303030 -XTerm.vt100.color9: #EF2929 -XTerm.vt100.color10: #7AF234 -XTerm.vt100.color11: #FCE94F -XTerm.vt100.color12: #729FCF -XTerm.vt100.color13: #AD7FA8 -XTerm.vt100.color14: #34E2E2 -XTerm.vt100.color15: #EEEEEC diff --git a/xfce/terminalrc b/xfce/terminalrc deleted file mode 100644 index a260309b..00000000 --- a/xfce/terminalrc +++ /dev/null @@ -1,40 +0,0 @@ -[Configuration] -BackgroundDarkness=0.950000 -BackgroundMode=TERMINAL_BACKGROUND_TRANSPARENT -ColorPalette=#000000;#cc0000;#4e9a06;#c4a000;#3465a4;#75507b;#06989a;#d3d7cf;#555753;#ef2929;#8ae234;#fce94f;#739fcf;#ad7fa8;#34e2e2;#eeeeec -FontName=Monospace 9 -MiscAlwaysShowTabs=FALSE -MiscBell=FALSE -MiscBellUrgent=FALSE -MiscBordersDefault=TRUE -MiscConfirmClose=FALSE -MiscCopyOnSelect=TRUE -MiscCursorBlinks=FALSE -MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK -MiscCycleTabs=TRUE -MiscDefaultGeometry=80x24 -MiscHighlightUrls=TRUE -MiscInheritGeometry=FALSE -MiscMenubarDefault=TRUE -MiscMiddleClickOpensUri=FALSE -MiscMouseAutohide=TRUE -MiscMouseWheelZoom=TRUE -MiscNewTabAdjacent=FALSE -MiscRewrapOnResize=TRUE -MiscRightClickAction=TERMINAL_RIGHT_CLICK_ACTION_CONTEXT_MENU -MiscSearchDialogOpacity=100 -MiscShowRelaunchDialog=TRUE -MiscShowUnsafePasteDialog=FALSE -MiscSlimTabs=FALSE -MiscTabCloseButtons=TRUE -MiscTabCloseMiddleClick=TRUE -MiscTabPosition=GTK_POS_TOP -MiscToolbarDefault=FALSE -MiscUseShiftArrowsToScroll=FALSE -ScrollingBar=TERMINAL_SCROLLBAR_NONE -ScrollingOnKeystroke=FALSE -ShortcutsNoHelpkey=TRUE -ShortcutsNoMenukey=TRUE -ShortcutsNoMnemonics=TRUE -TextBlinkMode=TERMINAL_TEXT_BLINK_MODE_FOCUSED -TitleMode=TERMINAL_TITLE_HIDE diff --git a/yt-dlp/config b/yt-dlp/config deleted file mode 100644 index ae2162f5..00000000 --- a/yt-dlp/config +++ /dev/null @@ -1,5 +0,0 @@ -# Get WebM if we can, but keep going if not ---format 'bestvideo[ext=webm]+bestaudio[ext=webm]/best' - -# Save into the ~/download directory ---output ~/download/%(title)s-%(id)s.%(ext)s |