From 2f4e6f671e62f2a26912d8a7555420f02f470727 Mon Sep 17 00:00:00 2001 From: Trigg Date: Wed, 9 Mar 2022 16:19:35 +0000 Subject: [PATCH] - Do not create text window in gamescope -> only one window is possible - Come back to this later to maybe merge the two into a single window - Catch file not found --- discover_overlay/discord_connector.py | 33 +++++++++++++++------------ discover_overlay/discover_overlay.py | 12 ++++++---- discover_overlay/image_getter.py | 4 ++-- discover_overlay/overlay.py | 6 ++--- discover_overlay/text_settings.py | 10 +++++--- 5 files changed, 38 insertions(+), 27 deletions(-) diff --git a/discover_overlay/discord_connector.py b/discover_overlay/discord_connector.py index 86cb634..73e73ac 100644 --- a/discover_overlay/discord_connector.py +++ b/discover_overlay/discord_connector.py @@ -424,9 +424,10 @@ class DiscordConnector: self.sub_server() self.find_user() self.voice_overlay.set_enabled(True) - self.text_overlay.set_enabled(self.text_settings.enabled) - if self.last_text_channel: - self.sub_text_channel(self.last_text_channel) + if self.text_overlay: + self.text_overlay.set_enabled(self.text_settings.enabled) + if self.last_text_channel: + self.sub_text_channel(self.last_text_channel) def on_error(self, error): """ @@ -440,7 +441,8 @@ class DiscordConnector: """ logging.info("Connection closed") self.voice_overlay.hide() - self.text_overlay.hide() + if self.text_overlay: + self.text_overlay.hide() self.websocket = None def req_auth(self): @@ -603,21 +605,22 @@ class DiscordConnector: self.voice_overlay.set_connection(self.last_connection) self.list_altered = False # Update text list - if self.text_overlay.popup_style: - self.text_altered = True - if self.text_altered: - self.text_overlay.set_text_list(self.text, self.text_altered) - self.text_altered = False - # Update guilds - self.text_settings.set_guilds(self.guilds) - # Check for changed channel - if self.authed: - self.set_text_channel(self.text_settings.get_channel()) + if self.text_overlay: + if self.text_overlay.popup_style: + self.text_altered = True + if self.text_altered: + self.text_overlay.set_text_list(self.text, self.text_altered) + self.text_altered = False + # Update guilds + self.text_settings.set_guilds(self.guilds) + # Check for changed channel + if self.authed: + self.set_text_channel(self.text_settings.get_channel()) if self.voice_overlay.needsredraw: self.voice_overlay.redraw() - if self.text_overlay.needsredraw: + if self.text_overlay and self.text_overlay.needsredraw: self.text_overlay.redraw() if len(self.rate_limited_channels) > 0: diff --git a/discover_overlay/discover_overlay.py b/discover_overlay/discover_overlay.py index afec7e0..84a59f2 100755 --- a/discover_overlay/discover_overlay.py +++ b/discover_overlay/discover_overlay.py @@ -46,7 +46,6 @@ class Discover: if "GAMESCOPE_WAYLAND_DISPLAY" in os.environ: logging.info("GameScope session detected. Enabling steam and gamescope integration") self.steamos = True - self.show_settings_delay = True self.create_gui() @@ -96,7 +95,6 @@ class Discover: sys.exit(0) if "--steamos" in data or "-s" in data: self.steamos=True - self.show_settings_delay=True if "--hide" in data: if self.voice_overlay: self.voice_overlay.set_hidden(True) @@ -124,8 +122,11 @@ class Discover: """ Create Systray & associated menu, overlays & settings windows """ + if self.steamos: + self.text_overlay = None + else: + self.text_overlay = TextOverlayWindow(self) self.voice_overlay = VoiceOverlayWindow(self) - self.text_overlay = TextOverlayWindow(self) self.menu = self.make_menu() self.make_sys_tray_icon(self.menu) self.settings = MainSettingsWindow(self) @@ -135,6 +136,8 @@ class Discover: Attempt to create an AppIndicator icon, failing that attempt to make a systemtray icon """ + if self.steamos: + return try: gi.require_version('AppIndicator3', '0.1') # pylint: disable=import-outside-toplevel @@ -196,7 +199,8 @@ class Discover: Set if XShape should be forced """ self.voice_overlay.set_force_xshape(force) - self.text_overlay.set_force_xshape(force) + if self.text_overlay: + self.text_overlay.set_force_xshape(force) def set_sys_tray_icon_visible(self, visible): """ diff --git a/discover_overlay/image_getter.py b/discover_overlay/image_getter.py index f7b1748..02ca67e 100644 --- a/discover_overlay/image_getter.py +++ b/discover_overlay/image_getter.py @@ -110,8 +110,8 @@ class SurfaceGetter(): logging.error("Unable to read %s", self.url) except PIL.UnidentifiedImageError: logging.error("Unknown image type") - - + except FileNotFoundError: + logging.error("Unable to load file %s", self.url) def from_pil(self, image, alpha=1.0): """ diff --git a/discover_overlay/overlay.py b/discover_overlay/overlay.py index 1d45205..cde3b4e 100644 --- a/discover_overlay/overlay.py +++ b/discover_overlay/overlay.py @@ -98,11 +98,11 @@ class OverlayWindow(Gtk.Window): topw = display.create_resource_object("window", self.get_toplevel().get_window().get_xid()) topw.change_property(atom, - Xatom.CARDINAL,8, + Xatom.CARDINAL,32, [1], X.PropModeReplace) topw.change_property(opaq, - Xatom.CARDINAL,32, - [0xffffffff], X.PropModeReplace) + Xatom.CARDINAL,16, + [0xffff], X.PropModeReplace) logging.info("Setting STEAM_EXTERNAL_OVERLAY") display.sync() diff --git a/discover_overlay/text_settings.py b/discover_overlay/text_settings.py index fe490d1..70b84af 100644 --- a/discover_overlay/text_settings.py +++ b/discover_overlay/text_settings.py @@ -63,9 +63,9 @@ class TextSettingsWindow(SettingsWindow): self.set_size_request(400, 200) self.connect("destroy", self.close_window) self.connect("delete-event", self.close_window) - - self.init_config() - self.create_gui() + if overlay: + self.init_config() + self.create_gui() def update_channel_model(self): """ @@ -114,6 +114,8 @@ class TextSettingsWindow(SettingsWindow): """ Show contents of tab and update lists """ + if not self.overlay: + return self.show_all() if not self.floating: self.align_x_widget.show() @@ -197,6 +199,8 @@ class TextSettingsWindow(SettingsWindow): """ Read in the 'text' section of the config """ + if not self.overlay: + return config = ConfigParser(interpolation=None) config.read(self.config_file) self.enabled = config.getboolean("text", "enabled", fallback=False)