Lux is a command-line interface for controlling and monitoring Govee lighting strips built in Go.

What is Lux?

Lux is a command-line interface for controlling and monitoring Govee lighting strips built in Go. Lux provides it's users with the ability to manage their lighting strips from their desktop computer from any network with an internet connection.

Installation

Currently, to install Lux, you must download the source and compile it your self. After releases are made, we will provide & host various executables.

Commands

  • lux devices

    Lists the devices registered on the user's account

  • lux query 0

    Returns data about the state of a device

  • lux turn 0 on

    Turn a device on or off

  • lux brightness 0 100

    Alter the brightness of a device

  • lux color 0 #0067f4

    Alter the color of a device

  • lux help

    Lists a list of commands and information about the CLI

Contributing

Looking to contribute to Lux? That's great! There are a couple of ways to help out. Translations, bug reports and pull requests are all greatly appreciated. Please refer to our contributing guidelines to get started.

License

Lux
Copyright © 2021 BanDev

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/

Owner
BanDev
BanDev is a collaborative group of developers. We create apps that are entirely Free, Libre and Open Source.
BanDev
Comments
  • lux color command entered as show in example gives error

    lux color command entered as show in example gives error "Not enough arguments required"

    For a device that returns the following information with the lux devices complex:

    DEVICE 0
      MAC Address:    E1:18:D4:AD:FC:32:23:92
      Model:          H6008
      Name:           East bulb
      Controllable:   [✓ Yes]
      Retrievable:    [✓ Yes]
      Commands:       turn, brightness, color, colorTem
    

    This error is given following the shown command:

    lux color 0 #ff0000
    Not enough arguments required. E.g. lux color 0 #0067f4
    

    The command used is taken right from the examples shown after lux help.

    I can't determine any error on my part, and other commands such as lux turn 0 on/off and lux brightness 0/00 works as expected.

    lux help
    Welcome to Lux!
    Lux v1.1.0
    

    Is there something I'm missing?

  • Bump github.com/AlecAivazis/survey/v2 from 2.3.4 to 2.3.5

    Bump github.com/AlecAivazis/survey/v2 from 2.3.4 to 2.3.5

    Bumps github.com/AlecAivazis/survey/v2 from 2.3.4 to 2.3.5.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Recode for v2.0.0 release using cobra

    Recode for v2.0.0 release using cobra

    • [x] Brightness command
    • [x] Color command
    • [x] Devices command
    • [x] Help command
    • [x] Query command
    • [x] Setup command
    • [x] Turn command

    Also

    • [x] Add version command
  • `lux devices`, `lux devices complex`, and `lux devices simple` commands have same output

    `lux devices`, `lux devices complex`, and `lux devices simple` commands have same output

    I noticed when trying to get some additional information about each of my devices that the lux devices... commands all output the same information. See below for the output of all three commands on my installation.

    PS C:\Users\Beau> lux devices
    DEVICE 0
      Name:           East bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 1
      Name:           Bedroom B
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 2
      Name:           Bedroom A
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 3
      Name:           North bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 4
      Name:           South-east bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 5
      Name:           South-west bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    PS C:\Users\Beau> # lux devices complex output
    
    PS C:\Users\Beau> lux devices complex
    DEVICE 0
      Name:           East bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 1
      Name:           Bedroom B
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 2
      Name:           Bedroom A
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 3
      Name:           North bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 4
      Name:           South-east bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 5
      Name:           South-west bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    PS C:\Users\Beau> # lux devices simple output
    
    PS C:\Users\Beau> lux devices simple
    DEVICE 0
      Name:           East bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 1
      Name:           Bedroom B
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 2
      Name:           Bedroom A
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 3
      Name:           North bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 4
      Name:           South-east bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    DEVICE 5
      Name:           South-west bulb
      Model:          H6008
      Controllable:   [✓ Yes]
    

    I don't believe this is the intended output for these commands, except for perhaps the "simple" version. If this is a work-in-progress feature that hasn't been fully implemented and I missed where that was noted, please accept my apologies.

    Lux instance info:

      logged in       [✓ Yes]
      description     Lux is a cli for controlling and monitoring Govee lighting strips
      build           v1.1.1 (x64)
      license         GPL-3.0
      repository      https://github.com/bandev/lux
      up to date      [✓ Yes]
    
  • Configure Renovate

    Configure Renovate

    WhiteSource Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • .github/workflows/go.yml (github-actions)
    • go.mod (gomod)

    Configuration

    🔡 Renovate has detected a custom config for this PR. Feel free to ask for help if you have any doubts and would like it reviewed.

    Important: Now that this branch is edited, Renovate can't rebase it from the base branch any more. If you make changes to the base branch that could impact this onboarding PR, please merge them manually.

    What to Expect

    It looks like your repository dependencies are already up-to-date and no Pull Requests will be necessary right away.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by WhiteSource Renovate. View repository job log here.

  • Update workflow dependencies

    Update workflow dependencies

    • Updates actions/checkout to v3 from v2.
    • Updates actions/setup-go to v3 from v2.
    • Removes the hardcoded Go version so the workflow can now always build on the latest stable version of Go.
    • Add 'Lux' to command name to clarify what the last section of the workflow is doing.
  • Bump github.com/AlecAivazis/survey/v2 from 2.3.2 to 2.3.4

    Bump github.com/AlecAivazis/survey/v2 from 2.3.2 to 2.3.4

    Bumps github.com/AlecAivazis/survey/v2 from 2.3.2 to 2.3.4.

    Release notes

    Sourced from github.com/AlecAivazis/survey/v2's releases.

    v2.3.4

    What's Changed

    Full Changelog: https://github.com/AlecAivazis/survey/compare/v2.3.3...v2.3.4

    v2.3.3

    No release notes provided.

    Commits
    • 459523e Add terminal.Cursor error handling on Windows (#414)
    • 6cbb195 Fix Survey output on Windows (#413)
    • c07023a Skip vi-dependent tests when there is no vi in PATH (#397)
    • 099a968 Fix multiple validator inconsistency (#401)
    • 1b28f27 fix: ensure terminal has required read settings in non-canonical mode (#409)
    • bcabe24 Stricter error handling in tests (#404)
    • 3cabaff Drop proprietary runner dependency in favor of go tooling (#403)
    • a8912d0 fix: error message for MinItems validator (#389)
    • 13bc976 Reconfigure CI to test on all branches (#374)
    • 82fd306 :fire: Gopkg files (#376)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Bump github.com/AlecAivazis/survey/v2 from 2.3.2 to 2.3.3

    Bump github.com/AlecAivazis/survey/v2 from 2.3.2 to 2.3.3

    Bumps github.com/AlecAivazis/survey/v2 from 2.3.2 to 2.3.3.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • Should our first chocolatey release be v1.1.0?

    Should our first chocolatey release be v1.1.0?

    Should our first chocolatey release be v1.1.0, do you think?

    Originally posted by @russellbanks in https://github.com/BanDev/Lux/issues/16#issuecomment-975892632

  • Add setup command

    Add setup command

    Add setup command

    Provides the user with a better way to access their Govee account through lux.

    Merge Checklist

    • [x] Follows lux design guidelines (Github Primer)
    • [x] API Key is stored
    • [x] API Key is checked before storage
    • [x] Shows a warning when a user is already authenticated
    • [ ] Key setup tutorial page live
    • [x] Command has been added to bandev.uk api

    Design

    Implements major design queues from Github Cli Guidelines & AlecAivazis/survey

    The user is asked if they have an API Key

    image

    If they have one, they are prompted to enter it

    image

    Otherwise, they are prompted to follow a tutorial detailing how to create one

    image

  • Add WinGet Releaser

    Add WinGet Releaser

    This pull request adds a workflow that automatically publishes Lux to WinGet every release. Please do not merge this pull request without reading the below and making the required changes (The token part is the important bit) :)

    • runs-on: windows-latest

    The WinGet Releaser action can only run on Windows.


    • identifier: JackDevey.Lux

    This is the identifier for Lux on Winget. It will use this to find Lux's current package on WinGet.


    • installers-regex: '\.exe$'

    This will make all .exe files in the assets of the latest Lux release to be included in the pull request (The x64 and x86 variation of Lux).


    • delete-previous-version: 'true'

    This is optional, and you are welcome to change this to false (or omit it; the default is false). This will essentially overwrite the previous version on WinGet packages, so that only this new version is stored on WinGet.


    • token: ${{ secrets.WINGET_TOKEN }}

    This is the bit that will require action from yourself. This is a GitHub token with which the action will authenticate with GitHub and create a pull request on the winget-pkgs repository.

    To do this, you will need to:

    1. Create a Personal Access Token (PAT) with public_repo scope on your GitHub account. image

    2. Create a repository secret containing the token. Super important: call this token: WINGET_TOKEN. See using encrypted secrets in a workflow for more details.


    Finally, make sure you have a fork of winget-pkgs on your GitHub account. Please do not delete the fork after a pull request has been merged as the action will use that fork for making a branch and merging it with the upstream winget-pkgs repository on every Lux release.

    The above is made on the assumption that the account that the token is from (and the fork is present) is @jackdevey. If you would like this to be done by another account, the token would have to be from the different user and an extra line would have to be added: fork-user: # Username of other user (this defaults to the repository owner, which is why it doesn't have to be added)

    If you would like to read about this action further, the documentation is here and the source code is here.

    If you are interested in what a pull request made by this action looks like, here is one from my account: #61982 on winget-pkgs.

  • Bump github.com/AlecAivazis/survey/v2 from 2.3.4 to 2.3.6

    Bump github.com/AlecAivazis/survey/v2 from 2.3.4 to 2.3.6

    Bumps github.com/AlecAivazis/survey/v2 from 2.3.4 to 2.3.6.

    Commits
    • 55474c3 Add a RemoveSelectAll and RemoveSelectNone config to multi-select (#439)
    • e47352f Fix README formatting for select descriptions (#426)
    • c2be27f Added an option to add a comment to every select's option (#418)
    • 93657ef Enable compilation under Go 1.18 (#417)
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
  • H6163 ignores all commands despite success response

    H6163 ignores all commands despite success response

    Describe the bug A clear and concise description of what the bug is.

    To Reproduce Steps to reproduce the behavior:

    1. Send any command aside from query to an H6163 light strip
    2. It will display "success" but not actually change

    Expected behavior The requested change is carried out.

    Desktop (please complete the following information):

    • OS: Windows 10

    Additional context Example of command being carried out attached. I don't know what logs or other information is required to fix this, but I'm happy to provide whatever info I can. Thanks!

    C:\Users\Leet>lux query 0
    QUERY 0
      Device:         [removed MAC address]
      Model:          H6163
      Online:         [✗ No]
      Power:          [✓ Yes]
      Brightness:     10%
      Colour:         #000000
    
    C:\Users\Leet>lux turn 0 off
    TURN 0 OFF
      power           [✗ No]
      transaction     Success
    
    C:\Users\Leet>lux query 0
    QUERY 0
      Device:         [removed MAC address]
      Model:          H6163
      Online:         [✗ No]
      Power:          [✓ Yes]
      Brightness:     10%
      Colour:         #000000
    
A command line tool for simplified docker volume command built with go

dockervol A command line tool for simplified docker volume command built with go. Features: Remove anonymous volume (beta) Remove volume by matching n

Dec 18, 2021
A command line tool that builds and (re)starts your web application everytime you save a Go or template fileA command line tool that builds and (re)starts your web application everytime you save a Go or template file

# Fresh Fresh is a command line tool that builds and (re)starts your web application everytime you save a Go or template file. If the web framework yo

Nov 22, 2021
Command line monitoring for goroutines
Command line monitoring for goroutines

grmon Command line monitoring for goroutines Install go get -u github.com/bcicen/grmon Usage Simply import and call grmon.Start() somewhere in your co

Dec 30, 2022
An open-source GitLab command line tool bringing GitLab's cool features to your command line
An open-source GitLab command line tool bringing GitLab's cool features to your command line

GLab is an open source GitLab CLI tool bringing GitLab to your terminal next to where you are already working with git and your code without switching

Dec 30, 2022
A command line tool to prompt for a value to be included in another command line.

readval is a command line tool which is designed for one specific purpose—to prompt for a value to be included in another command line. readval prints

Dec 22, 2021
Inotify-tools is a C library and a set of command-line programs providing a simple interface to inotify.

inotify-tools This is a package of some commandline utilities relating to inotify. The general purpose of this package is to allow inotify's features

Jan 4, 2023
A twitch focused command line tool for producing, archiving and managing live stream content. Built for Linux.

twinx is a live-streaming command line tool for Linux. It connects streaming services (like Twitch, OBS and YouTube) together via a common title and description.

Oct 17, 2022
Command Line Interface for Terraform Enterprise/Cloud ( tecli )
Command Line Interface for Terraform Enterprise/Cloud ( tecli )

In a world where everything is Terraform, teams use Terraform Cloud API to manage their workloads. TECLI increases teams productivity by facilitating such interaction and by providing easy commands that can be executed on a terminal or on CI/CD systems.

Dec 16, 2022
FireFly Command Line Interface (CLI)
FireFly Command Line Interface (CLI)

FireFly CLI The FireFly CLI can be used to create a local FireFly stacks for offline development of blockchain apps. This allows developers to rapidly

Mar 1, 2022
a command line interface to orbit.love

orbit-cli NAME: orbit-cli - a command line interface to orbit.love USAGE: orbit-cli [global options] command [command options] [arguments...]

May 18, 2021
FireFly Command Line Interface (CLI)
FireFly Command Line Interface (CLI)

FireFly CLI The FireFly CLI can be used to create a local FireFly stacks for offline development of blockchain apps. This allows developers to rapidly

Dec 13, 2022
Command line interface for flomo.

flomo-cli A Golang based command line interface of flomo. 中文说明 Features Type and save to flomo using command line. Editor mode supports, able to use v

Sep 19, 2022
Gofire 🔥 Command Line Interface Generator tool for Go
Gofire 🔥 Command Line Interface Generator tool for Go

Gofire ?? : Command Line Interface Generator tool for Go Introduction Gofire is the tool for Go that automatically generates a command line interface

Dec 6, 2022
Command line interface for control iTunes
Command line interface for control iTunes

iTunes CLI Command line interface for control iTunes Description You can control iTunes operations from command line. Equipments macOS Sierra or later

Sep 30, 2022
A command line interface for trying out Repustate's multilingual semantic search
A command line interface for trying out Repustate's multilingual semantic search

rcli A command line interface for trying out Repustate's multilingual semantic search. Install & Usage Download the binary for your OS. Make sure it's

Nov 26, 2020
An unofficial command line interface (CLI) for ASPEN's Oneliner application

Overview OlxCLI is an unofficial command line interface (CLI) for ASPEN's Oneliner application. The CLI provides commands for running common fault sim

Jan 3, 2022
kcli: command line interface tool to interact with K8trics API server as well as manage its lifecycle
kcli: command line interface tool to interact with K8trics API server as well as manage its lifecycle

K8trics CLI (kcli) kcli is command line interface tool to interact with K8trics API server as well as manage its lifecycle. kcli can provision and dep

Dec 15, 2021
M3O Command Line Interface for golang

M3O CLI The command line for M3O Install Building from source go get github.com/m3o/m3o-cli/cmd/m3o Otherwise download the latest release binary. Usa

Dec 14, 2022
Go test command line interface for dlv(delve)

What does it do? Delver makes the command line interface for starting dlv the same as the one used in go test Example Say you're using this when devel

Jan 7, 2022