Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package faugus-launcher for openSUSE:Factory 
checked in at 2026-04-16 17:26:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/faugus-launcher (Old)
 and      /work/SRC/openSUSE:Factory/.faugus-launcher.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "faugus-launcher"

Thu Apr 16 17:26:01 2026 rev:19 rq:1347197 version:1.18.2

Changes:
--------
--- /work/SRC/openSUSE:Factory/faugus-launcher/faugus-launcher.changes  
2026-04-07 16:47:31.233106688 +0200
+++ 
/work/SRC/openSUSE:Factory/.faugus-launcher.new.11940/faugus-launcher.changes   
    2026-04-16 17:26:22.629967975 +0200
@@ -1,0 +2,13 @@
+Wed Apr 15 17:17:47 UTC 2026 - Jehu Marcos Herrera Puentes 
<[email protected]>
+
+- Bump to version 1.18.2
+- Upstream changes:
+  * Fixed Flatpak X11 app icon
+- For version 1.18.1:
+  * Improved interface mode switch
+  * Show banner and icon in grayscale if game not installed
+  * Fixed games not running from file manager with Proton-CachyOS (System)
+  * Fixed app icon not showing on X11
+  * Fixed playtime not counting when using protonfix
+
+-------------------------------------------------------------------

Old:
----
  faugus-launcher-1.17.5.tar.xz

New:
----
  faugus-launcher-1.18.2.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ faugus-launcher.spec ++++++
--- /var/tmp/diff_new_pack.BJXGvb/_old  2026-04-16 17:26:23.209991844 +0200
+++ /var/tmp/diff_new_pack.BJXGvb/_new  2026-04-16 17:26:23.213992009 +0200
@@ -19,7 +19,7 @@
 %{?single_pythons_311plus}
 
 Name:           faugus-launcher
-Version:        1.17.5
+Version:        1.18.2
 Release:        0
 Summary:        A simple and lightweight app for running Windows games using 
UMU-Launcher
 License:        MIT

++++++ _service ++++++
--- /var/tmp/diff_new_pack.BJXGvb/_old  2026-04-16 17:26:23.245993326 +0200
+++ /var/tmp/diff_new_pack.BJXGvb/_new  2026-04-16 17:26:23.257993820 +0200
@@ -3,7 +3,7 @@
   <service name="tar_scm" mode="manual">
     <param name="scm">git</param>
     <param name="url">https://github.com/Faugus/faugus-launcher.git</param>
-    <param name="revision">1.17.5</param>
+    <param name="revision">1.18.2</param>
     <param name="changesgenerate">enable</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v?([0-9]+(\.[0-9])*)(\+0)?</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.BJXGvb/_old  2026-04-16 17:26:23.285994972 +0200
+++ /var/tmp/diff_new_pack.BJXGvb/_new  2026-04-16 17:26:23.289995137 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/Faugus/faugus-launcher.git</param>
-              <param 
name="changesrevision">07231cac65e3436383feb247709988d1ee659f36</param></service></servicedata>
+              <param 
name="changesrevision">a3fdf1356bbad3a069e77595976eb32e5a5865c3</param></service></servicedata>
 (No newline at EOF)
 

++++++ faugus-launcher-1.17.5.tar.xz -> faugus-launcher-1.18.2.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/faugus-launcher-1.17.5/README.md 
new/faugus-launcher-1.18.2/README.md
--- old/faugus-launcher-1.17.5/README.md        2026-04-04 00:47:17.000000000 
+0200
+++ new/faugus-launcher-1.18.2/README.md        2026-04-15 17:58:39.000000000 
+0200
@@ -38,7 +38,7 @@
 sudo apt update
 sudo apt install -y wget
 mkdir -p ~/faugus-launcher
-wget -P ~/faugus-launcher 
https://github.com/Faugus/faugus-launcher/releases/download/1.17.5/faugus-launcher_1.17.5-1_all.deb
+wget -P ~/faugus-launcher 
https://github.com/Faugus/faugus-launcher/releases/download/1.18.2/faugus-launcher_1.18.2-1_all.deb
 sudo apt install -y ~/faugus-launcher/*.deb
 sudo rm -r ~/faugus-launcher
 ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/faugus-launcher-1.17.5/data/faugus-launcher.metainfo.xml 
new/faugus-launcher-1.18.2/data/faugus-launcher.metainfo.xml
--- old/faugus-launcher-1.17.5/data/faugus-launcher.metainfo.xml        
2026-04-04 00:47:17.000000000 +0200
+++ new/faugus-launcher-1.18.2/data/faugus-launcher.metainfo.xml        
2026-04-15 17:58:39.000000000 +0200
@@ -82,13 +82,14 @@
     </screenshot>
   </screenshots>
   <releases>
-    <release version="1.17.5-1" date="2026-04-03">
+    <release version="1.18.2-1" date="2026-04-15">
       <description>
         <ul>
-          <li>Re-enabled EA App installation.</li>
-          <li>Improved detection of running applications.</li>
-          <li>Improved Splash window when running Steam games.</li>
-          <li>Some code restructuring.</li>
+          <li>Now shows the banner and icon in grayscale if can't find the 
game executable.</li>
+          <li>Fixed playtime not counting when using protonfix.</li>
+          <li>Fixed app icon not showing on X11 sessions.</li>
+          <li>Fixed games not running from file manager with Proton-CachyOS 
(System).</li>
+          <li>Improved interface mode switching.</li>
         </ul>
       </description>
     </release>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/faugus-launcher-1.17.5/data/io.github.Faugus.faugus-launcher.desktop.in 
new/faugus-launcher-1.18.2/data/io.github.Faugus.faugus-launcher.desktop.in
--- old/faugus-launcher-1.17.5/data/io.github.Faugus.faugus-launcher.desktop.in 
2026-04-04 00:47:17.000000000 +0200
+++ new/faugus-launcher-1.18.2/data/io.github.Faugus.faugus-launcher.desktop.in 
2026-04-15 17:58:39.000000000 +0200
@@ -5,3 +5,4 @@
 
MimeType=application/x-ms-dos-executable;application/x-msi;application/x-ms-shortcut;application/x-bat;text/x-ms-regedit
 Icon=@ICON@
 Categories=Game;
+StartupWMClass=@ICON@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/faugus-launcher-1.17.5/data/io.github.Faugus.faugus-launcher.metainfo.xml 
new/faugus-launcher-1.18.2/data/io.github.Faugus.faugus-launcher.metainfo.xml
--- 
old/faugus-launcher-1.17.5/data/io.github.Faugus.faugus-launcher.metainfo.xml   
    2026-04-04 00:47:17.000000000 +0200
+++ 
new/faugus-launcher-1.18.2/data/io.github.Faugus.faugus-launcher.metainfo.xml   
    2026-04-15 17:58:39.000000000 +0200
@@ -88,13 +88,14 @@
     </screenshot>
   </screenshots>
   <releases>
-    <release version="1.17.5-1" date="2026-04-03">
+    <release version="1.18.2-1" date="2026-04-15">
       <description>
         <ul>
-          <li>Re-enabled EA App installation.</li>
-          <li>Improved detection of running applications.</li>
-          <li>Improved Splash window when running Steam games.</li>
-          <li>Some code restructuring.</li>
+          <li>Now shows the banner and icon in grayscale if can't find the 
game executable.</li>
+          <li>Fixed playtime not counting when using protonfix.</li>
+          <li>Fixed app icon not showing on X11 sessions.</li>
+          <li>Fixed games not running from file manager with Proton-CachyOS 
(System).</li>
+          <li>Improved interface mode switching.</li>
         </ul>
       </description>
     </release>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/faugus-launcher-1.17.5/faugus/launcher.py 
new/faugus-launcher-1.18.2/faugus/launcher.py
--- old/faugus-launcher-1.17.5/faugus/launcher.py       2026-04-04 
00:47:17.000000000 +0200
+++ new/faugus-launcher-1.18.2/faugus/launcher.py       2026-04-15 
17:58:39.000000000 +0200
@@ -22,7 +22,7 @@
 from faugus.steam_setup import *
 from faugus.ea_fix import *
 
-VERSION = "1.17.5"
+VERSION = "1.18.2"
 IS_FLATPAK = 'FLATPAK_ID' in os.environ or os.path.exists('/.flatpak-info')
 
 faugus_banner = PathManager.system_data('faugus-launcher/faugus-banner.png')
@@ -146,9 +146,7 @@
 
 class FaugusApp(Gtk.Application):
     def __init__(self, start_hidden=False):
-        super().__init__(
-            application_id="io.github.Faugus.faugus-launcher"
-        )
+        super().__init__()
         self.window = None
         self.start_hidden = start_hidden
 
@@ -1483,13 +1481,15 @@
         if self.interface_mode == "Banners":
             hbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
 
-
         if game.favorite:
             hbox.get_style_context().add_class("hbox-favorite")
         else:
             hbox.get_style_context().add_class("hbox-normal")
 
         game_icon = f'{icons_dir}/{game.gameid}.ico'
+        if not os.path.isfile(game_icon):
+            game_icon = faugus_png
+
         game_label = Gtk.Label.new(game.title)
 
         if self.interface_mode in ("Blocks", "Banners"):
@@ -1497,17 +1497,17 @@
             game_label.set_max_width_chars(1)
             game_label.set_justify(Gtk.Justification.CENTER)
 
-        if not os.path.isfile(game_icon):
-            game_icon = faugus_png
-
         self.flowbox_child = Gtk.FlowBoxChild()
-
-        pixbuf = GdkPixbuf.Pixbuf.new_from_file(game_icon)
+        self.flowbox_child.game = game
 
         if self.interface_mode == "List":
-            scaled_pixbuf = pixbuf.scale_simple(40, 40, 
GdkPixbuf.InterpType.BILINEAR)
-            image = Gtk.Image.new_from_file(game_icon)
-            image.set_from_pixbuf(scaled_pixbuf)
+            pixbuf = self.get_pixbuf(game_icon, game)
+            scaled = pixbuf.scale_simple(40, 40, GdkPixbuf.InterpType.BILINEAR)
+
+            image = Gtk.Image()
+            image.set_from_pixbuf(scaled)
+
+            self.flowbox_child.image = image
 
             image.set_margin_start(10)
             image.set_margin_end(10)
@@ -1531,9 +1531,13 @@
             self.flowbox_child.set_hexpand(True)
             self.flowbox_child.set_vexpand(True)
 
-            scaled_pixbuf = pixbuf.scale_simple(100, 100, 
GdkPixbuf.InterpType.BILINEAR)
-            image = Gtk.Image.new_from_file(game_icon)
-            image.set_from_pixbuf(scaled_pixbuf)
+            pixbuf = self.get_pixbuf(game_icon, game)
+            scaled = pixbuf.scale_simple(100, 100, 
GdkPixbuf.InterpType.BILINEAR)
+
+            image = Gtk.Image()
+            image.set_from_pixbuf(scaled)
+
+            self.flowbox_child.image = image
 
             image.set_margin_top(10)
             game_label.set_margin_top(10)
@@ -1552,6 +1556,8 @@
             self.flowbox_child.set_vexpand(True)
 
             image2 = Gtk.Image()
+            self.flowbox_child.banner = image2
+
             game_label.set_size_request(-1, 50)
             game_label.set_margin_start(10)
             game_label.set_margin_end(10)
@@ -1565,21 +1571,17 @@
             self.flowbox_child.set_halign(Gtk.Align.FILL)
 
             if game.banner == "" or not os.path.isfile(game.banner):
-                if self.smaller_banners:
-                    pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
-                        faugus_banner, 180, 270, False)
-                else:
-                    pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
-                        faugus_banner, 230, 345, False)
+                banner_path = faugus_banner
             else:
-                if self.smaller_banners:
-                    pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
-                        game.banner, 180, 270, False)
-                else:
-                    pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(
-                        game.banner, 230, 345, False)
+                banner_path = game.banner
+
+            if self.smaller_banners:
+                pixbuf = self.get_pixbuf(banner_path, game, 180, 270)
+            else:
+                pixbuf = self.get_pixbuf(banner_path, game, 230, 345)
 
             image2.set_from_pixbuf(pixbuf)
+
             hbox.pack_start(image2, False, False, 0)
             hbox.pack_start(game_label, True, False, 0)
 
@@ -1587,9 +1589,62 @@
                 game_label.set_no_show_all(True)
 
         self.flowbox_child.add(hbox)
-        self.flowbox_child.game = game
         self.flowbox.add(self.flowbox_child)
 
+    def update_game_visual(self, flowbox_child):
+        game = flowbox_child.game
+
+        game_icon = f'{icons_dir}/{game.gameid}.ico'
+        if not os.path.isfile(game_icon):
+            game_icon = faugus_png
+
+        if hasattr(flowbox_child, "image"):
+            pixbuf = self.get_pixbuf(game_icon, game)
+
+            if self.interface_mode == "List":
+                scaled = pixbuf.scale_simple(40, 40, 
GdkPixbuf.InterpType.BILINEAR)
+            else:
+                scaled = pixbuf.scale_simple(100, 100, 
GdkPixbuf.InterpType.BILINEAR)
+
+            flowbox_child.image.set_from_pixbuf(scaled)
+
+        if hasattr(flowbox_child, "banner"):
+            if game.banner == "" or not os.path.isfile(game.banner):
+                banner_path = faugus_banner
+            else:
+                banner_path = game.banner
+
+            if self.smaller_banners:
+                pixbuf = self.get_pixbuf(banner_path, game, 180, 270)
+            else:
+                pixbuf = self.get_pixbuf(banner_path, game, 230, 345)
+
+            flowbox_child.banner.set_from_pixbuf(pixbuf)
+
+    def get_pixbuf(self, path, game, width=None, height=None):
+        if width and height:
+            pixbuf = GdkPixbuf.Pixbuf.new_from_file_at_scale(path, width, 
height, False)
+        else:
+            pixbuf = GdkPixbuf.Pixbuf.new_from_file(path)
+
+        if not self.is_game_installed(game):
+            gray = pixbuf.copy()
+            gray.saturate_and_pixelate(gray, 0.0, False)
+            return gray
+
+        return pixbuf
+
+    def is_game_installed(self, game):
+        if game.runner == "Steam":
+            for appid, name in read_installed_games():
+                if hasattr(game, "appid") and str(game.appid) == str(appid):
+                    return True
+                if game.title.lower() == name.lower():
+                    return True
+            return False
+
+        return os.path.exists(game.path)
+
     def on_search_changed(self, entry):
         search_text = entry.get_text().lower()
         first_visible = None
@@ -1614,14 +1669,8 @@
 
     def on_settings_dialog_response(self, dialog, response_id, 
settings_dialog):
         if faugus_backup:
-            subprocess.Popen([sys.executable, __file__])
-            self.destroy()
-            self.load_config()
-            self.manage_autostart_file(self.start_boot)
-            settings_dialog.destroy()
-            return
+            os.execv(sys.executable, [sys.executable] + sys.argv)
 
-        # Handle dialog response
         if response_id == Gtk.ResponseType.OK:
             default_prefix = settings_dialog.entry_default_prefix.get_text()
             validation_result = self.validate_settings_fields(settings_dialog, 
default_prefix)
@@ -1630,7 +1679,11 @@
 
             if not settings_dialog.logging_warning:
                 if settings_dialog.checkbox_enable_logging.get_active():
-                    self.show_warning_dialog_main(self, _("Proton may generate 
huge log files."), _("Enable logging only when debugging a problem."))
+                    self.show_warning_dialog_main(
+                        self,
+                        _("Proton may generate huge log files."),
+                        _("Enable logging only when debugging a problem.")
+                    )
                     settings_dialog.logging_warning = True
 
             settings_dialog.update_config_file()
@@ -1640,22 +1693,23 @@
                 self.system_tray = True
             else:
                 self.system_tray = False
+
             GLib.timeout_add(1000, self.load_tray_icon)
 
             if validation_result:
                 combobox_language = 
settings_dialog.combobox_language.get_active_text()
+
                 if self.interface_mode != 
settings_dialog.combobox_interface.get_active_id():
-                    subprocess.Popen([sys.executable, __file__])
-                    self.destroy()
+                    os.execv(sys.executable, [sys.executable] + sys.argv)
+
                 if self.show_labels != 
settings_dialog.checkbox_show_labels.get_active():
-                    subprocess.Popen([sys.executable, __file__])
-                    self.destroy()
+                    os.execv(sys.executable, [sys.executable] + sys.argv)
+
                 if self.smaller_banners != 
settings_dialog.checkbox_smaller_banners.get_active():
-                    subprocess.Popen([sys.executable, __file__])
-                    self.destroy()
+                    os.execv(sys.executable, [sys.executable] + sys.argv)
+
                 if self.language != 
settings_dialog.lang_codes.get(combobox_language, "en_US"):
-                    subprocess.Popen([sys.executable, __file__])
-                    self.destroy()
+                    os.execv(sys.executable, [sys.executable] + sys.argv)
 
                 settings_dialog.update_envar_file()
 
@@ -1736,6 +1790,10 @@
         if not game:
             return
 
+        selected = self.flowbox.get_selected_children()
+        child = selected[0]
+        self.update_game_visual(child)
+
         button = widget or self.button_play
         gameid = game.gameid
         title = game.title
@@ -6584,7 +6642,7 @@
     
command_parts.append(os.path.expanduser(f'WINEPREFIX="{default_prefix}/default"'))
     command_parts.append("GAMEID=default")
     if default_runner:
-        if default_runner == "Proton-CachyOS":
+        if default_runner == "Proton-CachyOS (System)":
             command_parts.append(f'PROTONPATH="{proton_cachyos}"')
         else:
             command_parts.append(f'PROTONPATH="{default_runner}"')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/faugus-launcher-1.17.5/faugus/runner.py 
new/faugus-launcher-1.18.2/faugus/runner.py
--- old/faugus-launcher-1.17.5/faugus/runner.py 2026-04-04 00:47:17.000000000 
+0200
+++ new/faugus-launcher-1.18.2/faugus/runner.py 2026-04-15 17:58:39.000000000 
+0200
@@ -744,9 +744,12 @@
         self.playtime = int(self.cfg.config.get("playtime", 0))
         self.cfg.set_value("playtime", self.playtime + runtime)
         self.cfg.save_config()
-
         self.release_prefix()
-        game_id = os.environ.get("GAMEID")
+
+        if os.environ.get("FAUGUSID"):
+            game_id = os.environ.get("FAUGUSID")
+        else:
+            game_id = os.environ.get("GAMEID")
 
         if game_id and os.path.exists(games_json):
             try:
@@ -824,6 +827,7 @@
         command_parts.append("PREVENT_SLEEP=1")
     if protonfix:
         command_parts.append(f"GAMEID={protonfix}")
+        command_parts.append(f"FAUGUSID={game['gameid']}")
     else:
         command_parts.append(f"GAMEID={game['gameid']}")
     if runner:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/faugus-launcher-1.17.5/meson.build 
new/faugus-launcher-1.18.2/meson.build
--- old/faugus-launcher-1.17.5/meson.build      2026-04-04 00:47:17.000000000 
+0200
+++ new/faugus-launcher-1.18.2/meson.build      2026-04-15 17:58:39.000000000 
+0200
@@ -1,6 +1,6 @@
 project(
   'faugus-launcher',
-  version: '1.17.5',
+  version: '1.18.2',
   meson_version: '>=1.2.0',
   license: 'MIT',
   license_files: 'LICENSE',

Reply via email to