initial commit
This commit is contained in:
49
controller/openrgb/client.go
Normal file
49
controller/openrgb/client.go
Normal file
@@ -0,0 +1,49 @@
|
||||
package openrgb
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os/exec"
|
||||
)
|
||||
|
||||
// Client controls RGB devices via the openrgb CLI.
|
||||
type Client struct {
|
||||
bin string
|
||||
}
|
||||
|
||||
func Connect() (*Client, error) {
|
||||
bin, err := exec.LookPath("openrgb")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("openrgb not found in PATH: %w", err)
|
||||
}
|
||||
|
||||
// Verify openrgb can list devices (confirms it's running/accessible)
|
||||
cmd := exec.Command(bin, "--list-devices")
|
||||
if out, err := cmd.CombinedOutput(); err != nil {
|
||||
return nil, fmt.Errorf("openrgb list-devices failed: %w\n%s", err, out)
|
||||
}
|
||||
|
||||
return &Client{bin: bin}, nil
|
||||
}
|
||||
|
||||
func (c *Client) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetAllOff sets all devices to black (off) using direct mode.
|
||||
func (c *Client) SetAllOff() error {
|
||||
cmd := exec.Command(c.bin, "--mode", "direct", "--color", "000000")
|
||||
if out, err := cmd.CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("openrgb set off: %w\n%s", err, out)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// SetAllOn sets all devices to the given color.
|
||||
func (c *Client) SetAllOn(r, g, b byte) error {
|
||||
color := fmt.Sprintf("%02X%02X%02X", r, g, b)
|
||||
cmd := exec.Command(c.bin, "--mode", "direct", "--color", color)
|
||||
if out, err := cmd.CombinedOutput(); err != nil {
|
||||
return fmt.Errorf("openrgb set on: %w\n%s", err, out)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user