diff --git a/meson.build b/meson.build index c44ce23..35fa5be 100644 --- a/meson.build +++ b/meson.build @@ -13,6 +13,7 @@ protocols = { 'hyprland-focus-grab': ['v1'], 'hyprland-ctm-control': ['v1'], 'hyprland-surface': ['v1'], + 'hyprland-input-capture': ['v1'], } protocol_files = [] diff --git a/meson.build.orig b/meson.build.orig new file mode 100644 index 0000000..ef5d1cf --- /dev/null +++ b/meson.build.orig @@ -0,0 +1,67 @@ +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-global-shortcuts': ['v1'], + 'hyprland-focus-grab': ['v1'], + 'hyprland-ctm-control': ['v1'], +<<<<<<< HEAD + 'hyprland-surface': ['v1'], +======= + 'hyprland-input-capture': ['v1'], +>>>>>>> f9641d6 (WIP: input capture) +} + +protocol_files = [] + +foreach name : protocols.keys() + foreach version : protocols.get(name) + protocol_files += [ + 'protocols/@0@-@1@.xml'.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 --git a/protocols/hyprland-input-capture-v1.xml b/protocols/hyprland-input-capture-v1.xml new file mode 100644 index 0000000..abf8e10 --- /dev/null +++ b/protocols/hyprland-input-capture-v1.xml @@ -0,0 +1,77 @@ + + + + + Copyright © 2024 Fl0w + 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. + + + + This protocol allows clients to create bordel for when the mouse cross, + the inputs are send to the client. + + Usefull for implementing the input capture portal. + + + + + This interface allow a client to capture inputs and receive events + + + + + Start the capturing of inputs. + + + + + + End the capturing of inputs. + + + + + + Event trigger when the mouse cursor mouse. It contains + the absolute position of x and y and also the relative motion of the pointer. + Note that the dx and dy vectors can be accelerated, please use the relative motion protocol + for unaccelerated inputs. + + + + + + + + +