Review of "Dynamic Brightness" version 1

Details Page Preview

A GNOME Shell extension that dynamically adjusts hardware screen brightness based on the active screen content luminance. Designed to provide eye comfort, especially when switching between light and dark content on laptop screens. Instead of capturing entire screen, this extension collects sample pixels to calculate your screen's luminance. This provides less cpu usage and longer battery life. While this extension provides a convenient, user-space solution for dynamic brightness on GNOME, it comes with certain architectural trade-offs: 1) Resource Usage: Because the extension periodically collects sample pixels and analyzes screen content via JavaScript (Shell.Screenshot) at set intervals, it introduces a continuous, minor CPU overhead. 2)Battery Impact: Frequent sampling and pixel data processing can impact battery life more than a native, hardware-level daemon would. Looking for a Battery-Efficient Alternative? If you are running Wayland and require a truly deep, native, and power-efficient solution for content-aware screen brightness (without the overhead of a GNOME extension), I highly recommend checking out wluma. It operates as an external, low-level daemon specifically optimized for performance and battery conservation. UPDATE: Screen brightness handling interface changed after Gnome 49, this version of extension supports both old and new interface

Extension Homepage
https://github.com/mnural/dynamic-brightness-gnome

No comments.

FAQ

Files

Note: Binary files aren't shown on the web site. To see all files, please download the extension zipfile.

Shexli (experimental) warning 2

Shexli found 2 issues that may need reviewer attention.

EGO-A-004 warning

extension files should not contain excessive ungated console logging

File contains 9 ungated console.log/warn/error calls (threshold: 5).

No excessive logging

  • extension.js:133
    console.log("[DEBUG] Dynamic Brightness extension loaded (Standby mode).")
  • extension.js:145
    console.log("[DEBUG] Dynamic Brightness Disabled.")
  • extension.js:159
    console.log("[DEBUG] Dynamic Brightness loop started by user.")
  • extension.js:169
    console.log("[DEBUG] Dynamic Brightness loop stopped by user.")
  • extension.js:283
    console.log(`[DEBUG] Brightness adjusted! New Target: ${targetBrightness}% (Luminance: ${luminanceRatio.toFixed(2)}%)`)
  • extension.js:208
    console.error(`[ERROR] Silent content capture error: ${e}`)
  • extension.js:253
    console.error(`[ERROR] Async processing error: ${err}`)
  • extension.js:262
    console.error(`[ERROR] Image stream error: ${err}`)
  • extension.js:306
    console.error(`[ERROR] Native DBus error: ${e}`)

EGO-L-003 warning

signals connected by extension should be disconnected in disable()

Signals assigned in `enable()` are missing matching disconnect calls in `disable()` or its helper methods.

Disconnect all signals

  • extension.js:112
                this.toggle.connect('notify::checked', () => {
                    this._indicator.visible = this.toggle.checked;
                })

All Versions

Version Status
6 Active
5 Inactive
4 Rejected
3 Rejected
2 Rejected
1 Rejected

Previous Reviews on this Version

Nural auto- rejected
Auto-rejected because of new version 2 was uploaded