Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
8f4b3d4
docs: spec wayland ddc/ci backend
datapoke Jun 3, 2026
09dda85
docs: plan wayland ddc/ci backend
datapoke Jun 4, 2026
83c80b3
docs: use python3 in plan test commands
datapoke Jun 4, 2026
794f6de
feat: add backend protocol and slider spec primitives
datapoke Jun 4, 2026
dfa8efd
feat: tag settings with backend identifier
datapoke Jun 4, 2026
7bea0e8
feat: dispatch settings validation through backend adapter
datapoke Jun 4, 2026
a08914c
feat: select xrandr backend on x11 sessions
datapoke Jun 4, 2026
b3cc208
feat: route cli through display backend abstraction
datapoke Jun 4, 2026
24cdf04
feat: drive ui sliders from active display backend
datapoke Jun 4, 2026
526a381
refactor: restore type annotations on ui internal helpers
datapoke Jun 4, 2026
a23ccaa
feat: parse ddcutil detect and getvcp output
datapoke Jun 4, 2026
5ac9baf
feat: build and run ddcutil commands with error wrapping
datapoke Jun 4, 2026
a6bfb0b
feat: ddc backend queries outputs and snapshots vcp values
datapoke Jun 4, 2026
cc3e5fe
feat: ddc backend exposes slider spec and neutral from snapshot
datapoke Jun 4, 2026
7286eff
feat: ddc backend apply, reset, validate
datapoke Jun 4, 2026
7ccfde7
feat: wire ddc backend into select_backend() for wayland sessions
datapoke Jun 4, 2026
85c7bf7
feat: explain ddc unavailable state on wayland
datapoke Jun 4, 2026
bc49ac9
docs: document wayland ddc/ci support and laptop limitation
datapoke Jun 4, 2026
f2db0ef
fix: catch ddc.DdcError in ui exception handlers
datapoke Jun 4, 2026
aad3cc3
fix: exclude invalid and phantom displays from ddcutil detect
datapoke Jun 4, 2026
567326e
fix: make ddc snapshot lazy and validate required vcp codes
datapoke Jun 5, 2026
589af21
fix: fill omitted --apply channels from snapshot, show output ids
datapoke Jun 5, 2026
3669ff9
fix: refresh sliders when the selected display changes
datapoke Jun 5, 2026
bf144cc
style: give Backend protocol methods docstrings
datapoke Jun 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,29 @@ greenfix is released under the MIT License.
greenfix is designed for Linux desktop sessions where `xrandr` can control the active display output.

- X11: best supported.
- Wayland: may not work because most Wayland sessions do not allow `xrandr` to change display settings.
- Wayland (COSMIC and others): supported for **external monitors that speak DDC/CI**. greenfix shells out to `ddcutil` and adjusts VCP brightness (`0x10`) plus per-channel RGB gain (`0x16/0x18/0x1A`). Laptop panels are not supported under Wayland because they don't expose DDC/CI and cosmic-comp does not yet expose `wlr-gamma-control-unstable-v1` (tracking [pop-os/cosmic-comp#2059](https://github.com/pop-os/cosmic-comp/issues/2059)).
- Root access: not required.

If `XDG_SESSION_TYPE` is `wayland`, the app warns that display changes may not work but still lets you try.
If `XDG_SESSION_TYPE` is `wayland`, greenfix uses the DDC/CI backend automatically. If no DDC/CI-capable monitors are detected, the UI says so and explains the limitation.

## Requirements

- Python 3.10 or newer.
- `xrandr`, usually provided by `x11-xserver-utils`, `xorg-xrandr`, or a similar package.
- GTK 3 and PyGObject for the desktop UI.
- `ddcutil` (only on Wayland; not needed for X11). Your user must be in the `i2c` group for `ddcutil` to access `/dev/i2c-*` without sudo.

Common dependency packages:

```bash
# Debian, Ubuntu, Pop!_OS
sudo apt install python3-gi gir1.2-gtk-3.0 x11-xserver-utils
sudo apt install python3-gi gir1.2-gtk-3.0 x11-xserver-utils ddcutil

# Fedora
sudo dnf install python3-gobject gtk3 xrandr
sudo dnf install python3-gobject gtk3 xrandr ddcutil

# Arch Linux
sudo pacman -S python-gobject gtk3 xorg-xrandr
sudo pacman -S python-gobject gtk3 xorg-xrandr ddcutil
```

The greenfix installer does not run a system package manager. If Python or `xrandr` is missing, it prints suggestions and exits. If GTK/PyGObject is missing, it prints suggestions and still installs the CLI launcher so non-UI commands can work.
Expand Down
Loading
Loading