74fcdb9a62
The service channel D-Bus interface aims to be a "back door" for services that needs special casing in Mutter, e.g. have custom private protocols only meant to be used by that particular service. There are currently no special casing implemented; only the basic service channel infrastructure is added. There is a single method on the interface, that is meant to eventually be used by xdg-desktop-portal-gnome to open a Wayland connection with a private protocol needed for the portal backend's rather special window management needs. The service channel Wayland client works by allowing one instance of each "type", where each time needs to be defined to work in parallel. If a new service client connects, the old one will be disconnected. MetaWaylandClient's are used to manage the service clients, and are assigned the service client type. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2810>
82 lines
2.5 KiB
C
82 lines
2.5 KiB
C
/*
|
|
* Copyright (C) 2019 Red Hat Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
|
* 02111-1307, USA.
|
|
*
|
|
*/
|
|
|
|
#ifndef META_CONTEXT_PRIVATE_H
|
|
#define META_CONTEXT_PRIVATE_H
|
|
|
|
#include "core/meta-private-enums.h"
|
|
#include "core/meta-service-channel.h"
|
|
#include "core/util-private.h"
|
|
#include "meta/meta-backend.h"
|
|
#include "meta/meta-context.h"
|
|
#include "wayland/meta-wayland-types.h"
|
|
|
|
struct _MetaContextClass
|
|
{
|
|
GObjectClass parent_class;
|
|
|
|
gboolean (* configure) (MetaContext *context,
|
|
int *argc,
|
|
char ***argv,
|
|
GError **error);
|
|
|
|
MetaCompositorType (* get_compositor_type) (MetaContext *context);
|
|
|
|
MetaX11DisplayPolicy (* get_x11_display_policy) (MetaContext *context);
|
|
|
|
gboolean (* is_replacing) (MetaContext *context);
|
|
|
|
gboolean (* setup) (MetaContext *context,
|
|
GError **error);
|
|
|
|
MetaBackend * (* create_backend) (MetaContext *context,
|
|
GError **error);
|
|
|
|
void (* notify_ready) (MetaContext *context);
|
|
|
|
#ifdef HAVE_X11
|
|
gboolean (* is_x11_sync) (MetaContext *context);
|
|
#endif
|
|
};
|
|
|
|
const char * meta_context_get_name (MetaContext *context);
|
|
|
|
const char * meta_context_get_gnome_wm_keybindings (MetaContext *context);
|
|
|
|
gboolean meta_context_get_unsafe_mode (MetaContext *context);
|
|
void meta_context_set_unsafe_mode (MetaContext *context,
|
|
gboolean enable);
|
|
|
|
#ifdef HAVE_WAYLAND
|
|
META_EXPORT_TEST
|
|
MetaWaylandCompositor * meta_context_get_wayland_compositor (MetaContext *context);
|
|
|
|
META_EXPORT_TEST
|
|
MetaServiceChannel * meta_context_get_service_channel (MetaContext *context);
|
|
#endif
|
|
|
|
MetaX11DisplayPolicy meta_context_get_x11_display_policy (MetaContext *context);
|
|
|
|
#ifdef HAVE_X11
|
|
META_EXPORT_TEST
|
|
gboolean meta_context_is_x11_sync (MetaContext *context);
|
|
#endif
|
|
|
|
#endif /* META_CONTEXT_PRIVATE_H */
|