diff options
author | 2024-05-24 23:49:32 +0200 | |
---|---|---|
committer | 2024-05-27 09:27:20 -0400 | |
commit | 700f4805bc3ca86b3c2a46aa96bcee9d8e20f599 (patch) | |
tree | 01dd259868986e3446105f618b8eaeea849edac0 | |
parent | tree/view: Do not clip to geometry if using CSD (diff) | |
download | sway-700f4805bc3ca86b3c2a46aa96bcee9d8e20f599.tar.gz sway-700f4805bc3ca86b3c2a46aa96bcee9d8e20f599.tar.zst sway-700f4805bc3ca86b3c2a46aa96bcee9d8e20f599.zip |
server: hide xdg_output from unprivileged clients
Regular Wayland clients shouldn't care about the position or size
of outputs. Hide xdg_output from unprivileged clients to make sure
they're not doing shenanigans with this information.
-rw-r--r-- | include/sway/server.h | 2 | ||||
-rw-r--r-- | sway/server.c | 6 |
2 files changed, 6 insertions, 2 deletions
diff --git a/include/sway/server.h b/include/sway/server.h index 90f187fd..3a63df34 100644 --- a/include/sway/server.h +++ b/include/sway/server.h | |||
@@ -81,6 +81,8 @@ struct sway_server { | |||
81 | struct wlr_pointer_constraints_v1 *pointer_constraints; | 81 | struct wlr_pointer_constraints_v1 *pointer_constraints; |
82 | struct wl_listener pointer_constraint; | 82 | struct wl_listener pointer_constraint; |
83 | 83 | ||
84 | struct wlr_xdg_output_manager_v1 *xdg_output_manager_v1; | ||
85 | |||
84 | struct wlr_output_manager_v1 *output_manager_v1; | 86 | struct wlr_output_manager_v1 *output_manager_v1; |
85 | struct wl_listener output_manager_apply; | 87 | struct wl_listener output_manager_apply; |
86 | struct wl_listener output_manager_test; | 88 | struct wl_listener output_manager_test; |
diff --git a/sway/server.c b/sway/server.c index 4b48e8e5..edbc1a4b 100644 --- a/sway/server.c +++ b/sway/server.c | |||
@@ -113,7 +113,8 @@ static bool is_privileged(const struct wl_global *global) { | |||
113 | global == server.input->keyboard_shortcuts_inhibit->global || | 113 | global == server.input->keyboard_shortcuts_inhibit->global || |
114 | global == server.input->virtual_keyboard->global || | 114 | global == server.input->virtual_keyboard->global || |
115 | global == server.input->virtual_pointer->global || | 115 | global == server.input->virtual_pointer->global || |
116 | global == server.input->transient_seat_manager->global; | 116 | global == server.input->transient_seat_manager->global || |
117 | global == server.xdg_output_manager_v1->global; | ||
117 | } | 118 | } |
118 | 119 | ||
119 | static bool filter_global(const struct wl_client *client, | 120 | static bool filter_global(const struct wl_client *client, |
@@ -275,7 +276,8 @@ bool server_init(struct sway_server *server) { | |||
275 | wl_signal_add(&root->output_layout->events.change, | 276 | wl_signal_add(&root->output_layout->events.change, |
276 | &server->output_layout_change); | 277 | &server->output_layout_change); |
277 | 278 | ||
278 | wlr_xdg_output_manager_v1_create(server->wl_display, root->output_layout); | 279 | server->xdg_output_manager_v1 = |
280 | wlr_xdg_output_manager_v1_create(server->wl_display, root->output_layout); | ||
279 | 281 | ||
280 | server->idle_notifier_v1 = wlr_idle_notifier_v1_create(server->wl_display); | 282 | server->idle_notifier_v1 = wlr_idle_notifier_v1_create(server->wl_display); |
281 | sway_idle_inhibit_manager_v1_init(); | 283 | sway_idle_inhibit_manager_v1_init(); |