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',