Multi-Monitor Full-Screen Tutorial (Citra)

I had trouble following the old guide that seems to be linked to everywhere to allow this to be done. When I can link to more than 2 sites, I will update this post with a link to the original and fix the link to the site in step 3. For now, I’ll just comment with them. Hope this helps some of you guys achieve a flawless setup for multiple monitors!

  1. Locate your config folder with qt-config.ini. Mine was in canary-mingw\user\config. Some people may have theirs in %appdata%\Citra\user\config.
  2. Under [Layout] in qt-config.ini set custom_layout=true from false, also change layout_option=0 to =1.
  3. Using ht.tps://community.citra-emu.org/uploads/default/original/2X/f/f1439a0dd6d2566b8077d93eec3a204131f64720.txt (change main.txt to main.htm) (also apologies to the mods, I cant put more than two links in a post right now so I had to cheat) input the dimensions HxV of your monitors you want to use with the main monitor being the left-most monitor and secondary the right-most.
  4. Copy and paste the resulting config lines into qt-config.ini under the [Layout] heading. Be sure to overwrite the original custom_xxx_xxx=x lines, not just add to the end of the file.
  5. Under [Layout] in qt-config.ini find the line “custom_top_left\default=false”. and change all the custom_xxx_xxx\default=false lines to default=true. Be sure to leave custom_layout\defualt=false as is.
  6. Now to skip over to the Reddit guide, here. Ignore the instructions up to “Once you’ve done all the steps in that guide you’re going to want to download Borderless Gaming”
  7. Download the latest build of Borderless Gaming here. Get the .exe, not the source code. Install and launch Borderless Gaming.
  8. Launch Citra. Using the view dropdown at the top of the Citra main window, uncheck “Single Window Mode”. Launch the game. The window may look a bit off, just ignore Citra for now.
  9. Back to Borderless Gaming. In the Applications frame on the left, you should see a handful of options. If you haven’t set single window mode to off, then there will only be one Citra option. I cannot stress enough that this would not work for me, you MUST set Single Window Mode to off in Citra.
  10. You are looking for a program following this style: Citra Canary | HEAD-XXXXXXX [Title] OR Citra Nightly | etc depending on the build you are using. Click on the one that applies to whatever build you are using. The middle bar will have arrows, having selected the proper application, click the arrow pointing to the right. You should now have that program in the Favorites frame to the right.
  11. Right-click the entry for the app in favorites, selecting the “Select Favorite Window” option and setting it to “SuperSize!”.
  12. Right-click the entry again and select “No size change” if “Set window size” is still greyed out.
  13. Once again right-click the entry and click “Set Window Size”. It will ask you to set it with the mouse, say no. Pixel X location should be 0, same with Y position. The next option should be the same as custom_bottom_right from qt-config. It auto-populated 3199 for me, just 1 pixel less than the line in qt-config. It may do the same for you, as it just fills in the total horizontal length in pixels of your screens. The height should be the same as the maximum length in pixels of whichever screen is higher res.
  14. You should have a functioning fullscreen multi-monitor setup now.

If you have any problems, feel free to reach out to me.

The file for step 3.

Link to the original thread

I followed the steps but always when i launch the game it stays like the in the image,

and the config file returns to the settings displayed in the image despite i saving it with my two 1920x1080 monitor config.

You need to change the custom_xxx_xxx\default=xxx to match mine. The custom left and top must be true so it always finds the top left of your screen correctly and places the window there. And apologies, I wrote that at like 4 am, layout_option=0 must be =1.

My customs:
custom_layout\default=false
custom_top_left\default=true
custom_top_top\default=true
custom_top_right\default=false
custom_top_bottom\default=false
custom_bottom_left\default=false
custom_bottom_top\default=false
custom_bottom_right\default=false
custom_bottom_bottom\default=false

If you’ve already done that and it is being reset on launch anyway, try deleting the whole area under [Layout]. You have multiple duplicates and without seeing the whole file there may be more.

I dont understand where you are supposed to put in the HxV in your Main.txt file. Some Screen shots showing exactly how to do it would be nice. I got it working but it stretches the bottom screen a little to much and some of it gets cut off and I cant figure out how to fix it.

1 Like

You are not. You are supposed to download the .txt file and manually change the extension to .htm so that the web-script can run. Once you’ve changed the file to .htm, launch it in your preferred web browser and input the necessary data.

Many thanks for this tutorial. With some trial and error, I was able to get it to work quite nicely. As was mentioned on a referrenced thread, the best practice is to close and re-launch Citra entirely whenever you switch to a new game. Borderless Gaming must be running prior.

In case it’s of any use, I am including the [Layout] section of my config file (note that my numbers are strange b/c I’m using a custom ‘underscanned’ resolution so that my old-as-hell external monitor doesn’t clip the image). I’m also using layout option 3 (side-by-side) to get things working as desired, which differs from the write-up.

[Layout]
render_3d\default=true
render_3d=0
factor_3d\default=true
factor_3d=0
pp_shader_name\default=true
pp_shader_name=none (builtin)
filter_mode\default=true
filter_mode=true
layout_option=3
swap_screen\default=true
swap_screen=false
upright_screen\default=true
upright_screen=false
custom_layout\default=false
custom_layout=true
custom_top_left\default=true
custom_top_left=0
custom_top_top\default=true
custom_top_top=0
custom_top_right\default=false
custom_top_right=1804
custom_top_bottom\default=false
custom_top_bottom=1004
custom_bottom_left\default=false
custom_bottom_left=1804
custom_bottom_top\default=false
custom_bottom_top=0
custom_bottom_right\default=false
custom_bottom_right=3724
custom_bottom_bottom\default=false
custom_bottom_bottom=1080

The bottom screen on my secondary monitor isn’t displaying right: https://i.imgur.com/ZzcRJto.jpg

It’s positioned too high with the top cut off. Both monitors are using different resolutions from each other (main monitor is 1440P; secondary is 1080p) so maybe that’s causing the issue. Anyway of fixing this?

Also, I don’t really want the bottom screen stretched to fit the monitor display, I’d rather it keep the bottom screen’s correct aspect ratio while still filling in as much as possible of the monitor.

Hi, I’m having the same problem. The only solution I’ve found is fiddling with custom_bottom_bottom and custom_bottom_top settings.

I’m having issues, I’ve copied everything and even then it looks like this:


I’ve also used other replies to make touch ups

modifications to the .ini file don’t stick. Setting custom layout from false to true (then saving) “works,” but in launching game, Citra reverts to setting back to false. I’m pretty sure I’m following the directions correctly, but Citra won’t comply. Even deleting the entire [Layout] section results in Citra writing back into it (with custom layout always set to false) on game launch. Seems to me there’s a setting somewhere in Citra that’s doing this. Dunno where that is.

I’m having issues where my 2nd screen (a tablet as a second screen) is showing a squished image. My main monitor runs at 3840x2160 and the tablet at 1920x1080. I’ve tried tweaking my settings but no luck. The main.htm provided me with these settings:

custom_top_left=0
custom_top_top=0
custom_top_right=3840
custom_top_bottom=2160
custom_bottom_left=3840
custom_bottom_top=0
custom_bottom_right=5760
custom_bottom_bottom=1080

and my .ini file shows:
layout_option=0
swap_screen\default=true
swap_screen=false
upright_screen\default=true
upright_screen=false
custom_layout\default=false
custom_layout=true
custom_top_left\default=true
custom_top_left=0
custom_top_top\default=true
custom_top_top=0
custom_top_right\default=false
custom_top_right=3840
custom_top_bottom\default=false
custom_top_bottom=2160
custom_bottom_left\default=false
custom_bottom_left=3840
custom_bottom_top\default=false
custom_bottom_top=0
custom_bottom_right\default=false
custom_bottom_right=5760
custom_bottom_bottom\default=flase
custom_bottom_bottom=2160

Anyone have any idea how to make it non-squished and fullscreen?

For anyone struggling with Citra auto-resetting your config file, right click it, go to properties, and set it to read only. You’ll have to uncheck that to modify it again, but it prevents Citra from messing with it.

Hi,

Thank you for the tutorial. A true support of “one window per screen” from Citra should be better if possible.

The main.htm isn’t very helpful, it’s better to understand what to do (= what Borderless Window’s “SuperSize” does, and what we want).
I have an easy setup with 2x 1920x1080 monitors (the right one is the principal).
The top screen of 3DS is natively 400x240. To be full screen and keep the same ratio, x4.5 => 1800x1080
And to center : (1920-1800)/2 = 60
So custom_top_left=60
custom_top_right= 60+1800 = 1860

Same for the bottom screen, which is 320x240 => 1440x1080
1920 (first screen width) + ((1920-1440)/2) = 2160
So custom_bottom_left=2160
custom_bottom_right= 2160+1440 = 3600

Result:

[Layout]
render_3d\default=true
render_3d=0
factor_3d\default=false
factor_3d=100
pp_shader_name\default=true
pp_shader_name=none (builtin)
filter_mode\default=true
filter_mode=true
layout_option=1
swap_screen\default=true
swap_screen=false
upright_screen\default=true
upright_screen=false
custom_layout\default=false
custom_layout=true
custom_top_left\default=false
custom_top_left=60
custom_top_top\default=true
custom_top_top=0
custom_top_right\default=false
custom_top_right=1860
custom_top_bottom\default=false
custom_top_bottom=1080
custom_bottom_left\default=false
custom_bottom_left=2160
custom_bottom_top\default=false
custom_bottom_top=0
custom_bottom_right\default=false
custom_bottom_right=3600
custom_bottom_bottom\default=false
custom_bottom_bottom=1080

But my first monitor is a 3D TV and I would like to have 3D + multi-monitor. The best way I found is:

[Layout]
render_3d\default=false
render_3d=1
factor_3d\default=false
factor_3d=100
pp_shader_name\default=true
pp_shader_name=none (builtin)
filter_mode\default=true
filter_mode=true
layout_option=1
swap_screen\default=true
swap_screen=false
upright_screen\default=true
upright_screen=false
custom_layout\default=false
custom_layout=true
custom_top_left\default=false
custom_top_left=60
custom_top_top\default=true
custom_top_top=0
custom_top_right\default=false
custom_top_right=1860
custom_top_bottom\default=false
custom_top_bottom=1080
custom_bottom_left\default=false
custom_bottom_left=0
custom_bottom_top\default=false
custom_bottom_top=1260
custom_bottom_right\default=false
custom_bottom_right=1920
custom_bottom_bottom\default=false
custom_bottom_bottom=1980

Sadly we have a double bottom screen taking half screen.

Edit : Ok, I finally understand how to deal with Interlaced 3D : I have to use the native resolution on my 3D TV, of course…
And the result is perfect (but a little slow):

Hi,
Did you modify anything in Borderless Gaming?

Sorry for the delay… Like what? No, I tried to make a regex as an automatic rule but I failed. Just use Borderless Gaming after launching the game, on the window of the game, as the point 10 of the first post explains.