switch readme
This commit is contained in:
parent
64193c8d7b
commit
3a151898dc
66
README.md
66
README.md
@ -1,3 +1,67 @@
|
||||
# udev-filter
|
||||
Super fast and efficient way of only getting udev events you desire.
|
||||
It provides an efficient way to perform automatic tasks when any device related event occurs,
|
||||
entirely in userspace and *without adding any udev rules*!
|
||||
|
||||
Efficient way of performing userspace actions on udev events
|
||||
**udev-filter** listens to events via `udevadm monitor -p`.
|
||||
It matches the udev events to event properties that are passed as command arguments.
|
||||
When all properties of an event are registered, the program ouputs the name of the event, as defined by the user.
|
||||
|
||||
## Examples
|
||||
```shell
|
||||
udev-filter --event=USB_REMOVED ACTION=remove
|
||||
USB_REMOVED
|
||||
USB_REMOVED
|
||||
...
|
||||
```
|
||||
prints `USB_REMOVED` any time a USB device is removed.
|
||||
The name after --event can be freely chosen.
|
||||
Another, more useful example might be:
|
||||
|
||||
```shell
|
||||
udev-filter --event=YUBIKEY_ADDED ACTION=add ID_USB_VENDOR=Yubico
|
||||
```
|
||||
prints `YUBIKEY_ADDED` every time a device with vendor id "Yubico" is added.
|
||||
|
||||
You can, of course, also listen to many events add once. To combine the previous two:
|
||||
```shell
|
||||
udev-filter \
|
||||
--event=USB_REMOVED ACTION=remove SUBSYSTEM=USB \
|
||||
--event=YUBIKEY_ADDED ACTION=add ID_USB_VENDOR=Yubico"
|
||||
```
|
||||
|
||||
### Performing actions on events
|
||||
To automatically open yubico-authenticator every time a yubikey is connected, create
|
||||
this shell script and run it in the background:
|
||||
```shell
|
||||
# stdbuf is necessary to force buffer flushing on newlines
|
||||
stdbuf -oL ./udev-filter --command-add="-s usb" \
|
||||
--event=YUBIKEY_ADDED ACTION=add ID_USB_VENDOR=Yubico | \
|
||||
while read EVENT; do
|
||||
# in this example the only possible event is YUBIKEY_ADDED, so the switch-case is not necessary,
|
||||
# but it is useful for further expansion
|
||||
case $EVENT in
|
||||
YUBIKEY_ADDED)
|
||||
notify-send "Yubikey Added!"
|
||||
{ pgrep yubico || yubico-authenticator & }
|
||||
;;
|
||||
*)
|
||||
notify-send "Unhandled event: $EVENT"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
```
|
||||
Because **udev-filter** relies on events instead of polling, this script will consume near zero resources.
|
||||
It will only do something whenever a udev event occurs.
|
||||
|
||||
|
||||
To find out which properties you need to query, run `udevadm monitor -p`.
|
||||
To limit the events to a certain subsystem, add `-s <subsystem>` to udevadm, and later `--command-add="-s <subsystem>"` to `udev-filter`.
|
||||
|
||||
## Installation
|
||||
gcc, with glibc++ for C++23 and GNU make are required, which will be available in most modern Linux distributions already.
|
||||
```
|
||||
cd src
|
||||
make release
|
||||
```
|
||||
will create `../udev-filter`. Copy it anywhere you want, for example `~/.local/bin`
|
||||
|
67
readme.md
67
readme.md
@ -1,67 +0,0 @@
|
||||
# udev-filter
|
||||
Super fast and efficient way of only getting udev events you desire.
|
||||
It provides an efficient way to perform automatic tasks when any device related event occurs,
|
||||
entirely in userspace and *without adding any udev rules*!
|
||||
|
||||
**udev-filter** listens to events via `udevadm monitor -p`.
|
||||
It matches the udev events to event properties that are passed as command arguments.
|
||||
When all properties of an event are registered, the program ouputs the name of the event, as defined by the user.
|
||||
|
||||
## Examples
|
||||
```shell
|
||||
udev-filter --event=USB_REMOVED ACTION=remove
|
||||
USB_REMOVED
|
||||
USB_REMOVED
|
||||
...
|
||||
```
|
||||
prints `USB_REMOVED` any time a USB device is removed.
|
||||
The name after --event can be freely chosen.
|
||||
Another, more useful example might be:
|
||||
|
||||
```shell
|
||||
udev-filter --event=YUBIKEY_ADDED ACTION=add ID_USB_VENDOR=Yubico
|
||||
```
|
||||
prints `YUBIKEY_ADDED` every time a device with vendor id "Yubico" is added.
|
||||
|
||||
You can, of course, also listen to many events add once. To combine the previous two:
|
||||
```shell
|
||||
udev-filter \
|
||||
--event=USB_REMOVED ACTION=remove SUBSYSTEM=USB \
|
||||
--event=YUBIKEY_ADDED ACTION=add ID_USB_VENDOR=Yubico"
|
||||
```
|
||||
|
||||
### Performing actions on events
|
||||
To automatically open yubico-authenticator every time a yubikey is connected, create
|
||||
this shell script and run it in the background:
|
||||
```shell
|
||||
# stdbuf is necessary to force buffer flushing on newlines
|
||||
stdbuf -oL ./udev-filter --command-add="-s usb" \
|
||||
--event=YUBIKEY_ADDED ACTION=add ID_USB_VENDOR=Yubico | \
|
||||
while read EVENT; do
|
||||
# in this example the only possible event is YUBIKEY_ADDED, so the switch-case is not necessary,
|
||||
# but it is useful for further expansion
|
||||
case $EVENT in
|
||||
YUBIKEY_ADDED)
|
||||
notify-send "Yubikey Added!"
|
||||
{ pgrep yubico || yubico-authenticator & }
|
||||
;;
|
||||
*)
|
||||
notify-send "Unhandled event: $EVENT"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
```
|
||||
Because **udev-filter** relies on events instead of polling, this script will consume near zero resources.
|
||||
It will only do something whenever a udev event occurs.
|
||||
|
||||
|
||||
To find out which properties you need to query, run `udevadm monitor -p`.
|
||||
To limit the events to a certain subsystem, add `-s <subsystem>` to udevadm, and later `--command-add="-s <subsystem>"` to `udev-filter`.
|
||||
|
||||
## Installation
|
||||
gcc, with glibc++ for C++23 and GNU make are required, which will be available in most modern Linux distributions already.
|
||||
```
|
||||
cd src
|
||||
make release
|
||||
```
|
||||
will create `../udev-filter`. Copy it anywhere you want, for example `~/.local/bin`
|
Loading…
x
Reference in New Issue
Block a user