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

42 lines
1.0 KiB
Python

import logging
import os
from easyprocess import EasyProcess
from PIL import Image
from pyscreenshot.plugins.backend import CBackend
from pyscreenshot.tempexport import RunProgError
log = logging.getLogger(__name__)
PROGRAM = "ksnip"
class KsnipWrapper(CBackend):
name = "ksnip"
is_subprocess = True
def grab(self, bbox=None):
cmd = [PROGRAM, "--fullscreen", "--save"]
p = EasyProcess(cmd)
p.call()
if p.return_code != 0:
raise RunProgError(p.stderr)
lastline = p.stdout.splitlines()[-1]
if "Image Saved" not in lastline:
raise RunProgError(p.stderr)
filename = lastline.split()[-1]
im = Image.open(filename)
os.remove(filename)
# TODO: bbox param
if bbox:
im = im.crop(bbox)
return im
def backend_version(self):
for line in EasyProcess([PROGRAM, "--version"]).call().stderr.splitlines():
if "version" in line.lower():
return line.split()[-1]