Question: I'm trying to get Windows 10 to emulate the new "Digital Wellbeing" feature that Google released alongside Android 9. Basically it changes the screen to grey-scale at night-time to try and incentivize people to get off their phone and go to sleep.

When I learned of Windows 10's "color filter" feature (which also allows you to set the color profile to grey-scale), I thought scripting this might be easy, but I can't seem to find a way to do this in a script directly.

At the moment, I basically have it working by turning on the `Win`+`Ctrl`+`C` toggle hotkey, and have a scheduled task set to run an AutoHotkey script that essentially hits those keys to trigger the shortcut. This works ok, but I'd like to be able to leave the shortcut key disabled so I don't accidentally hit it, or have such an easy way to disable the feature (and weaken the "Digital Wellbeing" effect). Also, the script has no way to know what the state of the setting is. If it runs twice, it undoes itself. Currently I don't have the machine scripted to unset the feature, but if I created a task to do that, and I shut the machine off before the nightly trigger, it might go grey-scale in the morning.

My question is to ask if there is any way I might be able to explicitly set "color filter on", or "color filter off" directly (via PowerShell, Batch, VBS, whatever) that doesn't depend on the shortcut key, and preferably that doesn't toggle?

Answer: 
So I was trying the same thing and ended up using: <https://zerowidthjoiner.net/negativescreen> in Grayscale mode, which is easy to trigger programmatically.

---

Before I tried that, I ran into something interresting. I tried to set the registry entries to enable color filtering:

```
 [HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Accessibility]
"Configuration"="colorfiltering"

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig]

[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Accessibility\ATConfig\colorfiltering]
"Active"=dword:00000001
"FilterType"=dword:00000000

[HKEY_CURRENT_USER\Software\Microsoft\ColorFiltering]
"HotkeyEnabled"=dword:00000001
"Active"=dword:00000001
"FilterType"=dword:00000000

```

This doesn't work on its own, because the setting is not applied. Interestingly though when I triggered a UAC popup, the color filter would be applied. So by calling 

```
powershell Start-Process cmd.exe -Verb RunAs

```

the setting could be applied programmatically. This solution is terrible though, since an actual UAC popup is generated.

But if anyone knows of another way to force a window redraw (or whatever happens when the UAC is opened) it should be possible to programmatically apply the changed setting.
I had exactly the same need. I used [AutoHotKey](https://www.autohotkey.com/) for this. This script checks every 10 min. If the time between 10:30 - 10:39 pm, it presses `Win`+`Ctrl`+`C`.

```
#Persistent
SetTimer, ToggleGreyscaleFilter, 600000     ; Check every 10 min
ToggleGreyscaleFilter:
TheTime = %A_Hour%%A_Min%
If TheTime Between 2230 and 2239            ; If it is between 10:30 and 10:39 pm
{
    MsgBox, "Sleep"                         ; Optional popup message
    Send #^c                                ; Press Win-Ctrl-C to toggle greyscale
}

```

For this to work, in Settings > Ease of Access > Color Filters:

* Allow the shortcut key to toggle filter on or off (Win-Ctrl-C)
* Select Greyscale filter