Bind) and the input hooks,
Macro/Timer/Math/Net/File/JSON/Regex/Config/Process/System.Exec,
UI/Log, 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.
System requirements
- Windows: Windows 10 or 11, 64-bit.
- macOS: Apple Silicon. Intel Macs are not supported.
- Linux: x86_64.
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 Rebind Link on Windows and macOS. Key, button, and scroll
blocking work in both modes.
Attaching a peripheral to the capture pipeline is not implemented on Linux yet;
it works on Windows and macOS.
- Screen samples pixels on Windows and macOS. On macOS reads come from a streamed frame while a script that uses
Screenis loaded; on Windows each read is still a GDI call until the equivalent stream lands. On Linux,Screen.GetPixelColor,Screen.SearchForColor,Screen.Capture, andScreen.FindImageraise an error instead of returning fabricated pixels. OnlyScreen.List(display enumeration) is real on Linux. - Window is full on Windows. On macOS, enumeration (
Find,List,FromPoint,GetForeground) plusKill,IsActive,WaitActive, andWaitCloseare real.ActivateandMovework through the Accessibility grant Rebind already holds.Activatebrings the owning app forward and raises that app’s focused window;Movetargets the frontmost focused window (the handle is advisory) and can fail silently.GetTitle,GetPos,GetPID,IsVisible,Minimize,Maximize,Restore, andCloseare not implemented on macOS and raise a “not supported” error.SetTitle,SetAlwaysOnTop,SetTransparency,GetClass,Hide,Show, andGetStatealso remain unsupported regardless of the Accessibility grant. Guard unsupported calls withpcall.Screen.WorkAreais Windows only. Read macOS window titles from thetitlefield onWindow.Listentries;Window.Findreturns a handle, not an entry. On Linux, window queries and actions requiring a native backend raise errors rather than returning empty results or reporting success. - 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.
GetandSetraise an error on Linux. On supported platforms,Getstill returnsnilfor an empty or non-text clipboard. - Dialog is native on Windows and macOS; on Linux it needs Zenity, KDialog, or YAD installed.
- Linux input captures keyboards, mice, and trackpoints through evdev, but
not touchpads. It sends relative movement through
uinput, where libinput applies the desktop’s pointer settings. Choose a flat acceleration profile there if script-driven movement should be 1:1.HID.MoveToandInput.GetMousePoshave no pointer source on Linux in either mode. - App (application-level launch / focus / hide / quit) is full on macOS. On
Windows, apps are named by executable (
chromeorchrome.exe),Activatefocuses a visible window of a running app without launching it,Quitcloses the app’s windows (tray apps may keep running), andHideandIsHiddenraise an error. On Linux everyAppcall raises;Process(exists / list / kill) still works there.
platforms
modeline key or [runtime] platforms in rebind.toml. Rebind refuses to load it
elsewhere, at load time, with a message naming the declared list. _REBIND.platform
reports the host OS for code that branches instead.
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: