pidgin/pidgin

Start new Bonjour protocol plugin

2 months ago, Elliott Sales de Andrade
d6ed63c2508e
Parents 4f19be7835c2
Children 648a1b5dd96a
Start new Bonjour protocol plugin

This is mostly copied from the new XMPP protocol plugin, with icons copied from
the existing Bonjour plugin.

The id has a `-nouveau` suffix so that it won't conflict with the existing one.

Testing Done:
Ran `ninja turtles`; checked that an account with the new protocol could be added, though it doesn't do anything.

Reviewed at https://reviews.imfreedom.org/r/2915/
--- a/po/POTFILES.in Thu Feb 22 22:55:34 2024 -0600
+++ b/po/POTFILES.in Fri Feb 23 06:13:40 2024 -0600
@@ -314,6 +314,8 @@
pidgin/resources/infopane.ui
pidgin/win32/gtkwin32dep.c
pidgin/win32/winpidgin.c
+protocols/bonjour/purplebonjourcore.c
+protocols/bonjour/purplebonjourprotocol.c
protocols/xmpp/purplexmppconnection.c
protocols/xmpp/purplexmppcore.c
protocols/xmpp/purplexmppprotocol.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/meson.build Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,33 @@
+BONJOUR_SOURCES = [
+ 'purplebonjourconnection.c',
+ 'purplebonjourcore.c',
+ 'purplebonjourprotocol.c',
+]
+
+BONJOUR_HEADERS = [
+ 'purplebonjourconnection.h',
+ 'purplebonjourconstants.h',
+ 'purplebonjourcore.h',
+ 'purplebonjourprotocol.h',
+]
+
+if not DYNAMIC_BONJOUR
+ subdir_done()
+endif
+
+bonjour_resources = gnome.compile_resources('bonjourresource',
+ 'resources/bonjour.gresource.xml',
+ source_dir : 'resources',
+ c_name : 'purple_bonjour')
+BONJOUR_SOURCES += bonjour_resources
+
+bonjour_prpl = library('bonjournouveau',
+ BONJOUR_SOURCES, BONJOUR_HEADERS,
+ c_args : ['-DPURPLE_BONJOUR_COMPILATION', '-DG_LOG_USE_STRUCTURED',
+ '-DG_LOG_DOMAIN="Purple-Bonjour"'],
+ gnu_symbol_visibility : 'hidden',
+ dependencies : [libpurple_dep, glib, gio],
+ install : true,
+ install_dir : PURPLE_PLUGINDIR)
+
+devenv.append('PURPLE_PLUGIN_PATH', meson.current_build_dir())
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/purplebonjourconnection.c Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,108 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * 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, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <glib/gi18n-lib.h>
+
+#include "purplebonjourconnection.h"
+
+#include "purplebonjourconstants.h"
+#include "purplebonjourcore.h"
+
+struct _PurpleBonjourConnection {
+ PurpleConnection parent;
+};
+
+G_DEFINE_DYNAMIC_TYPE_EXTENDED(PurpleBonjourConnection, purple_bonjour_connection,
+ PURPLE_TYPE_CONNECTION, G_TYPE_FLAG_FINAL, {})
+
+/******************************************************************************
+ * PurpleConnection Implementation
+ *****************************************************************************/
+static gboolean
+purple_bonjour_connection_connect(PurpleConnection *purple_connection,
+ G_GNUC_UNUSED GError **error)
+{
+ G_GNUC_UNUSED PurpleBonjourConnection *connection = NULL;
+ PurpleAccount *account = NULL;
+ G_GNUC_UNUSED GCancellable *cancellable = NULL;
+ G_GNUC_UNUSED const char *username = NULL;
+ G_GNUC_UNUSED guint16 port = PURPLE_BONJOUR_DEFAULT_PORT;
+
+ g_return_val_if_fail(PURPLE_BONJOUR_IS_CONNECTION(purple_connection),
+ FALSE);
+
+ purple_connection_set_state(purple_connection,
+ PURPLE_CONNECTION_STATE_CONNECTING);
+
+ connection = PURPLE_BONJOUR_CONNECTION(purple_connection);
+ cancellable = purple_connection_get_cancellable(purple_connection);
+ account = purple_connection_get_account(purple_connection);
+
+ /* Grab some more information that we need. */
+ username = purple_contact_info_get_username(PURPLE_CONTACT_INFO(account));
+ port = purple_account_get_int(account, PURPLE_BONJOUR_OPTION_PORT,
+ PURPLE_BONJOUR_DEFAULT_PORT);
+
+ /* Eventually, we will do something before this, but we can go straight to
+ * connected for now. */
+ purple_connection_set_state(purple_connection,
+ PURPLE_CONNECTION_STATE_CONNECTED);
+
+ return TRUE;
+}
+
+static gboolean
+purple_bonjour_connection_disconnect(PurpleConnection *purple_connection,
+ GError **error)
+{
+ PurpleConnectionClass *parent_class = NULL;
+
+ g_return_val_if_fail(PURPLE_BONJOUR_IS_CONNECTION(purple_connection),
+ FALSE);
+
+ /* Chain up to our parent's disconnect method. */
+ parent_class = PURPLE_CONNECTION_CLASS(purple_bonjour_connection_parent_class);
+ return parent_class->disconnect(purple_connection, error);
+}
+
+/******************************************************************************
+ * GObject Implementation
+ *****************************************************************************/
+static void
+purple_bonjour_connection_init(G_GNUC_UNUSED PurpleBonjourConnection *connection) {
+}
+
+static void
+purple_bonjour_connection_class_init(PurpleBonjourConnectionClass *klass) {
+ PurpleConnectionClass *connection_class = PURPLE_CONNECTION_CLASS(klass);
+
+ connection_class->connect = purple_bonjour_connection_connect;
+ connection_class->disconnect = purple_bonjour_connection_disconnect;
+}
+
+static void
+purple_bonjour_connection_class_finalize(G_GNUC_UNUSED PurpleBonjourConnectionClass *klass) {
+}
+
+/******************************************************************************
+ * Internal API
+ *****************************************************************************/
+void
+purple_bonjour_connection_register(GPluginNativePlugin *plugin) {
+ purple_bonjour_connection_register_type(G_TYPE_MODULE(plugin));
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/purplebonjourconnection.h Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,48 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * 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, see <https://www.gnu.org/licenses/>.
+ */
+#ifndef PURPLE_BONJOUR_CONNECTION_H
+#define PURPLE_BONJOUR_CONNECTION_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <gplugin.h>
+#include <gplugin-native.h>
+
+#include <purple.h>
+
+G_BEGIN_DECLS
+
+#define PURPLE_BONJOUR_TYPE_CONNECTION (purple_bonjour_connection_get_type())
+
+G_DECLARE_FINAL_TYPE(PurpleBonjourConnection, purple_bonjour_connection,
+ PURPLE_BONJOUR, CONNECTION, PurpleConnection)
+
+/**
+ * purple_bonjour_connection_register: (skip)
+ * @plugin: The GTypeModule
+ *
+ * Registers the dynamic type using @plugin.
+ *
+ * Since: 3.0.0
+ */
+G_GNUC_INTERNAL void purple_bonjour_connection_register(GPluginNativePlugin *plugin);
+
+G_END_DECLS
+
+#endif /* PURPLE_BONJOUR_CONNECTION_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/purplebonjourconstants.h Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,25 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * 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, see <https://www.gnu.org/licenses/>.
+ */
+#ifndef PURPLE_BONJOUR_CONSTANTS_H
+#define PURPLE_BONJOUR_CONSTANTS_H
+
+#define PURPLE_BONJOUR_DEFAULT_PORT (5298)
+
+#define PURPLE_BONJOUR_OPTION_PORT ("port")
+
+#endif /* PURPLE_BONJOUR_CONSTANTS_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/purplebonjourcore.c Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,119 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * 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, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+
+#include <gplugin.h>
+#include <gplugin-native.h>
+
+#include <purple.h>
+
+#include "purplebonjourcore.h"
+
+#include "purplebonjourconnection.h"
+#include "purplebonjourprotocol.h"
+
+/******************************************************************************
+ * Globals
+ *****************************************************************************/
+static PurpleProtocol *bonjour_protocol = NULL;
+
+/******************************************************************************
+ * GPlugin Exports
+ *****************************************************************************/
+static GPluginPluginInfo *
+purple_bonjour_query(G_GNUC_UNUSED GError **error) {
+ PurplePluginInfoFlags flags = PURPLE_PLUGIN_INFO_FLAGS_INTERNAL |
+ PURPLE_PLUGIN_INFO_FLAGS_AUTO_LOAD;
+ const char * const authors[] = {
+ "Pidgin Developers <devel@pidgin.im>",
+ NULL
+ };
+
+ return purple_plugin_info_new(
+ "id", "prpl-bonjour-nouveau",
+ "name", "Bonjour Protocol",
+ "authors", authors,
+ "version", DISPLAY_VERSION,
+ "category", N_("Protocol"),
+ "summary", N_("Bonjour Protocol Plugin"),
+ "description", N_("Modern Bonjour Support"),
+ "website", PURPLE_WEBSITE,
+ "abi-version", PURPLE_ABI_VERSION,
+ "flags", flags,
+ NULL);
+}
+
+static gboolean
+purple_bonjour_load(GPluginPlugin *plugin, GError **error) {
+ PurpleProtocolManager *manager = NULL;
+
+ if(PURPLE_IS_PROTOCOL(bonjour_protocol)) {
+ g_set_error_literal(error, PURPLE_BONJOUR_DOMAIN, 0,
+ "plugin was not cleaned up properly");
+
+ return FALSE;
+ }
+
+ purple_bonjour_protocol_register(GPLUGIN_NATIVE_PLUGIN(plugin));
+ purple_bonjour_connection_register(GPLUGIN_NATIVE_PLUGIN(plugin));
+
+ bonjour_protocol = purple_bonjour_protocol_new();
+
+ manager = purple_protocol_manager_get_default();
+ if(PURPLE_IS_PROTOCOL_MANAGER(manager)) {
+ if(!purple_protocol_manager_register(manager, bonjour_protocol, error)) {
+ g_clear_object(&bonjour_protocol);
+
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+static gboolean
+purple_bonjour_unload(G_GNUC_UNUSED GPluginPlugin *plugin,
+ G_GNUC_UNUSED gboolean shutdown,
+ GError **error)
+{
+ PurpleProtocolManager *manager = NULL;
+
+ if(!PURPLE_IS_PROTOCOL(bonjour_protocol)) {
+ g_set_error_literal(error, PURPLE_BONJOUR_DOMAIN, 0,
+ "plugin was not setup properly");
+
+ return FALSE;
+ }
+
+ manager = purple_protocol_manager_get_default();
+ if(PURPLE_IS_PROTOCOL_MANAGER(manager)) {
+ if(!purple_protocol_manager_unregister(manager, bonjour_protocol,
+ error))
+ {
+ return FALSE;
+ }
+ }
+
+ g_clear_object(&bonjour_protocol);
+
+ return TRUE;
+}
+
+GPLUGIN_NATIVE_PLUGIN_DECLARE(purple_bonjour)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/purplebonjourcore.h Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,25 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * 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, see <https://www.gnu.org/licenses/>.
+ */
+#ifndef PURPLE_BONJOUR_CORE_H
+#define PURPLE_BONJOUR_CORE_H
+
+#include <glib.h>
+
+#define PURPLE_BONJOUR_DOMAIN (g_quark_from_static_string("bonjour-plugin"))
+
+#endif /* PURPLE_BONJOUR_CORE_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/purplebonjourprotocol.c Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,125 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * 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, see <https://www.gnu.org/licenses/>.
+ */
+
+#include <glib/gi18n-lib.h>
+
+#include "purplebonjourprotocol.h"
+
+#include "purplebonjourconnection.h"
+#include "purplebonjourconstants.h"
+
+struct _PurpleBonjourProtocol {
+ PurpleProtocol parent;
+};
+
+/******************************************************************************
+ * PurpleProtocol Implementation
+ *****************************************************************************/
+static GList *
+purple_bonjour_protocol_get_account_options(G_GNUC_UNUSED PurpleProtocol *protocol)
+{
+ PurpleAccountOption *option = NULL;
+ GList *options = NULL;
+
+ option = purple_account_option_int_new(_("Port"), PURPLE_BONJOUR_OPTION_PORT,
+ PURPLE_BONJOUR_DEFAULT_PORT);
+ options = g_list_append(options, option);
+
+ return options;
+}
+
+
+static GList *
+purple_bonjour_protocol_status_types(G_GNUC_UNUSED PurpleProtocol *protocol,
+ G_GNUC_UNUSED PurpleAccount *account)
+{
+ PurpleStatusType *type = NULL;
+ GList *types = NULL;
+
+ type = purple_status_type_new(PURPLE_STATUS_AVAILABLE, NULL, NULL, TRUE);
+ types = g_list_append(types, type);
+
+ type = purple_status_type_new(PURPLE_STATUS_OFFLINE, NULL, NULL, TRUE);
+ types = g_list_append(types, type);
+
+ return types;
+}
+
+static PurpleConnection *
+purple_bonjour_protocol_create_connection(PurpleProtocol *protocol,
+ PurpleAccount *account,
+ const char *password,
+ G_GNUC_UNUSED GError **error)
+{
+ return g_object_new(
+ PURPLE_BONJOUR_TYPE_CONNECTION,
+ "protocol", protocol,
+ "account", account,
+ "password", password,
+ NULL);
+}
+
+/******************************************************************************
+ * GObject Implementation
+ *****************************************************************************/
+G_DEFINE_DYNAMIC_TYPE_EXTENDED(
+ PurpleBonjourProtocol,
+ purple_bonjour_protocol,
+ PURPLE_TYPE_PROTOCOL,
+ G_TYPE_FLAG_FINAL,
+ {})
+
+static void
+purple_bonjour_protocol_init(G_GNUC_UNUSED PurpleBonjourProtocol *protocol) {
+}
+
+static void
+purple_bonjour_protocol_class_finalize(G_GNUC_UNUSED PurpleBonjourProtocolClass *klass)
+{
+}
+
+static void
+purple_bonjour_protocol_class_init(PurpleBonjourProtocolClass *klass) {
+ PurpleProtocolClass *protocol_class = PURPLE_PROTOCOL_CLASS(klass);
+
+ protocol_class->get_account_options = purple_bonjour_protocol_get_account_options;
+ protocol_class->status_types = purple_bonjour_protocol_status_types;
+
+ protocol_class->create_connection = purple_bonjour_protocol_create_connection;
+}
+
+/******************************************************************************
+ * Internal API
+ *****************************************************************************/
+void
+purple_bonjour_protocol_register(GPluginNativePlugin *plugin) {
+ purple_bonjour_protocol_register_type(G_TYPE_MODULE(plugin));
+}
+
+PurpleProtocol *
+purple_bonjour_protocol_new(void) {
+ return g_object_new(
+ PURPLE_BONJOUR_TYPE_PROTOCOL,
+ "id", "prpl-bonjour-nouveau",
+ "name", "Bonjour",
+ "description", _("Bonjour is a serverless protocol for local networks."),
+ "icon-name", "im-bonjour",
+ "icon-resource-path", "/im/pidgin/libpurple/protocols/bonjour/icons",
+ "options", OPT_PROTO_NO_PASSWORD,
+ NULL);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/purplebonjourprotocol.h Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,50 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * 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, see <https://www.gnu.org/licenses/>.
+ */
+#ifndef PURPLE_BONJOUR_PROTOCOL_H
+#define PURPLE_BONJOUR_PROTOCOL_H
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <gplugin.h>
+#include <gplugin-native.h>
+
+#include <purple.h>
+
+G_BEGIN_DECLS
+
+#define PURPLE_BONJOUR_TYPE_PROTOCOL (purple_bonjour_protocol_get_type())
+
+G_DECLARE_FINAL_TYPE(PurpleBonjourProtocol, purple_bonjour_protocol,
+ PURPLE_BONJOUR, PROTOCOL, PurpleProtocol)
+
+/**
+ * purple_bonjour_protocol_register: (skip)
+ * @plugin: The GTypeModule
+ *
+ * Registers the dynamic type using @plugin.
+ *
+ * Since: 3.0
+ */
+G_GNUC_INTERNAL void purple_bonjour_protocol_register(GPluginNativePlugin *plugin);
+
+G_GNUC_INTERNAL PurpleProtocol *purple_bonjour_protocol_new(void);
+
+G_END_DECLS
+
+#endif /* PURPLE_BONJOUR_PROTOCOL_H */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/resources/bonjour.gresource.xml Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/im/pidgin/libpurple/protocols/bonjour">
+ <file>icons/16x16/apps/im-bonjour.png</file>
+ <file compressed="true" preprocess="xml-stripblanks">icons/16x16/apps/scalable/im-bonjour.svg</file>
+ <file>icons/22x22/apps/im-bonjour.png</file>
+ <file compressed="true" preprocess="xml-stripblanks">icons/22x22/apps/scalable/im-bonjour.svg</file>
+ <file>icons/48x48/apps/im-bonjour.png</file>
+ <file compressed="true" preprocess="xml-stripblanks">icons/scalable/apps/im-bonjour.svg</file>
+ </gresource>
+</gresources>
Binary file protocols/bonjour/resources/icons/16x16/apps/im-bonjour.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/resources/icons/16x16/apps/scalable/im-bonjour.svg Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16px"
+ height="16px"
+ id="svg4239"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ sodipodi:docbase="/home/hbons/GUI/Tango/Gaim Refresh/protocols/16/scalable"
+ sodipodi:docname="bonjour.svg"
+ inkscape:export-filename="/home/hbons/Bureaublad/bonjour.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4241">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 8 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="16 : 8 : 1"
+ inkscape:persp3d-origin="8 : 5.3333333 : 1"
+ id="perspective24" />
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient8630">
+ <stop
+ style="stop-color:#ce5c00;stop-opacity:1;"
+ offset="0"
+ id="stop8632" />
+ <stop
+ style="stop-color:#a24700;stop-opacity:1"
+ offset="1"
+ id="stop8634" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8630"
+ id="linearGradient8636"
+ x1="5.3974791"
+ y1="2.3890932"
+ x2="7.286067"
+ y2="5.4647174"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8630"
+ id="linearGradient8640"
+ gradientUnits="userSpaceOnUse"
+ x1="5.3974791"
+ y1="2.3890932"
+ x2="7.286067"
+ y2="5.4647174" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient8630"
+ id="linearGradient8644"
+ gradientUnits="userSpaceOnUse"
+ x1="5.3974791"
+ y1="2.3890932"
+ x2="7.286067"
+ y2="5.4647174" />
+ <filter
+ inkscape:collect="always"
+ id="filter8686">
+ <feGaussianBlur
+ inkscape:collect="always"
+ stdDeviation="0.44714331"
+ id="feGaussianBlur8688" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="22.197802"
+ inkscape:cx="19.610287"
+ inkscape:cy="10.016761"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:grid-bbox="true"
+ inkscape:document-units="px"
+ inkscape:window-width="1440"
+ inkscape:window-height="847"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:grid-points="true"
+ inkscape:snap-nodes="false"
+ inkscape:snap-bbox="true"
+ objecttolerance="10"
+ gridtolerance="10">
+ <inkscape:grid
+ type="xygrid"
+ id="grid7858"
+ visible="true"
+ enabled="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata4244">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer">
+ <path
+ style="opacity:1;fill:#888a85;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 12.25 0.8125 C 11.212904 0.82548147 9.8237981 1.3178148 8 2.75 C 13.624569 0.9376896 12.09375 3.9687501 12.09375 3.96875 C 12.730846 2.6945576 15.125 3.1250001 15.125 3.125 C 15.125 3.125 14.531611 0.78394076 12.25 0.8125 z M 5 1 C 5 1 6.2894977 2.4031671 5.96875 3.875 C 6.2142693 3.9629227 6.4825344 4.1298951 6.75 4.3125 C 6.3025525 4.8585397 4.5708564 7.0310338 3.59375 9.53125 C 1.0655137 6.5798281 2.28125 6.2187501 2.28125 6.21875 C 2.28125 6.21875 0.78185481 5.3348778 0.75 4.15625 C 0.75 4.15625 -2.0476392 7.5220008 3.5 9.78125 C 3.0973823 10.886071 2.8800606 12.018686 3.0625 13 C 3.0625 13 3.6157102 11.426301 5.03125 10.96875 C 4.9701968 10.621698 4.9938478 10.192279 5.0625 9.71875 C 5.3532166 7.7135288 6.5068895 5.1127489 6.84375 4.375 C 8.4782617 5.5373726 10.241354 7.9344916 10.75 8.65625 C 8.5490333 9.3974261 5.2127054 9.7062603 5.0625 9.71875 C 5.2473055 9.7481019 12.134313 10.824709 14.9375 8.625 C 14.9375 8.625 13.27052 8.9201184 12.15625 8 C 11.847198 8.2378763 11.367484 8.4425412 10.84375 8.625 C 10.458227 7.6220151 8.2341467 2.1234583 5 1 z M 11 10 C 10.948461 14.034482 8.8749996 13.6875 8.875 13.6875 C 8.875 13.6875 9.2741924 15.554033 8 16 C 8 16 14.4206 15.813404 11 10 z "
+ id="path8669" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffac5b;fill-opacity:1;stroke:url(#linearGradient8636);stroke-width:1.5861057;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3210"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077,3.7607069 A 2.7512043,2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043,2.0574222 0 1 1 8.421077,3.7607069 z"
+ transform="matrix(0.5452158,0,0,0.7290669,-9.1304146e-2,0.2581915)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffac5b;fill-opacity:1;stroke:url(#linearGradient8640);stroke-width:1.58610499;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path8638"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077,3.7607069 A 2.7512043,2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043,2.0574222 0 1 1 8.421077,3.7607069 z"
+ transform="matrix(0.5452157,0,0,0.7290676,10.908697,3.2581906)" />
+ <path
+ sodipodi:type="arc"
+ style="fill:#ffac5b;fill-opacity:1;stroke:url(#linearGradient8644);stroke-width:1.58610499;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path8642"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077,3.7607069 A 2.7512043,2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043,2.0574222 0 1 1 8.421077,3.7607069 z"
+ transform="matrix(0.5452157,0,0,0.7290676,2.9086961,11.25819)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47685185;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path8682"
+ sodipodi:cx="2.3731835"
+ sodipodi:cy="2.1909397"
+ sodipodi:rx="0.90786207"
+ sodipodi:ry="1.0352813"
+ d="M 3.2810456,2.1909397 A 0.90786207,1.0352813 0 1 1 1.4653214,2.1909397 A 0.90786207,1.0352813 0 1 1 3.2810456,2.1909397 z"
+ transform="matrix(1.1014889,0,0,0.9659211,-0.6140352,-0.1162747)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47685188;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path8684"
+ sodipodi:cx="2.3731835"
+ sodipodi:cy="2.1909397"
+ sodipodi:rx="0.90786207"
+ sodipodi:ry="1.0352813"
+ d="M 3.2810456,2.1909397 A 0.90786207,1.0352813 0 1 1 1.4653214,2.1909397 A 0.90786207,1.0352813 0 1 1 3.2810456,2.1909397 z"
+ transform="matrix(1.1014889,0,0,0.9659211,10.385965,2.8837252)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.47685188;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path8686"
+ sodipodi:cx="2.3731835"
+ sodipodi:cy="2.1909397"
+ sodipodi:rx="0.90786207"
+ sodipodi:ry="1.0352813"
+ d="M 3.2810456,2.1909397 A 0.90786207,1.0352813 0 1 1 1.4653214,2.1909397 A 0.90786207,1.0352813 0 1 1 3.2810456,2.1909397 z"
+ transform="matrix(1.1014889,0,0,0.9659211,2.3859647,10.883725)" />
+ </g>
+</svg>
Binary file protocols/bonjour/resources/icons/22x22/apps/im-bonjour.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/resources/icons/22x22/apps/scalable/im-bonjour.svg Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,198 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="24"
+ height="24"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/protocols"
+ sodipodi:docname="bonjour.svg"
+ inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/protocols/bonjour.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3150">
+ <stop
+ style="stop-color:#2e3436;stop-opacity:1;"
+ offset="0"
+ id="stop3152" />
+ <stop
+ style="stop-color:#2e3436;stop-opacity:0;"
+ offset="1"
+ id="stop3154" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3150"
+ id="radialGradient3156"
+ cx="10.748654"
+ cy="10.457643"
+ fx="10.748654"
+ fy="10.457643"
+ r="6.6449099"
+ gradientTransform="matrix(-0.842757,5.698892e-16,-4.565819e-9,-0.35721,19.80716,14.19321)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="24.007726"
+ inkscape:cx="19.418659"
+ inkscape:cy="14.593926"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ fill="#babdb6"
+ inkscape:window-width="1268"
+ inkscape:window-height="971"
+ inkscape:window-x="6"
+ inkscape:window-y="21" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <image
+ id="image2218"
+ height="24.071428"
+ width="23.131142"
+ sodipodi:absref="/home/hbons/Desktop/indextop20050412.jpg"
+ xlink:href="/home/hbons/Desktop/indextop20050412.jpg"
+ x="0"
+ y="1.0807102"
+ style="opacity:0" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.35;fill:url(#radialGradient3156);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3140"
+ sodipodi:cx="10.748654"
+ sodipodi:cy="10.457643"
+ sodipodi:rx="6.6449099"
+ sodipodi:ry="2.3675451"
+ d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
+ transform="matrix(1.805894,0,0,1.478326,-7.410926,5.0402)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#f57900;fill-opacity:1;stroke:#ce5c00;stroke-width:1.18495774;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3210"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077 3.7607069 A 2.7512043 2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043 2.0574222 0 1 1 8.421077 3.7607069 z"
+ transform="matrix(0.728546,0,0,0.977547,0.373616,1.964643)" />
+ <path
+ style="fill:#babdb6;fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 26.5,4.3717336 C 30.06901,-1.9135499 35.080181,2.3148691 35.080181,5.6521385 L 32.664416,4.7456069 C 31.625041,2.6021767 26.5,4.3717336 26.5,4.3717336 z "
+ id="rect3251"
+ sodipodi:nodetypes="cccc" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#f57900;fill-opacity:1;stroke:#ce5c00;stroke-width:1.18495774;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3265"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077 3.7607069 A 2.7512043 2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043 2.0574222 0 1 1 8.421077 3.7607069 z"
+ transform="matrix(0.728546,0,0,0.977547,16.36486,1.964643)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#f57900;fill-opacity:1;stroke:#ce5c00;stroke-width:1.18495774;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3267"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077 3.7607069 A 2.7512043 2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043 2.0574222 0 1 1 8.421077 3.7607069 z"
+ transform="matrix(0.728546,0,0,0.977547,8.383099,14.96465)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.35;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.36390281;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3278"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077 3.7607069 A 2.7512043 2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043 2.0574222 0 1 1 8.421077 3.7607069 z"
+ transform="matrix(0.3652,0,0,0.490017,2.442502,3.775647)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.35;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.36390281;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3280"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077 3.7607069 A 2.7512043 2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043 2.0574222 0 1 1 8.421077 3.7607069 z"
+ transform="matrix(0.3652,0,0,0.490017,18.41586,3.801155)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.35;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:2.36390281;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3282"
+ sodipodi:cx="5.6698728"
+ sodipodi:cy="3.7607069"
+ sodipodi:rx="2.7512043"
+ sodipodi:ry="2.0574222"
+ d="M 8.421077 3.7607069 A 2.7512043 2.0574222 0 1 1 2.9186685,3.7607069 A 2.7512043 2.0574222 0 1 1 8.421077 3.7607069 z"
+ transform="matrix(0.3652,0,0,0.490017,10.4341,16.79505)" />
+ <path
+ style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#888a85;stroke-width:0.99999976;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 7.7318759,2.7396133 C 12.169337,3.9286259 14.955511,8.0423718 15.280153,9.2539565 C 14.057144,8.5478522 8.4371398,5.666617 8.4371398,5.666617 L 7.7318759,2.7396133 z "
+ id="rect3098"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#888a85;stroke-width:0.99999893;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 8.2402219,17.350151 C 6.3014525,13.204266 8.7140226,9.106829 9.6009641,8.2198893 C 9.6009631,9.6320977 10.392827,15.689612 10.392827,15.689612 L 8.2402219,17.350151 z "
+ id="path3101"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#888a85;stroke-width:0.99999946;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 20.999419,10.287708 C 17.750972,13.53615 13.261202,14.092622 12.049619,13.767978 C 13.272629,13.061875 18.044934,9.5274806 18.044934,9.5274806 L 20.999419,10.287708 z "
+ id="path3103"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#888a85;stroke-width:0.99999946;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 1.5549628,8.708934 C 1.5526429,11.954488 4.7660086,13.487253 6.3046441,13.487253 C 5.4626496,12.028876 3.7044795,9.4471457 3.7044795,9.4471457 L 1.5549628,8.708934 z "
+ id="path3105"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#888a85;stroke-width:0.99999946;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 19.83722,1.3615728 C 16.493168,0.56581196 13.018,2.1889619 12.593131,3.5931305 C 14.361353,3.5931305 16.849492,3.4926544 16.849492,3.4926544 L 19.83722,1.3615728 z "
+ id="path3107"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="opacity:1;fill:#babdb6;fill-opacity:1;stroke:#888a85;stroke-width:0.99999994;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 16.5,20.072196 C 19.311894,18.451427 18.826975,15.382116 18.057657,14.049618 C 17.215662,15.507995 16.53488,17.120673 16.53488,17.120673 L 16.5,20.072196 z "
+ id="path3109"
+ sodipodi:nodetypes="cccc" />
+ </g>
+</svg>
Binary file protocols/bonjour/resources/icons/48x48/apps/im-bonjour.png has changed
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/protocols/bonjour/resources/icons/scalable/apps/im-bonjour.svg Fri Feb 23 06:13:40 2024 -0600
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="48"
+ height="48"
+ id="svg2"
+ sodipodi:version="0.32"
+ inkscape:version="0.46"
+ version="1.0"
+ sodipodi:docbase="/home/hbons/Desktop/Gaim Refresh/protocols/48/scalable"
+ sodipodi:docname="bonjour.svg"
+ inkscape:export-filename="/home/hbons/Desktop/Gaim Refresh/protocols/48/bonjour.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"
+ inkscape:output_extension="org.inkscape.output.svg.inkscape">
+ <defs
+ id="defs4">
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient2314">
+ <stop
+ style="stop-color:#ffffff;stop-opacity:1;"
+ offset="0"
+ id="stop2316" />
+ <stop
+ style="stop-color:#ffffff;stop-opacity:0;"
+ offset="1"
+ id="stop2318" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient3150">
+ <stop
+ style="stop-color:#2e3436;stop-opacity:1;"
+ offset="0"
+ id="stop3152" />
+ <stop
+ style="stop-color:#2e3436;stop-opacity:0;"
+ offset="1"
+ id="stop3154" />
+ </linearGradient>
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient3150"
+ id="radialGradient3156"
+ cx="10.748654"
+ cy="10.457643"
+ fx="10.748654"
+ fy="10.457643"
+ r="6.6449099"
+ gradientTransform="matrix(-0.934099,4.045903e-17,-5.060684e-9,-0.395926,20.78896,14.59809)"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2314"
+ id="linearGradient2320"
+ x1="11.237947"
+ y1="2.7057509"
+ x2="11.237947"
+ y2="10.98068"
+ gradientUnits="userSpaceOnUse" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2314"
+ id="linearGradient2324"
+ gradientUnits="userSpaceOnUse"
+ x1="11.237947"
+ y1="2.6204424"
+ x2="11.237947"
+ y2="10.810062" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient2314"
+ id="linearGradient2328"
+ gradientUnits="userSpaceOnUse"
+ x1="11.237947"
+ y1="2.876368"
+ x2="11.237947"
+ y2="10.89537" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="12.003863"
+ inkscape:cx="41.170813"
+ inkscape:cy="23.799748"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ fill="#f57900"
+ inkscape:window-width="1268"
+ inkscape:window-height="972"
+ inkscape:window-x="6"
+ inkscape:window-y="21" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.35;fill:url(#radialGradient3156);fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path3140"
+ sodipodi:cx="10.748654"
+ sodipodi:cy="10.457643"
+ sodipodi:rx="6.6449099"
+ sodipodi:ry="2.3675451"
+ d="M 17.393564 10.457643 A 6.6449099 2.3675451 0 1 1 4.1037445,10.457643 A 6.6449099 2.3675451 0 1 1 17.393564 10.457643 z"
+ transform="matrix(3.611787,0,0,2.323081,-14.82185,18.20605)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:0.77285618;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path1341"
+ sodipodi:cx="11.237947"
+ sodipodi:cy="7.9095716"
+ sodipodi:rx="3.0935922"
+ sodipodi:ry="3.0935922"
+ d="M 14.33154 7.9095716 A 3.0935922 3.0935922 0 1 1 8.1443553,7.9095716 A 3.0935922 3.0935922 0 1 1 14.33154 7.9095716 z"
+ transform="matrix(1.290432,0,0,1.297381,-3.009737,-2.680289)" />
+ <path
+ style="fill:#babdb6;fill-opacity:1;fill-rule:evenodd;stroke:#7d7f7a;stroke-width:0.99999958;stroke-miterlimit:4;stroke-opacity:1"
+ d="M 35.46875,4.5366208 C 31.635379,4.6522391 27.705058,6.4906706 25.53125,9.7866208 C 26.103022,9.4743488 35.303923,4.6093611 38.34375,12.599121 C 39.472527,11.34018 43.22049,11.040461 45.5,12.224121 C 44.713989,6.8257933 40.179035,4.3945539 35.46875,4.5366208 z M 17.46875,4.5678708 C 18.127573,6.5529792 17.95859,8.1732436 17.53125,9.1616208 C 21.771815,8.0014671 29.858933,21.430311 30.5,22.505371 C 25.376692,11.592709 20.897066,5.8681195 17.46875,4.5678708 z M 5.34375,7.5678708 C -3.2027906,14.070713 3.9432311,26.177264 13.4375,26.536621 C 12.842607,26.198616 3.4390694,20.691845 9.4375,13.724121 C 7.6531589,13.401091 5.4098365,10.216725 5.34375,7.5678708 z M 21.46875,14.599121 C 14.518079,24.752705 11.892887,31.742633 12.65625,35.567871 C 14.072321,33.976734 15.618903,33.346912 16.75,33.255371 C 13.282151,29.863924 20.985214,15.493469 21.46875,14.599121 z M 37.40625,21.630371 C 36.029184,26.189083 21.006896,27.252123 18.78125,27.380371 C 31.047662,28.025568 38.491655,26.618231 41.5,23.942871 C 39.411924,23.554843 38.044876,22.56197 37.40625,21.630371 z M 33.125,28.599121 C 33.123038,29.265224 33.537967,40.230123 24.458146,38.651097 C 25.058081,40.306995 23.321409,43.5863 21.031089,44.953234 C 30.971079,48.901331 37.527529,36.737136 33.125,28.599121 z "
+ id="rect2206"
+ sodipodi:nodetypes="ccccccccccccccccccccccccc" />
+ <path
+ sodipodi:type="inkscape:offset"
+ inkscape:radius="-0.97818917"
+ inkscape:original="M 35.46875 4.53125 C 31.635379 4.6468685 27.705058 6.4852998 25.53125 9.78125 C 26.103022 9.4689777 35.303923 4.6039901 38.34375 12.59375 C 39.472527 11.334809 43.22049 11.03509 45.5 12.21875 C 44.713989 6.8204222 40.179035 4.3891831 35.46875 4.53125 z M 17.46875 4.5625 C 18.127573 6.5476086 17.95859 8.1678728 17.53125 9.15625 C 21.771815 7.996096 29.858933 21.42494 30.5 22.5 C 25.376692 11.587338 20.897066 5.8627487 17.46875 4.5625 z M 5.34375 7.5625 C -3.2027906 14.065342 3.9432311 26.171893 13.4375 26.53125 C 12.842607 26.193245 3.4390694 20.686474 9.4375 13.71875 C 7.6531589 13.39572 5.4098365 10.211354 5.34375 7.5625 z M 21.46875 14.59375 C 14.518079 24.747334 11.892887 31.737262 12.65625 35.5625 C 14.072321 33.971363 15.618903 33.341541 16.75 33.25 C 13.282151 29.858553 20.985214 15.488098 21.46875 14.59375 z M 37.40625 21.625 C 36.029184 26.183712 21.006896 27.246752 18.78125 27.375 C 31.047662 28.020197 38.491655 26.61286 41.5 23.9375 C 39.411924 23.549472 38.044876 22.556599 37.40625 21.625 z M 33.125 28.59375 C 33.123038 29.259853 33.548571 40.235276 24.46875 38.65625 C 25.068686 40.312149 23.32157 43.601816 21.03125 44.96875 C 30.971239 48.916845 37.527529 36.731765 33.125 28.59375 z "
+ xlink:href="#rect2206"
+ style="opacity:0.4;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999958;stroke-miterlimit:4;stroke-opacity:1"
+ id="path2265"
+ d="M 35.5,6.4375 C 33.368939,6.5017749 31.254587,7.2183109 29.4375,8.375 C 29.955273,8.2616185 30.342793,8.0837857 30.90625,8.03125 C 32.406836,7.8913382 34.078294,8.0394993 35.59375,8.8125 C 36.831972,9.4440897 37.86888,10.628822 38.6875,12.1875 C 39.489624,11.770011 40.411361,11.500994 41.4375,11.4375 C 42.258666,11.386689 43.10461,11.462473 43.9375,11.625 C 43.379009,10.119471 42.589365,8.8531272 41.40625,8.03125 C 39.790488,6.908825 37.677617,6.3718209 35.5,6.4375 z M 18.78125,7.53125 C 18.821476,8.1885616 18.763233,8.7406401 18.65625,9.28125 C 19.760339,9.4560073 20.842148,9.9390765 21.875,10.78125 C 22.166416,11.018866 22.428639,11.416981 22.71875,11.6875 C 22.66814,11.618108 22.612837,11.505519 22.5625,11.4375 C 21.155108,9.5357202 19.912201,8.3834952 18.78125,7.53125 z M 4.78125,10.5 C 2.1367338,13.32142 1.9732812,16.73063 3.5,19.84375 C 4.6796069,22.249077 6.8918614,24.272293 9.5,25.4375 C 9.0508422,24.984485 8.5946267,24.68144 8.1875,24.125 C 7.2714393,22.872975 6.524154,21.350596 6.46875,19.59375 C 6.4232564,18.151162 7.0064835,16.584718 8.0625,15.03125 C 7.2533732,14.545104 6.5354947,13.881423 5.9375,13 C 5.4271977,12.247833 5.0629652,11.390597 4.78125,10.5 z M 37.5625,24 C 36.85358,24.922553 35.872279,25.684009 34.625,26.25 C 33.981881,26.541835 33.133881,26.670217 32.40625,26.90625 C 35.442669,26.486299 37.633021,25.855821 39.1875,25.0625 C 38.533201,24.753288 38.014785,24.406514 37.5625,24 z M 15.59375,27.6875 C 15.447519,28.018151 15.191854,28.433804 15.0625,28.75 C 14.093097,31.119641 13.782747,32.928132 13.6875,34.4375 C 14.296929,34.034852 14.855783,33.77311 15.4375,33.59375 C 14.976511,32.494336 14.815677,31.243494 15,29.84375 C 15.08934,29.165305 15.417606,28.406637 15.59375,27.6875 z M 33.3125,33.78125 C 33.133192,34.418356 33.085183,34.999527 32.78125,35.65625 C 32.13654,37.049308 31.160565,38.398872 29.65625,39.3125 C 28.414521,40.06665 26.766693,40.371954 24.875,40.25 C 24.843897,41.165669 24.622124,42.10692 24.15625,43.03125 C 23.766181,43.805178 23.234663,44.527693 22.625,45.1875 C 26.385249,45.969725 29.45049,44.399 31.40625,41.59375 C 32.935546,39.400201 33.59997,36.546168 33.3125,33.78125 z "
+ inkscape:href="#rect2206" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:0.77265418;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2216"
+ sodipodi:cx="11.237947"
+ sodipodi:cy="7.9095716"
+ sodipodi:rx="3.0935922"
+ sodipodi:ry="3.0935922"
+ d="M 14.33154 7.9095716 A 3.0935922 3.0935922 0 1 1 8.1443553,7.9095716 A 3.0935922 3.0935922 0 1 1 14.33154 7.9095716 z"
+ transform="matrix(-0.645216,1.118132,-1.123564,-0.649031,58.6294,10.13592)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:1;fill:#f57900;fill-opacity:1;fill-rule:evenodd;stroke:#ce5c00;stroke-width:0.77285618;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2222"
+ sodipodi:cx="11.237947"
+ sodipodi:cy="7.9095716"
+ sodipodi:rx="3.0935922"
+ sodipodi:ry="3.0935922"
+ d="M 14.33154 7.9095716 A 3.0935922 3.0935922 0 1 1 8.1443553,7.9095716 A 3.0935922 3.0935922 0 1 1 14.33154 7.9095716 z"
+ transform="matrix(-0.645216,-1.117547,1.123565,-0.64869,15.8724,57.25531)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.6;fill:url(#linearGradient2320);fill-opacity:1.0;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.02678573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2228"
+ sodipodi:cx="11.237947"
+ sodipodi:cy="7.9095716"
+ sodipodi:rx="3.0935922"
+ sodipodi:ry="3.0935922"
+ d="M 14.33154 7.9095716 A 3.0935922 3.0935922 0 1 1 8.1443553,7.9095716 A 3.0935922 3.0935922 0 1 1 14.33154 7.9095716 z"
+ transform="matrix(0.971301,0,0,0.976532,0.576636,-0.142509)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.6;fill:url(#linearGradient2324);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.02678573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2322"
+ sodipodi:cx="11.237947"
+ sodipodi:cy="7.9095716"
+ sodipodi:rx="3.0935922"
+ sodipodi:ry="3.0935922"
+ d="M 14.33154 7.9095716 A 3.0935922 3.0935922 0 1 1 8.1443553,7.9095716 A 3.0935922 3.0935922 0 1 1 14.33154 7.9095716 z"
+ transform="matrix(0.971301,0,0,0.976532,31.58938,9.755058)" />
+ <path
+ sodipodi:type="arc"
+ style="opacity:0.6;fill:url(#linearGradient2328);fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.02678573;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path2326"
+ sodipodi:cx="11.237947"
+ sodipodi:cy="7.9095716"
+ sodipodi:rx="3.0935922"
+ sodipodi:ry="3.0935922"
+ d="M 14.33154 7.9095716 A 3.0935922 3.0935922 0 1 1 8.1443553,7.9095716 A 3.0935922 3.0935922 0 1 1 14.33154 7.9095716 z"
+ transform="matrix(0.971301,0,0,0.976532,6.579761,31.79704)" />
+ </g>
+</svg>
--- a/protocols/meson.build Thu Feb 22 22:55:34 2024 -0600
+++ b/protocols/meson.build Fri Feb 23 06:13:40 2024 -0600
@@ -1,1 +1,2 @@
+subdir('bonjour')
subdir('xmpp')