Skip to content

iw3: desktop: Add fullscreen display mode switching to LocalViewer#657

Open
IkariDevGIT wants to merge 1 commit into
nagadomi:devfrom
IkariDevGIT:fullscreen_display_mode
Open

iw3: desktop: Add fullscreen display mode switching to LocalViewer#657
IkariDevGIT wants to merge 1 commit into
nagadomi:devfrom
IkariDevGIT:fullscreen_display_mode

Conversation

@IkariDevGIT

Copy link
Copy Markdown
Contributor

Adds an optional fullscreen display mode feature for LocalViewer.

The reason for this feature is that Full SBS and similar methods take up half of the screen, which effectively halves the resolution available to the video because it is being rendered on a lower resolution display mode. This makes it render at the resolution it should have.

When --local-viewer-fullscreen-display-mode is enabled, entering fullscreen with F11 switches the monitor hosting the LocalViewer window to a larger display mode. Leaving fullscreen or closing the viewer restores the original mode.

Includes crash recovery via a detached guard process, adds the PyMonCtl dependency, and documents the Linux X11/xrandr limitation.

Tested on Windows. Linux/X11 support is implemented but not verified locally.

@nagadomi

nagadomi commented Apr 3, 2026

Copy link
Copy Markdown
Owner

Do you mean you want to display 32:9 on a display different from the capture target?
Wouldn't it be sufficient to set up a virtual display with double the horizontal resolution in advance?
Basically, changing the monitor resolution from an application is unacceptable.

@IkariDevGIT

Copy link
Copy Markdown
Contributor Author

@nagadomi

Basically, changing the monitor resolution from an application is unacceptable.

Virtual Desktop does that, if I remember correctly.

Do you mean you want to display 32:9 on a display different from the capture target?

No, please take a look at the code. It changes the screen resolution of the monitor the local viewer is on to 2x the total size if available.

Wouldn't it be sufficient to set up a virtual display with double the horizontal resolution in advance?

That's not what I was going for. If you have a better method than my idea, please let me know.

@nagadomi

nagadomi commented Apr 3, 2026

Copy link
Copy Markdown
Owner

Please briefly describe the problem and the proposed solution.
I am not sure what you are trying to achieve.

@IkariDevGIT

Copy link
Copy Markdown
Contributor Author

@nagadomi

This PR is meant to solve a LocalViewer-specific fullscreen resolution problem.

When viewing content like full-SBS in LocalViewer, going fullscreen still leaves the image limited by the current resolution of the monitor the viewer is on. So even in fullscreen, the viewer may not be able to show the content at the resolution it should.

This change adds an optional feature: when LocalViewer enters fullscreen, it can temporarily switch that monitor to a higher resolution if one is available, then restore the original resolution when fullscreen is exited. It is off by default and only affects the monitor hosting the LocalViewer window.

@nagadomi

nagadomi commented Apr 3, 2026

Copy link
Copy Markdown
Owner

Thanks for the explanation. I understand that our basic understanding is aligned.
My understanding is as follows:

  • In the case of Half SBS/TB, the local viewer screen resolution does not exceed the resolution of the captured monitor, so this issue does not occur.
  • In the case of Full SBS, the horizontal resolution is insufficient, so 2x width is required. Considering Full TB as well, there are cases where 2x height is also required.
  • If the monitor displaying the local viewer has 2x the resolution of the capture-side monitor, this issue does not occur even with Full SBS/TB.

The source of confusion seems to be the following conditions:

  • Fullscreen capture vs window capture (region capture)
  • Whether the capture monitor and the monitor displaying the local viewer are the same or different

My question is why the following is not sufficient:

Wouldn't it be sufficient to set up a virtual display with double the horizontal resolution in advance?

  • If the capture monitor and the monitor displaying the local viewer are different, setting the local viewer monitor to 2x resolution should avoid this issue.
  • If the capture monitor and the monitor displaying the local viewer are the same, setting the display to the maximum resolution in advance and capturing a window smaller than 1/2 resolution (fullscreen at a lower resolution setting) should avoid this issue.

Since I do not use Virtual Desktop or Local Viewer, I may not be aware of issues related to them.

@IkariDevGIT

Copy link
Copy Markdown
Contributor Author

If the capture monitor and the monitor displaying the local viewer are different, setting the local viewer monitor to 2x resolution should avoid this issue.

Welp my displaying monitor only supports full hd. But it supports rendering 4k and downscaling the video output to full hd.

If the capture monitor and the monitor displaying the local viewer are the same [...]

Thats not really possible.. at least i dont see a reason why someone would do that.

This PR is basically just to make life easier, sure i could go into my setting every time to change it before starting it, but thats very very annoying to do.

@nagadomi

nagadomi commented Apr 3, 2026

Copy link
Copy Markdown
Owner

Thats not really possible.. at least i dont see a reason why someone would do that.

if the same monitor is used, my understanding is that changing the resolution for the local viewer would also change the captured resolution. I am not very familiar with the exact behavior here, but wouldn't this effectively be the same as changing the resolution in advance?

@IkariDevGIT

Copy link
Copy Markdown
Contributor Author

@nagadomi
I think we are confusing ourselves, local viewer is not meant to be on the same monitor as the capture monitor. That would defeat its usecase, why would you let it record itself.

@nagadomi

nagadomi commented Apr 3, 2026

Copy link
Copy Markdown
Owner

That's right. That is why I wrote

Whether the capture monitor and the monitor displaying the local viewer are the same or different

There must be at least two monitors, and the monitor used for capture and the monitor used for fullscreen display of the local viewer must be different. Each monitor can be set to a different resolution, so it is not necessary to argue about using the same monitor. I was not certain about this, so I wrote more than necessary.

So my final point is simply this.

Wouldn't it be sufficient to set up a virtual display with double the horizontal resolution in advance?

Personally, I think this is something that could be solved by creating a dedicated virtual monitor once. However, is there a reason preventing this, such as the monitor used for the Local Viewer being a physical monitor that is also used for other purposes rather than a virtual one?

@IkariDevGIT

Copy link
Copy Markdown
Contributor Author

OH, i get what you mean now, i do not know if thats possible on windows. I did not consider this idea at all! I would greatly appriciate you jumping in on this @nagadomi.

@nagadomi

nagadomi commented Apr 3, 2026

Copy link
Copy Markdown
Owner

I am not very familiar with it, but I once set up a virtual display on Windows using Virtual Display Driver for testing, and it was possible. I recall that it did not work with the latest version, so I installed a version that worked.
It seems to be described in detail in #527, #426 (reply in thread).
As I mentioned in several places, I do not use Virtual Desktop or Local Viewer myself, so everything I know comes from issues and discussions here.

@IkariDevGIT

Copy link
Copy Markdown
Contributor Author

@nagadomi could you please merge my other 2 PR's, they are very pesky bugs that make everything basically unwatchable.

@IkariDevGIT

Copy link
Copy Markdown
Contributor Author

@nagadomi Could we merge this until we have a solution with Virtual displays?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants