Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package uwsm for openSUSE:Factory checked in at 2026-06-15 19:41:32 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/uwsm (Old) and /work/SRC/openSUSE:Factory/.uwsm.new.1981 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "uwsm" Mon Jun 15 19:41:32 2026 rev:6 rq:1359122 version:0.26.5 Changes: -------- --- /work/SRC/openSUSE:Factory/uwsm/uwsm.changes 2026-02-20 17:52:12.567493295 +0100 +++ /work/SRC/openSUSE:Factory/.uwsm.new.1981/uwsm.changes 2026-06-15 19:43:50.316406647 +0200 @@ -1,0 +2,7 @@ +Sat Jun 13 22:29:45 UTC 2026 - Alexey Kolos <[email protected]> + +- Update to version 0.26.5: + * fix(app): fall back to local file if exists on invalid entry ID, fixes #214 + * fix(app): split explicitly by ".desktop:", abs path for SourcePath value + +------------------------------------------------------------------- Old: ---- uwsm-0.26.4.obscpio New: ---- uwsm-0.26.5.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ uwsm.spec ++++++ --- /var/tmp/diff_new_pack.mo4jwI/_old 2026-06-15 19:43:52.512498675 +0200 +++ /var/tmp/diff_new_pack.mo4jwI/_new 2026-06-15 19:43:52.516498843 +0200 @@ -17,7 +17,7 @@ Name: uwsm -Version: 0.26.4 +Version: 0.26.5 Release: 0 Summary: Universal Wayland Session Manager License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.mo4jwI/_old 2026-06-15 19:43:52.552500351 +0200 +++ /var/tmp/diff_new_pack.mo4jwI/_new 2026-06-15 19:43:52.556500519 +0200 @@ -2,7 +2,7 @@ <service name="obs_scm" mode="manual"> <param name="url">https://github.com/Vladimir-csp/uwsm.git</param> <param name="scm">git</param> - <param name="revision">v0.26.4</param> + <param name="revision">v0.26.5</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.mo4jwI/_old 2026-06-15 19:43:52.576501357 +0200 +++ /var/tmp/diff_new_pack.mo4jwI/_new 2026-06-15 19:43:52.576501357 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/Vladimir-csp/uwsm.git</param> - <param name="changesrevision">3294dd3163bf9f2334b787b3cde5a14e56491404</param></service></servicedata> + <param name="changesrevision">7bdc515bd85c8c252b6d99111527a1c2da9cb60c</param></service></servicedata> (No newline at EOF) ++++++ uwsm-0.26.4.obscpio -> uwsm-0.26.5.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uwsm-0.26.4/debian/changelog new/uwsm-0.26.5/debian/changelog --- old/uwsm-0.26.4/debian/changelog 2026-02-19 20:20:36.000000000 +0100 +++ new/uwsm-0.26.5/debian/changelog 2026-06-13 15:44:19.000000000 +0200 @@ -1,5 +1,5 @@ -uwsm (0.26.4-1~local0) UNRELEASED; urgency=medium +uwsm (0.26.5-1~local0) UNRELEASED; urgency=medium * Upstream build. - -- Vladimir-csp <[email protected]> Thu, 19 Feb 2026 22:17:58 +0300 + -- Vladimir-csp <[email protected]> Sat, 13 Jun 2026 16:44:19 +0300 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uwsm-0.26.4/uwsm/main.py new/uwsm-0.26.5/uwsm/main.py --- old/uwsm-0.26.4/uwsm/main.py 2026-02-19 20:20:36.000000000 +0100 +++ new/uwsm-0.26.5/uwsm/main.py 2026-06-13 15:44:19.000000000 +0200 @@ -211,8 +211,9 @@ # Desktop entry elif arg.endswith(".desktop") or ".desktop:" in arg: # separate action - if ":" in arg: - self.entry_id, entry_action = arg.split(":", maxsplit=1) + if ".desktop:" in arg: + self.entry_id, entry_action = arg.split(".desktop:", maxsplit=1) + self.entry_id = self.entry_id + ".desktop" if entry_action: if not Val.action_id.search(entry_action): raise ValueError( @@ -239,7 +240,10 @@ # validate id if not given as path if not Val.entry_id.search(self.entry_id): - if self.path is None: + if self.path is None and os.path.isfile(self.entry_id): + # entry id is ivnalid, but points to existing file in PWD, make a path + self.path = f"./{self.entry_id}" + elif self.path is None: raise ValueError(f'Invalid Desktop Entry ID "{self.entry_id}"') print_warning(f'Invalid Desktop Entry ID "{self.entry_id}"', notify=1) @@ -1394,28 +1398,24 @@ if waitenv_timeout != 30: update_unit( "[email protected]/50_timeout.conf", - dedent( - f""" + dedent(f""" # injected by {BIN_NAME}, do not edit [Unit] X-UWSMMark=generic [Service] TimeoutStartSec={waitenv_timeout} - """ - ), + """), rung=rung, ) update_unit( "wayland-session-waitenv.service.d/50_timeout.conf", - dedent( - f""" + dedent(f""" # injected by {BIN_NAME}, do not edit [Unit] X-UWSMMark=generic [Service] TimeoutStartSec={waitenv_timeout} - """ - ), + """), rung=rung, ) else: @@ -1431,24 +1431,16 @@ f"wayland-wm@{CompGlobals.id_unit_string}.service.d/50_custom.conf" ) # initial data as lists for later joining - wm_specific_preloader_data = [ - dedent( - f""" + wm_specific_preloader_data = [dedent(f""" # injected by {BIN_NAME}, do not edit [Unit] X-UWSMMark={CompGlobals.id} - """ - ) - ] - wm_specific_service_data = [ - dedent( - f""" + """)] + wm_specific_service_data = [dedent(f""" # injected by {BIN_NAME}, do not edit [Unit] X-UWSMMark={CompGlobals.id} - """ - ) - ] + """)] # name or description is given if CompGlobals.name or CompGlobals.description: @@ -1487,15 +1479,11 @@ preloader_exec.append(CompGlobals.cmdline[0]) # append to string list - wm_specific_preloader_data.append( - dedent( - f""" + wm_specific_preloader_data.append(dedent(f""" [Service] ExecStart= ExecStart={shlex.join(preloader_exec_base + preloader_exec)}\n - """ - ) - ) + """)) # service exec needs ID and command line service_exec_base = [BIN_PATH, "aux", "exec", "--", "%I"] @@ -1510,15 +1498,11 @@ # append to string list if service_exec: - wm_specific_service_data.append( - dedent( - f""" + wm_specific_service_data.append(dedent(f""" [Service] ExecStart= ExecStart={shlex.join(service_exec_base + service_exec)}\n - """ - ) - ) + """)) if len(wm_specific_preloader_data) > 1: # add preloader customization drop-in @@ -1552,8 +1536,7 @@ # ordering and slicing autostart apps update_unit( "[email protected]/slice-tweak.conf", - dedent( - f""" + dedent(f""" # injected by {BIN_NAME}, do not edit [Unit] X-UWSMMark=tweaks @@ -1564,15 +1547,13 @@ # also put them in special graphical app slice Slice=app-graphical.slice EnvironmentFile=-%t/{BIN_NAME}/env_session.conf - """ - ), + """), rung=rung, ) # ordering and slicing flatpaks update_unit( "app-flatpak-.scope.d/order-tweak.conf", - dedent( - f""" + dedent(f""" # injected by {BIN_NAME}, do not edit [Unit] X-UWSMMark=tweaks @@ -1582,8 +1563,7 @@ [Scope] # also put them in special graphical app slice Slice=app-graphical.slice - """ - ), + """), rung=rung, ) ## hotfix some portals @@ -1591,14 +1571,12 @@ # upstream is ordered after plasma-core.target which may be not installed update_unit( "plasma-xdg-desktop-portal-kde.service.d/order-tweak.conf", - dedent( - f""" + dedent(f""" # injected by {BIN_NAME}, do not edit [Unit] X-UWSMMark=tweaks After=graphical-session.target - """ - ), + """), rung=rung, ) @@ -1672,24 +1650,20 @@ # main parser with subcommands parsers["main"] = argparse.ArgumentParser( formatter_class=HelpFormatterNewlines, - description=dedent( - """ + description=dedent(""" Universal Wayland Session Manager.\n \n Launches arbitrary wayland compositor via a set of systemd user units to provide graphical user session with environment management, XDG autostart support, scoped application launch helpers, clean shutdown. - """ - ), + """), # usage='%(prog)s [-h] action ...', - epilog=dedent( - f""" + epilog=dedent(f""" See "{BIN_NAME} {{subcommand}} -h" for further help on each subcommand.\n \n See "man {BIN_NAME}" for more detailed info on integration and operation.\n - """ - ), + """), exit_on_error=exit_on_error, ) parsers["main_subparsers"] = parsers["main"].add_subparsers( @@ -1710,15 +1684,13 @@ "wm_cmdline", metavar="args", nargs="+", - help=dedent( - """ + help=dedent(""" Compositor command line. The first argument acts as an ID and should be either one of:\n - Executable name\n - Desktop Entry ID (optionally with ":"-delimited action ID)\n - Special value "select" or "default"\n If given as path, hardcode mode is implied.\n - """ - ), + """), ) parsers["wm_args_raw"] = argparse.ArgumentParser( @@ -1790,15 +1762,13 @@ formatter_class=HelpFormatterNewlines, help="Select default compositor entry", description="Invokes whiptail menu for selecting wayland-sessions Desktop Entries.", - epilog=dedent( - f""" + epilog=dedent(f""" Entries are selected from "wayland-sessions" XDG data hierarchy. Default selection is read from first encountered "{BIN_NAME}/default-id" file in XDG Config hierarchy and system part of XDG Data hierarchy. When selected, choice is saved to user part of XDG Config hierarchy ("${{XDG_CONFIG_HOME}}/{BIN_NAME}/default-id"). Nothing else is done. - """ - ), + """), ) # start subcommand @@ -1808,16 +1778,14 @@ help="Start compositor", description="Generates units for given compositor command line or Desktop Entry and starts compositor.", parents=[parsers["wm_args"], parsers["wm_meta"]], - epilog=dedent( - f""" + epilog=dedent(f""" Compositor should either put WAYLAND_DISPLAY var into systemd user service environment itself, or finalize its startup by running this:\n \n {BIN_NAME} finalize [VAR ...]\n \n Otherwise, the compositor's unit will terminate due to startup timeout. - """ - ), + """), ) unit_rung_preset = False unit_rung_default = os.getenv("UWSM_UNIT_RUNG", None) @@ -1985,8 +1953,7 @@ formatter_class=HelpFormatterNewlines, help="Export variables from compositor, notify systemd of unit startup.", description="For use inside compositor to export essential variables and complete compositor unit startup.", - epilog=dedent( - """ + epilog=dedent(""" Exports variables to systemd user manager: WAYLAND_DISPLAY, DISPLAY, and any optional variables mentioned by name as arguments, or listed whitespace-separated in UWSM_FINALIZE_VARNAMES environment var.\n @@ -1996,8 +1963,7 @@ If all is well, sends startup notification to systemd user manager, so compositor unit is considered started and graphical-session.target can be declared reached. - """ - ), + """), ) parsers["finalize"].add_argument( "env_names", @@ -2055,42 +2021,36 @@ formatter_class=HelpFormatterNewlines, help="Application unit launcher", description="Launches application as a scope or service in specific slice.", - epilog=dedent( - """ + epilog=dedent(""" It is highly recommended to configure your compositor to launch apps via this command to fully utilize user-level systemd unit management.\n It would not be prudent to accumulate app processes in compositor's unit. - """ - ), + """), ) parsers["app"].add_argument( "cmdline", metavar="args", # allow empty cmdline if '-T' is given nargs=("*" if terminal_requested else "+"), - help=dedent( - """ + help=dedent(""" Application command line. The first argument can be either one of:\n - Executable name or path\n - Desktop Entry ID (with optional ":"-delimited action ID)\n - Path to Desktop Entry file (with optional ":"-delimited action ID)\n - """ - ), + """), ) parsers["app"].add_argument( "-s", dest="slice_name", metavar="{a,b,s,custom.slice}", - help=dedent( - f""" + help=dedent(f""" Slice selector:\n - {Styles.under}a{Styles.reset}pp-graphical.slice\n - {Styles.under}b{Styles.reset}ackground-graphical.slice\n - {Styles.under}s{Styles.reset}ession-graphical.slice\n - custom by full name\n (default: %(default)s) - """ - ), + """), default="a", ) app_unit_type_preset = False @@ -2160,12 +2120,10 @@ formatter_class=HelpFormatterNewlines, help="Performs state checks", description="Performs a check, returns 0 if true, 1 if false.", - epilog=dedent( - f""" + epilog=dedent(f""" Use may-start checker to integrate startup into shell profile See "{BIN_NAME} check may-start -h" - """ - ), + """), ) parsers["check_subparsers"] = parsers["check"].add_subparsers( title="Subcommands", @@ -2194,8 +2152,7 @@ formatter_class=HelpFormatterNewlines, help="Checks for start conditions", description="Checks whether it is OK to launch a wayland session.", - epilog=dedent( - """ + epilog=dedent(""" Conditions:\n - User's dbus is available - Running from login shell\n @@ -2204,8 +2161,7 @@ - Foreground and session's VT is among allowed (default: 1)\n \n This command is essential for integrating startup into shell profile. - """ - ), + """), ) parsers["may_start"].add_argument( "vtnr", @@ -2318,8 +2274,7 @@ formatter_class=HelpFormatterNewlines, help="Daemon for fast app argument generation.", description="Receives app arguments from a named pipe, returns shell code", - epilog=dedent( - f""" + epilog=dedent(f""" Receives app arguments via "${{XDG_RUNTIME_DIR}}/uwsm-app-daemon-in" pipe.\n Returns shell code to "${{XDG_RUNTIME_DIR}}/uwsm-app-daemon-out" pipe. \n @@ -2331,8 +2286,7 @@ app the rest is processed the same as in "{BIN_NAME} app"\n ping just "pong" is returned\n stop daemon is stopped\n - """ - ), + """), ) parsers["version"] = parsers["main"].add_argument( @@ -2785,8 +2739,7 @@ random_mark = random_hex(16) # aux vars for env loader - aux_vars = dedent( - f""" + aux_vars = dedent(f""" # vars for plugins __SELF_NAME__={shlex.quote(BIN_NAME)} __WM_ID__={shlex.quote(CompGlobals.id)} @@ -2801,8 +2754,7 @@ __RANDOM_MARK__={random_mark} # context marker for profile scripting IN_UWSM_ENV_PRELOADER=true - """ - ) + """) aux_vars_file = os.path.join( BaseDirectory.get_runtime_dir(strict=True), BIN_NAME, @@ -3399,7 +3351,7 @@ entry = entries[0] - unit_properties.append(f"SourcePath={entry.filename}") + unit_properties.append(f"SourcePath={os.path.abspath(entry.filename)}") # request terminal if entry.getTerminal(): @@ -3509,10 +3461,11 @@ print_debug("set app_name from DESKTOP_ENTRY_ID", app_name) if os.environ.get("DESKTOP_ENTRY_PATH", default=""): - unit_properties.append(f"SourcePath={os.environ.get('DESKTOP_ENTRY_PATH')}") + source_path = os.path.abspath(os.environ.get("DESKTOP_ENTRY_PATH")) + unit_properties.append(f"SourcePath={source_path}") print_debug( "set SourcePath property from DESKTOP_ENTRY_PATH", - os.environ.get("DESKTOP_ENTRY_PATH"), + source_path, ) # get localized entry name for description if no override @@ -4764,16 +4717,12 @@ ) sys.exit(1) elif Args.parsed.gst_warn_seconds >= 0 and not NoStdOutFlag.nowarn: - print_warning( - dedent( - """ + print_warning(dedent(""" System has not reached graphical.target. It might be a good idea to check default system target or screen for this with a condition, i.e. via "uwsm check may-start". Will continue in 5 seconds... - """ - ) - ) + """)) time.sleep(5) except Exception as caught_exception: @@ -4807,18 +4756,14 @@ try: fill_comp_globals() - print_normal( - dedent( - f""" + print_normal(dedent(f""" Selected compositor ID: {CompGlobals.id} Command Line: {shlex.join(CompGlobals.cmdline)} Plugin/binary ID: {CompGlobals.bin_id} Initial Desktop Names: {':'.join(CompGlobals.desktop_names)} Name: {CompGlobals.name} Description: {CompGlobals.description} - """ - ) - ) + """)) if is_active(verbose_active=True): print_error( diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/uwsm-0.26.4/version.sh new/uwsm-0.26.5/version.sh --- old/uwsm-0.26.4/version.sh 2026-02-19 20:20:36.000000000 +0100 +++ new/uwsm-0.26.5/version.sh 2026-06-13 15:44:19.000000000 +0200 @@ -4,7 +4,7 @@ # or prints back UWSM_VERSION env if set, # or prints a fallback version if not in git repo. -VERSION=0.26.4 +VERSION=0.26.5 set -e ++++++ uwsm.obsinfo ++++++ --- /var/tmp/diff_new_pack.mo4jwI/_old 2026-06-15 19:43:52.836512253 +0200 +++ /var/tmp/diff_new_pack.mo4jwI/_new 2026-06-15 19:43:52.840512421 +0200 @@ -1,5 +1,5 @@ name: uwsm -version: 0.26.4 -mtime: 1771528836 -commit: 3294dd3163bf9f2334b787b3cde5a14e56491404 +version: 0.26.5 +mtime: 1781358259 +commit: 7bdc515bd85c8c252b6d99111527a1c2da9cb60c
