Понедельник, 30.06.2025, 00:17
Приветствую Вас Гость | RSS
UBUNTOLOG
Главная | Каталог статей | Регистрация | Вход
Форма входа

Меню сайта
Категории раздела
Server [44]
WEB [14]
Все что связанно с web технологиями
Desktop [11]
Все что связанно с рабочей станцией
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Главная » Статьи » Desktop

    Запуск игр в новой X-сессии
    Так вот, более менее решил собрать в одном месте то, что знаю по запуску игр в Linux. Один из важных моментов, который часто хочется легко осуществлять - запуск игры в отдельных иксах. Это бывает очень удобно. Легко вернуться в рабочие иксы и продолжить работу или ответить в jabber/icq, не проблема, если зависнут иксы с игрой, да и бывает что глюки всякие всплываю, чего не наблюдается в чистых иксах. Ещё мне жутко не нравится, когда колбасит панель и хлам на раб столе из-за смены разрешения.

     

    В общем, мотивация ясна, но как же это сделать просто, чтобы оно стоило того? Как-то на просторах Интернет попался простенький скрипт на Python. Простенький и достаточно гениальный. Всё, что требуется теперь, что написать:

     

    $ game ЧТО_ВЫПОЛНИТЬ
    где game - название скрипта, а за ним следует то, что нужно запускать в отдельных иксах. Скажем:

     

    $ game wine heroes3.exe

    Вот код скрипта game:

    #!/usr/bin/python
    import os, sys, time, signal
    XORG_DELAY = 0
    if len(sys.argv) == 1 or (len(sys.argv)==2 and sys.argv[1].startswith('-x:')):
    print >>sys.stderr, "Usage: %s [-x:id] app [args]" % sys.argv[0]
    sys.exit(2)
    if sys.argv[1].startswith('-x:'):
    xid = int(sys.argv[1].split(':')[1])
    argv = sys.argv[2:]
    else:
    xid = 1
    argv = sys.argv[1:]
    pid = os.fork()
    if pid == 0:
    # Xorg child
    print " * Staring X11 on :%d" % xid
    sys.stdin.close()
    sys.stdout.close()
    sys.stderr.close()
    os.execvp('Xorg', ['/usr/bin/Xorg', ':%d' % xid])
    else:
    print " * Waiting for X11 to finish starting (%d seconds)" % XORG_DELAY
    time.sleep(XORG_DELAY)
    cmd = 'env DISPLAY=":' + str(xid) + '" ' + ' '.join(argv)
    print " * Starting %s" % cmd
    os.system(cmd)
    print " * Application done, terminating spawned X11"
    os.kill(pid, signal.SIGTERM)
    os.wait()
    Что он делает? Открывает Х-сессию (номер которой можно задавать через -x:№), выжидает время, указанное в XORG_DELAY (в оригинальном скрипте стояло 8 секунда!! Зачем??) и запускает то, что передаётся ему в виде параметров. Если ничего не запускается или игра при запуске падает, то и иксы тут же захлопываются. Выходите вы из игры и иксы сами завершают свою работу. Довольно удобно!

     

    Для работы скрипта потребовалось сделать:

    $ sudo chmod +s /usr/bin/Xorg

    И так после кажого обновления иксов.

    Категория: Desktop | Добавил: Vyacheslav (11.01.2011)
    Просмотров: 1992 | Комментарии: 1 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Copyright VR © 2025
    Сделать бесплатный сайт с uCoz