Skip to content

Commit

Permalink
Use gnome-screenshot on Linux if available
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Jun 12, 2022
1 parent c083ead commit a48d950
Showing 1 changed file with 16 additions and 5 deletions.
21 changes: 16 additions & 5 deletions src/PIL/ImageGrab.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,15 +15,14 @@
# See the README file for information on usage and redistribution.
#

import os
import shutil
import subprocess
import sys
import tempfile

from . import Image

if sys.platform == "darwin":
import os
import subprocess
import tempfile


def grab(bbox=None, include_layered_windows=False, all_screens=False, xdisplay=None):
if xdisplay is None:
Expand Down Expand Up @@ -62,6 +61,18 @@ def grab(bbox=None, include_layered_windows=False, all_screens=False, xdisplay=N
left, top, right, bottom = bbox
im = im.crop((left - x0, top - y0, right - x0, bottom - y0))
return im
elif not Image.core.HAVE_XCB and shutil.which("gnome-screenshot"):
fh, filepath = tempfile.mkstemp(".png")
os.close(fh)
subprocess.call(["gnome-screenshot", "-f", filepath])
im = Image.open(filepath)
im.load()
os.unlink(filepath)
if bbox:
im_cropped = im.crop(bbox)
im.close()
return im_cropped
return im
# use xdisplay=None for default display on non-win32/macOS systems
if not Image.core.HAVE_XCB:
raise OSError("Pillow was built without XCB support")
Expand Down

0 comments on commit a48d950

Please sign in to comment.