ubuntuusers.de

Eigener XServer für Spiele

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Ziel dieses Artikels ist es, beliebigen Spielen, die im Vollbildmodus laufen, einen eigenen dedizierten XServer zuzuweisen, um so Probleme mit Desktop-Einstellungen (wie Auflösung und Gamma-Korrektur) und Hotkey-Konflikte zwischen Fenstermanager und Spiel zu vermeiden. Um dies zu erreichen, wird ein alternatives Startskript benutzt, wodurch weder im System noch am verwendeten Spiel ernsthafte Änderungen vorgenommen werden.

Zum Prinzip

Normalerweise werden Spiele entweder in einem Fenster ausgeführt oder sie überlagern im Vollbildmodus den kompletten Desktop. Oftmals wird dabei auch die Auflösung des Desktops und diverse Farbeinstellungen geändert, sodass sie den im Spiel eingestellten entsprechen. Stürzt nun das Spiel unerwartet ab findet man sich oft genug auf einem winzigen 800x600 Desktop mit verdrehten Farben und falscher Helligkeitseinstellung.

Ein weiterer Nachteil ist die ständige Unterbrechung des Spiels von Programmen, die Popups produzieren (allen voran die Instant-Messenger). Das ist im besten Fall nervig und im schlimmsten Fall bringt es das Spiel zum Absturz.

Da standardmäßig mehrere XServer gestartet werden können (nicht zu verwechseln mit mehreren Desktops!) startet man das Spiel einfach in einem zweiten XServer auf dem die Software komplett einsam laufen kann. Das ist ungefähr so, wie zwei virtuelle Textkonsolen zu benutzen, zwischen denen man mit Strg + Alt + F1 bis Strg + Alt + F6 hin und her schaltet, nur eben grafisch. Während der Desktop völlig unbehelligt weiterhin mit Strg + Alt + F7 (je nach Konfiguration) zu erreichen ist startet ein neuer XServer auf der nächsten freien Konsole und kann mit Strg + Alt + F8 aufgerufen werden. Spiel und Desktop können parallel existieren und es gibt keine Konflikte mehr.

Hinweis:

Aufgrund eines Bugs {en} kann es sein, dass tty8 durch den Bootsplash blockiert ist. In diesem Fall ist der zweite XServer durch das Tastenkürzel Strg + Alt + F9 erreichbar.

Wenn noch weitere XServer gestartet werden, sind diese über Strg + Alt + F9 - F12 erreichbar.

Installation

Zusätzliche Pakete werden eigentlich keine benötigt. Es wird davon ausgegangen, dass man bereits stolzer Besitzer eines wohlkonfigurierten und funktionstüchtigen XServers ist. Außerdem sollte das Spiel der Wahl schon installiert sein. Weiß man dann auch noch den richtigen Pfad zum Starter des Spiels, kann es losgehen mit dem Schreiben des alternativen Startskriptes.

Startskript

Als Beispiel wird das Spiel World of Padman verwendet. Es kann jedes beliebige andere Spiel eingesetzt werden. Lediglich die Namen und Pfade ändern sich. Die neuen Skripte kann man mit einem x kennzeichnen. Folgender Inhalt wird mit dem Editor mit Root-Rechten [2] in die neu zu erstellende Datei /usr/local/bin/xwop geschrieben:

1
2
#!/bin/bash
xinit /home/user/WoP/WoP "$@" -- :1

Kurz aber effektiv wird mit dem Befehl xinit ein neuer XServer erzeugt, der auf dem Display 1 läuft. Wie (fast) immer wird von 0 an gezählt, d.h., dass auf Display 0 in der Regel der erste XServer mit der Desktopumgebung läuft. xinit startet das übergebene Programm im zweiten XServer. Das "$@" sorgt dafür, dass eventuell übergebene Startoptionen für das Spiel auch tatsächlich an dieses übergeben werden. Damit das auch alles überhaupt laufen kann, muss das Skript noch mit einem

sudo chmod +x /usr/local/bin/xwop 

ausführbar gemacht werden.

Alternativ kann man einen XServer mit Terminal durch folgendes Skript starten lassen. Das kann nützlich sein, wenn man mit Emulatoren wie Cedega arbeitet. Man erhält so eine bessere Übersicht über seine Spiele. Man kann mit Hilfe des -geometry-Parameters auch dafür sorgen, dass das xterm-Fenster größer ist als normalerweise.

1
2
#!/bin/bash
xinit /usr/bin/xterm -- :1       # Alternative (180 Spalten, 70 Zeilen): xinit /usr/bin/xterm -geometry 180x70 -- :1

Hinweis:

Wenn der erste XServer beim "zurück-wechseln" nur noch einen schwarzen Bildschirm ausgibt, sollte man Compiz deaktivieren.

Jetzt kann man sich mit Strg + Alt + F1 in ein virtuelles Terminal einloggen und dort

xwop 

eingeben. Das Spiel wird nun auf einem zweiten Xserver, der mittels Strg + Alt + F8 erreichbar ist, gestartet. Nun kann man versuchen, mit Strg + Alt + F7 wieder zum Desktop zurückzuwechseln und kontrollieren, ob noch alles in Ordnung ist. Der zweite XServer kann, wenn nötig, mittels Strg + C im virtuellen Terminal beendet werden.

Eigene xorg.conf

Benötigt ein Spiel besondere Einstellungen kann der XServer mit einer eigenen Konfigurationsdatei gestartet werden. Hier zuerst die Basisdaten kopieren [1]

sudo cp /etc/X11/xorg.conf /etc/X11/xorg-games.conf 

und dann die Datei xorg-games.conf, im Ordner /etc/X11, mit Root-Rechten in einem Editor [2] bearbeiten. Eine gute Anleitung zu den Möglichkeiten ist im Wiki zu finden: xorg.conf

Um den XServer mit der xorg-games.conf zu starten, muss lediglich die entsprechende Option mitgegeben werden:

1
2
#!/bin/bash
xinit /home/user/WoP/WoP "$@" -- :1 -config xorg-games.conf

Hat man mehrere Bildschirme im Einsatz, kann es vorkommen, dass Vollbildanwendungen nicht richtig dargestellt werden. In diesem Fall bietet sich es an, eine eigene xorg.conf zu verwenden. Diese verändert man so, dass alle Einträge, die zum Verwenden mehrerer Bildschirme nötig sind, gelöscht werden.

XServer über die grafische Oberfläche starten

Achtung!

Dadurch, dass man das Starten eines XServers generell ohne Rootrechte zulässt, kann eine Sicherheitslücke entstehen!

So könnte eine Webseite, die man mit einem Webbrowser besucht, eine aktuelle Sicherheitslücke (Exploit) im Browser ausnutzen und theoretisch die Möglichkeit erlangen, einen zweiten XServer zu starten.

Nach der oben beschriebenen Methode kann jeder Benutzer, der sich in einem virtuellen Terminal einloggt, einen XServer starten. In der grafischen Oberfläche darf jedoch nur Root einen neuen XServer starten. Es ist jedoch auch hier möglich, den XServer ohne Root-Rechte zu starten.

Dazu muss man lediglich die Datei /etc/X11/Xwrapper.config mit Root-Rechten in einem Editor bearbeiten [2]. Man setzt die Option allowed_users auf anybody. (Siehe auch die Manpage zu Xwrapper.config.)

In Verbindung mit dem oben beschriebenen #Startskript:Startskript und einem Starter auf dem Desktop, in einem Menü oder in einem Panel kann das Spiel (ohne den Umweg über ein Terminal und Eingabe eines Befehls!) direkt von der grafischen Oberfläche aus gestartet werden.

Hinweis:

Es ist jedoch auch meist nicht sinnvoll, den XServer (genauer: xinit) mit Root-Rechten zu starten:

Wenn man xinit mit Root-Rechten startet, dann läuft auch das Spiel (oder andere Programm, das man xinit als ersten Parameter übergibt) mit Root-Rechten! Man sollte also xinit nie als Root starten, wenn man sich nicht genau sicher ist, was man tut!

Problembehebung

Kein Sound

Es kann vorkommen, dass vom Spiel kein Sound kommt, wenn es auf einem neuen XServer ohne Root-Rechte gestartet wird. Dann sollte man die Berechtigungen überprüfen, und seinen Benutzer der Gruppe audio hinzufügen [3] ("Audio-Geräte verwenden")

Diese Revision wurde am 11. April 2012 03:15 von Kuttel Daddeldu erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Desktop, Spiele

Passwort vergessen?