diff options
| -rw-r--r-- | modules/home/suites/desktop/default.nix | 1 | ||||
| -rw-r--r-- | modules/home/tools/default.nix | 3 | ||||
| -rw-r--r-- | packages/click/default.nix | 26 |
3 files changed, 30 insertions, 0 deletions
diff --git a/modules/home/suites/desktop/default.nix b/modules/home/suites/desktop/default.nix index ca2855d..7a07d79 100644 --- a/modules/home/suites/desktop/default.nix +++ b/modules/home/suites/desktop/default.nix @@ -18,6 +18,7 @@ in { tools = { mute.enable = true; + click.enable = true; }; desktop.components = { diff --git a/modules/home/tools/default.nix b/modules/home/tools/default.nix index 98b37c7..132194d 100644 --- a/modules/home/tools/default.nix +++ b/modules/home/tools/default.nix @@ -14,5 +14,8 @@ with lib; with lib.${namespace}; { (mkSimpleTool "mute" { packages = [ cxl.mute ]; }) + (mkSimpleTool "click" { + packages = [ cxl.click ]; + }) ]; } diff --git a/packages/click/default.nix b/packages/click/default.nix new file mode 100644 index 0000000..9f3ff70 --- /dev/null +++ b/packages/click/default.nix @@ -0,0 +1,26 @@ +{ pkgs, ... }: + +let + xdotool = "${pkgs.xdotool}/bin/xdotool"; + xwininfo = "${pkgs.xorg.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 +'' |