commit d35e8d59db637c106ef2ba3620cbd5aa09746468 parent 230f96a7933f52547b0e24b8c8f958e0501f5ece Author: Jacob R. Edwards <jacobouno@protonmail.com> Date: Tue, 16 Feb 2021 01:06:28 -0800 Rewrite sxiv(1)'s key handler script It is now written in sh(1) rather than rc(1) (I'm currently enjoying sh(1), I suppose it's more portable aswell) and unrelated to that it is more elegant. Diffstat:
| M | modules/sxiv/.config/sxiv/exec/key-handler | | | 39 | ++++++++++++++++++++------------------- |
1 file changed, 20 insertions(+), 19 deletions(-)
diff --git a/modules/sxiv/.config/sxiv/exec/key-handler b/modules/sxiv/.config/sxiv/exec/key-handler @@ -1,23 +1,24 @@ -#!/usr/local/bin/rc -e -# sxiv key handler +#!/bin/sh -e +# Copyright 2020 Jacob R. Edwards +# License: GPLv3 +# +# key-handler -- sxiv(1) key handling script -pn = `{ basename $0 } -ifs = ' +buf=$(cat) +IFS=' ' -fn warn { { printf '%s: ' $pn; printf $* } >[2=1] } -fn err { warn $*; exit 1 } -fn yes { test `{ printf 'n\ny\n' | dmenu } '=' 'y' } -fn cw { setbg $* } +ask() test $(printf 'n\ny\n' | dmenu) = 'y' +err() { printf '%s: ' `basename $0` 1>&2 && printf "$@" 1>&2; exit 1; } +last() eval echo "\$$#" -buf = `{ cat - } -switch ($1) { -case 'C-w' - cw $buf($#buf); -case 'C-m' - mv $buf `{ fsmenu . -type d } -case 'C-x' - yes && rm $buf -case * - err '%s: Command does not exist.\n' $1; -} +case $1 in +(C-w) + setbg "$(last $buf)";; +(C-m) + mv $buf "$(fsmenu . -type d)";; +(C-x) + ask && rm $buf;; +(*) + err '%s: Invalid command.\n' $1; +esac