A Linux user-mode input and RGB LED driver for keyboards, mice and other devices
For a list of recent news and noteworthy changes, please refer to CHANGES.md
0.4.0, experimental)0.5.0, experimental)0.1.19, testing)0.1.20, experimental, untested)0.1.20, experimental, untested)0.1.23, experimental)0.5.0, experimental)0.1.20, experimental)0.1.20, testing)0.2.0, experimental)0.1.23, testing)0.2.0, experimental)0.2.0, experimental)0.2.0, testing)0.1.23, testing)0.1.20, experimental)0.1.23, testing)0.1.23, stable)Please see DEVICES.md for further information
NOTE
Experimental drivers are
disabledin the default configuration!To enable support for experimental drivers, please edit
/etc/eruption/eruption.confand setdriver_maturity_level = "experimental"After that, please restart the eruption daemon
sudo systemctl restart eruption.service
⚠️ This project is still in the early stages of development, and thus may contain some possibly serious bugs. ⚠️
For a more mature RGB lighting solution please also consider the following alternatives
OpenRGB - OPEN SOURCE RGB LIGHTING CONTROL THAT DOESN'T DEPEND ON MANUFACTURER SOFTWARE
https://openrgb.org/
https://gitlab.com/CalcProgrammer1/OpenRGB
For configuring gaming mice you may want to consider:
libratbag/piper - libratbag A DBus daemon to configure input devices, mainly gaming mice https://github.com/libratbag
For key remapping without LED specific features
If you are more interested in simply remapping your keys at the input level, or even require application-specific key remapping you should consider:
Keyd - A key remapping daemon for linux https://github.com/rvaiya/keyd
If you ever need to forcefully disable the Eruption daemon you may do so by adding the following text snippet to the bootloader's (e.g. GRUB) kernel command line:
systemd.mask=eruption.service
Or with systemctl to mask the service:
sudo systemctl mask eruption.service
You can always re-enable the Eruption service with the command:
sudo systemctl unmask eruption.service
Eruption is a Linux daemon written in the Rust programming language. Eruption consists of a core daemon providing an integrated Lua interpreter, and additional plugin components. Its primary usage is to execute Lua scripts that may react to certain events on the system like e.g. Timer tick, Key press or Mouse move and subsequently control the connected LED devices and/or transform the user input via the integrated programmable macro feature. Eruption plugins may export additional functionality to the Lua scripting engine. Multiple Lua scripts may be run in parallel, each one in its own VM thread. A Lua script shall compute some kind of effect resulting in a 'color map'. Each Lua scripts 'submitted color map' will be combined with all other scripts 'submitted color maps' using a compositor that performs an alpha blending step on each 'color map' before it finally gets sent to the connected LED devices.
Eruption is split into multiple independent processes: eruption, the core daemon that handles hardware access running as the root user, and multiple session daemons, most notably eruption-audio-proxy that provides audio related functionality to the core daemon, and eruption-process-monitor that is able to automatically switch profiles based on system usage. Both of these session daemons run as the respective logged-in user.
To install the latest git snapshot please use the package named
eruption-gitinstead of the stable packageeruption
paru -Syu aur/eruption
systemctl --user enable --now eruption-fx-proxy.service
systemctl --user enable --now eruption-audio-proxy.service
systemctl --user enable --now eruption-process-monitor.service
sudo systemctl enable --now eruption.service
sudo dnf copr enable x3n0m0rph59/eruption
sudo dnf install eruption
systemctl --user enable --now eruption-fx-proxy.service
systemctl --user enable --now eruption-audio-proxy.service
systemctl --user enable --now eruption-process-monitor.service
sudo systemctl enable --now eruption.service
sudo add-apt-repository ppa:x3n0m0rph59/eruption
sudo apt update
sudo apt install eruption
systemctl --user enable --now eruption-fx-proxy.service
systemctl --user enable --now eruption-audio-proxy.service
systemctl --user enable --now eruption-process-monitor.service
sudo systemctl enable --now eruption.service
git clone https://github.com/eruption-project/eruption.git
cd eruption
make
sudo make install
make start
To remove Eruption from your system run:
make stop
sudo make uninstall
Please refer to INSTALL.md for further information, e.g. the dependencies you need to install to be able to successfully build Eruption from source.
You may want to try the Eruption Profile Switcher GNOME Shell extension that enables easy switching of profiles on the fly
Eruption currently has built-in support for the following audio APIs:
PipeWire (via the PulseAudio interface of PipeWire)PulseAudioAudio support is provided by eruption-audio-proxy.service.
eruption-audio-proxy DaemonAs of Eruption 0.1.23 it is no longer necessary to grant the root user full access to the PipeWire or PulseAudio session instance. Therefore, it is no longer required to edit configuration files. Just enable the eruption-audio-proxy session daemon and assign a device monitor to listen on, e.g. by using pavucontrol.
systemctl --user enable --now eruption-audio-proxy.service
NOTE: Please do not use
sudoin front of the command since it has to act on the session instance of systemd
Next, switch to a profile that utilizes the audio API of Eruption:
eruptionctl switch profile spectrum-analyzer-swirl.profile
Then use pavucontrol to assign a monitor of an audio device to the Eruption audio grabber.
NOTE: You have to select a profile that makes use auf the audio grabber first, otherwise the
eruption-audio-proxywill not open an audio device for recording, and therefore will not be listed
A general overview over the features of Eruption and how to use them
Please see DOCUMENTATION.md for a more thorough explanation of what Eruption is, and how to use and customize it properly.
For further information about the supported Lua functions and libraries, please refer to the developer documentation LIBRARY.md.
For a detailed documentation on how to write your own macros, please refer to MACROS.md
Please find a list of HOWTOs at HOWTO.md
Please find a list of frequently asked questions and their respective answers at FAQs.md
Contributions are always welcome! Please find information on how to contribute at CONTRIBUTING.md
Please see support/scripts/examples/*.lua directory for Lua scripting examples.