Sideband/sbapp/plyer/platforms/linux/screenshot.py

30 lines
823 B
Python

import subprocess
from os.path import join
from plyer.facades import Screenshot
from plyer.utils import whereis_exe
from plyer.platforms.linux.storagepath import LinuxStoragePath
class LinuxScreenshot(Screenshot):
def __init__(self, file_path=None):
default_path = join(
LinuxStoragePath().get_pictures_dir(),
'screenshot.xwd'
)
super().__init__(file_path or default_path)
def _capture(self):
# call xwd and redirect bytes from stdout to file
with open(self.file_path, 'wb') as fle:
subprocess.call([
# quiet, full screen root window
'xwd', '-silent', '-root',
], stdout=fle)
def instance():
if whereis_exe('xwd'):
return LinuxScreenshot()
else:
return Screenshot()