diff options
| author | erol <amaury.brisou@gmail.com> | 2015-04-03 02:58:52 +0200 |
|---|---|---|
| committer | erol <amaury.brisou@gmail.com> | 2015-04-03 02:58:52 +0200 |
| commit | c794282facec666db6cff0c599a23b2b9ab89dcc (patch) | |
| tree | da07c0ba47bc78fd9b81f8a34d468f136eae0c2d /py3status/modules | |
| parent | a199d9624b56a508e362eadfc642dbbf07606412 (diff) | |
Amaury Brisou :
I have added two modules, counter.py and screenshot.py, read their descriptions to figure out what they do.
Basically:
* Counter count the time and calculate the service price according to taxes and price per hour configured
* Screenshot takes screenshot (depends on gnome-screenshot, can be modified at will) and is able to upload the screenshot to a remote server via ssh
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Your branch is up-to-date with 'origin/master'.
#
# Changes to be committed:
# new file: py3status/modules/counter.py
# new file: py3status/modules/screenshot.py
#
Diffstat (limited to 'py3status/modules')
| -rwxr-xr-x | py3status/modules/counter.py | 97 | ||||
| -rw-r--r-- | py3status/modules/screenshot.py | 75 |
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 |
