Bug 511072 - [Feature request] Add "Fullscreen window" KWin effect
Summary: [Feature request] Add "Fullscreen window" KWin effect
Status: RESOLVED NOT A BUG
Alias: None
Product: kwin
Classification: Plasma
Component: effects-window-management (other bugs)
Version First Reported In: unspecified
Platform: Other Other
: NOR wishlist
Target Milestone: ---
Assignee: KWin default assignee
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-10-25 07:48 UTC by KOPRajs
Modified: 2025-10-25 15:58 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description KOPRajs 2025-10-25 07:48:50 UTC
I'm looking for a way to create a "Fullscreen window" KWin effect. The original idea and request was started here: https://bugs.kde.org/show_bug.cgi?id=510631

The basic task is to render a content of any window upscaled to fullscreen (activated by a keyboard shortcut like "Alt+Enter"). If possible, optionally applying a scaling shader (CRT, xBR etc.).

The motivation is to correctly display old games, which do not support native screen resolution, on a modern big displays. Unlike classic fullscreen mode, this would allow fine control of the output (aspect ratio, integer scaling, or ultimately even shaders) while it wouldn't need to actually switch the display mode (which is currently not possible on Wayland anyway). It would also enable a seamless task switching between the games and the desktop. Another possible usecase might be to scale an old video using the CRT shader etc.

I've briefly looked at the possibilities and it seems that this currently cannot be done in the QML effect, because of the need to handle the mouse when the window is scaled to fullscreen.
Creating such effect in C++ seems possible (by partialy re-using code from the magnifier effect), but I'm not sure, if such feature has a chance to be included in the core KWin effects.

Maintaining an out of tree C++ effect for KWin would be a pain, so the other possibility would be to add the needed functionality to QML effects. I can then create it as an external downloadable QML effect.
The missing features in QML effects are:
- Hide the system mouse cursor
- Draw a new one scaled to proper size and coords including the original shape (just like in the built-in magnifier)

More background and already considered solutions:
Lets say we want to play an original "Age of Empires" game on a modern Plasma desktop running on Wayland and a big ultrawide screen.
Currently the game works flawless in Wine, except it shows only a small picture in top-left corner of the screen. The max supported resolution in the game is 10124x768.

- There are wrappers like DxWrapper or dgVoodoo, which can hack the game itself and scale it to fullscreen, but not every game work great this way, you need to handle every app separately. Also, I've noticed issues when switching from the running game back to desktop.

- You can use the built-in screen magnifier with mouse tracking turned off, but you can't zoom exactly to match the window size and it is not very comfortable.

- What you can do with any of the games is to make them run in a windowed mode. If the game doesn't have a built-in window mode, you can use Wine desktop.

- Having the "Fullscreen effect" in KWin would allow for a great universal solution for any type of apps (native, Wine, DirectX, OpenGL, even DosBox, emulators etc.).
Comment 1 Nate Graham 2025-10-25 15:58:57 UTC
Hello! You've reached the KDE bug tracker, which is for tracking bugs in KDE software. Unfortunately here on the bug tracker, we cannot offer help with software development topics not clearly related to bugs in KDE software. This includes building KWin effects. You can find appropriate ways to get in contact with the dev team for assistance with your issue at https://community.kde.org/Get_Involved/development#Communicate_with_the_dev_team.