Replies: 3 comments 5 replies
-
Great idea. I was thinking about some improved night/dark mode feature for the app as well. Although for most users dark mode + night shift, combined with some dark mode browser extension might be fine, there could indeed be room for further improvements. I was thinking about some further contrast and color temperature/white point adjustments only though. (I moved this to discussions so more ideas could be added). |
Beta Was this translation helpful? Give feedback.
-
Somewhat related: I'll probably also add an option to stream filtered content to the origin screen (by excluding the stream window), which should more-or-less allow any kind of effects to be applied to a screen. Now this implementation uses CI filters for various effects (with varying results), but we could use custom shaders (that should be even more efficient as CI has some inherent overhead). |
Beta Was this translation helpful? Give feedback.
-
Ok, this is maybe bit crazy. But there are now 4 pages of image adjustment, effect and blend options. That should probably cover most of the use cases. :) ![]() ![]() ![]() ![]() |
Beta Was this translation helpful? Give feedback.
-
I got to thinking about why browser dark mode plugins/extensions are lame, and I realized that they all suck because they throw complexity at the problem when all that does is leave a long tail of issues (aka bright screen elements) falling through the cracks while adding more processing for the browser to do, slowing down the experience. The best browser extensions out there do an admirable job of preventing infuriating white flashes from temporarily being displayed by pages, but the price that you have to pay is reduced fluidity from the added processing done by the extension furiously intercepting the rendering, and you'll never be able to avoid fiddling with it when it invariably makes things impossible to read on some specific website.
I noticed that BetterDisplay is an indispensable part of using a mac at least for me, and it has a lot of interesting display mirroring type of functionality, so I wanted to see if there is any feasibility or interest from maintainers to add a feature that I'm imagining. I think it could potentially bring a large influx of users and paying customers. I think that it can be a stone that kills many birds, the sorry state of affairs of browser dark mode only being but one of these birds.
Let me explain.
The use case is that we're in a dark room, the prototypical example is doing browsing or getting work done on the computer while accompanying a young child to sleep. But the use cases are many. Sometimes we are up late in the night and need to use the computer and being exposed for even one second to a bright screen will ruin our night vision and possibly the rest of the night's rest, which has a real impact on physical health. Another example would be for the use of computers by astronomers in the field during a moonless night.
priority 1 is to be able to temporarily place a hard limit on visible flux out of the computer display.
Yes, we can manually reduce the brightness level, and in fact BetterDisplay already is really helpful by being able to on my MBP's XDR display crank the brightness down to below 1 nit by limiting the output brightness level even while the display is physically set to the lowest brightness. As I understand how this works, if the minimum level of brightness the monitor hardware allows us to set is 5 nits, we can set a "fake 1 nit" brightness level by scaling down the display buffer's intensities by a factor of 5. we lose 80% of our contrast ratio if that is applicable (aka non OLED) but we have a dimmer picture.
In challenging use cases at both ends of the brightness spectrum (when trying to make content legible at 1 nit in pitch dark or 1600 nits under direct sunlight) it tends to help to crank up the contrast slider.
I suppose one way of trying to capture the gestalt of dark mode is to say that we want to make the most of what contrast ratio might be available to us from the hardware at a given brightness level, by exploring ways of remapping/transforming/filtering the signal rather than merely scaling that signal.
I suggest a further enhancement to the low brightness scale technique, which is to implement different types of simple shaders to help support the stringent needs of dark mode, that is, preventing accidental bright exposure, by exploring some slightly more interesting but still simple shaders.
In terms of app UX:
A brainstorming list of possible dark mode filter implementations:
Notice how the bright parts of the image got turned dark but the structure and detail remain intelligible. The drawback with this is that it will not necessarily mangle all text, but it would likely need some tuning to prevent certain text sizes from being difficult to read due to straddling a size between coming out as single edge or outline. It also does not guarantee low brightness, since content with high frequency patterns would result in this thing producing more bright output. There's also some unclear choices around how to deal with colors without potentially completely destroying the visual intent of the content.
Unfortunately I have hit a wall in terms of implementation ideas rather earlier than I would like, because I am starting to realize that it really will be difficult to actually guarantee many things together that I would want:
Still, I think that there is something worth pursuing here even if we can only hit the first few, and I am convinced that it would greatly push the usability frontier of computing forward if we could make a really computationally efficient filter that applies to all content displayed on the screen that we can pull up instantly no matter what software we're using.
I think I have a decent illustrative real world example from this thought experiment on dark mode, and it's this screenshot from my gmail page:
The problem here is I already set a dark theme through the app, but it does have some glaring gaps; the big compose button and many emails still have white backgrounds. The browser extension Dark Reader is able to solve the problem but at the cost of bogging down the browser, and besides we're tempted to not engage the extension for a site that we already enabled dark mode on, but in this case it's merely a half baked dark mode and so it has fallen through the cracks.
Ideally I was imagining that a lightweight shader based filter may exist that could "detect regions of brightness" and "selectively invert them" but I now I wonder if that may be difficult to implement sufficiently efficiently. I do think detecting and nearly instantly responding by inverting something like 32x32 square pixel regions (and then refining and computing boundaries) if we meter them as "too bright" could actually be workable.
Beta Was this translation helpful? Give feedback.
All reactions