aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/home/suites/desktop/default.nix1
-rw-r--r--modules/home/tools/default.nix3
-rw-r--r--packages/click/default.nix26
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
+''