31 lines
723 B
Python
31 lines
723 B
Python
"""Call external commands."""
|
|
|
|
import curses
|
|
import logging
|
|
import subprocess
|
|
|
|
|
|
def open_external_program(command):
|
|
"""Call command as a subprocess, suspending curses rendering.
|
|
|
|
The caller has to refresh whatever windows it manages after calling this
|
|
method or garbage may be left on the screen.
|
|
|
|
Returns:
|
|
True if no exception occured.
|
|
"""
|
|
curses.nocbreak()
|
|
curses.echo()
|
|
curses.curs_set(1)
|
|
result = True
|
|
try:
|
|
subprocess.run(command)
|
|
except OSError as exc:
|
|
logging.error(f"Failed to run '{command}': {exc}")
|
|
result = False
|
|
curses.mousemask(curses.ALL_MOUSE_EVENTS)
|
|
curses.curs_set(0)
|
|
curses.noecho()
|
|
curses.cbreak()
|
|
return result
|