Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions icons/scalable/qui-red-warn.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 29 additions & 2 deletions qui/tray/updates.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,12 @@
import qubesadmin.events
import qui.utils
from qubesadmin import exc
from qubes_config.widgets.utils import open_url_in_disposable

import gi # isort:skip

gi.require_version("Gtk", "3.0") # isort:skip
from gi.repository import Gtk, Gio # isort:skip
from gi.repository import Gtk, Gio, GLib # isort:skip

import gbulb

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

# For those who never restart their PC, update EOL notifs every 6 hours
GLib.timeout_add_seconds(3600 * 6, self.check_vms_needing_update)

def run(self): # pylint: disable=arguments-differ
self.check_vms_needing_update()
self.connect_events()

self.update_indicator_state()

def obsolete_dom0(self, _event):
open_url_in_disposable(
"https://www.qubes-os.org/doc/supported-releases/",
self.qapp,
)

def setup_menu(self):
self.tray_menu.set_reserve_toggle_size(False)

if "dom0" in self.obsolete_vms:
self.tray_menu.append(
RunItem(
_(
'<span foreground="red"><b>'
"Warning! "
"This release of Qubes OS is no longer supported!"
"</b></span>\n"
"<b>See officially supported releases</b>"
),
self.obsolete_dom0,
)
)

if self.vms_needing_update:
self.tray_menu.append(TextItem(_("<b>Qube updates available!</b>")))
self.tray_menu.append(
Expand All @@ -110,7 +134,7 @@ def setup_menu(self):
)
)

if self.obsolete_vms:
if self.obsolete_vms and self.obsolete_vms != {"dom0"}:
self.tray_menu.append(
TextItem(_("<b>Some qubes are no longer supported!</b>"))
)
Expand Down Expand Up @@ -156,6 +180,7 @@ def check_vms_needing_update(self):
self.vms_needing_update.add(vm)
if not supported:
self.obsolete_vms.add(vm.name)
return True

def connect_events(self):
self.dispatcher.add_handler(
Expand Down Expand Up @@ -224,6 +249,8 @@ def feature_change(self, vm, event, feature, **_kwargs):
self.update_indicator_state()

def update_indicator_state(self):
if "dom0" in self.obsolete_vms:
self.widget_icon.set_from_icon_name("qui-red-warn")
if self.vms_needing_update or self.obsolete_vms:
self.widget_icon.set_visible(True)
else:
Expand Down
2 changes: 1 addition & 1 deletion qui/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,5 +127,5 @@ def check_support(vm) -> bool:
return True
except exc.QubesException:
return True
eol = datetime.strptime(eol_string, "%Y-%m-%d")
eol = datetime.strptime(eol_string + " UTC", "%Y-%m-%d %Z")
return eol > datetime.now()
1 change: 1 addition & 0 deletions rpm_spec/qubes-desktop-linux-manager.spec.in
Original file line number Diff line number Diff line change
Expand Up @@ -302,6 +302,7 @@ gtk-update-icon-cache %{_datadir}/icons/Adwaita &>/dev/null || :
/usr/share/icons/hicolor/scalable/apps/qui-domains-scalable.svg
/usr/share/icons/hicolor/scalable/apps/qui-disk-space.svg
/usr/share/icons/hicolor/scalable/apps/qui-disk-space-warn.svg
/usr/share/icons/hicolor/scalable/apps/qui-red-warn.svg
/usr/share/icons/hicolor/scalable/apps/qui-updates.svg
/usr/share/icons/hicolor/scalable/apps/qui-updates-dark.svg
/usr/share/icons/hicolor/scalable/apps/qui-updates-light.svg
Expand Down