{"id":38259494,"url":"https://github.com/zb3/gnome-gamma-tool","last_synced_at":"2026-01-17T01:34:33.177Z","repository":{"id":88258136,"uuid":"322660599","full_name":"zb3/gnome-gamma-tool","owner":"zb3","description":"A command-line tool that lets you change gamma in GNOME and Cinnamon (with Wayland). You can also adjust contrast and brightness. It works by creating a color profile with the VCGT table, so that changes are persistent and don't interfere with other settings like night light.","archived":false,"fork":false,"pushed_at":"2025-11-12T15:01:52.000Z","size":50,"stargazers_count":163,"open_issues_count":1,"forks_count":17,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-11-12T17:10:00.443Z","etag":null,"topics":["brightness","change-gamma","cinnamon","contrast","gamma","gamma-adjustments","gnome","gnome-gamma","icc-profile","vcgt","wayland"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zb3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-12-18T17:23:34.000Z","updated_at":"2025-11-12T15:01:56.000Z","dependencies_parsed_at":"2024-06-17T16:24:09.345Z","dependency_job_id":"c37790a7-c14f-4193-b860-a61e02cc50ea","html_url":"https://github.com/zb3/gnome-gamma-tool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zb3/gnome-gamma-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zb3%2Fgnome-gamma-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zb3%2Fgnome-gamma-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zb3%2Fgnome-gamma-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zb3%2Fgnome-gamma-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zb3","download_url":"https://codeload.github.com/zb3/gnome-gamma-tool/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zb3%2Fgnome-gamma-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28491609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T00:50:05.742Z","status":"ssl_error","status_checked_at":"2026-01-17T00:43:11.982Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["brightness","change-gamma","cinnamon","contrast","gamma","gamma-adjustments","gnome","gnome-gamma","icc-profile","vcgt","wayland"],"created_at":"2026-01-17T01:34:32.578Z","updated_at":"2026-01-17T01:34:33.170Z","avatar_url":"https://github.com/zb3.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gnome-gamma-tool\n\nA command-line tool that let's you change gamma, contrast and brightness in GNOME and Cinnamon in a persistent manner by creating a color profile with the VCGT table.\n\n## Disclaimer\n**This only works with GNOME and Cinnamon**. Tested on Fedora with GNOME 42-48 and Cinnamon, it might not work with older/newer versions, albeit profiles already generated should continue to work.\n\nThis is rather hacky, color profiles were not meant to be used like that. But I think the use case is rare enough to justify this. After all, if your monitor doesn't let you change the gamma, isn't that a problem with the monitor?\n\nSee [How it works](#how-it-works) for a more detailed description.\n\n**Note:** it's not possible to change the screen saturation or hue (due to VCGT limitations), but you can try using [gnome-saturation-extension](https://github.com/zb3/gnome-saturation-extension) (which has its drawbacks though).\n\n## Usage\nThere's no need to install this, just clone this repository:\n```\ngit clone https://github.com/zb3/gnome-gamma-tool\ncd gnome-gamma-tool\n```\n\n**If** you're using Debian/Ubuntu, you might also need to install the `gir1.2-colord-1.0` package first:\n```\nsudo apt install gir1.2-colord-1.0\n```\nfor OpenSUSE, you might need to install the `typelib-1_0-Colord-1_0` package instead:\n```\nsudo zypper install typelib-1_0-Colord-1_0\n```\nif you're using NixOS, check [this comment](https://github.com/zb3/gnome-gamma-tool/issues/28#issuecomment-3112277504)\n\nThen you can invoke the tool like this:\n```\n./gnome-gamma-tool.py\n```\n(if this doesn't work, please open a new issue [here](https://github.com/zb3/gnome-gamma-tool/issues/new))\n\nOnce the new profile is installed, this tool can be safely removed.\n\n\n### Adjusting screen gamma\nThe `-g` argument let's you specify the gamma correction factor. You can also use the `R:G:B` form to set it for individual channels.\n\nFor example:\n```\n./gnome-gamma-tool.py -g 0.8\n```\nor\n```\n./gnome-gamma-tool.py -g 0.8:0.8:0.8\n```\n\n### Adjusting contrast (or inverting colors)\nYou can also change the contrast using the `-c` parameter. `1` is the default value, while `-1` will effectively invert the colors. Make sure not to use the `0` value here as it will make your display all grey...\n\nFor example:\n```\n./gnome-gamma-tool.py -c -1\n```\n\nNote that it always starts from the initial state, hence the command above will undo any previous gamma adjustments, but you can combine different options:\n\n```\n./gnome-gamma-tool.py -g 0.8 -c 0.5\n```\n\nPer-channel settings work here too, so for instance it's possible to invert the blue channel while keeping red and green intact. Can you guess how this would look like? Give it a try:\n```\n./gnome-gamma-tool.py -c=1:1:-1\n```\nWas that what you expected? :)\n\n### Changing color temperature\nColor temperature can also be changed, use the `-t` option to specify the temperature. Values work just like in `redshift` where `6500` is the neutral value. Note that this doesn't prevent the night light feature from working, it's just that night light adjustments are made \"on top of\" what gnome-gamma-tool does.\n```\n./gnome-gamma-tool.py -t 5000\n```\n\n### Adjust brightness (kinda)\nYou can also adjust brightness with this tool, but it's not possible to increase the physical display brightness, it's only possible to decrease it by decreasing the maximum brightness value. Use the `-b` option to do that, it accepts values from `0` to `1`, where `1` is the neutral value:\n```\n./gnome-gamma-tool.py -b 0.7\n```\n\nThere's another option here which let's you *increase* the *minimum* brightness value. It's the `-bm` option which also accepts values from `0` to `1`, this time `0` being the neutral value. After doing:\n```\n./gnome-gamma-tool.py -bm 0.3\n```\nthe output value will never be smaller than `0.3` so black won't be black but actually grey, while white will still be white and colors in between will be multiplied accordingly. It's also possible to invert colors using the combination of `-b` and `-bm`:\n```\n./gnome-gamma-tool.py -b 0 -bm 1\n```\n\nAnd... that's not all, because these also work per individual channels, thanks to the `R:G:B` notation. This opens up new possibilities, like... making your screen more green (which you couldn't achieve with color temperature):\n```\n./gnome-gamma-tool.py -b 1:2:1\n```\nThe above gets transformed into `0.5:1:0.5` first, and technically it makes your screen less red and less blue, but practically it makes the screen appear more green. What a useful feature, don't you think so?\n\n\n### If you have multiple displays\nYou can specify the display *index* using the `-d` option (the first one has index `0` but that's the default one so you don't need to use this argument in this case...). The order of displays is the same as in the `Settings -\u003e Color` panel. Here comes the example:\n```\n./gnome-gamma-tool.py -d 1 -g 0.7\n```\n\nYou can also apply changes to all displays using the `-a` option:\n```\n./gnome-gamma-tool.py -a -g 0.7\n```\n\n### Exporting to a file\n\nIf you just want to create an ICC profile with the proper VCGT table but without interacting with your current configuration, you can use the `-o`/`--out-file` argument. Note that it will not load your current profile, so the output will be a sRGB profile unless you use the `-i`/`--in-file` argument to specify the base profile.\n\nYou can then import and apply it using a tool like `colormgr`.\n\n```\n# Create myprofile.icc file\npython3 ./gnome-gamma-tool.py --min-brightness 0.05 --brightness 0.95 --out-file myprofile.icc\n\n# This command will print Device ID, save it\ncolormgr get-devices\n\n# This command will print Profile ID, save it\ncolormgr import-profile myprofile.icc\n\n# This command will affect colors immediately\ncolormgr device-add-profile $displayId $profileId\n\n# This command will remove imported profile and revert colors to original state immediately.\ncolormgr delete-profile $profileId\n```\n\n## How it works\n\nMutter (GNOME's compositor) does not implement any Wayland protocols that could help, so tools like `gammastep` or `wl-gammactl` won't work. Mutter, however, exposes the `SetCrtcGamma` method via D-Bus, and that method really works. Yet it's not how gnome-gamma-tool achieves it's purpose because:\n* the value is not saved anywhere so the effect is not persistent\n* this method is already called by another daemon, so the effect is only temporary.\n\nThat method is normally called by the `gsd-color` daemon (indirectly), and currently there are two things that can affect its arguments:\n* VCGT table of the currently enabled color profile (retrieved via colord)\n* color temperature derived from the \"night light\" settings\n(these two are combined together)\n\nNow, it might seem that the obvious solution here is to patch `gsd-color` to also take other things (like a GSettings property) into account, so you could tweak the gamma via the `gsettings` command. This would also open the possibility of adding a GUI to the Display panel later.\n\nYet again, this is not how gnome-gamma-tool operates, because patching `gsd-color` only makes sense if this patch is to be merged upstream. Otherwise it's completely unacceptable for me (and probably for you too) to have to apply custom patches and rebuild parts of GNOME. That's why gnome-gamma-tool installs a color profile with the correct \"VCGT\" table set up.\n\n`gsd-color` doesn't manage color profiles, it observes them using the API provided by colord. To make a profile recognized by `gsd-color`, these things must be done:\n* color profiles must be enabled for a given device\n* that profile needs to be installed (in the colord database)\n* that profile must be associated with the device\n* that profile must be enabled\n\nAll those steps are performed using the API exposed by colord via D-Bus. gnome-gamma-tool doesn't create the new profile from scratch (unless you specify `-o`/`--out-file`), but it clones the current one and only modifies the VCGT table. By default, the current profile is the one generated by `gsd-color` from EDID data.\n\n`gsd-color` listens for device/profile changes using D-Bus signals so it picks up our profile change and then eventually calls `SetCrtcGamma`. That's it!\n\nWhat is this \"VCGT\" then? The VCGT (Video Card Gamma Table) basically maps color channel (R, G and B) values. Like if a channel has value `X` then the VCGT specifies that this should be translated to `Y`. Of course not every input value has a VCGT entry, that table has just 256 entries and the values are interpolated (but this is not done by gnome-gamma-tool).\n\nVCGT makes it possible to change gamma (via exponentiation), contrast and brightness, but it's not possible to change hue this way, because one channel can't affect any other.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzb3%2Fgnome-gamma-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzb3%2Fgnome-gamma-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzb3%2Fgnome-gamma-tool/lists"}