add default permissions

This commit is contained in:
Tobias Bengfort 2025-09-18 13:49:03 +02:00
parent 089a362d73
commit 0f112b7463
3 changed files with 6 additions and 1 deletions

View file

@ -71,6 +71,7 @@ struct rcxml {
enum tearing_mode allow_tearing; enum tearing_mode allow_tearing;
bool auto_enable_outputs; bool auto_enable_outputs;
bool reuse_output_mode; bool reuse_output_mode;
uint32_t default_permissions;
bool xwayland_persistence; bool xwayland_persistence;
bool primary_selection; bool primary_selection;
char *prompt_command; char *prompt_command;

View file

@ -31,6 +31,7 @@
#include "config/touch.h" #include "config/touch.h"
#include "labwc.h" #include "labwc.h"
#include "osd.h" #include "osd.h"
#include "permissions.h"
#include "regions.h" #include "regions.h"
#include "ssd.h" #include "ssd.h"
#include "translate.h" #include "translate.h"
@ -1095,6 +1096,8 @@ entry(xmlNode *node, char *nodename, char *content)
set_bool(content, &rc.auto_enable_outputs); set_bool(content, &rc.auto_enable_outputs);
} else if (!strcasecmp(nodename, "reuseOutputMode.core")) { } else if (!strcasecmp(nodename, "reuseOutputMode.core")) {
set_bool(content, &rc.reuse_output_mode); set_bool(content, &rc.reuse_output_mode);
} else if (!strcasecmp(nodename, "permission.core")) {
rc.default_permissions |= permissions_from_interface_name(content);
} else if (!strcasecmp(nodename, "xwaylandPersistence.core")) { } else if (!strcasecmp(nodename, "xwaylandPersistence.core")) {
set_bool(content, &rc.xwayland_persistence); set_bool(content, &rc.xwayland_persistence);
} else if (!strcasecmp(nodename, "primarySelection.core")) { } else if (!strcasecmp(nodename, "primarySelection.core")) {
@ -1390,6 +1393,7 @@ rcxml_init(void)
rc.allow_tearing = LAB_TEARING_DISABLED; rc.allow_tearing = LAB_TEARING_DISABLED;
rc.auto_enable_outputs = true; rc.auto_enable_outputs = true;
rc.reuse_output_mode = false; rc.reuse_output_mode = false;
rc.default_permissions = 0;
rc.xwayland_persistence = false; rc.xwayland_persistence = false;
rc.primary_selection = true; rc.primary_selection = true;

View file

@ -133,7 +133,7 @@ permissions_context_create(struct wl_display *display, uint32_t permissions)
bool bool
permissions_check(const struct wl_client *client, const struct wl_interface *iface) permissions_check(const struct wl_client *client, const struct wl_interface *iface)
{ {
uint32_t permissions = permissions_get(client); uint32_t permissions = permissions_get(client) | rc.default_permissions;
uint32_t required = permissions_from_interface_name(iface->name); uint32_t required = permissions_from_interface_name(iface->name);
return (permissions & required) == required; return (permissions & required) == required;
} }