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-05-06 19:18:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/faugus-launcher (Old)
and /work/SRC/openSUSE:Factory/.faugus-launcher.new.30200 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "faugus-launcher"
Wed May 6 19:18:22 2026 rev:25 rq:1351078 version:1.18.12
Changes:
--------
--- /work/SRC/openSUSE:Factory/faugus-launcher/faugus-launcher.changes
2026-05-04 12:52:52.031874351 +0200
+++
/work/SRC/openSUSE:Factory/.faugus-launcher.new.30200/faugus-launcher.changes
2026-05-06 19:20:24.675299224 +0200
@@ -1,0 +2,17 @@
+Tue May 05 21:18:21 UTC 2026 - Jehu Marcos Herrera Puentes
<[email protected]>
+
+- Bump to version 1.18.12
+- Upstream changes:
+ * Downloads temp file in compatibilitytools
+ * Fixed compatibilitytools detection
+ * Fix get_compatibilitytools path suffix attachment
+- For version 1.18.11:
+ * Disable wayland driver for epic
+ * Fixed virtual keyboard losing focus when using shift
+ * Fixed autostart path
+ * Revert "Fix for Winetricks not working with Proton-CachyOS 11 on Wayland"
+ * Don't show splash window when upgrading FSR or DLSS
+ * Fix for Winetricks not working with Proton-CachyOS 11 on Wayland
+ * Updated paths to properly use xdg portal
+
+-------------------------------------------------------------------
Old:
----
faugus-launcher-1.18.10.tar.xz
New:
----
faugus-launcher-1.18.12.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ faugus-launcher.spec ++++++
--- /var/tmp/diff_new_pack.aMrwQW/_old 2026-05-06 19:20:25.435330526 +0200
+++ /var/tmp/diff_new_pack.aMrwQW/_new 2026-05-06 19:20:25.439330691 +0200
@@ -19,7 +19,7 @@
%{?single_pythons_311plus}
Name: faugus-launcher
-Version: 1.18.10
+Version: 1.18.12
Release: 0
Summary: A simple and lightweight app for running Windows games using
UMU-Launcher
License: MIT and CC-BY-4.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.aMrwQW/_old 2026-05-06 19:20:25.479332338 +0200
+++ /var/tmp/diff_new_pack.aMrwQW/_new 2026-05-06 19:20:25.487332668 +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.18.10</param>
+ <param name="revision">1.18.12</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.aMrwQW/_old 2026-05-06 19:20:25.515333821 +0200
+++ /var/tmp/diff_new_pack.aMrwQW/_new 2026-05-06 19:20:25.519333986 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param
name="url">https://github.com/Faugus/faugus-launcher.git</param>
- <param
name="changesrevision">e5a4b2426344bd808a8b20e8f10c162c2b4b1d23</param></service></servicedata>
+ <param
name="changesrevision">a7f4247695d19df0f07630db15291030766a980c</param></service></servicedata>
(No newline at EOF)
++++++ faugus-launcher-1.18.10.tar.xz -> faugus-launcher-1.18.12.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/README.md
new/faugus-launcher-1.18.12/README.md
--- old/faugus-launcher-1.18.10/README.md 2026-04-30 19:42:40.000000000
+0200
+++ new/faugus-launcher-1.18.12/README.md 2026-05-03 20:58:16.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.18.10/faugus-launcher_1.18.10-1_all.deb
+wget -P ~/faugus-launcher
https://github.com/Faugus/faugus-launcher/releases/download/1.18.12/faugus-launcher_1.18.12-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.18.10/data/faugus-launcher.metainfo.xml
new/faugus-launcher-1.18.12/data/faugus-launcher.metainfo.xml
--- old/faugus-launcher-1.18.10/data/faugus-launcher.metainfo.xml
2026-04-30 19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/data/faugus-launcher.metainfo.xml
2026-05-03 20:58:16.000000000 +0200
@@ -82,14 +82,10 @@
</screenshot>
</screenshots>
<releases>
- <release version="1.18.10-1" date="2026-04-30">
+ <release version="1.18.12-1" date="2026-05-03">
<description>
<ul>
- <li>Added a workaround to prevent white/black screen with Nvidia
Optimus laptops.</li>
- <li>Attempt to fix the runner silent crash.</li>
- <li>Updated Flatpak platform to GNOME 50.</li>
- <li>Added Vulkan Tools to Flatpak.</li>
- <li>Added Norwegian (Bokmål) translation.</li>
+ <li>Hotfix compatibilitytools detection.</li>
</ul>
</description>
</release>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/faugus-launcher-1.18.10/data/io.github.Faugus.faugus-launcher.metainfo.xml
new/faugus-launcher-1.18.12/data/io.github.Faugus.faugus-launcher.metainfo.xml
---
old/faugus-launcher-1.18.10/data/io.github.Faugus.faugus-launcher.metainfo.xml
2026-04-30 19:42:40.000000000 +0200
+++
new/faugus-launcher-1.18.12/data/io.github.Faugus.faugus-launcher.metainfo.xml
2026-05-03 20:58:16.000000000 +0200
@@ -88,14 +88,10 @@
</screenshot>
</screenshots>
<releases>
- <release version="1.18.10-1" date="2026-04-30">
+ <release version="1.18.12-1" date="2026-05-03">
<description>
<ul>
- <li>Added a workaround to prevent white/black screen with Nvidia
Optimus laptops.</li>
- <li>Attempt to fix the runner silent crash.</li>
- <li>Updated Flatpak platform to GNOME 50.</li>
- <li>Added Vulkan Tools to Flatpak.</li>
- <li>Added Norwegian (Bokmål) translation.</li>
+ <li>Hotfix compatibilitytools detection.</li>
</ul>
</description>
</release>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/components.py
new/faugus-launcher-1.18.12/faugus/components.py
--- old/faugus-launcher-1.18.10/faugus/components.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/components.py 2026-05-03
20:58:16.000000000 +0200
@@ -5,11 +5,11 @@
import tarfile
import shutil
+from faugus.path_manager import PathManager
UMU_URL_TEMPLATE =
"https://github.com/Faugus/umu-launcher/releases/download/{}/umu-run"
UMU_VERSION_API = "https://api.github.com/repos/Faugus/umu-launcher/releases"
-xdg_data_home = os.getenv("XDG_DATA_HOME",
os.path.expanduser("~/.local/share"))
-UMU_INSTALL_DIR = os.path.join(xdg_data_home, "faugus-launcher")
+UMU_INSTALL_DIR = PathManager.user_data('faugus-launcher')
UMU_VERSION_FILE = os.path.join(UMU_INSTALL_DIR, "version.txt")
UMU_BIN_PATH = os.path.join(UMU_INSTALL_DIR, "umu-run")
@@ -62,12 +62,9 @@
else:
print("UMU-Launcher is up to date.", flush=True)
-
-config_dir = os.getenv('XDG_CONFIG_HOME', os.path.expanduser('~/.config'))
-
BE_URL = "https://github.com/Faugus/components/releases/download/{}/be.tar.gz"
EAC_URL =
"https://github.com/Faugus/components/releases/download/{}/eac.tar.gz"
-DOWNLOAD_DIR = f"{config_dir}/faugus-launcher/components"
+DOWNLOAD_DIR = PathManager.user_config('faugus-launcher/components')
REPO_URL = "https://api.github.com/repos/Faugus/components/releases/latest"
VERSION_FILE = f"{DOWNLOAD_DIR}/version.txt"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/config_manager.py
new/faugus-launcher-1.18.12/faugus/config_manager.py
--- old/faugus-launcher-1.18.10/faugus/config_manager.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/config_manager.py 2026-05-03
20:58:16.000000000 +0200
@@ -1,7 +1,7 @@
from faugus.language_config import *
faugus_launcher_dir = PathManager.user_config('faugus-launcher')
-prefixes_dir = str(Path.home() / 'Faugus')
+prefixes_dir = PathManager.user_home('Faugus')
class ConfigManager:
def __init__(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/keyboard.py
new/faugus-launcher-1.18.12/faugus/keyboard.py
--- old/faugus-launcher-1.18.10/faugus/keyboard.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/keyboard.py 2026-05-03
20:58:16.000000000 +0200
@@ -35,7 +35,6 @@
self.mode = "lower"
self.original_text = self.entry.get_text()
- #self.set_default_size(800, 450)
self.set_resizable(False)
self.get_style_context().add_class("tv-keyboard")
self.apply_css()
@@ -109,6 +108,9 @@
btn.set_hexpand(True)
btn.set_vexpand(True)
+ btn.grid_col = col_offset
+ btn.grid_row = r
+
if (label == "Shift" and self.mode == "shift") or \
(label == "Caps" and self.mode == "caps") or \
(label in ("?123", "ABC") and self.mode == "symbols"):
@@ -142,11 +144,19 @@
new_text = text + char
self.display_entry.set_text(new_text)
self.display_entry.set_position(len(new_text))
+
if self.mode == "shift":
+ col = getattr(button, 'grid_col', 0)
+ row = getattr(button, 'grid_row', 0)
+
self.mode = "lower"
self.build_keys()
self.show_all()
+ new_btn = self.grid.get_child_at(col, row)
+ if new_btn:
+ new_btn.grab_focus()
+
def on_backspace(self, button):
text = self.display_entry.get_text()
if len(text) > 0:
@@ -155,22 +165,38 @@
self.display_entry.set_position(len(new_text))
def on_toggle_mode(self, button, mode_type):
+ col = getattr(button, 'grid_col', 0)
+ row = getattr(button, 'grid_row', 0)
+
target_mode = mode_type.lower()
if self.mode == target_mode:
self.mode = "lower"
else:
self.mode = target_mode
+
self.build_keys()
self.show_all()
+ new_btn = self.grid.get_child_at(col, row)
+ if new_btn:
+ new_btn.grab_focus()
+
def on_toggle_symbols(self, button):
+ col = getattr(button, 'grid_col', 0)
+ row = getattr(button, 'grid_row', 0)
+
if self.mode == "symbols":
self.mode = "lower"
else:
self.mode = "symbols"
+
self.build_keys()
self.show_all()
+ new_btn = self.grid.get_child_at(col, row)
+ if new_btn:
+ new_btn.grab_focus()
+
def on_clear(self, button):
self.display_entry.set_text("")
self.display_entry.set_position(0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/launcher.py
new/faugus-launcher-1.18.12/faugus/launcher.py
--- old/faugus-launcher-1.18.10/faugus/launcher.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/launcher.py 2026-05-03
20:58:16.000000000 +0200
@@ -22,13 +22,13 @@
from faugus.steam_setup import *
from faugus.ea_fix import *
-VERSION = "1.18.10"
+VERSION = "1.18.12"
IS_FLATPAK = 'FLATPAK_ID' in os.environ or os.path.exists('/.flatpak-info')
faugus_banner = PathManager.system_data('faugus-launcher/faugus-banner.png')
faugus_notification =
PathManager.system_data('faugus-launcher/faugus-notification.ogg')
faugus_launcher_dir = PathManager.user_config('faugus-launcher')
-prefixes_dir = str(Path.home() / 'Faugus')
+prefixes_dir = PathManager.user_home('Faugus')
logs_dir = PathManager.user_config('faugus-launcher/logs')
icons_dir = PathManager.user_config('faugus-launcher/icons')
banners_dir = PathManager.user_config('faugus-launcher/banners')
@@ -40,16 +40,14 @@
proton_cachyos =
PathManager.system_data('steam/compatibilitytools.d/proton-cachyos-slr/')
if IS_FLATPAK:
- app_dir = str(Path.home() / '.local/share/applications')
faugus_png = PathManager.get_icon('io.github.Faugus.faugus-launcher.svg')
tray_icon = 'io.github.Faugus.faugus-launcher'
GLib.set_prgname("io.github.Faugus.faugus-launcher")
-
- mono_dest =
Path(os.path.expanduser('~/.local/share/faugus-launcher/faugus-mono.svg'))
+ mono_dest = Path(PathManager.user_data('faugus-launcher/faugus-mono.svg'))
mono_dest.parent.mkdir(parents=True, exist_ok=True)
if not mono_dest.exists():
shutil.copy(faugus_mono_icon, mono_dest)
- faugus_mono_icon =
os.path.expanduser('~/.local/share/faugus-launcher/faugus-mono.svg')
+ faugus_mono_icon = PathManager.user_data('faugus-launcher/faugus-mono.svg')
lsfgvk_possible_paths = [
Path("/usr/lib/extensions/vulkan/lsfgvk/lib/liblsfg-vk.so"), #
Deprecated in LSFG-VK v2.0
Path(os.path.expanduser('~/.local/lib/liblsfg-vk.so')), # Deprecated
in LSFG-VK v2.0
@@ -58,7 +56,6 @@
]
lsfgvk_path = next((p for p in lsfgvk_possible_paths if p.exists()),
lsfgvk_possible_paths[-1])
else:
- app_dir = PathManager.user_data('applications')
faugus_png = PathManager.get_icon('faugus-launcher.svg')
tray_icon = PathManager.get_icon('faugus-launcher.svg')
GLib.set_prgname("faugus-launcher")
@@ -72,6 +69,7 @@
]
lsfgvk_path = next((p for p in lsfgvk_possible_paths if p.exists()),
lsfgvk_possible_paths[-1])
+app_dir = PathManager.user_data('applications')
launcher_path = PathManager.find_binary('faugus-launcher')
umu_run = PathManager.user_data('faugus-launcher/umu-run')
mangohud_dir = PathManager.find_binary('mangohud')
@@ -83,20 +81,15 @@
faugus_temp = PathManager.user_data('faugus-launcher/faugus_temp')
running_games = PathManager.user_data('faugus-launcher/running_games.json')
+compatibility_dir = Path(PathManager.get_compatibilitytools())
+os.makedirs(compatibility_dir, exist_ok=True)
+
faugus_backup = False
os.makedirs(faugus_launcher_share_dir, exist_ok=True)
os.makedirs(faugus_launcher_dir, exist_ok=True)
-def get_desktop_dir():
- try:
- desktop_dir = subprocess.check_output(['xdg-user-dir', 'DESKTOP'],
text=True).strip()
- return desktop_dir
- except (FileNotFoundError, subprocess.CalledProcessError):
- print("xdg-user-dir not found or failed; falling back to ~/Desktop")
- return str(Path.home() / 'Desktop')
-
-desktop_dir = get_desktop_dir()
+desktop_dir = PathManager.user_home('Desktop')
try:
translation = gettext.translation(
@@ -1777,7 +1770,7 @@
return True
def manage_autostart_file(self, start_boot, start_minimized):
- autostart_path =
os.path.expanduser('~/.config/autostart/faugus-launcher.desktop')
+ autostart_path =
PathManager.user_home('.config/autostart/faugus-launcher.desktop')
autostart_dir = os.path.dirname(autostart_path)
if not os.path.exists(autostart_dir):
@@ -2683,7 +2676,7 @@
command = f"PROTON_ENABLE_WAYLAND=0
LOG_DIR='{title_formatted}' WINEPREFIX='{prefix}' GAMEID={title_formatted}
{umu_run} '{file_path}' /S"
elif launcher == "epic":
self.label_download2.set_text("")
- command = f"LOG_DIR='{title_formatted}'
WINEPREFIX='{prefix}' GAMEID={title_formatted} {umu_run} msiexec /i
'{file_path}' /passive"
+ command = f"PROTON_ENABLE_WAYLAND=0
LOG_DIR='{title_formatted}' WINEPREFIX='{prefix}' GAMEID={title_formatted}
{umu_run} msiexec /i '{file_path}' /passive"
elif launcher == "ubisoft":
self.label_download2.set_text("")
command = f"PROTON_ENABLE_WAYLAND=0
LOG_DIR='{title_formatted}' WINEPREFIX='{prefix}' GAMEID={title_formatted}
{umu_run} '{file_path}' /S"
@@ -3824,23 +3817,17 @@
self.combobox_runner.append_text("Proton-EM Latest")
self.combobox_runner.append_text("UMU-Proton Latest")
- if
os.path.exists("/usr/share/steam/compatibilitytools.d/proton-cachyos-slr/"):
+ if os.path.exists(proton_cachyos):
self.combobox_runner.append_text("Proton-CachyOS (System)")
- # Path to the directory containing the folders
- if IS_FLATPAK:
- runner_path =
Path(os.path.expanduser("~/.local/share/Steam/compatibilitytools.d"))
- else:
- runner_path = f'{share_dir}/Steam/compatibilitytools.d/'
-
try:
# Check if the directory exists
- if os.path.exists(runner_path):
+ if os.path.exists(compatibility_dir):
# List to hold version directories
versions = []
# Iterate over the folders in the directory
- for entry in os.listdir(runner_path):
- entry_path = os.path.join(runner_path, entry)
+ for entry in os.listdir(compatibility_dir):
+ entry_path = os.path.join(compatibility_dir, entry)
# Add to list only if it's a directory and not "UMU-Latest"
if (
os.path.isdir(entry_path)
@@ -5830,6 +5817,7 @@
path = "drive_c/Program Files/Electronic Arts/EA Desktop/EA
Desktop/EALauncher.exe"
elif active_id == "epic":
+ self.entry_launch_arguments.set_text("PROTON_ENABLE_WAYLAND=0")
path = "drive_c/Program Files/Epic
Games/Launcher/Portal/Binaries/Win64/EpicGamesLauncher.exe"
elif active_id == "ubisoft":
@@ -5876,23 +5864,17 @@
self.combobox_runner.append_text("Proton-EM Latest")
self.combobox_runner.append_text("UMU-Proton Latest")
- if
os.path.exists("/usr/share/steam/compatibilitytools.d/proton-cachyos-slr/"):
+ if os.path.exists(proton_cachyos):
self.combobox_runner.append_text("Proton-CachyOS (System)")
- # Path to the directory containing the folders
- if IS_FLATPAK:
- runner_path =
Path(os.path.expanduser("~/.local/share/Steam/compatibilitytools.d"))
- else:
- runner_path = f'{share_dir}/Steam/compatibilitytools.d/'
-
try:
# Check if the directory exists
- if os.path.exists(runner_path):
+ if os.path.exists(compatibility_dir):
# List to hold version directories
versions = []
# Iterate over the folders in the directory
- for entry in os.listdir(runner_path):
- entry_path = os.path.join(runner_path, entry)
+ for entry in os.listdir(compatibility_dir):
+ entry_path = os.path.join(compatibility_dir, entry)
# Add to list only if it's a directory and not "UMU-Latest"
if (
os.path.isdir(entry_path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/path_manager.py
new/faugus-launcher-1.18.12/faugus/path_manager.py
--- old/faugus-launcher-1.18.10/faugus/path_manager.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/path_manager.py 2026-05-03
20:58:16.000000000 +0200
@@ -3,8 +3,18 @@
import os
from pathlib import Path
+IS_FLATPAK = 'FLATPAK_ID' in os.environ or os.path.exists('/.flatpak-info')
+
class PathManager:
@staticmethod
+ def user_home(*relative_paths):
+ if IS_FLATPAK:
+ home_dir = Path(os.getenv('HOST_HOME', Path.home()))
+ else:
+ home_dir = Path(os.getenv('HOME', Path.home()))
+ return str(home_dir.joinpath(*relative_paths))
+
+ @staticmethod
def system_data(*relative_paths):
xdg_data_dirs = os.getenv('XDG_DATA_DIRS',
'/usr/local/share:/usr/share').split(':')
for data_dir in xdg_data_dirs:
@@ -42,4 +52,10 @@
for path in icon_paths:
if Path(path).exists():
return path
- return icon_paths[-1] # Fallback
+ return icon_paths[-1]
+
+ @staticmethod
+ def get_compatibilitytools():
+ base_dir = Path(os.getenv('HOST_XDG_DATA_HOME', Path.home() / '.local'
/ 'share'))
+ compatibilitytools_folder = base_dir / 'Steam' / 'compatibilitytools.d'
+ return str(compatibilitytools_folder)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/proton_downloader.py
new/faugus-launcher-1.18.12/faugus/proton_downloader.py
--- old/faugus-launcher-1.18.10/faugus/proton_downloader.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/proton_downloader.py 2026-05-03
20:58:16.000000000 +0200
@@ -5,10 +5,11 @@
import urllib.request
import shutil
import argparse
-from pathlib import Path
+from pathlib import Path
+from faugus.path_manager import PathManager
-STEAM_COMPAT_DIR = Path.home() / ".local/share/Steam/compatibilitytools.d"
+STEAM_COMPAT_DIR = Path(PathManager.get_compatibilitytools())
CONFIGS = {
"ge": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/proton_manager.py
new/faugus-launcher-1.18.12/faugus/proton_manager.py
--- old/faugus-launcher-1.18.10/faugus/proton_manager.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/proton_manager.py 2026-05-03
20:58:16.000000000 +0200
@@ -17,12 +17,11 @@
if IS_FLATPAK:
faugus_png = PathManager.get_icon('io.github.Faugus.faugus-launcher.svg')
GLib.set_prgname("io.github.Faugus.faugus-launcher")
- STEAM_COMPATIBILITY_PATH =
Path(os.path.expanduser("~/.local/share/Steam/compatibilitytools.d"))
else:
faugus_png = PathManager.get_icon('faugus-launcher.svg')
GLib.set_prgname("faugus-launcher")
- STEAM_COMPATIBILITY_PATH =
Path(PathManager.user_data("Steam/compatibilitytools.d"))
+STEAM_COMPATIBILITY_PATH = Path(PathManager.get_compatibilitytools())
config_file_dir = PathManager.user_config('faugus-launcher/config.ini')
faugus_launcher_dir = PathManager.user_config('faugus-launcher')
@@ -362,11 +361,13 @@
def worker():
try:
+ STEAM_COMPATIBILITY_PATH.mkdir(parents=True, exist_ok=True)
+ tar_file_path = os.path.join(STEAM_COMPATIBILITY_PATH,
filename)
+
response = requests.get(url, stream=True, timeout=30)
response.raise_for_status()
total_size = int(response.headers.get("content-length", 0))
downloaded_size = 0
- tar_file_path = os.path.join(os.getcwd(), filename)
with open(tar_file_path, "wb") as f:
for chunk in response.iter_content(chunk_size=1024*64):
@@ -382,33 +383,18 @@
GLib.idle_add(self.progress_bar.set_fraction, 0)
mode = 'r:xz' if tar_file_path.endswith('.tar.xz') else 'r:gz'
- temp_dir = os.path.join(STEAM_COMPATIBILITY_PATH,
f"temp_{tag_name}")
- os.makedirs(temp_dir, exist_ok=True)
with tarfile.open(tar_file_path, mode) as tar:
members = tar.getmembers()
total_members = len(members)
+
for i, member in enumerate(members):
- tar.extract(member, path=temp_dir,
filter="fully_trusted")
+ tar.extract(member, path=STEAM_COMPATIBILITY_PATH,
filter="fully_trusted")
if i % 10 == 0:
progress = (i + 1) / total_members
GLib.idle_add(self.progress_bar.set_fraction,
progress)
GLib.idle_add(self.progress_bar.set_text,
f"{int(progress * 100)}%")
- extracted_dir = None
- for item in os.listdir(temp_dir):
- item_path = os.path.join(temp_dir, item)
- if os.path.isdir(item_path):
- extracted_dir = item_path
- break
-
- if extracted_dir:
- final_dir = os.path.join(STEAM_COMPATIBILITY_PATH,
os.path.basename(extracted_dir))
- if os.path.exists(final_dir):
- shutil.rmtree(final_dir)
- shutil.move(extracted_dir, STEAM_COMPATIBILITY_PATH)
-
- shutil.rmtree(temp_dir)
if os.path.exists(tar_file_path):
os.remove(tar_file_path)
@@ -417,7 +403,7 @@
GLib.idle_add(self.progress_label.set_visible, False)
except Exception as e:
- print(f"Error during download: {e}")
+ print(f"Error during download/extraction: {e}")
GLib.idle_add(self.update_button, button, _("Download"))
GLib.idle_add(self.progress_label.set_text, _("Error during
download"))
finally:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/runner.py
new/faugus-launcher-1.18.12/faugus/runner.py
--- old/faugus-launcher-1.18.10/faugus/runner.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/runner.py 2026-05-03
20:58:16.000000000 +0200
@@ -24,11 +24,9 @@
from faugus.steam_setup import IS_STEAM_FLATPAK
if IS_FLATPAK:
- share_dir = os.path.expanduser('~/.local/share')
faugus_png = PathManager.get_icon('io.github.Faugus.faugus-launcher.svg')
GLib.set_prgname("io.github.Faugus.faugus-launcher")
else:
- share_dir = PathManager.user_data()
faugus_png = PathManager.get_icon('faugus-launcher.svg')
GLib.set_prgname("faugus-launcher")
@@ -37,14 +35,14 @@
envar_dir = PathManager.user_config('faugus-launcher/envar.txt')
games_json = PathManager.user_config('faugus-launcher/games.json')
faugus_launcher_dir = PathManager.user_config('faugus-launcher')
-prefixes_dir = str(Path.home() / 'Faugus')
+prefixes_dir = PathManager.user_home('Faugus')
logs_dir = PathManager.user_config('faugus-launcher/logs')
faugus_notification =
PathManager.system_data('faugus-launcher/faugus-notification.ogg')
eac_dir = PathManager.user_config("faugus-launcher/components/eac")
be_dir = PathManager.user_config("faugus-launcher/components/be")
proton_cachyos =
PathManager.system_data('steam/compatibilitytools.d/proton-cachyos-slr/')
-compatibility_dir =
os.path.expanduser("~/.local/share/Steam/compatibilitytools.d")
+compatibility_dir = Path(PathManager.get_compatibilitytools())
os.makedirs(compatibility_dir, exist_ok=True)
try:
@@ -176,23 +174,23 @@
if protonpath == "Steam":
pass
else:
- protonpath_path = Path(share_dir) /
'Steam/compatibilitytools.d' / protonpath
+ protonpath_path = compatibility_dir / protonpath
if not protonpath_path.is_dir():
self.close_splash_window()
self.show_error_dialog(protonpath)
if protonpath == "Proton-EM Latest":
self.proton_latest = "--em"
- steam_compat_dir = Path.home() /
".local/share/Steam/compatibilitytools.d" / "Proton-EM Latest"
+ steam_compat_dir = compatibility_dir / "Proton-EM Latest"
self.proton_exists = steam_compat_dir.is_dir()
if protonpath == "Proton-GE Latest":
self.proton_latest = "--ge"
- steam_compat_dir = Path.home() /
".local/share/Steam/compatibilitytools.d" / "Proton-GE Latest"
+ steam_compat_dir = compatibility_dir / "Proton-GE Latest"
self.proton_exists = steam_compat_dir.is_dir()
if protonpath == "Proton-CachyOS Latest":
self.proton_latest = "--cachyos"
- steam_compat_dir = Path.home() /
".local/share/Steam/compatibilitytools.d" / "Proton-CachyOS Latest"
+ steam_compat_dir = compatibility_dir / "Proton-CachyOS Latest"
self.proton_exists = steam_compat_dir.is_dir()
self.components_exists = (
@@ -583,6 +581,8 @@
self.log_window.show_all()
def check_game_output(self, clean_line):
+ if "Downloading upscaler file" in clean_line:
+ return False
def update_ui():
if (
"Downloading" in clean_line
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/shortcut.py
new/faugus-launcher-1.18.12/faugus/shortcut.py
--- old/faugus-launcher-1.18.10/faugus/shortcut.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/shortcut.py 2026-05-03
20:58:16.000000000 +0200
@@ -14,10 +14,10 @@
from PIL import Image
from faugus.dark_theme import *
from faugus.config_manager import *
+from faugus.steam_setup import lossless_dll
IS_FLATPAK = 'FLATPAK_ID' in os.environ or os.path.exists('/.flatpak-info')
if IS_FLATPAK:
- app_dir = str(Path.home() / '.local/share/applications')
faugus_png = PathManager.get_icon('io.github.Faugus.faugus-launcher.svg')
GLib.set_prgname("io.github.Faugus.faugus-launcher")
lsfgvk_possible_paths = [
@@ -28,7 +28,6 @@
]
lsfgvk_path = next((p for p in lsfgvk_possible_paths if p.exists()),
lsfgvk_possible_paths[-1])
else:
- app_dir = PathManager.user_data('applications')
faugus_png = PathManager.get_icon('faugus-launcher.svg')
GLib.set_prgname("faugus-launcher")
lsfgvk_possible_paths = [
@@ -40,41 +39,18 @@
Path(os.path.expanduser('~/.local/lib/liblsfg-vk-layer.so'))
]
lsfgvk_path = next((p for p in lsfgvk_possible_paths if p.exists()),
lsfgvk_possible_paths[-1])
+
+app_dir = PathManager.user_data('applications')
icons_dir = PathManager.user_config('faugus-launcher/icons')
config_file_dir = PathManager.user_config('faugus-launcher/config.ini')
-prefixes_dir = str(Path.home() / 'Faugus')
+prefixes_dir = PathManager.user_home('Faugus')
mangohud_dir = PathManager.find_binary('mangohud')
gamemoderun = PathManager.find_binary('gamemoderun')
umu_run = PathManager.user_data('faugus-launcher/umu-run')
launcher_path = PathManager.find_binary('faugus-launcher')
faugus_launcher_dir = PathManager.user_config('faugus-launcher')
faugus_notification =
PathManager.system_data('faugus-launcher/faugus-notification.ogg')
-
-def get_desktop_dir():
- try:
- desktop_dir = subprocess.check_output(['xdg-user-dir', 'DESKTOP'],
text=True).strip()
- return desktop_dir
- except (FileNotFoundError, subprocess.CalledProcessError):
- print("xdg-user-dir not found or failed; falling back to ~/Desktop")
- return str(Path.home() / 'Desktop')
-
-desktop_dir = get_desktop_dir()
-
-def find_lossless_dll():
- possible_common_locations = [
- Path.home() / '.local' / 'share' / 'Steam' / 'steamapps' / 'common',
- Path.home() / '.steam' / 'steam' / 'steamapps' / 'common',
- Path.home() / '.steam' / 'root' / 'steamapps' / 'common',
- Path.home() / 'SteamLibrary' / 'steamapps' / 'common',
-
Path(os.path.expanduser('~/.var/app/com.valvesoftware.Steam/.steam/steamapps/common/'))
- ]
-
- for location in possible_common_locations:
- dll_candidate = location / 'Lossless Scaling' / 'Lossless.dll'
- if dll_candidate.exists():
- return str(dll_candidate)
-
- return ""
+desktop_dir = PathManager.user_home('Desktop')
def get_system_locale():
lang = os.environ.get('LANG') or os.environ.get('LC_MESSAGES')
@@ -372,9 +348,8 @@
self.checkbox_gamemode.set_active(False)
self.checkbox_gamemode.set_tooltip_text(_("Tweaks your system to
improve performance. NOT INSTALLED."))
- lossless_dll_path = find_lossless_dll()
if os.path.exists(lsfgvk_path):
- if lossless_dll_path or os.path.exists(self.lossless_location):
+ if lossless_dll or os.path.exists(self.lossless_location):
self.button_lossless.set_sensitive(True)
else:
self.button_lossless.set_sensitive(False)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/faugus/steam_setup.py
new/faugus-launcher-1.18.12/faugus/steam_setup.py
--- old/faugus-launcher-1.18.10/faugus/steam_setup.py 2026-04-30
19:42:40.000000000 +0200
+++ new/faugus-launcher-1.18.12/faugus/steam_setup.py 2026-05-03
20:58:16.000000000 +0200
@@ -2,6 +2,7 @@
import subprocess
from pathlib import Path
+from faugus.path_manager import PathManager
from gi.repository import GdkPixbuf
IS_FLATPAK = 'FLATPAK_ID' in os.environ or os.path.exists('/.flatpak-info')
@@ -50,9 +51,9 @@
def detect_steam_folder():
steam_version = detect_steam_version()
if steam_version == "flatpak":
- return (Path.home() / ".var" / "app" / "com.valvesoftware.Steam" /
".steam" / "steam", True)
+ return
(Path(PathManager.user_home(".var/app/com.valvesoftware.Steam/.steam/steam")),
True)
if steam_version == "native":
- return (Path.home() / ".steam" / "steam", False)
+ return (Path(PathManager.user_home(".steam/steam")), False)
return (None, False)
steam_folder, IS_STEAM_FLATPAK = detect_steam_folder()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/faugus-launcher-1.18.10/meson.build
new/faugus-launcher-1.18.12/meson.build
--- old/faugus-launcher-1.18.10/meson.build 2026-04-30 19:42:40.000000000
+0200
+++ new/faugus-launcher-1.18.12/meson.build 2026-05-03 20:58:16.000000000
+0200
@@ -1,6 +1,6 @@
project(
'faugus-launcher',
- version: '1.18.10',
+ version: '1.18.12',
meson_version: '>=1.2.0',
license: 'MIT',
license_files: 'LICENSE',