diff --git a/options/custom/programs/default.nix b/options/custom/programs/default.nix
index 197d09a..c5fb3d7 100644
--- a/options/custom/programs/default.nix
+++ b/options/custom/programs/default.nix
@@ -80,6 +80,7 @@ with lib; {
       waybar.enable = true;
       wireshark.enable = true;
       #// wpaperd.enable = true;
+      ydotool.enable = true;
       zed.enable = true;
     })
   ];
diff --git a/options/custom/programs/ydotool.nix b/options/custom/programs/ydotool.nix
new file mode 100644
index 0000000..277b3bd
--- /dev/null
+++ b/options/custom/programs/ydotool.nix
@@ -0,0 +1,19 @@
+{
+  config,
+  lib,
+  ...
+}:
+with lib; let
+  cfg = config.custom.programs.ydotool;
+in {
+  options.custom.programs.ydotool = {
+    enable = mkOption {default = false;};
+  };
+
+  config = mkIf cfg.enable {
+    custom.settings.users.${config.custom.username}.groups = ["ydotool"];
+
+    # https://github.com/ReimuNotMoe/ydotool
+    programs.ydotool.enable = true;
+  };
+}