Lucas Oskorep 189c3b35b3 feat: upgrade to gnome 51
Adds GNOME Shell 51 to shell-version and moves the build onto the
GNOME 51 type packages.

- switch to @girs/gjs 5.5.0 and the -51 namespace packages (shell/st/meta/
  clutter plus gio/glib/gobject/gtk/adw)
- drop the @girs/gnome-shell umbrella: it is still GNOME 50 and pulls
  St-18 and Meta-18 types that clash with the -51 packages
- types/: hand-written declarations for the Shell JS modules imported here
  (extension.js, prefs.js, main.js, panelMenu.js, popupMenu.js, slider.js),
  since upstream 51 types (51.0.0-alpha.1) are unpublished. PopupMenu
  open/close are typed with the 51 parameters object
- TypeScript 6.0.3 rather than 7: typescript-eslint requires <6.1.0 and
  ts-jest requires <7
- eslint 10.12, @eslint/js 10.0.1, eslint-plugin-jsdoc 65.3.4 and
  typescript-eslint 8.71.2
2026-10-15 01:54:51 -04:00
2026-06-29 21:11:39 -04:00
2026-10-15 01:54:51 -04:00
2026-06-29 21:11:39 -04:00
2026-10-15 01:54:51 -04:00
2026-06-29 21:11:39 -04:00
2026-06-29 21:11:39 -04:00
2026-10-15 01:54:51 -04:00
2026-10-15 01:54:51 -04:00
2026-10-15 01:54:51 -04:00
2026-10-15 01:54:51 -04:00
2026-10-15 01:54:51 -04:00

DDC Brightness Control

This project aims to be a simple and easy to use DDC brightness control plugin for Gnome

img.png

Features

  • Brightness control via panel
  • Adjustable keybindings for brightness controls
    • Active screen detection
    • By default, keybinding is alt+shift+f1/f2 for down/up on the active display
  • Display linking if you want to adjust all displays at once

Planned Features?

  • Would be nice to get this added to the system status menu at some point instead of its own dot
  • Support for direct i2c or better ddc controllers (not ddcutil)
  • You tell me

Requirements

Regardless of how you install the extension, it shells out to ddcutil to talk to your monitors, so it is a hard requirement.

sudo pacman -S ddcutil

Then add your user to the i2c group so ddcutil can talk to the bus without root, and re-login (or reboot):

sudo usermod -aG i2c $USER
reboot

Installation

Pick whichever method fits you. The store route is the easiest, building from source gives you the latest commits.

1. GNOME Extensions Store (easiest)

Head to the listing and click Install:

https://extensions.gnome.org/extension/10312/ddc-brightness-controller/

Alternatively, search for "DDC Brightness Controller" in the Extensions Manager app.

2. From Source (git clone)

Builds the extension locally and drops it into your user's extension dir. Requires just as the command runner, plus the same build toolchain used for development (see Development): mise for managing tool versions (node and pnpm), and glib2 for glib-compile-schemas.

Arch Linux:

sudo pacman -S git just mise glib2  # mise needs its shell hook: https://mise.jdx.dev/getting-started.html#shells

Clone and install:

git clone https://github.com/lucasoskorep/ddc-brightness-control
cd ddc-brightness-control
mise install
just install

After installing from source, enable it (toggle in the Extensions app, or):

gnome-extensions enable ddcbrightness@lucaso.io

Re-login or restart the shell (Alt+F2 → r on X11) to pick it up.

Development

Building and debugging locally needs a few extra tools beyond the runtime requirements above:

  • just — the command runner
  • mise — runtime & tool manager (pins node and pnpm in .mise.toml)
  • uv — python package manager (used by the schema-analysis helper)
  • glib2 — provides glib-compile-schemas for compiling the settings schema

Arch Linux:

sudo pacman -S just mise uv glib2

Install the pinned tools with mise (defined in .mise.toml):

mise install

Then:

just install      # install deps + build + drop into the extension dir
just lint         # lint
just lint-fix     # auto-fix what eslint can
just live-debug   # tail gnome-shell logs while you poke at it
S
Description
No description provided
Readme GPL-3.0
194 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 91.7%
Just 4.5%
JavaScript 3.5%
CSS 0.3%