Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package miriway for openSUSE:Factory checked in at 2026-01-30 18:22:54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/miriway (Old) and /work/SRC/openSUSE:Factory/.miriway.new.1995 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "miriway" Fri Jan 30 18:22:54 2026 rev:10 rq:1329914 version:26.01 Changes: -------- --- /work/SRC/openSUSE:Factory/miriway/miriway.changes 2025-11-01 23:35:56.101780529 +0100 +++ /work/SRC/openSUSE:Factory/.miriway.new.1995/miriway.changes 2026-01-30 18:23:00.163331816 +0100 @@ -1,0 +2,8 @@ +Thu Jan 29 17:33:42 UTC 2026 - Shawn Dunn <[email protected]> + +- Update version 26.01 + * Fix ext-workspace implementation + * Remove obselete workaround for Mir Bug + * Add a default wallpaper + +------------------------------------------------------------------- Old: ---- Miriway-25.12.tar.gz New: ---- Miriway-26.01.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ miriway.spec ++++++ --- /var/tmp/diff_new_pack.TeMFFs/_old 2026-01-30 18:23:02.107413402 +0100 +++ /var/tmp/diff_new_pack.TeMFFs/_new 2026-01-30 18:23:02.123414074 +0100 @@ -21,7 +21,7 @@ %define _name Miriway Name: miriway -Version: 25.12 +Version: 26.01 Release: 0 Summary: Simple Wayland compositor built on Mir License: GPL-3.0-only @@ -90,6 +90,7 @@ %license LICENSE %doc README.md CONFIGURING_MIRIWAY.md example-configs %{_bindir}/%{name}* +%{_datadir}/backgrounds/ %dir %{_sysconfdir}/xdg/xdg-%{name} %config(noreplace) %{_sysconfdir}/xdg/xdg-%{name}/%{name}-shell.config ++++++ Miriway-25.12.tar.gz -> Miriway-26.01.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/CMakeLists.txt new/Miriway-26.01/CMakeLists.txt --- old/Miriway-25.12/CMakeLists.txt 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/CMakeLists.txt 2026-01-26 11:01:07.000000000 +0100 @@ -85,6 +85,10 @@ DESTINATION ${CMAKE_INSTALL_DATADIR}/wayland-sessions/ ) +install(FILES ${CMAKE_SOURCE_DIR}/backgrounds/miriway.png + DESTINATION ${CMAKE_INSTALL_DATADIR}/backgrounds/ +) + install(FILES ${CMAKE_SOURCE_DIR}/miriway-shell.config DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/xdg/xdg-miriway ) Binary files old/Miriway-25.12/backgrounds/miriway.png and new/Miriway-26.01/backgrounds/miriway.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/miriway-background new/Miriway-26.01/miriway-background --- old/Miriway-25.12/miriway-background 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/miriway-background 2026-01-26 11:01:07.000000000 +0100 @@ -1,8 +1,12 @@ #! /bin/bash set -e +bindir=$(dirname $0) + if [ -e "$1" ]; then exec swaybg --image "$1" --mode fill --output '*' +elif [ -e "${bindir}/../share/backgrounds/miriway.png" ]; then + exec swaybg --image "${bindir}/../share/backgrounds/miriway.png" --mode fill --output '*' else exec swaybg --color '#3f3f3f' --output '*' fi diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/miriway-session.in new/Miriway-26.01/miriway-session.in --- old/Miriway-25.12/miriway-session.in 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/miriway-session.in 2026-01-26 11:01:07.000000000 +0100 @@ -1,4 +1,4 @@ -#!/bin/sh -eu +#!/bin/bash -l exec systemd-cat --identifier=miriway env MIRIWAY_SESSION_STARTUP="@CMAKE_INSTALL_FULL_LIBEXECDIR@/miriway-session-startup" MIRIWAY_SESSION_SHUTDOWN="@CMAKE_INSTALL_FULL_LIBEXECDIR@/miriway-session-shutdown" miriway "$@" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/miriway.cpp new/Miriway-26.01/miriway.cpp --- old/Miriway-25.12/miriway.cpp 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/miriway.cpp 2026-01-26 11:01:07.000000000 +0100 @@ -57,10 +57,6 @@ #include <functional> #include <iostream> -#if MIRAL_VERSION < MIR_VERSION_NUMBER(5, 6, 0) -#define MIRAL_HAS_BROKEN_INPUT_CONFIGURATION -#endif - using namespace miral; using namespace miriway; @@ -255,263 +251,6 @@ } return Decorations::prefer_csd(); } - -#ifdef MIRAL_HAS_BROKEN_INPUT_CONFIGURATION -class FixedInputConfiguration -{ -public: - FixedInputConfiguration(live_config::Store& store); - - void operator()(mir::Server& server); - -private: - class DeduplicatingStore : public live_config::Store - { - public: - explicit DeduplicatingStore(Store& underlying) : - underlying{underlying} - { - } - - void add_int_attribute(const live_config::Key& key, std::string_view description, HandleInt handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_int_attribute(key, description, handler); - } - } - void add_ints_attribute(const live_config::Key& key, std::string_view description, HandleInts handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_ints_attribute(key, description, handler); - } - } - void add_bool_attribute(const live_config::Key& key, std::string_view description, HandleBool handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_bool_attribute(key, description, handler); - } - } - void add_float_attribute(const live_config::Key& key, std::string_view description, HandleFloat handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_float_attribute(key, description, handler); - } - } - void add_floats_attribute(const live_config::Key& key, std::string_view description, HandleFloats handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_floats_attribute(key, description, handler); - } - } - void add_string_attribute(const live_config::Key& key, std::string_view description, HandleString handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_string_attribute(key, description, handler); - } - } - void add_strings_attribute(const live_config::Key& key, std::string_view description, - HandleStrings handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_strings_attribute(key, description, handler); - } - } - void add_int_attribute(const live_config::Key& key, std::string_view description, int preset, - HandleInt handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_int_attribute(key, description, preset, handler); - } - } - void add_ints_attribute(const live_config::Key& key, std::string_view description, std::span<int const> preset, - HandleInts handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_ints_attribute(key, description, preset, handler); - } - } - void add_bool_attribute(const live_config::Key& key, std::string_view description, bool preset, - HandleBool handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_bool_attribute(key, description, preset, handler); - } - } - void add_float_attribute(const live_config::Key& key, std::string_view description, float preset, - HandleFloat handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_float_attribute(key, description, preset, handler); - } - } - void add_floats_attribute(const live_config::Key& key, std::string_view description, std::span<float const> preset, - HandleFloats handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_floats_attribute(key, description, preset, handler); - } - } - void add_string_attribute(const live_config::Key& key, std::string_view description, std::string_view preset, - HandleString handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_string_attribute(key, description, preset, handler); - } - } - void add_strings_attribute(const live_config::Key& key, std::string_view description, - std::span<std::string const> preset, HandleStrings handler) override - { - if (known_keys.insert(key).second) - { - underlying.add_strings_attribute(key, description, preset, handler); - } - } - void on_done(HandleDone handler) override - { - underlying.on_done(handler); - } - - private: - Store& underlying; - std::set<live_config::Key> known_keys; - }; - - struct Self - { - Self(live_config::Store& store) : ic{store} {} - - InputConfiguration::Keyboard keyboard; - InputConfiguration::Mouse mouse; - InputConfiguration::Touchpad touchpad; - - InputConfiguration ic; - - void done() - { - ic.keyboard(keyboard); keyboard = { }; - ic.mouse(mouse); mouse = { }; - ic.touchpad(touchpad); touchpad = { }; - } - - void acceleration(live_config::Key const& key, std::optional<std::string_view> opt_val) - { - if (opt_val.has_value()) - { - auto val = *opt_val; - - if (val == "none") - { - mouse.acceleration(mir_pointer_acceleration_none); - } - else if (val == "adaptive") - { - mouse.acceleration(mir_pointer_acceleration_adaptive); - } - else - { - std::cerr << - std::format("Miriway [Warning]: Config key '{}' has invalid value:{}", key.to_string(), val) << - std::endl; - } - } - }; - - void acceleration_bias(live_config::Key const&, std::optional<float> opt_val) - { - if (opt_val.has_value()) - { - mouse.acceleration_bias(std::clamp(*opt_val, -1.0f, 1.0f)); - } - }; - - void scroll_mode(live_config::Key const& key, std::optional<std::string_view> opt_val) - { - if (opt_val.has_value()) - { - auto val = *opt_val; - - if (val == "none") - { - touchpad.scroll_mode(mir_touchpad_scroll_mode_none); - } - else if (val == "edge") - { - touchpad.scroll_mode(mir_touchpad_scroll_mode_edge_scroll); - } - else if (val == "two-finger") - { - touchpad.scroll_mode(mir_touchpad_scroll_mode_two_finger_scroll); - } - else if (val == "button-down") - { - touchpad.scroll_mode(mir_touchpad_scroll_mode_button_down_scroll); - } - else - { - std::cerr << - std::format("Miriway [Warning]: Config key '{}' has invalid value:{}", key.to_string(), val) << - std::endl; - } - } - }; - - void tap_to_click(live_config::Key const&, std::optional<bool> opt_val) - { - if (opt_val.has_value()) - { - touchpad.tap_to_click(*opt_val); - } - } - }; - std::shared_ptr<DeduplicatingStore> dedup_store; - std::shared_ptr<Self> self; -}; - -void FixedInputConfiguration::operator()(mir::Server& server) -{ - self->ic(server); -} - -FixedInputConfiguration::FixedInputConfiguration(live_config::Store& store) : - dedup_store(std::make_shared<DeduplicatingStore>(store)), - self{std::make_shared<Self>(*dedup_store)} -{ - dedup_store->on_done([self=self]() { self->done(); }); - - dedup_store->add_string_attribute( - live_config::Key{"pointer", "acceleration"}, - "Acceleration profile for mice and trackballs [none, adaptive]", - [self=self](auto... args) { self->acceleration(args...); }); - - dedup_store->add_float_attribute( - live_config::Key{"pointer", "acceleration_bias"}, - "Acceleration speed of mice within a range of [-1.0, 1.0]", - [self=self](auto... args) { self->acceleration_bias(args...); }); - - dedup_store->add_string_attribute( - live_config::Key{"touchpad", "scroll_mode"}, - "Scroll mode for touchpads: [edge, two-finger, button-down]", - [self=self](auto... args) { self->scroll_mode(args...); }); - - dedup_store->add_bool_attribute( - live_config::Key{"touchpad", "tap_to_click"}, - "1, 2, 3 finger tap mapping to left, right, middle click, respectively [true, false]", - [self=self](auto... args) { self->tap_to_click(args...); }); -} -#endif } int main(int argc, char const* argv[]) @@ -648,9 +387,6 @@ }); using miriway::Magnifier; // We want our Magnifier not the miral Magnifier -#ifdef MIRAL_HAS_BROKEN_INPUT_CONFIGURATION - using InputConfiguration = ::FixedInputConfiguration; -#endif auto const settings_file = std::filesystem::path{runner.config_file()}.replace_extension("settings"); live_config::IniFile config_store; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/miriway.desktop new/Miriway-26.01/miriway.desktop --- old/Miriway-25.12/miriway.desktop 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/miriway.desktop 2026-01-26 11:01:07.000000000 +0100 @@ -1,6 +1,6 @@ [Desktop Entry] Name=Miriway Comment=Mir/Wayland desktop environment -Exec=sh -lc miriway-session +Exec=miriway-session Type=Application TryExec=miriway-session \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/miriway_child_control.cpp new/Miriway-26.01/miriway_child_control.cpp --- old/Miriway-25.12/miriway_child_control.cpp 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/miriway_child_control.cpp 2026-01-26 11:01:07.000000000 +0100 @@ -30,6 +30,7 @@ #include <format> #include <iostream> #include <map> +#include <mutex> #include <numeric> class miriway::ChildControl::Self diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/miriway_ext_workspace_v1.cpp new/Miriway-26.01/miriway_ext_workspace_v1.cpp --- old/Miriway-25.12/miriway_ext_workspace_v1.cpp 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/miriway_ext_workspace_v1.cpp 2026-01-26 11:01:07.000000000 +0100 @@ -23,6 +23,8 @@ #include <miral/wayland_tools.h> #include <miral/wayland_extensions.h> +#include <mir/wayland/weak.h> + #include <cstring> #include <format> #include <list> @@ -78,7 +80,7 @@ private: miral::WaylandExtensions::Context const* const context; - std::vector<ExtWorkspaceManagerV1*> the_workspace_managers; + std::vector<mir::wayland::Weak<ExtWorkspaceManagerV1>> the_workspace_managers; miral::WaylandTools* const wltools; }; @@ -191,7 +193,7 @@ { { std:: lock_guard lock(all_the_outputs_mutex); - all_the_outputs.insert(output); + all_the_outputs.erase(output); } std::lock_guard lock{all_the_globals_mutex}; for (auto const& global : all_the_globals) @@ -233,8 +235,11 @@ { for (auto const& the_workspace_manager : the_workspace_managers) { - the_workspace_manager->output_deleted(wltools, output); - the_workspace_manager->send_done_event(); + if (the_workspace_manager) + { + the_workspace_manager.value().output_deleted(wltools, output); + the_workspace_manager.value().send_done_event(); + } } }); } @@ -356,36 +361,28 @@ void miriway::ExtWorkspaceManagerV1::Global::bind(wl_resource* new_ext_workspace_manager_v1) { - the_workspace_managers.emplace_back(new ExtWorkspaceManagerV1{new_ext_workspace_manager_v1}); + auto const the_workspace_manager = new ExtWorkspaceManagerV1{new_ext_workspace_manager_v1}; + the_workspace_managers.emplace_back(the_workspace_manager); { std::lock_guard lock(all_the_outputs_mutex); for (auto const &output: all_the_outputs) { - for (auto const& the_workspace_manager : the_workspace_managers) - { - the_workspace_manager->output_added(wltools, output); - } + the_workspace_manager->output_added(wltools, output); } } { std::lock_guard lock(all_the_workspaces_mutex); for (auto const& [wksp, state]: all_the_workspaces) { - for (auto const& the_workspace_manager : the_workspace_managers) - { - the_workspace_manager->workspace_created(wksp); - if (state == WkspState::active) - the_workspace_manager->workspace_activated(wksp); - else - the_workspace_manager->workspace_deactivated(wksp); - } + the_workspace_manager->workspace_created(wksp); + if (state == WkspState::active) + the_workspace_manager->workspace_activated(wksp); + else + the_workspace_manager->workspace_deactivated(wksp); } } - for (auto const& the_workspace_manager : the_workspace_managers) - { - the_workspace_manager->send_done_event(); - } + the_workspace_manager->send_done_event(); } void miriway::ExtWorkspaceManagerV1::Global::output_added(miral::Output const& output) @@ -394,8 +391,11 @@ { for (auto const& the_workspace_manager : the_workspace_managers) { - the_workspace_manager->output_added(wltools, output); - the_workspace_manager->send_done_event(); + if (the_workspace_manager) + { + the_workspace_manager.value().output_added(wltools, output); + the_workspace_manager.value().send_done_event(); + } } }); } @@ -406,8 +406,11 @@ { for (auto const& the_workspace_manager : the_workspace_managers) { - the_workspace_manager->workspace_destroyed(wksp); - the_workspace_manager->send_done_event(); + if (the_workspace_manager) + { + the_workspace_manager.value().workspace_destroyed(wksp); + the_workspace_manager.value().send_done_event(); + } } }); } @@ -418,8 +421,11 @@ { for (auto const& the_workspace_manager : the_workspace_managers) { - the_workspace_manager->workspace_deactivated(wksp); - the_workspace_manager->send_done_event(); + if (the_workspace_manager) + { + the_workspace_manager.value().workspace_deactivated(wksp); + the_workspace_manager.value().send_done_event(); + } } }); } @@ -430,8 +436,11 @@ { for (auto const& the_workspace_manager : the_workspace_managers) { - the_workspace_manager->workspace_activated(wksp); - the_workspace_manager->send_done_event(); + if (the_workspace_manager) + { + the_workspace_manager.value().workspace_activated(wksp); + the_workspace_manager.value().send_done_event(); + } } }); } @@ -442,8 +451,11 @@ { for (auto const& the_workspace_manager : the_workspace_managers) { - the_workspace_manager->workspace_created(wksp); - the_workspace_manager->send_done_event(); + if (the_workspace_manager) + { + the_workspace_manager.value().workspace_created(wksp); + the_workspace_manager.value().send_done_event(); + } } }); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/snap-utils/bin/miriway-session new/Miriway-26.01/snap-utils/bin/miriway-session --- old/Miriway-25.12/snap-utils/bin/miriway-session 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/snap-utils/bin/miriway-session 2026-01-26 11:01:07.000000000 +0100 @@ -1,4 +1,4 @@ -#!/bin/sh -eu +#!/bin/bash -l exec systemd-cat --identifier=miriway env MIRIWAY_SESSION_STARTUP="$SNAP/usr/libexec/miriway-session-startup-snap" MIRIWAY_SESSION_SHUTDOWN="$SNAP/usr/libexec/miriway-session-shutdown" miriway "$@" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Miriway-25.12/snap-utils/bin/miriway-unconfine new/Miriway-26.01/snap-utils/bin/miriway-unconfine --- old/Miriway-25.12/snap-utils/bin/miriway-unconfine 2025-11-01 15:57:09.000000000 +0100 +++ new/Miriway-26.01/snap-utils/bin/miriway-unconfine 2026-01-26 11:01:07.000000000 +0100 @@ -1,7 +1,12 @@ #! /bin/bash set -e -if command -v aa-exec > /dev/null +if [ -d /sys/kernel/security/apparmor ] then - exec aa-exec -p unconfined "$@" + if command -v aa-exec > /dev/null + then + exec aa-exec -p unconfined "$@" + else + echo "WARNING: AppArmor is installed, but aa-exec cannot found (needed to unconfine Miriway)" + fi fi exec "$@" \ No newline at end of file
