Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package hyprland-protocols for openSUSE:Factory checked in at 2026-10-30 18:13:00 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/hyprland-protocols (Old) and /work/SRC/openSUSE:Factory/.hyprland-protocols.new.1255 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hyprland-protocols" Fri Oct 30 18:13:00 2026 rev:7 rq:1393770 version:0.8.0 Changes: -------- --- /work/SRC/openSUSE:Factory/hyprland-protocols/hyprland-protocols.changes 2026-08-09 21:38:17.048261859 +0200 +++ /work/SRC/openSUSE:Factory/.hyprland-protocols.new.1255/hyprland-protocols.changes 2026-10-30 18:21:20.406972792 +0100 @@ -1,0 +2,11 @@ +Wed Oct 28 16:36:45 UTC 2026 - Florian "sp1rit" <[email protected]> + +- Update to version 0.8.0: + * protocols: init workspace image source + * build: LANGUAGES NONE -> LANGUAGES C + * typo-fix: latin "C" instead of cyrillic "С" +- Changes from version 0.7.1: + * input-capture-v1: add destroy destructor to the session interface +- Moved from meson to cmake, as meson got dropped + +------------------------------------------------------------------- Old: ---- hyprland-protocols-0.7.0.tar.gz New: ---- hyprland-protocols-0.8.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ hyprland-protocols.spec ++++++ --- /var/tmp/diff_new_pack.Hj9UsJ/_old 2026-10-30 18:21:21.806031360 +0100 +++ /var/tmp/diff_new_pack.Hj9UsJ/_new 2026-10-30 18:21:21.811031569 +0100 @@ -20,11 +20,11 @@ Summary: Wayland extension protocol for Hyprland Group: Development/Libraries/Other License: BSD-3-Clause -Version: 0.7.0 +Version: 0.8.0 Release: 0 URL: https://github.com/hyprwm/hyprland-protocols Source0: https://github.com/hyprwm/hyprland-protocols/archive/refs/tags/v%{version}.tar.gz#/hyprland-protocols-%{version}.tar.gz -BuildRequires: meson +BuildRequires: cmake BuildRequires: pkgconfig BuildRequires: pkgconfig(uuid) BuildRequires: pkgconfig(wayland-client) @@ -47,11 +47,11 @@ %autosetup -p1 %build -%meson -%meson_build +%cmake +%cmake_build %install -%meson_install +%cmake_install %files devel %{_datadir}/pkgconfig/hyprland-protocols.pc ++++++ hyprland-protocols-0.7.0.tar.gz -> hyprland-protocols-0.8.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/CMakeLists.txt new/hyprland-protocols-0.8.0/CMakeLists.txt --- old/hyprland-protocols-0.7.0/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/hyprland-protocols-0.8.0/CMakeLists.txt 2026-10-16 13:14:00.000000000 +0200 @@ -0,0 +1,42 @@ +cmake_minimum_required(VERSION 3.20) + +file(STRINGS "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" HYPRLAND_PROTOCOLS_VERSION + LIMIT_COUNT 1) +string(STRIP "${HYPRLAND_PROTOCOLS_VERSION}" HYPRLAND_PROTOCOLS_VERSION) + +project( + hyprland-protocols + VERSION ${HYPRLAND_PROTOCOLS_VERSION} + LANGUAGES C) + +include(GNUInstallDirs) + +set(PROTOCOL_FILES + protocols/hyprland-toplevel-export-v1.xml + protocols/hyprland-global-shortcuts-v1.xml + protocols/hyprland-focus-grab-v1.xml + protocols/hyprland-ctm-control-v1.xml + protocols/hyprland-surface-v1.xml + protocols/hyprland-lock-notify-v1.xml + protocols/hyprland-toplevel-mapping-v1.xml + protocols/hyprland-input-capture-v1.xml + protocols/hyprland-workspace-image-capture-source-v1.xml) + +foreach(PROTOCOL_FILE ${PROTOCOL_FILES}) + get_filename_component(PROTOCOL_DIR ${PROTOCOL_FILE} DIRECTORY) + install( + FILES ${PROTOCOL_FILE} + DESTINATION "${CMAKE_INSTALL_DATADIR}/hyprland-protocols/${PROTOCOL_DIR}") +endforeach() + +# Configure pkg-config file +set(prefix "${CMAKE_INSTALL_PREFIX}") +set(datarootdir "\${prefix}/${CMAKE_INSTALL_DATADIR}") +set(abs_top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}") +set(PACKAGE "hyprland-protocols") + +configure_file(hyprland-protocols.pc.in hyprland-protocols.pc @ONLY) + +# Install pkg-config file +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/hyprland-protocols.pc" + DESTINATION "${CMAKE_INSTALL_DATADIR}/pkgconfig") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/README.md new/hyprland-protocols-0.8.0/README.md --- old/hyprland-protocols-0.7.0/README.md 2025-10-04 22:37:23.000000000 +0200 +++ new/hyprland-protocols-0.8.0/README.md 2026-10-16 13:14:00.000000000 +0200 @@ -1,4 +1,5 @@ # hyprland-protocols + Wayland protocol extensions for Hyprland. This repository exists in an effort to bridge the gap between Hyprland and KDE/Gnome's functionality, @@ -10,6 +11,7 @@ Some of the protocols here also do not belong in w-p, as they are specific to Hyprland. ## Finished protocols + - `hyprland_toplevel_export` -> for exporting toplevel buffers (aka. windows) for screensharing - `hyprland_global_keybindings` -> for managing global keybinds via D-Bus. - `hyprland_focus_grab` -> for grabbing input focus, primarily for complex context menus. @@ -18,16 +20,18 @@ - `hyprland_lock_notify` -> for notifying a client about the screen being locked and unlocked. - `hyprland_toplevel_mapping` -> for mapping toplevels to hyprland IDs. - `hyprland_input_capture` -> for EIS input capture. +- `hyprland_workspace_image_capture_source` -> for screensharing a workspace. ## Building + ```sh -git clone https://github.com/hyprwm/hyprland-protocols -cd hyprland-protocols -meson setup build -sudo meson install -C build +git clone https://github.com/hyprwm/hyprland-protocols && cd hyprland-protocols +cmake -S . -B ./build +cmake --build ./build ``` ## Contributing + Adding new protocols is *discouraged*, as most things you think of can already be done one way or another. However, if the protocol has a good reason to be, and you have an impl ready, feel free to make a PR. We're always up for a discussion to improve things! @@ -35,4 +39,3 @@ Fixing typos / adding explanations to existing protocols - welcome. Adding functionality to protocols / new revisions - welcome, if accompanied with a reason and an impl. - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/VERSION new/hyprland-protocols-0.8.0/VERSION --- old/hyprland-protocols-0.7.0/VERSION 2025-10-04 22:37:23.000000000 +0200 +++ new/hyprland-protocols-0.8.0/VERSION 2026-10-16 13:14:00.000000000 +0200 @@ -1 +1 @@ -0.7.0 +0.8.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/flake.lock new/hyprland-protocols-0.8.0/flake.lock --- old/hyprland-protocols-0.7.0/flake.lock 2025-10-04 22:37:23.000000000 +0200 +++ new/hyprland-protocols-0.8.0/flake.lock 2026-10-16 13:14:00.000000000 +0200 @@ -2,11 +2,11 @@ "nodes": { "nixpkgs": { "locked": { - "lastModified": 1721138476, - "narHash": "sha256-+W5eZOhhemLQxelojLxETfbFbc19NWawsXBlapYpqIA=", + "lastModified": 1772198003, + "narHash": "sha256-I45esRSssFtJ8p/gLHUZ1OUaaTaVLluNkABkk6arQwE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ad0b5eed1b6031efaed382844806550c3dcb4206", + "rev": "dd9b079222d43e1943b6ebd802f04fd959dc8e61", "type": "github" }, "original": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/flake.nix new/hyprland-protocols-0.8.0/flake.nix --- old/hyprland-protocols-0.7.0/flake.nix 2025-10-04 22:37:23.000000000 +0200 +++ new/hyprland-protocols-0.8.0/flake.nix 2026-10-16 13:14:00.000000000 +0200 @@ -7,40 +7,32 @@ systems.url = "github:nix-systems/default-linux"; }; - outputs = { - self, - nixpkgs, - systems, - ... - }: let - inherit (nixpkgs) lib; - eachSystem = lib.genAttrs (import systems); - pkgsFor = eachSystem (system: - import nixpkgs { - localSystem = system; - overlays = [self.overlays.hyprland-protocols]; - }); - mkDate = longDate: (lib.concatStringsSep "-" [ - (builtins.substring 0 4 longDate) - (builtins.substring 4 2 longDate) - (builtins.substring 6 2 longDate) - ]); - version = lib.removeSuffix "\n" (builtins.readFile ./VERSION); - in { - overlays = { - default = self.overlays.hyprland-protocols; - hyprland-protocols = final: prev: { - hyprland-protocols = final.callPackage ./nix/default.nix { - version = version + "+date=" + (mkDate (self.lastModifiedDate or "19700101")) + "_" + (self.shortRev or "dirty"); - }; - }; - }; + outputs = + { + self, + nixpkgs, + systems, + ... + }: + let + inherit (nixpkgs) lib; + eachSystem = lib.genAttrs (import systems); + pkgsFor = eachSystem ( + system: + import nixpkgs { + localSystem = system; + overlays = [ self.overlays.hyprland-protocols ]; + } + ); + in + { + overlays = import ./nix/overlays.nix { inherit lib self; }; - packages = eachSystem (system: { - inherit (pkgsFor.${system}) hyprland-protocols; - default = self.packages.${system}.hyprland-protocols; - }); + packages = eachSystem (system: { + inherit (pkgsFor.${system}) hyprland-protocols; + default = self.packages.${system}.hyprland-protocols; + }); - formatter = eachSystem (system: nixpkgs.legacyPackages.${system}.alejandra); - }; + formatter = eachSystem (system: nixpkgs.legacyPackages.${system}.nixfmt-tree); + }; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/meson.build new/hyprland-protocols-0.8.0/meson.build --- old/hyprland-protocols-0.7.0/meson.build 2025-10-04 22:37:23.000000000 +0200 +++ new/hyprland-protocols-0.8.0/meson.build 1970-01-01 01:00:00.000000000 +0100 @@ -1,66 +0,0 @@ -project('hyprland-protocols', - version: run_command('cat', 'VERSION', check: true).stdout().strip(), - meson_version: '>= 0.60.3', -) - -hyprland_protocols_version = meson.project_version() - -fs = import('fs') - -protocols = { - 'hyprland-toplevel-export': ['v1'], - 'hyprland-toplevel-mapping': ['v1'], - 'hyprland-global-shortcuts': ['v1'], - 'hyprland-focus-grab': ['v1'], - 'hyprland-ctm-control': ['v1'], - 'hyprland-surface': ['v1'], - 'hyprland-lock-notify': ['v1'], - 'hyprland-input-capture': ['v1'], -} - -protocol_files = [] - -foreach name : protocols.keys() - foreach version : protocols.get(name) - protocol_files += [ - 'protocols/@0@-@[email protected]'.format(name, version) - ] - endforeach -endforeach - -foreach protocol_file : protocol_files - protocol_install_dir = fs.parent(join_paths( - get_option('datadir'), - 'hyprland-protocols', - protocol_file, - )) - install_data( - protocol_file, - install_dir: protocol_install_dir, - ) -endforeach - -hyprland_protocols_srcdir = meson.current_source_dir() - -pkgconfig_configuration = configuration_data() -pkgconfig_configuration.set('prefix', get_option('prefix')) -pkgconfig_configuration.set('datarootdir', '${prefix}/@0@'.format(get_option('datadir'))) -pkgconfig_configuration.set('abs_top_srcdir', hyprland_protocols_srcdir) -pkgconfig_configuration.set('PACKAGE', 'hyprland-protocols') -pkgconfig_configuration.set('HYPRLAND_PROTOCOLS_VERSION', hyprland_protocols_version) - -pkg_install_dir = join_paths(get_option('datadir'), 'pkgconfig') -configure_file( - input: 'hyprland-protocols.pc.in', - output: 'hyprland-protocols.pc', - configuration: pkgconfig_configuration, - install_dir: pkg_install_dir, -) - -hyprland_protocols = declare_dependency( - variables: { - 'pkgdatadir': hyprland_protocols_srcdir, - }, -) - -meson.override_dependency('hyprland-protocols', hyprland_protocols) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/nix/default.nix new/hyprland-protocols-0.8.0/nix/default.nix --- old/hyprland-protocols-0.7.0/nix/default.nix 2025-10-04 22:37:23.000000000 +0200 +++ new/hyprland-protocols-0.8.0/nix/default.nix 2026-10-16 13:14:00.000000000 +0200 @@ -1,8 +1,7 @@ { lib, stdenv, - meson, - ninja, + cmake, version, }: stdenv.mkDerivation { @@ -11,7 +10,7 @@ src = ../.; - nativeBuildInputs = [meson ninja]; + nativeBuildInputs = [ cmake ]; meta = { homepage = "https://github.com/hyprwm/hyprland-protocols"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/nix/overlays.nix new/hyprland-protocols-0.8.0/nix/overlays.nix --- old/hyprland-protocols-0.7.0/nix/overlays.nix 1970-01-01 01:00:00.000000000 +0100 +++ new/hyprland-protocols-0.8.0/nix/overlays.nix 2026-10-16 13:14:00.000000000 +0200 @@ -0,0 +1,26 @@ +{ lib, self, ... }: +let + + mkDate = + longDate: + (lib.concatStringsSep "-" [ + (builtins.substring 0 4 longDate) + (builtins.substring 4 2 longDate) + (builtins.substring 6 2 longDate) + ]); + version = lib.removeSuffix "\n" (builtins.readFile ../VERSION); +in +{ + default = self.overlays.hyprland-protocols; + + hyprland-protocols = final: prev: { + hyprland-protocols = final.callPackage ./default.nix { + version = + version + + "+date=" + + (mkDate (self.lastModifiedDate or "19700101")) + + "_" + + (self.shortRev or "dirty"); + }; + }; +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/protocols/hyprland-input-capture-v1.xml new/hyprland-protocols-0.8.0/protocols/hyprland-input-capture-v1.xml --- old/hyprland-protocols-0.7.0/protocols/hyprland-input-capture-v1.xml 2025-10-04 22:37:23.000000000 +0200 +++ new/hyprland-protocols-0.8.0/protocols/hyprland-input-capture-v1.xml 2026-10-16 13:14:00.000000000 +0200 @@ -35,7 +35,7 @@ This protocol is a bridge of the XDG input capture to the compositor. </description> - <interface name="hyprland_input_capture_manager_v1" version="1"> + <interface name="hyprland_input_capture_manager_v1" version="2"> <description summary="manage input capture sessions"> This interface allows to create an input capture session. </description> @@ -50,7 +50,7 @@ </request> </interface> - <interface name="hyprland_input_capture_v1" version="1"> + <interface name="hyprland_input_capture_v1" version="2"> <description summary="close reproduction of the xdg input capture portal"> Interface that is used to create barrier, and trigger capture and release of the pointer. The inputs are sent through an EIS socket, when the cursor hit a barrier. @@ -143,6 +143,16 @@ summary="same activation id of the latest activated event" /> </event> + <request name="destroy" type="destructor" since="2"> + <description summary="destroy the session"> + Destroy the input capture session. + + Any barriers registered by this session are removed, input capturing is + stopped, and the eis socket associated with this session is closed by the + compositor. The client must not use the object after this request. + </description> + </request> + <enum name="error"> <entry name="invalid_barrier_id" value="0" summary="The barrier id already exist"/> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprland-protocols-0.7.0/protocols/hyprland-workspace-image-capture-source-v1.xml new/hyprland-protocols-0.8.0/protocols/hyprland-workspace-image-capture-source-v1.xml --- old/hyprland-protocols-0.7.0/protocols/hyprland-workspace-image-capture-source-v1.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/hyprland-protocols-0.8.0/protocols/hyprland-workspace-image-capture-source-v1.xml 2026-10-16 13:14:00.000000000 +0200 @@ -0,0 +1,90 @@ +<?xml version="1.0" encoding="UTF-8"?> +<protocol name="hyprland_workspace_image_capture_source_v1"> + <copyright> + Copyright © 2026 Vaxry + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + 3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + </copyright> + + <description summary="image capture sources for workspaces"> + This protocol is a Hyprland extension for capturing workspace contents. + </description> + + <interface name="hyprland_workspace_image_capture_source_manager_v1" version="1"> + <description summary="image capture source manager for workspaces"> + This manager can create ICC capture sources from ext-workspace handles. + </description> + + <enum name="capture_mode"> + <description summary="content included in the source image"> + This enum describes the allowed capture modes. + </description> + + <entry name="windows_only" value="0"> + <description summary="workspace windows only"> + Include only the selected workspace's windows and their associated + surfaces and decorations. The background will be transparent. + </description> + </entry> + + <entry name="everything" value="1"> + <description summary="workspace windows and output-global desktop elements"> + Include the selected workspace's windows together with wallpaper, + panels, pinned windows, and other output-global surfaces, including + layer-shell surfaces, associated with its output. + </description> + </entry> + </enum> + + <enum name="error"> + <entry name="invalid_mode" value="0" summary="unknown capture mode"/> + </enum> + + <request name="create_source"> + <description summary="create an image capture source for a workspace"> + Create an ICC capture source from a given workspace handle. + + This source does not own the workspace handle. If the workspace is + removed, further attempts to share this source's contents will produce + a transparent, empty image. + </description> + <arg name="source" type="new_id" interface="ext_image_capture_source_v1" + summary="new workspace image capture source"/> + <arg name="workspace" type="object" interface="ext_workspace_handle_v1" + summary="workspace to capture"/> + <arg name="mode" type="uint" enum="capture_mode" + summary="content to include in the source image"/> + </request> + + <request name="destroy" type="destructor"> + <description summary="destroy the manager"> + Destroy this manager. Sources and capture sessions created through + this manager remain valid after its destruction. + </description> + </request> + </interface> +</protocol>
