17
17
import qubesadmin .events
18
18
import qui .utils
19
19
from qubesadmin import exc
20
+ from qubes_config .widgets .utils import open_url_in_disposable
20
21
21
22
import gi # isort:skip
22
23
23
24
gi .require_version ("Gtk" , "3.0" ) # isort:skip
24
- from gi .repository import Gtk , Gio # isort:skip
25
+ from gi .repository import Gtk , Gio , GLib # isort:skip
25
26
26
27
import gbulb
27
28
@@ -89,15 +90,38 @@ def __init__(self, app_name, qapp, dispatcher):
89
90
self .tray_menu = Gtk .Menu ()
90
91
self .fullscreen_window_hack .show_for_widget (self .tray_menu )
91
92
93
+ # For those who never restart their PC, update EOL notifs every 6 hours
94
+ GLib .timeout_add_seconds (3600 * 6 , self .check_vms_needing_update )
95
+
92
96
def run (self ): # pylint: disable=arguments-differ
93
97
self .check_vms_needing_update ()
94
98
self .connect_events ()
95
99
96
100
self .update_indicator_state ()
97
101
102
+ def obsolete_dom0 (self , _event ):
103
+ open_url_in_disposable (
104
+ "https://www.qubes-os.org/doc/supported-releases/" ,
105
+ self .qapp ,
106
+ )
107
+
98
108
def setup_menu (self ):
99
109
self .tray_menu .set_reserve_toggle_size (False )
100
110
111
+ if "dom0" in self .obsolete_vms :
112
+ self .tray_menu .append (
113
+ RunItem (
114
+ _ (
115
+ '<span foreground="red"><b>'
116
+ "Warning! "
117
+ "This release of Qubes OS is no longer supported!"
118
+ "</b></span>\n "
119
+ "<b>See officially supported releases</b>"
120
+ ),
121
+ self .obsolete_dom0 ,
122
+ )
123
+ )
124
+
101
125
if self .vms_needing_update :
102
126
self .tray_menu .append (TextItem (_ ("<b>Qube updates available!</b>" )))
103
127
self .tray_menu .append (
@@ -110,7 +134,7 @@ def setup_menu(self):
110
134
)
111
135
)
112
136
113
- if self .obsolete_vms :
137
+ if self .obsolete_vms and self . obsolete_vms != { "dom0" } :
114
138
self .tray_menu .append (
115
139
TextItem (_ ("<b>Some qubes are no longer supported!</b>" ))
116
140
)
@@ -156,6 +180,7 @@ def check_vms_needing_update(self):
156
180
self .vms_needing_update .add (vm )
157
181
if not supported :
158
182
self .obsolete_vms .add (vm .name )
183
+ return True
159
184
160
185
def connect_events (self ):
161
186
self .dispatcher .add_handler (
@@ -224,6 +249,8 @@ def feature_change(self, vm, event, feature, **_kwargs):
224
249
self .update_indicator_state ()
225
250
226
251
def update_indicator_state (self ):
252
+ if "dom0" in self .obsolete_vms :
253
+ self .widget_icon .set_from_icon_name ("qui-red-warn" )
227
254
if self .vms_needing_update or self .obsolete_vms :
228
255
self .widget_icon .set_visible (True )
229
256
else :
0 commit comments