Look your best on video calls and keep your computer awake with one simple tool that turns your monitor into a soft, adjustable light source.
Screen Lighteer turns your monitor into a soft, adjustable light source to illuminate your face during video conferences. It also prevents your system from sleeping or locking—perfect for long meetings, presentations, or when you need your machine to stay active.
It's a minimalist, powerful utility for the modern remote professional.
- Video Conference Lighting: Provides a bright, full-screen white display to act as a key light, improving video quality in low-light environments.
- Adjustable Brightness: Use the
Up
andDown
arrow keys to change the brightness of the screen light. - Keeps System Awake: Uses the Windows Power Management API to robustly prevent the system from sleeping.
- Adjustable Frame: Use the
Left
andRight
arrow keys to adjust the thickness of the surrounding light frame, creating a transparent "hole" in the center of the screen. This allows you to work on other tasks while being illuminated. - Minimalist Design: Creates a fullscreen, ligth frame around a transparent window for a well illuminated digital life.
- Silent Operation: Runs as a true background application without a console window by default.
- Verbose Logging: An optional
--verbose
flag can be used to open a console window for diagnostic messages. - Easy Controls: Adjust brightness coarsely or finely and quit the application with simple keyboard commands.
The easiest way to install Screen Lighteer is via the Windows Package Manager (winget). Open a Command Prompt or PowerShell and run:
winget install CosmicDNA.ScreenLighteer
Note
Alternatively, you can download the latest release from the GitHub Releases page. Download the ScreenLighteer-windows-x64.zip
file, extract it, and run ScreenLighteer.exe
.
Copy ScreenLighteer.exe
to any Windows machine and run it.
-
Standard Mode:
ScreenLighteer.exe
This will launch the fullscreen light window. Press
ESC
to quit. -
Verbose Mode:
ScreenLighteer.exe --verbose
This will launch the application and also open a separate console window to display log messages. Press
ESC
to quit, orCtrl+C
in the console window.
Tip
Use the Up
and Down
arrow keys to change the brightness of the screen light.
Use the Left
and Right
arrow keys to adjust the size of the central transparent area.
To achieve finer control, hold Shift
when pressing any of the arrow keys.
This project is set up for cross-compilation from a Linux environment to Windows. You will need the following tools installed:
- CMake (version 3.20 or newer)
- Ninja Build System
- MinGW-w64 Toolchain (specifically the
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, ScreenLighteer.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 ScreenLighteer.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, 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 and frame size, is described in the activity diagram in Figure 4.
Figure 4: Input Handling Activity describing the logic for keyboard input.