On Wed, Jul 14, 2004 at 11:06:53AM +0300, Peter Pentchev wrote: > On Wed, Jul 14, 2004 at 10:42:15AM +0300, [EMAIL PROTECTED] wrote: > > Искам да попитам в тази листа за следното. > > > > Пуснаш една games зала под Linux. > > > > Но ето какъв проблем имам. > > > > Някой игри сменят резолюцията на екрана. > > > > И ако по default са 1024x768 след излизането на някой игри е правят 640x480 > > > > Възможно ли е тя да се поднови на 1024x768 без да се рестартира X-са. [snip] > Иначе видеорежимът под X може да бъде променен с помощта на xvidtune, > ако X сървърът ти поддържа разширението XFree86-VidModeExtension. Това > можеш да разбереш лесно, като просто от X терминал или нещо такова > пуснеш 'xvidmode -show' - ако ти покаже нещо за текущия режим, значи
Уфффф.. разбира се, тук имах предвид 'xvidtune -show', не 'xvidmode'... > имаш необходимите разширения; 'xvidtune -prev' и 'xvidtune -next' би > трябвало да работят. За съжаление поне версията на xvidtune, която > ползвам в момента, не може да установи точно зададен видеорежим, а само > да смени с предишния или следващия (-prev или -next). За сметка на това > пък това може да бъде направено с просто shell-скриптче, което ще пратя > след минутка, като го довърша съвсем :) Него ще можеш да ползваш като > wrapper около играта: вместо да пускаш играта директно, пускаш това > скриптче, което запомня в какъв режим си, пуска играта, чака тя да > свърши, след което се опитва да възстанови видеорежима. Но това след > минутка :) А ето го и самото скриптче. Инсталация: install -c -o root -g root -m 755 restmode.sh /usr/X11R6/bin/restmode Ако си под FreeBSD като мен, или някое друго BSD, ще трябва да смениш '-g root' с '-g wheel', но под повечето Linux-и май групата си се казва 'root'. Начин на употреба: restmode firefox restmode frozenbubble restmode sopwith -c Т.е. просто пускаш restmode и му подаваш като параметри името на програмата и евентуално параметрите, които тя иска. Оттам нататък скриптчето си знае работата :) Ако X сървърът ти поддържа повече от 15 видеорежима, може да се наложи да промениш стойността на maxtries в началото на скрипта. В следващата версия, която вероятно ще се появи до час и ще съдържа README, manpage и Makefile за инсталация, най-вероятно ще добавя поддръжка на getopt, така че да може да задаваш maxtries на командния ред, но засега ще трябва така. Поздрави, Петър -- Peter Pentchev [EMAIL PROTECTED] [EMAIL PROTECTED] [EMAIL PROTECTED] PGP key: http://people.FreeBSD.org/~roam/roam.key.asc Key fingerprint FDBA FD79 C26F 3C51 C95E DF9E ED18 B68D 1619 4553 The rest of this sentence is written in Thailand, on
#!/bin/sh
#
# restmode - run a program, then restore the X video mode
#
# $Ringlet: sh/restmode/restmode.sh,v 1.1 2004/07/14 08:23:10 roam Exp $
##### USER-CONFIGURABLE PORTION
#
# maxtries - a number determining how many video modes to cycle through
# before giving up
# FIXME: this should be made a command-line option
maxtries=15
##### END OF USER-CONFIGURABLE SECTION
if [ $# = 0 ]; then
echo 'Usage: restmode program [args...]' 1>&2
exit 1
fi
curmode=`xvidtune -show`
if [ "$?" -ne 0 ]; then
echo 'Could not determine the current X video mode' 1>&2
exit 1
fi
echo "restmode: original X video mode line: $curmode"
echo "restmode: executing $@"
$@
echo "restmode: attempting to restore the video mode to $curmode"
i=0
while [ "$i" -lt "$maxtries" ] && ! [ "`xvidtune -show`" = "$curmode" ] ; do
echo "restmode: switching, current mode is `xvidtune -show`"
xvidtune -prev
i=`expr "$i" + 1`
done
pgpJsWFr5Y5MI.pgp
Description: PGP signature
