aboutsummaryrefslogtreecommitdiff
path: root/packages/click/default.nix
blob: a778b46cfea8dfbeba4b5152ed812cc3c1778138 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{ pkgs, ... }:

let
  xdotool = "${pkgs.xdotool}/bin/xdotool";
  xwininfo = "${pkgs.xwininfo}/bin/xwininfo";
  awk = "${pkgs.gawk}/bin/awk";
in pkgs.writeShellScriptBin "click" ''
  set -euo pipefail
  IFS=$'\n\t'

  delay="''${1:-1}"
  button="''${2:-1}"

  printf 'click target window: '
  id="$(${xwininfo} | ${awk} '/Window id:/{print $4}')"
  printf '%s\n' "$id"

  declare -i count=0
  while true; do
    ${xdotool} click --window "$id" "$button"

    printf '\rclick count: %d' "$((count += 1))"

    sleep "$delay"
  done
''