8 ms·
KDE Plasma Widget for external monitor brightness adjustment
- shmerl 4y agoNice! Interesting that it has to use i2c for it. I guess there are no other interfaces to modify display properties?
- paol 4y agoOh I'm definitely trying this. I currently have kb shortcuts defined for brightness up/down that invoke ddcutil. This really ought to be built into every OS. From what I've read, the catch is that DDC implementations are often very buggy and can cause problems, so it would be risky to do this out of the box.
- pabs3 4y agoThere is a plan to add DDC to the Linux kernel, so that any desktop can manage external monitors using the same APIs they use to manage internal laptop panels. Hopefully that would mitigate the problems you mention.
- seba_dos1 4y agohttps://gitlab.com/ddcci-driver-linux/ddcci-driver-linux https://gitlab.com/ddcci-driver-linux/ddcci-driver-linux
- davidhi7 4y agoUsing this driver, Powerdevil does not allow you to set values individually per monitor, instead gives you only a single slider. This is absolutely sufficient for single monitor or multi monitor setups with identical models, but in my case I need the option to set it individually since my monitors are all differently bright on 100%.
- pabs3 4y agoSee my comment above, per-display brightness config will need changes to the Linux kernel brightness userspace API.
- pabs3 4y agoYeah. There was an attempt to upstream that driver (by someone not involved in it), and the need for a better userspace API for backlight control got mentioned, so the driver wasn't merged. Probably a better driver will get merged eventually. https://lore.kernel.org/all/7f2d88de-60c5-e2ff-9b22-acba35cfdfb6@redhat.com/ https://lore.kernel.org/all/7f2d88de-60c5-e2ff-9b22-acba35cf...
- mastax 4y agoI bet if windows had supported DDC/CI for the past decade monitors would work with it reliably. (Well, as reliably as any hardware peripheral)
- paol 4y agoYeah, I suspect the reason DDC (and EDID) are so bad is that they're not critical for the monitor to perform its basic function, so there's no "evolutionary pressure" to improve it.
- ChuckNorris89 4y agoWindows has had support for DDC/CI for a long time.
- mastax 4y agoExposed to the user as a brightness control for external monitors? Where?
- ChuckNorris89 4y agoNot exposed in the GUI but has OS support which can be accessed through third party apps.
- wtallis 4y agoIn what sense is it supported? What functionality is exposed to end users?
- tjoff 4y agoAutomatic detection of default and supported resolutions and information about DPI? Or is it not the same?
- wtallis 4y agoDDC is how monitors send EDID information about their capabilities to the computer. DDC/CI adds the ability for the computer to send commands to the monitor for things like brightness and color settings and input selection. So Windows obviously is using plain DDC to offer you the right set of resolution choices, but none of the DDC/CI functionality appears to be exposed to end users, making it effectively unsupported and unused and untested.
- KMnO4 4y agoI’d love a database of monitors with good DDC/CI support. You can’t just assume a good or high end monitor will work as you want it to. My Samsung, for example, supports DDC/CI for HDMI but not DisplayPort, so I have to choose between software control and a refresh rate higher than 60Hz. It also only supports a small subset of commands and doesn’t work if the device sending the command isn’t the active display input. I wanted to build a small utility that switches from my work PC to home PC automatically after 5pm, but all those compromises make it a very tedious process.
- alin23 4y agoI maintain a database of monitors coming from Lunar users here: https://db.lunar.fyi https://db.lunar.fyi It's not curated or anything like that because DDC can be affected by more than just the monitor itself (adapters/hubs/docks/GPU etc.) but you can run some statistics to see what specific monitors support DDC for most people. For example, here's a query you can run to find the monitors that are most likely to support DDC: SELECT regexp_replace("name", ' \(\d+\)$', '') AS name, count(ddc) working_ddc_count, connection, "DisplayProductID", "isHiDPI" FROM displays WHERE ddc AND NOT "kCGDisplayIsVirtualDevice" AND NOT "isAirPlayDisplay" AND NOT "isTV" AND "DisplayProductID" != 0 AND "DisplayVendorID" NOT IN(7789, 1552) -- Filter out LGs as they don't have a useful name and Apple displays AND name NOT LIKE 'Unknown Display%' -- Filter out those in a semi-connected state GROUP BY name, "DisplayProductID", connection, "isHiDPI" ORDER BY working_ddc_count DESC;
- swah 4y agoAlso use something like this on Mac: https://github.com/MonitorControl/MonitorControl https://github.com/MonitorControl/MonitorControl
- alin23 4y agoI develop Lunar (https://lunar.fyi/ https://lunar.fyi/) for controlling monitors on Mac and stumbled upon this gem for Linux which I wanted to share with you. I regularly get asked to recommend something similar to Lunar for Linux and Windows and while there's TwinkleTray for Windows, I didn't have a good recommendation for Linux. Glad this finally exists! A lot of people also use MonitorControl for Mac and might be curious what's the difference between it and Lunar. I have a comparison table here for those people: https://lunar.fyi/lunar-vs-monitorcontrol https://lunar.fyi/lunar-vs-monitorcontrol
- ChuckNorris89 4y ago>there's TwinkleTray for Windows For Windows I fiind ClickMonitorDDC[1] is a great app as it has more configuration options, and also lets you control other parameters such as volume, contrast, RGB, color profiles, etc., and also lets you control these individually via the mouse wheels scrolling over the tray icons, which for me is a must have UX wise. [1] https://github.com/chrismah/ClickMonitorDDC7.2 https://github.com/chrismah/ClickMonitorDDC7.2
- alin23 4y agoYes, that one is really good as well and I recommend it for more advanced use cases like setting manufacturer specific VCPs (e.g. E9 to 36 for PBP on Dells etc.) But most people ask me for a Lunar alternative which by that they mean a pretty UI with some adaptive or automated brightness. That's why I usually recommend TwinkleTray.
- Garcia98 4y agogddccontrol has been around for ages on Linux and it's not exclusive to a single desktop environment (and I'm sure there's a plethora of alternatives, but that's just the one I use).
- ChuckNorris89 4y ago>gddccontrol has been around for ages on Linux Linux has many such apps, but many are just CLI based, or buggy/janky GUIs, or just don't work at all, depending on what HW/OS you run. Having a great looking app the integrates seamlessly into your DE and justworks(TM)(hopefully) is big step in the linux world. >but gddccontrol has a GUI, has been supported since 2004 and works fine in 2023 @Garcia98 gddccontrol GUI might have existed since whenever, and maybe it works fine for you, but for me it has been extremely buggy on Ubuntu 22.04 to the point it is unusable so I welcome other similar apps if they improve my experience. Therefore I don't get your outrage on people promoting this other app. You are free to keep using gddccontrol, the existence of other similar apps doesn't mean gddccontrol will stop working for you.
- neogodless 4y agoNow could this fix the non-functional laptop monitor brightness buttons issue I had? (Lenovo Legion 5, RTX 2060, while in hybrid/automatic GPU switching mode - brightness buttons had no effect.)
- jraph 4y agoSeems unlikely. External monitors use a different protocol than laptop monitors. See the discussions about DDC on this HN comment page. Worth a try though, laptops are sometimes weird.
- jraph 4y agoIf it ever works reliably, I hope the feature gets integrated to KDE by default, possibly in the battery icon where there is the brightness setting of the internal monitor. Could be weird for desktops, so maybe the widget could be generalized a bit so it also allows setting the brightness of the laptop screen.
- fanatic2pope 4y agoIf you use gnome, this extension has worked well for me. https://extensions.gnome.org/extension/2645/brightness-control-using-ddcutil/ https://extensions.gnome.org/extension/2645/brightness-contr...
- plq 4y agoIf your distro doesn't have a package for the backend of this plasmoid yet, it invokes the backend with[1]: python3 -m ddcci_plasmoid_backend So you can probably get away with this: git clone https://github.com/davidhi7/ddcci-plasmoid \ && cd $(python3 -c "import site; print(site.getsitepackages()[0])") \ && ln -s $(cd -)/ddcci-plasmoid/backend/ddcci_plasmoid_backend . [1]: https://github.com/davidhi7/ddcci-plasmoid/blob/3c002d9822ce4534bff2ed2e14b4f8ed8da5eef8/plasmoid/contents/config/main.xml https://github.com/davidhi7/ddcci-plasmoid/blob/3c002d9822ce...
- davidhi7 4y agoDeveloper here, why wouldn't you just install the official pip package `ddcci-plasmoid-backend`?
- plq 4y agoI never use pip for the system site-packages, that's the job of the distro package manager. As for pip install --user, I sometimes nuke the local repo so wouldn't be a robust solution given my workflow.
- jeroenhd 4y agoI personally avoid using pip for managing system libraries because they often end up conflicting with distribution provided packages. Even if packages are missing upstream, they often pull in dependencies that may end up conflicting later. Versions start mismatching, tools stop using when sudo gets involved, all kinds of weirdness that's hard to debug if it's caused by a library you pulled in months ago. My workaround for this problem is to install these tools in a separate venv and calling the binaries with their full path, but for tools like this where the command is built into the program that may be more difficult. It's also a waste of space in some cases, though deduplication tools can help there.
- davidhi7 4y agoI get your point. At some point this widget provided an option to specify the backend command manually, though I removed it because I couldn't see any use cases. I would happily add this functionality again if you require it.
- kirubakaran 4y agoThis is cool, thanks for sharing. I use a bash script to adjust brightness and contrast from the command line. I invoke it as `brco 80` etc where 80 sets it to 80%. The script is: $ cat `which brco` #!/usr/bin/env bash set -euo pipefail # use `ddccontrol -p` (probe) to find the following: mydevice="i2c-7" # brightness ddccontrol -r 0x10 -w $1 dev:/dev/$mydevice &> /dev/null # contrast ddccontrol -r 0x12 -w $1 dev:/dev/$mydevice &> /dev/null
- mmh0000 4y agoThis is amazing! Thank you for sharing, can confirm it works perfectly on Fedora + KDE + (2) Dell U3415W.
- crossbowffs 4y agoNeat! I'm working on something very similar for Xfce, but invoking ddcutil natively: https://github.com/apsun/xfce4-ddc-plugin https://github.com/apsun/xfce4-ddc-plugin (very much WIP, currently only supports hotkeys and a single monitor) I've found that shelling out to the ddcutil CLI directly tends to be "lossy" - as in, if invoked very quickly (i.e. via keyboard shortcuts), it will tend to race with itself and fail half the time. So far the best solution I've found is to run a daemon to queue and batch together multiple operations, which significantly improved reliability.
- iudqnolq 4y agoOn my desktop ddcutil commands take around 20 seconds unless I specify the --bus manually. Right now I just remember the appropriate bus number, but a daemon to cache that would be handy. I wonder if a desktop-independent ddcutil daemon makes sense.
- marcosdumay 4y agoDebian in particular has the ddcci-dkms package that once installed should solve the entire problem and let you control external monitors the same way you control internal ones. I just found it, and I have to restart KDE to see if it worked, so no certainty here yet :)
- davidhi7 4y agoUsing this module, Powerdevil does not allow you to set values individually per monitor, instead gives you only a single slider. This is absolutely sufficient for single monitor or multi monitor setups with identical models, but in my case I need the option to set the brightness individually since my monitors are all differently bright on 100%.
- treesciencebot 4y agoLooks amazing and works perfectly fine (Ubuntu Dev 23.04 + KDE with Phillips 325E1 and 328E1)
- izoow 4y agoThanks, this is exactly what I’ve been looking for! I was even considering writing a Plasma widget myself because I couldn’t find anything. So far I’ve been using gddccontrol as it’s been the most reliable, but the UX isn’t the best.
- pipeline_peak 4y agoIs Kde that outdated that it needs this?
- jeroenhd 4y agoI don't know of any mainstream OS/DE that integrates this natively. Laptop displays are almost universally supported by brightness controls but even Windows doesn't seem to come with a tool to control standalone monitor brightness.
- wkat4242 4y agoNice! Just what I'm looking for. I wonder if I can get this going on FreeBSD, i2c seems to work a little differently there.