Minimal Windows Forms borderless window utility for Windows, built with C#, .NET 9, and direct Win32 API calls.
Credit: icutmyhair
- Lists visible running windows with process names and titles.
- Makes a selected window borderless and resizes it to the nearest monitor.
- Restores selected windows or all modified windows back to their saved state.
- Resolves stale selections and favorites to a current live window when possible.
- Verifies process identity before restoring a saved window state.
- Supports case-insensitive favorites by process name for fast repeat use.
- Optionally auto-applies favorites on launch.
- Supports an ignore list to hide noisy/system processes from the window list.
- Includes search for filtering running windows.
- Can minimize to the system tray with tray menu actions.
- Can restart itself as administrator for elevated games or apps.
- Restores modified windows before exiting.
- Prevents duplicate application instances.
- 64-bit Windows for the published
win-x64executable - .NET 9 SDK for building from source
The published executable is self-contained and does not require a separate .NET runtime installation.
- Start
borderless-gaming.exe. - Select a running window and choose Make Borderless.
- Use Restore for the selected window or Restore All for every window changed during the current app session.
- Add a process to Favorites for repeat use, or enable Auto apply favorites to apply matching windows at startup.
- Use Restart as Admin when an elevated game rejects window changes.
.
|-- Infrastructure/ # Settings, startup cleanup, and admin restart
| |-- AdminHelper.cs
| |-- AppSettings.cs
| `-- StartupRegistrationCleanup.cs
|-- Models/ # Window identity, saved state, app exceptions
| |-- WindowAccessException.cs
| |-- WindowInfo.cs
| `-- WindowState.cs
|-- Native/
| `-- Win32.cs # Win32 constants, structs, and P/Invoke calls
|-- Services/
| `-- BorderlessService.cs # Discovery, live resolution, apply, safe restore
|-- UI/
| |-- MainForm.cs # WinForms UI, actions, tray integration
| `-- Prompt.cs # Small prompt dialog for manual ignore entries
|-- Program.cs # Application entry point
|-- app.ico # Application icon
|-- app.manifest # Windows application manifest
|-- borderless-gaming.csproj # .NET 9 Windows Forms project
|-- borderless-gaming.sln # Visual Studio solution
`-- README.md
Generated folders such as bin/, obj/, and publish/ are intentionally
ignored by git.
Settings are stored per user at:
%APPDATA%\SimpleBorderlessGaming\settings.json
The settings file contains:
AutoApplyFavoritesMinimizeToTrayFavoritesIgnoredProcesses
Default ignored processes include common Windows shell/search processes and the
app itself. Process names are stored without .exe, sorted, deduplicated, and
matched case-insensitively. Existing settings are normalized when loaded.
dotnet build .\borderless-gaming.csproj -c Releasedotnet run --project .\borderless-gaming.csproj -c ReleaseSome elevated games cannot be modified from a non-elevated app. Use
Restart as Admin inside the app when Windows permission boundaries block a
window change.
dotnet publish .\borderless-gaming.csproj -c Release -r win-x64 --self-contained true -o .\publish\win-x64 /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true /p:EnableCompressionInSingleFile=true /p:DebugType=none /p:DebugSymbols=falseOutput:
publish\win-x64\borderless-gaming.exe
- Window styles and positions are saved only for the current app session.
- Saved state includes the process ID; restore is skipped if Windows reuses the same window handle for a different process.
- Legacy
Start with Windowsregistry entries from older versions are removed on launch. - Only one app instance can run per Windows user session.
- When
MinimizeToTrayis enabled, closing the main window hides the app in the system tray. Use the tray menu'sExitaction to close the app. - Exiting the app attempts to restore every window it modified during that session.
This project is licensed under the MIT License. See LICENSE.