BgLight is a lightweight BGInfo-like tool for Windows: it draws a "premium" system information panel on a solid background and applies it automatically as the desktop wallpaper. It is a one-shot executable (it runs, updates the wallpaper, then exits immediately), silent, with no UI and no external dependency (.NET Framework 4.8, shipped by default on Windows 10/11).
Preview rendered with placeholder data. On a real machine the values come from the system (WMI + .NET APIs).
- Features
- Displayed information
- Requirements
- Quick install (binary)
- Usage
- Command-line options
- Enterprise deployment
- Building from source
- How it works
- Troubleshooting
- Versions
- "Premium" panel: translucent dark card with rounded, anti-aliased corners.
- Configurable position (defaults to the top-right corner).
- Header = computer name, in bold, underlined by an accent line whose color is
configurable (
/accentColor, default blue#0078D4). - Two aligned columns (label / value) for clean readability.
- Panel footer:
made by navanem.com+ version number. - Grouped sections (System / Hardware / Network / Storage / Security).
- Optional background image (
/bgImage) — the panel is drawn over it; falls back to the solid color. - Multi-monitor: one panel per monitor across the whole virtual desktop.
- DPI-aware (PerMonitorV2) with pixel-accurate Span wallpaper.
- Panel drop shadow + border.
- Robust: every information source is isolated; if a query fails, the value shows
N/Ainstead of crashing the tool. - Lightweight and non-resident: no service, no background process; the exe exits as soon as the update is done.
| Section | Fields |
|---|---|
| System | User · OS · Uptime · Battery (laptops) · Generated |
| Hardware | Manufacturer · Model · Processor · Serial No. · Asset tag · RAM |
| Network | Domain · FQDN · IPv4 · MAC · DHCP · DNS |
| Storage | Free / total for every fixed disk |
| Security | BitLocker · Windows activation · Antivirus |
Sizes are shown in GB (gibibytes, base 1024). Security fields require elevation and
otherwise show N/A.
- Runtime: Windows 10/11. .NET Framework 4.8 is preinstalled on those versions.
- Build: the .NET SDK is enough (see Building from source); Visual Studio 2022 also works.
- Download
BgLight-vX.Y.Z.exefrom the Releases page. - (Optional) place it in
%ProgramData%\BgLight\. - Run it once to check the rendering, then schedule it (see Deployment).
Defaults (panel in the top-right corner, blue accent):
BgLight.exeWith arguments:
BgLight.exe /position=TopRight /accentColor=#0078D4 /fontSize=11 /fontName="Segoe UI"Arguments use the /key=value form (case-insensitive). An invalid value is ignored and
the default is kept.
| Argument | Default | Description |
|---|---|---|
/outputPath |
C:\ProgramData\BgLight\wallpaper_info.bmp |
Path of the generated BMP (and of log.txt) |
/bgImage |
(none) | Background image drawn full-screen behind the panel; falls back to /bgColor |
/position |
TopRight |
TopLeft, TopRight, BottomLeft, BottomRight |
/accentColor |
#0078D4 |
Accent line color (hex #RRGGBB) |
/bgColor |
#202020 |
Solid background color (hex) |
/fontSize |
11 |
Body font size (points); the title is slightly larger |
/fontName |
Segoe UI |
Text font |
The error log (log.txt) is created in the outputPath folder.
schtasks /create /tn "BgLight" /tr "%ProgramData%\BgLight\BgLight.exe" /sc onlogon
schtasks /create /tn "BgLight-Refresh" /tr "%ProgramData%\BgLight\BgLight.exe" /sc minute /mo 30onlogon: at every sign-in./sc minute /mo 30: refresh every 30 minutes (useful for RAM/disk/IP).
- Copy
BgLight.exeto\\server\share\BgLight\or%ProgramData%\BgLight\. - GPO → User Configuration > Policies > Windows Settings > Scripts (Logon).
- Add
deploy\run-bglight.bat.
The project targets net48. It references Microsoft.NETFramework.ReferenceAssemblies
for build only, which allows building net48 with just the .NET SDK (no targeting pack
installed); no dependency is added to the shipped exe.
# Build
dotnet build BgLight.sln -c Release
# -> src/BgLight/bin/Release/net48/BgLight.exe
# Tests
dotnet test -c DebugWith Visual Studio: open BgLight.sln, select the Release configuration, build the
solution.
A one-shot pipeline runs on every launch:
AppConfig.Parse— reads the/key=valuearguments and applies defaults.SystemInfoCollector.Collect— gathers system info (WMI + .NET APIs), each source isolated in its owntry/catch(no exception ever escapes).WallpaperRenderer.Render— draws the panel (GDI+) on a full-screen bitmap and saves it as a BMP.WallpaperSetter.Apply— applies the BMP as the wallpaper viaSystemParametersInfo.
Source layout:
| File | Responsibility |
|---|---|
Program.cs |
One-shot orchestration + root error handling |
AppConfig.cs |
Argument parsing and defaults |
SystemInfoCollector.cs |
System information collection |
SystemInfoData.cs |
Data model (title + label/value rows) |
Format.cs |
Formatting (GB sizes, joins) |
WallpaperRenderer.cs |
GDI+ rendering of the panel |
WallpaperSetter.cs |
Wallpaper application (P/Invoke) |
Logger.cs |
Error logging |
- Wallpaper does not change /
log.txtreports access denied: choose a writableoutputPath(e.g. a folder under%LOCALAPPDATA%), or run with sufficient rights on%ProgramData%. - A "forced wallpaper" GPO policy is active: it can override the wallpaper. Disable the policy or deploy the BMP through that same policy.
N/Avalues: the corresponding WMI query failed (permissions, driver, corrupted WMI); the other fields stay populated.
See CHANGELOG.md and the
Releases page.
made by navanem.com
