From 512a81012247882c3d059838cf90a520dfa7ae7f Mon Sep 17 00:00:00 2001 From: Filip Rojek Date: Thu, 17 Oct 2024 13:59:25 +0200 Subject: [PATCH] New post: how i fixed cs2 4:3 resolution --- content/posts/cs2_4-3_resolution.md | 66 +++++++++++++++++++++++++++++ sass/project.scss | 6 ++- templates/post.html | 1 + 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 content/posts/cs2_4-3_resolution.md diff --git a/content/posts/cs2_4-3_resolution.md b/content/posts/cs2_4-3_resolution.md new file mode 100644 index 0000000..433af99 --- /dev/null +++ b/content/posts/cs2_4-3_resolution.md @@ -0,0 +1,66 @@ ++++ +title = "Fixing 4:3 Resolution in CS2 on Linux with NVIDIA GPU" +date = 2024-10-17 +description = "How I fixed the 4:3 resolution in CS2 with an NVIDIA graphics card and Linux" ++++ + +I don't consider myself a gamer, but I've been playing the Counter-Strike series since CS 1.6. Every now and then, I enjoy staying up all night playing this broken game. + +Ever since I started playing Counter-Strike, I’ve preferred using a 4:3 stretched resolution on my 16:9 monitor. When I switched to Linux as my daily driver, the only game I really cared about was CS:GO. + +CS:GO ran perfectly without any tweaks on my [Void Linux](https://voidlinux.org) system with a 1050ti laptop graphics card. I could play with the stretched resolution, and I even got more FPS than I did on Windows. + +My problems started with the release of CS2. The 4:3 resolution didn’t work at all, some resolutions were missing, and there didn’t seem to be a solution (except for some Wayland fixes). There’s a [GitHub issue](https://github.com/ValveSoftware/csgo-osx-linux/issues/3264) about it. + +My first idea was to set a custom resolution through `xrandr`. I followed [guides like this one](https://unix.stackexchange.com/questions/227876/how-to-set-custom-resolution-using-xrandr-when-the-resolution-is-not-available-i), but that didn’t work for me. + +For a while, I just stuck with the standard 16:9 `1920x1080` resolution. But today, I opened the `nvidia-settings` GUI. After tinkering with some advanced settings in the resolution section, I think I finally fixed my issue. + +In the `X Server Display Configuration` section under advanced options, I adjusted the ViewPortIn and Panning settings. I’m currently using a `2560x1440` resolution, so for 4:3 stretched, I set the resolution to `1440x1080`. + +Here are the settings that worked for me: +- **ViewPortIn**: `1440x1080` +- **ViewPortOut**: `2560x1440+0+0` +- **Panning**: `1440x1080` + +That fixed the issue, but I didn’t want to manually open `nvidia-settings` every time I wanted to play CS2. After reading the [Arch Wiki article](https://wiki.archlinux.org/title/NVIDIA#Using_nvidia-settings) on `nvidia-settings`, I found that I could use this command to get the current resolution information: + +```sh +$ nvidia-settings -q CurrentMetaMode +``` + +So ~I wrote~ ChatGPT wrote a small bash script to switch between my regular resolution and the CS2 resolution. + +```bash +#!/bin/bash + +# Define the commands for the two modes +MODE1="nvidia-settings --assign 'CurrentMetaMode=DPY-4: 2560x1440_144 @2560x1440 +1920+0 {ViewPortIn=2560x1440, ViewPortOut=2560x1440+0+0}, DPY-3: nvidia-auto-select @1920x1080 +0+180 {ViewPortIn=1920x1080, ViewPortOut=1920x1080+0+0}'" +MODE2="nvidia-settings --assign 'CurrentMetaMode=DPY-4: 2560x1440_144 @1440x1080 +0+0 {ViewPortIn=1440x1080, ViewPortOut=2560x1440+0+0}'" + +# File to store the current mode +STATE_FILE="/tmp/current_resolution_mode" + +# Check if the state file exists +if [[ ! -f "$STATE_FILE" ]]; then + # If the state file doesn't exist, create it and set it to mode 1 + echo "1" > "$STATE_FILE" + CURRENT_MODE=1 +else + # Read the current mode from the state file + CURRENT_MODE=$(cat "$STATE_FILE") +fi + +# Switch between the two modes +if [[ "$CURRENT_MODE" -eq 1 ]]; then + # Switch to mode 2 + eval "$MODE2" + echo "2" > "$STATE_FILE" + echo "Switched to resolution mode 2" +else + # Switch to mode 1 + eval "$MODE1" + echo "1" > "$STATE_FILE" + echo "Switched to resolution mode 1" +fi +``` diff --git a/sass/project.scss b/sass/project.scss index d050718..e127696 100644 --- a/sass/project.scss +++ b/sass/project.scss @@ -1,4 +1,8 @@ -.language-yaml { +//.language-yaml { +pre { + display:flex; + align-items: center; + min-height: 3rem; white-space: pre-wrap; word-wrap: break-word; overflow-x: auto; diff --git a/templates/post.html b/templates/post.html index 7c3bff0..8e74b63 100644 --- a/templates/post.html +++ b/templates/post.html @@ -11,6 +11,7 @@ {% block content %}
+

{{ page.title }}