Files
smart-rgb/STORY.md
2024-05-02 21:20:02 -05:00

3.7 KiB

story

I like to write a short story of a repository's development sometimes.

Sketching and Testing

Right now, I have a rough sketch of what my software is going to need, and what it's going to do.

  • I might use this Tokio framework for idling and receiving notices while processing events. It seems like overkill, but if I plan to use an automatic configuration reader, than it'd be useful.
  • I am unsure at this time how to process and log events.
  • Currently, creating a Windows service might be fast, but it also seems to make development slow.
    • Would supporting a separate stage Windows process be difficult? It seems like creating a service is just a bunch of boilerplate for running a process.
    • The process shows up in Task Manager like normal anyways.
  • I'm unsure right now how to properly abstract the sleep/lock/idle states in both Windows and Linux. This might be really hard and annoying. Uggg.

Resources:

Service vs Window

So initial studies were pretty confusing as most of the solutions for detecting changes in lock screen or sleep mode used Wndproc, which is a callback installed when creating a Window; a solution that I really wasn't interested in.

On top of being complex as hell, it required hiding the window manually using special SW_HIDE magic, and it sounded wrong. Also, I don't think services should have windows at all.

Zone Size Testing

Once I looked into the actual openrgb-rs crate, I realized it was kind of old, and wanted to also see if I could fix another issue I'm having: Zone Sizing.

The zone sizes I save are never remembered, and I have no idea if they're the appropriate sizes. I thought it would be cool to create a little utility to try and size them up and down, testing the LEDs one by one until I was certain of the required size.

Unfortunately, zone resizing doesn't work for me at all, so the project idea was a bust.

I tried connecting with the OpenRGB community, but despite activity in the Discord, no one has responded to me as of now. Yikes.

Profile Loading

Luckily though, profile loading works fine and it was easy enough to get the channels setup for loading two different profiles.

When I lock, my service quickly sends a TCP message to the OpenRGB server running, loading the Off profile. Then, once I unlock, it sends the profile load command for the On profile. Yay.