CS2 ResEdit edits Counter-Strike 2 resolution and aspect settings on Windows. Version 2.0.0 replaces the C# and WinForms application with a Rust application built with egui.
Download CS2-ResEdit.exe · Release notes · SHA-256 checksum
- Windows 10 or Windows 11, x64.
- A graphics driver that supports OpenGL 2.0 or later, or Direct3D 12. The editor uses OpenGL and switches to Direct3D 12 when OpenGL cannot open the window.
- A Steam installation with a CS2 video configuration, or a manually selected
cs2_video.txt.
The portable executable needs no installer, administrator rights, PowerShell runtime, or separately installed .NET runtime. The application works locally and does not upload your configuration or Steam account information.
- Close Counter-Strike 2. The game can overwrite its configuration when it exits. If CS2 is still running when you apply or restore, the editor asks before writing.
- Download and run
CS2-ResEdit.exe. - Select a Steam account, or choose Browse to open a configuration.
- Select the target display, aspect ratio, and resolution.
- Review the current and pending values, then choose Apply changes.
The usual configuration path is:
C:\Program Files (x86)\Steam\userdata\<AccountID>\730\local\cfg\cs2_video.txt
Steam and display discovery run in the background. Refresh scans accounts again. Reload file reads the selected configuration again and replaces pending values with its current settings. Reset discards pending edits without writing to the file. Switching accounts, reloading, or opening another file while edits are pending asks before discarding them.
Only one editor instance can run per Windows session. --help and --version show informational dialogs in the release build. Command-line configuration editing is not supported.
The display list shows the Windows-reported monitor model, display ID, current resolution, and primary-display status. For example, a monitor may appear as ROG PG27AQN · DISPLAY1 · 2560x1440 · Primary. If Windows cannot provide a monitor name, the editor falls back to the graphics-adapter name.
Selecting a display changes resolution-availability guidance. It does not switch the desktop resolution or change CS2's monitor-selection fields.
Windows-reported modes appear first, followed by the remaining curated presets for the selected aspect family. Portrait modes from rotated monitors are not listed. An unreported mode remains selectable; that label is not a guarantee that the monitor or game supports it.
Changing the aspect family selects its recommended preset:
| Aspect family | Recommended resolution |
|---|---|
| 4:3 / 5:4 | 1280x960 |
| 16:9 | 1920x1080 |
| 16:10 | 1680x1050 |
The catalog contains 43 presets. Choose Custom resolution to enter a width from 320 to 32768 and a height from 200 to 32768. The shared 16:9 preview canvas shows how narrower aspect ratios compare. It does not predict the game's scaling or stretching behavior.
Choose Theme in the header. The editor saves your choice for the next launch.
| Theme | UI colors | Running-window icons |
|---|---|---|
| Glacier, the default | Dark blue and cyan | Cyan |
| Paper | Light cream and teal | White |
| Monolith | Dark graphite and lime | Lime |
| Canopy | Dark forest green and jade | Jade |
The title-bar and running taskbar icons follow the theme. The executable's File Explorer icon remains static. When Windows High Contrast is on, the editor switches to a high-contrast palette and follows the setting while it runs.
Hover over any closed dropdown and scroll down to select the next entry or up to select the previous entry. Selection stops at either end. This applies to displays, presets, aspect ratios, and themes. The account selector ignores the wheel, because switching accounts opens another file. Open menus retain normal scrolling.
The custom width and height fields also accept wheel input. Scroll up to increase a value or down to decrease it. Adjustments stay within the allowed dimension range. The - and + buttons beside each field step the value by one.
| Keys | Action |
|---|---|
F5 |
Refresh Steam accounts |
Ctrl+S |
Apply changes, when available. Extra modifiers such as Shift do not trigger it. |
Esc |
Close the topmost dialog |
Apply validates the required fields, prepares the update in memory, and replaces the configuration through a temporary file in the same directory. It preserves UTF-8 or UTF-16 encoding, byte-order marks, line endings, and unrelated values. Files without the setting.aspectratiomode field remain supported: the editor infers the aspect family from the dimensions and writes only width and height, never adding the field.
If the configuration is read-only, a common way to stop CS2 from resetting it, Apply and Restore clear the read-only flag for the replacement and set it again afterwards. A failed write removes the backup it had just created, so failed attempts do not push older backups out of retention.
If another program changes the loaded file, Apply and Restore stop and report the difference. Choose Reload file, review the new values, then make your change again. These checks reduce the risk of overwriting external edits, but they cannot lock out every write from another process.
Create a timestamped backup before applying is enabled by default. Backups are stored beside the configuration with names such as cs2_video.txt.20260930-120000.bak. The editor retains the newest five recognized backups. It does not delete unrelated .bak files.
Choose Manage backups to inspect and restore a backup. Restoration validates the backup and creates a rollback backup of the current file first. Keep CS2 closed during restoration as well as during Apply.
Close the old application and replace its executable with the current version. Existing CS2 files and recognized editor backups remain usable. No installation or configuration conversion is required.
Preferences are stored at:
%LOCALAPPDATA%\Softhe\CS2-ResEdit\v1\settings.json
The v1 directory names the preference schema, not the application release. Version 2.0.0 and later keep that schema and add an optional theme field. The editor remembers the last account, selected configuration, theme, and up to five recent valid files. Changes are saved shortly after you make them and when the window closes. A missing or unknown theme defaults to Glacier.
If the preference file cannot be read or saved, the footer shows a separate preferences warning next to the current status message.
Preference files under other product names or unversioned directories are not imported or modified. Preferences contain local account IDs and file paths, but no credentials.
Choose Diagnostics to view a support report. Copy copies the readable summary; Export JSON saves the structured report.
Reports include application and operating-system details, runtime description, high-contrast state, display and mode counts, Steam discovery counts, recognized backup count, and configuration-format status. They exclude account names and identifiers, paths, configuration contents, and preference values. Exporting a report does not send it anywhere.
The structured JSON report uses schema version 2 with privacy-safe fields only: schema_version, generated_utc, application_version, operating_system, architecture, runtime_description, high_contrast, per-display is_primary/current_width/current_height/mode_count, steam_root_count, account_count, backup_count, configuration_status, configuration_encoding, configuration_has_bom, configuration_line_ending, and error_category.
The release is unsigned. Windows SmartScreen may warn when you run it. Download the executable and checksum sidecar into the same folder, then run this in PowerShell:
$expected = (Get-Content .\CS2-ResEdit.exe.sha256 -Raw).Split()[0]
$actual = (Get-FileHash .\CS2-ResEdit.exe -Algorithm SHA256).Hash.ToLowerInvariant()
if ($actual -ne $expected) { throw 'The executable checksum does not match.' }
'Checksum verified.'A matching checksum confirms that the file matches the release asset. It does not verify a publisher signature.
The editor shows an error dialog when it cannot create its window, listing what failed for each graphics renderer. Update the graphics driver and try again. Remote Desktop sessions and virtual machines without graphics acceleration may not support either renderer. To choose a renderer yourself, set CS2_RESEDIT_RENDERER to opengl or d3d12 before starting the editor.
Start Steam at least once, then choose Refresh. If discovery still fails, use Browse to open the account's configuration directly.
Select a valid configuration and change a setting. Apply remains disabled when pending values match the loaded file or entered dimensions are invalid.
Close CS2 before applying changes. A running game may save its in-memory settings over the edited file when it exits. The editor warns when it detects cs2.exe; choose Cancel, close the game, then apply again.
Open Manage backups, inspect a backup's values, and restore it. Reset only discards changes that have not been applied.
Use the display ID and primary-display label to distinguish them. Model names depend on what Windows and the display driver report.
Install rustup and the toolchain specified in rust-toolchain.toml. From the repository root, run:
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo test --workspace --locked
.\build\Publish.ps1The workspace has two crates:
crates/corecontains configuration editing, backups, Steam discovery, display discovery, preferences, and diagnostics.crates/appcontains the egui interface, themes, and native window integration.
The publish script stages the Windows x64 executable and checksum before replacing the files in dist. Close a running copy of the destination executable before publishing.
Release assets are CS2-ResEdit.exe and CS2-ResEdit.exe.sha256. CI checks formatting, lint, and tests on Windows and Linux, builds on Windows, and smoke-tests an identical copy of the packaged GUI with a pinned software OpenGL renderer. That renderer is a CI dependency and is not included in the release. Linux checks cover core behavior and conditional compilation; there is no supported Linux release.
A version tag must match the workspace version and the heading in RELEASE_NOTES.md. The release workflow uploads the tested Windows assets. build/Sign-Release.ps1 supports optional manual Authenticode signing when a trusted publisher certificate is available. The current release process does not sign the executable.
See the changelog, the roadmap, and the dated reviews in docs/history for change history and remaining work.
CS2 ResEdit is licensed under GPL-3.0-only.