Screen Light CosmicDNA
winget install --id=CosmicDNA.ScreenLight -e
Screen Light is a lightweight and straightforward Windows application designed to give you quick and easy control over your screen's brightness.
winget install --id=CosmicDNA.ScreenLight -e
Screen Light is a lightweight and straightforward Windows application designed to give you quick and easy control over your screen's brightness.
A simple Windows utility that turns your monitor into a soft, adjustable light source, perfect for illuminating your face during video conferences, while also preventing the system from sleeping.
Up
and Down
arrow keys to change the brightness of the screen light..exe
file with no external dependencies, thanks to static linking. It can be run from any Windows machine.--verbose
flag can be used to open a console window for diagnostic messages.The easiest way to install Screen Light is via the Windows Package Manager (winget). Open a Command Prompt or PowerShell and run:
winget install CosmicDNA.ScreenLight
> [!NOTE]
> Alternatively, you can download the latest release from the GitHub Releases page. Download the ScreenLight-windows-x64.zip
file, extract it, and run ScreenLight.exe
.
Copy ScreenLight.exe
to any Windows machine and run it.
Standard Mode:
ScreenLight.exe
This will launch the fullscreen white window and start moving the mouse. Press ESC
to quit.
Verbose Mode:
ScreenLight.exe --verbose
This will launch the application and also open a separate console window to display log messages. Press to quit, or in the console window.
ESC
Ctrl+C
> [!TIP]
> Use the Up
and Down
arrow keys to change the brightness of the screen light.
> To achieve a finer brightness control, hold Shift
when pressing Up
and Down
,
> Press M
to toggle the mouse cursor movement on and off.
This project is set up for cross-compilation from a Linux environment to Windows. You will need the following tools installed:
x86_64-w64-mingw32
target)On Debian/Ubuntu-based systems, you can install these with:
sudo apt-get update
sudo apt-get install cmake ninja-build g++-mingw-w64-x86-64
The project uses CMake Presets for a simplified and reproducible build process.
Configure the project (for a release build):
cmake --preset mingw-release
Build the executable:
cmake --build --preset release
The final executable, ScreenLight.exe
, will be located in the build/mingw-release/
directory.
The project's architecture and runtime behavior are visualized in the diagrams below. The PlantUML source files for these diagrams can be found in the diagrams
directory and can be viewed or edited using a PlantUML-compatible tool, such as the PlantUML extension for VS Code.
Figure 1 provides a high-level component diagram, illustrating how ScreenLight.exe
interacts with essential Windows system libraries like user32.dll
, gdi32.dll
, and shell32.dll
.
Figure 1: Component Diagram showing high-level components and dependencies.
The application's startup process is detailed in the sequence diagram in Figure 2. It shows the flow from the user executing the program to the main message loop being ready to handle events.
Figure 2: Startup Sequence detailing the application's initialization process.
Figure 3 is a state diagram that illustrates the application's primary states—Initializing, Running (with sub-states for mouse movement), and Terminating—and the events that trigger transitions between them.
Figure 3: Main State Diagram illustrating the application's lifecycle.
The logic for handling user keyboard input, such as adjusting brightness or toggling mouse movement, is described in the activity diagram in Figure 4.
Figure 4: Input Handling Activity describing the logic for keyboard input.
Finally, Figure 5 shows a sequence diagram for the timer-based mouse movement, illustrating how the WM_TIMER
message periodically triggers an update to the cursor's position.
Figure 5: Mouse Movement Sequence showing the timer-based cursor updates.