Created
May 16, 2013 04:25
-
-
Save atupal/5589406 to your computer and use it in GitHub Desktop.
打开一个新的X
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
#xinit appname -- :10 | |
# calculate first available VT | |
LVT=`fgconsole --next-available` | |
# calculate first usable display | |
XNUM="-1" | |
SOCK="something" | |
while [ ! -z "$SOCK" ] | |
do | |
XNUM=$(( $XNUM + 1 )) | |
SOCK=$(ls -A -1 /tmp/.X11-unix | grep "X$XNUM" ) | |
done | |
NEWDISP=":$XNUM" | |
if [ ! -z "$*" ] | |
# generate exec line if arguments are given | |
then | |
# test if executable exists | |
if [ ! -x "$(which $1 2> /dev/null)" ] | |
then | |
echo "$1: No such executable!" | |
# if running from X, display zenity dialog: | |
[ -z "$DISPLAY" ] || zenity --error --text="$1: No such executable!" 2> /dev/null | |
exit 127 | |
fi | |
# generate exec line | |
EXECL="$(which $1)" | |
shift 1 | |
EXECL="$EXECL $*" | |
EXECPH="" | |
# prepare to start new X sessions if no arguments passed | |
else | |
EXECL="" | |
EXECPH="New X session" | |
fi | |
# if runing from X, display zenity dialog: | |
[ -z "$DISPLAY" ] || zenity --question --title "Launch?" --text="Will launch \"$EXECL$EXECPH\" | |
tty$LVT | |
X display $NEWDISP | |
Continue?" 2> /dev/null || exit 1 | |
echo "Will launch \"$EXECL$EXECPH\" on tty$LVT, X display $NEWDISP..." | |
[ -z "$DISPLAY" ] && sleep 1s | |
# This flag is used for indication of unaccessible or broken DRI. | |
# It is set, for example, when using fglrx+compiz-manager. | |
# Some games will refuse to start if it is set. | |
# Unsetting it should not do any harm, and can be useful. | |
unset LIBGL_ALWAYS_INDIRECT | |
########################################################## | |
# main execution | |
xinit $EXECL -- $NEWDISP vt$LVT -nolisten tcp -br & | |
########################################################## | |
# set our new dislplay | |
DISPLAY=$NEWDISP | |
# wait some time for X to load | |
sleep 4s | |
# then we set useful parameters | |
# disable non-linear mouse acceleration | |
xset m 1 0 | |
# disable hard-coded default 10m screensaver | |
xset s 0 0 | |
# while X is running, persistently do something useful | |
# i.e. prevent apps from enabling mouse acceleration and screensaver | |
while xset -q > /dev/null | |
do | |
xset m 1 0 | |
xset s 0 0 | |
sleep 3s | |
done | |
wait | |
sleep 5 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment