diff -Nurw tsclient.patched/src/connect.c tsclient/src/connect.c --- tsclient.patched/src/connect.c 2010-12-07 15:46:14.000000000 -0600 +++ tsclient/src/connect.c 2010-12-07 16:01:43.438520085 -0600 @@ -450,10 +450,12 @@ miProtocol = gtk_menu_item_new_with_mnemonic ("XDMCP"); gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol); - gtk_tooltips_set_tip (tooltips, miProtocol, _("XDMCP protocol uses Xnest to connect to servers running X."), NULL); + gtk_tooltips_set_tip (tooltips, miProtocol, _("XDMCP protocol uses Xephyr or Xnest to connect to servers running X."), NULL); g_signal_connect (G_OBJECT (miProtocol), "activate", G_CALLBACK (on_protocol_changed), (int*)2); gtk_widget_ref (miProtocol); - if (!g_find_program_in_path ("Xnest")) { gtk_widget_set_sensitive (miProtocol, FALSE); } + if (!g_find_program_in_path ("Xephyr") && + !g_find_program_in_path ("Xnest")) + { gtk_widget_set_sensitive (miProtocol, FALSE); } miProtocol = gtk_menu_item_new_with_mnemonic ("ICA"); gtk_container_add (GTK_CONTAINER (mnuProtocol), miProtocol); diff -Nurw tsclient.patched/src/support.c tsclient/src/support.c --- tsclient.patched/src/support.c 2010-12-07 15:46:26.000000000 -0600 +++ tsclient/src/support.c 2010-12-07 16:08:48.433095032 -0600 @@ -654,15 +654,22 @@ } else if (rdp->protocol == 2) { int display; + char *desktopwidth = "-geometry"; - if (g_find_program_in_path ("Xnest")) { + if (g_find_program_in_path ("Xephyr")) { + sflags += G_SPAWN_SEARCH_PATH; + + sprintf(buffer, "Xephyr"); + c_argv[c_argc++] = strdup(buffer); + desktopwidth = "-screen"; + } else if (g_find_program_in_path ("Xnest")) { sflags += G_SPAWN_SEARCH_PATH; sprintf(buffer, "Xnest"); c_argv[c_argc++] = strdup(buffer); } else { if(error) { - *error = g_strdup(_("Xnest was not found in your path.\nPlease verify your Xnest installation.")); + *error = g_strdup(_("Xephyr or Xnest was not found in your path.\nPlease verify your Xnest installation.")); } return 1; } @@ -681,34 +688,26 @@ sprintf(buffer, "-once"); c_argv[c_argc++] = strdup(buffer); + sprintf(buffer, desktopwidth); + c_argv[c_argc++] = strdup(buffer); switch (rdp->desktopwidth) { case 640: - sprintf(buffer, "-geometry"); - c_argv[c_argc++] = strdup(buffer); sprintf(buffer, "640x480"); c_argv[c_argc++] = strdup(buffer); break; case 800: - sprintf(buffer, "-geometry"); - c_argv[c_argc++] = strdup(buffer); sprintf(buffer, "800x600"); c_argv[c_argc++] = strdup(buffer); break; case 1024: - sprintf(buffer, "-geometry"); - c_argv[c_argc++] = strdup(buffer); sprintf(buffer, "1024x768"); c_argv[c_argc++] = strdup(buffer); break; case 1152: - sprintf(buffer, "-geometry"); - c_argv[c_argc++] = strdup(buffer); sprintf(buffer, "1152x864"); c_argv[c_argc++] = strdup(buffer); break; case 1280: - sprintf(buffer, "-geometry"); - c_argv[c_argc++] = strdup(buffer); sprintf(buffer, "1280x960"); c_argv[c_argc++] = strdup(buffer); break; diff -Nurw tsclient.patched/tsclient.1 tsclient/tsclient.1 --- tsclient.patched/tsclient.1 2010-12-07 15:45:40.000000000 -0600 +++ tsclient/tsclient.1 2010-12-07 15:59:04.046796011 -0600 @@ -33,7 +33,7 @@ Remote Desktop Protocol (RDP). Using the rdesktop program as a backend, tsclient allows users to access and view their desktops as stored on remote Windows NT/2000/XP servers. It also supports connections using other remote -desktop tools such as: vnc, Xnest and the Citrix ICA client. +desktop tools such as: vnc, Xephyr, Xnest and the Citrix ICA client. .PP The GNOME applet can be added to your panel by right-clicking the panel and choosing the following: \fBAdd to Panel -> Internet -> Terminal Server Client