Post Reply

Forums -> UltraMon™ -> Feature Request: Split display into 'multiple' monitors
Bill Sobel   2003-05-16 10:42
A UltraMon feature request (Ultramon is the closest app to what I want to do, and I'm already running it anyway ;).

I purchased the Sony 23" widescreen lcd as my new primary monitor with a eizo 18" as my secondary. Ultramon of course sees and manages the two monitors just fine.

The 23" display is truely wide enough to run two browsers side by side. I would like the ability in UltraMon to define 'portions' of a monitor as (lets call em) 'submonitors'. E.g. in my case I'd like to split the screen vertically down the middle and have a 'left side' and a 'right side'. I'd love if certain applications (like IE) would maximize to either the full 'left side' or full 'right side' and be able to use the 'next monitor' button UltraMon provides to move between these sections as well.

In my scenario hitting if I had IE running on the 18", hitting 'next monitor' would move it to the next montior/submonitor the left side of the 23". Hitting it again would move it to the right side of the 23". Finally hitting it again would return it to the 18" screen.

Does this make sense to anyone besides me ;)

Christian Studer   2003-05-16 11:49
Thanks for the suggestion.

You could do this using custom scripts for moving/maximizing windows. Let me know if you are interested, I can send you sample scripts.

Adding support for creating virtual monitors would require major changes to the UltraMon core, and currently I have no plans to add support for this (I had already considered this when thinking about supporting span or stretched mode).

Christian Studer -
Bill Sobel   2003-05-16 12:28

If you could drop me a couple examples that would be great!

Christian Studer   2003-05-18 03:50
I have uploaded two scripts: to move windows, to maximize windows.

To run the scripts using a hotkey, go to Options > Hotkeys, and add a new 'Run application or script' hotkey.

You'll need to adjust the first few lines of both scripts for your system. For example if the primary is #1, and #2 is to the left of the primary, you would need to adjust the VMonMoveWnd script like this:

MON_HORZ = Array(2, 1)
MON_VIRTUAL = Array(False, True)

The VMonMaximizeWnd script would need to be changed like this:

MON_VIRTUAL = Array(True, False)

Christian Studer -
Matt   2004-12-23 02:32
If you have an NVidia card, someone else suggested using their "Display Gridlines" feature which lets you split up the display into sections and windows will maximize to that section. I don't know yet if they have hotkeys that let you move the windows around those sections though.
Matt   2005-01-06 06:07
I just tried your scripts and that is pretty slick! I recommend anyone with a widescreen display and ultramon to give them a try.

Now I just need to learn visual basic to figure out how you did it.
Shawn Harrington   2005-02-17 07:25
I would like to do something very similar to what Bill asked for.

My primary display is my HP ZD7000 laptop display (17.0" WXGA+ Wide Viewing (1440x900) - 16:10 aspect ratio).

My secondary display (located to the right of the primary) is a Samsung SyncMaster 213T (21.3" - 1600x1200 - normal aspect ratio).

I would like to be able to 'divide' the Samsung display into four regions, top left, top right, bottom left and bottom right.

I tried VMonMoveWnd and VMon MaximizeWnd, but they don't seem to be quite right for my situation and I get an error message when trying to move a a program back from display #2 to display #1. I am totally clueless about how to adjust the scripts.

Would it be possible to send me a script or scripts that will do what I'm trying to do? If dividing into four areas isn't possible, dividing into two areas (left and right) would be good, too.

Thanks a million for your help and for your great program! It is a lifesaver when moving programs from the wide-aspect-ratio display to a normal-aspect-ratio display...something that was much too tedious without UltraMon.

Shawn Harrington
Christian Studer   2005-02-21 03:01
I have uploaded new versions of both scripts which support this.

When you run the scripts for the first time, you'll be prompted to configure them.

For your scenario, you would configure VMonMoveWnd.vbs like this:

MON_ORDER = Array(1, 2)
MON_SPLIT_HORZ = Array(1, 2)
MON_SPLIT_VERT = Array(1, 2)

VMonMaximizeWnd.vbs would be configured like this:

MON_SPLIT_HORZ = Array(1, 2)
MON_SPLIT_VERT = Array(1, 2)

Christian Studer -
Shawn Harrington   2005-02-25 06:14
Fantastic! Works like a charm. Thank you, thank you, thank you!

Shawn Harrington
Darren Hill   2005-09-23 15:52
Is it possible to setup non-integer divisions of the screen? For example, have programs on the left side of the screen maximise to 2/3rds of the screen width, and programs on the right side maximise to the right 1/3rd of the screen?

Christian Studer   2005-09-25 08:31
The VMon scripts don't support this, but it would be possible to create a custom script which does this.

What's your monitor setup and how would you want the monitors divided?

Christian Studer -
Darren Hill   2005-09-25 14:29
I use a widescreen laptop, with a widescreen monitor attached to it. The monitor is Primary and to the right of the laptop.
I'd like the laptop width to be split in two (I can do that with the existing scripts), and for the Primary display if possible, I'd like the following two options (in different scripts would be fine):

1: Split into three sections, left-most and right-most sections would each be 1/4 screen width, and the middle section would be half the screen width (so, that's three sections with relative sizes: 1:2:1)

2: Split into two sections, the left section being 2/3rds the screen width, the right section being 1/3rd the screen width.


Christian Studer   2005-09-27 04:53
I have uploaded two new scripts which support uneven monitor splits, VMonMaximizeWnd2 and VMonMoveWnd2.

The split settings for your setup would be either "0.25,0.5,0.25" or "0.66,0.34".

Christian Studer -
Darren Hill   2005-09-27 22:18
That's excellent, thanks.

Darren Hill   2005-10-13 04:27
Those last scripts you added for uneven windows have been serving me well, thanks, but there's a feature I'd like added.
I've noticed if I use the Maximise window script first, then Move it, the window changes its dimensions to fit each virtual window as you skip through them. It retains the maximised quality.
I'd like this to be standard behaviour - that when you use the Move script, it is automatically maximised to the desired virtual window as well.

Christian Studer   2005-10-13 07:34
I have uploaded a new version of VMonMoveWnd2 which supports this.

When running the script, add the /m command-line option, for example:

C:\Temp\VMonMoveWnd2.vbs /m

With the /m option, the window gets both moved and maximized.

Christian Studer -
Darren Hill   2005-10-13 11:40
Wonderful! Thanks.

michael   2005-11-11 05:05
HI. this is the best program i've found as a replacement to nviews gridlines and i love it.

i've only got one monitor just split into two and i'm loving it.

the only thing i want to change is the borders of the windows. when you maximise something in windows it doesn't show the outer 4? pixels of a window. in Opera (internet browser), after the 4 pixel border there's a button whick opens up a menu. i want to be able to just put the mosue to the left of the screen to click the button. (so i don't have to concentrate on clicing the button.

basically i'm looking for a way to change the Maxleft in vmonmax. i've tried just puting "-4" after max left but then when i use the Vmonmove it moves it to the left half, right half, and then to an extra position which is actually off screen. i can see it because there are 4 pixels left over on the left (becuase i decreased max left). when i try vmonmove again it just switches from the right half to off screen.

i can't figure out how vmonmove works out which side of the screen the window is at at the moment.

also, another thing i would like to do is divide the monitor into three parts. one to use half the screen (e.g. left hand side), and then the rest of the screen to be split horizontally to make two smaller partiitons.

thanksn in advance.
any help is appreciated.
Christian Studer   2005-11-12 10:49
To fix the problem with moving the window, you could add the following after posX has been set: Dim posXRight : posXRight = 0 Dim curRight : curRight = curLeft + curWidth For i = 0 To UBound(xPos) - 1 If curRight >= xPos(i) And curRight &lt; xPos(i + 1) Then posXRight = i Exit For End If Next If posX <> posXRight Then If xPos(posX + 1) - curLeft &lt; curRight - xPos(posXRight) Then posX = posXRight End If Adjusting the position of maximized windows should then be compatible with the move script, on a multi-monitor system I wouldn't recommend doing this as it causes the border of the window to be visible on the neighboring monitor. The scripts don't support the configuration you describe, I'll check if support for this could be added.

Christian Studer -
Christian Studer   2005-11-13 09:10
I have uploaded a new set of scripts which support arbitrary monitor partitioning, VMonMaximizeWnd3 and VMonMoveWnd3.

For example for your configuration, assuming that your monitor has a resolution of 1280x1024, and that you are using screen coordinates instead of workspace coordinates, the script would be configured like this:

MONITORS = Array("-4,0,640,1024","640,0,1280,512","640,512,1280,1024")

This will result in the monitor being split into a left and right half, with the right half being split further into a top and bottom half.

The left half is offset by 4 pixels, which means that when you maximize a window to the left half, the 4 leftmost pixels will be offscreen.

Christian Studer -
Faisal Khan   2006-04-11 00:28
Hello Christian,

Having recently purchased a 24" Dell monitor capable of 1920x1200, I have been frustrated that something like this has not been created before.

I have found your vb scripts to offer nearly the same capabilities that gridlines on nvidia displays offers. In fact, for me they actually surpass the usability of gridlines.

I am an avid user of Strokeit, a mouse gesture utility that is 'The One' program that gets installed first on my PC when I do a reinstall. I use a gesture on a program window and it runs one of the scripts that you have created.

I have edited your scripts to create 8 new scripts that work with 1920x1200 screens and send a program to occupy half the top, bottom, left or right of the screen or one of the four corners.

So for example, right now I have outlook in the bottom right corner of the screen, an email I am composing on the bottom left, firefox in the top left and remote desktop in the top right. I can easily do a gesture to send a hotkey to send a window to occupy another part of the screen.

For any who are interested, and run the same resolution as myself (users of other resolutions will have to do a bit of work), copy the file named 'VMonMaximizeWnd3.vbs' and paste it 8 times to create 8 new files. Then, edit the numbers in the brackets after:

Option Explicit

Rename each of the 8 new *.vbs files in a similar scheme that I have used:

up.vbs, down.vbs, left.vbs, right.vbs
up-left.vbs, down-left.vbs, up-right.vbs, down-right.vbs

Then for each vbs script, right click on them and click on Edit on the context menu that appears and edit the figures in the brackets as given above:

up.vbs: ("-4,0,1920,600")
down.vbs: ("-4,600,1920,1200")
left.vbs: ("-4,0,960,1200")
right.vbs: ("960,0,1920,1200")
up-left.vbs: ("-4,0,960,600")
up-right.vbs: ("960,0,1920,600")
down-left.vbs: ("-4,600,960,1200")
down-right.vbs: ("960,600,1920,1200")

So for UP, you would edit the file to read as follows:

Option Explicit
MONITORS = Array("-4,0,1920,600")

Now to use them, set up hotkeys in multimon (or in strokeit, set up a gesture) to run one of the scripts. So for example you can try and use a combination of keys along with one of the number pad keys 1,2,3,4,6,7,8,9 to correspond to a location on the screen you want a program to be sent. So pressing the hotkeys along with 1 sends the program to the bottom left corner, occupying one quarter of the screen. I guess the hotkey along with 5 could maximise/restore the program window.

Anyone else have any more ideas?

Christian, thanks a lot for these. I must admit, I'm not a programmer and I got these running after a little trial and error. What exact function does the script VMonMoveWnd3.vbs do exactly? All I know is that the other one seems to do what I want, but if I can add a few more features, taht would be great.
Christian Studer   2006-04-11 08:14
You can use the VMonMoveWnd scripts to move the active window from one part of the monitor to the next/previous.

What's not supported is moving a window to a specific part, similar to what you're doing with the customized scripts.

Christian Studer -
Paul   2006-05-04 20:38
Hi, I would like a script that splits 1 screen into 4 virtual screens and so that the windows dragged into these screens are maximised automatically.

Is this possible? If so help please. My current res is 1280 by 1024

Many Thanks

Christian Studer   2006-05-05 04:01
Paul, this can't be done via scripting, the scripts can't detect if a window is being moved.

Christian Studer -
Joel Burns   2006-06-15 06:07
Sorry if I have missed the instructions. I have a 20in. widescreen that I'd like to split. I don't have any additional monitors. Can I do this? Also, how about not only splitting vertically but horizontally? Thanks
Christian Studer   2006-06-15 08:58
If you want to split the monitor in 4 parts, you could use the VMonMaximizeWnd script with the following settings:


Christian Studer -
Tony   2006-11-15 06:00
I have the VMonMoveWnd2 working somewhat. Although VMonMaximizeWnd2 does not work at all.

Here is my current setup:

Monitor 1 (left) – 1920x1200
Monitor 2 (right) – 1600x1200

End goal is to split monitor 1 vertically and leave monitor 2 as is.

VMonMoveWnd2 is configured as follows:

MON_ORDER = Array(1, 2)
MON_SPLIT_HORZ = Array("", "")
MON_SPLIT_VERT = Array("0.5,0.5", "")

VMonMaximizeWnd2 is configured as follows:

MON_SPLIT_HORZ = Array("", "")
MON_SPLIT_VERT = Array("0.5,0.5", "")

I want it so that every time it switches a section it maximizes to that section.
Tony   2006-11-15 06:07
Please disregard post above. As always, it magically works after posting the problem =)
Siddarth Madhav   2007-01-07 08:49

I need a script that would split a laptop screen into a speciifc no. of mini screens. In my case, I need support for either 2 or 4 screens. Each subdivision should act as a full fledged virtual monitor, just like auxiliary displays. Thanks for any help.

Brad Lishman   2007-01-07 09:44
I'm thinking of buying a TripleHead2Go... if I get UltraMon as well, will I be able to use some of the scripts listed above to split the screen up again so that I can use it like it's three normal monitors and not just one big one?

(For those that don't know, TripleHead2Go fools XP into thinking that your 3 monitors are just one big one capable of a 3840 x 1024 res display).
Christian Studer   2007-01-08 09:17
Siddarth, UltraMon can't do this, I'm also not aware of any other software which supports this.

Brad, only related to moving/maximizing windows, but as far as I know Matrox also has software for this. You still won't be able to use other UltraMon features such as the Smart Taskbar.

Christian Studer -
Jason Lee   2007-02-25 15:11
I'm testing UltraMon and this is a great program!

I found that if I don't include all the monitors in the MONITORS = Array() line, any windows in the monitor that is not in the array will not work.

For example, I have a 3 monitor setup, and I want to divide monitor 1 (1680X1050) into two parts. But I don't want the script to send windows to monitor 2 and 3. So I have MONITORS = Array("0,0,840,1050","841,0,1680,1050"). It works properly for any windows in monitor 1, but will not move any window in monitor 2 and 3. How can I change the script such that if I run the script, it will move the windows from monitor 2 or 3 to the two partitions in monitor 1?

Anla-shok   2007-02-26 12:30
Okay, I just have to say, ultramon has to be one of the most useful programs ever. I have a 5 screen array, where three are on a TripleHead2Go and I thought I was going to go crazy with the losss of grids. But once again, UltraMon comes to the rescue.
Thanks Christian!!!

Now if you could please beat Microsoft over the head, and release Ver3, so I might put money to useful companies rather than bottomless pits.

Thank You
Christian Studer   2007-02-27 11:00
Jason, would you want windows on monitor 1 only to be moved within monitor 1, and windows on other monitors to be moved into the first part of monitor 1?

Christian Studer -
Allen   2007-03-11 01:56
I just installed UltraMon 2.7.1 and started to use script VMonMoveWnd2.vbs. I am running WinXP SP2 on a laptop. I split Monitor 2 into equal left and right halves.
I am testing with an Explorer window showing the contents of a directory.
The window is moved sequentially through the three monitors very nicely; however, the image of the window in the left-hand space of Monitor 2 is NOT removed when the window is moved to the right-half. I call this a "ghost" image because it is visible but not clickable.
Additionally, there is a ghost image of the UltraMon taskbar item on the second monitor.
Any suggestions?

Allen Krisiloff
Christian Studer   2007-03-11 08:53
Do you have this problem with other applications as well, for example Notepad?

Christian Studer -
Allen   2007-03-11 13:32
It is evening now. I just read your reply and tried Notepad. NO. The problem does not appear.
In fact, the problem no longer appears for the Explorer window or Excel, either. In other words, the problem has disappeared! No application window ghosts, and no task bar ghosts!
Since this morning when I confirmed the problem, this is the first time that I tried the script. I had shut-down UltraMon, but the computer remained on.
Did I accidentally, properly, reset something in UltraMon by stopping the program after modifying the script and setting hotkeys?

Allen Krisiloff
Christian Studer   2007-03-12 12:52
I'm not sure what would have caused this, haven't seen something similar myself.

Christian Studer -
Dennis   2011-02-12 02:38
I can't seem to figure out the scripts.
I had a monitor die on me and thought I would just use one big monitor.
I'm guessing these scripts would let ultramon just split that one big screen into two sections.
So one monitor would work like I have two monitors.
Thanks for any help with this...
Christian Studer   2011-02-12 12:26
Not really, the scripts only treat a monitor as being divided into multiple parts for moving/maximizing of windows, for example you can't have a separate taskbar for one half of the monitor, or a different desktop wallpaper.

If moving/maximizing windows is all you need, I would recommend taking a look at SplitView.

Christian Studer -
Mario   2011-03-11 19:30
For text processing and web pages, I like to rotate screens 90 degrees away from landscape into portrait mode.

Laptop screens can not be turned.

So instead of splitting the screen into 2 small screens I want one LONG TALL screen to see entire long pages of text split into 2 parts, side by side.

So I want a "virtual portrait mode" for laptop wide screens. Any way to do that? Any software available?

So turn a 1600 x 900 screen into a virtual
800x1800 screen (width x height into width/2 x height*2)

Split the screen into 2 halves, but then snake the screen through the 2 screens. I.e, the upper half of the screen is in the left screen, the lower half in the right screen.

Line 1 Line 801
Line 2 Line 802
Line 3 Line 803

Line 800 Line 1600
Wagner Assis   2018-04-16 06:14
This seems to be exactly what i need, but i need some help getting it going

Using 3 monitors

Monitor 1 - DELL P2416D:
Settings: 2048x1152, 32-bit color, 59 Hz refresh rate
Coordinates: 1920,0 - 3968,1152. Workspace: 1920,0 - 3968,1112
Video card: Intel(R) HD Graphics 520
Device: \\.\DISPLAY1\Monitor0

Monitor 2 - DELL P2417H (primary):
Settings: 1920x1080, 32-bit color, 60 Hz refresh rate
Coordinates: 0,0 - 1920,1080. Workspace: 0,28 - 1920,1040
Video card: Intel(R) HD Graphics 520
Device: \\.\DISPLAY2\Monitor0

Monitor 3 - DELL P2416D:
Settings: 2048x1152, 32-bit color, 60 Hz refresh rate
Coordinates: -2048,0 - 0,1152. Workspace: -2048,0 - 0,1112
Video card: Intel(R) HD Graphics 520
Device: \\.\DISPLAY3\Monitor0

I would like to split my second/primary monitor into two 2/3on the Left and 1/3 on the Right
to create "4" monitors

which script do i use?
and how to use these scripts?

first time scirpt user... running ultramon 3.4
Christian Studer   2018-04-16 13:09
You could do this with the VMonMoveWnd2 script, to configure it open the script in a text editor, then change lines 25-27 as follows:

MON_ORDER = Array(3, 2, 1) MON_SPLIT_HORZ = Array("", "", "") MON_SPLIT_VERT = Array("", "0.67,0.33", "")

You can then create a new 'Run application or script' hotkey under UltraMon Options > Hotkeys which runs the script, pressing the hotkey will move the active window between the 4 monitors.

If you want to maximize windows to the virtual monitors as well, you can do this with the VMonMaximizeWnd2 script, configuration works the same way as for the other script.

Christian Studer -
Wagner Assis   2018-04-16 13:35
OK - im clearly doing something wrong...

can you email me with some more specific instructions?
Forums -> UltraMon™ -> Feature Request: Split display into 'multiple' monitors

Post Reply