- Table of Contents
Eruption ships with many features, some of which are not obvious or self-explanatory. This handbook has been written in the hopes to make more of the features accessible to the users of Eruption.
- Integrated Lua interpreter
- LED Control via Lua scripts
- Macros via Lua scripts
- Multiple Lua scripts may be executed in parallel, with their outputs and effects combined
- Allows for construction of complex "effect pipelines"
- Event-based architecture
- Daemon plugins may export functions to Lua
- Profiles may be switched at runtime via a D-Bus method
- A GNOME based profile switcher extension is available
- Some of the profiles require a CPU built later than 2015 with support for SIMD/AVX2
This project is still in an early stage of development, and thus may contain some possibly serious bugs.
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
The following concepts are essential to using Eruption
.
- Lua scripts and their corresponding metadata files (manifests) are the basic building block of the effects provided by Eruption.
- Profiles combine one or multiple Lua scripts to a logical unit, and are able to override the exposed parameters of each of the scripts.
- A single profile can be assigned to a slot. A slot can be activated via
FN
+F1
up toFN
+F4
.
This means that you can assign up to 4 slots which may be quickly switched between by using the aforementioned hotkeys.
Implements the core functionality of Eruption. It provides the basic functionality like a support API written in Rust,
as well as an embedded Lua interpreter. It needs special elevated privileges to access the hardware of your system.
Normally runs as the eruption
user. It makes use of realtime scheduling where available, to reduce input lag (latency).
The daemon proper provides a D-Bus
based API as well as an interface exposed over UNIX Domain sockets, for use by
the session daemons and the Eruption SDK
as well.
Further reading: Eruption software architecture
Provides support for audio related tasks. Runs in the session of the currently logged in user.
- Notifies the
eruption
daemon about changes in the audio subsystem e.g.:Muted
orUnmuted
state - Audio SFX playback, used for the Sound FX feature
- Audio stream capture, used for RMS calculation (Loudness) and audio Spectrum Analyzer (Fourier Transform/FFT calculation)
To enable the session daemon please run the following command, logged in as your Linux user (without sudo in front of it)
systemctl --user enable --now eruption-audio-proxy.service
Provides support for additional effects. Runs in the session of the currently logged in user.
Ambient Effect
: Processes the screen's content and displays it on the canvas
To enable the session daemon please run the following command, logged in as your Linux user (without sudo in front of it)
systemctl --user enable --now eruption-fx-proxy.service
Watches for process execution events as well as changes to the top level window state on X11 or Wayland. Runs in the session of the currently logged in user.
- Tells the
eruption
daemon what profiles or slots to activate, based on usage activity of the system.
With this feature you are able to automatically switch between profiles, e.g. when a certain window gains focus.
To enable the session daemon please run the following command, logged in as your Linux user (without sudo in front of it)
systemctl --user enable --now eruption-process-monitor.service
To add a rule you may either use
Pyroclasm UI
, theEruption GUI
or via the CLI:
eruption-process-monitor rules add window-name '.*YouTube.*Google Chrome' /var/lib/eruption/profiles/spectrum-analyzer-swirl.profile
This will switch to the Spectrum Analyzer as soon as you activate a YouTube tab in the Google Chrome browser.
To list all rules via the CLI, please run:
eruption-process-monitor rules list
eruptionctl switch profile /var/lib/eruption/profiles/swirl-perlin-rainbow.profile
Or the shortened form:
eruptionctl switch profile swirl-perlin-rainbow.profile
eruptionctl switch slot 4
A client for the Lua embedded Network FX server.
The Pyroclasm UI
is currently available as a technology preview version only
The Eruption GUI
is currently available as a technology preview version only
Eruption ships with a feature rich macro system.
Key 1 | + Key 2 | + Key 3 | Function |
---|---|---|---|
FN | F1 | Switch to slot 1 | |
FN | F2 | Switch to slot 2 | |
FN | F3 | Switch to slot 3 | |
FN | F4 | Switch to slot 4 | |
FN | F9 | Previous track | |
FN | F10 | Stop | |
FN | F11 | Play/Pause | |
FN | F12 | Next track | |
FN | Game Mode | Enter Game Mode / Activates Easy Shift+ |
- Enable
Game Mode
- Press and hold
Easy Shift
Key - Switch layers using
INS
-PAGE DOWN
keys - Activate a Lua macro by pressing a highlighted key, while still holding down the
Easy Shift
key
Eruption ships with support for the Eruption Software Development Kit (SDK) in the default installation.
For a Python example, please refer to sdk/examples/python
.
For a Rust example, please refer to sdk/examples/rust
.
For a C++ example, please refer to sdk/examples/c++
.
Please feel free to report issues and minor paper cuts that you encounter on the project's GitHub site at https://github.com/X3n0m0rph59/eruption/