MonitorControl

Activity, over time

Daily observations from the public event archive.

Attention

Daily stars & forks

Loading attention chart

Star accumulation

Cumulative stars

Loading star accumulation chart

Pull requests

Daily opens & merges

Loading pull requests chart

Conversations

Daily issues & comments

Loading conversations chart

Community

Daily accounts & reviews

Loading community chart

Releases

Daily releases

Loading releases chart

Mentions

6posts · 30d
Nov 30 posts
  1. DEV · · @hopsayer

    External Monitor Brightness in GNOME, Like in KDE: What's Out There, What to Choose, and Why I Started Contributing If you use a laptop with an external monitor and switch to GNOME from KDE, you notice it almost immediately: the laptop screen's brightness adjusts fine, but the external monitor connected via HDMI or DisplayPort doesn't. In KDE, the system tray has sliders for both the built-in and external monitors, whereas in GNOME, there is no mention of external monitors in the UI at all. You're left with the physical buttons on the monitor and its on-screen menu, which are inconvenient and rarely used. As a GNOME user, I solved this problem programmatically for a long time—using an extension that drew a semi-transparent black layer over the screen via xrandr. In September 2025, after GNOME's transition to Wayland (with the X11 session removal), my method stopped working. For almost a year, I covered my monitor with a piece of fabric at night while watching YouTube. I didn't want to get out of bed, fumble in the dark with sand in my eyes, and press unlit buttons on the back of the monitor. Digging into the opaque and highly specific niche of DDC/CI protocol solutions wasn't appealing either—especially since online specs indicated my monitor didn't support DDC/CI (which turned out to be false). Recently, I installed Fedora with KDE on a second drive and suddenly discovered that my external monitor was adjustable out of the box. The Short Answer If you just want a brightness slider for your external monitor in GNOME 46–51: 1. Install ddcutil-service (commands for Debian/Ubuntu, Arch, Fedora, openSUSE, and build instructions from source are in the extension's README). 2. Install Multi Display Adjustment from extensions.gnome.org. Below, I'll break down why this is the case, what alternatives exist, and how they differ. Full disclosure: I am a contributor to this extension. Since October 3, 2026, 14 of my pull requests have been merged into it. But initially, I was just a regular user looking for an extension and comparing options. The comparison below is built so you can verify it: identical criteria, screenshots following the same scheme, and links to the source code. Why KDE Has It and GNOME Doesn't In KDE, brightness is handled by the system service PowerDevil, which works with external monitors via the libddcutil library. A separate slider for each display appeared in Plasma 6.2 (developer's blog post). GNOME doesn't have this feature, and as far as I know, there are no plans for it. My interpretation: GNOME Shell strives to minimize external dependencies, whereas KDE is built as a set of modules where one more dependency isn't a big deal. However, the built-in solution comes at a cost. The DDC/CI integration in KDE wasn't smooth; ddcutil failures have repeatedly caused issues in KDE: freezes after updating ddcutil to 3.0.0, monitor flickering when PowerDevil starts. For such cases, a special environment variable POWERDEVIL_NO_DDCUTIL=1 was created in PowerDevil to disable ddcutil entirely (PowerDevil README). With a GNOME extension, it's simpler: you can just disable it in the "Extensions" app. And if gnome-shell crashes shortly after loading extensions, a special service automatically disables user extensions (gnome-shell commit). Other Linux Environments - Cinnamon (Linux Mint): Out of the box, the slider doesn't work with external monitors. It's solved by installing the official DDC/CI Monitor Brightness applet from the settings. Conceptually, it's an adaptation of KDE ideas to Cinnamon—tray, menu, sliders with monitor names, working via raw ddcutil. Technologically, it resembles the architectural solutions refined in GNOME extensions from 2021-2024. The description and screenshots suggest it was tested with only one external monitor, and it's unclear how it behaves with multiple. Nevertheless, this environment has its own solution. - XFCE: The standard power management plugin can't control external displays. You can use xrandr (software dimming) or ddcutil (hardware), but both require terminal commands or external scripts. - COSMIC (Pop!_OS): A new Wayland-based environment. It supports DDC/CI out of the box as of May 2026 (version 1.0.14), putting it on par with KDE in this regard. Before that, users had to work around it just like everywhere else. Other Operating Systems On macOS, the system doesn't adjust the brightness of non-Apple external monitors out of the box; you have to use the physical buttons. This is Apple's official stance, and their business logic is quite readable. Enthusiasts solve this with utilities like MonitorControl or BetterDisplay—both work via the same DDC/CI protocol. Windows also doesn't send control commands to the monitor via cable by default. There are tray utilities like Twinkle Tray and Monitorian, as well as Power Display from Microsoft PowerToys (also DDC/CI-based, but requires a separate install). How It Works External monitors (that support it) are controlled via the DDC/CI protocol: commands are sent over the I²C channel directly through the cable. Brightness is parameter VCP 0x10. On Linux, this is handled by the ddcutil utility. Check if it detects your monitors: ddcutil detect ddcutil getvcp 10 # current brightness ddcutil setvcp 10 50 # set to 50% If this works as a regular user, you only need the extension. If it only works with sudo, see I²C access permissions. Extensions communicate with the monitor in two ways: | | ddcutil command | ddcutil-service | |---|---|---| | How it works | New process for every change | Background service, D-Bus communication | | I²C bus polling | Anew on every launch | Once at startup | | Latency and overhead | Higher, depends on monitor and steps | Architecturally lower | | Cost | No extra dependencies | Requires installing another package | I haven't objectively measured latencies, but the difference is architectural and immediately noticeable: for a slider that changes the value dozens of times per second, a persistent service is better than "dirty" spawning of a new CLI process for every step. What I Wanted from an Extension When I started looking, I had a list of criteria. No single extension covered it entirely. - Responsiveness (light backend). No heavy process spawning on every slider step. - Native look. The slider where you expect it, looking native, without foreign icons or truncated names. No cheap look. Maximal possible reuse of existing GNOME's internal engineering amd solutions, following its design philosophy. - Active project. Support for current GNOME versions, responses to issues. - Minimal settings. What can be solved for the user should be a reasonable default, not a toggle that requires googling. - No bloat. The extension does one thing. The project understands its boundaries and keeps scope, is maintained with minimal resources, and adapts to new GNOME versions in a timely manner. As non-invasive and fragile architectural solutions as possible. Set it and forget it. - Clear documentation. Setting it up shouldn't require an engineer. - Little things that make you suffer in practice: per-screen level indicator and protection against 0% (where some monitors turn off the backlight and it's hard to get back). What's Out There I compared four extensions. The screenshots follow the same scheme for all: settings window on the left (if available), Quick Settings panel on the right. The candidate pool formed naturally—based on discoverability, relevance to recent GNOME versions, at least minimal signs of project life, and originality (minimal "forkness", closeness to upstream). Summary Table The table is horizontally scrollable | | Brightness control using ddcutil | Adjust Display Brightness 2 | Display Adjustment | Multi Display Adjustment | |---|---|---|---|---| | Backend | ddcutil command | ddcutil command | ddcutil-service | ddcutil-service | | Where is the slider | Separate icon in the top panel by default, or among system sliders | Inside a tile, icon always in the top panel | All sliders raw without grouping spill out at the bottom of Quick Settings | Mimics system slider right below it or a "Displays" tile | | Tile name | none | "Display Br…" truncated | none | "Displays" | | On-Screen Display (OSD) | option, disabled by default, shows level on all monitors at once | "Show On-screen Feedback" option | none | yes, on the specific screen being adjusted | | Settings | many, almost no descriptions, many preferred ones disabled by default | many, with descriptions | none | five, thoughtful defaults | | Contrast | no | yes, RGB too | yes, always, can't hide; 2 sliders per monitor without options | available in tile mode, can be hidden | | Hotkeys | yes | yes, mouse wheel too | no | no custom ones (deferred); wheel and arrows work natively like on any GNOME slider | | Where to install | extensions.gnome.org | extensions.gnome.org, sometimes locally via cloned-repo/deploy.sh | extensions.gnome.org | extensions.gnome.org | | Requires ddcutil-service | no | no | yes | yes | | Activity | rewritten in Nov 2025, GNOME 50 support since Apr 2026; 14 open issues and 8 PRs with indefinite ETA* | 1 open issue (since 2023), 10 MRs in history | 0 open issues, 6 MRs in history; in 2026 only GNOME 50 & 51 support announced (latest v0.0.9) | 6 releases since Oct 2, 1.5.0 (Oct 17); 38 PRs closed, including 14 of mine | | Downloads on EGO | 119k | 35 | 21k | 251 | (Data as of 22.10.2026) > The rest (dozens based on "ddcutil") are mostly clones of the described ones. That's what I meant by "closeness to upstream". > One interesting find was "Control monitor brightness and volume with ddcutil". Although the basis on "Brightness control using ddcutil" is evident in the name, the author (Nei) did noticeable original work: mimicked GNOME at the icon and positioning level, added monitor volume control—didn't just fork someone else's code with minimal changes and ride off into the sunset. That's commendable, but on GNOME 50/51 the extension is no longer supported. Further down are individual descriptions of each extension with uniform screenshots in vanilla GNOME. The screenshots were taken in the state already configured for my needs as a result of testing. Restoring defaults and re-shooting everything would be too much of a hassle. The settings windows with available parameters are attached in any case. But this actually adds points to each, as extraneous or foreign-looking elements in GNOME were already disabled where the extensions allow it. Brightness control using ddcutil EGO page and GitHub. The most well-known. It works, but calls regular ddcutil on every change, which leads to noticeable monitor response delays due to overhead. Out of the box, it adds a separate icon to the top panel, so the standard look needs reconfiguring first: switch placement to the system menu, disable extra sliders. Settings have almost no descriptions, and it's hard to understand them without experience. | Settings | Quick Settings | |---|---| | !BCU: settings | !BCU: panel | The level indicator is there (Show OSD), but it's disabled by default and, judging by the code, renders on all monitors at once, not the one being adjusted. I can't verify it live because this feature stopped working for me for unclear reasons (I haven't updated the system since). I opened an issue, got a response, but there's no clarity and the deadline is undefined. The project is in maintenance mode: there was a big refactoring in November 2025, after which only GNOME 50 support has been added. Adjust Display Brightness 2 GitLab, recently passed review and released on EGO. Initially, I managed to install it via EGO, but later (a relogin was done), it stopped installing from there. For retests and re-shooting screenshots, I had to install it via deploy.sh from the cloned repository folder. It has the most features: contrast, RGB, hotkeys, mouse wheel, slider layout selection, and a diagnostics section. Settings are well-described. The repository has good, up-to-date documentation that was recently updated and rewritten. | Settings | Quick Settings | |---|---| | !ADB2: settings | !ADB2: panel | Downsides in terms of look, defaults, and customizability: the slider is hidden in a tile with a truncated name, and the top panel icon is always visible. It also calls regular ddcutil, responsiveness is perceived as lower than "Brightness control using ddcutil" because the control signal to the monitor is sent only when the left mouse button is released on the slider. The OSD (on-screen display) looks out of place in GNOME (color, layout, font). The sliders in the tile look tacky. Display Adjustment EGO page and GitLab. Uses ddcutil-service, installs in one click. Two sliders, brightness and contrast, are added at the bottom of the panel. No settings: the screenshot on the left is the extension info window, and that's it. Contrast can't be hidden, sliders have no labels. The contrast icon is poorly chosen; though I understand how he came to it. | "Settings" (info window) | Quick Settings | |---|---| | !DA: extension info | !DA: panel | Multi Display Adjustment EGO page and GitHub. Based on Display Adjustment (original author is credited in the README and CHANGELOG), developed by Samuel Cecilio. Uses ddcutil-service. Monitor name as in system settings, percentage value, per-screen indicator. The tile is simply called "Displays" without a subtitle, so long tile and/or monitor names don't get truncated. Placement is selectable: sliders among system ones, next to the GNOME brightness slider (above or below it), or a "Displays" tile. There are five settings: placement type, position, minimum brightness 1%, contrast sliders, and a master slider for all external monitors. The settings window is well thought out: all items have descriptions and change their values, availability, and descriptions depending on the values and availability of the items they depend on, aiming to make the UX self-explanatory. | Settings | Among system sliders | Tile | |---|---|---| | !MDA: settings | !MDA: inline | !MDA: tile | What it doesn't have: - Its own hotkeys. However, thanks to its minimal invasiveness policy, they aren't strictly necessary. Native GNOME behavior extends to the extension's elements: scrolling the mouse wheel over it changes the value by 2 units, and keyboard arrows by 10. This works both in tile mode and among system sliders. - Detailed RGB adjustment. - Contrast only in tile mode. - Like others, it requires a backend dependency. Here it's ddcutil-service: there are packages for Arch (AUR) and openSUSE, a COPR for Fedora (which I maintain), and CI-packages from a third-party author for Ubuntu/Debian. - The goal of being a "Swiss Army knife". Additions come for compelling reasons if they can be tested on available hardware and don't violate the project's boundaries. I don't rule out that the reader might be interested in another of the presented extensions, and that's okay too—it would be enough for me to know that my search, analytical, and comparative work was useful to someone. How I Became a Contributor When comparing, I was hooked not so much by the feature set as by where the code lives—it affects the difficulty of getting your suggestions to the author. Two of the four extensions are on GitLab (a rare percentage in my experience), two are on GitHub: one is in maintenance mode, and Multi Display Adjustment is young, with a live repository, directly open to contributions, and closest to my vision (consistent design, minimalism). For me, it was a signal of openness: it's easier to write an issue and send a PR on GitHub, and active development means they will be answered. > Why didn't I make my own fork? I didn't want to create "another" solution. This niche is "in crisis" precisely because of the dispersion of efforts, where work doesn't unite but fragments and duplicates. I wanted to take someone else's ready-made solution and bring it to the state I needed, so that in my eyes it surpassed the others; help the project with branding, UX, and instructions. Plus, it's good training for working in a team with people from different time zones. I wrote two issues. #2 asked for a minimum brightness of 1% so the monitor doesn't go completely black. Three days later, this was released in version 1.2.0. #8 asked for an on-screen indicator during adjustment, and it was included in 1.3.0 the same day, October 2. After that, I decided not just to use it, but to help. Then I worked in layers, ideally one PR per idea: 1. #16: extracted brightness and contrast reading/writing from the menu item into a separate VcpController class so another widget could use it. Behavior didn't change. 2. #17: sliders among system ones, without a tile (Inline mode). #18: above or below the GNOME slider. #19: minimum 1% made an option, settings cleaned up. 3. All of this went into version 1.4.0 (October 7). Then design and documentation: a new screenshot in the standard GNOME look (#28), a short bulleted description (#30), the tile shows only the title (#31), step-by-step installation instructions (#34), a notification with an "Open instructions" button if ddcutil-service is not installed (#36), and a Fedora package to cover all major distros (#38). The last layer is development tools: separation into src/ and docs/ (#39), emulated monitors for debugging without hardware (#40), and manual testing plans for each GNOME version (#44). GNOME 51 support was added by the maintainer himself, resulting in 1.5.0 on October 17. Total: 14 merged PRs, and I might do a few more; new contributors have started to arrive. Downloads on EGO were 45 over 2 months by the end of September, now it's over 250 (243 on October 22), and the pace seems to be accelerating. Conclusion What I consider complete for the first stage: tile or native slider to choose from, monitor names, on-screen indicator, 0% protection, documentation for major distributions, and test plans. What's missing is listed above, and it's an honest list. If you need a brightness slider for an external monitor in GNOME 46–51: 1. Install ddcutil-service 2. Install "Multi Display Adjustment" from extensions.gnome.org If something doesn't work or you want a new feature considered, write an issue in the repository. It would be even better if you gave this repository a star on GitHub or left a review on extensions.gnome.org. --- > — Do you handle monitor brightness in your Linux setup, and how? Have you tried extensions or sticking to raw CLI tools? Let me know in the comments!

  2. Habr · · @hopsayer

    Регулировка яркости внешнего монитора в GNOME, как в KDE: что есть, что выбрать и почему я начал контрибьютить Если у вас ноутбук с внешним монитором и вы переключаетесь на GNOME из KDE, то быстро замечаете: экран ноутбука по яркости регулируется, а внешний монитор по HDMI или DisplayPort нет. В KDE в трее есть ползунки и для встроенного, и для внешнего мониторов, тогда как в GNOME о внешних мониторах в интерфейсе никаких упоминаний. Остаются кнопки на самом мониторе и его экранное меню, которые уступают в удобстве и редко используются. Как пользователь GNOME, я долгое время решал эту проблему программно - расширением, которое рисовало полупрозрачный чёрный слой поверх картинки через xrandr. В сентябре 2025, после полного принудительного перехода GNOME на Wayland, мой способ перестал работать, и почти год я ночью закрывал монитор с YouTube куском полупрозрачной ткани. Вставать с постели, попадать в темноте, с песком в глазах, по неподсвеченным кнопкам на спине монитора мне не хотелось. Вникать в непрозрачную и очень специфическую нишу решений над протоколом DDC/CI - тогда тоже. Тем более, что спецификации в интернете указывали отсутствие поддержки DDC/CI моим монитором (это было неправдой). Недавно поставил Fedora с KDE на второй диск и внезапно обнаружил, что там мой внешний монитор регулируется из коробки. Короткий ответ Если вам нужно просто получить ползунок яркости внешнего монитора в GNOME 46–51: Установите ddcutil-service (команды для Debian/Ubuntu, Arch, Fedora, openSUSE и сборка из исходников есть в README расширения). Установите Multi Display Adjustment с extensions.gnome.org. Дальше в статье разбираюсь, почему именно так, какие есть альтернативы и чем они отличаются. Сразу раскрою: я контрибьютор этого расширения. С 3 октября 2026 года в него влиты 14 pull моих request’ов. Но сначала я был обычным пользователем, который искал расширение для себя и сравнивал. Сравнение ниже построено так, чтобы его можно было проверить: одинаковые критерии, скриншоты по одной схеме, ссылки на исходники. Почему в KDE это есть, а в GNOME нет В KDE за яркость отвечает системный сервис PowerDevil, который работает с внешними мониторами через библиотеку libddcutil. Отдельный ползунок для каждого дисплея появился в Plasma 6.2 (рассказ разработчика). В GNOME такой функции нет, и насколько я знаю, в планах её тоже нет. Моя интерпретация: GNOME Shell стремится к минимуму внешних зависимостей, а KDE устроен как набор модулей, где ещё одна зависимость не проблема. У встроенного решения есть и цена. Внедрение DDC/CI в KDE шло непросто, сбои ddcutil в KDE неоднократно приводили к проблемам: зависание после обновления ddcutil до 3.0.0, мерцание монитора при старте PowerDevil. Для таких случаев в PowerDevil была создана специальная переменная окружения POWERDEVIL_NO_DDCUTIL=1, которая отключает работу с ddcutil (README PowerDevil). С расширением GNOME проще: его можно выключить в приложении «Расширения», а если gnome-shell падает вскоре после загрузки расширений, специальный сервис сам отключает пользовательские расширения (коммит в gnome-shell). Прочие Linux окружения Cinnamon (Linux Mint): Из коробки ползунок не работает с внешними мониторами. Решается установкой официального апплета DDC/CI Monitor Brightness из настроек. Концептуально это адаптация идей KDE в Cinnamon - трей, меню, ползунки с названиями мониторов, работа через чистый ddcutil. Технологически - похоже на обкатанные в GNOME-расширениях архитектурные решения 2021-2024 годов. В описании и скриншотах есть признаки того, что тестировалась работа только с одним внешним монитором, и не ясно, как оно ведёт себя с несколькими. Тем не менее, у этого окружения есть своё решение. XFCE: Штатный плагин управления питанием не умеет управлять внешними дисплеями. Можно использовать xrandr (программно) либо ddcutil (аппаратно), но оба из терминала либо через внешние скрипты. COSMIC (Pop!_OS): Новое окружение на Wayland. Из коробки поддерживает DDC/CI с мая 2026 (1.0.14), что ставит его наравне с KDE в этом вопросе. До этого пользователи выкручились так же, как везде. Прочие операционные системы В macOS система «из коробки» не умеет регулировать яркость не-Apple внешних мониторов, нужно использовать физические кнопки. Это официальная позиция Apple, и их бизнес-логика вполне читаема. Энтузиасты решают это утилитами MonitorControl или BetterDisplay - обе работают через тот же протокол DDC/CI. Windows по умолчанию так же не умеет отправлять управляющие команды монитору по кабелю. Существуют трей-утилиты Twinkle Tray и Monitorian, а также Power Display из состава Microsoft PowerToys (тоже поверх DDC/CI, но отдельной установкой). Как это работает Внешние мониторы (поддерживающие это) управляются по протоколу DDC/CI: команды идут по I²C-каналу прямо в кабеле. Яркость это параметр VCP 0x10. На Linux этим занимается утилита ddcutil. Проверить, видит ли она ваши мониторы: ddcutil detect ddcutil getvcp 10 # текущая яркость ddcutil setvcp 10 50 # поставить 50% sourcecraft.dev Если это работает от обычного пользователя, дальше нужно только расширение. Если работает только с sudo, см. права доступа к I²C. Расширения общаются с монитором двумя способами: Команда ddcutil ddcutil-service Как работает Новый процесс на каждое изменение Фоновый сервис, общение по D-Bus Опрос шины I²C Заново при каждом запуске Один раз при старте Задержка и накладные расходы Выше, зависит от монитора и числа шагов Ниже архитектурно Цена Нет лишних зависимостей Нужно поставить ещё один пакет Я не замерял задержки объективно, но разница архитектурная и человеку сразу заметная: для ползунка, который дёргает значение десятки раз в секунду, постоянный сервис подходит лучше, чем “грязный” спавн нового процесса по CLI на каждый шаг. Что я хотел от расширения Когда я начал искать, у меня сложился список критериев. Ни одно расширение не закрывало его целиком. Отзывчивость (лёгкий бэкенд). Не запускать тяжёлый процесс на каждый шаг ползунка. Нативный вид. Ползунок там, где его ждёшь, выглядящий как родной, без чужеродных значков и обрезанных названий. Отсутствие ощущения “колхоза”. Живой проект. Поддержка текущих версий GNOME, ответы на issues. Минимум настроек. То, что можно решить за пользователя, должно быть разумным умолчанием, а не переключателем, который нужно гуглить. Отсутствие раздутости. Расширение делает одно дело. Проект понимает свои границы и держит скоуп, успешно обслуживается при небольших ресурсах и вовремя адаптируется под новые версии GNOME. Как можно менее инвазивные и хрупкие архитектурные решения. Поставил и забыл. Понятная документация. Чтобы настроить его, не нужно быть инженером. Мелочи, из-за которых страдаешь на практике: поэкранный индикатор уровня и защита от 0%, при котором некоторые мониторы гасят подсветку и потом тяжело вернуть. Что есть Я сравнивал четыре расширения. Скриншоты одинаковые для всех: слева окно настроек (если оно есть), справа панель Quick Settings. (Quick Settings - что это? См. после сводной таблицы) Набор кандидатов сформировался естественно - по находимости, актуальности для свежих версий GNOME, хотя бы минимальным признакам жизни у проекта, самобытности (минимальной “форковости”, близости к апстриму). Сводная таблица Brightness control using ddcutil Adjust Display Brightness 2 Display Adjustment Multi Display Adjustment Бэкенд команда ddcutil команда ddcutil ddcutil-service ddcutil-service Где ползунок отдельный значок в верхней панели по умолчанию, либо среди системных ползунков внутри плитки, значок в верхней панели всегда все ползунки всырую без группировки высыпаются внизу Quick Settings мимикрия под системный ползунок сразу под ним либо плитка «Displays» Название плитки нет «Display Br…» обрезано нет «Displays» Экранный индикатор (OSD) опция, выключена по умолчанию, показывает уровень на всех мониторах сразу опция «Show On-screen Feedback» нет есть, на том экране, который регулируют прямо сейчас Настройки много, почти без пояснений, многие предпочтительные по умолчанию выключены много, с пояснениями нет пять, умолчания продуманы Контраст нет есть, RGB тоже есть, всегда, не скрыть; 2 ползунка на монитор безопционально есть в плиточном режиме, можно скрыть Горячие клавиши есть есть, колесо мыши тоже нет нет собственных (отложены); колесо и стрелки работают штатно, как на любом ползунке GNOME Откуда ставить extensions.gnome.org extensions.gnome.org, иногда локально через cloned-repo/deploy.sh extensions.gnome.org extensions.gnome.org Нужен ddcutil-service нет нет да да Активность переписан в ноябре 2025, поддержка GNOME 50 с апреля 2026; открыто 14 issues и 8 PR с неопределенным ETA* 1 открытый issue (с 2023 года), 10 MR за всю историю 0 открытых issues, 6 MR за всю историю; в 2026 году по истории коммитов только объявление поддержки GNOME 50 и 51 (последняя версия 0.0.9) 6 релизов с 2 октября, 1.5.0 (17 октября); 38 PR, закрыты, включая 14 моих Загрузки на EGO 119к 35 21к 251 (Данные на 22.10.2026) Остальные (десятки по “ddcutil”) являются в основном клонами описанных. Это я и имел в виду под “близостью к апстриму”. Интересным из них показалось “Control monitor brightness and volume with ddcutil”. Хоть основанность на “Brightness control using ddcutil” и видна в названии, автор (Nei) проделал заметную собственную работу: мимикрировал под GNOME на уровне иконок и позиционирования, добавил регулировку звука мониторов - не просто форкнул чужой код с минимальными изменениями и ушёл в закат. Это похвально, но на GNOME 50/51 расширение уже не поддерживается. Далее идут индивидуальные описания каждого расширения с единообразными скриншотами в ванильном GNOME. Скриншоты расширений сделаны в их уже настроенном под меня состоянии в результате тестов. Восстанавливать дефолты и всё переснимать было бы слишком накладно. Сами окна настроек с доступными параметрами в любом случае приложены тоже. Но это скорее даже добавляет очков каждому, т.к. лишние или чужеродно выглядящие в GNOME элементы в них уже были выключены там, где они это предусматривают. Brightness control using ddcutil Страница на EGO и GitHub. Самое известное. Работает, но вызывает обычный ddcutil на каждое изменение, что приводит к заметным задержкам реакции монитора из-за оверхеда. Из коробки добавляет отдельный значок в верхнюю панель, поэтому стандартный вид нужно сначала перенастраивать: переключить размещение на системное меню, выключить лишние ползунки. Настройки почти без описаний, и понять их без опыта трудно. Настройки Quick Settings Индикатор уровня есть (Show OSD), но он выключен по умолчанию и, судя по коду, рисуется на всех мониторах сразу, а не на том, который регулируется. Вживую перепроверить не могу, т.к. эта его функция перестала у меня работать по неясным причинам (систему с тех пор не обновлял). Открыл issue, ответ был, но ясности нет и срок неопределён. Проект в режиме поддержки: в ноябре 2025 был большой рефакторинг, после него только поддержка GNOME 50. Adjust Display Brightness 2 GitLab, недавно прошёл ревью и вышел на EGO. Сначала удалось установить через EGO, но в дальнейшем (перелогин - делался) он перестал устанавливаться оттуда. Для перетестов и пересъёмов скриншотов мне пришлось ставить его через deploy.sh из папки склонированного репозитория. Больше всего функций: контраст, RGB, горячие клавиши, колесо мыши, выбор раскладки ползунков, раздел диагностики. Настройки хорошо описаны. В репозитории хорошая, обновляемая документация, совсем недавно актуализировалась и переписывалась. Настройки Quick Settings Минусы с точки зрения вида, умолчаний и настраиваемости: ползунок спрятан в плитке, название которой обрезается, а значок в верхней панели виден всегда. Тоже вызывает обычный ddcutil, отзывчивость воспринимается ниже, чем у «Brightness control using ddcutil», из-за того, что управляющий сигнал к монитору уходит только при отжиме ЛКМ по ползунку. OSD (наэкранный индикатор) имеет выбивающийся из GNOME (цвет, вёрстка, шрифт) вид. Ползунки в плитке выглядят аляповато. Display Adjustment Страница на EGO и GitLab. Использует ddcutil-service, ставится в один клик. Два ползунка, яркость и контраст, добавляются внизу панели. Настроек нет: на скриншоте слева окно с информацией о расширении, и всё. Контраст нельзя скрыть, подписей у ползунков нет. Иконка контраста подобрана неудачная; пусть я и понимаю, как он к этому пришёл. «Настройки» (окно информации) Quick Settings Multi Display Adjustment Страница на EGO и GitHub. Основано на Display Adjustment (оригинальный автор указан в README и CHANGELOG), автор развития Samuel Cecilio. Использует ddcutil-service. Название монитора как в системных настройках, значение в процентах, поэкранный индикатор. Плитка называется просто «Displays», без подзаголовка, чтобы длинное название плитки и/или монитора не обрезалось. Размещение выбирается: ползунки среди системных, рядом с ползунком яркости GNOME (выше или ниже него) либо плитка «Displays». Настроек пять: тип размещения, положение, минимум яркости 1%, контрастные ползунки, общий ползунок для всех внешних мониторов. Окно настроек продумано: все пункты имеют описания и меняют своя значения, доступность и описания в зависимости от значений и доступности пунктов, от которых они зависят, с целью сделать UX самообъясняющимся. Настройки Среди системных ползунков Плитка Чего в нём нет: Собственных горячих клавиш. Однако, благодаря политике минимальной инвазивности, они не настолько сильно нужны. Нативное поведение GNOME распространяется и на элементы расширения: колесо при наведении крутит значение по 2 единицы, а стрелки клавиатуры меняют его на 10. Это работает и в режиме плитки, и среди системных ползунков. Подробной RGB-регулировки. Контраст только в режиме плитки. Как и у остальных, нужно установить бекэнд-зависимость, тут это ddcutil-service: для Arch (AUR) и openSUSE есть пакеты, для Fedora есть COPR (его собираю я), для Ubuntu/Debian есть CI-пакеты стороннего автора. Цели сделать “швейцарский нож”. Добавки идут по веским причинам, если могут быть протестированы на имеющемся железе и если не нарушают границы проекта. Не исключаю, что читателя может заинтересовать и другое расширение из представленных, и это тоже okay - мне будет достаточно мысли, что моя поисковая, аналитическая и сравнительная работа кому-то пригодилась. Как я стал контрибьютором Когда я сравнивал, меня зацепил не столько набор функций, сколько то, где лежит код - это влияет на сложность донесения своих предложений до автора. Два из четырёх расширений на GitLab (и такой процент по моему опыту редкость), два на GitHub: одно из них в режиме поддержки, а Multi Display Adjustment молодое, с живым репозиторием, прямо открытый к вкладам, с ближайшим к моему видением (конситентный дизайн, минималистичность). Для меня это был сигнал открытости: на GitHub проще написать issue и отправить PR, а активная разработка говорит, что на них ответят. Почему я не сделал свой форк? Я не хотел создавать «ещё одно» решение. Эта ниша “в кризисе” именно из-за распыления усилий, когда работа не соединяется, а дробится и дублируется. Мне захотелось взять чужое готовое и довести его до нужного мне состояния, чтобы оно в моих глазах превзошло остальных; помочь проекту с брендингом, UX и инструкциями. Плюс это тренировка работы в команде с людьми из разных часовых поясов. Я написал два issue. #2 просил минимум яркости 1%, чтобы монитор не гас в ноль. Через три дня это вышло в версии 1.2.0. #8 просил экранный индикатор при регулировке, и он вошёл в 1.3.0 в тот же день, 2 октября. После такого я решил не просто пользоваться, а помогать. Дальше работал слоями, по возможности один PR на одну идею: #16: вынес чтение и запись яркости и контраста из пункта меню в отдельный класс VcpController, чтобы им мог пользоваться другой виджет. Поведение не менялось. #17: ползунки среди системных, без плитки (режим Inline). #18: выше или ниже ползунка GNOME. #19: минимум 1% сделан опцией, настройки приведены в порядок. Всё это вошло в версию 1.4.0 (7 октября). Потом оформление и документация: новый скриншот в стандартном виде GNOME (#28), короткое описание списком (#30), плитка показывает только заголовок (#31), пошаговая инструкция по установке (#34), уведомление с кнопкой «Open instructions», если не установлен ddcutil-service (#36), пакет для Fedora, чтоб стали покрыты все большие дистрибутивы (#38). Последний слой инструменты для разработки: разделение на src/ и docs/ (#39), эмулированные мониторы для отладки без железа (#40), планы ручного тестирования для каждой версии GNOME (#44). Поддержку GNOME 51 добавил сам мейнтейнер, результат 1.5.0 от 17 октября. Итого: 14 влитых PR, возможно, сделаю ещё несколько, стали приходить новые контрибьюторы. Скачиваний на EGO было 45 за 2 месяца к концу сентября, сейчас более 250 (на 22 октября 243), темп выглядит ускорившимся. Итог Что я считаю законченным для первого этапа: плитка или родной ползунок на выбор, названия мониторов, экранный индикатор, защита от 0%, документация для основных дистрибутивов, тест-планы. Чего нет, перечислено выше, и это честный список. Если нужен ползунок яркости внешнего монитора в GNOME 46–51: Установка ddcutil-service Расширение «Multi Display Adjustment» на extensions.gnome.org Если что-то не работает или хотите рассмотрения новой функции, пишите issue в репозиторий.

  3. YouTube · · YouTube description · Alex Hitt

    MonitorControl GitHub Explained: How Mac External Display Dimming Works monitorcontrol by monitorcontrol: monitorcontrol/monitorcontrol MonitorControl is an open-source macOS utility for reclaiming brightness and volume control on external displays. This overview follows the path from Apple keyboard input to monitor hardware: Accessibility hooks capture the keys, then the app routes commands through DDC/CI, native Apple display frameworks, gamma-table dimming, or a shade overlay. See why DDC/CI can change the physical backlight, why software fallbacks do not reduce monitor power, how combined dimming crosses firmware floors, and where docks, adapters, Apple Silicon HDMI ports, and monitor firmware limit compatibility. TimeStamps: 0:00 Why macOS External Display Controls Fail 0:47 MonitorControl's Input-to-Display Bridge 1:43 DDC/CI Hardware Control 2:41 Native Apple Paths and Software Fallbacks 4:14 Combined Dimming Beyond Firmware Limits 5:28 Cable, Dock, and Apple Silicon HDMI Limits 6:38 Maintenance Mode and BetterDisplay 7:34 Why the Architecture Still Matters 🖥️ External display brightness and volume routing 🔌 DDC/CI hardware control over the display path 🌗 Gamma, shade, and combined dimming fallbacks ⚠️ Dock, adapter, HDMI, and firmware limitations The practical takeaway is a compatibility map: direct DDC/CI offers hardware-level control when the display path carries the needed data, while gamma and shade keep visual dimming available when it does not. Treat docks, HDMI paths, and firmware as part of the system, and consider the maintainers' BetterDisplay alternative for restricted Apple Silicon paths. #MonitorControl #macOS #DDCCI [de-DE] JNAS ynp_a828044d47f31a22 filmisch Privater automatisierter Staging-Upload. Paketidentität: ynp_a828044d47f31a22; Ausgabe: cinematic. [es-US] JNAS ynp_a828044d47f31a22 cinemática Carga de entorno de prueba de automatización privada. Identidad del paquete: ynp_a828044d47f31a22; salida: cinematográfica. [fr-FR] JNAS ynp_a828044d47f31a22 cinématique Téléchargement de l'environnement de test d'automatisation privé. Identifiant du package : ynp_a828044d47f31a22 ; sortie : cinématique. [hi] YNAS ynp_a828044d47f31a22 सिनेमैटिक निजी स्वचालन स्टेजिंग अपलोड। पैकेज पहचान: ynp_a828044d47f31a22; आउटपुट: सिनेमाई। [id] JNAS ynp_a828044d47f31a22 sinematik Unggahan staging otomatisasi pribadi. Identitas paket: ynp_a828044d47f31a22; output: sinematik. [it] JNAS ynp_a828044d47f31a22 cinematografico Caricamento di automazione privata. Identità del pacchetto: ynp_a828044d47f31a22; output: cinematico. [pt-BR] JNAS ynp_a828044d47f31a22 cinematográfico Upload de teste de automação privada. Identificação do pacote: ynp_a828044d47f31a22; saída: cinemática.

    110 views
  4. Bluesky · · @nick-tune.me

    Today I discovered Monitor Control: MonitorControl/MonitorControl My monitor's menu button is broken. This solves that problem nicely.

  5. Hacker News · · lenbrocki

    Show HN: Content-adaptive display brightness for macOS with DDC/CI support I was always annoyed that I had to adjust brightness when switching from an IDE in dark mode to a bright web page. I was aware of Lumen anishathalye/lumen but didn't use it since it does not support external monitors. Therefore, I built Lumos, which is heavily inspired by Lumen but adds support for external monitors. The DDC/CI part of the code is vendored from MonitorControl/MonitorControl. It really improved my experience and I almost never have to manually adjust brightness anymore. And it is open source so I wanted to share it here.

    1 point
  6. X · · @mahdi

    The brightness keys on a Mac still do nothing for most external monitors, which is a weird gap to have in 2026. MonitorControl fixes it over DDC, native on-screen overlay included. MonitorControl/MonitorControl

    98 views

Latest stargazers

The last 10 distinct accounts we observed this year.

Most active participants

PR, issue, comment & review events in the past year.

Packages

No packages found.

README badges

Embed a badge in your README or website.

  • MonitorControl/MonitorControl reached #3 in daily stars on gitwal · Jul 10, 2020
Live mentions · last 30 days
MonitorControl/MonitorControl mentions in the last 30 days