summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlassulus <lassulus@lassul.us>2022-11-27 21:51:15 +0100
committerlassulus <lassulus@lassul.us>2022-11-27 21:51:15 +0100
commita4637e2bb15a86bd96faaf75914dc8d0dfcc6294 (patch)
tree8e43ad43f66c337f6ef7015963588a54ee5c9732
parentdae12b6893a1d28e8bcb1fe3fb9ee8757bbfbed4 (diff)
l: allow piping into sxiv
-rw-r--r--lass/2configs/baseX.nix4
-rw-r--r--lass/5pkgs/sxiv/default.nix27
2 files changed, 28 insertions, 3 deletions
diff --git a/lass/2configs/baseX.nix b/lass/2configs/baseX.nix
index 9b2b58f2..efd6c8a2 100644
--- a/lass/2configs/baseX.nix
+++ b/lass/2configs/baseX.nix
@@ -79,9 +79,7 @@ in {
powertop
rxvt-unicode
sshvnc
- (pkgs.writers.writeDashBin "sxiv" ''
- ${pkgs.nsxiv}/bin/nsxiv "$@"
- '')
+ sxiv
nsxiv
taskwarrior
termite
diff --git a/lass/5pkgs/sxiv/default.nix b/lass/5pkgs/sxiv/default.nix
new file mode 100644
index 00000000..04fc1c3f
--- /dev/null
+++ b/lass/5pkgs/sxiv/default.nix
@@ -0,0 +1,27 @@
+{ nsxiv, writers }:
+
+writers.writeDashBin "sxiv" ''
+ set -efu
+ tmpfile="''${TMPDIR:-/tmp}/nsxiv_pipe_$$"
+ trap 'rm -f -- $tmpfile' EXIT
+
+ if [ "$#" -eq 0 ]; then
+ if [ -t 0 ]; then
+ echo "sxiv: No arguments provided" >&2; exit 1
+ else
+ # Consume stdin and put it in the temporal file
+ cat > "$tmpfile"
+ fi
+ fi
+
+ for arg in "$@"; do
+ # if it's a pipe then drain it to $tmpfile
+ [ -p "$arg" ] && cat "$arg" > "$tmpfile"
+ done
+
+ if [ -s "$tmpfile" ]; then
+ ${nsxiv}/bin/nsxiv -q "$@" "$tmpfile" # -q to silence warnings
+ else
+ ${nsxiv}/bin/nsxiv "$@" # fallback
+ fi
+''