Vision Multi-Monitor Full Screen Scaling Issue

Hi, I encountered an issue and found a workaround but wanted to see if there was a better solution.

I'm using Vision 8.1.33 on Windows 10 and added the example script for Multi-Monitor Clients (from Ignition 8.1 User Manual) into the Client Startup Script. When starting the Vision client, I've found that the primary monitor displays the Vision graphic screen properly, but the Vision graphic screens on the other 2 monitors are scaled beyond the monitor size. I've found that this is due to Windows text scaling being set to 150% rather than 100%, causing the whole graphic screen to scale by this amount. My workaround is to add a textScale setting that would be set to match the Windows text scale, then using that to adjust the desktop width and height in the system.gui.openDesktop function. These are 4k monitors so the customer wants to set the font scaling from 150-200% so text is more readable. Is there a better way of fixing this issue?

Thanks for your help.

# Get the screen information for all of your monitors.
screensDataset = system.gui.getScreens()
  
# Open the first window of the project in the (current) primary monitor.
screenIndex = screensDataset[0][0]
monitorNum = screenIndex + 1
primaryScreenText = 'This is Monitor %d' %monitorNum
system.nav.swapTo('Main Windows/Overview', {'Display':primaryScreenText})

# Windows OS text scale setting
textScale = 1.5
  
# Step through all of the screen information, starting with index 1 instead of 0.
for screenDetails in screensDataset[1:]:
    # unpacks the tuple that is returned for each of the monitors present. Consists of screen index, width, and height of the screen.
    screenIndex, screenWidth, screenHeight = screenDetails
    monitorNum = screenIndex + 1
    screenText = "This is Monitor %d" %monitorNum
  
    # Open an empty frame on the next monitor.
    # Assign a handle and apply the width/height for the monitor you are opening on
    handleName = "Monitor %d" %monitorNum
    system.gui.openDesktop(screen=screenIndex, handle=handleName, width=screenWidth/textScale, height=screenHeight/textScale)
  
    # Open the Main Window on this new desktop and pass the parameters needed.
    system.nav.desktop(handleName).swapTo('Main Windows/Overview', {'Display':screenText})
2 Likes

I'm having a similar issue - using a laptop with a smallish screen, the only way I've found to see the entire screen is keeping Windows scaling at 100%, which makes everything else very, very hard to see.

How do i implement your workaround? Is this something I put into the JVM arguments section of the Launcher?

Thanks in advance!

The OP's script was written for the Vision Client Startup event script:
image

image

1 Like

Justin answered your question for me. Hope it works for you.

1 Like