Līdzīga situācija pāris dienas atpakaļ gadījās man pašam, kad izdomāju uzspēlēt Assault Cube šūteri uz sava septītā Mint’a. Respektīvi, spēle pēc nospēlētām 10-15 minūtēm vienkārši pārslēdzas uz windowed mode un iefrīzo – taustiņi un pele nereaģē, atliek vai nu restarts vai arī iepriekš minētā kombinācija, lai piekļūtu pie termināļa.
Kur tad ir problēma? Problēma visbiežāk slēpjas lietā ar vārdu Compiz, kurš nodrošina logu sistēmu un grafiskās vides animēšanas efektus, kā, piemēram, maksimizēšanas-minimizēšanas efektu, dekstopa 3D kubu un citus grafiskos efektus. Bet – tas konfliktē ar OpenGL.
Tātad, ideja itkā šķietami ir pavisam vienkārša – atslēdzam Compiz uz to laiku, kamēr spēlējam spēli un viss ies, vai ne? Jautājums tikai viens – kā maksimāli ērti un vienkārši to izdarīt? Nejau taisot multiple skriptus vai rakstot garas un daudz komandrindas terminālī, lai panāktu vajadzīgo efektu.
Pameklējot internetā, uzgāju interesantu skriptu, kurš izdarīs visu nepieciešamo. Vispirms atveram gedit vai jebkuru citu teksta redaktoru un iekopējam sekojošo skriptu:
#!/bin/bash
#################################
## Compiz exit program ##
## for hungry applications and ##
## games. ##
#################################
## Replace compiz with the lesser
## resource-hungry metacity
metacity –replace &>/dev/null &
## Start application
$@
## Start compiz again
compiz –replace &>/dev/null &
Tad saglabājam izveidoto failu /usr/bin/ mapē, nosaucot to “gamestart.sh” (bez pēdiņām). Atcerieties, ka, lai saglabātu failu šajā mapē, Jums ir jābūt root tiesībām.
Tad atveram termināli, ierakstam sekojošo rindiņu, kas izveidos failu “palaižamu” (executable):
sudo chmod +x /usr/bin/gamestart.sh
Lai būtu vieglāk palaist, izveidojam simlinku:
sudo ln -s /usr/bin/gamestart.sh /usr/bin/gamestart
Tagad viss ir gatavs, palaižot spēli tikai atliek sākumā terminālī pierakstīt vārdu “gamestart”. Piemēram, ja spēle saucās “gameland”, tad terminālī rakstīsim:
gamestart gameland
Š is universālais skripts darbosies jebkurai spēlei, tas atslēgs Compiz tik ilgi, kamēr spēles process būs palaists, to apstādinot (izejot no spēles), Compiz tiks ieslēgts atpakaļ. Ceru, ka kādam noderēs un veiksmīgu spēlēšanu!
Preses relīzes