{"id":23739528,"url":"https://github.com/eruption-project/eruption","last_synced_at":"2025-09-04T15:31:00.222Z","repository":{"id":37079470,"uuid":"187756258","full_name":"eruption-project/eruption","owner":"eruption-project","description":"Realtime RGB LED Driver for Linux","archived":false,"fork":false,"pushed_at":"2023-12-19T00:47:08.000Z","size":97487,"stargazers_count":246,"open_issues_count":60,"forks_count":32,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-05-23T04:46:43.258Z","etag":null,"topics":["aimo","driver","effects","eruption","led","lighting","linux","rgb","roccat","vulcan"],"latest_commit_sha":null,"homepage":"https://eruption-project.org/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eruption-project.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/assets/eruption-gui-gtk3/eruption-gui-gtk3.desktop","governance":null,"roadmap":null,"authors":null},"funding":{"github":["eruption-project"],"patreon":"Eruption","open_collective":"eruption","ko_fi":"eruption"}},"created_at":"2019-05-21T03:38:13.000Z","updated_at":"2024-05-17T16:38:28.000Z","dependencies_parsed_at":"2023-12-23T17:41:35.015Z","dependency_job_id":null,"html_url":"https://github.com/eruption-project/eruption","commit_stats":{"total_commits":1475,"total_committers":14,"mean_commits":"105.35714285714286","dds":0.02779661016949153,"last_synced_commit":"4884ace33ed560ba058e5fa2824b4f3852f0ca90"},"previous_names":["eruption-project/eruption","x3n0m0rph59/eruption"],"tags_count":17,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eruption-project%2Feruption","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eruption-project%2Feruption/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eruption-project%2Feruption/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eruption-project%2Feruption/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eruption-project","download_url":"https://codeload.github.com/eruption-project/eruption/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231703263,"owners_count":18413646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aimo","driver","effects","eruption","led","lighting","linux","rgb","roccat","vulcan"],"created_at":"2024-12-31T09:36:59.416Z","updated_at":"2024-12-31T09:38:27.328Z","avatar_url":"https://github.com/eruption-project.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"#\"\u003e\u003cimg src=\"docs/assets/eruption.jpg\" alt=\"Eruption on a ROCCAT Vulcan 12x\" /\u003e\u003c/a\u003e\u0026nbsp;\u0026nbsp;\n\u003c/div\u003e\n\n![License](https://img.shields.io/github/license/X3n0m0rph59/eruption?style=flat-square)\n![Stars](https://img.shields.io/github/stars/X3n0m0rph59/eruption?style=flat-square)\n![Crates.io](https://img.shields.io/crates/v/eruption-sdk?style=flat-square)\n![Downloads](https://img.shields.io/crates/d/eruption-sdk?style=flat-square)\n\n[![Continuous integration](https://github.com/eruption-project/eruption/actions/workflows/rust.yml/badge.svg?branch=master)](https://github.com/eruption-project/eruption/actions/workflows/rust.yml)\n[![Copr build status](https://copr.fedorainfracloud.org/coprs/x3n0m0rph59/eruption/package/eruption/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/x3n0m0rph59/eruption/package/eruption/)\n\n\u003cdiv align=\"center\"\u003e\n  \u003cbr\u003e\u003c/br\u003e\n  \u003ca href=\"https://www.gnu.org/\"\u003e\n    \u003cimg src=\"docs/assets/GPLv3_Logo.svg\" height=\"50\" alt=\"GPLv3 logo\" /\u003e\n  \u003c/a\u003e\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://www.rust-lang.org/\"\u003e\n    \u003cimg src=\"docs/assets/rustacean-orig-noshadow.svg\" height=\"50\" alt=\"Rustacean logo\" /\u003e\n  \u003c/a\u003e\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://kernel.org/\"\u003e\n    \u003cimg src=\"docs/assets/tux.svg\" height=\"50\" alt=\"Linux Tux\" /\u003e\n  \u003cbr\u003e\u003c/br\u003e\n\u003c/div\u003e\n\n# Table of Contents\n\n- [Table of Contents](#table-of-contents)\n  - [Eruption - Realtime RGB LED Software for Linux](#eruption---realtime-rgb-led-software-for-linux)\n    - [Image and Video Gallery](#image-and-video-gallery)\n  - [Device Compatibility](#device-compatibility)\n    - [Keyboards](#keyboards)\n    - [Mice](#mice)\n    - [Miscellaneous Devices](#miscellaneous-devices)\n  - [Important Information](#important-information)\n    - [Troubleshooting](#troubleshooting)\n  - [Design Overview](#design-overview)\n    - [Introduction](#introduction)\n    - [Systems Architecture](#systems-architecture)\n  - [Installation](#installation)\n    - [Arch Linux and derivatives like ArcoLinux or Manjaro](#arch-linux-and-derivatives-like-arcolinux-or-manjaro)\n    - [Fedora based](#fedora-based)\n    - [Ubuntu or Pop!\\_OS](#ubuntu-or-pop_os)\n    - [From Source](#from-source)\n  - [After Setup](#after-setup)\n    - [Support for Audio Playback and Capture](#support-for-audio-playback-and-capture)\n  - [The `eruption-audio-proxy` Daemon](#the-eruption-audio-proxy-daemon)\n  - [Further Reading](#further-reading)\n    - [Features Overview (a.k.a The Eruption Handbook)](#features-overview-aka-the-eruption-handbook)\n    - [Other Documentation](#other-documentation)\n  - [HOWTOs](#howtos)\n  - [FAQs](#faqs)\n  - [Contributing](#contributing)\n\n---\n\n## Eruption - Realtime RGB LED Software for Linux\n\nA Linux user-mode input and RGB LED driver for keyboards, mice and other devices\n\nFor a list of recent news and noteworthy changes, please refer to [CHANGES.md](CHANGES.md)\n\n### Image and Video Gallery\n\n[![Eruption Video](https://img.youtube.com/vi/ig_71zg14nQ/0.jpg)](https://www.youtube.com/watch?v=ig_71zg14nQ)\n\n![Eruption GUI screenshot](docs/assets/screenshot-01.png)\n\n![Eruption GUI screenshot](docs/assets/screenshot-02.png)\n\n![Eruption GUI screenshot](docs/assets/screenshot-03.png)\n\n---\n\n## Device Compatibility\n\n### Keyboards\n\n- [ ] Wooting Two HE (ARM) series keyboard (work-in-progress, as of version `0.4.0`, experimental)\n- [ ] ROCCAT Vulcan II Max series keyboard (work-in-progress, as of version `0.5.0`, experimental)\n- [x] ROCCAT Vulcan 100/12x series keyboard (fully supported, stable)\n- [x] ROCCAT Vulcan Pro TKL series keyboard (98% supported as of version `0.1.19`, testing)\n- [ ] ROCCAT Vulcan TKL series keyboard (work-in-progress, as of version `0.1.20`, experimental, untested)\n- [ ] ROCCAT Vulcan Pro series keyboard (work-in-progress, as of version `0.1.20`, experimental, untested)\n- [ ] ROCCAT Magma series keyboard (work-in-progress, as of version `0.1.23`, experimental)\n- [ ] ROCCAT Pyro series keyboard (work-in-progress, as of version `0.5.0`, experimental)\n- [ ] Corsair Strafe Gaming Keyboard (non-RGB/monochrome only, as of version `0.1.20`, experimental)\n\n### Mice\n\n- [x] ROCCAT Kone Pure Ultra (stable)\n- [x] ROCCAT Burst Pro (as of version `0.1.20`, testing)\n- [ ] ROCCAT Kain 100 AIMO (as of version `0.2.0`, experimental)\n- [x] ROCCAT Kain 2xx AIMO (as of version `0.1.23`, testing)\n- [ ] ROCCAT Kone XP (work-in-progress, as of version `0.2.0`, experimental)\n- [ ] ROCCAT Kone Pro (work-in-progress, as of version `0.2.0`, experimental)\n- [x] ROCCAT Kone Pro Air (work-in-progress, as of version `0.2.0`, testing)\n- [ ] ROCCAT Kone Aimo (experimental)\n- [ ] ROCCAT Kone Aimo Remastered (experimental)\n- [ ] ROCCAT Kova AIMO (testing)\n- [ ] ROCCAT Kova 2016 (as of version `0.1.23`, testing)\n- [ ] ROCCAT Kone XTD (as of version `0.1.20`, experimental)\n\n### Miscellaneous Devices\n\n- [x] ROCCAT/Turtle Beach Elo 7.1 Air Wireless Headset (work-in-progress, as of version `0.1.23`, testing)\n- [x] ROCCAT Sense AIMO XXL (as of version `0.1.23`, stable)\n- [x] Adalight/Custom serial LEDs (testing)\n\nPlease see [DEVICES.md](DEVICES.md) for further information\n\n\u003e **NOTE**\n\u003e\n\u003e **Experimental** drivers are `disabled` in the default configuration!\n\u003e\n\u003e To enable support for experimental drivers, please edit `/etc/eruption/eruption.conf` and set\n\u003e\n\u003e ```toml\n\u003e driver_maturity_level = \"experimental\"\n\u003e ```\n\u003e\n\u003e After that, please restart the eruption daemon\n\u003e\n\u003e ```shell\n\u003e sudo systemctl restart eruption.service\n\u003e ```\n\n## Important Information\n\n⚠️ This project is still in the early stages of development, and thus may contain some possibly serious bugs. ⚠️\n\n**For a more mature RGB lighting solution please also consider the following alternatives**\n\n**OpenRGB** - OPEN SOURCE RGB LIGHTING CONTROL THAT DOESN'T DEPEND ON MANUFACTURER SOFTWARE \\\n\u003chttps://openrgb.org/\u003e\\\n\u003chttps://gitlab.com/CalcProgrammer1/OpenRGB\u003e\n\nFor configuring gaming mice you may want to consider:\n\n**libratbag/piper** -\nlibratbag A DBus daemon to configure input devices, mainly gaming mice\n\u003chttps://github.com/libratbag\u003e\n\n**For key remapping without LED specific features**\n\nIf you are more interested in simply remapping your keys at the input level, or even require application-specific key remapping you should consider:\n\n**Keyd** - A key remapping daemon for linux\n\u003chttps://github.com/rvaiya/keyd\u003e\n\n### Troubleshooting\n\nIf you ever need to forcefully disable the Eruption daemon you may do so by adding\nthe following text snippet to the bootloader's (e.g. GRUB) kernel command line:\n\n```shell\nsystemd.mask=eruption.service\n```\n\nOr with systemctl to mask the service:\n\n```shell\nsudo systemctl mask eruption.service\n```\n\nYou can always re-enable the Eruption service with the command:\n\n```shell\nsudo systemctl unmask eruption.service\n```\n\n---\n\n## Design Overview\n\n### Introduction\n\nEruption is a Linux daemon written in the Rust programming language. Eruption consists of a core daemon providing an integrated\nLua interpreter, and additional plugin components. Its primary usage is to execute Lua scripts that may react to certain\nevents on the system like e.g. `Timer tick`, `Key press` or `Mouse move` and subsequently control the connected LED\ndevices and/or transform the user input via the integrated programmable macro feature.\nEruption plugins may export additional functionality to the Lua scripting engine. Multiple Lua scripts may be run in\nparallel, each one in its own VM thread. A Lua script shall compute some kind of effect resulting in a 'color map'.\nEach Lua scripts 'submitted color map' will be combined with all other scripts 'submitted color maps' using a compositor\nthat performs an alpha blending step on each 'color map' before it finally gets sent to the connected LED devices.\n\n### Systems Architecture\n\nEruption is split into multiple independent processes: `eruption`, the core daemon that handles hardware access running\nas the `root` user, and multiple session daemons, most notably `eruption-audio-proxy` that provides audio related\nfunctionality to the core daemon, and `eruption-process-monitor` that is able to automatically switch profiles based\non system usage. Both of these session daemons run as the respective logged-in user.\n\n---\n\n## Installation\n\n\u003e To install the latest git snapshot please use the package named `eruption-git` instead of the stable package `eruption`\n\n### Arch Linux and derivatives like ArcoLinux or Manjaro\n\n```shell\nparu -Syu aur/eruption\n\nsystemctl --user enable --now eruption-fx-proxy.service\nsystemctl --user enable --now eruption-audio-proxy.service\nsystemctl --user enable --now eruption-process-monitor.service\n\nsudo systemctl enable --now eruption.service\n```\n\n### Fedora based\n\n```shell\nsudo dnf copr enable x3n0m0rph59/eruption\nsudo dnf install eruption\n\nsystemctl --user enable --now eruption-fx-proxy.service\nsystemctl --user enable --now eruption-audio-proxy.service\nsystemctl --user enable --now eruption-process-monitor.service\n\nsudo systemctl enable --now eruption.service\n```\n\n### Ubuntu or Pop!\\_OS\n\n```shell\nsudo add-apt-repository ppa:x3n0m0rph59/eruption\nsudo apt update\nsudo apt install eruption\n\nsystemctl --user enable --now eruption-fx-proxy.service\nsystemctl --user enable --now eruption-audio-proxy.service\nsystemctl --user enable --now eruption-process-monitor.service\n\nsudo systemctl enable --now eruption.service\n```\n\n### From Source\n\n```shell\ngit clone https://github.com/eruption-project/eruption.git\ncd eruption\nmake\nsudo make install\nmake start\n```\n\nTo remove Eruption from your system run:\n\n```shell\nmake stop\nsudo make uninstall\n```\n\nPlease refer to [INSTALL.md](docs/INSTALL.md) for further information, e.g. the dependencies you need to install to be\nable to successfully build Eruption from source.\n\n---\n\n## After Setup\n\n\u003e You may want to try the\n\u003e [Eruption Profile Switcher](https://extensions.gnome.org/extension/2621/eruption-profile-switcher/)\n\u003e GNOME Shell extension that enables easy switching of profiles on the fly\n\n![eruption-profile-switcher screenshot](docs/assets/screenshot-profile-switcher-01.jpg)\n\n![eruption-profile-switcher screenshot](docs/assets/screenshot-profile-switcher-02.jpg)\n\n### Support for Audio Playback and Capture\n\nEruption currently has built-in support for the following audio APIs:\n\n- `PipeWire` (via the `PulseAudio` interface of `PipeWire`)\n- `PulseAudio`\n\nAudio support is provided by `eruption-audio-proxy.service`.\n\n## The `eruption-audio-proxy` Daemon\n\nAs of Eruption `0.1.23` it is no longer necessary to grant the `root` user full access to the `PipeWire` or `PulseAudio`\nsession instance. Therefore, it is no longer required to edit configuration files. Just enable the `eruption-audio-proxy`\nsession daemon and assign a device monitor to listen on, e.g. by using `pavucontrol`.\n\n```shell\nsystemctl --user enable --now eruption-audio-proxy.service\n```\n\n\u003e NOTE: Please _do not use `sudo`_ in front of the command since it has to act on the session instance of systemd\n\nNext, switch to a profile that utilizes the audio API of Eruption:\n\n```shell\neruptionctl switch profile spectrum-analyzer-swirl.profile\n```\n\nThen use `pavucontrol` to assign a monitor of an audio device to the Eruption audio grabber.\n\n![audio-grabber pavucontrol](docs/assets/screenshot-audio-grabber-pavucontrol.png)\n\n\u003e NOTE: You have to select a profile that makes use auf the audio grabber first, otherwise the\n\u003e `eruption-audio-proxy` will not open an audio device for recording, and therefore will not be listed\n\n## Further Reading\n\n### Features Overview (a.k.a The Eruption Handbook)\n\nA general overview over the features of Eruption and how to use them\n\n[FEATURES.md](docs/FEATURES.md)\n\n### Other Documentation\n\nPlease see [DOCUMENTATION.md](docs/DOCUMENTATION.md) for a more thorough explanation of what Eruption is, and how to use\nand customize it properly.\n\nFor further information about the supported Lua functions and libraries, please refer to the developer documentation\n[LIBRARY.md](docs/LIBRARY.md).\n\nFor a detailed documentation on how to write your own macros, please refer to [MACROS.md](docs/MACROS.md)\n\n## HOWTOs\n\nPlease find a list of HOWTOs at [HOWTO.md](docs/HOWTO.md)\n\n## FAQs\n\nPlease find a list of frequently asked questions and their respective answers at [FAQs.md](docs/FAQs.md)\n\n## Contributing\n\nContributions are always welcome!\nPlease find information on how to contribute at [CONTRIBUTING.md](CONTRIBUTING.md)\n\nPlease see `support/scripts/examples/*.lua` directory for Lua scripting examples.\n","funding_links":["https://github.com/sponsors/eruption-project","https://patreon.com/Eruption","https://opencollective.com/eruption","https://ko-fi.com/eruption"],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feruption-project%2Feruption","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feruption-project%2Feruption","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feruption-project%2Feruption/lists"}