지피지기 백전백퇴

Wayland에서 사용하는 게임 관련 설정들


사건 1: Wayland는 게임이 백그라운드로 가면 CPU를 아주 적게 할당하는 듯 하다

어디의 문제도 아니지만, Wayland에서 게임을 돌리다가 잠깐 딴짓을 하려고 윈도우를 옮기면, 백그라운드에서는 게임이 아주 느리게 돌아가게 된다. 아마도 백그라운드 프로세스에 불필요한 낭비를 하지 않는 과정에서 의도치않게 그리 되는 듯 한데, 내 입장에선 백그라운드에서 조금이라도 스토리 자동진행이 되었으면 하는 바람이라, 굳이 Wayland를 쓰지 않고 XWin을 설정해서 해결했었다.

사건 2: tuigreet을 수정해서 세션 선택 단축키를 추가하자

F8/F9키를 누르면 바로 Hyprland와 awesomewm이 선택될 수 있도록, 가벼운 tuigreet을 부팅 프롬프트로 사용하고 코드를 수정해서 F8/F9 단축키를 등록해서 썼었다.

해당 코드는 여기에 있으니 참고하시고…

사건 3: gamescope를 써도 될 것 같은데

그러다가 우연히 gamescope를 발견했는데, 이걸 쓰면 게임이 백그라운드로 가도 느려지지 않을 것 같은 느낌적 느낌이 들었다.

대충 설정은 다음과 같이 했다.

gamescope --force-grab-cursor -- ./game-launcher.sh

force-grab-cursor 옵션을 주지 않으면 게임 내 주변 둘러보기가 안되더라.

사건 4: 앗, gamescope와 함께하니 hyprctl이 똑똑해졌어요

일전에 만들었던 자동 F키 스크립트가 이론상 게임 프로세스에만 F키를 보내야 하는데, 내가 작업중인 창에도 F키를 보내는 문제가 종종 있었다. 어지간해선 괜찮은데, 타자를 막 치고있거나 스크롤 중일때 뚝뚝 끊기는 문제가 있어서 봉인하고 있었는데, gamescope를 적용한 이후로 해결이 되었다. 다만 창을 찾는 코드를 살짝 변경할 필요가 있다. (gamescope를 여러개 띄우면 모두 class가 gamescope이기 때문에, 창 title로 검색하는게 낫다)

while true; do for addr in $(hyprctl clients -j | jq -r '.[] | select(.title == "바로그게임") | .address'); do echo $addr; sleep 0.$((RANDOM % 5 + 4)); hyprctl dispatch sendshortcut ", F, address:$addr" ; done; done