inputplug is a very simple daemon which monitors XInput events and runs arbitrary scripts on hierarchy change events (such as a device being attached, removed, enabled or disabled).
To build the project, run cargo build
.
inputplug — XInput event monitor
inputplug [-v] [-n] [-d] [-0] -c command-prefix
inputplug [-h|--help]
inputplug is a daemon which connects to a running X server and monitors its XInput hierarchy change events. Such events arrive when a device is being attached or removed, enabled or disabled etc.
When a hierarchy change happens, inputplug parses the event notification structure, and calls the command specified by command-prefix. The command receives four arguments:
- command-prefix event-type device-id device-type device-name
Event type may be one of the following:
- XIMasterAdded
- XIMasterRemoved
- XISlaveAdded
- XISlaveRemoved
- XISlaveAttached
- XISlaveDetached
- XIDeviceEnabled
- XIDeviceDisabled
Device type may be any of those:
- XIMasterPointer
- XIMasterKeyboard
- XISlavePointer
- XISlaveKeyboard
- XIFloatingSlave
Device identifier is an integer. The device name may have embedded spaces.
A summary of options is included below.
-
-h, --help
Show help (--help shows more details).
-
-v
Be a bit more verbose.
-
-n
Start up, monitor events, but don't actually run anything. With verbose more enabled, would print the actual command it'd run. This implies -d.
-
-d
Don't daemonise. Run in the foreground.
-
-0
On start, trigger added and enabled events for each plugged devices. A master device will trigger the "added" event while a slave device will trigger both the "added" and the "enabled" device.
-
-c command-prefix
Command prefix to run. Unfortunately, currently this is passed to execvp(3) directly, so spaces aren't allowed. This is subject to change in future.
-
-p pidfile
Write the process ID of the running daemon to the file pidfile
-
DISPLAY
X11 display to connect to.
Copyright (C) 2013, 2014, 2018, 2020, 2021 Andrej Shadura.
Copyright (C) 2014, 2020 Vincent Bernat.
Licensed as MIT/X11.
Andrej Shadura [email protected]