Index: uspace/srv/hid/rfb/main.c
===================================================================
--- uspace/srv/hid/rfb/main.c	(revision 3482bccc167655477c72f40e7577273224e92959)
+++ uspace/srv/hid/rfb/main.c	(revision 0d23cc0105a4118ec5256b182faef21f61bc9b4a)
@@ -140,5 +140,5 @@
 static void syntax_print(void)
 {
-	fprintf(stderr, "Usage: %s <service-name> [port]\n", NAME);
+	fprintf(stderr, "Usage: %s <name> <width> <height> [port]\n", NAME);
 }
 
@@ -158,15 +158,29 @@
 int main(int argc, char **argv)
 {
-	if (argc <= 1) {
+	if (argc <= 3) {
 		syntax_print();
 		return 1;
 	}
 
-	const char *service_name = argv[1];
+	const char *rfb_name = argv[1];
+	
+	char *endptr;
+	unsigned long width = strtoul(argv[2], &endptr, 0);
+	if (*endptr != 0) {
+		fprintf(stderr, "Invalid width\n");
+		syntax_print();
+		return 1;
+	}
+	
+	unsigned long height = strtoul(argv[3], &endptr, 0);
+	if (*endptr != 0) {
+		fprintf(stderr, "Invalid height\n");
+		syntax_print();
+		return 1;
+	}
+	
 	unsigned long port = 5900;
-	
-	if (argc > 2) {
-		char *endptr;
-		port = strtoul(argv[2], &endptr, 0);
+	if (argc > 4) {
+		port = strtoul(argv[4], &endptr, 0);
 		if (*endptr != 0) {
 			fprintf(stderr, "Invalid port number\n");
@@ -176,5 +190,5 @@
 	}
 	
-	rfb_init(&rfb, 800, 600);
+	rfb_init(&rfb, width, height, rfb_name);
 	
 	vis = malloc(sizeof(visualizer_t));
@@ -211,7 +225,15 @@
 		printf("%s: Unable to register server.\n", NAME);
 		return rc;
-        }
+	}
+
+	char *service_name;
+	rc = asprintf(&service_name, "rfb/%s", rfb_name);
+	if (rc < 0) {
+		printf(NAME ": Unable to create service name\n");
+		return rc;
+	}
 
 	service_id_t service_id;
+	
 	rc = loc_service_register(service_name, &service_id);
 	if (rc != EOK) {
@@ -219,4 +241,6 @@
 		return rc;
 	}
+	
+	free(service_name);
 
 	category_id_t visualizer_category;
Index: uspace/srv/hid/rfb/rfb.c
===================================================================
--- uspace/srv/hid/rfb/rfb.c	(revision 3482bccc167655477c72f40e7577273224e92959)
+++ uspace/srv/hid/rfb/rfb.c	(revision 0d23cc0105a4118ec5256b182faef21f61bc9b4a)
@@ -161,5 +161,5 @@
 }
 
-int rfb_init(rfb_t *rfb, uint16_t width, uint16_t height)
+int rfb_init(rfb_t *rfb, uint16_t width, uint16_t height, const char *name)
 {
 	memset(rfb, 0, sizeof(rfb_t));
@@ -178,5 +178,5 @@
 	pf->b_shift = 16;
 	
-	rfb->name = "HelenOS";
+	rfb->name = str_dup(name);
 	
 	return rfb_set_size(rfb, width, height);
Index: uspace/srv/hid/rfb/rfb.h
===================================================================
--- uspace/srv/hid/rfb/rfb.h	(revision 3482bccc167655477c72f40e7577273224e92959)
+++ uspace/srv/hid/rfb/rfb.h	(revision 0d23cc0105a4118ec5256b182faef21f61bc9b4a)
@@ -142,5 +142,5 @@
 
 
-extern int rfb_init(rfb_t *, uint16_t, uint16_t);
+extern int rfb_init(rfb_t *, uint16_t, uint16_t, const char *);
 extern int rfb_set_size(rfb_t *, uint16_t, uint16_t);
 extern int rfb_listen(rfb_t *, uint16_t);
