[HN Gopher] KDE Plasma Widget for external monitor brightness ad...
       ___________________________________________________________________
        
       KDE Plasma Widget for external monitor brightness adjustment
        
       Author : alin23
       Score  : 172 points
       Date   : 2023-04-11 12:12 UTC (10 hours ago)
        
 (HTM) web link (github.com)
 (TXT) w3m dump (github.com)
        
       | plq wrote:
       | If 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/3c002d9822ce...
        
         | davidhi7 wrote:
         | Developer here, why wouldn't you just install the official pip
         | package `ddcci-plasmoid-backend`?
        
       | swah wrote:
       | Also use something like this on Mac:
       | https://github.com/MonitorControl/MonitorControl
        
       | marcosdumay wrote:
       | Debian 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 wrote:
         | Using 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%.
        
       | kirubakaran wrote:
       | This 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
        
       | alin23 wrote:
       | I develop Lunar (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
        
         | lloeki wrote:
         | I've user Lunar for quite a while, then moved to
         | MonitorControl, and am now on BetterDisplay, which notably
         | includes DDC/CI over the M1 HDMI ports.
         | 
         | Also its ability to fake screens of arbitrary resolutions e.g
         | for headless machines is solid gold.
         | 
         | https://github.com/waydabber/BetterDisplay
        
           | sausajez wrote:
           | Can I just say... such a healthy way to help the ecosystem
           | but retain distinguishing features
        
           | alin23 wrote:
           | Yes, BetterDisplay got DDC support on HDMI M1 soon after its
           | dev learned that I added it in Lunar:
           | https://github.com/waydabber/BetterDisplay/issues/1361
           | 
           | I'm friends with Istvan (the BetterDisplay dev) from the time
           | he was a Lunar user, and we usually share implementation
           | details for non-Pro features.
        
         | janjones wrote:
         | _> there 's TwinkleTray for Windows_
         | 
         | There is also Monitorian for Windows:
         | 
         | https://github.com/emoacht/Monitorian
        
         | Garcia98 wrote:
         | gddccontrol 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 wrote:
           | _> 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.
        
             | Garcia98 wrote:
             | Sure, but gddccontrol has a GUI, has been supported since
             | 2004 and works fine in 2023, that's why I find it a bit odd
             | that he didn't know what to recommend to Linux users until
             | now.
        
               | alin23 wrote:
               | I knew about gddccontrol, it's just not what people were
               | looking for when they were asking me about an alternative
               | to Lunar. I obviously gave them any alternative I could
               | find, but all the responses I got were that a simpler
               | easily reachable UI and keyboard shortcuts for changing
               | brightness were what they expected.
        
               | pohuing wrote:
               | Maybe because it's discoverability is bad. I've been
               | looking for something to control screen brightness
               | because I wanted to give Linux another shot, so this
               | random post was a lucky find.
               | 
               | If I look for this topic on ddg I either find a Ubuntu
               | wiki entry(not really relevant to me on suse with KDE),
               | the arch Wiki which focuses solely on technical details
               | and clis. The first ten articles are clis, a lot of them
               | truly strange ones like writing magic numbers into random
               | system files.
               | 
               | Not a single mention of gddc tho, and the manpage is not
               | a very good advertisement either...
        
               | chronogram wrote:
               | Second Google result for me is the GitHub repository with
               | clear information. You're making a mountain out of a
               | molehill.
        
             | bee_rider wrote:
             | > 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.
             | 
             | Just a note -- "outrage" describes a state of extreme
             | agitation, it is probably not accurate to use it to
             | describe the post you've responded to.
        
         | inconceivable wrote:
         | random question for you: i have a sony oled display that auto-
         | dims on low color change activity (this is impossible to
         | disable - believe me, i've tried, even in the diagnostics
         | menu). do you have any idea how this could possibly be
         | circumvented?
         | 
         | Thanks!
        
           | alin23 wrote:
           | That is an ABL or Automatic Brightness Limiter and it's one
           | of the things that's messing Lunar's brightness Sync
           | algorithm because the max brightness is constantly changing.
           | 
           | It might be possible to disable from the monitor hidden
           | service menu, if you can find a way to enter it. But it will
           | also greatly decrease the lifespan of the diodes as OLEDs are
           | not made to go so long with high brightness and heat.
           | 
           | If the monitor does not provide such an option, there is no
           | way to circumvent this as the function is embedded in the
           | monitor firmware.
        
         | nierro wrote:
         | There is also Clight (https://github.com/FedeDP/Clight) if you
         | want automatic backlight adjusting given ambient brightness. It
         | supports external monitors through ddcutil C library and has
         | many more features to offer. Disclaimer: i am its creator ;)
        
           | nierro wrote:
           | It is Linux only btw.
        
           | miduil wrote:
           | I've tried setting up clight on various occasions and now
           | gave it a shot again, whilst I appreciate all the
           | documentation I'm still struggling to get it working on NixOS
           | with swaywm on a laptop. I'm primarily interested in
           | adjusting screen brightness based on my webcam. I'm already
           | using redshift/gammastep.
        
         | ChuckNorris89 wrote:
         | _> 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
        
           | alin23 wrote:
           | Yes, 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.
        
       | jraph wrote:
       | If 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.
        
       | shmerl wrote:
       | Nice! Interesting that it has to use i2c for it. I guess there
       | are no other interfaces to modify display properties?
        
       | crossbowffs wrote:
       | Neat! I'm working on something very similar for Xfce, but
       | invoking ddcutil natively: 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 wrote:
         | On 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.
        
       | paol wrote:
       | Oh 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 wrote:
         | There 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 wrote:
           | https://gitlab.com/ddcci-driver-linux/ddcci-driver-linux
        
             | davidhi7 wrote:
             | Using 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%.
        
         | mastax wrote:
         | I 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 wrote:
           | Yeah, 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 wrote:
           | Windows has had support for DDC/CI for a long time.
        
             | mastax wrote:
             | Exposed to the user as a brightness control for external
             | monitors? Where?
        
               | ChuckNorris89 wrote:
               | Not exposed in the GUI but has OS support which can be
               | accessed through third party apps.
        
             | wtallis wrote:
             | In what sense is it supported? What functionality is
             | exposed to end users?
        
               | tjoff wrote:
               | Automatic detection of default and supported resolutions
               | and information about DPI? Or is it not the same?
        
               | wtallis wrote:
               | DDC 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.
        
               | patrakov wrote:
               | I thought it was supported by NVidia control panel since
               | ages?
               | 
               | P.S. Not a user of NVidia now, might be a fake memory.
        
         | KMnO4 wrote:
         | I'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 wrote:
           | I maintain a database of monitors coming from Lunar users
           | here: 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;
        
       | neogodless wrote:
       | Now 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 wrote:
         | Seems 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.
        
       | treesciencebot wrote:
       | Looks amazing and works perfectly fine (Ubuntu Dev 23.04 + KDE
       | with Phillips 325E1 and 328E1)
        
       | mmh0000 wrote:
       | This is amazing! Thank you for sharing, can confirm it works
       | perfectly on Fedora + KDE + (2) Dell U3415W.
        
       | fanatic2pope wrote:
       | If you use gnome, this extension has worked well for me.
       | 
       | https://extensions.gnome.org/extension/2645/brightness-contr...
        
       ___________________________________________________________________
       (page generated 2023-04-11 23:00 UTC)