Coder Social home page Coder Social logo

falahati / nvidiasurroundtoggler Goto Github PK

View Code? Open in Web Editor NEW
26.0 8.0 8.0 351 KB

[OBSOLETE] NVidia Surround Toggler is a simple tool/program that try to fill the main gap left by NVIDIA in their surround technology's user experience by letting the user toggle between the two modes (Surround and Extended) as fast and with less pain as possible. Replaced by: https://github.com/falahati/HeliosDisplayManagement

License: GNU General Public License v2.0

C# 99.68% Smalltalk 0.32%
nvidia nvidia-control-panel white-framework uiautomation game surround

nvidiasurroundtoggler's Introduction

THIS PROJECT IS CURRENTLY OUTDATED AND MAY NOT WORK AS EXPECTED. IT IS ALSO NOT UNDER ACTIVE DEVELOPMENT OR MAINTENANCE ANYMORE.

Please consider checking out my other project that should do what this project intended to do, even better: https://github.com/falahati/HeliosDisplayManagement

NVIDIA Surround Toggler

NVidia Surround Toggler is a simple tool/program that tries to fill the main gap left by NVIDIA in their surround technology's user experience by letting the user toggle between the two modes (Surround and Extended) as fast and with less pain as possible.

The program's main feature is saving both surround and extended settings and the possibility to run a program in a specific display mode.

Inspired by "Unknown-One"'s "NVSToggle" (Even using the same icon)

How to get

To download the latest version of this program, take a look at the releases page.

Help me fund my own Death Star

--OR--

You can always donate your time by contributing to the project or by introducing it to others.

How to use

You can toggle surround mode by right-clicking on the desktop and selecting the 'NVIDIA Surround' option. You also can force a program to start in a specific mode by right-clicking on the executable file and following the same instructions. Screenshot

Settings and Tools

If your NVIDIA Control Panel's language is not the same as your Windows language, you may need to manually specify the correct language of the NVIDIA Control Panel in the 'Options' page for the program to function properly. This page also allows you to reset the saved Extended and Surround settings.

It is also possible to create advanced shortcuts using the program's 'Tools' page. This is useful for games and programs that cannot be started directly; like Steam games and other game launchers. Screenshot

Known issues

This program supports most (if not all) of the 'NVIDIA Control Panel' languages. Still, if you have a problem with one specific language, open an Issue and help us fix it in the next release.

Unfortunately, this program is not compatible with SLI setups YET! We try our best to add this functionality to the program as soon as possible.

Behind the scene

The real reason for writing and sharing this code was to see how much we can use the Microsoft UIAutomation framework and its extending frameworks ( in this case the White framework ) to automate a simple procedure as clean as possible.

As you can see in the code, we soon found both frameworks very weak and decided to use WinAPI to make the process smoother. This is a fact that the UIAutomation framework can help a lot of folks to achieve automation of simple procedures, but it also has a lot of disadvantages especially in terms of performance, user experience and possibilities we can expect of it.

Guarantee

Please note that this program created for research proposes only and there is no guarantee for it to work or function properly. The only testing machine was an x64 Windows 10 system with the latest version of the NVidia Graphic Driver and Control Panel (v355.60) installed. But you can report issues and I will try my best to solve them.

License

Copyright (C) 2015-2017 Soroush Falahati

This project is licensed under the GNU Lesser General Public License ("LGPL") and therefore can be used in closed source or commercial projects. However, any commit or change to the main code must be public and there should be a read me file along with the DLL clarifying the license and its terms as part of your project as well as a hyperlink to this repository. Read more about LGPL.

nvidiasurroundtoggler's People

Contributors

falahati avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nvidiasurroundtoggler's Issues

French support

Hi!
I would like to help include support for french, i cloned the repository locally and tried to add the required modifications but i can't figure the strings we should have in the ressource file.
Right now i have :

  <data name="NVIDIA_ControlPanel_Caption_NVIDIA_Control_Panel" xml:space="preserve">
    <value>Panneau de configuration NVIDIA</value>
  </data>
  <data name="NVIDIA_Surround_Caption_NVIDIA_Set_Up_Surround" xml:space="preserve">
    <value>Configuration du Surround NVIDIA</value>
  </data>
  <data name="NVIDIA_Surround_DisableButton_Disable" xml:space="preserve">
    <value>Désactiver</value>
  </data>

But it is not working, it does not find the window it searches for.
It is raising this exception :

        private static bool AutomateControlPanel(Application application, bool? goSurround)
        {
            var window = application.GetWindow(NVidiaLocalization.NVIDIA_ControlPanel_Caption_NVIDIA_Control_Panel);
            try
            {
                //window.HideMinimize(); // Hiding also applies the settings we want
                var surroundTreeItem = window.GetChildWindowWithControlId<UIItem>(4100, 5000);
                if (surroundTreeItem == null)
                {
>>                    throw new Exception(Language.Surround_Can_t_find_the_surround_settings);
                }

I am confident about the first one, found within the context menu on the desktop.
I am not so sure about the two other labels.
Here is a screenshot of the nvidia control panel in french :
image

My setup is kind of tricky, as i have two displays i use most of the time, and 3 other displays i use when i want to game. One of the limitation i have with the GTX980ti is that it can't handle more than 4 displays at once, so i need to disable my 2 main displays when i enable the surround ones, and i need the reenable the two displays after i disable the surround.
Currently, when i do this manually, when i enable the surround i need to rearrange the surround displays but it auto disables the other ones. I always need to recorrect bezels.
When i disable surround manually, i shuts down all displays but the left one of my surround setup.
I need then to manually disable it, reenable the two main displays et rearrange them.
If only we could have profiles as we have been able to do with AMD card for years......
Thanks for your help and congrats for your awesome work already! ;)

Does not appear to work in modern systems.

Installs fine, but does not run successfully. Error states "Nvidia Control Panel is not installed on the system!"

I believe this error is because the Nvidia Control Panel is now installed through the Microsoft Store, instead of through the installer on Nvidia's website.

Fatal Error: Can't find the surround settings

Hi There!
I received this error while trying out the Toggle function. I do have SLI. So perhaps thats why?
captures
As you can see I already have Surround Mode enabled. So not sure whats going on here.
I'm using version 382.05
capturesd

Thoughts?

Nvidia is not on C:

Hey,

I have my nvidia installed on my other drive is there a way to change your program so it is looking in the right drive I think that is the reason why it's not working for me

Thanks in advance

How to use toggler

Hello

I am sorry but I couldn't figure out at all how to use this tool properly but I am very grateful that it exist. Thanks to the program, I managed to enter surround mode but how can I switch easily between extended mode and surround mode? Can I configure a keyboard shortcut to switch between the modes?

I saw in the tools options that I can "place shortcut" but then I have to enter a *.ink file. What is the purpose of this? Unfortunately, I don't find it very intuitiv to use.

error

when toggling to surround, i get this error

yeah

Not working at all for me

Thanks so much for creating this app!

The problem (for me) is that its not working at all for me. :(

I hit the "toggle surround mode" button and then, the screens go white, it asks me to not touch the mouse or keyboard... and then, once it finishes, its the same as it was before.

It wont switch modes...wont do anything except for the white screen.

What am I doing wrong?

Thanks!

Extend fails to activate all screens

Hi since some weeks my extend does not work properly anymore. It looks like some new nvidia updates destroyed it.
I can succesfully put it to surround mode. When I switch back to extended mode it fails to recoqnize all screens (triple). Then I have to manually activate one of the screens to get it running again.

Please advice.

Bezel correction value not applied

Nvidia driver 378.49. using 3 1920x1080 monitors.
When toggling surround mode, bezel corrected resolution of 6000x1080, as configured, is not applied.
default 5760x1080 is used instead.
also, not sure if even supported, but the icons are getting messed up every time i toggle between modes.
Thanks.

Fatal Error : Can't find the surround settings

Hello,

Thank you for your software but I have a problem.
I used V1.2 and in option i changed language : french

I launch 'Toggle Nvidia Surround' and when it's finished i have this message : 'Fatal Error : Can't find the surround settings'.

My Surround is configured.
Where is the problem?

OS : Windows 10 64bits
Nvidia version : 368.39

Thanks for your help.

tns_000
tns_001
tns_002
tns_003

Windows 10 x64 Hanging

I'm grateful this is out there as Surround won't engage without disengaging shortly after mysteriously with Nvidia's control panel. This makes the shortcut keys stick, but all the other really nifty context features seem to hang when I try to apply them even in admin mode. I'm using Win 10 x64 with an Nvidia 970. Thank you for dedicating your time to this project.

I'm also using a pair of Dell H2415's.

NTH one step more needet

Hello,

at first, this is a very nice tool. Thanks for it.

Now my whishes: When I configure the surround, I take my 3 monitors and set the bezel correcture. Then I can push the "create surround" button. Now I need another step to set the resolution bezel corrected.
Is this possible or can you implement this? (btw I have the german nvidia 372.70 version)

Best regards
Xanadou

Doesn't work with SLI

I just had the one GTX 970 in originally and this tool worked reasonably well. Finally got a case big enough to put my second 970 in and bridged the two and now toggling into surround mode fails because it can't find the setting in NVIDIA control panel, I'm guessing because the setting is now in a screen called "Configure SLI, Surround, Physx" instead of "Configure Surround and Physx".

Add bezel correction support

No matter what I do, when switching to Surround on a clean try (clicked the "clear surround" button thing in options) it won't perform bezel correction. It just enables surround.

Can we have bezel correction? :)

Is is possible to get a 3rd toggle

for single display mode? Some games go iffy with multiple monitor systems, especially if you decide to push the extra horsepower to DSR instead of surround and a 3rd toggle to automatically disable two of the monitors in NVCP would make this tool even more useful.

Extended mode is not remembered

Every time i set my extended mode then trigger the surround from your tool it will not remember the extended setup.
When returning from surround to extended i only end up with the left most screen on and at the wrong resolution.
I have tried to clear what the tool remembers as the extended setup, re-made my original screen resolutions and orientations then triggered the surround but even then, when going back, i end up with only 1 screen at wrong rez.

4th monitor on second video card

3 monitors in surround mode (Nvidia) + 1 in extended (ATI)

I this case, the program seems to do nothing. I don't know if they are logs somewhere to help you out?

image

Toggling into extended mode crashes computer (restart required).

I apologise for the similarities to the other issues but the other posters didn't seem very helpful.

Toggling into surround mode works. The setting is saved correctly by the program and everything is perfect.

Toggling back from surround mode into desktop extended causes the computer to hang on the white please wait screen if a setting is saved. The saved setting should be an extended desktop (as that was it was when it was saved) but when the program crashes only desktop 2 (my main monitor) is shown. Upon restarting, only desktop 2 is displayed however changing into extended mode by either win + p shortcut or through display in the control panel immediately restores the correct resolutions and display positions.

If when toggling back into desktop extended no setting is saved the program executes correctly and the control panel is shown at the end where, again, changing the appropriate drop down to extended restores everything perfectly. This is the current work around I am using (deleting the extended setting after I toggle into surround mode ).

I am on Windows 10 64 Bit. English UK as the language, with 2 monitors (at different resolutions). No SLI and latest nVidia drivers (non beta) for my GTX 980.

Works only with english windows

Hi,

I love your tool but sadly it only work with an english version of windows.

Normally I use my german windows and nothing happens on toggle, just an error message i can't remember. If I switch the windows language to engish everything works fine.

Could you please change it, to work with other languages as well?

My Windows: Windows 10 64-bit

Dark mode for eye problems

I want to thank you for this amazing program, work like a charm a lot of time saved, but I have a little problem with it. The white background that appears when I toggle between modes. I have 3 monitors and also an eye problem and when I try to switch, especially at night so much white light coming out at once hurts.
I managed to fix the problem by changing Back Color in SplashForm.cs 40,40,40 seems a nice value, however I don't know how to create a setup, install and use this modified version from R-click context menu.

Can you provide any help or tips regarding this? Thank you!

EDIT: Fixed it myself.

Bezel correction value, not applied.

Hello

When switching to surround it does not active the bezel correction.
I inputed it during first time setting, also retried several times.
The value is correctly stored in the user.config file, but it does not activate it.

My NV control panel is default in German language, i delete the regional files to have it in english, but i already tried it in german too, no success.
My OS is Windows 7 x64, nvidia driver version 368.39.

Thanks for this tool and your help!

<?xml version="1.0" encoding="utf-8"?> <configuration> <userSettings> <NVIDIASurroundToggle.Properties.Settings> <setting name="Arrangement" serializeAs="String"> <value>MosaicDisplay ONKYO Corporation TX-NR515|MosaicDisplay Samsung SA300/SA350 (2 von 2)|MosaicDisplay Samsung SA300/SA350 (1 von 2)</value> </setting> <setting name="Topology" serializeAs="String"> <value>1</value> </setting> <setting name="Resolution" serializeAs="String"> <value>1</value> </setting> <setting name="RefreshRate" serializeAs="String"> <value>0</value> </setting> <setting name="Bezel1" serializeAs="String"> <value>110</value> </setting> <setting name="Bezel2" serializeAs="String"> <value>110</value> </setting> <setting name="Bezel3" serializeAs="String"> <value>0</value> </setting> <setting name="Bezel4" serializeAs="String"> <value>0</value> </setting> <setting name="DisplaySettings" serializeAs="String"> <value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;ArrayOfDisplaySetting xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;&lt;DisplaySetting&gt;&lt;Devmode&gt;&lt;DeviceName&gt;cdd&lt;/DeviceName&gt;&lt;SpecVersion&gt;1025&lt;/SpecVersion&gt;&lt;DriverVersion&gt;1025&lt;/DriverVersion&gt;&lt;Size&gt;124&lt;/Size&gt;&lt;DriverExtra&gt;0&lt;/DriverExtra&gt;&lt;Fields&gt;Position DisplayOrientation LogPixels BitsPerPixel PelsWidth PelsHeight DisplayFlags DisplayFrequency&lt;/Fields&gt;&lt;Position&gt;&lt;X&gt;1920&lt;/X&gt;&lt;Y&gt;0&lt;/Y&gt;&lt;/Position&gt;&lt;DisplayOrientation&gt;0&lt;/DisplayOrientation&gt;&lt;DisplayFixedOutput&gt;0&lt;/DisplayFixedOutput&gt;&lt;Color&gt;Unknown&lt;/Color&gt;&lt;Duplex&gt;Unknown&lt;/Duplex&gt;&lt;YResolution&gt;0&lt;/YResolution&gt;&lt;TTOption&gt;0&lt;/TTOption&gt;&lt;Collate&gt;Off&lt;/Collate&gt;&lt;FormName /&gt;&lt;LogPixels&gt;0&lt;/LogPixels&gt;&lt;BitsPerPel&gt;32&lt;/BitsPerPel&gt;&lt;PelsWidth&gt;1920&lt;/PelsWidth&gt;&lt;PelsHeight&gt;1080&lt;/PelsHeight&gt;&lt;DisplayFlags&gt;0&lt;/DisplayFlags&gt;&lt;Nup&gt;0&lt;/Nup&gt;&lt;DisplayFrequency&gt;60&lt;/DisplayFrequency&gt;&lt;/Devmode&gt;&lt;DisplayName&gt;\\.\DISPLAY1&lt;/DisplayName&gt;&lt;/DisplaySetting&gt;&lt;DisplaySetting&gt;&lt;Devmode&gt;&lt;DeviceName&gt;cdd&lt;/DeviceName&gt;&lt;SpecVersion&gt;1025&lt;/SpecVersion&gt;&lt;DriverVersion&gt;1025&lt;/DriverVersion&gt;&lt;Size&gt;124&lt;/Size&gt;&lt;DriverExtra&gt;0&lt;/DriverExtra&gt;&lt;Fields&gt;Position DisplayOrientation LogPixels BitsPerPixel PelsWidth PelsHeight DisplayFlags DisplayFrequency&lt;/Fields&gt;&lt;Position&gt;&lt;X&gt;0&lt;/X&gt;&lt;Y&gt;0&lt;/Y&gt;&lt;/Position&gt;&lt;DisplayOrientation&gt;0&lt;/DisplayOrientation&gt;&lt;DisplayFixedOutput&gt;0&lt;/DisplayFixedOutput&gt;&lt;Color&gt;Unknown&lt;/Color&gt;&lt;Duplex&gt;Unknown&lt;/Duplex&gt;&lt;YResolution&gt;0&lt;/YResolution&gt;&lt;TTOption&gt;0&lt;/TTOption&gt;&lt;Collate&gt;Off&lt;/Collate&gt;&lt;FormName /&gt;&lt;LogPixels&gt;0&lt;/LogPixels&gt;&lt;BitsPerPel&gt;32&lt;/BitsPerPel&gt;&lt;PelsWidth&gt;1920&lt;/PelsWidth&gt;&lt;PelsHeight&gt;1080&lt;/PelsHeight&gt;&lt;DisplayFlags&gt;0&lt;/DisplayFlags&gt;&lt;Nup&gt;0&lt;/Nup&gt;&lt;DisplayFrequency&gt;60&lt;/DisplayFrequency&gt;&lt;/Devmode&gt;&lt;DisplayName&gt;\\.\DISPLAY2&lt;/DisplayName&gt;&lt;/DisplaySetting&gt;&lt;DisplaySetting&gt;&lt;Devmode&gt;&lt;DeviceName&gt;cdd&lt;/DeviceName&gt;&lt;SpecVersion&gt;1025&lt;/SpecVersion&gt;&lt;DriverVersion&gt;1025&lt;/DriverVersion&gt;&lt;Size&gt;124&lt;/Size&gt;&lt;DriverExtra&gt;0&lt;/DriverExtra&gt;&lt;Fields&gt;Position DisplayOrientation LogPixels BitsPerPixel PelsWidth PelsHeight DisplayFlags DisplayFrequency&lt;/Fields&gt;&lt;Position&gt;&lt;X&gt;-1920&lt;/X&gt;&lt;Y&gt;0&lt;/Y&gt;&lt;/Position&gt;&lt;DisplayOrientation&gt;0&lt;/DisplayOrientation&gt;&lt;DisplayFixedOutput&gt;0&lt;/DisplayFixedOutput&gt;&lt;Color&gt;Unknown&lt;/Color&gt;&lt;Duplex&gt;Unknown&lt;/Duplex&gt;&lt;YResolution&gt;0&lt;/YResolution&gt;&lt;TTOption&gt;0&lt;/TTOption&gt;&lt;Collate&gt;Off&lt;/Collate&gt;&lt;FormName /&gt;&lt;LogPixels&gt;0&lt;/LogPixels&gt;&lt;BitsPerPel&gt;32&lt;/BitsPerPel&gt;&lt;PelsWidth&gt;1920&lt;/PelsWidth&gt;&lt;PelsHeight&gt;1080&lt;/PelsHeight&gt;&lt;DisplayFlags&gt;0&lt;/DisplayFlags&gt;&lt;Nup&gt;0&lt;/Nup&gt;&lt;DisplayFrequency&gt;60&lt;/DisplayFrequency&gt;&lt;/Devmode&gt;&lt;DisplayName&gt;\\.\DISPLAY3&lt;/DisplayName&gt;&lt;/DisplaySetting&gt;&lt;/ArrayOfDisplaySetting&gt;</value> </setting> <setting name="FirstRun" serializeAs="String"> <value>False</value> </setting> <setting name="ControlPanelLanguage" serializeAs="String"> <value /> </setting> </NVIDIASurroundToggle.Properties.Settings> </userSettings> </configuration>

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.