From 97e8f90bdd1802d4a08a5deb549fb1aa8e8d6768 Mon Sep 17 00:00:00 2001
From: Christian Segundo
Date: Wed, 19 Mar 2025 14:18:58 +0100
Subject: First commit
---
.gitignore | 2 ++
Makefile | 19 +++++++++++++++++++
README | 23 +++++++++++++++++++++++
dist/com.osx-jiggler.plist | 16 ++++++++++++++++
dist/com.osx_jiggler.plist | 16 ++++++++++++++++
main.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
6 files changed, 121 insertions(+)
create mode 100644 .gitignore
create mode 100644 Makefile
create mode 100644 README
create mode 100644 dist/com.osx-jiggler.plist
create mode 100644 dist/com.osx_jiggler.plist
create mode 100644 main.c
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..58caf8b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+*.o
+osx-jiggler
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..61a2767
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,19 @@
+CC = clang
+CFLAGS = -Wall -pedantic
+LDFLAGS = -framework ApplicationServices
+PROGRAM = osx-jiggler
+SOURCES = main.c
+OBJECTS = $(SOURCES:.c=.o)
+PREFIX = /usr/local/bin
+
+$(PROGRAM): $(OBJECTS)
+ $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS)
+
+%.o: %.c
+ $(CC) $(CFLAGS) -c $< -o $@
+
+install: $(PROGRAM)
+ install -m 755 $(PROGRAM) $(PREFIX)
+
+clean:
+ -rm -f $(PROGRAM) $(OBJECTS)
diff --git a/README b/README
new file mode 100644
index 0000000..12bcfad
--- /dev/null
+++ b/README
@@ -0,0 +1,23 @@
+OSX Jiggler
+===========
+
+Prevents sleeping by simulating cursor movement. Useful in enterprisy
+environments where sleep settings are org managed.
+
+Installation
+============
+
+1. Clone or download the source code
+
+2. Run 'make' to compile the program
+
+3. Run 'sudo make install' to install the binary to '/usr/local/bin'
+or 'make install PREFIX=/custom/path' if you want to install in a
+different location.
+
+4. Run 'osx-jiggler'
+
+5. Optionally, to autostart 'osx-jiggler' you can copy the included
+launch agent and start it right away by running:
+ cp dist/com.osx_jiggler.plist ~/Library/LaunchAgents/ && \
+ launchctl load ~/Library/LaunchAgents/com.osx_jiggler.plist
\ No newline at end of file
diff --git a/dist/com.osx-jiggler.plist b/dist/com.osx-jiggler.plist
new file mode 100644
index 0000000..9fbbbe4
--- /dev/null
+++ b/dist/com.osx-jiggler.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ Label
+ com.osx_jiggler
+ ProgramArguments
+
+ /usr/local/bin/osx-jiggler
+
+ KeepAlive
+
+ RunAtLoad
+
+
+>
\ No newline at end of file
diff --git a/dist/com.osx_jiggler.plist b/dist/com.osx_jiggler.plist
new file mode 100644
index 0000000..9fbbbe4
--- /dev/null
+++ b/dist/com.osx_jiggler.plist
@@ -0,0 +1,16 @@
+
+
+
+
+ Label
+ com.osx_jiggler
+ ProgramArguments
+
+ /usr/local/bin/osx-jiggler
+
+ KeepAlive
+
+ RunAtLoad
+
+
+>
\ No newline at end of file
diff --git a/main.c b/main.c
new file mode 100644
index 0000000..096f25b
--- /dev/null
+++ b/main.c
@@ -0,0 +1,45 @@
+#include
+
+int main(int argc, char *argv[]) {
+ double inactivity_threshold = 60.0;
+ int right = 0;
+
+ if (argc > 1) {
+ if (strcmp(argv[1], "--help") == 0) {
+ printf("Usage: osx-jiggler [inactivity_threshold]\n");
+ printf(" inactivity_threshold: Time in seconds before the mouse moves "
+ "(default: 60.0)\n");
+ printf(" --help: Show this help message\n");
+ return 0;
+ }
+
+ inactivity_threshold = atof(argv[1]);
+ if (inactivity_threshold <= 0) {
+ fprintf(stderr,
+ "Invalid inactivity time. Please provide a positive number.\n");
+ return 1;
+ }
+ }
+
+ while (1) {
+ double idle_time = CGEventSourceSecondsSinceLastEventType(
+ kCGEventSourceStateHIDSystemState, kCGAnyInputEventType);
+
+ if (idle_time >= inactivity_threshold) {
+ CGEventRef event = CGEventCreate(NULL);
+ CGPoint cursor = CGEventGetLocation(event);
+ CFRelease(event);
+
+ (right) ? (cursor.x += 1) : (cursor.x -= 1);
+ right = !right;
+
+ event = CGEventCreateMouseEvent(NULL, kCGEventMouseMoved, cursor,
+ kCGMouseButtonLeft);
+ CGEventPost(kCGHIDEventTap, event);
+ CFRelease(event);
+ }
+ sleep(1);
+ }
+
+ return 0;
+}
--
cgit v1.2.3