Skip to content

Commit 274383f

Browse files
committed
Add conspicuous EOL indicator for dom0
After EOL date for the current release is decided, a simple update could set `os-eol` feature for dom0. As soon as the time has come, the Qui Updates systray widget will turn to a red warning sign and show appropriate message (with option to go online to see supported releases) resolves: QubesOS/qubes-issues#9965
1 parent 26caa1d commit 274383f

File tree

4 files changed

+36
-3
lines changed

4 files changed

+36
-3
lines changed

icons/scalable/qui-red-warn.svg

Lines changed: 5 additions & 0 deletions
Loading

qui/tray/updates.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@
1717
import qubesadmin.events
1818
import qui.utils
1919
from qubesadmin import exc
20+
from qubes_config.widgets.utils import open_url_in_disposable
2021

2122
import gi # isort:skip
2223

2324
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
2526

2627
import gbulb
2728

@@ -89,15 +90,38 @@ def __init__(self, app_name, qapp, dispatcher):
8990
self.tray_menu = Gtk.Menu()
9091
self.fullscreen_window_hack.show_for_widget(self.tray_menu)
9192

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+
9296
def run(self): # pylint: disable=arguments-differ
9397
self.check_vms_needing_update()
9498
self.connect_events()
9599

96100
self.update_indicator_state()
97101

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+
98108
def setup_menu(self):
99109
self.tray_menu.set_reserve_toggle_size(False)
100110

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+
101125
if self.vms_needing_update:
102126
self.tray_menu.append(TextItem(_("<b>Qube updates available!</b>")))
103127
self.tray_menu.append(
@@ -110,7 +134,7 @@ def setup_menu(self):
110134
)
111135
)
112136

113-
if self.obsolete_vms:
137+
if self.obsolete_vms and self.obsolete_vms != {"dom0"}:
114138
self.tray_menu.append(
115139
TextItem(_("<b>Some qubes are no longer supported!</b>"))
116140
)
@@ -156,6 +180,7 @@ def check_vms_needing_update(self):
156180
self.vms_needing_update.add(vm)
157181
if not supported:
158182
self.obsolete_vms.add(vm.name)
183+
return True
159184

160185
def connect_events(self):
161186
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:

qui/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,5 +127,5 @@ def check_support(vm) -> bool:
127127
return True
128128
except exc.QubesException:
129129
return True
130-
eol = datetime.strptime(eol_string, "%Y-%m-%d")
130+
eol = datetime.strptime(eol_string + " UTC", "%Y-%m-%d %Z")
131131
return eol > datetime.now()

rpm_spec/qubes-desktop-linux-manager.spec.in

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,7 @@ gtk-update-icon-cache %{_datadir}/icons/Adwaita &>/dev/null || :
302302
/usr/share/icons/hicolor/scalable/apps/qui-domains-scalable.svg
303303
/usr/share/icons/hicolor/scalable/apps/qui-disk-space.svg
304304
/usr/share/icons/hicolor/scalable/apps/qui-disk-space-warn.svg
305+
/usr/share/icons/hicolor/scalable/apps/qui-red-warn.svg
305306
/usr/share/icons/hicolor/scalable/apps/qui-updates.svg
306307
/usr/share/icons/hicolor/scalable/apps/qui-updates-dark.svg
307308
/usr/share/icons/hicolor/scalable/apps/qui-updates-light.svg

0 commit comments

Comments
 (0)