Personal Counter-Strike 2 configuration with keybinds, crosshair recoil modes, practice setup, and utility scripts.
On Debian/Linux Steam, use:
./setup.shIt installs autoexec.cfg + custom_cfg/ into CS2's game/csgo/cfg directory. It does not edit Steam settings, install packages, change launch options, restart Steam, or touch display settings.
Preview the target without copying:
./setup.sh --dry-run
./setup.sh --print-target./install.sh is kept as a compatibility alias for ./setup.sh.
Manual reference only. Set this in Steam: Library -> Counter-Strike 2 -> Properties -> Launch Options.
-freq 144 -fullscreen -w 1920 -h 1080 -console -novid -nojoy -high +exec autoexec
On Linux, CS2 does not expose the same true exclusive fullscreen mode as Windows. The useful modes are Windowed and Fullscreen Windowed. Use native 1920x1080 for normal play.
Display mode is not a good fit for autoexec.cfg: it is applied before/around engine startup, and changing it after launch can cause a black screen on Linux. Prefer manual launch options.
Go to Manage 3D Settings → Program Settings → CS2:
| Setting | Value |
|---|---|
| Preferred graphics processor | High-performance NVIDIA (not Intel UHD 770!) |
| Power Management Mode | Prefer Maximum Performance |
| Low Latency Mode | Ultra |
| Vertical Sync | Off |
| Setting | Value |
|---|---|
| Display Mode | Fullscreen / Fullscreen Windowed at 1920x1080 |
| Global Shadow Quality | High |
| Model / Texture Detail | Low |
| Shader Detail | Low |
| Particle Detail | Low |
| VSync | Off |
| NVIDIA Reflex | Enabled |
| Boost Player Contrast | On |
autoexec.cfg is the entry point — it unbinds everything and loads configs from custom_cfg/:
autoexec.cfg
custom_cfg/crosshair.cfg
custom_cfg/movement.cfg
custom_cfg/model.cfg
custom_cfg/common.cfg
custom_cfg/buy.cfg
custom_cfg/misc.cfg
custom_cfg/fps.cfg
custom_cfg/walk/initialize.cfg
custom_cfg/practice/binds.cfg
custom_cfg/crosshair_state.cfg
Press F6 to reload the config at any time.
| Key | Action |
|---|---|
| WASD | Move |
| Space / Scroll Up / Scroll Down | Jump |
| Ctrl | Crouch |
| Shift | Walk (see Walk System) |
- Sensitivity: 2
- Zoom sensitivity: 0.818933 (1:1 scoped feel)
Static crosshair (style 4) with custom size, color, and outline. The recoil-follow mode system is controlled by these keys:
| Key | Mode | Mouse 1 behaviour | Visual indicator |
|---|---|---|---|
Numpad + |
Rifle | Follow recoil only while firing; return to centre when released. | RGB 220 150 150, no centre dot. |
Numpad - |
Pistol | Always follow recoil. | RGB 220 150 150, with centre dot. |
Numpad * |
Static (default) | Never follow recoil. | Orange (255 220 80), no centre dot. |
Reload the crosshair configuration from the CS2 console with exec autoexec.
The September 2026 CS2 update changed crosshairs to resolution-independent values. The current config uses the closest migration of the previous appearance:
| Command | Value | Purpose |
|---|---|---|
cl_crosshairstyle |
4 |
Static crosshair. |
cl_crosshair_length |
4 |
Crosshair line length. |
cl_crosshair_gap |
4 |
Gap between the centre and lines. |
cl_crosshair_thickness |
1 |
Line thickness. |
cl_crosshaircolor_a |
255 |
Opacity. |
cl_crosshair_drawoutline |
1 |
Enable outline. |
cl_crosshair_outlinethickness |
0.5 |
Outline thickness. |
cl_crosshair_recoil |
0 or 1 |
Disable or enable recoil-following. |
The updated UI does not support a negative gap, so an exact pixel-for-pixel match to the former crosshair is not possible. The current config uses length 4, gap 4, and thickness 1.
Static mode starts with RGB 255 220 80 at full opacity. Use cl_crosshair_length, cl_crosshair_gap, cl_crosshair_thickness, and cl_crosshaircolor_a for new changes instead of legacy appearance commands cl_crosshairsize, cl_crosshairgap, cl_crosshairthickness, cl_crosshairalpha, and cl_crosshaircolor.
| Key | Buy | Also does |
|---|---|---|
| F1 | Kevlar vest | Vote Yes |
| F2 | Rifle (team default) | Vote No |
| F3 | Smoke + HE grenade | — |
| F4 | Defuse kit + Flashbang | — |
| F5 | Kevlar + Helmet | — |
| Key | Grenade |
|---|---|
| F | Flashbang |
| MOUSE4 | Smoke |
| C | HE grenade |
| Key | Action |
|---|---|
| E | Use |
| R | Reload |
| G | Drop weapon |
| Q | Last weapon (quick switch) |
| V | Toggle voice chat on/off |
| MOUSE5 | Push-to-talk |
| MOUSE3 | Player ping |
| T | Spray menu |
| TAB | Scoreboard |
| X | Radio menu |
| B | Buy menu |
| M | Team menu |
| DEL | Disconnect |
| 1-5 | Weapon slots (primary, secondary, knife, grenades, bomb) |
Shift does more than just walk — it's a multi-action modifier:
While holding Shift:
- Walk (slow movement)
- Volume increases by +0.5 (from 0.5 to 1.0) to hear footsteps better
- Enter key switches to all-chat (
messagemode)
When Shift is released:
- Normal run speed
- Volume returns to 0.5
- Enter key switches back to team-chat (
messagemode2)
Left-side shifted viewmodel with FOV 60 (viewmodel_offset_x -1, viewmodel_offset_y -2, viewmodel_offset_z -2).
cl_interp_ratio 1— interpolation ratiomm_dedicated_search_maxping 35— low ping matchmaking
Press HOME to activate practice mode on a local server. Sets up a full practice environment:
- Cheats enabled, infinite ammo, unlimited money ($60,000)
- Buy anywhere, no round time limit, no freeze time
- Grenade trajectories and impact markers visible
- One bot added and frozen for reference
| Key | Action |
|---|---|
| INS | Noclip (fly through walls) |
| PGUP | Give all grenade types |
| Numpad 0 | Rethrow last grenade |
| Numpad 5 | Toggle bot freeze |
| Numpad 7 | Clear all grenade projectiles |
Installs this config into CS2's game/csgo/cfg directory:
./setup.shThe script auto-detects CS2 installed through Steam on Debian/Linux and copies only:
autoexec.cfgcustom_cfg/
Preview the target without copying:
./setup.sh --dry-run
./setup.sh --print-targetIf Steam or CS2 is in a non-standard location, pass a Linux path manually:
CS2_ROOT="$HOME/.local/share/Steam/steamapps/common/Counter-Strike Global Offensive" ./setup.sh
CS2_CFG="/path/to/Counter-Strike Global Offensive/game/csgo/cfg" ./setup.sh./install.sh accepts the same arguments and delegates to ./setup.sh.
Requires zstd:
sudo apt install zstdProcesses downloaded demo files (.dem.zst) from ~/Downloads:
./demos.shWhat it does:
- Auto-detects CS2 installed through Steam on Debian/Linux
- Deletes loose
.demfiles from Downloads, matchingdemos.cmdbehavior - Decompresses all
.dem.zstfiles to CS2'sgame/csgofolder - Deletes successfully processed
.dem.zstfiles from Downloads - Lists available demos with
playdemocommands sorted newest-first
Use a custom downloads folder:
DOWNLOADS_DIR=/path/to/downloads ./demos.sh
./demos.sh --source /path/to/downloadsKeep loose .dem files in Downloads:
./demos.sh --keep-looseinstall.cmd copies the config into the default Windows Steam CS2 cfg folder.
demos.cmd processes demos from Downloads into the Windows CS2 folder. It expects zstd.exe at zstd\zstd.exe next to the script and does not download it automatically.