Skip to main content
Rebind runs on Windows, macOS, and Linux, and the same scripts move between them. The core runtime and the namespaces most scripts use are identical on all three OSes: HID, remapping (Bind) and the input hooks, Macro/Timer/Math/Net/File/JSON/Regex/Config/Process/System.Exec, UI/Log/Input, and the Run/Sleep/After/Async globals. A few namespaces depend on OS-specific APIs and are limited or absent on some platforms. This page maps what runs where, and why.

Platform support

The table below lists every namespace with platform-specific behavior. Everything not in the table is fully cross-platform. Software and hardware mode run the same scripts; neither changes this table: namespace availability is a property of the OS, not the transport. The one capability split between modes is mouse_block: suppressing or transforming mouse movement requires a Rebind device on every OS (see The Rebind Link for why). Key, button, and scroll blocking work in both modes. For hardware setup, see Hardware.
  • Screen samples pixels on Windows and macOS. On Linux pixel sampling is stubbed, not absent: Screen.GetPixelColor is still callable but returns a fixed "000000" (black) instead of a real pixel, and Screen.SearchForColor returns nil. Neither raises an error. Only Screen.List (display enumeration) is real on Linux.
  • Window is full on Windows. On macOS, enumeration (Find, List) plus Kill, IsActive, WaitActive, and WaitClose are real. Move works through the Accessibility grant Rebind already holds, but it targets the frontmost focused window (the handle is advisory) and can fail silently. The remaining manipulation calls split two ways: Activate, Minimize, Maximize, Restore, and Close are silent no-ops (they return success and do nothing, so a pcall around them will not catch an error), while the Accessibility-gated calls SetTitle, SetAlwaysOnTop, SetTransparency, GetClass, Hide, and Show raise a “not supported on macOS without accessibility” error you can guard with pcall. Window.GetTitle returns an empty string on macOS; titles are only available via the title field on Window.List / Window.Find entries. On Linux, Window is a stub.
  • Pipe (inter-process messaging) and Registry are Windows-only. They raise an error on macOS and Linux. Pipe support on macOS and Linux is planned.
  • Clipboard works on Windows and macOS; it is a stub on Linux.
  • Dialog is native on Windows and macOS; on Linux it needs Zenity, KDialog, or YAD installed.
  • App (application-level launch / focus / hide / quit) is macOS-only; it raises an error on Windows and Linux. For cross-platform app control, reach for Window (find / activate by title) and Process (exists / list / kill).
If you target multiple platforms, guard the OS-specific calls. pcall catches the “not available” error a Windows-only namespace raises on macOS or Linux: