I disabled dithering on Apple silicon + Introducing Stillcolor macOS M1/M2/M3
@waydabber is there a way to implement a feature to show in menu bar:
- 8bit enabled or something similar (color mode status)
- Dithering disabled
To have it as a separate icons in menu bar. That would help to quickly understand that settings are the same.
Trying out MacOS Sequoia on the M1 Max. Never seen com.apple.prodisplay.plist before. Might have just missed it. It gets recreated when switching XDR presets on the built in display.
These seem interesting enough tho:
- enableGlobalBacklight
- enableAppleLook
- contrastEnhancementFactorLimits
Didn't spend much time as I guess the file will just be wiped our on reboot, and the last time I tried to create XDR presets I had a horrible time. Maybe they can be modified with BetterDisplay @waydabber?
Donux did you check all of those "disable" boxes in the NoMachine client advanced display connection settings? and set quality to 4 notches (important, the defualt quality level of 5 and higher works totally differently)
also, in the server-side NoMachine settings, did you disable acceleration and GPU encoding?
aiaf Thanks for the report! I added a Configuration Protection option for Color Mode, the app should reapply the change whenever the system reverts back. True, it's a Pro feature, but it's only a convenience one, a power user can just as easily create a script (some tools like Hammerspoon can be used for example as well) to run on wake, mode change or system startup and use betterdisplaycli to query the bit depth and switch if needed.
@madmozg - Thanks for the confirmation. Adding some menu bar indicators would indeed be a nice enhancement. I might add a feature like this - feel free to add an Issue for this under the app's GitHub Issues page, will tag it as an enhancement and do it when I get there! Thank you!
@async - wow, this is intriguing, did not notice that plist myself until now. I don't see enableGlobalBacklight
as a normal preset option (you can check what things the underlying API reports and offers as potentially changeable items under BetterDisplay's Display Information…/XDR Configuration
(under Settings/Displays) - these are mostly the same as a Preset export offers from System Settings. I'll experiment with it though, it would be nice to have an easy option to turn on global backlight (if that means turning off local dimming). The method of trying to force-enable it by changing various framebuffer settings did not work out very well (did have the desired effect to some extent but rendered the system unstable). Simply changing enableGlobalBacklight
to true
by editing the plist has no effect whatsoever.
waydabber The preset imports ignores quite a few things. Gave up on trying to run some of the flags the last time I tried. I guess you use some api for the XDR changes.
Not sure if you saw it, but I dug up a ton of bootflags and changable plist items that no one has looked into yet. Didn't have much time to play with any of it. Depending on what direction you're taking the app there might be some pretty useful stuff there. Still searching for a way to kill this horrible sharpening effect on all scaled resolutions.
https://ledstrain.org/d/2686-i-disabled-dithering-on-apple-silicon-introducing-stillcolor-macos-m1m2m3/1039
https://ledstrain.org/d/2686-i-disabled-dithering-on-apple-silicon-introducing-stillcolor-macos-m1m2m3/1029
https://ledstrain.org/d/2686-i-disabled-dithering-on-apple-silicon-introducing-stillcolor-macos-m1m2m3/1040
https://ledstrain.org/d/2686-i-disabled-dithering-on-apple-silicon-introducing-stillcolor-macos-m1m2m3/1020
DisplaysShouldNotBeTVs I did not do quality changes, but that 30 frames did some trick. Probably will need to try with some more changes. But, I have to say, it is so inconvenient, that I almost lack motivation. And 1:1 scaling does not work for me at all with noMachine, which is really disappointing. There must be so other solution, preferably connecting external monitor or windows laptop via USB-C and pushing an image there. Maybe even using some sort of network streaming with OBS or VLC and picking up that stream in windows laptop via ethernet cable.
Tried a bit on and off with the double invert trick for iPhone. Pretty significant effect. I have almost zero problems with it now, and it has been like this for at least a month. None. Dropping in 2 anectodal experiences in case others that are struggling with similar effects can provide some experiences that might make it a bit easier to relate them to some biochemistry.
But, after using the phone for a short while without the double invert trick again I realized that other monitors get these intense glowing red colors again. Seems super strange, as those sources doesn't trigger the effect on their own. Almost like the intensity of the iPhone recalibrates my vision. Like an on/off switch for HDR on other screens and lights. Same applies to led lights on cars, and it is most prominent for red.
I also noticed one other strange effect before I started doing the double invert. If I put on a color blind filter that skews the colors, like almost removing red from the iPhone screen it would significantly affect how I percieve other bright light sources for å pretty long time afterwards. If I remember correctly it turned the bright snow almost purple or green. For the white sky I often get this glowing yellow effect at times as well after screen use.
No idea what kind of sorcerery the screen is doing, but I'm really interested in what kind of adaptation it might be triggering.
- Edited
the quality change to 4 notches is 100% necessary because it prevents the screen from switching over and over between a color-fringed (compressed) version and less compressed version with slightly different colors every couple of seconds at random times (which is what happens at quality 5 and up)
at 4 notches and below, it remains the compressed version at all times, although this means you still get color artifacts they will stay the same at all times
also, another thing you need to do is disable show remote cursor pointer, otherwise the "pointer within the video stream" will cause anything it passes over to re-render and flicker slightly
hiding the remote pointer and only showing the local one, in combination with the quality setting, will give you the most still image
also, what do you mean by 1:1 scaling does not work? do you mean for retina / HiDPI displays? if so, then yeah that's right — it doesn't support Retina at all which is unfortunate. it only works properly when both the server and client are low DPI
for me i work through NoMachine on a standard low DPI laptop and it handles that perfectly. all i needed to do to get a 1:1 fit was create a custom BetterDisplay virtual display with a resolution that matches my Windows laptop
if it's still not working for you, try forcing the NoMachine server to H.264 compression mode and if that doesn't work try VP8 mode. while you're in that menu also set all the GPU acceleration options to software-only if you haven't done that already
So I just got a deal on a m1 MacBook Air with a messed up LCD. I also snagged a dasung 13.3 hd portable monitor for a extremely good price to which I plan to use on it for now. My question is which Mac osx version should I update to? I see 14.6.1 Sonoma is what it's trying to get me to update to but I'm assuming I can just manually update a older version?
The Mac currently is on OSX Monterey 12.5 and I noticed better display and still color doesn't support this version. Also do I just download better display or do I need that and still color both? I plan to eventually test other displays but need to find a baseline first.
photon78s mine has a front light but I haven't tried it or tested it yet. I am getting discomfort from the eink not sure why. Even with better display dithering set to off still is not comfortable. Certain mode on the eink flickers too
Vid here : https://imgur.com/a/6pBOwzA
photon78s what's weird is that it only does it in a certain display mode. Unless it still is doing it on the other mode where I don't see it, could be why it causes me issues. I was wondering if maybe better display wasn't working correctly or something.
When I use it I get weird tension in my head, sorta like pressure. Agitation/nervousness and it feels like something is moving behind my nose when I use it. Super weird.
- Edited
Donux Just found a solution. In fact, shockingly, it made NoMachine usable on a laptop where Windows 10 is typically unusable. Working in Windows 10 1809 on ThinkPad T480 (8th gen Intel i5, UHD Graphics 620):
The Solution
Install an Ubuntu MATE 24.04 VirtualBox VM within Windows 10 1809
- (since it's within a VM, this seems to bypass the typical GPU driver issues that newer Ubuntu versions have, which is why I simply use 24.04 instead of an older version)Disable 2D acceleration in the VM graphics settings
Disable the fullscreen bottom toolbar in VirtualBox UI settings (to ensure the VM runs 100% fullscreen)
Disable the software compositing window manager in Ubuntu MATE's "Window" settings
FWIW, I left MATE's text rendering on subpixel, I actually found it the most comfortable of the options
Turn off Ubuntu automatic updates for good measure
Use the VM in fullscreen.
Install NoMachine within the Ubuntu MATE VM and use it there.
(set up similar NoMachine settings, of course — BTW also keep ditherig.exe running on the Windows side to ensure stuff stays reduced to 6bit if your laptop isn't true 8bit)
Immediate and 100% noticeable difference. SO much less strain.
This is because the non-accelerated Linux VM itself is what makes it super comfortable, so all other Linux apps like Firefox run with way less strain too. Your screen will remain like this until you exit fullscreen and return to Windows 10, which will cause the usual strain to return.
Bonus: you also get less slippery trackpad scrolling within the Linux NoMachine client
Wait, what???
For some totally unknown reason, whenever my VirtualBox VM of Ubuntu MATE 24.04 is running fullscreen, the strain that I experience in Windows (and by extension, the Windows version of NoMachine on this laptop) pretty much vanishes. Everything looks flat and solid color backgrounds look so much more relaxing while the Linux VM is fullscreen.
In fact, the fullscreen VM is more comfortable to me than running Linux natively (which in that case, was only marginally more comfortable than Windows 10 on my T480)
Of course, this is super weird and it doesn't seem like this would work at first because Windows 10 is technically still the thing running behind this all, but the VM consistently stops strain for me every single time.
While running Windows, even with ditherig.exe, I usually need to wear "everything becomes pure deep shades of red" monochrome color filter glasses in order to use this laptop (which surprisingly get the job done! As long as I'm wearing the glasses and essentially viewing this laptop without color, I can use this laptop for many hours. But when I'm not using the glasses, Windows 10 on the T480 becomes unusable after only 10 minutes, and it doesn't matter if Intel graphics drivers are enabled, disabled, or downgraded, I get the same strain. It's even worse on 22H2 which is why I'm on 1809.)
BUT… whenever the Linux VM is fullscreen it's seriously a night and day difference. I immediately feel like I don't need the glasses anymore. I can use this laptop very comfortably in full color as long as the VM remains in fullscreen(!!) — even if Intel drivers remain enabled in Windows (however, Intel drivers were downgraded to earliest possible version, if that matters.)
I'm writing this post on "NoMachine inside VirtualBox inside Windows" without any strain. BTW, NoMachine still runs perfectly fine at full speed within the VM.
And yes, the strain returns for me immediately after hiding the VM and switching back to Windows.
Trying to figure out why
It's not because of the Windows UI design or text rendering, because I put a PNG screenshot of Windows within the VM and suddenly I could view that single "freeze-frame" of Windows without strain. I have a more detailed theory that I will make a thread about later, but what I'm generally thinking is that it's related to a specific type of strain-inducing illusion-like color/contrast enhancement method (in fact, not temporal and unrelated to dithering) that I'm becoming pretty confident is used by Windows 10 and 11 — that somehow VirtualBox is able to bypass.
What led to this theory is that I've noticed that solid black vertical lines look different on the fullscreen VM vs. on usual Windows. On the VM, the lines actually look like deep black ink to me. On Windows, there is a very faint hint of color fringing (that is there regardless of ClearType on or off — it's not related to ClearType and affects more than just text).
I've consistently repeated this same exact experience switching between Windows and the fullscreen Linux VM every day for 2 weeks now. This is why I am finally posting this — I know this is not placebo.
- Edited
DisplaysShouldNotBeTVs If you got the time try to compare a bit.
https://www.testufo.com/framerates-text
Do you use the exact same resolution?
I'm fairly certain that Mac uses more compression with artifacts when processing the screen while color table adjustments are in use. Metal overlays doesn't seem to have the same issue. Also there are some color schemes that get the same effect as quantization. No idea why. Probably some bandwidth limitation.
DisplaysShouldNotBeTVs If you can reproduce the above findings with an external display output I have some ideas