aboutsummaryrefslogtreecommitdiff
path: root/stow
diff options
context:
space:
mode:
authorMatt Singleton <matt@xcolour.net>2024-04-11 16:21:15 -0500
committerMatt Singleton <matt@xcolour.net>2024-04-11 16:21:15 -0500
commitf2dfde23f8157da1532a2b2e236af529fed47713 (patch)
treed5eabb0eb33d100304ee16596b2a43dfb4a68d1c /stow
parent7f67d28e18760154778f20da43772838c36734ed (diff)
replace janky deploy script with stow and make
re-orgs all the console oriented dotfiles to be stowable makefile to deploy everything move from vimplug to native vim packages cleanup script for blowing away old symlinks
Diffstat (limited to 'stow')
-rwxr-xr-xstow/console-utils/.local/bin/color_test32
-rwxr-xr-xstow/console-utils/.local/bin/utf8_demo216
-rw-r--r--stow/dircolors/.config/dircolors.conf93
-rwxr-xr-xstow/duplicity/.local/bin/backup27
-rw-r--r--stow/duplicity/.local/share/systemd/user/backup.service7
-rw-r--r--stow/duplicity/.local/share/systemd/user/backup.timer9
-rw-r--r--stow/git/.config/git/config49
-rw-r--r--stow/git/.config/git/ignore11
-rw-r--r--stow/vim/.vim/autoload/airline/themes/tempus.vim35
m---------stow/vim/.vim/pack/my-plugins/start/ale0
m---------stow/vim/.vim/pack/my-plugins/start/bufexplorer.zip0
m---------stow/vim/.vim/pack/my-plugins/start/ctrlp.vim0
m---------stow/vim/.vim/pack/my-plugins/start/tempus-themes-vim0
m---------stow/vim/.vim/pack/my-plugins/start/vim-airline0
m---------stow/vim/.vim/pack/my-plugins/start/vim-dirvish0
m---------stow/vim/.vim/pack/my-plugins/start/vim-eunuch0
m---------stow/vim/.vim/pack/my-plugins/start/vim-gitgutter0
m---------stow/vim/.vim/pack/my-plugins/start/vim-sensible0
-rw-r--r--stow/vim/.vimrc115
-rw-r--r--stow/zsh/.config/zsh/.zprofile4
-rw-r--r--stow/zsh/.config/zsh/.zshrc4
-rw-r--r--stow/zsh/.config/zsh/20-appearance.zsh79
-rw-r--r--stow/zsh/.config/zsh/30-behavior.zsh54
-rw-r--r--stow/zsh/.config/zsh/40-key-bindings.zsh6
-rw-r--r--stow/zsh/.config/zsh/50-completion.zsh27
-rw-r--r--stow/zsh/.config/zsh/60-graphical-session.zsh8
-rw-r--r--stow/zsh/.config/zsh/99-function-overrides.zsh8
-rw-r--r--stow/zsh/.zshenv1
28 files changed, 785 insertions, 0 deletions
diff --git a/stow/console-utils/.local/bin/color_test b/stow/console-utils/.local/bin/color_test
new file mode 100755
index 0000000..b764252
--- /dev/null
+++ b/stow/console-utils/.local/bin/color_test
@@ -0,0 +1,32 @@
+#!/bin/bash
+#
+# Based on Daniel Crisman's ANSI color chart script from
+# The Bash Prompt HOWTO: 6.1. Colours
+# http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html
+#
+# This function echoes a bunch of color codes to the
+# terminal to demonstrate what's available. Each
+# line is the color code of one forground color,
+# out of 17 (default + 16 escapes), followed by a
+# test use of that color on all nine background
+# colors (default + 8 escapes).
+
+set -euo pipefail
+
+T='gYw' # The test text
+
+echo -e "\n def 40m 41m 42m 43m 44m 45m 46m 47m";
+
+for FGs in ' m' ' 1m' ' 30m' '1;30m' ' 31m' '1;31m' ' 32m' \
+ '1;32m' ' 33m' '1;33m' ' 34m' '1;34m' ' 35m' '1;35m' \
+ ' 36m' '1;36m' ' 37m' '1;37m';
+
+ do FG=${FGs// /}
+ echo -en " $FGs \033[$FG $T "
+
+ for BG in 40m 41m 42m 43m 44m 45m 46m 47m;
+ do echo -en "\033[$FG\033[$BG $T \033[0m";
+ done
+ echo;
+done
+echo
diff --git a/stow/console-utils/.local/bin/utf8_demo b/stow/console-utils/.local/bin/utf8_demo
new file mode 100755
index 0000000..8dce357
--- /dev/null
+++ b/stow/console-utils/.local/bin/utf8_demo
@@ -0,0 +1,216 @@
+#!/bin/bash
+# shellcheck disable=SC1111
+# Based on original text file by Markus Kuhn.
+# Retrieved from: https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt
+
+echo "UTF-8 encoded sample plain-text file
+‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾
+
+Markus Kuhn [ˈmaʳkʊs kuːn] <http://www.cl.cam.ac.uk/~mgk25/> — 2002-07-25 CC BY
+
+
+The ASCII compatible UTF-8 encoding used in this plain-text file
+is defined in Unicode, ISO 10646-1, and RFC 2279.
+
+
+Using Unicode/UTF-8, you can write in emails and source code things such as
+
+Mathematics and sciences:
+
+ ∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫
+ ⎪⎢⎜│a²+b³ ⎟⎥⎪
+ ∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪
+ ⎪⎢⎜⎷ c₈ ⎟⎥⎪
+ ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬
+ ⎪⎢⎜ ∞ ⎟⎥⎪
+ ⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪
+ ⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪
+ 2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭
+
+Linguistics and dictionaries:
+
+ ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn
+ Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ]
+
+APL:
+
+ ((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈
+
+Nicer typography in plain text files:
+
+ ╔══════════════════════════════════════════╗
+ ║ ║
+ ║ • ‘single’ and “double” quotes ║
+ ║ ║
+ ║ • Curly apostrophes: “We’ve been here” ║
+ ║ ║
+ ║ • Latin-1 apostrophe and accents: '´\` ║
+ ║ ║
+ ║ • ‚deutsche‘ „Anführungszeichen“ ║
+ ║ ║
+ ║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║
+ ║ ║
+ ║ • ASCII safety test: 1lI|, 0OD, 8B ║
+ ║ ╭─────────╮ ║
+ ║ • the euro symbol: │ 14.95 € │ ║
+ ║ ╰─────────╯ ║
+ ╚══════════════════════════════════════════╝
+
+Combining characters:
+
+ STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑
+
+Greek (in Polytonic):
+
+ The Greek anthem:
+
+ Σὲ γνωρίζω ἀπὸ τὴν κόψη
+ τοῦ σπαθιοῦ τὴν τρομερή,
+ σὲ γνωρίζω ἀπὸ τὴν ὄψη
+ ποὺ μὲ βία μετράει τὴ γῆ.
+
+ ᾿Απ᾿ τὰ κόκκαλα βγαλμένη
+ τῶν ῾Ελλήνων τὰ ἱερά
+ καὶ σὰν πρῶτα ἀνδρειωμένη
+ χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά!
+
+ From a speech of Demosthenes in the 4th century BC:
+
+ Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι,
+ ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς
+ λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ
+ τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿
+ εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ
+ πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν
+ οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι,
+ οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν
+ ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον
+ τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι
+ γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν
+ προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους
+ σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ
+ τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ
+ τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς
+ τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον.
+
+ Δημοσθένους, Γ´ ᾿Ολυνθιακὸς
+
+Georgian:
+
+ From a Unicode conference invitation:
+
+ გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო
+ კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს,
+ ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს
+ ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი,
+ ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება
+ ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში,
+ ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში.
+
+Russian:
+
+ From a Unicode conference invitation:
+
+ Зарегистрируйтесь сейчас на Десятую Международную Конференцию по
+ Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии.
+ Конференция соберет широкий круг экспертов по вопросам глобального
+ Интернета и Unicode, локализации и интернационализации, воплощению и
+ применению Unicode в различных операционных системах и программных
+ приложениях, шрифтах, верстке и многоязычных компьютерных системах.
+
+Thai (UCS Level 2):
+
+ Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese
+ classic 'San Gua'):
+
+ [----------------------------|------------------------]
+ ๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่
+ สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา
+ ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา
+ โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ
+ เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ
+ ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ
+ พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้
+ ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ
+
+ (The above is a two-column text. If combining characters are handled
+ correctly, the lines of the second column should be aligned with the
+ | character above.)
+
+Ethiopian:
+
+ Proverbs in the Amharic language:
+
+ ሰማይ አይታረስ ንጉሥ አይከሰስ።
+ ብላ ካለኝ እንደአባቴ በቆመጠኝ።
+ ጌጥ ያለቤቱ ቁምጥና ነው።
+ ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው።
+ የአፍ ወለምታ በቅቤ አይታሽም።
+ አይጥ በበላ ዳዋ ተመታ።
+ ሲተረጉሙ ይደረግሙ።
+ ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል።
+ ድር ቢያብር አንበሳ ያስር።
+ ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም።
+ እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም።
+ የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ።
+ ሥራ ከመፍታት ልጄን ላፋታት።
+ ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል።
+ የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ።
+ ተንጋሎ ቢተፉ ተመልሶ ባፉ።
+ ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው።
+ እግርህን በፍራሽህ ልክ ዘርጋ።
+
+Runes:
+
+ ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ
+
+ (Old English, which transcribed into Latin reads 'He cwaeth that he
+ bude thaem lande northweardum with tha Westsae.' and means 'He said
+ that he lived in the northern land near the Western Sea.')
+
+Braille:
+
+ ⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌
+
+ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞
+ ⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎
+ ⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂
+ ⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙
+ ⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑
+ ⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲
+
+ ⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲
+
+ ⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹
+ ⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞
+ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕
+ ⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹
+ ⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎
+ ⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎
+ ⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳
+ ⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞
+ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲
+
+ (The first couple of paragraphs of \"A Christmas Carol\" by Dickens)
+
+Compact font selection example text:
+
+ ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789
+ abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ
+ –—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд
+ ∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა
+
+Greetings in various languages:
+
+ Hello world, Καλημέρα κόσμε, コンニチハ
+
+Box drawing alignment tests: █
+ ▉
+ ╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳
+ ║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳
+ ║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳
+ ╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳
+ ║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎
+ ║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏
+ ╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█
+ ▝▀▘▙▄▟"
diff --git a/stow/dircolors/.config/dircolors.conf b/stow/dircolors/.config/dircolors.conf
new file mode 100644
index 0000000..f6decec
--- /dev/null
+++ b/stow/dircolors/.config/dircolors.conf
@@ -0,0 +1,93 @@
+# Copyright (C) 1996, 1999-2010 Free Software Foundation, Inc.
+# Copying and distribution of this file, with or without modification,
+# are permitted provided the copyright notice and this notice are preserved.
+
+#
+# Colorizable terminals
+
+TERM Eterm
+TERM ansi
+TERM color-xterm
+TERM con132x25
+TERM con132x30
+TERM con132x43
+TERM con132x60
+TERM con80x25
+TERM con80x28
+TERM con80x30
+TERM con80x43
+TERM con80x50
+TERM con80x60
+TERM cons25
+TERM console
+TERM cygwin
+TERM dtterm
+TERM eterm-color
+TERM foot-extra
+TERM gnome
+TERM gnome-256color
+TERM jfbterm
+TERM konsole
+TERM kterm
+TERM linux
+TERM linux-c
+TERM mach-color
+TERM mlterm
+TERM putty
+TERM rxvt
+TERM rxvt-256color
+TERM rxvt-cygwin
+TERM rxvt-cygwin-native
+TERM rxvt-unicode
+TERM rxvt-unicode-256color
+TERM rxvt-unicode256
+TERM screen
+TERM screen-256color
+TERM screen-256color-bce
+TERM screen-bce
+TERM screen-w
+TERM screen.rxvt
+TERM screen.linux
+TERM terminator
+TERM vt100
+TERM xterm
+TERM xterm-16color
+TERM xterm-256color
+TERM xterm-88color
+TERM xterm-color
+TERM xterm-debian
+TERM foot
+
+#
+# Generic types
+
+# Attribute codes:
+# 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed
+#
+# Text color codes:
+# 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white
+#
+# Background color codes:
+# 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
+
+RESET 0 # reset to "normal" color
+DIR 34 # directory
+LINK 36 # symbolic link
+FIFO 47;33 # pipe
+SOCK 35 # socket
+DOOR 35 # door
+BLK 47;33 # block device driver
+CHR 47;33 # character device driver
+ORPHAN 47;31 # symlink to nonexistent file, or non-stat'able file
+SETUID 37;41 # file that is setuid (u+s)
+SETGID 37;43 # file that is setgid (g+s)
+CAPABILITY 30;41 # file with capability
+STICKY_OTHER_WRITABLE 37;42 # dir that is sticky and other-writable (+t,o+w)
+OTHER_WRITABLE 37;42 # dir that is other-writable (o+w) and not sticky
+STICKY 37;44 # dir with the sticky bit set (+t) and not other-writable
+EXEC 32 # executable files
+
+#
+# Extension-based
+
+#.tar.gz 01;31
diff --git a/stow/duplicity/.local/bin/backup b/stow/duplicity/.local/bin/backup
new file mode 100755
index 0000000..6324c05
--- /dev/null
+++ b/stow/duplicity/.local/bin/backup
@@ -0,0 +1,27 @@
+#!/bin/bash
+
+set -euo pipefail
+
+set -o allexport
+# shellcheck source=../../.config/duplicity/config
+source ~/.config/duplicity/config
+set +o allexport
+
+source_directory=~
+excludes=~/.config/duplicity/excludes
+target_url=b2://"$B2_KEY_ID"@"$B2_BUCKET"
+
+# take a new full backup every month, incremental otherwise
+duplicity backup --full-if-older-than 1M --exclude-filelist "$excludes" "$source_directory" "$target_url"
+
+# keep 12 months of full backups
+duplicity remove-all-but-n-full 12 --force "$target_url"
+
+# keep 3 months of incremental backups
+duplicity remove-all-inc-of-but-n-full 3 --force "$target_url"
+
+# cleanup
+duplicity cleanup --force "$target_url"
+
+# show collection status
+duplicity collection-status "$target_url"
diff --git a/stow/duplicity/.local/share/systemd/user/backup.service b/stow/duplicity/.local/share/systemd/user/backup.service
new file mode 100644
index 0000000..c1adfde
--- /dev/null
+++ b/stow/duplicity/.local/share/systemd/user/backup.service
@@ -0,0 +1,7 @@
+[Unit]
+Description=Backup with duplicity
+After=network.target
+
+[Service]
+Type=oneshot
+ExecStart=bash ${HOME}/.local/bin/backup
diff --git a/stow/duplicity/.local/share/systemd/user/backup.timer b/stow/duplicity/.local/share/systemd/user/backup.timer
new file mode 100644
index 0000000..b7815d6
--- /dev/null
+++ b/stow/duplicity/.local/share/systemd/user/backup.timer
@@ -0,0 +1,9 @@
+[Unit]
+Description=Run backup every four hours
+
+[Timer]
+OnCalendar=*-*-* 0/4:15
+Persistent=true
+
+[Install]
+WantedBy=timers.target
diff --git a/stow/git/.config/git/config b/stow/git/.config/git/config
new file mode 100644
index 0000000..71bf668
--- /dev/null
+++ b/stow/git/.config/git/config
@@ -0,0 +1,49 @@
+[user]
+ name = Matt Singleton
+ email = matt@xcolour.net
+
+[alias]
+ st = status
+ ci = commit
+ br = branch
+ co = checkout
+ df = diff
+ lg = log -p
+
+[core]
+ whitespace = trailing-space,space-before-tab,cr-at-eol
+ editor = vim
+ autocrlf = input
+ excludesfile = ~/.config/git/ignore
+ pager = less -+$LESS -RSX
+
+[push]
+ default = nothing
+
+[color]
+ ui = true
+
+[mergetool]
+ keepTemporaries = false
+ prompt = false
+
+[mergetool "vimdiff"]
+ layout = "LOCAL,BASE,REMOTE / MERGED + BASE,LOCAL + BASE,REMOTE"
+
+[merge]
+ tool = vimdiff
+ conflictstyle = zdiff3
+
+[diff]
+ tool = vimdiff
+ colorMoved = default
+ algorithm = histogram
+
+[init]
+ defaultBranch = main
+
+[pull]
+ ff = only
+
+[include]
+ path = config-local
diff --git a/stow/git/.config/git/ignore b/stow/git/.config/git/ignore
new file mode 100644
index 0000000..57dd8e6
--- /dev/null
+++ b/stow/git/.config/git/ignore
@@ -0,0 +1,11 @@
+*.class
+*.pyc
+*.swo
+*.swp
+.svn
+.swo
+*#*
+#
+.#*
+doc/tags
+.DS_STORE
diff --git a/stow/vim/.vim/autoload/airline/themes/tempus.vim b/stow/vim/.vim/autoload/airline/themes/tempus.vim
new file mode 100644
index 0000000..e24f167
--- /dev/null
+++ b/stow/vim/.vim/autoload/airline/themes/tempus.vim
@@ -0,0 +1,35 @@
+" Color sets:
+" guigfg guibg ctermfg ctermbg
+let s:dark = [ '#eff0f2' , '#676364' , 15 , 8 ]
+let s:light = [ '#676364' , '#dee2e0' , 0 , 7 ]
+let s:blue = [ '#eff0f2' , '#4b529a' , 15 , 12 ]
+let s:yellow = [ '#eff0f2' , '#8b590a' , 15 , 11 ]
+let s:red = [ '#eff0f2' , '#a64822' , 15 , 9 ]
+let s:green = [ '#eff0f2' , '#187408' , 15 , 10 ]
+
+let g:airline#themes#tempus#palette = {}
+
+let g:airline#themes#tempus#palette.accents = {
+ \ 'red': [ '#a64822' , '' , 9 , '' ],
+ \ }
+
+" Normal Mode:
+let g:airline#themes#tempus#palette.normal = airline#themes#generate_color_map(s:blue, s:dark, s:light)
+
+" Insert Mode:
+let g:airline#themes#tempus#palette.insert = copy(g:airline#themes#tempus#palette.normal)
+let g:airline#themes#tempus#palette.insert.airline_a = s:yellow
+let g:airline#themes#tempus#palette.insert.airline_z = s:yellow
+
+" Replace Mode:
+let g:airline#themes#tempus#palette.replace = copy(g:airline#themes#tempus#palette.normal)
+let g:airline#themes#tempus#palette.replace.airline_a = s:red
+let g:airline#themes#tempus#palette.replace.airline_z = s:red
+
+" Visual Mode:
+let g:airline#themes#tempus#palette.visual = copy(g:airline#themes#tempus#palette.normal)
+let g:airline#themes#tempus#palette.visual.airline_a = s:green
+let g:airline#themes#tempus#palette.visual.airline_z = s:green
+
+" Inactive:
+let g:airline#themes#tempus#palette.inactive = airline#themes#generate_color_map(s:light, s:light, s:light)
diff --git a/stow/vim/.vim/pack/my-plugins/start/ale b/stow/vim/.vim/pack/my-plugins/start/ale
new file mode 160000
+Subproject 6db58b33795430a6165f27c7f796c420c0e098e
diff --git a/stow/vim/.vim/pack/my-plugins/start/bufexplorer.zip b/stow/vim/.vim/pack/my-plugins/start/bufexplorer.zip
new file mode 160000
+Subproject 08b0100f5242e1de07bce40dc6376a4996791c3
diff --git a/stow/vim/.vim/pack/my-plugins/start/ctrlp.vim b/stow/vim/.vim/pack/my-plugins/start/ctrlp.vim
new file mode 160000
+Subproject 7c972cb19c8544c681ca345c64ec39e04f4651c
diff --git a/stow/vim/.vim/pack/my-plugins/start/tempus-themes-vim b/stow/vim/.vim/pack/my-plugins/start/tempus-themes-vim
new file mode 160000
+Subproject b720ee2d4c5588b5a27bb3544d3ded5ee1acab4
diff --git a/stow/vim/.vim/pack/my-plugins/start/vim-airline b/stow/vim/.vim/pack/my-plugins/start/vim-airline
new file mode 160000
+Subproject d9f42cb46710e31962a9609939ddfeb0685dd77
diff --git a/stow/vim/.vim/pack/my-plugins/start/vim-dirvish b/stow/vim/.vim/pack/my-plugins/start/vim-dirvish
new file mode 160000
+Subproject 3851bedb7f191b9a4a5531000b6fc0a8795cc9b
diff --git a/stow/vim/.vim/pack/my-plugins/start/vim-eunuch b/stow/vim/.vim/pack/my-plugins/start/vim-eunuch
new file mode 160000
+Subproject 8fb3904be27b6b60d086f87c257008590241406
diff --git a/stow/vim/.vim/pack/my-plugins/start/vim-gitgutter b/stow/vim/.vim/pack/my-plugins/start/vim-gitgutter
new file mode 160000
+Subproject 67ef116100b40f9ca128196504a2e0bc0a2753b
diff --git a/stow/vim/.vim/pack/my-plugins/start/vim-sensible b/stow/vim/.vim/pack/my-plugins/start/vim-sensible
new file mode 160000
+Subproject 3e878abfd6ddc6fb5dba48b41f2b72c3a2f8249
diff --git a/stow/vim/.vimrc b/stow/vim/.vimrc
new file mode 100644
index 0000000..483adc6
--- /dev/null
+++ b/stow/vim/.vimrc
@@ -0,0 +1,115 @@
+"
+" behavior
+"
+
+set nocompatible " use vim, not vi settings
+set wildignore=*.pyc,.git " ignore from autocomplete
+set showcmd " display incomplete commands
+set ignorecase " ignore case in search
+set smartcase " respect case in search if uppercase is used
+set nowrap " do not wrap lines
+set vb t_vb= " no beeping
+
+"
+" formatting
+"
+
+set tabstop=2
+set softtabstop=2
+set shiftwidth=2
+set expandtab
+set shiftround
+set listchars=tab:»·,trail:·
+set list
+
+"
+" filetype-specific
+"
+
+if has("autocmd")
+ au!
+
+ " plain text
+ au FileType text setlocal tw=80
+ au FileType markdown setlocal tw=80
+
+ " python
+ au FileType python setlocal ts=4 sw=4 sts=4
+
+ " makefiles
+ au FileType make setlocal nolist
+
+ " When editing a file, always jump to the last known cursor position.
+ " Don't do it when the position is invalid or when inside an event handler
+ au BufReadPost *
+ \ if line("'\"") > 0 && line("'\"") <= line("$") |
+ \ exe "normal g`\"" |
+ \ endif
+endif
+
+"
+" bindings
+"
+
+let mapleader = ","
+
+" convenience
+nnoremap <leader>x :source ~/.vimrc<Enter>
+nnoremap <leader><leader> <c-^>
+nnoremap <c-j> <c-w>j
+nnoremap <c-k> <c-w>k
+nnoremap <c-h> <c-w>h
+nnoremap <c-l> <c-w>l
+
+" dirvish
+nnoremap <leader>e :Dirvish<Enter>
+
+" bufexplore
+nnoremap <leader>fe :BufExplorer<Enter>
+nnoremap <leader>fs :BufExplorerHorizontalSplit<Enter>
+nnoremap <leader>fv :BufExplorerVerticalSplit<Enter>
+
+" ctrlp
+let g:ctrlp_map ='<leader>a'
+
+" ale
+nnoremap <leader>r :ALEDetail<Enter>
+let g:ale_linters_ignore = {'python': ['mypy']} " mypy is too slow and doesn't support dmypy
+
+"
+" visual
+"
+
+set background=light
+silent! colo tempus_totus
+let g:airline_theme='tempus'
+set hlsearch
+syntax enable
+
+" don't mess up gutter highlight with gitgutter
+highlight clear SignColumn
+hi! link SignColumn Background
+
+" Highlight non-ascii characters as the theme highlights errors
+hi clear nonascii
+hi link nonascii Error
+if has("autocmd")
+ au BufReadPost * syntax match nonascii /[^\d0-\d127]/
+endif
+
+" highlight trailing space and tab as the theme highlights errors
+hi clear SpecialKey
+hi link SpecialKey Error
+
+let g:airline_powerline_fonts = 1
+let g:airline_left_sep=""
+let g:airline_right_sep = ""
+let g:airline_skip_empty_sections = 1
+
+"
+" local additions
+"
+
+if filereadable($HOME."/.vimrc-local")
+ source ~/.vimrc-local
+endif
diff --git a/stow/zsh/.config/zsh/.zprofile b/stow/zsh/.config/zsh/.zprofile
new file mode 100644
index 0000000..68b0ec4
--- /dev/null
+++ b/stow/zsh/.config/zsh/.zprofile
@@ -0,0 +1,4 @@
+if [ "$(uname)" = "Darwin" ]; then
+ # disable Apple Terminal's annoying session restore feature
+ SHELL_SESSIONS_DISABLE=1
+fi
diff --git a/stow/zsh/.config/zsh/.zshrc b/stow/zsh/.config/zsh/.zshrc
new file mode 100644
index 0000000..f33ca44
--- /dev/null
+++ b/stow/zsh/.config/zsh/.zshrc
@@ -0,0 +1,4 @@
+for f in $ZDOTDIR/*.zsh
+do
+ source "${f}"
+done
diff --git a/stow/zsh/.config/zsh/20-appearance.zsh b/stow/zsh/.config/zsh/20-appearance.zsh
new file mode 100644
index 0000000..fa3c3cc
--- /dev/null
+++ b/stow/zsh/.config/zsh/20-appearance.zsh
@@ -0,0 +1,79 @@
+#
+# colorize shell programs
+
+if ls -Z . &>/dev/null 2>&1; then
+ # gnu coreutils?
+ alias ls='ls --color=auto'
+ eval `dircolors ${XDG_CONFIG_HOME:-${HOME}/.config}/dircolors.conf`
+elif (( $+commands[gls] )); then
+ # prefixed gnu coreutils?
+ alias ls='gls --color=auto'
+ eval `gdircolors ${XDG_CONFIG_HOME:-${HOME}/.config}/dircolors.conf`
+else
+ # assume bsd ls
+ alias ls='ls -G'
+ export LSCOLORS="exgxbxdxcxegedxbxgxcxd"
+fi
+
+# grep
+alias grep='grep --color=auto'
+alias egrep='egrep --color=auto'
+alias fgrep='fgrep --color=auto'
+
+# less
+export LESS_TERMCAP_mb=$'\e[1;31m' # begin blinking - bold red
+export LESS_TERMCAP_md=$'\e[1;36m' # begin bold - bold cyan
+export LESS_TERMCAP_me=$'\e[0m' # end mode
+export LESS_TERMCAP_so=$'\e[33;47m' # begin standout mode - yellow on light gray ("white")
+export LESS_TERMCAP_se=$'\e[0m' # end standout mode
+export LESS_TERMCAP_us=$'\e[4;35m' # begin underline - magenta underline
+export LESS_TERMCAP_ue=$'\e[0m' # end underline
+export MANROFFOPT="-c"
+
+#
+# make a sweet prompt
+
+autoload colors; colors;
+setopt prompt_subst # expansion of color codes, etc. in the prompt
+
+# print the fully resolved shell command with time stamp
+# to be run from zsh's builtin 'preexec' with all arguments passed through ($*)
+function theme_preexec () {
+ echo "($fg[magenta]`date +%r`$reset_color) $fg[cyan]$3$reset_color"
+}
+
+# print the prompt char in red if the last command exited non-zero
+function prompt_char {
+ echo "%(?.$.%{$fg[red]%}$%{$reset_color%})"
+}
+
+function repo_prompt_info {
+ # git
+ ref=$(git symbolic-ref HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null)
+ if [ $? -eq 0 ]; then
+ #repo=$(basename $(git rev-parse --show-toplevel))
+ echo "%{$fg[cyan]%}${ref#refs/heads/}%{$reset_color%}"
+ return
+ fi
+}
+
+function workspace_prompt_info {
+ repo=$(repo_prompt_info)
+ if [ "$repo" ]; then
+ echo "[$repo] "
+ return
+ fi
+}
+
+# print the hostname in green if local, else red
+function hostname_info {
+ if [[ $ZSH_LOCAL_ENV == "true" ]]; then
+ echo "%{$fg[green]%}%{$ZSH_HOST_PREFIX%}%m%{$ZSH_HOST_SUFFIX%}%{$reset_color%}"
+ else
+ echo "%{$fg[red]%}%{$ZSH_HOST_PREFIX%}%m%{$ZSH_HOST_SUFFIX%}%{$reset_color%}"
+ fi
+}
+
+# a colorful multiline prompt using the above defined functions
+PROMPT=$'%{$fg[yellow]%}%n%{$reset_color%}@$(hostname_info):%{$fg[blue]%}%~%{$reset_color%}
+$(workspace_prompt_info)$(prompt_char)%{$reset_color%} '
diff --git a/stow/zsh/.config/zsh/30-behavior.zsh b/stow/zsh/.config/zsh/30-behavior.zsh
new file mode 100644
index 0000000..6b2b2c2
--- /dev/null
+++ b/stow/zsh/.config/zsh/30-behavior.zsh
@@ -0,0 +1,54 @@
+#
+# execution
+
+setopt rm_star_wait # wait 10 seconds before accepting 'rm *' confirmation
+export REPORTTIME=5 # report timing for any command longer than 5 seconds
+unsetopt flowcontrol # disable ^s from freezing the terminal
+
+#
+# history
+
+HISTFILE="${XDG_DATA_HOME:-${HOME}/.local/share}/zsh/history"
+HISTSIZE=10000
+SAVEHIST=10000
+
+setopt hist_ignore_all_dups # ignore dups including non-sequential ones
+setopt share_history # share command history data between sessions
+setopt hist_verify # load hist into command buffer rather than exec immediately
+
+#
+# term support
+
+# make sure $TERM is installed
+# if not, fall back on xterm-256color
+infocmp "$TERM" > /dev/null 2>&1 || export TERM=xterm-256color
+
+# set term title appropriately based on term type
+# user@host:current_dir (current_command)
+case "$TERM" in
+ xterm*|rxvt*|screen*|alacritty*|foot)
+ term_preexec () {
+ printf '\e]0;%s (%s)\a' ${(%):-'%n@%m:%~'} "$1"
+ }
+ term_precmd () {
+ printf '\e]0;%s\a' ${(%):-'%n@%m:%~'}
+ }
+ ;;
+esac
+
+#
+# draw a horizontal separator
+
+function hr {
+ printf "$bg[red]${(l:$COLUMNS:: :)}$reset_color\n"
+ printf "$bg[yellow]${(l:$COLUMNS:: :)}\n"
+ printf "$bg[green]${(l:$COLUMNS:: :)}\n"
+ printf "$bg[cyan]${(l:$COLUMNS:: :)}\n"
+ printf "$bg[blue]${(l:$COLUMNS:: :)}\n"
+ printf "$bg[magenta]${(l:$COLUMNS:: :)}$reset_color\n"
+}
+
+#
+# less
+
+export LESS=-i
diff --git a/stow/zsh/.config/zsh/40-key-bindings.zsh b/stow/zsh/.config/zsh/40-key-bindings.zsh
new file mode 100644
index 0000000..4deac62
--- /dev/null
+++ b/stow/zsh/.config/zsh/40-key-bindings.zsh
@@ -0,0 +1,6 @@
+bindkey -e # use emacs mode
+bindkey '^r' history-incremental-search-backward # ctrl-r
+bindkey '^[[Z' reverse-menu-complete # shift-tab
+
+bindkey '\e[3~' delete-char # make sure delete key works
+bindkey ' ' magic-space # also do history expansion on space
diff --git a/stow/zsh/.config/zsh/50-completion.zsh b/stow/zsh/.config/zsh/50-completion.zsh
new file mode 100644
index 0000000..23cb052
--- /dev/null
+++ b/stow/zsh/.config/zsh/50-completion.zsh
@@ -0,0 +1,27 @@
+# initialize the completion system
+autoload -U compinit
+compinit -d "${XDG_CACHE_HOME:-${HOME}/.cache}/zsh/zcompdump"
+zmodload zsh/complist
+
+# complete only after the second consecutive tab
+setopt auto_menu
+
+# use GNU ls color specification for completion menu
+zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}
+
+# use menu selection by default
+zstyle ':completion:*:default' menu select
+
+# disable named-directories autocompletion
+zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories
+cdpath=(.)
+
+# don't autocomplete local users for (ssh|ftp|scp|rsync)
+zstyle ':completion:*:*:(ssh|ftp|scp|rsync):*' users
+
+# Use caching so that commands like apt and dpkg complete are useable
+zstyle ':completion::complete:*' use-cache 1
+zstyle ':completion:*' cache-path "${XDG_CACHE_HOME:-${HOME}/.cache}/zsh/zcompcache"
+
+# always rehash commands list
+zstyle ':completion:*:commands' rehash 1
diff --git a/stow/zsh/.config/zsh/60-graphical-session.zsh b/stow/zsh/.config/zsh/60-graphical-session.zsh
new file mode 100644
index 0000000..3d4b53a
--- /dev/null
+++ b/stow/zsh/.config/zsh/60-graphical-session.zsh
@@ -0,0 +1,8 @@
+if [ -n "$XDG_SESSION_DESKTOP" ] && command -v gnome-keyring-daemon > /dev/null; then
+ # load the keyring daemon into the environment if:
+ # - we're in a graphical session
+ # - the daemon is installed
+ # starts the daemon if it hasn't been started already,
+ # otherwise just exports the auth socket of the existing daemon
+ export $(gnome-keyring-daemon --start 2> /dev/null)
+fi
diff --git a/stow/zsh/.config/zsh/99-function-overrides.zsh b/stow/zsh/.config/zsh/99-function-overrides.zsh
new file mode 100644
index 0000000..8b233e5
--- /dev/null
+++ b/stow/zsh/.config/zsh/99-function-overrides.zsh
@@ -0,0 +1,8 @@
+preexec () {
+ type term_preexec &> /dev/null && term_preexec $*
+ type theme_preexec &> /dev/null && theme_preexec $*
+}
+
+precmd () {
+ type term_precmd &> /dev/null && term_precmd
+}
diff --git a/stow/zsh/.zshenv b/stow/zsh/.zshenv
new file mode 100644
index 0000000..a573065
--- /dev/null
+++ b/stow/zsh/.zshenv
@@ -0,0 +1 @@
+export ZDOTDIR="${XDG_CONFIG_HOME:-${HOME}/.config}/zsh"