From ac8bea9ed39d21cd86e877d5a63204fcbb155db3 Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 15:32:19 -0500 Subject: [PATCH 01/11] Style nits --- waybox/output.c | 3 +-- waybox/server.c | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/waybox/output.c b/waybox/output.c index 3cad3e6..199ebf8 100644 --- a/waybox/output.c +++ b/waybox/output.c @@ -87,8 +87,7 @@ void output_frame_notify(struct wl_listener *listener, void *data) { wlr_renderer_clear(renderer, color); struct wb_view *view; - wl_list_for_each_reverse(view, &output->server->views, link) - { + wl_list_for_each_reverse(view, &output->server->views, link) { if (!view->mapped) /* An unmapped view should not be rendered */ continue; diff --git a/waybox/server.c b/waybox/server.c index 1fe2109..bae6dee 100644 --- a/waybox/server.c +++ b/waybox/server.c @@ -35,8 +35,7 @@ bool start_wb(struct wb_server* server) { wl_signal_add(&server->backend->events.new_output, &server->new_output); const char *socket = wl_display_add_socket_auto(server->wl_display); - if (!socket) - { + if (!socket) { wlr_backend_destroy(server->backend); return false; } From 99f50dd19a7ad766f203f128da24f058e814d171 Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 16:42:01 -0500 Subject: [PATCH 02/11] Fixed up the README a bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 614f1d7..c2e39f0 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ -# waybox -An openbox clone on Wayland (WIP) +# Waybox +An Openbox clone on Wayland (WIP) ### Goals -The main goal of this project is to provide a similar feel to openbox but on wayland +The main goal of this project is to provide a similar feel to Openbox but on Wayland ### Contributing @@ -24,7 +24,7 @@ cd build ninja ``` -After that, you should have an executable in build/ +After that, you should have an executable as waybox/waybox ### Contact I can be found as wiz on Rizon and WizBright on Freenode. From 9435ebbfad001f4495592256a6212dd3777715fa Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 16:44:09 -0500 Subject: [PATCH 03/11] Require wlroots 0.9.0+ --- meson.build | 2 +- waybox/output.c | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/meson.build b/meson.build index f5414ad..6a80449 100644 --- a/meson.build +++ b/meson.build @@ -31,7 +31,7 @@ add_project_arguments('-DWL_HIDE_DEPRECATED', language: 'c') inc_dir = include_directories('include') pixman = dependency('pixman-1') -wlroots = dependency('wlroots', version: '>=0.6.0') +wlroots = dependency('wlroots', version: '>=0.9.0') wayland_server = dependency('wayland-server') wayland_client = dependency('wayland-client') wayland_protos = dependency('wayland-protocols', version: '>=1.12') diff --git a/waybox/output.c b/waybox/output.c index 199ebf8..a733817 100644 --- a/waybox/output.c +++ b/waybox/output.c @@ -1,5 +1,3 @@ -#include - #include "waybox/output.h" struct render_data { @@ -127,12 +125,9 @@ void new_output_notify(struct wl_listener *listener, void *data) { wlr_output_set_mode(wlr_output, mode); wlr_output_enable(wlr_output, true); -#if WLR_VERSION_NUM > 2049 - // wlroots 0.9.0+ if (!wlr_output_commit(wlr_output)) { return; } -#endif } struct wb_output *output = calloc(1, sizeof(struct wb_output)); From c04609026ba779a980bc0ebcc92a218eee3f55ba Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 19:55:41 -0500 Subject: [PATCH 04/11] Removed included headers which aren't used by output.c anymore I don't think assert.h ever was used wlr/backend.h became unnecessary by a recent cleanup wlr/types/wlr_compositor.h became unnecessary by the rendering-code rewrite for wlroots 0.9.0+ --- include/waybox/output.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/include/waybox/output.h b/include/waybox/output.h index 0d692be..e1a69a1 100644 --- a/include/waybox/output.h +++ b/include/waybox/output.h @@ -5,15 +5,12 @@ #define _POSIX_C_SOURCE 200809L #endif -#include #include #include #include -#include #include #include -#include #include "waybox/server.h" From 089f20980b22e78b4a7792be28b1f88c213aedf0 Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 16:47:18 -0500 Subject: [PATCH 05/11] Simplify meson.build For one thing, I get no complaints from clang --- meson.build | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/meson.build b/meson.build index 6a80449..f67cb21 100644 --- a/meson.build +++ b/meson.build @@ -1,5 +1,3 @@ -# SirCmpwn is a god. (from mcwayface and bspwc) - project( 'waybox', 'c', @@ -13,20 +11,14 @@ project( ], ) -add_project_arguments('-Wno-unused-parameter', language: 'c') -add_project_arguments('-DWLR_USE_UNSTABLE', language: 'c') -add_project_arguments('-DVERSION="' + meson.project_version() + '"', language: 'c') +add_project_arguments( + '-Wno-unused-parameter', + '-DWLR_USE_UNSTABLE', + '-DVERSION="' + meson.project_version() + '"', + language: 'c') cc = meson.get_compiler('c') -if cc.get_id() == 'clang' - add_project_arguments('-Wno-missing-field-initializers', language: 'c') - add_project_arguments('-Wno-missing-braces', language: 'c') -endif - -# Hide deprecated API -add_project_arguments('-DWL_HIDE_DEPRECATED', language: 'c') - # Adding include directory inc_dir = include_directories('include') From 24a88ec13a0130377473fb912a33641856afef2e Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 16:58:36 -0500 Subject: [PATCH 06/11] I've learned that atoi() is deprecated I suppose that's what I get for not keeping track of new C standards --- waybox/cursor.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/waybox/cursor.c b/waybox/cursor.c index 58fe76f..0e8ee5c 100644 --- a/waybox/cursor.c +++ b/waybox/cursor.c @@ -165,7 +165,7 @@ struct wb_cursor *wb_cursor_create(struct wb_server *server) { cursor->server = server; const char *xcursor_size = getenv("XCURSOR_SIZE"); - cursor->xcursor_manager = wlr_xcursor_manager_create(getenv("XCURSOR_THEME"), xcursor_size ? atoi(xcursor_size) : 24); + cursor->xcursor_manager = wlr_xcursor_manager_create(getenv("XCURSOR_THEME"), xcursor_size ? strtoul(xcursor_size, (char **) NULL, 10) : 24); wlr_xcursor_manager_load(cursor->xcursor_manager, 1); cursor->cursor_motion.notify = handle_cursor_motion; From 744ec648f4f6a5903f5468a87c701ff1368778f7 Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 17:19:32 -0500 Subject: [PATCH 07/11] Properly casting the last argument to execl() --- waybox/main.c | 2 +- waybox/seat.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/waybox/main.c b/waybox/main.c index e96695b..fa9b48e 100644 --- a/waybox/main.c +++ b/waybox/main.c @@ -39,7 +39,7 @@ int main(int argc, char **argv) { if (startup_cmd) { if (fork() == 0) { - execl("/bin/sh", "/bin/sh", "-c", startup_cmd, NULL); + execl("/bin/sh", "/bin/sh", "-c", startup_cmd, (char *) NULL); } } diff --git a/waybox/seat.c b/waybox/seat.c index 170824e..390a8e2 100644 --- a/waybox/seat.c +++ b/waybox/seat.c @@ -27,7 +27,7 @@ static bool handle_keybinding(struct wb_server *server, xkb_keysym_t sym, uint32 wl_list_insert(server->views.prev, ¤t_view->link); } else if (modifiers & WLR_MODIFIER_ALT && sym == XKB_KEY_F2) { if (fork() == 0) { - execl("/bin/sh", "/bin/sh", "-c", "(obrun || bemenu-run || synapse || gmrun || gnome-do || dmenu_run) 2>/dev/null", NULL); + execl("/bin/sh", "/bin/sh", "-c", "(obrun || bemenu-run || synapse || gmrun || gnome-do || dmenu_run) 2>/dev/null", (char *) NULL); } } else { return false; From 21de46fbcf81138eda4dd012c2962115a1ccb47b Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 17:43:03 -0500 Subject: [PATCH 08/11] Fixed the 'Using "code" is deprecated' message in wayland-scanner 1.15+ --- protocol/meson.build | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol/meson.build b/protocol/meson.build index 7982dd8..7a2a2ef 100644 --- a/protocol/meson.build +++ b/protocol/meson.build @@ -11,7 +11,7 @@ wayland_scanner_server = generator( wayland_scanner_code = generator( wayland_scanner, output: '@BASENAME@-protocol.c', - arguments: ['code', '@INPUT@', '@OUTPUT@'], + arguments: ['private-code', '@INPUT@', '@OUTPUT@'], ) wayland_scanner_client = generator( From ff54fecfe681f78de76451e2b6e6ba9975f77680 Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 17:59:06 -0500 Subject: [PATCH 09/11] Replaced the obsolete, unofficial protocols with official ones --- include/waybox/server.h | 2 +- meson.build | 2 +- protocol/gtk-primary-selection.xml | 225 ----------------------------- protocol/meson.build | 4 +- protocol/server-decoration.xml | 94 ------------ waybox/server.c | 2 +- 6 files changed, 5 insertions(+), 324 deletions(-) delete mode 100644 protocol/gtk-primary-selection.xml delete mode 100644 protocol/server-decoration.xml diff --git a/include/waybox/server.h b/include/waybox/server.h index 88680e0..be258c1 100644 --- a/include/waybox/server.h +++ b/include/waybox/server.h @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include #include diff --git a/meson.build b/meson.build index f67cb21..9bb837f 100644 --- a/meson.build +++ b/meson.build @@ -26,7 +26,7 @@ pixman = dependency('pixman-1') wlroots = dependency('wlroots', version: '>=0.9.0') wayland_server = dependency('wayland-server') wayland_client = dependency('wayland-client') -wayland_protos = dependency('wayland-protocols', version: '>=1.12') +wayland_protos = dependency('wayland-protocols', version: '>=1.17') xkbcommon = dependency('xkbcommon') subdir('protocol') diff --git a/protocol/gtk-primary-selection.xml b/protocol/gtk-primary-selection.xml deleted file mode 100644 index 02cab94..0000000 --- a/protocol/gtk-primary-selection.xml +++ /dev/null @@ -1,225 +0,0 @@ - - - - Copyright © 2015, 2016 Red Hat - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the "Software"), - to deal in the Software without restriction, including without limitation - the rights to use, copy, modify, merge, publish, distribute, sublicense, - and/or sell copies of the Software, and to permit persons to whom the - Software is furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice (including the next - paragraph) shall be included in all copies or substantial portions of the - Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL - THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - DEALINGS IN THE SOFTWARE. - - - - This protocol provides the ability to have a primary selection device to - match that of the X server. This primary selection is a shortcut to the - common clipboard selection, where text just needs to be selected in order - to allow copying it elsewhere. The de facto way to perform this action - is the middle mouse button, although it is not limited to this one. - - Clients wishing to honor primary selection should create a primary - selection source and set it as the selection through - wp_primary_selection_device.set_selection whenever the text selection - changes. In order to minimize calls in pointer-driven text selection, - it should happen only once after the operation finished. Similarly, - a NULL source should be set when text is unselected. - - wp_primary_selection_offer objects are first announced through the - wp_primary_selection_device.data_offer event. Immediately after this event, - the primary data offer will emit wp_primary_selection_offer.offer events - to let know of the mime types being offered. - - When the primary selection changes, the client with the keyboard focus - will receive wp_primary_selection_device.selection events. Only the client - with the keyboard focus will receive such events with a non-NULL - wp_primary_selection_offer. Across keyboard focus changes, previously - focused clients will receive wp_primary_selection_device.events with a - NULL wp_primary_selection_offer. - - In order to request the primary selection data, the client must pass - a recent serial pertaining to the press event that is triggering the - operation, if the compositor deems the serial valid and recent, the - wp_primary_selection_source.send event will happen in the other end - to let the transfer begin. The client owning the primary selection - should write the requested data, and close the file descriptor - immediately. - - If the primary selection owner client disappeared during the transfer, - the client reading the data will receive a - wp_primary_selection_device.selection event with a NULL - wp_primary_selection_offer, the client should take this as a hint - to finish the reads related to the no longer existing offer. - - The primary selection owner should be checking for errors during - writes, merely cancelling the ongoing transfer if any happened. - - - - - The primary selection device manager is a singleton global object that - provides access to the primary selection. It allows to create - wp_primary_selection_source objects, as well as retrieving the per-seat - wp_primary_selection_device objects. - - - - - Create a new primary selection source. - - - - - - - Create a new data device for a given seat. - - - - - - - - Destroy the primary selection device manager. - - - - - - - - Replaces the current selection. The previous owner of the primary selection - will receive a wp_primary_selection_source.cancelled event. - - To unset the selection, set the source to NULL. - - - - - - - - Introduces a new wp_primary_selection_offer object that may be used - to receive the current primary selection. Immediately following this - event, the new wp_primary_selection_offer object will send - wp_primary_selection_offer.offer events to describe the offered mime - types. - - - - - - - The wp_primary_selection_device.selection event is sent to notify the - client of a new primary selection. This event is sent after the - wp_primary_selection.data_offer event introducing this object, and after - the offer has announced its mimetypes through - wp_primary_selection_offer.offer. - - The data_offer is valid until a new offer or NULL is received - or until the client loses keyboard focus. The client must destroy the - previous selection data_offer, if any, upon receiving this event. - - - - - - - Destroy the primary selection device. - - - - - - - A wp_primary_selection_offer represents an offer to transfer the contents - of the primary selection clipboard to the client. Similar to - wl_data_offer, the offer also describes the mime types that the source - will transferthat the - data can be converted to and provides the mechanisms for transferring the - data directly to the client. - - - - - To transfer the contents of the primary selection clipboard, the client - issues this request and indicates the mime type that it wants to - receive. The transfer happens through the passed file descriptor - (typically created with the pipe system call). The source client writes - the data in the mime type representation requested and then closes the - file descriptor. - - The receiving client reads from the read end of the pipe until EOF and - closes its end, at which point the transfer is complete. - - - - - - - - Destroy the primary selection offer. - - - - - - Sent immediately after creating announcing the wp_primary_selection_offer - through wp_primary_selection_device.data_offer. One event is sent per - offered mime type. - - - - - - - - The source side of a wp_primary_selection_offer, it provides a way to - describe the offered data and respond to requests to transfer the - requested contents of the primary selection clipboard. - - - - - This request adds a mime type to the set of mime types advertised to - targets. Can be called several times to offer multiple types. - - - - - - - Destroy the primary selection source. - - - - - - Request for the current primary selection contents from the client. - Send the specified mime type over the passed file descriptor, then - close it. - - - - - - - - This primary selection source is no longer valid. The client should - clean up and destroy this primary selection source. - - - - diff --git a/protocol/meson.build b/protocol/meson.build index 7a2a2ef..91e520c 100644 --- a/protocol/meson.build +++ b/protocol/meson.build @@ -24,11 +24,11 @@ protocols = [ [wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'], [wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'], [wl_protocol_dir, 'unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml'], + [wl_protocol_dir, 'unstable/primary-selection/primary-selection-unstable-v1.xml'], + [wl_protocol_dir, 'unstable/xdg-decoration/xdg-decoration-unstable-v1.xml'], 'wlr-gamma-control-unstable-v1.xml', - 'gtk-primary-selection.xml', 'idle.xml', 'wlr-screencopy-unstable-v1.xml', - 'server-decoration.xml', 'wlr-layer-shell-unstable-v1.xml', ] diff --git a/protocol/server-decoration.xml b/protocol/server-decoration.xml deleted file mode 100644 index 45f1128..0000000 --- a/protocol/server-decoration.xml +++ /dev/null @@ -1,94 +0,0 @@ - - - . - ]]> - - - This interface allows to coordinate whether the server should create - a server-side window decoration around a wl_surface representing a - shell surface (wl_shell_surface or similar). By announcing support - for this interface the server indicates that it supports server - side decorations. - - - - When a client creates a server-side decoration object it indicates - that it supports the protocol. The client is supposed to tell the - server whether it wants server-side decorations or will provide - client-side decorations. - - If the client does not create a server-side decoration object for - a surface the server interprets this as lack of support for this - protocol and considers it as client-side decorated. Nevertheless a - client-side decorated surface should use this protocol to indicate - to the server that it does not want a server-side deco. - - - - - - - - - - - - - This event is emitted directly after binding the interface. It contains - the default mode for the decoration. When a new server decoration object - is created this new object will be in the default mode until the first - request_mode is requested. - - The server may change the default mode at any time. - - - - - - - - - - - - - - - - - - - - - This event is emitted directly after the decoration is created and - represents the base decoration policy by the server. E.g. a server - which wants all surfaces to be client-side decorated will send Client, - a server which wants server-side decoration will send Server. - - The client can request a different mode through the decoration request. - The server will acknowledge this by another event with the same mode. So - even if a server prefers server-side decoration it's possible to force a - client-side decoration. - - The server may emit this event at any time. In this case the client can - again request a different mode. It's the responsibility of the server to - prevent a feedback loop. - - - - - diff --git a/waybox/server.c b/waybox/server.c index bae6dee..f409ece 100644 --- a/waybox/server.c +++ b/waybox/server.c @@ -52,7 +52,7 @@ bool start_wb(struct wb_server* server) { wlr_gamma_control_manager_v1_create(server->wl_display); wlr_screencopy_manager_v1_create(server->wl_display); - wlr_gtk_primary_selection_device_manager_create(server->wl_display); + wlr_primary_selection_v1_device_manager_create(server->wl_display); wlr_idle_create(server->wl_display); wlr_data_device_manager_create(server->wl_display); From 1c7c069e72dee3082600190a12e5abd08f7a9e96 Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Thu, 27 Feb 2020 19:48:17 -0500 Subject: [PATCH 10/11] Consistent use of _POSIX_C_SOURCE --- include/waybox/output.h | 2 +- include/waybox/server.h | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/include/waybox/output.h b/include/waybox/output.h index 0d692be..691a489 100644 --- a/include/waybox/output.h +++ b/include/waybox/output.h @@ -2,7 +2,7 @@ #define OUTPUT_H #ifndef _POSIX_C_SOURCE -#define _POSIX_C_SOURCE 200809L +#define _POSIX_C_SOURCE 200112L #endif #include diff --git a/include/waybox/server.h b/include/waybox/server.h index be258c1..3a217f7 100644 --- a/include/waybox/server.h +++ b/include/waybox/server.h @@ -1,10 +1,9 @@ #ifndef SERVER_H #define SERVER_H -#ifdef _POSIX_C_SOURCE -#undef _POSIX_C_SOURCE -#endif +#ifndef _POSIX_C_SOURCE #define _POSIX_C_SOURCE 200112L +#endif #include From 30f471d8b41c7c9b0d265b923f883a0971d19c99 Mon Sep 17 00:00:00 2001 From: Keith Bowes Date: Fri, 28 Feb 2020 10:52:45 -0500 Subject: [PATCH 11/11] Make protocol/meson.build identation more consistent with other meson.build files --- protocol/meson.build | 62 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/protocol/meson.build b/protocol/meson.build index 91e520c..c76348e 100644 --- a/protocol/meson.build +++ b/protocol/meson.build @@ -3,61 +3,61 @@ wl_protocol_dir = wayland_protos.get_pkgconfig_variable('pkgdatadir') wayland_scanner = find_program('wayland-scanner') wayland_scanner_server = generator( - wayland_scanner, - output: '@BASENAME@-protocol.h', - arguments: ['server-header', '@INPUT@', '@OUTPUT@'], + wayland_scanner, + output: '@BASENAME@-protocol.h', + arguments: ['server-header', '@INPUT@', '@OUTPUT@'], ) wayland_scanner_code = generator( - wayland_scanner, - output: '@BASENAME@-protocol.c', - arguments: ['private-code', '@INPUT@', '@OUTPUT@'], + wayland_scanner, + output: '@BASENAME@-protocol.c', + arguments: ['private-code', '@INPUT@', '@OUTPUT@'], ) wayland_scanner_client = generator( - wayland_scanner, - output: '@BASENAME@-client-protocol.h', - arguments: ['client-header', '@INPUT@', '@OUTPUT@'], + wayland_scanner, + output: '@BASENAME@-client-protocol.h', + arguments: ['client-header', '@INPUT@', '@OUTPUT@'], ) protocols = [ - [wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'], - [wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'], - [wl_protocol_dir, 'unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml'], - [wl_protocol_dir, 'unstable/primary-selection/primary-selection-unstable-v1.xml'], - [wl_protocol_dir, 'unstable/xdg-decoration/xdg-decoration-unstable-v1.xml'], - 'wlr-gamma-control-unstable-v1.xml', - 'idle.xml', - 'wlr-screencopy-unstable-v1.xml', - 'wlr-layer-shell-unstable-v1.xml', + [wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'], + [wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'], + [wl_protocol_dir, 'unstable/linux-dmabuf/linux-dmabuf-unstable-v1.xml'], + [wl_protocol_dir, 'unstable/primary-selection/primary-selection-unstable-v1.xml'], + [wl_protocol_dir, 'unstable/xdg-decoration/xdg-decoration-unstable-v1.xml'], + 'wlr-gamma-control-unstable-v1.xml', + 'idle.xml', + 'wlr-screencopy-unstable-v1.xml', + 'wlr-layer-shell-unstable-v1.xml', ] client_protocols = [ - [wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'], - [wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'], - 'idle.xml', - 'wlr-screencopy-unstable-v1.xml', - 'wlr-layer-shell-unstable-v1.xml', + [wl_protocol_dir, 'stable/xdg-shell/xdg-shell.xml'], + [wl_protocol_dir, 'unstable/idle-inhibit/idle-inhibit-unstable-v1.xml'], + 'idle.xml', + 'wlr-screencopy-unstable-v1.xml', + 'wlr-layer-shell-unstable-v1.xml', ] wl_protos_src = [] wl_protos_headers = [] foreach p : protocols - xml = join_paths(p) - wl_protos_src += wayland_scanner_code.process(xml) - wl_protos_headers += wayland_scanner_server.process(xml) + xml = join_paths(p) + wl_protos_src += wayland_scanner_code.process(xml) + wl_protos_headers += wayland_scanner_server.process(xml) endforeach foreach p : client_protocols - xml = join_paths(p) - wl_protos_headers += wayland_scanner_client.process(xml) + xml = join_paths(p) + wl_protos_headers += wayland_scanner_client.process(xml) endforeach lib_wl_protos = static_library('wl_protos', wl_protos_src + wl_protos_headers, - dependencies: [wayland_client]) # for the include directory + dependencies: [wayland_client]) # for the include directory wlr_protos = declare_dependency( - link_with: lib_wl_protos, - sources: wl_protos_headers, + link_with: lib_wl_protos, + sources: wl_protos_headers, )