为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
-
- 帖子: 3249
- 注册时间: 2008-10-28 20:18
为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
原载于full circle杂志第25期...<X下游戏大提速>...发现有很多人都需要,但是又没人转载于是...
首先,我们需要做的是让系统能够在现有的X服务下启动新的X服务(Ubuntu的默认设置是不会让我们这么做的),因此要对X服务的设置进行些改动,修改 /etc/X11/Xwrapper. config 文件,找到"allowed_users=console"字段,将其改为"allowed_users=anybody"保存改动(想要了解Xwrapper. config的信息可以使用 man Xwrapper. config 查阅).接下来重启X服务以使改动生效,再来我们要保证用wine运行的游戏使用全屏模式,我们可以在wine的配置程序的图形标签页里更改.下面我们就能够通过脚本来使自己想要玩的游戏在另一个X服务中运行了,脚本模板如下:
#! /bin/bash
X:2 -ac -terminate -config only_one_monitor.conf & sleep 2 DISPLAY=:2 nice -20 env WINEPREFIX="/home/{用户名}/.wine" wine "C: \Games\Starcraft\Starcraft.exe"
下面来解释一下脚本中命令语句的内容,这样大家可以根据自己的需要更改其中的内容:
X:2 -- 就是启动另一个X服务的命令
-ac -- (重要)禁用基于主机的访问机制(host-based access control mechanisms).如果不加此项就会造成严重的系统漏洞,使得任何主机都能访问你的电脑,并且可以修改你的电脑中的访问控制列表(access control list).造成后门和恶意入侵.
-terminate -- 在系统重启的时候终止X,不加的话会造成计算机无法正常重启或关机.
-config -- 告诉系统使用不同的配置来运行X服务,only_one_monitor.conf(用来使星际之类的游戏中的滚屏功能正常运作)当我们把鼠标移动到屏幕的边缘时,鼠标还是保持在显示器中,让 星际 滚屏,而不是跑到另一个显示器中去.更多的选项可以参阅 http://linux.die.net/man/1/xserver .
sleep 2 -- 让游戏程序等上2秒钟再运行,因为新的X服务需要一定的时间来启动和运行,具体延迟时间可以根据自己电脑的速度来更改.
DISPLAY=:2 -- 在新的X服务中运行下面的命令,而不是当前的.
nice -20 -- 以最高优先级来运行程序,如果游戏不过于缓慢的话可以不加
env WINEPREFIX="/home/{用户名}/.wine" wine "C: \Games\Starcraft\Starcraft.exe" -- wine运行游戏的命令,可以在wine的应用程序的菜单中的程序运行图标的属性里找到(前提是游戏必须是在wine下安装的).此处不限于使用wine运行的windows游戏,Linux原生的游戏也可以,只要你知道怎样用命令行运行那个程序就行.
做好脚本后,把它保存到需要的地方,然后给予此脚本运行的权限,以后我们要运行游戏只要双击此脚本然后在弹出的窗口中选择"运行"就行了
在游戏运行时想要切换回桌面只要按 Ctrl+Alt+F7 就行了,要回到游戏中再按 Ctrl+Alt+F9 ,顺便说下按 Ctrl+Alt+F8 的话会产生更多的X...建议大家Ctrl+Alt+F8 不要乱按.
首先,我们需要做的是让系统能够在现有的X服务下启动新的X服务(Ubuntu的默认设置是不会让我们这么做的),因此要对X服务的设置进行些改动,修改 /etc/X11/Xwrapper. config 文件,找到"allowed_users=console"字段,将其改为"allowed_users=anybody"保存改动(想要了解Xwrapper. config的信息可以使用 man Xwrapper. config 查阅).接下来重启X服务以使改动生效,再来我们要保证用wine运行的游戏使用全屏模式,我们可以在wine的配置程序的图形标签页里更改.下面我们就能够通过脚本来使自己想要玩的游戏在另一个X服务中运行了,脚本模板如下:
#! /bin/bash
X:2 -ac -terminate -config only_one_monitor.conf & sleep 2 DISPLAY=:2 nice -20 env WINEPREFIX="/home/{用户名}/.wine" wine "C: \Games\Starcraft\Starcraft.exe"
下面来解释一下脚本中命令语句的内容,这样大家可以根据自己的需要更改其中的内容:
X:2 -- 就是启动另一个X服务的命令
-ac -- (重要)禁用基于主机的访问机制(host-based access control mechanisms).如果不加此项就会造成严重的系统漏洞,使得任何主机都能访问你的电脑,并且可以修改你的电脑中的访问控制列表(access control list).造成后门和恶意入侵.
-terminate -- 在系统重启的时候终止X,不加的话会造成计算机无法正常重启或关机.
-config -- 告诉系统使用不同的配置来运行X服务,only_one_monitor.conf(用来使星际之类的游戏中的滚屏功能正常运作)当我们把鼠标移动到屏幕的边缘时,鼠标还是保持在显示器中,让 星际 滚屏,而不是跑到另一个显示器中去.更多的选项可以参阅 http://linux.die.net/man/1/xserver .
sleep 2 -- 让游戏程序等上2秒钟再运行,因为新的X服务需要一定的时间来启动和运行,具体延迟时间可以根据自己电脑的速度来更改.
DISPLAY=:2 -- 在新的X服务中运行下面的命令,而不是当前的.
nice -20 -- 以最高优先级来运行程序,如果游戏不过于缓慢的话可以不加
env WINEPREFIX="/home/{用户名}/.wine" wine "C: \Games\Starcraft\Starcraft.exe" -- wine运行游戏的命令,可以在wine的应用程序的菜单中的程序运行图标的属性里找到(前提是游戏必须是在wine下安装的).此处不限于使用wine运行的windows游戏,Linux原生的游戏也可以,只要你知道怎样用命令行运行那个程序就行.
做好脚本后,把它保存到需要的地方,然后给予此脚本运行的权限,以后我们要运行游戏只要双击此脚本然后在弹出的窗口中选择"运行"就行了
在游戏运行时想要切换回桌面只要按 Ctrl+Alt+F7 就行了,要回到游戏中再按 Ctrl+Alt+F9 ,顺便说下按 Ctrl+Alt+F8 的话会产生更多的X...建议大家Ctrl+Alt+F8 不要乱按.
- hjhee
- 帖子: 418
- 注册时间: 2008-03-08 8:07
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
哪里来的only_one_monitor.conf
我这里的分辨率是1440x900,但显示的是1024x768。一直都调不好。
我这里的分辨率是1440x900,但显示的是1024x768。一直都调不好。
-
- 帖子: 3249
- 注册时间: 2008-10-28 20:18
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
only_one_monitor.conf 是调用 /etc/X11/xorg.conf 所以如果你的 /etc/X11/xorg.conf 文件对于分辨率的参数不正确也会造成游戏分辨率不对
- 大宝
- 帖子: 3077
- 注册时间: 2008-06-30 22:32
- 联系:
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
收藏了,谢谢
回头试一下
回头试一下

- 20072312834
- 帖子: 277
- 注册时间: 2009-02-02 17:41
-
- 帖子: 5
- 注册时间: 2010-03-14 16:48
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
回头试试 谢啦~
-
- 帖子: 2
- 注册时间: 2006-10-23 23:36
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
good~ mark!
- rapistor
- 帖子: 1983
- 注册时间: 2009-01-19 15:09
- ooinzaghi
- 帖子: 1767
- 注册时间: 2010-11-18 15:55
- 系统: ubuntu16.04+win10
- 来自: Auir
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)



-
- 帖子: 547
- 注册时间: 2009-11-21 20:29
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
其实 有更简单的方法
按Ctrl+alt+F1
输入帐号密码登入后
打 startx -- :1
便开启了另一个 X window
按Ctrl+alt+F7、Ctrl+alt+F8切换
不要用时登出便回到tty
再打exit便登出tty
按Ctrl+alt+F1
输入帐号密码登入后
打 startx -- :1
便开启了另一个 X window
按Ctrl+alt+F7、Ctrl+alt+F8切换
不要用时登出便回到tty
再打exit便登出tty
-
- 帖子: 1340
- 注册时间: 2006-01-10 19:09
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
这个方法我以前一直用的 不错哈xenomorph0525 写了:其实 有更简单的方法
按Ctrl+alt+F1
输入帐号密码登入后
打 startx -- :1
便开启了另一个 X window
按Ctrl+alt+F7、Ctrl+alt+F8切换
不要用时登出便回到tty
再打exit便登出tty
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
手动怎么可能比脚本更简单哦。
只是这样的脚本,写得不通用。
常规,不调试的时候,用不上。
调试什么的时候,我用这个。当然不是用于游戏的
● cat bin/Xnew
#!/bin/bash
Xephyr -screen 800x700 :1 &
[ -z $1 ] && exit 0
sleep 4
$1 -display :1
只是这样的脚本,写得不通用。
常规,不调试的时候,用不上。
调试什么的时候,我用这个。当然不是用于游戏的
● cat bin/Xnew
#!/bin/bash
Xephyr -screen 800x700 :1 &
[ -z $1 ] && exit 0
sleep 4
$1 -display :1
● 鸣学
- eexpress
- 帖子: 58428
- 注册时间: 2005-08-14 21:55
- 来自: 长沙
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
手动怎么可能比脚本更简单哦。
只是这样的脚本,写得不通用。而且wine的,在宽屏下,光标的坐标会不对的。
常规,不调试的时候,用不上。
调试什么的时候,我用这个。当然不是用于游戏的
● cat bin/Xnew
#!/bin/bash
Xephyr -screen 800x700 :1 &
[ -z $1 ] && exit 0
sleep 4
$1 -display :1
只是这样的脚本,写得不通用。而且wine的,在宽屏下,光标的坐标会不对的。
常规,不调试的时候,用不上。
调试什么的时候,我用这个。当然不是用于游戏的
● cat bin/Xnew
#!/bin/bash
Xephyr -screen 800x700 :1 &
[ -z $1 ] && exit 0
sleep 4
$1 -display :1
● 鸣学
- tenzu
- 论坛版主
- 帖子: 36924
- 注册时间: 2008-11-21 20:26
- ooinzaghi
- 帖子: 1767
- 注册时间: 2010-11-18 15:55
- 系统: ubuntu16.04+win10
- 来自: Auir
Re: 为游戏新开X进程(解决Linux下全屏游戏时不能切回桌面)
wine程序按ctrl+alt+d就可以了。就是那些linux下原生的游戏全屏时没法最小化。