diff options
author | Linnnus <[email protected]> | 2023-11-07 17:37:37 +0100 |
---|---|---|
committer | Linnnus <[email protected]> | 2023-11-07 17:37:37 +0100 |
commit | 3824d4d797d39bd6f2dee3655027a79713ef400c (patch) | |
tree | 617a3e9294573604aaedc04c72973639cc919954 /pkgs | |
parent | f538d7e75a4caba9d4bff0a3273c8cd5efa616ff (diff) |
home/zsh+pkgs: Add watch-while for long commands lol
Diffstat (limited to 'pkgs')
-rw-r--r-- | pkgs/default.nix | 2 | ||||
-rw-r--r-- | pkgs/watch-while/default.nix | 23 | ||||
-rw-r--r-- | pkgs/watch-while/watch-while.zsh | 19 |
3 files changed, 44 insertions, 0 deletions
diff --git a/pkgs/default.nix b/pkgs/default.nix index 2953063..5ab245a 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -9,6 +9,8 @@ pkgs: { mcping = pkgs.callPackage ./mcping {}; + watch-while = pkgs.callPackage ./watch-while {}; + # TODO: These should be contained in the 'vimPlugins' attrset. This turns out # to be non-trivial because this module is both consumed in a flake output # context and an overlay context. diff --git a/pkgs/watch-while/default.nix b/pkgs/watch-while/default.nix new file mode 100644 index 0000000..fb29441 --- /dev/null +++ b/pkgs/watch-while/default.nix @@ -0,0 +1,23 @@ +{ + zsh, + mpv, + stdenvNoCC, +}: +stdenvNoCC.mkDerivation rec { + pname = "watch-while"; + version = "0.1.0"; + + src = ./watch-while.zsh; + unpackPhase = ":"; + + buildPhase = '' + substituteAll $src ${pname} + chmod +x ${pname} + ''; + inherit zsh mpv; + + installPhase = '' + mkdir -p $out/bin + mv ${pname} $out/bin/ + ''; +} diff --git a/pkgs/watch-while/watch-while.zsh b/pkgs/watch-while/watch-while.zsh new file mode 100644 index 0000000..d38d393 --- /dev/null +++ b/pkgs/watch-while/watch-while.zsh @@ -0,0 +1,19 @@ +#!@zsh@/bin/zsh + +set -ue + +# This file should be a (symbolik link to a) file which we want to watch. Once +# we're finished with that movie, we just read the next. +movie=${XDG_CONFIG_HOME:-$HOME/.config}/watch-while/movie + +if [ -f $movie ]; then + @mpv@/bin/mpv --save-position-on-quit --autofit='90%x90%' -- $movie >/dev/null 2>&1 & + mpv_pid=$? + trap 'kill -s QUIT $mpv_pid' EXIT + + # We don't exec because we want our exec handler to fire. + "$@" || exit $? +else + # In this case where we don't have any movie we just transparently run the command. + exec "$@" +fi |