screenshare/venv/lib/python3.12/site-packages/pyscreenshot/plugins/mac_screencapture.py
2024-11-29 18:15:30 +00:00

39 lines
1.1 KiB
Python

from easyprocess import EasyProcess
from pyscreenshot.plugins.backend import UNKNOWN_VERSION, CBackend
from pyscreenshot.tempexport import read_prog_img
from pyscreenshot.util import platform_is_osx
PROGRAM = "screencapture"
# https://ss64.com/osx/screencapture.html
# By default screenshots are saved as .png files,
class ScreencaptureError(Exception):
pass
class ScreencaptureWrapper(CBackend):
name = "mac_screencapture"
is_subprocess = True
def grab(self, bbox=None):
if not platform_is_osx():
raise ScreencaptureError("This backend runs only on Darwin")
command = [PROGRAM, "-x"]
if bbox:
width = bbox[2] - bbox[0]
height = bbox[3] - bbox[1]
command += ["-R{},{},{},{}".format(bbox[0], bbox[1], width, height)]
im = read_prog_img(command)
return im
def backend_version(self):
p = EasyProcess([PROGRAM, "-help"])
p.enable_stdout_log = False
p.enable_stderr_log = False
p.call()
if p.return_code == 0:
return UNKNOWN_VERSION