def backends(childprocess): # the order is based on performance if platform_is_linux(): if use_x_display(): if childprocess: yield ScrotWrapper yield PilWrapper yield MssWrapper else: yield PilWrapper yield MssWrapper yield ScrotWrapper yield MaimWrapper yield ImagemagickWrapper yield Gdk3PixbufWrapper yield WxScreen for x in qt(): yield x yield GnomeDBusWrapper # on screen notification yield KwinDBusWrapper # flash effect yield GnomeScreenshotWrapper yield GrimWrapper elif platform_is_osx(): # first check for X if use_x_display(): pass else: # fast yield MssWrapper # latest version should work yield PilWrapper # alternatives for older pillow versions yield ScreencaptureWrapper yield MacQuartzWrapper # qt has some color difference # does not work: Gdk3, wx, Imagemagick elif platform_is_win(): # fast yield MssWrapper yield PilWrapper else: for x in backend_dict.values(): yield x
try: from Xlib import display except ImportError: display = None # https://github.com/python-xlib/python-xlib/blob/master/examples/xrandr.py#L44 def missing_RANDR(): if display: return False disp = display.Display() return not disp.has_extension("RANDR") ok = False if not six.PY2 and check_import("mss"): if platform_is_osx() and not use_x_display(): ok = True if platform_is_linux() and use_x_display(): ok = True if platform_is_win(): ok = True if ok: def test_mss(): if missing_RANDR(): try: backend_to_check("mss") except FailedBackendError: pass else:
from bt import backend_to_check, prog_check from pyscreenshot.util import use_x_display if use_x_display(): if prog_check(["maim", "--version"]): def test_maim(): backend_to_check("maim")
from bt import backend_to_check, prog_check from pyscreenshot.util import use_x_display if not use_x_display(): if prog_check(["grim", "-h"]): def test_grim(): backend_to_check("grim")