# -*- coding: utf-8 -*- """ Display a 'SHOT' button in your i3bar allowing you to take screenshot and directly send (if wanted) the file to your online server, as long the screenshot has been taken, 'SHOT' is replaced by the file_name generated Configuration parameters: - save_path: Directory where to store your screenshots. - file_length: generated file_name length - push: True/False if yo want to push your screenshot to your server - upload_server: your server address - upload_path: the remote path where to push the screenshot - upload_user: your ssh user @author Amaury Brisou """ import time, os, string, random, subprocess class Py3status: cache_timeout = 5 save_path = "%s%s" % (os.environ['HOME'] , "/Pictures/") file_length = 4 upload_path = "/files" upload_server = 'puzzledge.org' upload_user = 'erol' push = True full_text = "" def __init__(self): pass def kill(self, i3s_output_list, i3s_config): pass def on_click(self, i3s_output_list, i3s_config, event): file_name = self._filename_generator(self.file_length) command = "%s %s/%s%s" % ('gnome-screenshot -f', self.save_path, file_name, '.jpg') subprocess.Popen(command.split()) self.full_text = "%s%s" % (file_name, '.jpg') if self.push and self.upload_server and self.upload_user and self.upload_path: command = "scp %s/%s%s %s@%s:%s" % (self.save_path, file_name, '.jpg', self.upload_user, self.upload_server, self.upload_path) subprocess.Popen(command.split()) def _filename_generator(self, size=6, chars=string.ascii_lowercase + string.digits): return ''.join(random.choice(chars) for _ in range(size)) def screenshot(self, i3s_output_list, i3s_config): if self.full_text == "": self.full_text = "SHOT" response = { 'cached_until': time.time() + self.cache_timeout, 'full_text': self.full_text, 'color': i3s_config['color_good'], } return response if __name__ == "__main__": from time import sleep x = Py3status() config = { 'color_bad': '#FF0000', 'color_degraded': '#FFFF00', 'color_good': '#00FF00', } while True: print(x.screenshot([], config)) sleep(1)