aboutsummaryrefslogtreecommitdiff
path: root/.local/share
diff options
context:
space:
mode:
Diffstat (limited to '.local/share')
-rw-r--r--.local/share/Anki2/gldriver61
-rw-r--r--.local/share/applications/mozc-dictionary.desktop11
-rw-r--r--.local/share/applications/mozc-settings.desktop11
-rwxr-xr-x.local/share/bin/=44
-rwxr-xr-x.local/share/bin/brave7
-rwxr-xr-x.local/share/bin/dbg40
-rwxr-xr-x.local/share/bin/dox-open31
-rwxr-xr-x.local/share/bin/editor2
-rwxr-xr-x.local/share/bin/fontfix39
-rwxr-xr-x.local/share/bin/labels2lrc22
-rwxr-xr-x.local/share/bin/lrc2labels6
-rwxr-xr-x.local/share/bin/mk15
-rwxr-xr-x.local/share/bin/nginx-dev4
-rwxr-xr-x.local/share/bin/preview4
-rwxr-xr-x.local/share/bin/screenrecord6
-rwxr-xr-x.local/share/bin/sdk10_compiledb38
-rwxr-xr-x.local/share/bin/set-default32
-rw-r--r--.local/share/gnupg/gpg-agent.conf1
-rwxr-xr-x.local/share/mode/mode18
-rwxr-xr-x.local/share/mode/reload.d/i32
-rwxr-xr-x.local/share/mode/switch.d/anki1
-rwxr-xr-x.local/share/mode/switch.d/chromium6
-rwxr-xr-x.local/share/mode/switch.d/discord2
-rwxr-xr-x.local/share/mode/switch.d/dunst2
-rwxr-xr-x.local/share/mode/switch.d/fcitx52
-rwxr-xr-x.local/share/mode/switch.d/i314
-rwxr-xr-x.local/share/mode/switch.d/kitty2
-rwxr-xr-x.local/share/mode/switch.d/mode2
-rwxr-xr-x.local/share/mode/switch.d/polybar2
-rwxr-xr-x.local/share/mode/switch.d/vim4
-rwxr-xr-x.local/share/mode/switch.d/zathura2
-rwxr-xr-x.local/share/pass-extensions/duplicates.bash13
-rwxr-xr-x.local/share/pass-extensions/g.bash2
33 files changed, 344 insertions, 44 deletions
diff --git a/.local/share/Anki2/gldriver6 b/.local/share/Anki2/gldriver6
new file mode 100644
index 0000000..865faf1
--- /dev/null
+++ b/.local/share/Anki2/gldriver6
@@ -0,0 +1 @@
+auto
diff --git a/.local/share/applications/mozc-dictionary.desktop b/.local/share/applications/mozc-dictionary.desktop
new file mode 100644
index 0000000..c4f6193
--- /dev/null
+++ b/.local/share/applications/mozc-dictionary.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Mozc dictionary tool
+Name[ja]=Mozc 辞書ツール
+Name[nl]=Mozc woordenboekhulpprogramma
+GenericName[ja]=日本語入力の辞書ツール
+GenericName[nl]=Hulpprogramma voor woordenboek van Japanse invoer
+GenericName=Japanese input method dictionary tool
+Exec=/usr/lib/mozc/mozc_tool --mode=dictionary_tool
+Icon=mozc
+Type=Application
+Categories=Settings;
diff --git a/.local/share/applications/mozc-settings.desktop b/.local/share/applications/mozc-settings.desktop
new file mode 100644
index 0000000..bcfde2d
--- /dev/null
+++ b/.local/share/applications/mozc-settings.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=Mozc settings
+Name[ja]=Mozc プロパティ
+Name[nl]=Mozc instellingen
+GenericName[ja]=日本語入力の設定
+GenericName[nl]=Instellingen voor Japanse invoermethode
+GenericName=Japanese IME configuration
+Exec=/usr/lib/mozc/mozc_tool --mode=config_dialog
+Icon=mozc
+Type=Application
+Categories=Settings;
diff --git a/.local/share/bin/= b/.local/share/bin/=
index 59b9b45..8f3345d 100755
--- a/.local/share/bin/=
+++ b/.local/share/bin/=
@@ -1,2 +1,42 @@
-#!/bin/sh
-python3 -c "from math import *; deg = pi / 180; print($*)"
+#!/bin/python3 --
+from sys import argv as _argv
+from os import environ as _environ, path as _path
+from math import *
+
+_ans_path = _path.join(_environ["XDG_CACHE_HOME"], "calc_ans")
+try:
+ _ans_file = open(_ans_path, "r+")
+except:
+ _ans_file = open(_ans_path, "w+")
+_exit_code = 0
+
+ans = 0
+try:
+ _ans_str = _ans_file.read()
+ if "." in _ans_str:
+ ans = float(_ans_str)
+ else:
+ ans = int(_ans_str)
+except:
+ pass
+
+deg = pi / 180
+
+MIN = min
+MAX = max
+BIT = lambda n: 1 << n
+GENMASK = lambda h, l: (BIT(MAX(h, l) + 1) - 1) ^ (BIT(MIN(h, l)) - 1)
+
+try:
+ ans = eval(" ".join(_argv[1:]))
+ print(ans)
+except:
+ pass
+
+_ans_file.truncate(0)
+_ans_file.seek(0)
+_ans_file.write(str(ans))
+_ans_file.close()
+
+exit(_exit_code)
+
diff --git a/.local/share/bin/brave b/.local/share/bin/brave
index 1dea360..5089377 100755
--- a/.local/share/bin/brave
+++ b/.local/share/bin/brave
@@ -1,8 +1,7 @@
#!/bin/sh
-# the remote debugging is so brave can be hooked into by
-# ~/.local/share/mode/reload.d/brave. this is probaby bad for security if
-# you're not the only user on the system
-# --remote-debugging-port=9222 \
+# - make brave automatically load the `mode` theme
+# - don't use kwallet (i don't save passwords in chrome anyways)
/usr/bin/brave \
--load-extension="$XDG_CACHE_HOME/mode/chromium" \
+ --password-store=basic \
"$@"
diff --git a/.local/share/bin/dbg b/.local/share/bin/dbg
new file mode 100755
index 0000000..424110b
--- /dev/null
+++ b/.local/share/bin/dbg
@@ -0,0 +1,40 @@
+#!/bin/sh
+progname="$(basename "$(readlink -f "$0")")"
+die() {
+ ec="$1"
+ shift
+ echo "$@"
+ exit "$ec"
+}
+
+GDB="arm-none-eabi-gdb"
+
+[ $# -lt 1 ] && die 1 "usage: $progname DEVICE [gdb args...]"
+DEVICE="$1"
+shift
+
+if [ $# -eq 0 ] ; then
+ # automatically add --se flag if executable can be found
+ exec="$(find . -maxdepth 3 -name '*.elf' | head -n1)"
+ [ -n "$exec" ] && set -- --se="$exec"
+fi
+
+[ -n "$(echo "$*" | grep -i zephyr)" ] && GDB="arm-zephyr-eabi-gdb"
+
+fork JLinkGDBServerCLExe \
+ -device "$DEVICE" \
+ -select USB \
+ -endian little \
+ -if SWD \
+ -speed auto \
+ -singlerun \
+ -noir \
+ -nologtofile \
+ -silent
+
+# append startup attach command to args
+set -- --eval-command="target extended-remote :2331" "$@"
+
+# launch gdb and forward any other args to it
+exec "$GDB" "$@"
+
diff --git a/.local/share/bin/dox-open b/.local/share/bin/dox-open
new file mode 100755
index 0000000..493c435
--- /dev/null
+++ b/.local/share/bin/dox-open
@@ -0,0 +1,31 @@
+#!/bin/node
+
+import { glob, readFile } from 'node:fs/promises';
+import { spawn } from 'node:child_process';
+import { argv, chdir, cwd } from 'node:process';
+import { join } from 'node:path';
+
+argv.shift();
+argv.shift();
+chdir("search");
+
+var symbols = {};
+for await (const chunk of glob('all_*.js')) {
+ const contents = await readFile(chunk);
+ const searchData = eval(`${contents}; searchData`);
+ const here = cwd();
+
+ for (const [ _id, [ symbol, ...entry ] ] of searchData) {
+ symbols[symbol] = entry.map(e => `file://${join(here, e[0])}`);
+ }
+}
+
+for (const symbol of argv) {
+ if (!(symbol in symbols)) {
+ console.error(`No doxygen index for symbol \`${symbol}\``);
+ continue;
+ }
+ const urls = symbols[symbol];
+ spawn('xdg-open', [ urls[0], ]);
+}
+
diff --git a/.local/share/bin/editor b/.local/share/bin/editor
new file mode 100755
index 0000000..d4bf664
--- /dev/null
+++ b/.local/share/bin/editor
@@ -0,0 +1,2 @@
+#!/bin/sh
+exec nvim -p "$@"
diff --git a/.local/share/bin/fontfix b/.local/share/bin/fontfix
new file mode 100755
index 0000000..1c9beaf
--- /dev/null
+++ b/.local/share/bin/fontfix
@@ -0,0 +1,39 @@
+#!/bin/python3
+
+import os
+import sys
+from pathlib import Path
+
+from fontTools import ttLib
+
+PROPID_FAMILY = 1
+PROPID_SUBFAMILY = 2
+PROPID_FULLNAME = 4
+PROPID_PSNAME = 6
+
+PLATFORM_MS = 1
+PLATFORM_MAC = 3
+
+# see
+# https://developer.apple.com/fonts/TrueType-Reference-Manual/RM06/Chap6name.html
+# for magic numbers
+
+for folder in Path(".").iterdir():
+ print(f"{folder}/")
+ family_name = str(folder.stem)
+ for file in folder.glob("*.ttf"):
+ subfamily_name = file.stem.removeprefix(family_name).strip()
+ with ttLib.TTFont(file) as ttf:
+ nametable = ttf["name"]
+ full_name = f"{family_name} {subfamily_name}"
+ postscript_name = f"{family_name}-{subfamily_name}".replace(" ", "")
+ nametable.setName(family_name, PROPID_FAMILY, PLATFORM_MS, 0, 0)
+ nametable.setName(family_name, PROPID_FAMILY, PLATFORM_MAC, 1, 1033)
+ nametable.setName(subfamily_name, PROPID_SUBFAMILY, PLATFORM_MS, 0, 0)
+ nametable.setName(subfamily_name, PROPID_SUBFAMILY, PLATFORM_MAC, 1, 1033)
+ nametable.setName(full_name, PROPID_FULLNAME, PLATFORM_MS, 0, 0)
+ nametable.setName(full_name, PROPID_FULLNAME, PLATFORM_MAC, 1, 1033)
+ nametable.setName(postscript_name, PROPID_PSNAME, PLATFORM_MS, 0, 0)
+ nametable.setName(postscript_name, PROPID_PSNAME, PLATFORM_MAC, 1, 1033)
+ ttf.save(file)
+ print(f" {file.name}: [{family_name} :: {subfamily_name}]")
diff --git a/.local/share/bin/labels2lrc b/.local/share/bin/labels2lrc
index 1491dae..38630c1 100755
--- a/.local/share/bin/labels2lrc
+++ b/.local/share/bin/labels2lrc
@@ -1,13 +1,17 @@
-#!/bin/sh
-cat "$@" |\
- awk '
+#!/bin/gawk -f
BEGIN { FS = "\t" }
{
- seconds = $1
- minutes = int(seconds / 60)
- seconds = seconds % 60
- millis = (seconds * 100) % 100
+ time = $1
+ time = gensub(/([0-9]+)\.([0-9]{,2})([0-9]*)/, "\\1\\2.\\3", "g", time)
+ time = int(time + 0.5)
+
+ millis = time % 100
+ time = int(time / 100)
+
+ seconds = time % 60
+ time = int(time / 60)
+
+ minutes = time % 100
+
printf("[%02d:%02d.%02d]%s\n", minutes, seconds, millis, $3)
}
-'
-
diff --git a/.local/share/bin/lrc2labels b/.local/share/bin/lrc2labels
index 31aa4be..a23b299 100755
--- a/.local/share/bin/lrc2labels
+++ b/.local/share/bin/lrc2labels
@@ -1,11 +1,7 @@
-#!/bin/sh
-cat "$@" |\
- gawk '
+#!/bin/gawk -f
match($0, /^\[([0-9]{2}):([0-9]{2}\.[0-9]{2})\](.*)/, group) {
time = group[1] * 60 + group[2]
lyric = group[3]
printf("%.2f\t%.2f\t%s\n", time, time, lyric)
}
-'
-
diff --git a/.local/share/bin/mk b/.local/share/bin/mk
index b7e2b41..54b6908 100755
--- a/.local/share/bin/mk
+++ b/.local/share/bin/mk
@@ -1,6 +1,9 @@
#!/bin/sh
progname="$(basename "$0")"
showmode() {
+ ! [ -n "$FROM_PROMPT" ] && return
+ ! [ -t 1 ] && return
+
mode=" ($1)"
col=$(( $(tput cols) - $(echo "$mode" | wc -L) + 1 ))
printf '\e[1A\e['$col'G\e[1;30m%s\e[0m\n' "$mode"
@@ -23,11 +26,17 @@ mode_cmake() {
# re-run configuration if fresh or CMakeLists was changed
if [ ! -e "$builddir/build.ninja" ] ||
- [ "CMakeLists.txt" -nt "$builddir/build.ninja" ] ; then
- cmake --log-level WARNING -B "$builddir"
+ [ "CMakeLists.txt" -nt "$builddir/build.ninja" ] ; then
+ cmake --log-level WARNING -B "$builddir"
fi
- exec cmake --build "$builddir" -- "$@"
+ # build
+ cmake --build "$builddir" -- "$@" || exit $?
+
+ # generate vim tags (continue after mk exits)
+ ninja -C "$builddir" -t deps | sed -n 's/^ \{4\}//p' | sort -u | ctags -L - -f "$builddir/tags" &
+
+ exit 0
}
[ -e "CMakeLists.txt" ] && mode_cmake "$@"
diff --git a/.local/share/bin/nginx-dev b/.local/share/bin/nginx-dev
index 10987fd..40e73ad 100755
--- a/.local/share/bin/nginx-dev
+++ b/.local/share/bin/nginx-dev
@@ -4,6 +4,8 @@ port=8080
try_files='/$uri /$uri.html /$uri/index.html =404'
access_log='/dev/stdout'
cache_control='
+ proxy_store off;
+ proxy_cache off;
add_header Last-Modified $date_gmt;
add_header Cache-Control "private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
if_modified_since off;
@@ -35,7 +37,7 @@ while getopts hvp:Ct:qx OPT; do
p) port="$OPTARG" ;;
t) try_files="$OPTARG" ;;
v) print_config=1 ;;
- C) cache_control="" ;;
+ C) cache_control='' ;;
q) access_log="/dev/null" ;;
x) open_browser=1 ;;
\?|*) usage 1 ;;
diff --git a/.local/share/bin/preview b/.local/share/bin/preview
index 2fe9c4d..141d03c 100755
--- a/.local/share/bin/preview
+++ b/.local/share/bin/preview
@@ -12,6 +12,7 @@ MIMETYPE="$(file --mime-type -Lb "$FILE")"
EXT="${FILE#*.}"
[ "$EXT" = "md" ] && [ "$MIMETYPE" = "text/plain" ] && MIMETYPE="application/markdown"
+[ "$MIMETYPE" = "application/javascript" ] && MIMETYPE="text/javascript"
render_manpage() {
exec groff -T utf8 -m man -rcR=1 -rIN=0 -rLL="${WIDTH}n" << EOF
@@ -49,6 +50,9 @@ case "$MIMETYPE" in
application/markdown)
pandoc --from=gfm --to=man "$FILE" | render_manpage
;;
+ application/json)
+ jq --color-output . "$FILE"
+ ;;
*)
echo "$MIMETYPE"
file -b "$FILE" | fold --width="$WIDTH" --spaces
diff --git a/.local/share/bin/screenrecord b/.local/share/bin/screenrecord
index d595cc8..1045a6e 100755
--- a/.local/share/bin/screenrecord
+++ b/.local/share/bin/screenrecord
@@ -1,8 +1,8 @@
#!/bin/sh
exec giph "$@" \
- --framerate=60 \
+ --framerate 60 \
--select \
- --bordersize=4 \
- --color=255,255,255 \
+ --bordersize 4 \
+ --color 255,255,255 \
"$(date +'%Y-%m-%d_%H-%M-%S.mp4')"
diff --git a/.local/share/bin/sdk10_compiledb b/.local/share/bin/sdk10_compiledb
new file mode 100755
index 0000000..6e62d47
--- /dev/null
+++ b/.local/share/bin/sdk10_compiledb
@@ -0,0 +1,38 @@
+#!/bin/python3
+
+from shlex import split, join
+from sys import argv
+from os import getcwd
+import subprocess
+
+process = subprocess.run(argv[1:], stdout=subprocess.PIPE, stderr=None, env={"LANG": "C"})
+
+dir_stack = [getcwd()]
+expanded_output = []
+
+for line in process.stdout.decode('utf-8').split('\n'):
+ expanded_args = []
+ args = split(line)
+
+ if line.startswith('make: Entering directory'):
+ dir_stack.append(args[-1])
+ expanded_output.append(line)
+ continue
+ if line.startswith('make: Leaving directory'):
+ dir_stack.pop()
+ expanded_output.append(line)
+ continue
+
+ for arg in args:
+ if not arg.startswith('@'):
+ expanded_args.append(arg)
+ continue
+ with open(dir_stack[-1] + '/' + arg[1:], 'r') as file:
+ expanded_args += split(file.read())
+ expanded_output.append(subprocess.list2cmdline(expanded_args))
+
+process = subprocess.Popen(["compiledb"], stdin=subprocess.PIPE, stdout=None, stderr=None, text=True)
+process.stdin.write("\n".join(expanded_output))
+process.stdin.close()
+process.wait()
+
diff --git a/.local/share/bin/set-default b/.local/share/bin/set-default
new file mode 100755
index 0000000..d93f65c
--- /dev/null
+++ b/.local/share/bin/set-default
@@ -0,0 +1,32 @@
+#!/bin/sh
+SCRIPT_NAME="$(basename "$0")"
+
+usage() {
+ code=0
+ if [ -z "$1" ] ; then
+ cat << EOF
+Set desktop entry ENTRY as default application for opening files with the same
+type as FILE
+
+EOF
+ else
+ echo "error: $1" >&2
+ code=1
+ fi
+ cat << EOF
+usage:
+ $SCRIPT_NAME ENTRY FILE [FILE]
+EOF
+ exit $code
+}
+
+[ $# -eq 0 ] && usage
+DESKTOP_ENTRY="$1"; shift
+[ -z "$DESKTOP_ENTRY" ] && usage "no desktop entry"
+[ $# -lt 1 ] && usage "no reference file(s)"
+
+for file in "$@" ; do
+ mimetype="$(xdg-mime query filetype "$file")"
+ xdg-mime default "$DESKTOP_ENTRY" "$mimetype"
+done
+
diff --git a/.local/share/gnupg/gpg-agent.conf b/.local/share/gnupg/gpg-agent.conf
index b747e5e..4e3bb5d 100644
--- a/.local/share/gnupg/gpg-agent.conf
+++ b/.local/share/gnupg/gpg-agent.conf
@@ -1,2 +1,3 @@
allow-preset-passphrase
max-cache-ttl 604800
+pinentry-program /usr/bin/pinentry-gtk
diff --git a/.local/share/mode/mode b/.local/share/mode/mode
index 55de32f..dc188e9 100755
--- a/.local/share/mode/mode
+++ b/.local/share/mode/mode
@@ -1,10 +1,11 @@
-#!/bin/sh
+#!/usr/bin/env sh
progname="$(basename "$0")"
data="$(dirname "$(readlink -f "$0")")"
export data # path to directory containing reload.d, switch.d, etc.
-run_cfggen=1
+run_switch=1
run_reload=1
+no_cfg=0
theme="" # absolute path to theme
# print error message and exit with error
@@ -22,7 +23,8 @@ usage:
$progname [-chr] action|theme
options:
- -c, --no-cfggen disable updating of configuration files
+ -s, --no-switch disable running switch.d hooks
+ -c, --no-cfggen disable generation of templated configuration files
-h, --help display this help text
-r, --no-reload disable reloading of applications after applying theme
@@ -105,11 +107,13 @@ for arg in "$@" ; do
# help
-h|--help|help) usage && exit 0 ;;
# only run reload scripts
- reload) run_reload=1 run_cfggen=0 ;;
+ reload) run_reload=1 run_switch=0 ;;
# prevent reload.d scripts from running
-r|--no-reload) run_reload=0 ;;
# prevent switch.d scripts from running
- -c|--no-cfggen) run_cfggen=0 ;;
+ -s|--no-switch) run_switch=0 ;;
+ # prevent switch.d scripts from running
+ -c|--no-cfggen) no_cfg=1 ;;
# restore previous theme stored as symlink (see switch.d/mode)
restore)
theme="$(readlink -f "$XDG_CACHE_HOME/mode/state/theme")"
@@ -136,7 +140,9 @@ for arg in "$@" ; do
esac
done
+export no_cfg
+
# main
-[ $run_cfggen -eq 1 ] && switch
+[ $run_switch -eq 1 ] && switch
[ $run_reload -eq 1 ] && reload
diff --git a/.local/share/mode/reload.d/i3 b/.local/share/mode/reload.d/i3
new file mode 100755
index 0000000..96212cf
--- /dev/null
+++ b/.local/share/mode/reload.d/i3
@@ -0,0 +1,2 @@
+#!/bin/sh
+fork i3-msg reload
diff --git a/.local/share/mode/switch.d/anki b/.local/share/mode/switch.d/anki
index c9caf5d..7572b00 100755
--- a/.local/share/mode/switch.d/anki
+++ b/.local/share/mode/switch.d/anki
@@ -1,4 +1,5 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
# this generates theme files compatible with Anki-redesign:
# <https://ankiweb.net/shared/info/308574457>
diff --git a/.local/share/mode/switch.d/chromium b/.local/share/mode/switch.d/chromium
index fb701a5..5ed07fc 100755
--- a/.local/share/mode/switch.d/chromium
+++ b/.local/share/mode/switch.d/chromium
@@ -1,11 +1,13 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_CACHE_HOME/mode/chromium"
rm -f 'Cached Theme.pak'
magick -size 100x100 "xc:$bg" 'bg.png'
-bg_alt=$(mix_rgb $color7 $bg 0.20)
-fg_alt=$(mix_rgb $color15 $fg 0.60)
+bg_alt=$(mix_rgb $bg $color0 0.65)
+fg_alt=$(mix_rgb $fg $color15 0.35)
bg="$(hex_to_rgb_array "$bg")"
fg="$(hex_to_rgb_array "$fg")"
bg_alt="$(hex_to_rgb_array "$bg_alt")"
diff --git a/.local/share/mode/switch.d/discord b/.local/share/mode/switch.d/discord
index 5931dec..dd7e5e3 100755
--- a/.local/share/mode/switch.d/discord
+++ b/.local/share/mode/switch.d/discord
@@ -1,4 +1,6 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_CONFIG_HOME/BetterDiscord/themes"
cat << EOF > 'mode.theme.css'
/**
diff --git a/.local/share/mode/switch.d/dunst b/.local/share/mode/switch.d/dunst
index f863100..d7d9a2b 100755
--- a/.local/share/mode/switch.d/dunst
+++ b/.local/share/mode/switch.d/dunst
@@ -1,4 +1,6 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_CONFIG_HOME/dunst"
cat 'base' - << EOF > 'dunstrc'
frame_color = "$accent"
diff --git a/.local/share/mode/switch.d/fcitx5 b/.local/share/mode/switch.d/fcitx5
index 71880a7..d9d0032 100755
--- a/.local/share/mode/switch.d/fcitx5
+++ b/.local/share/mode/switch.d/fcitx5
@@ -1,4 +1,6 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_DATA_HOME/fcitx5/themes/default"
rounding=6
size=$(( 2 * $rounding + 4 ))
diff --git a/.local/share/mode/switch.d/i3 b/.local/share/mode/switch.d/i3
new file mode 100755
index 0000000..713869e
--- /dev/null
+++ b/.local/share/mode/switch.d/i3
@@ -0,0 +1,14 @@
+#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
+indicator="$color0"
+mkcd "$XDG_CONFIG_HOME/i3"
+cat << EOF > 'color.conf'
+client.focused $fg $bg $fg $indicator $bg
+client.focused_inactive $bg $bg $fg $indicator $bg
+client.unfocused $bg $bg $fg $indicator $bg
+client.urgent $bg $bg $fg $indicator $bg
+client.placeholder $bg $bg $fg $indicator $bg
+client.background $bg
+EOF
+
diff --git a/.local/share/mode/switch.d/kitty b/.local/share/mode/switch.d/kitty
index dddc41b..eeb81d0 100755
--- a/.local/share/mode/switch.d/kitty
+++ b/.local/share/mode/switch.d/kitty
@@ -1,4 +1,6 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_CONFIG_HOME/kitty"
cat << EOF > 'color.conf'
diff --git a/.local/share/mode/switch.d/mode b/.local/share/mode/switch.d/mode
index f4c916e..8866486 100755
--- a/.local/share/mode/switch.d/mode
+++ b/.local/share/mode/switch.d/mode
@@ -1,4 +1,6 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_CACHE_HOME/mode/state"
echo "$mode" > mode
diff --git a/.local/share/mode/switch.d/polybar b/.local/share/mode/switch.d/polybar
index 17fcee2..7087735 100755
--- a/.local/share/mode/switch.d/polybar
+++ b/.local/share/mode/switch.d/polybar
@@ -1,4 +1,6 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_CONFIG_HOME/polybar"
cat << EOF > 'colors.ini'
[color]
diff --git a/.local/share/mode/switch.d/vim b/.local/share/mode/switch.d/vim
index 7c2bbf6..2220b1a 100755
--- a/.local/share/mode/switch.d/vim
+++ b/.local/share/mode/switch.d/vim
@@ -1,4 +1,6 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_CONFIG_HOME/nvim/mode"
# lightline
@@ -13,7 +15,7 @@ let s:test = [ '#ff00ff', 'NONE' ]
let s:p = {'normal': {}, 'inactive': {}, 'insert': {}, 'replace': {}, 'visual': {}, 'tabline': {}}
let s:p.normal.left = [ [ s:fg, s:mode ], [ s:faint, s:bg ] ]
let s:p.normal.right = [ [ s:faint, s:bg ] ]
-let s:p.normal.middle = [ [ s:none, s:none ] ]
+let s:p.normal.middle = [ [ s:bg, s:bg ] ]
let s:p.normal.error = [ [ s:test, s:test ] ]
let s:p.normal.warning = [ [ s:test, s:test ] ]
let s:p.inactive.left = copy(s:p.normal.left)
diff --git a/.local/share/mode/switch.d/zathura b/.local/share/mode/switch.d/zathura
index e1a15e7..42d6d90 100755
--- a/.local/share/mode/switch.d/zathura
+++ b/.local/share/mode/switch.d/zathura
@@ -1,4 +1,6 @@
#!/bin/sh
+[ $no_cfg -eq 1 ] && return
+
mkcd "$XDG_CONFIG_HOME/zathura"
cat << EOF > 'colors'
set completion-bg "$bg"
diff --git a/.local/share/pass-extensions/duplicates.bash b/.local/share/pass-extensions/duplicates.bash
index cb1cbbc..3ba47aa 100755
--- a/.local/share/pass-extensions/duplicates.bash
+++ b/.local/share/pass-extensions/duplicates.bash
@@ -5,21 +5,18 @@ pass_names="$(pass names -l)"
[ $? -ne 0 ] && exit 1
pass_count="$(echo "$pass_names" | wc -l)"
-if [ "$pass_count" -gt 10 ] ; then
- cat << EOF >&2
-pass-duplicates needs to decrypt all your passwords one-by-one to cross-match
-them. This is all done in-memory, and nothing is saved to disk. You appear to
-have $pass_count passwords, so this may take some time...
-
-EOF
-fi
+pass_index=1
while read pass_name ; do
hash="$(pass show "$pass_name" | head -n1 | sha1sum | cut -c1-40)"
dupe_map["$pass_name"]="$hash"
dupe_tally["$hash"]=$(( ${dupe_tally["$hash"]} + 1 ))
+
+ printf '\rhashing... (%d/%d)' "$pass_index" "$pass_count" >&2
+ pass_index=$(( $pass_index + 1 ))
done < <(echo "$pass_names")
+printf '\r\e[2K' >&2
unique_duplicates=0
total_shared=0
diff --git a/.local/share/pass-extensions/g.bash b/.local/share/pass-extensions/g.bash
new file mode 100755
index 0000000..4ab3ace
--- /dev/null
+++ b/.local/share/pass-extensions/g.bash
@@ -0,0 +1,2 @@
+#!/bin/bash
+exec pass git "$@"