mirror of
https://gitlab.freedesktop.org/wayland/wayland-protocols.git
synced 2026-01-06 07:20:16 +01:00
The window id protocol allows clients to set a tag for toplevels, which the compositor can use to identify them even after the application has been restarted. This persistent identification can be used by the compositor to restore properties like position, size, "always on top", and it can also be used for allowing users to create rules that change compositor behavior for specific windows. Signed-off-by: Xaver Hugl <xaver.hugl@kde.org> Reviewed-by: Jonas Ådahl <jadahl@gmail.com>
169 lines
4.2 KiB
Meson
169 lines
4.2 KiB
Meson
project('wayland-protocols',
|
|
version: '1.42',
|
|
meson_version: '>= 0.58.0',
|
|
license: 'MIT/Expat',
|
|
)
|
|
|
|
wayland_protocols_version = meson.project_version()
|
|
|
|
fs = import('fs')
|
|
|
|
dep_scanner = dependency('wayland-scanner',
|
|
version: get_option('tests') ? '>=1.23.0' : '>=1.20.0',
|
|
native: true,
|
|
fallback: 'wayland'
|
|
)
|
|
prog_scanner = find_program(dep_scanner.get_variable(pkgconfig: 'wayland_scanner', internal: 'wayland_scanner'))
|
|
|
|
stable_protocols = {
|
|
'linux-dmabuf': ['v1'],
|
|
'presentation-time': [''],
|
|
'tablet': ['v2'],
|
|
'viewporter': [''],
|
|
'xdg-shell': [''],
|
|
}
|
|
|
|
unstable_protocols = {
|
|
'fullscreen-shell': ['v1'],
|
|
'idle-inhibit': ['v1'],
|
|
'input-method': ['v1'],
|
|
'input-timestamps': ['v1'],
|
|
'keyboard-shortcuts-inhibit': ['v1'],
|
|
'linux-dmabuf': ['v1'],
|
|
'linux-explicit-synchronization': ['v1'],
|
|
'pointer-constraints': ['v1'],
|
|
'pointer-gestures': ['v1'],
|
|
'primary-selection': ['v1'],
|
|
'relative-pointer': ['v1'],
|
|
'tablet': ['v1', 'v2'],
|
|
'text-input': ['v1', 'v3'],
|
|
'xdg-decoration': ['v1'],
|
|
'xdg-foreign': ['v1', 'v2'],
|
|
'xdg-output': ['v1'],
|
|
'xdg-shell': ['v5', 'v6'],
|
|
'xwayland-keyboard-grab': ['v1'],
|
|
}
|
|
|
|
staging_protocols = {
|
|
'alpha-modifier': ['v1'],
|
|
'color-management': ['v1'],
|
|
'commit-timing': ['v1'],
|
|
'content-type': ['v1'],
|
|
'cursor-shape': ['v1'],
|
|
'drm-lease': ['v1'],
|
|
'ext-data-control': ['v1'],
|
|
'ext-foreign-toplevel-list': ['v1'],
|
|
'ext-idle-notify': ['v1'],
|
|
'ext-image-capture-source': ['v1'],
|
|
'ext-image-copy-capture': ['v1'],
|
|
'ext-session-lock': ['v1'],
|
|
'ext-transient-seat': ['v1'],
|
|
'ext-workspace': ['v1'],
|
|
'fifo': ['v1'],
|
|
'fractional-scale': ['v1'],
|
|
'linux-drm-syncobj': ['v1'],
|
|
'security-context': ['v1'],
|
|
'single-pixel-buffer': ['v1'],
|
|
'tearing-control': ['v1'],
|
|
'xdg-activation': ['v1'],
|
|
'xdg-dialog': ['v1'],
|
|
'xdg-system-bell': ['v1'],
|
|
'xdg-toplevel-drag': ['v1'],
|
|
'xdg-toplevel-icon': ['v1'],
|
|
'xdg-toplevel-tag': ['v1'],
|
|
'xwayland-shell': ['v1'],
|
|
}
|
|
|
|
protocol_files = []
|
|
|
|
foreach name, versions : stable_protocols
|
|
foreach version : versions
|
|
if version == ''
|
|
protocol_files += ['stable/@0@/@0@.xml'.format(name)]
|
|
else
|
|
protocol_files += ['stable/@0@/@0@-@1@.xml'.format(name, version)]
|
|
endif
|
|
endforeach
|
|
endforeach
|
|
|
|
foreach name, versions : staging_protocols
|
|
foreach version : versions
|
|
protocol_files += [
|
|
'staging/@0@/@0@-@1@.xml'.format(name, version)
|
|
]
|
|
endforeach
|
|
endforeach
|
|
|
|
foreach name, versions : unstable_protocols
|
|
foreach version : versions
|
|
protocol_files += [
|
|
'unstable/@0@/@0@-unstable-@1@.xml'.format(name, version)
|
|
]
|
|
endforeach
|
|
endforeach
|
|
|
|
# Check that each protocol has a README
|
|
foreach protocol_file : protocol_files
|
|
dir = fs.parent(protocol_file)
|
|
if not fs.is_file(dir + '/README')
|
|
error('Missing README in @0@'.format(protocol_file))
|
|
endif
|
|
endforeach
|
|
|
|
foreach protocol_file : protocol_files
|
|
protocol_install_dir = fs.parent(join_paths(
|
|
get_option('datadir'),
|
|
'wayland-protocols',
|
|
protocol_file,
|
|
))
|
|
install_data(
|
|
protocol_file,
|
|
install_dir: protocol_install_dir,
|
|
)
|
|
endforeach
|
|
|
|
include_dirs = []
|
|
if dep_scanner.version().version_compare('>=1.22.90')
|
|
subdir('include/wayland-protocols')
|
|
include_dirs = ['include']
|
|
endif
|
|
|
|
wayland_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', wayland_protocols_srcdir)
|
|
pkgconfig_configuration.set('PACKAGE', 'wayland-protocols')
|
|
pkgconfig_configuration.set('WAYLAND_PROTOCOLS_VERSION', wayland_protocols_version)
|
|
|
|
pkg_install_dir = join_paths(get_option('datadir'), 'pkgconfig')
|
|
configure_file(
|
|
input: 'wayland-protocols.pc.in',
|
|
output: 'wayland-protocols.pc',
|
|
configuration: pkgconfig_configuration,
|
|
install_dir: pkg_install_dir,
|
|
)
|
|
|
|
configure_file(
|
|
input: 'wayland-protocols-uninstalled.pc.in',
|
|
output: 'wayland-protocols-uninstalled.pc',
|
|
configuration: pkgconfig_configuration,
|
|
)
|
|
|
|
wayland_protocols = declare_dependency(
|
|
include_directories: include_dirs,
|
|
variables: {
|
|
'pkgdatadir': wayland_protocols_srcdir,
|
|
},
|
|
)
|
|
|
|
meson.override_dependency('wayland-protocols', wayland_protocols)
|
|
|
|
if get_option('tests')
|
|
subdir('tests')
|
|
endif
|
|
|
|
summary({
|
|
'Headers': include_dirs.length() > 0,
|
|
}, bool_yn: true)
|