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

Attachment: pgpJsWFr5Y5MI.pgp
Description: PGP signature

  • lu... linux
    • ... linux
      • ... George Vamporov
    • ... Peter Pentchev
      • ... Peter Pentchev
        • ... linux
          • ... Peter Pentchev
            • ... linux
              • ... Peter Pentchev
                • ... Peter Pentchev
                • ... linux
            • ... G. Goergiev
              • ... Viktor Vasilev
                • ... Огнян Кулев
                • ... Viktor Vasilev

Reply via email to