summaryrefslogtreecommitdiffstats
path: root/py3status/modules/screenshot.py
blob: 1f20478736eb4d08280dfb961a6409c5924a79a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# -*- 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 <py3status AT puzzledge.org>
"""
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)