Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package waycheck for openSUSE:Factory checked in at 2025-06-30 13:04:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/waycheck (Old) and /work/SRC/openSUSE:Factory/.waycheck.new.7067 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "waycheck" Mon Jun 30 13:04:41 2025 rev:14 rq:1288910 version:1.7.0 Changes: -------- --- /work/SRC/openSUSE:Factory/waycheck/waycheck.changes 2025-02-20 16:38:15.332712111 +0100 +++ /work/SRC/openSUSE:Factory/.waycheck.new.7067/waycheck.changes 2025-06-30 13:06:06.404961920 +0200 @@ -1,0 +2,12 @@ +Sat Jun 28 02:09:16 UTC 2025 - Neal Gompa <ngo...@opensuse.org> + +- Update to 1.7.0 + + Add Phosh's protocols 📱 + + Update upstream protocols to v1.45 + + Make Compositor text mouse-selectable + + Fix text-input-unstable-v3 detection + + Move unknown compositor tooltip to a dedicated button + + Rename 'Treeland' to 'Deepin' + + (a11y) Resolve table-related tab navigation issues + +------------------------------------------------------------------- Old: ---- waycheck-v1.6.0.tar.gz New: ---- waycheck-v1.7.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ waycheck.spec ++++++ --- /var/tmp/diff_new_pack.SLNirZ/_old 2025-06-30 13:06:07.325000039 +0200 +++ /var/tmp/diff_new_pack.SLNirZ/_new 2025-06-30 13:06:07.325000039 +0200 @@ -19,8 +19,8 @@ %global qt6_minver 6.5 Name: waycheck -Version: 1.6.0 -Release: 0 +Version: 1.7.0 +Release: 1%{?dist} Summary: GUI that displays protocols implemented by a Wayland compositor License: Apache-2.0 ++++++ waycheck-v1.6.0.tar.gz -> waycheck-v1.7.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waycheck-v1.6.0/README.md new/waycheck-v1.7.0/README.md --- old/waycheck-v1.6.0/README.md 2025-02-19 04:55:46.000000000 +0100 +++ new/waycheck-v1.7.0/README.md 2025-06-27 21:43:51.000000000 +0200 @@ -1,4 +1,9 @@ -# Waycheck +# <img src="resources/dev.serebit.Waycheck.svg" alt="Magothy logo" width="24" style="position: relative; top: 6px;"/> Waycheck + +[](https://gitlab.freedesktop.org/serebit/waycheck/-/releases) +[](https://flathub.org/apps/dev.serebit.Waycheck) +[](https://gitlab.freedesktop.org/serebit/waycheck/-/pipelines) +[](https://api.reuse.software/info/gitlab.freedesktop.org/serebit/waycheck) Waycheck is a simple Qt6 application that displays all of the Wayland protocols that your compositor supports, and all of the protocols that it doesn't support. It can be used to compare protocol support between compositors, or if you're working on your own compositor, to keep track of which protocols you still need to implement. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waycheck-v1.6.0/meson.build new/waycheck-v1.7.0/meson.build --- old/waycheck-v1.6.0/meson.build 2025-02-19 04:55:46.000000000 +0100 +++ new/waycheck-v1.7.0/meson.build 2025-06-27 21:43:51.000000000 +0200 @@ -1,7 +1,7 @@ project( 'waycheck', 'cpp', - version: '1.6.0', + version: '1.7.0', license: 'Apache-2.0', meson_version: '>= 0.59.0', default_options: ['cpp_std=c++20', 'warning_level=3'], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waycheck-v1.6.0/resources/dev.serebit.Waycheck.metainfo.xml new/waycheck-v1.7.0/resources/dev.serebit.Waycheck.metainfo.xml --- old/waycheck-v1.6.0/resources/dev.serebit.Waycheck.metainfo.xml 2025-02-19 04:55:46.000000000 +0100 +++ new/waycheck-v1.7.0/resources/dev.serebit.Waycheck.metainfo.xml 2025-06-27 21:43:51.000000000 +0200 @@ -65,6 +65,20 @@ </screenshots> <releases> + <release version="1.7.0" date="2025-06-27"> + <url>https://gitlab.freedesktop.org/serebit/waycheck/-/releases/v1.7.0</url> + <description> + <ul> + <li>Update upstream protocol list to v1.45</li> + <li>Add Phosh protocols 📱</li> + <li>Rename Treeland to Deepin</li> + <li>Make "Compositor" text mouse-selectable</li> + <li>Fix detection of the text-input-unstable-v3 protocol</li> + <li>Move unknown-compositor tooltip to a dedicated button</li> + <li>Resolve table-related tab-key navigation issues</li> + </ul> + </description> + </release> <release version="1.6.0" date="2025-02-18"> <url>https://gitlab.freedesktop.org/serebit/waycheck/-/releases/v1.6.0</url> <description> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waycheck-v1.6.0/src/protocols.cpp new/waycheck-v1.7.0/src/protocols.cpp --- old/waycheck-v1.6.0/src/protocols.cpp 2025-02-19 04:55:46.000000000 +0100 +++ new/waycheck-v1.7.0/src/protocols.cpp 2025-06-27 21:43:51.000000000 +0200 @@ -3,6 +3,11 @@ #include <ranges> ProtocolStore::ProtocolStore() noexcept { + // The format for this table is as follows: + // add({ProtocolSource, ProtocolStatus, "Protocol common name", "protocol-xml-file-name"}, {"server_global_name_1", ...}); + // Any and all globals that would be exposed by the Wayland SERVER must be added. + // Client-side globals must be excluded. + // clang-format off add({UPSTREAM, STABLE, "Linux DMA-BUF", "linux-dmabuf-v1"}, {"zwp_linux_dmabuf_v1"}); add({UPSTREAM, STABLE, "Presentation time", "presentation-time"}, {"wp_presentation"}); @@ -12,11 +17,13 @@ add({UPSTREAM, STAGING, "Color management", "color-management-v1"}, {"wp_color_manager_v1"}); add({UPSTREAM, STAGING, "Alpha modifier", "alpha-modifier-v1"}, {"wp_alpha_modifier_v1"}); + add({UPSTREAM, STAGING, "Color representation", "color-representation-v1"}, {"wp_color_representation_manager_v1"}); add({UPSTREAM, STAGING, "Commit timing", "commit-timing-v1"}, {"wp_commit_timing_manager_v1"}); add({UPSTREAM, STAGING, "Content type hint", "content-type-v1"}, {"wp_content_type_manager_v1"}); add({UPSTREAM, STAGING, "Cursor shape", "cursor-shape-v1"}, {"wp_cursor_shape_manager_v1"}); add({UPSTREAM, STAGING, "Data control", "ext-data-control-v1"}, {"ext_data_control_manager_v1"}); add({UPSTREAM, STAGING, "DRM lease", "drm-lease-v1"}, {"wp_drm_lease_device_v1"}); + add({UPSTREAM, STAGING, "Background effect", "ext-background-effect-v1"}, {"ext_background_effect_manager_v1"}); add({UPSTREAM, STAGING, "FIFO", "fifo-v1"}, {"wp_fifo_manager_v1"}); add({UPSTREAM, STAGING, "Image capture source", "ext-image-capture-source-v1"}, {"ext_output_image_capture_source_manager_v1", "ext_foreign_toplevel_image_capture_source_manager_v1"}); add({UPSTREAM, STAGING, "Image copy capture", "ext-image-copy-capture-v1"}, {"ext_image_copy_capture_manager_v1"}); @@ -24,6 +31,7 @@ add({UPSTREAM, STAGING, "Fractional scale", "fractional-scale-v1"}, {"wp_fractional_scale_manager_v1"}); add({UPSTREAM, STAGING, "Idle notify", "ext-idle-notify-v1"}, {"ext_idle_notifier_v1"}); add({UPSTREAM, STAGING, "Linux DRM syncobj", "linux-drm-syncobj-v1"}, {"wp_linux_drm_syncobj_manager_v1"}); + add({UPSTREAM, STAGING, "Pointer warp", "pointer-warp-v1"}, {"wp_pointer_warp_v1"}); add({UPSTREAM, STAGING, "Security context", "security-context-v1"}, {"wp_security_context_manager_v1"}); add({UPSTREAM, STAGING, "Session lock", "ext-session-lock-v1"}, {"ext_session_lock_manager_v1"}); add({UPSTREAM, STAGING, "Single-pixel buffer", "single-pixel-buffer-v1"}, {"wp_single_pixel_buffer_manager_v1"}); @@ -35,6 +43,7 @@ add({UPSTREAM, STAGING, "XDG system bell", "xdg-system-bell-v1"}, {"xdg_system_bell_v1"}); add({UPSTREAM, STAGING, "XDG toplevel drag", "xdg-toplevel-drag-v1"}, {"xdg_toplevel_drag_manager_v1"}); add({UPSTREAM, STAGING, "XDG toplevel icon", "xdg-toplevel-icon-v1"}, {"xdg_toplevel_icon_manager_v1"}); + add({UPSTREAM, STAGING, "XDG toplevel tag", "xdg-toplevel-tag-v1"}, {"xdg_toplevel_tag_manager_v1"}); add({UPSTREAM, STAGING, "Xwayland shell", "xwayland-shell-v1"}, {"xwayland_shell_v1"}); add({UPSTREAM, UNSTABLE, "Fullscreen shell", "fullscreen-shell-unstable-v1"}, {"zwp_fullscreen_shell_v1"}); @@ -47,7 +56,7 @@ add({UPSTREAM, UNSTABLE, "Pointer gestures", "pointer-gestures-unstable-v1"}, {"zwp_pointer_gestures_v1"}); add({UPSTREAM, UNSTABLE, "Primary selection", "primary-selection-unstable-v1"}, {"zwp_primary_selection_device_manager_v1"}); add({UPSTREAM, UNSTABLE, "Relative pointer", "relative-pointer-unstable-v1"}, {"zwp_relative_pointer_manager_v1"}); - add({UPSTREAM, UNSTABLE, "Text input", "text-input-unstable-v3"}, {"zwp_text_input_v3"}); + add({UPSTREAM, UNSTABLE, "Text input", "text-input-unstable-v3"}, {"zwp_text_input_manager_v3"}); add({UPSTREAM, UNSTABLE, "XDG decoration", "xdg-decoration-unstable-v1"}, {"zxdg_decoration_manager_v1"}); add({UPSTREAM, UNSTABLE, "XDG foreign v1", "xdg-foreign-unstable-v1"}, {"zxdg_importer_v1", "zxdg_exporter_v1"}); add({UPSTREAM, UNSTABLE, "XDG foreign v2", "xdg-foreign-unstable-v2"}, {"zxdg_importer_v2", "zxdg_exporter_v2"}); @@ -117,15 +126,15 @@ add({CHROMEOS, NONE, "Overlay prioritizer", "overlay-prioritizer"}, {"overlay_prioritizer"}); add({CHROMEOS, NONE, "Surface augmenter", "surface-augmenter"}, {"surface_augmenter"}); - add({TREELAND, NONE, "Capture", "treeland-capture-unstable-v1"}, {"treeland_capture_session_v1"}); - add({TREELAND, NONE, "DDE shell", "treeland-dde-shell-v1"}, {"treeland_dde_shell_manager_v1"}); - add({TREELAND, NONE, "Foreign toplevel manager", "treeland-foreign-toplevel-manager-v1"}, {"treeland_foreign_toplevel_manager_v1"}); - add({TREELAND, NONE, "Output manager", "treeland-output-manager-v1"}, {"treeland_output_manager_v1"}); - add({TREELAND, NONE, "Personalization manager", "treeland-personalization-manager-v1"}, {"treeland_personalization_manager_v1"}); - add({TREELAND, NONE, "Shortcut manager", "treeland-shortcut-manager-v1"}, {"treeland_shortcut_manager_v1"}); - add({TREELAND, NONE, "Virtual output manager", "treeland-virtual-output-manager-v1"}, {"treeland_virtual_output_manager_v1"}); - add({TREELAND, NONE, "Wallpaper color", "treeland-wallpaper-color-v1"}, {"treeland_wallpaper_color_manager_v1"}); - add({TREELAND, NONE, "Window management", "treeland-window-management-v1"}, {"treeland_window_management_v1"}); + add({DEEPIN, NONE, "Capture", "treeland-capture-unstable-v1"}, {"treeland_capture_session_v1"}); + add({DEEPIN, NONE, "DDE shell", "treeland-dde-shell-v1"}, {"treeland_dde_shell_manager_v1"}); + add({DEEPIN, NONE, "Foreign toplevel manager", "treeland-foreign-toplevel-manager-v1"}, {"treeland_foreign_toplevel_manager_v1"}); + add({DEEPIN, NONE, "Output manager", "treeland-output-manager-v1"}, {"treeland_output_manager_v1"}); + add({DEEPIN, NONE, "Personalization manager", "treeland-personalization-manager-v1"}, {"treeland_personalization_manager_v1"}); + add({DEEPIN, NONE, "Shortcut manager", "treeland-shortcut-manager-v1"}, {"treeland_shortcut_manager_v1"}); + add({DEEPIN, NONE, "Virtual output manager", "treeland-virtual-output-manager-v1"}, {"treeland_virtual_output_manager_v1"}); + add({DEEPIN, NONE, "Wallpaper color", "treeland-wallpaper-color-v1"}, {"treeland_wallpaper_color_manager_v1"}); + add({DEEPIN, NONE, "Window management", "treeland-window-management-v1"}, {"treeland_window_management_v1"}); add({FROG, NONE, "Frog color management", "frog-color-management-v1"}, {"frog_color_management_factory_v1"}); add({FROG, NONE, "Frog FIFO constraints", "frog-fifo-v1"}, {"frog_fifo_manager_v1"}); @@ -135,6 +144,10 @@ add({GAMESCOPE, NONE, "Gamescope PipeWire", "gamescope-pipewire"}, {"gamescope_pipewire"}); add({GAMESCOPE, NONE, "Gamescope reshade", "gamescope-reshade"}, {"gamescope_reshade"}); add({GAMESCOPE, NONE, "Gamescope swapchain", "gamescope-swapchain"}, {"gamescope_swapchain_factory_v2"}); + + add({PHOSH, NONE, "Phoc device state", "phoc-device-state-v1"}, {"zphoc_device_state_v1"}); + add({PHOSH, NONE, "Phoc layer shell effects", "phoc-layer-shell-effects-v1"}, {"zphoc_layer_shell_effects_v1"}); + add({PHOSH, NONE, "Phosh private", "phosh-private"}, {"phosh_private"}); // clang-format on } @@ -182,12 +195,14 @@ return "Weston"; case CHROMEOS: return "ChromeOS"; - case TREELAND: - return "Treeland"; + case DEEPIN: + return "Deepin"; case FROG: return "Frog"; case GAMESCOPE: return "Gamescope"; + case PHOSH: + return "Phosh"; default: return "Unknown"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waycheck-v1.6.0/src/protocols.hpp new/waycheck-v1.7.0/src/protocols.hpp --- old/waycheck-v1.6.0/src/protocols.hpp 2025-02-19 04:55:46.000000000 +0100 +++ new/waycheck-v1.7.0/src/protocols.hpp 2025-06-27 21:43:51.000000000 +0200 @@ -21,9 +21,10 @@ COSMIC, WESTON, CHROMEOS, - TREELAND, + DEEPIN, FROG, GAMESCOPE, + PHOSH, }; struct Protocol { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waycheck-v1.6.0/src/window.cpp new/waycheck-v1.7.0/src/window.cpp --- old/waycheck-v1.6.0/src/window.cpp 2025-02-19 04:55:46.000000000 +0100 +++ new/waycheck-v1.7.0/src/window.cpp 2025-06-27 21:43:51.000000000 +0200 @@ -64,9 +64,10 @@ initTable(COSMIC, *ui->cosmicTable); initTable(WESTON, *ui->westonTable); initTable(CHROMEOS, *ui->chromeosTable); - initTable(TREELAND, *ui->treelandTable); + initTable(DEEPIN, *ui->deepinTable); initTable(FROG, *ui->frogTable); initTable(GAMESCOPE, *ui->gamescopeTable); + initTable(PHOSH, *ui->phoshTable); initTable(UNKNOWN, *ui->unknownTable); for (auto* protocol : store.getProtocols()) { @@ -75,7 +76,7 @@ ui->upstreamTable->sortByColumn(1, Qt::AscendingOrder); for (auto* table : - {ui->upstreamTable, ui->wlrootsTable, ui->kdeTable, ui->cosmicTable, ui->westonTable, ui->chromeosTable, ui->frogTable, ui->gamescopeTable}) { + {ui->upstreamTable, ui->wlrootsTable, ui->kdeTable, ui->cosmicTable, ui->westonTable, ui->chromeosTable, ui->frogTable, ui->gamescopeTable, ui->phoshTable}) { table->sortByColumn(0, Qt::AscendingOrder); } @@ -93,21 +94,29 @@ // Toolbar components auto* compositor = new QLabel(ui->toolbar); compositor->setText(QString::asprintf("Compositor: %s", pname.c_str())); - if (pname == "Unknown (Sandboxed)") { - compositor->setToolTip( - "When Waycheck runs in a sandbox, such as Flatpak or Snap, " - "it has no way to determine the process name of the Wayland server."); - } else if (pname == "Unknown") { - compositor->setToolTip( - "Waycheck could not determine the process name of the Wayland server. " - "If you're seeing this, please report the issue on our Freedesktop GitLab repository."); - } + compositor->setTextInteractionFlags(Qt::TextSelectableByMouse); compositor->setContentsMargins(4, 0, 0, 0); QFont font = compositor->font(); font.setPointSize(14); compositor->setFont(font); ui->toolbar->addWidget(compositor); + std::optional<std::string> helpText = std::nullopt; + if (pname == "Unknown (Sandboxed)") { + helpText = {"<nobr>When Waycheck runs in a sandbox, such as</nobr> Flatpak or Snap, " + "it has no way to determine the process name of the Wayland server."}; + } else if (pname == "Unknown") { + helpText = {"<nobr>Waycheck could not determine the process</nobr> name of the Wayland server. " + "If you're seeing this message, please report the issue on our Freedesktop GitLab repository."}; + } + + if (helpText.has_value()) { + auto* action = new QAction(); + action->setIcon(QIcon::fromTheme(QStringLiteral("help-contextual-symbolic"))); + action->setToolTip(QString::fromStdString(helpText.value())); + ui->toolbar->addAction(action); + } + auto* spacer = new QWidget(ui->toolbar); spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); ui->toolbar->addWidget(spacer); @@ -224,6 +233,7 @@ table.setEditTriggers(QAbstractItemView::NoEditTriggers); table.setSelectionMode(QAbstractItemView::SingleSelection); table.verticalHeader()->setVisible(false); + table.setTabKeyNavigation(false); table.setItemDelegate(new TableItemDelegate); table.setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); @@ -244,6 +254,16 @@ connect(model->filteredModel, &QSortFilterProxyModel::rowsInserted, resizeColumns); connect(model->filteredModel, &QSortFilterProxyModel::rowsRemoved, resizeColumns); + // only allow focus on the currently selected tab + connect(ui->toolBox, &QTabWidget::currentChanged, [this, &table](const int index) { + const int this_index = ui->toolBox->indexOf(&table); + if (index == this_index) { + table.setFocusPolicy(Qt::StrongFocus); + } else { + table.setFocusPolicy(Qt::NoFocus); + } + }); + // Set tab title auto titleTab = [this, model, &table](bool filtering) { const int index = ui->toolBox->indexOf(&table); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/waycheck-v1.6.0/src/window.ui new/waycheck-v1.7.0/src/window.ui --- old/waycheck-v1.6.0/src/window.ui 2025-02-19 04:55:46.000000000 +0100 +++ new/waycheck-v1.7.0/src/window.ui 2025-06-27 21:43:51.000000000 +0200 @@ -64,9 +64,10 @@ <widget class="QTableView" name="cosmicTable"/> <widget class="QTableView" name="westonTable"/> <widget class="QTableView" name="chromeosTable"/> - <widget class="QTableView" name="treelandTable"/> + <widget class="QTableView" name="deepinTable"/> <widget class="QTableView" name="frogTable"/> <widget class="QTableView" name="gamescopeTable"/> + <widget class="QTableView" name="phoshTable"/> <widget class="QTableView" name="unknownTable"/> </widget> </item>