summaryrefslogtreecommitdiffstats
path: root/tv/5pkgs/simple/pinentry-urxvt
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2022-12-09 21:53:09 +0100
committertv <tv@krebsco.de>2022-12-09 21:54:29 +0100
commit85a3bb5d299785b8eff38390683f3c9f3fa73e3c (patch)
tree679b6153f2252d80104183674513ab293fb8eb8b /tv/5pkgs/simple/pinentry-urxvt
parent2eb1ca9d4b1336b7025b3f770e0d27293f286245 (diff)
tv pinentry-urxvt: kill only screenshot displayers
Diffstat (limited to 'tv/5pkgs/simple/pinentry-urxvt')
-rw-r--r--tv/5pkgs/simple/pinentry-urxvt/default.nix17
1 files changed, 9 insertions, 8 deletions
diff --git a/tv/5pkgs/simple/pinentry-urxvt/default.nix b/tv/5pkgs/simple/pinentry-urxvt/default.nix
index c768a9f..ad8039f 100644
--- a/tv/5pkgs/simple/pinentry-urxvt/default.nix
+++ b/tv/5pkgs/simple/pinentry-urxvt/default.nix
@@ -52,25 +52,26 @@ in
trap cleanup EXIT
cleanup() {
+ ${pkgs.utillinux}/bin/kill -- $(${pkgs.coreutils}/bin/cat "$displayers")
+ rm "$displayers"
rm "$screenshot"
- # Kill process group in order to kill screenshot windows.
- ${pkgs.utillinux}/bin/kill 0
}
- screenshot=$(${pkgs.coreutils}/bin/mktemp -t pinentry-urxvt.screenshot.XXXXXXXX)
+ displayers=$(${pkgs.coreutils}/bin/mktemp -t pinentry-urxvt.$$.displayers.XXXXXXXX)
+ screenshot=$(${pkgs.coreutils}/bin/mktemp -t pinentry-urxvt.$$.screenshot.XXXXXXXX)
${pkgs.xorg.xwd}/bin/xwd -root |
${pkgs.imagemagick}/bin/convert xwd:- -fill \#424242 -colorize 80% xwd:"$screenshot"
- show_screenshot() {
- ${pkgs.exec "pinentry-urxvt.show_screenshot" {
+ display_screenshot() {
+ ${pkgs.exec "pinentry-urxvt.display_screenshot" {
filename = "${pkgs.xorg.xwud}/bin/xwud";
argv = [
cfg.xwud.className
"-noclick"
];
}} < "$screenshot" &
- wait_for_screenshot $!
+ wait_for_screenshot $! && echo $! >>"$displayers"
}
# Wait for the xwud window by trying to intercept the call to munmap().
@@ -92,12 +93,12 @@ in
fi
}
- show_screenshot
+ display_screenshot
${lib.optionalString (cfg.display != null) /* sh */ ''
if test "$DISPLAY" != ${lib.shell.escape cfg.display}; then
export DISPLAY=${lib.shell.escape cfg.display}
- show_screenshot
+ display_screenshot
fi
''}