summaryrefslogtreecommitdiffstats
path: root/py3status
diff options
context:
space:
mode:
Diffstat (limited to 'py3status')
-rwxr-xr-xpy3status/modules/counter.py97
-rw-r--r--py3status/modules/screenshot.py75
2 files changed, 172 insertions, 0 deletions
diff --git a/py3status/modules/counter.py b/py3status/modules/counter.py
new file mode 100755
index 0000000..7606c32
--- /dev/null
+++ b/py3status/modules/counter.py
@@ -0,0 +1,97 @@
+# -*- coding: utf-8 -*-
+"""
+Display days/hours/minutes spent and calculated the price of your service for you
+
+Configuration parameters:
+ - config_file: file path to store the time already spent and restore it the next session.
+ - tax : tax value (1.02 = 2%)
+ - hour_price : your price per hour
+
+@author Amaury Brisou <py3status AT puzzledge.org>
+"""
+
+import time, os
+
+class Py3status:
+ cache_timeout = 5
+
+ start_time=time.time()
+ current_time=time.time()
+ saved_time = 0
+ diff_time = 0
+
+ config_file = "%s%s" % (os.environ['HOME'] , "/.i3/py3status/counter-config.save")
+ started = False
+ restarted = False
+
+ tax=1.02
+ hour_price=30
+ full_text=""
+
+ def __init__(self):
+ try:
+ with open(self.config_file) as file: # Use file to refer to the file object
+ self.saved_time = float(file.read())
+ except:
+ pass
+
+ def kill(self, i3s_output_list, i3s_config):
+ if self.started == True:
+ self.saved_time = self.current_time - self.start_time
+ with open(self.config_file, "w") as f:
+ f.write(str(self.saved_time))
+
+ def on_click(self, i3s_output_list, i3s_config, event):
+ if event['button'] == 1:
+ if self.started == True:
+ self.saved_time = time.time() - self.start_time
+ self.started = False
+ else:
+ self.start_time = time.time() - self.saved_time
+ self.started = True
+ elif event['button'] == 3:
+ self._reset()
+
+ def _reset(self):
+ self.saved_time = 0
+ with open(self.config_file, "w") as f:
+ f.write('0')
+
+
+ def counter(self, i3s_output_list, i3s_config):
+ if self.started:
+ self.current_time = time.time()
+ self.diff_time = time.gmtime(self.current_time - self.start_time)
+ cost = float(self.hour_price) * float(self.diff_time.tm_mday - 1) * 24 + float(self.hour_price) * float(self.diff_time.tm_hour) + float(self.diff_time.tm_min) * float(self.hour_price) / 60 + float(self.diff_time.tm_sec) * float(self.hour_price) / 3600
+ self.full_text = 'Time: %d day %d:%d Cost: %.2f$' % (self.diff_time.tm_mday - 1, self.diff_time.tm_hour , self.diff_time.tm_min, float(cost) * float(self.tax))
+ color = i3s_config['color_good']
+ else :
+ if self.full_text == "" :
+ if self.saved_time != 0 :
+ t = time.gmtime(self.saved_time)
+ cost = float(self.hour_price) * float(t.tm_mday - 1) * 24 + float(self.hour_price) * float(t.tm_hour) + float(t.tm_min) * float(self.hour_price) / 60 + float(t.tm_sec) * float(self.hour_price) / 3600
+ self.full_text = 'Time: %d day %d:%d Cost: %.2f$' % (t.tm_mday - 1, t.tm_hour, t.tm_min, float(cost) * float(self.tax))
+ else:
+ self.full_text = "Time: 0 day 0:0 Cost: 0$"
+
+ color= i3s_config['color_bad']
+
+ response = {
+ 'cached_until': time.time() + self.cache_timeout,
+ 'full_text': self.full_text,
+ 'color': color,
+ }
+ 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.counter([], config))
+ sleep(1) \ No newline at end of file
diff --git a/py3status/modules/screenshot.py b/py3status/modules/screenshot.py
new file mode 100644
index 0000000..1f20478
--- /dev/null
+++ b/py3status/modules/screenshot.py
@@ -0,0 +1,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) \ No newline at end of file