Pozastavení Xfce během hraní her

Pozastavení Xfce během hraní her
« kdy: 23. 03. 2011, 17:46:57 »
Window manager (Xfce 4.8 ) je pocas hrania fullscreen hry vlastne zbytocny. Je mozne ho po dobu hrania takej hry pozastavit? Navadilo by mi ani kedy som musel nieco taketo: prikaz_pre_pozastavenie; hra; prikaz_pre_spustenie zadavat do terminalu. Dakujem za odpovede!
« Poslední změna: 23. 03. 2011, 19:55:48 od Michal Štrba »


Re: Pozastavení Xfce během hraní her
« Odpověď #1 kdy: 26. 03. 2011, 14:11:46 »
Tak som to vyriesil tymto skriptom:

#!/usr/bin/env python3

"""pause_xfce.py:
   Pozastavi alebo znova spusti tieto procesy:
      xfce4-session
      xfce4-panel
      xfdesktop
      xfwm4
   Pozastavi ich pri zadanom parametri "-p" alebo "--pause".
   Spusti pri parametri "-c" alebo "--cont" alebo "--continue"
   Pomoc sa zobrazi pri parametri "-h" alebo "--help"
"""

import re, sys, subprocess

# regularny vyraz pre najdenie pidu procesu
find_proc_re = re.compile(r"""
   ^(?:\S+\s+)               # prva zlozka prikazu "ps aux" (vlastnik)
   (?P<pid>\d+)            # druha zlozka (pid) je zachytena
   \s+(?:\S+\s+){8}         # ostatne zlozky vystupu
   (?P<command>\S+)         # zachyteny prikaz orezany od parametrov
   """, re.MULTILINE | re.VERBOSE)

# zoznam procesov pre pozastavenie alebo spustenie
process_list = {"xfce4-session": None,
            "xfce4-panel": None,
            "xfdesktop": None,
            "xfwm4": None}

# informacie o vsetkych procesoch ziskane pomocou prikazu "$ ps aux"
ps_aux = subprocess.getoutput("ps aux")

# vyhladanie pid jednotlivych procesov
for key in process_list.keys():
   for match in find_proc_re.finditer(ps_aux):
      if match.group("command") == key:
         process_list[key] = match.group("pid")

# spracovanie parametrov
if len(sys.argv) != 2 or sys.argv[1] in ("-h", "--help"):
   # ziskanie pomoci
   print("pause_xfce.py argument\n"
        "-h or --help                   Show this help\n"
        "-p or --pause                  Pause Xfce processes\n"
        "-c or --cont or --continue     Continue Xfce processes")
elif sys.argv[1] in ("-p", "--pause"):
   # pozastavenie procesov Xfce
   for key in process_list.keys():
      if process_list[key] != None:
         # pozastavenie procesu
         subprocess.call(["kill", "-STOP", process_list[key]])
         print("Process '{}' was stopped".format(key))
      else:
         print("Process '{}' isn't running".format(key))
elif sys.argv[1] in ("-c", "--cont", "--continue"):
   for key in process_list.keys():
      if process_list[key] != None:
         # spustenie procesu
         subprocess.call(["kill", "-CONT", process_list[key]])
         print("Process '{}' was continued".format(key))
      else:
         print("Process '{}' isn't running".format(key))
else:
   print("Invalid argument: {}".format(sys.argv[1]))