PowerToys icon indicating copy to clipboard operation
PowerToys copied to clipboard

Introduce new utility PowerDisplay to control your monitor settings

Open moooyo opened this issue 2 months ago • 71 comments

Summary of the Pull Request

Introduce a new PowerToys' module PowerDisplay to let user can control their monitor settings without touching monitor's button.

Support feature list: Common:

  1. Profiles support
  2. Integration with LightSwitch (auto switch profile when theme change)
  3. TrayIcon
  4. Save and restore settings when startup
  5. Shortcut
  6. Rotation
  7. GPO support
  8. Auto re-discovery monitor when plugging and unplugging monitors.
  9. Identify Monitors
  10. Quick profile switch

Especially for DDC/CI monitor:

  1. Brightness
  2. Contrast
  3. Volume
  4. Color temperature (preset profile)
  5. Input source

Design doc: https://github.com/microsoft/PowerToys/blob/yuleng/display/pr/3/doc/devdocs/modules/powerdisplay/design.md

AOT compatibility: I designed this module for AOT from the start, so I'm pretty sure at least 95% of it is AOT compatible. But unfortunately, PowerToys still have a AOT blocker to block this module publish with AOT.

Currently PowerToys will check the .net file version (file version not lib version) to avoid crash. So, all modules should reference Common.UI or add UseWPF to avoid overwrite the .net file with different version (which may cause crash).

Todo:

  • [ ] BugBash
  • [ ] Icon
  • [ ] IdentifyWindow UI improvement

Demo

Main UI: image

Input Source: image

Settings UI: image

image

Closes: #42942 #42678 #41117 #38109 #35564 #34932 #28500 #1052 #18149

PR Checklist

  • [x] Closes: #1052
  • [x] Communication: I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected
  • [x] Tests: Added/updated and all pass
  • [x] Localization: All end-user-facing strings can be localized
  • [x] Dev docs: Added/updated
  • [ ] New binaries: Added on the required places
  • [ ] Documentation updated: If checked, please file a pull request on our docs repo and link it here: #xxx

Detailed Description of the Pull Request / Additional comments

Validation Steps Performed

moooyo avatar Oct 20 '25 08:10 moooyo

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (56)
ASUS
backlight
CAuthn
CAuthz
CImp
clientedge
coinit
colortemp
Ddc
Ddcci
debouncer
displayconfig
Displayport
dlg
dlgmodalframe
DREGION
dvi
Dxva
edid
eoac
FPrimary
framechanged
hdmi
HPhysical
HSync
Lbuttonup
leftalign
maximizebox
minimizebox
monitorinfo
nclbuttondown
nif
NIIF
nomove
nosize
notopmost
powerdisplay
POWERDISPLAYMODULEINTERFACE
pvct
qdc
Rbuttonup
Returncmd
Samsung
Sdr
staticedge
swp
syscommand
sysmenu
thickframe
Trayicon
UTimeout
vcp
Vga
VSync
windowedge
winnt
These words are not needed and should be removed CIBUILD CLIENTEDGE COINIT DISPLAYCONFIG djwsxzxb Dlg DLGMODALFRAME Edid EOAC FRAMECHANGED ksa LEFTALIGN MAXIMIZEBOX MINIMIZEBOX MONITORINFO NCLBUTTONDOWN NIF NOMOVE NOSIZE NOTOPMOST QDC rtm STATICEDGE SWP SYSCOMMAND SYSMENU TARGETDIR THICKFRAME WINDOWEDGE WINNT

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/18646569390/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Forbidden patterns :no_good: (1)

In order to address this, you could change the content to not match the forbidden patterns (comments before forbidden patterns may help explain why they're forbidden), add patterns for acceptable instances, or adjust the forbidden patterns themselves.

These forbidden patterns matched content:

Should be ; otherwise or . Otherwise

https://study.com/learn/lesson/otherwise-in-a-sentence.html

, [Oo]therwise\b
Pattern suggestions :scissors: (1)

You could add these patterns to .github/actions/spell-check/patterns.txt:

# Automatically suggested patterns

# hit-count: 1 file-count: 1
# latex (check-spelling >= 0.0.22)
\\\w{2,}\{

Alternatively, if a pattern suggestion doesn't make sense for this project, add a # to the beginning of the line in the candidates file with the pattern to stop suggesting it.

Errors, Warnings, and Notices :x: (4)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors, Warnings, and Notices Count
:information_source: candidate-pattern 1
:x: check-file-path 62
:x: forbidden-pattern 2
:warning: ignored-expect-variant 1

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Oct 20 '25 08:10 github-actions[bot]

Ok I believe this code is AOT ready.

moooyo avatar Oct 20 '25 08:10 moooyo

/azp run

moooyo avatar Nov 13 '25 06:11 moooyo

Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command.

azure-pipelines[bot] avatar Nov 13 '25 06:11 azure-pipelines[bot]

/azp run

moooyo avatar Nov 13 '25 06:11 moooyo

Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command.

azure-pipelines[bot] avatar Nov 13 '25 06:11 azure-pipelines[bot]

Just adding https://x.com/SheriefFYI/status/1992983352299925519 to track public usability concerns around this current UI.

riverar avatar Nov 24 '25 20:11 riverar

Sorry for make our users confuse...Actually I'm not a professional UI/UX designer, this feature is still in PoC stage. And not reviewed by our UI/UX team. Thanks for your mentions, we will try to improve it!

moooyo avatar Nov 24 '25 20:11 moooyo

Its great that PowerToys is getting DDC control (wish Windows has this built in.)

I wanted to share my user interface idea, some suggested showing the monitor information text which will help (along with custom ordering) but I wanted to suggest an idea for the icon

For 2 or 3 screens custom icon with selection Screenshot 2025-11-25 104357

For complex setup like this (one of my app users have this setup!) hero_art

How about zooming in on the current selected screen (say 3.) hero_art_zoom

rocksdanister avatar Nov 25 '25 05:11 rocksdanister

Is there a chance for software-based turning on/off monitors and changing inputs?

AleksanderGasz avatar Nov 25 '25 06:11 AleksanderGasz

Is there a chance for software-based turning on/off monitors and changing inputs?

Theoretically, it is possible. This is because some of our hardware modifications are based on Windows events, and anyone can trigger this event. But I think is not in priority at that time.

moooyo avatar Nov 25 '25 08:11 moooyo

Is there a chance for software-based turning on/off monitors and changing inputs?

Theoretically, it is possible. This is because some of our hardware modifications are based on Windows events, and anyone can trigger this event. But I think is not in priority at that time.

Clarify: Every monitor changes from PT settings-ui currently based on Windows Event. So, if we want to implement it, we need to add them in PowerDisplay Settings first.

moooyo avatar Nov 25 '25 08:11 moooyo

please consider this feature list https://github.com/microsoft/powertoys/issues/42678 i'm currently using twinkletray and beeing able to use powertoys to control the monitor brightness automatically by time (e.g. set brightness to 10% after sunset) would be really great.

eikaramba avatar Nov 28 '25 11:11 eikaramba

@eikaramba  schedule is completed. Linked to light switch module. Shortcut is a good idea

moooyo avatar Nov 28 '25 11:11 moooyo

/azp run

moooyo avatar Nov 30 '25 20:11 moooyo

Azure Pipelines will not run the associated pipelines, because the pull request was updated after the run command was issued. Review the pull request again and issue a new run command.

azure-pipelines[bot] avatar Nov 30 '25 20:11 azure-pipelines[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (61)
ASUS
Backlight
Badflags
Badmode
Badparam
CAuthn
CAuthz
Cds
CImp
clientedge
coinit
Ddc
Ddcci
debouncer
Deeplink
displayconfig
Displayport
diu
dlgmodalframe
Dmdo
DREGION
dvi
Dxva
EAccess
edid
EInvalid
ENot
eoac
EProvider
FPrimary
framechanged
Hantai
hdmi
HPhysical
HSync
Kantai
maximizebox
minimizebox
monitorinfo
nomove
nosize
notopmost
Notupdated
pdmodels
powerdisplay
POWERDISPLAYMODULEINTERFACE
prot
pvct
qdc
Sdr
staticedge
swp
sysmenu
thickframe
updateregistry
vcp
VESA
Vga
VSync
windowedge
winnt
These words are not needed and should be removed CLIENTEDGE COINIT CVS DISPLAYCONFIG DLGMODALFRAME Edid EOAC FRAMECHANGED MAXIMIZEBOX MINIMIZEBOX MONITORINFO NOMOVE NOSIZE NOTOPMOST QDC STATICEDGE SWP SYSMENU THICKFRAME UPDATEREGISTRY WINDOWEDGE WINNT

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/19835614132/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Forbidden patterns :no_good: (3)

In order to address this, you could change the content to not match the forbidden patterns (comments before forbidden patterns may help explain why they're forbidden), add patterns for acceptable instances, or adjust the forbidden patterns themselves.

These forbidden patterns matched content:

Should be ; otherwise or . Otherwise

https://study.com/learn/lesson/otherwise-in-a-sentence.html

, [Oo]therwise\b

Should be reentrant

[Rr]e[- ]entrant

Should be fall back

\bfallback(?= to)\b
Errors :x: (2)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors Count
:x: check-file-path 98
:x: forbidden-pattern 8

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 01 '25 20:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (54)
ASUS
Backlight
Badflags
Badmode
Badparam
CAuthn
CAuthz
Cds
CImp
clientedge
coinit
Ddcci
displayconfig
Displayport
diu
dlgmodalframe
Dmdo
DREGION
dvi
Dxva
EAccess
edid
EInvalid
ENot
eoac
EProvider
FPrimary
framechanged
Hantai
HPhysical
HSync
Kantai
maximizebox
minimizebox
monitorinfo
nomove
nosize
notopmost
Notupdated
pdmodels
POWERDISPLAYMODULEINTERFACE
prot
pvct
qdc
Sdr
staticedge
swp
sysmenu
thickframe
updateregistry
Vga
VSync
windowedge
winnt
These words are not needed and should be removed ame CLIENTEDGE COINIT CVS DISPLAYCONFIG DLGMODALFRAME Edid EOAC FRAMECHANGED isplay kelvin MAXIMIZEBOX MINIMIZEBOX MONITORINFO NOMOVE NOSIZE NOTOPMOST ode QDC STATICEDGE SWP SYSMENU THICKFRAME UPDATEREGISTRY WINDOWEDGE WINNT

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/19836156500/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Errors and Warnings :x: (2)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors and Warnings Count
:x: forbidden-pattern 6
:warning: ignored-expect-variant 3

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 01 '25 20:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (44)
Badflags
Badmode
Badparam
CAuthn
CAuthz
Cds
CImp
clientedge
coinit
Ddcci
displayconfig
diu
dlgmodalframe
Dmdo
DREGION
EAccess
edid
EInvalid
ENot
eoac
EProvider
FPrimary
framechanged
Hantai
Kantai
maximizebox
minimizebox
monitorinfo
nomove
nosize
notopmost
Notupdated
pdmodels
prot
pvct
qdc
staticedge
swp
sysmenu
thickframe
updateregistry
Vga
windowedge
winnt
These words are not needed and should be removed ame CLIENTEDGE COINIT CVS DISPLAYCONFIG DLGMODALFRAME Edid EOAC FRAMECHANGED isplay kelvin MAXIMIZEBOX MINIMIZEBOX MONITORINFO NOMOVE NOSIZE NOTOPMOST ode QDC STATICEDGE SWP SYSMENU THICKFRAME UPDATEREGISTRY WINDOWEDGE WINNT

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/19836593332/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Errors and Warnings :x: (2)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors and Warnings Count
:x: forbidden-pattern 6
:warning: ignored-expect-variant 3

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 01 '25 20:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (2)

edid swp

These words are not needed and should be removed ame CVS Edid isplay kelvin ode SWP

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/19838165879/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Errors and Warnings :x: (2)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors and Warnings Count
:x: forbidden-pattern 6
:warning: ignored-expect-variant 40

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 01 '25 21:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors and Warnings Count
:x: forbidden-pattern 6
:warning: ignored-expect-variant 40

See :x: Event descriptions for more information.

These words are not needed and should be removed ame isplay kelvin ode

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 01 '25 21:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (8)

clientedge coinit displayconfig dlgmodalframe eoac updateregistry windowedge winnt

These words are not needed and should be removed CLIENTEDGE COINIT DISPLAYCONFIG DLGMODALFRAME EOAC hardwareid internalname UPDATEREGISTRY vcpcode WINDOWEDGE WINNT

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/19849899231/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Warnings :warning: (1)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:warning: Warnings Count
:warning: ignored-expect-variant 24

See :warning: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 02 '25 06:12 github-actions[bot]

Is there a chance for software-based turning on/off monitors and changing inputs?

Yes, we can turn on/off and change inputs using below repo: https://github.com/newAM/monitorcontrol

Currently, I'm using this app and it's works as expected.

My windows OS Version: 
OS Name:	Microsoft Windows 11 Pro
Version:	10.0.26200 Build 26200

Here is the command line for your reference:

C:\Users\Administrator>monitorcontrol
usage: monitorcontrol [-h] [--verbose]
                      (--set-luminance SET_LUMINANCE | --get-luminance | --get-power-mode | --set-power-mode {on,standby,suspend,off_soft,off_hard} | --version | --get-input-source | --set-input-source {OFF,ANALOG1,ANALOG2,DVI1,DVI2,COMPOSITE1,COMPOSITE2,SVIDEO1,SVIDEO2,TUNER1,TUNER2,TUNER3,CMPONENT1,CMPONENT2,CMPONENT3,DP1,DP2,HDMI1,HDMI2} | --get-monitors)
                      [--monitor MONITOR]
monitorcontrol: error: one of the arguments --set-luminance --get-luminance --get-power-mode --set-power-mode --version --get-input-source --set-input-source --get-monitors is required

C:\Users\Administrator>monitorcontrol --get-power-mode
on

C:\Users\Administrator>monitorcontrol --get-input-source
InputSource.HDMI2

C:\Users\Administrator>monitorcontrol --get-monitors
Monitor 1: XV240YV
Available Inputs:
        InputSource.DP1
        InputSource.HDMI1
        InputSource.HDMI2*

@eikaramba Please consider this feature in this powedisplay toy, it would be game changer for all users. Please let me know if you need any other info.

cc: @moooyo @AleksanderGasz @niels9001

nrv-96 avatar Dec 04 '25 05:12 nrv-96

Is there a chance for software-based turning on/off monitors and changing inputs?

Yes, we can turn on/off and change inputs using below repo: https://github.com/newAM/monitorcontrol

Currently, I'm using this app and it's works as expected.

My windows OS Version: 
OS Name:	Microsoft Windows 11 Pro
Version:	10.0.26200 Build 26200

Here is the command line for your reference:

C:\Users\Administrator>monitorcontrol
usage: monitorcontrol [-h] [--verbose]
                      (--set-luminance SET_LUMINANCE | --get-luminance | --get-power-mode | --set-power-mode {on,standby,suspend,off_soft,off_hard} | --version | --get-input-source | --set-input-source {OFF,ANALOG1,ANALOG2,DVI1,DVI2,COMPOSITE1,COMPOSITE2,SVIDEO1,SVIDEO2,TUNER1,TUNER2,TUNER3,CMPONENT1,CMPONENT2,CMPONENT3,DP1,DP2,HDMI1,HDMI2} | --get-monitors)
                      [--monitor MONITOR]
monitorcontrol: error: one of the arguments --set-luminance --get-luminance --get-power-mode --set-power-mode --version --get-input-source --set-input-source --get-monitors is required

C:\Users\Administrator>monitorcontrol --get-power-mode
on

C:\Users\Administrator>monitorcontrol --get-input-source
InputSource.HDMI2

C:\Users\Administrator>monitorcontrol --get-monitors
Monitor 1: XV240YV
Available Inputs:
        InputSource.DP1
        InputSource.HDMI1
        InputSource.HDMI2*

@eikaramba Please consider this feature in this powedisplay toy, it would be game changer for all users. Please let me know if you need any other info.

cc: @moooyo @AleksanderGasz @niels9001

i'm just a user as you are. the software you referenced is just using DDC, as any other tool out there, see the linked issue with more advanced tools. the actual developer answered also to your request so i don't think there is much to add to this discussion at this point.

eikaramba avatar Dec 04 '25 09:12 eikaramba

Is there a chance for software-based turning on/off monitors and changing inputs?

Yes, we can turn on/off and change inputs using below repo: https://github.com/newAM/monitorcontrol

Currently, I'm using this app and it's works as expected.

My windows OS Version: 
OS Name:	Microsoft Windows 11 Pro
Version:	10.0.26200 Build 26200

Here is the command line for your reference:

C:\Users\Administrator>monitorcontrol
usage: monitorcontrol [-h] [--verbose]
                      (--set-luminance SET_LUMINANCE | --get-luminance | --get-power-mode | --set-power-mode {on,standby,suspend,off_soft,off_hard} | --version | --get-input-source | --set-input-source {OFF,ANALOG1,ANALOG2,DVI1,DVI2,COMPOSITE1,COMPOSITE2,SVIDEO1,SVIDEO2,TUNER1,TUNER2,TUNER3,CMPONENT1,CMPONENT2,CMPONENT3,DP1,DP2,HDMI1,HDMI2} | --get-monitors)
                      [--monitor MONITOR]
monitorcontrol: error: one of the arguments --set-luminance --get-luminance --get-power-mode --set-power-mode --version --get-input-source --set-input-source --get-monitors is required

C:\Users\Administrator>monitorcontrol --get-power-mode
on

C:\Users\Administrator>monitorcontrol --get-input-source
InputSource.HDMI2

C:\Users\Administrator>monitorcontrol --get-monitors
Monitor 1: XV240YV
Available Inputs:
        InputSource.DP1
        InputSource.HDMI1
        InputSource.HDMI2*

@eikaramba Please consider this feature in this powedisplay toy, it would be game changer for all users. Please let me know if you need any other info.

cc: @moooyo @AleksanderGasz @niels9001

implemented the change input source feature a week ago. Sorry for late updated. I will update a new demo video later for future reviewer.

For power on/off feature, I don't think we can get in the first version (hope to get in next version), we don't have enough time to implement it.... Still have many thing need to do before our first release (bug fix, ut, design doc and etc...)

@eikaramba @nrv-96

moooyo avatar Dec 04 '25 17:12 moooyo

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (11)
crt
DCapabilities
ddcutil
eep
FFh
mccs
mswhql
PBP
relys
vcpname
vesa
These words are not needed and should be removed CLITo Deeplink Notavailable toolgood vcpcodes VESA

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/20050392128/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Errors and Warnings :x: (2)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors and Warnings Count
:x: check-file-path 2
:warning: ignored-expect-variant 23

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 09 '25 03:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (4)

crt FFh relys vcpname

These words are not needed and should be removed CLITo Deeplink Notavailable toolgood vcpcodes

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/20050633638/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Warnings :warning: (1)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:warning: Warnings Count
:warning: ignored-expect-variant 25

See :warning: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 09 '25 03:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (13)
framechanged
maximizebox
mccs
minimizebox
monitorinfo
nomove
nosize
notopmost
staticedge
sysmenu
thickframe
vcp
vesa
These words are not needed and should be removed CLITo Deeplink FRAMECHANGED MAXIMIZEBOX Mccs MINIMIZEBOX MONITORINFO NOMOVE NOSIZE Notavailable NOTOPMOST STATICEDGE SYSMENU THICKFRAME toolgood VCP vcpcodes VESA

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/20050825702/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Errors and Warnings :x: (2)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors and Warnings Count
:x: check-file-path 5
:warning: ignored-expect-variant 2

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 09 '25 03:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (1)

DELA

These words are not needed and should be removed CLITo Deeplink Notavailable toolgood Uninitializes vcpcodes

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/20089344249/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Forbidden patterns :no_good: (1)

In order to address this, you could change the content to not match the forbidden patterns (comments before forbidden patterns may help explain why they're forbidden), add patterns for acceptable instances, or adjust the forbidden patterns themselves.

These forbidden patterns matched content:

In English, duplicated words are generally mistakes

There are a few exceptions (e.g. "that that"). If the highlighted doubled word pair is in:

  • code, write a pattern to mask it.
  • prose, have someone read the English before you dismiss this error.
\s([A-Z]{3,}|[A-Z][a-z]{2,}|[a-z]{3,})\s\g{-1}\s
Errors and Warnings :x: (2)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:x: Errors and Warnings Count
:x: forbidden-pattern 2
:warning: ignored-expect-variant 26

See :x: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 10 '25 06:12 github-actions[bot]

@check-spelling-bot Report

:red_circle: Please review

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

Unrecognized words (2)

ddc wmi

These words are not needed and should be removed CLITo Ddc Deeplink Notavailable toolgood Uninitializes vcpcodes WMI

To accept these unrecognized words as correct and remove the previously acknowledged and now absent words, you could run the following commands

... in a clone of the [email protected]:microsoft/PowerToys.git repository on the yuleng/display/pr/3 branch (:information_source: how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/c635c2f3f714eec2fcf27b643a1919b9a811ef2e/apply.pl' |
perl - 'https://github.com/microsoft/PowerToys/actions/runs/20096431719/attempts/1' &&
git commit -m 'Update check-spelling metadata'
Warnings :warning: (1)

See the :open_file_folder: files view, the :scroll:action log, or :memo: job summary for details.

:warning: Warnings Count
:warning: ignored-expect-variant 26

See :warning: Event descriptions for more information.

If the flagged items are :exploding_head: false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it, try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

github-actions[bot] avatar Dec 10 '25 11:12 github-actions[bot]