Note that this post is targeted towards users who have some experience dealing with multi-monitor setups already. I will not be explaining everything in great detail, it’s more of a collection of information and techniques that I hope people will find useful. If there is anything you don’t understand or want help with, ask me and I will be happy to assist.
Here are some unconventional setups, just to give an idea of what is possible using the tricks in this post.
Mismatched dual setup
Portrait side with landscape center triple setup
Reduced side width triple setup
My Actual Current Setup
Details: The 1440p monitor is running at native resolution (no scaling), and the center right monitor is 4k integer-scaled to 1080p so there’s no blur. I’m also only using half of the far right screen, allowing me to use the remaining space for other programs.
If you’ve ever tried using Nvidia Surround to do any of what I just described, you’ll find that it’s quite impossible. So here’s how to actually do it!
This trick allows you to bypass Nvidia Surround, AMD Eyefinity, or their equivalents. It allows you to have your monitors at any resolution and orientation combination you desire, as well as remove other limitations.
The trick is quite simple actually, all we're doing is running the game in windowed mode and stretching it across multiple screens. However, some setup and third party software is required for this to work, since the game does not allow you to resize its window by default.
First Time Setup:
- Install Simple Runtime Window Editor (SRWE). Link: https://github.com/dtgDTGdtg/SRWE/releases
- In config.cfg, set r_fullscreen to 0 and set r_mode_width and height to the size you want the window to be (see “Configuring the Window”).
- Set your monitor positions to desired layout using Windows Settings or your GPU's control panel (see “Configuring the Window”).
- Most likely, you will have to edit your multimon_config.sii file (see “Configuring the Window”), and make sure r_multimon_mode is set to 4 in config.cfg.
- Start the game as usual. It will open on just one monitor.
- Run SRWE, and select the game process (amtrucks.exe, eurotrucks.exe).
- Back in game, change any graphics setting that will make the game window reload (either Vsync or fullscreen should work), and hit apply.
- The window may disappear, press Esc to revert changes.
- Alt-Tab out to SRWE, and adjust the window x, y, width, and height until it fills the screen the way you want (see “Configuring SRWE”).
- Save it as a profile by check-marking amtrucks.exe/eurotrucks.exe and pressing save profile.
- Switch back to your game, and now you can play!
- Set your monitor layout (if needed).
- Start the game as usual.
- Start SRWE, and select the game process.
- In game, change a setting, then revert by pressing Esc.
- Alt-Tab to SRWE, and load the profile you made.
- Switch back to the game, you are ready to play!
If you want some visual guidance, this awesome video by Dan Suzuki shows similar setup steps for another game, ACC. You can mostly ignore the in-game settings he does, but basically, he does steps 1, 5, 6, 9, 10, and 11 from the “first time setup” section. The other steps are specific to ATS/ETS2, you must do them for it to work properly. The section goes from 5:53 to 7:56. Also, watch from 8:44 to 9:14, he shows you steps 2, 3, 5, and 6 for subsequent launches. Link: https://www.youtube.com/watch?v=-irPlVdDdJo&t=353s
Configuring the Window
Using the windowed trick, any desktop configuration can be used as the base for the window. An easy way to see your desktop configuration is looking at the Windows display settings screen. Your graphics control panel will likely have something similar as well. Here's my normal desktop (not really, my setup has since changed, but these instructions are still good).
The game window can cover this area however you want. For example, if I want it to cover my 4k and two 1080p monitors for a triple display, I would size the window to cover them. The width would be 7680 (1920+3840+1920), and the height would be 2160 (height of the 4k monitor). Then, it could look like this.
However, this setup will not look correct in game using the default triple monitor settings, since it expects three monitors of the same size. You will almost certainly need to edit the multimon_config.sii file. You can use one of JHTrucker's basic multimon files to start, choose one that matches the number of monitors you have. Install it per the instructions, making sure r_multimon_mode is set to 4 in config.cfg. The links are in Step 2 of the NPI AA post (doesn’t matter if you use that post or not, we only care about the multimon file): viewtopic.php?f=23&t=1000
Now, we need to tell the game about the size of each of our monitors within the window. The values are named normalized_width and normalized_height. It is the percent of the window size that the monitor takes up in each direction. 4k is 3840 pixels wide, which is half of the window width of 7680. Therefore, the width should be 0.5. 4k is also 2160 pixels tall, which is the entire window height of 2160. Therefore, the height should be 1.0. Doing the same with my 1080p side screens, they are 0.25 width and 0.5 height.
Next, we need to specify the position using normalized_x and normalized_y. These values are the coordinates of the bottom left corner of the monitor relative to the window. So (0,0) aligns the monitor to the bottom left, and (0.5,0.5) would put it in the upper right quadrant. However, the monitor must stay within the window. You cannot, for example, put the monitor at (1,1), since it will be outside of the display area.
We want to match it to how it looks in the display settings. The bottom left corner of my center display is a quarter of the way from the left, and aligned to the bottom. Therefore, it should be 0.25 for x and 0.0 for y. My left display is aligned to the left, so x is 0.0, and I happen to know that it is above the bottom by 540 pixels. Taking 540 and dividing by the height of the window, 2160, I get 0.25, which is my y. For the right monitor, the y is the same, while the x is 0.75.
Last thing to note is normalized_ui_x and normalized_ui_width. Match it to whichever monitor you want the UI to appear on. For me, it is 0.25 x and 0.5 width, same as my 4k center screen.
If you want to learn more about how the multimon file works, a good resource for explaining the functions of each parameter is the multimon documentation from SCS. It might help to give it a read. Link: https://eurotrucksimulator2.com/multimon_config.php
To summarize, this section is for steps 2, 3, and 4 of the “first time setup” instructions for the windowed trick. In step 2, the game resolution must be set to the size of the window, which is 7680x2160 in my case. For step 3, you would adjust your desktop so the window will cover it the way you want. In this case, I’m using my normal desktop configuration, so repositioning is not required. However, I use 200% text and apps scaling on my 4k monitor, which affects how SRWE functions. To keep things simple, I like to change my scaling to 100%. Finally, the multimon file has been edited as shown above, so as long as it is installed correctly, step 4 is done.
This section will quickly explain how to use SRWE to move and resize the game window, for step 9 of the “first time setup” instructions for the windowed trick. The first thing to do is to select the game process.
Now you will be able to adjust the window x, y, width, and height settings. To make changes, simply enter a number into a box, and press the “set” button to apply.
The x and y are the coordinates of the top left corner of the window in pixels. Increasing x moves right, and increasing y moves down. Width and height is the size of the window in pixels, including borders. You want to pay attention to the area on the right titled “Client Area Position and Size”; that is the actual size and position of the game contents, without the borders.
You always want the client width and height to match the window size you set in config.cfg (r_mode_width and height). For x and y though, it will differ for every setup, and it depends which monitor is set as primary. Just try adjusting it until it looks right, you should be able to get the correct values through trial and error.
If it doesn’t let you enter the numbers that you want, first try setting your windows text and apps scaling to 100% for all monitors, as it can affect how SRWE functions. Restart the program and the game, and try again. If it still doesn’t let you, try changing values in a different order (try setting y first, then setting x, or vice versa), or temporarily reducing the window size.
You can change the virtual size of each individual monitor through scaling. Here is some info about my preferred ways of scaling resolution, for use with the windowed trick (or any other use for that matter). After scaling, you will likely need to go back through the “Configuring the Window” section to readjust the settings.
No Scaling (Native)
Method: Just use your monitors' native resolution in your display settings.
Result: Depending on the resolution, no scaling usually looks decent, while being the middle ground for performance. This is the baseline to compare to.
Limitations: Nvidia Surround will always apply scaling to mismatched monitors. AMD Eyefinity has some other options to avoid scaling, but it may result in black bars.
Method: You can scale monitors to exactly half their width and height using integer scaling. For example, you can scale 4k monitors to 1080p or 1440p monitors to 720p perfectly. Only certain GPUs or monitors will have support, look it up for your system.
Result: Unlike normal scaling, integer scaling will not create any blur. Integer scaling renders a smaller resolution, giving much better performance. On the other hand, it may look more aliased.
Limitations: For Nvidia, you cannot use GPU integer scaling with surround.
DSR or VSR
Method: You can use Dynamic Super Resolution (Nvidia) or Virtual Super Resolution (AMD) to upscale your monitor resolution. Enable it in the graphics control panel, then your monitor’s resolution can be raised above native.
Result: The game will render more pixels at the higher resolution, and then the output is downscaled to your monitor's actual resolution. Upscaling will drastically decrease game performance and cause some blur, but is a powerful anti-aliasing method.
Limitations: For Nvidia, you cannot use DSR with surround.
Physical Screen Size
THIS IS IMPORTANT! In this post, the configurations are dealing with the virtual size (e.g. pixels) of the displays, not the physical size (e.g. inches). A setup made using the above guidelines, without any further adjustment, will only look aligned if your monitors are the SAME physical size. For example, my 1080p, 1440p, and 4k monitors are all 27” displays, so the views line up no problem. If your displays are a different physical size, you will need to do more adjusting; in fact, even if they are the same size, you should probably still make more adjustments to enhance your setup!
I have another post dedicated to mathematically calculating the correct FOV settings based on the physical size, angle, and distance of your displays. I HIGHLY recommend using that guide to further tweak your configuration, it handles all the aligning and bezel correction as well. Note that that guide focuses on editing different values, there should be no conflict with any settings in this post. Link here: viewtopic.php?f=23&t=2125
Alternatively, you can try the non-standard multimon config presets made by JHTrucker (if there’s one that matches your setup), and edit it as outlined above. They have not been designed to be mathematically accurate, but you might be able to get the views lined up without too much hassle. Link to JHTrucker's post: viewtopic.php?p=17658#p17658
A few things to note about using the windowed trick:
- Yes, you have to do it every time you launch the game.
- I have only tried Windows 10, I do not know about other operating systems.
- Nvidia Profile Inspector tweaks for anti-aliasing work just fine in conjunction with the windowed trick.
- Windows task view (Win+Tab) resets the game window, putting it back on 1 monitor again.
- Changing graphics settings may cause the window to disappear again; Alt-Tab out and reapply the SRWE profile.
- Generally, if a function works with the game in normal windowed mode, it will most likely work with the windowed trick.
- Try not to Alt-Tab excessively, I’ve had the game crash after tabbing in and out too much during testing.
By tweaking the multimon_config.sii file, the game can render a non-rectangular picture within the rectangular window resolution. As far as I know, the performance is dependent on how many pixels are actually being rendered, not necessarily the window size. For example, my setup can use a 7680x2160 window, with my monitors all side by side. If I take a screenshot, there is clearly black space within the window.
If I use a 5760x2160 window instead, with the monitors tiled so there is no black space, the performance remains the same, even though the window area is reduced by 1/4. A screenshot looks like this.
Note that, with adjustments to the multimon file, the end result looks identical. So it probably doesn't matter which setup I use, since they both render the same number of pixels.
If you need to alter your desktop for the windowed trick every time before launching the game, setting up monitor profiles will save you some time. I use Monitor Profile Switcher, which is free, lightweight, and allows for keyboard shortcuts. Unfortunately, it doesn’t remember the Windows scaling setting, so I still have to manually change that. I know that Display Fusion also has a profiles feature, along with many other functions, so that could be a good choice too.
Comparing with Other Alternatives
SoftTH is another way to set up multiple screens without Surround or Eyefinity. I have not used it, but it supposedly can deal with mismatched resolutions as well. One limitation though is that it only supports DX9, not DX11. TH2GO can do something similar by connecting multiple displays together, but it's a hardware solution, so it's not free.
I would say the windowed trick has the least limitations, but it is not without its downsides. Probably the biggest one is that you need to set it up every time you launch the game. As well, there is no built in bezel correction, though that can be corrected through the multimon config. Technically, there are also some minor performance benefits of using fullscreen over windowed mode.
Could the windowed trick work for other games? It depends. Other games will handle windowed mode differently, and very few games have something equivalent to the multimon_config.sii file. You will just have to try resizing the window, and see if you can expand it to span multiple screens. For games with less extensive triple screen support, you will likely need monitors of the same size (or at least the same height) for it to look correct. The video referenced earlier shows using windowed mode to bypass surround in three different racing games, which inspired this post, but the specific steps required to make it work for ATS/ETS2 I discovered myself.
Will add more here as I think of it. Feel free to ask questions, I will gladly help! As well, definitely leave a post if you find any errors or have any suggestions for improvement.