1717import qubesadmin .events
1818import qui .utils
1919from qubesadmin import exc
20+ from qubes_config .widgets .utils import open_url_in_disposable
2021
2122import gi # isort:skip
2223
2324gi .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
2526
2627try :
2728 from gi .events import GLibEventLoopPolicy
@@ -94,15 +95,38 @@ def __init__(self, app_name, qapp, dispatcher):
9495 self .tray_menu = Gtk .Menu ()
9596 self .fullscreen_window_hack .show_for_widget (self .tray_menu )
9697
98+ # For those who never restart their PC, update EOL notifs every 6 hours
99+ GLib .timeout_add_seconds (3600 * 6 , self .check_vms_needing_update )
100+
97101 def run (self ): # pylint: disable=arguments-differ
98102 self .check_vms_needing_update ()
99103 self .connect_events ()
100104
101105 self .update_indicator_state ()
102106
107+ def obsolete_dom0 (self , _event ):
108+ open_url_in_disposable (
109+ "https://www.qubes-os.org/doc/supported-releases/" ,
110+ self .qapp ,
111+ )
112+
103113 def setup_menu (self ):
104114 self .tray_menu .set_reserve_toggle_size (False )
105115
116+ if "dom0" in self .obsolete_vms :
117+ self .tray_menu .append (
118+ RunItem (
119+ _ (
120+ '<span foreground="red"><b>'
121+ "Warning! "
122+ "This release of Qubes OS is no longer supported!"
123+ "</b></span>\n "
124+ "<b>See officially supported releases</b>"
125+ ),
126+ self .obsolete_dom0 ,
127+ )
128+ )
129+
106130 if self .vms_needing_update :
107131 self .tray_menu .append (TextItem (_ ("<b>Qube updates available!</b>" )))
108132 self .tray_menu .append (
@@ -114,7 +138,7 @@ def setup_menu(self):
114138 )
115139 )
116140
117- if self .obsolete_vms :
141+ if self .obsolete_vms and self . obsolete_vms != { "dom0" } :
118142 self .tray_menu .append (
119143 TextItem (_ ("<b>Some qubes are no longer supported!</b>" ))
120144 )
@@ -158,6 +182,7 @@ def check_vms_needing_update(self):
158182 self .vms_needing_update .add (vm )
159183 if not supported :
160184 self .obsolete_vms .add (vm .name )
185+ return True
161186
162187 def connect_events (self ):
163188 self .dispatcher .add_handler (
@@ -224,6 +249,8 @@ def feature_change(self, vm, event, feature, **_kwargs):
224249 self .update_indicator_state ()
225250
226251 def update_indicator_state (self ):
252+ if "dom0" in self .obsolete_vms :
253+ self .widget_icon .set_from_icon_name ("qui-red-warn" )
227254 if self .vms_needing_update or self .obsolete_vms :
228255 self .widget_icon .set_visible (True )
229256 else :
0 commit comments