aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkraxel <kraxel>2007-02-07 15:44:40 +0000
committerkraxel <kraxel>2007-02-07 15:44:40 +0000
commit7d906990781d561e9b196138356300460b2c0da2 (patch)
tree10e7cd650335b807c4580a305b349aa75c4b6c3e
parent3afcd6538aeba46332c5ed8a2b020750a5f06d8a (diff)
downloadxenwatch-7d906990781d561e9b196138356300460b2c0da2.tar.gz
misc
-rw-r--r--GNUmakefile4
-rw-r--r--mdns-browser.c15
-rw-r--r--mdns-publish-vnc.c4
-rw-r--r--mdns.c11
4 files changed, 28 insertions, 6 deletions
diff --git a/GNUmakefile b/GNUmakefile
index 643d5a6..0876691 100644
--- a/GNUmakefile
+++ b/GNUmakefile
@@ -16,7 +16,7 @@ NEEDS_XENSTORE := xenlog xenscreen xenwatch mdns-publish-xendom mdns-publish-vnc
NEEDS_XENAPI := xenapi
NEEDS_GTK := xenwatch mdns-browser vnc-client
NEEDS_MDNS := xenwatch mdns-browser mdns-publish-xendom mdns-publish-vnc
-NEEDS_VNC := xenwatch vnc-client
+NEEDS_VNC := xenwatch mdns-browser vnc-client
# default target
all: build
@@ -97,7 +97,7 @@ xenlog: xenlog.o xenstore.o
xenscreen: xenscreen.o xenstore.o apps.o
xenwatch: xenwatch.o xs_view.o xs_store.o xd_view.o xd_store.o \
apps.o apps-x11.o tcp.o mdns.o vnc.o x11.o
-mdns-browser: mdns-browser.o mdns.o apps.o apps-x11.o
+mdns-browser: mdns-browser.o mdns.o vnc.o x11.o apps.o apps-x11.o
mdns-publish-xendom: mdns-publish-xendom.o mdns-publish.o
mdns-publish-vnc: mdns-publish-vnc.o mdns-publish.o xenstore.o
vnc-client: vnc-client.o vnc.o x11.o
diff --git a/mdns-browser.c b/mdns-browser.c
index bca3ab1..ec5c1a2 100644
--- a/mdns-browser.c
+++ b/mdns-browser.c
@@ -13,6 +13,7 @@
#include "mdns.h"
#include "apps.h"
+#include "vnc.h"
/* ------------------------------------------------------------------ */
@@ -22,6 +23,7 @@ static struct mdns_window *mdns;
static char *service = "_ssh._tcp";
static char *domain = NULL;
static enum mdns_view view = MDNS_VIEW_DEFAULT;
+static mdns_callback callback = NULL;
/* ------------------------------------------------------------------ */
@@ -47,6 +49,12 @@ static void usage(FILE *fp)
service);
}
+static void vnc_callback(struct mdns_window *mdns, char *name, char *type,
+ char *host, int port, char *url)
+{
+ vnc_open(host, port, VNC_FLAG_US_KBD, 0);
+}
+
int
main(int argc, char *argv[])
{
@@ -89,7 +97,12 @@ main(int argc, char *argv[])
fcntl(ConnectionNumber(dpy),F_SETFD,FD_CLOEXEC);
detect_desktop();
- mdns = mdns_create_window(1, view, NULL);
+#ifdef HAVE_VNCCLIENT
+ if (0 == strcmp(service, "_rfb._tcp"))
+ callback = vnc_callback;
+#endif
+
+ mdns = mdns_create_window(1, view, callback);
if (NULL == mdns) {
fprintf(stderr,"Oops: mDNS did't initialize ok\n");
exit(1);
diff --git a/mdns-publish-vnc.c b/mdns-publish-vnc.c
index 48b4e73..f73f586 100644
--- a/mdns-publish-vnc.c
+++ b/mdns-publish-vnc.c
@@ -71,8 +71,8 @@ static void try_attach_domain(struct mdns_pub *mdns, struct dom *dom, int boot)
if (!dom->vnc_port)
return;
- snprintf(dom->label, sizeof(dom->label), "%s (%d), at %s",
- dom->name, dom->domid, uts.nodename);
+ snprintf(dom->label, sizeof(dom->label), "Xen guest %s (%s, #%d)",
+ dom->name, uts.nodename, dom->domid);
mdns_log_printf(mdns, LOG_INFO, "pub: %s (%d)\n", dom->name, dom->domid);
dom->entry = mdns_pub_add(mdns, dom->label, "_rfb._tcp", dom->vnc_port, NULL);
diff --git a/mdns.c b/mdns.c
index 7d32d0d..3891a73 100644
--- a/mdns.c
+++ b/mdns.c
@@ -57,12 +57,21 @@ struct actions {
static const struct actions default_actions[] = {
{
- /* let KDE decide how to handle it ... */
+ .desktop = DESKTOP_ANY,
+ .needurl = 1,
+ .tryapp = "xdg-open",
+ .cmdline = "xdg-open %u",
+ },{
.desktop = DESKTOP_KDE,
.needurl = 1,
.tryapp = "kfmclient",
.cmdline = "kfmclient exec %u",
},{
+ .desktop = DESKTOP_GNOME,
+ .needurl = 1,
+ .tryapp = "gnome-open",
+ .cmdline = "gnome-open %u",
+ },{
.desktop = DESKTOP_ANY,
.type = "_ssh._tcp",
.cmdline = "xterm -title \"%n\" -e ssh -p %p \"%h\"",