Skip to content

Azarattum/ColorHoster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Color Hoster 🌈 ⌨️

OpenRGB compatible high-performance SDK server for VIA per-key RGB.

✨ Features:

  • 🎮 OpenRGB Protocol v3 Support - Full compatibility with OpenRGB clients
  • 🔋 Optimized Updates - Only sends changed LED data in minimal chunks
  • 🎨 Flexible Brightness Control - Choose between hue/saturation-only or full RGB+brightness
  • ⌨️ Multi-Keyboard Support - Manage multiple connected devices simultaneously
  • 🦀 Rust-Powered - Async I/O and thread-safe concurrency
  • 🌐 Cross-Platform - Windows/macOS/Linux support (x86 & ARM)
  • 💾 Profile Management - Save/load lighting configurations

CLI Options

Usage: ColorHoster [OPTIONS]

Options:
  -d, --directory <DIRECTORY>  Set a directory to look for VIA `.json` definitions for keyboards [default: <executable directory>]
  -j, --json <JSON>            Add a direct path to a VIA `.json` file (can be multiple)
  -b, --brightness             Allow direct mode to change brightness values
      --profiles <PROFILES>    Set a directory for storing and loading profiles [default: ./profiles]
  -p, --port <PORT>            Set the port to listen on [default: 6742]
  -s, --service <SERVICE>      Manage Color Hoster service [possible values: create, delete, start, stop]
  -h, --help                   Print help
  -V, --version                Print version

Example: ./ColorHoster -b -j ./p1_he_ansi_v1.0.json

Getting Started

Prebuilt Binaries

Download the latest release for your OS.

Configuration

JAO1988 made an excellent guide on how to get ColorHoster running with your keyboard. His repo also has a collection of prebuilt VIA JSON configurations for various keyboards.

For my personal setup you can take a look at my QMK fork for Lemokey P1 HE with ColorHoster support and other cool features (the repo also has my VIA JSON config). For ColorHoster implementation there refer to this commit.

If you have any issues patching VIA RGB support into your firmware or creating a VIA JSON config for your keyboard, ask around in OpenRGB Community Discord (qmk-firmware-hacking channel is a good place to start).

Running

./ColorHoster --brightness --json ./path/to/your_keyboard.json

Client Integration

ColorHoster should be compatible with any OpenRGB v3 protocol client, enabling RGB control through various applications. Some example clients include:

To Connect

  1. Launch ColorHoster with your keyboard configuration
  2. In your RGB control software:
    • Add a new OpenRGB SDK device
    • Set address to 127.0.0.1
    • Set port to 6742 (default)
  3. The client should automatically detect:
    • Keyboard LED layout
    • Available lighting modes
    • Real-time control capabilities

Service Management (--service option)

ColorHoster can run as a background service on any OS using the --service option: create, start, stop, or delete. When you run --service create with any CLI options, those options are saved to a colorhoster.toml config file next to the executable and will become the default options for both service and CLI usage (unless overridden).

Technical Details

VIA's RGB protocol doesn't seem to be documented anywhere, so it was reverse-engineered from the keyboard API in the VIA app. The protocol in ColorHoster is also extended to support per-key brightness adjustments (originally it allowed to modify only hue and saturation).

About

OpenRGB compatible high-performance SDK server for VIA per-key RGB.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •  

Languages