aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Simon Ser <contact@emersion.fr>2024-05-24 23:49:32 +0200
committerLibravatar Simon Zeni <simon@bl4ckb0ne.ca>2024-05-27 09:27:20 -0400
commit700f4805bc3ca86b3c2a46aa96bcee9d8e20f599 (patch)
tree01dd259868986e3446105f618b8eaeea849edac0
parenttree/view: Do not clip to geometry if using CSD (diff)
downloadsway-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.h2
-rw-r--r--sway/server.c6
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
119static bool filter_global(const struct wl_client *client, 120static 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();