From 9a0693b00c25c583db8052454628356d84e5a397 Mon Sep 17 00:00:00 2001 From: Vit Mojzis Date: Wed, 8 Apr 2020 10:42:39 +0200 Subject: [PATCH] framework/browser: Check return value of Gdk.Screen().get_default() Gdk.Screen().get_default() can return None. Exit in case this happens and print a more descriptive error message. Fixes: Traceback (most recent call last): File "/usr/bin/sealert", line 659, in run_as_dbus_service(username) File "/usr/bin/sealert", line 118, in run_as_dbus_service app = SEAlert(user, dbus_service.presentation_manager, watch_setroubleshootd=True) File "/usr/bin/sealert", line 351, in __init__ self.browser = BrowserApplet(self.username, self.alert_client, domain=domain) File "/usr/lib/python3.6/site-packages/setroubleshoot/browser.py", line 182, in __init__ size = Gdk.Screen().get_default().get_monitor_geometry(0) AttributeError: 'NoneType' object has no attribute 'get_monitor_geometry' --- framework/src/setroubleshoot/browser.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/framework/src/setroubleshoot/browser.py b/framework/src/setroubleshoot/browser.py index 4870590..23dd5a1 100644 --- a/framework/src/setroubleshoot/browser.py +++ b/framework/src/setroubleshoot/browser.py @@ -186,10 +186,14 @@ def empty_load(self): def __init__(self, username=None, server=None, list=False, domain=None): self.RECT_SIZE = 20 - size = Gdk.Screen().get_default().get_monitor_geometry(0) - self.width = min(1350, int(size.width * .90)) - self.height = min(750, int(size.height * .90)) - + default_screen = Gdk.Screen().get_default() + if default_screen: + size = default_screen.get_monitor_geometry(0) + self.width = min(1350, int(size.width * .90)) + self.height = min(750, int(size.height * .90)) + else: + print("ERROR (Gdk): couldn't connect to display.", file=sys.stderr) + exit(1) self.read_config() builder = Gtk.Builder() builder.set_translation_domain(domain) @@ -464,7 +468,8 @@ def add_row(self, plugin, alert, args, highlight=False): cssProvider.load_from_path('/usr/share/setroubleshoot/gui/style.css') screen = Gdk.Screen.get_default() styleContext = Gtk.StyleContext() - styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) + if screen: + styleContext.add_provider_for_screen(screen, cssProvider, Gtk.STYLE_PROVIDER_PRIORITY_USER) self.toggles.append(sev_toggle) sev_toggle.show()