# local-export-daemon **Repository Path**: mirrors_chromium_gitlab_gnome/local-export-daemon ## Basic Information - **Project Name**: local-export-daemon - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-08-09 - **Last Updated**: 2025-11-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README The idea of this daemon is to have one daemon that exports info about a desktop session on the local network. This daemon uses Avahi, but individual desktop apps and services don't have to; they just export properties via D-Bus which are then proxied by the local export daemon onto the LAN. The local export daemon will support one request to get a list of everything the user's session has to offer to other users on the LAN. Over time we can experiment with what info requires connecting to the daemon, what info is in the TXT records, and so forth. For now the basic idea is to reduce the complexity apps have to deal with: from "understanding zeroconf" to a couple of simple method calls. The API can be found in src/session-api.c: static const HippoDBusMember local_export_members[] = { /* args are "s" the namespaced name of the info, and "a{sv}" the * dict of (string,variant) to export on the LAN */ { HIPPO_DBUS_MEMBER_METHOD, "AddInfoToOurSession", "sa{sv}", "", handle_add_info_to_our_session }, /* arg is "s" the info to remove from our session */ { HIPPO_DBUS_MEMBER_METHOD, "RemoveInfoFromOurSession", "s", "", handle_remove_info_from_our_session }, /* args are "s" the namespaced name of the info, and returns an * array of struct; each struct is a session that provided the * requested info, and the first dict in the struct is props of * said session, while the second dict is the info. Props of the * session would be machine ID, session ID, and IP addresses of * the session. */ { HIPPO_DBUS_MEMBER_METHOD, "GetInfoFromAllSessions", "s", "a(a{sv}a{sv})", handle_get_info_from_all_sessions }, /* args are "s" the namespaced name of the info, and then a new value for that info for some * session (as in GetInfoFromOtherSessions) */ { HIPPO_DBUS_MEMBER_SIGNAL, "InfoChanged", "", "s(a{sv}a{sv})", NULL }, /* Args are the info name removed, and the session details */ { HIPPO_DBUS_MEMBER_SIGNAL, "InfoRemoved", "", "sa{sv}", NULL }, { 0, NULL } };