-
Notifications
You must be signed in to change notification settings - Fork 0
/
indicator-github.py
95 lines (78 loc) · 2.65 KB
/
indicator-github.py
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/env python3
# -*-utf8-*-
import os
import gi
gi.require_version('AppIndicator3', '0.1')
from gi.repository import AppIndicator3
from gi.repository import Gtk, GObject
import requests
import webbrowser
def goto_github():
webbrowser.open_new('https://github.com/')
# menu items ###############
def add_separator(menu):
separator = Gtk.SeparatorMenuItem()
separator.show()
menu.append(separator)
def add_link(menu):
link = Gtk.MenuItem(label='View in Github')
# link.connect('activate', )
menu.append(link)
link.show()
def item_about(menu):
dialog = Gtk.AboutDialog.new()
dialog.set_program_name('Indicator Github')
dialog.set_version('v0.01')
dialog.set_comments('Simple notifier for Github')
dialog.set_authors(['alim0x'])
dialog.set_website('https://github.com/alim0x/indicator-github')
dialog.set_website_label('View in Github')
with open('LICENSE.txt', 'r') as f:
dialog.set_license(f.read())
dialog.show_all()
dialog.run()
dialog.destroy()
def item_quit(menu):
exit_item = Gtk.MenuItem('Quit')
exit_item.connect('activate', Gtk.main_quit)
menu.append(exit_item)
exit_item.show()
# check notifications ###############
def notify():
with open(os.path.abspath('.') + '/token', 'r') as f:
token = f.read()
token = token[:40]
if len(token) != 40:
indicator.set_label(' Token Err', '100% thrust')
else:
try:
msg = requests.get('https://api.github.com/notifications?access_token=' + token)
msg = msg.json()
if 'message' in msg:
indicator.set_label(msg.get('message'), '100% thrust')
else:
indicator.set_label(' '+str(len(msg))+' ', '100% thrust')
except requests.exceptions.ConnectionError:
indicator.set_label(' Offline', '100% thrust')
return True
if __name__ == '__main__':
# set indicator
indicator = AppIndicator3.Indicator.new('Github Notifier', 'github', 0)
indicator.set_icon_theme_path(os.path.abspath('.'))
indicator.set_icon('github')
indicator.set_label('Test', '100% thrust')
indicator.set_status(1)
# set menu
menu = Gtk.Menu()
add_link(menu)
menu.append(Gtk.SeparatorMenuItem.new())
menu_item = Gtk.MenuItem.new_with_label('About...')
menu_item.connect('activate', item_about)
menu.append(menu_item)
menu.append(Gtk.SeparatorMenuItem.new())
item_quit(menu)
menu.show_all()
indicator.set_menu(menu)
notify()
GObject.timeout_add(120*1000, notify) # check notification every 2 mins
Gtk.main()