diff options
author | Pierre Ossman <ossman@cendio.se> | 2021-06-13 18:28:16 +0200 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2021-06-13 18:28:16 +0200 |
commit | 775d432ec72055b3854d22a5fed7c43997e344da (patch) | |
tree | 0202f764a844cad87a81b96e2fd1d154d10f4df6 /unix/xserver/hw/vnc/vncExtInit.cc | |
parent | 960c7d2ff393917e8afd00742447ce8ee51b350f (diff) | |
download | tigervnc-775d432ec72055b3854d22a5fed7c43997e344da.tar.gz tigervnc-775d432ec72055b3854d22a5fed7c43997e344da.zip |
Use <user>@<hostname> as the default desktop name
Is a lot more useful default than the previous "x11", or "x0vncserver".
At the same time give x0vncserver a parameter to change the name.
Diffstat (limited to 'unix/xserver/hw/vnc/vncExtInit.cc')
-rw-r--r-- | unix/xserver/hw/vnc/vncExtInit.cc | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/unix/xserver/hw/vnc/vncExtInit.cc b/unix/xserver/hw/vnc/vncExtInit.cc index 6c4612d1..bdf563a8 100644 --- a/unix/xserver/hw/vnc/vncExtInit.cc +++ b/unix/xserver/hw/vnc/vncExtInit.cc @@ -19,6 +19,9 @@ #include <stdio.h> #include <errno.h> +#include <unistd.h> +#include <sys/types.h> +#include <pwd.h> #include <set> #include <string> @@ -73,10 +76,12 @@ struct CaseInsensitiveCompare { typedef std::set<std::string, CaseInsensitiveCompare> ParamSet; static ParamSet allowOverrideSet; +static const char* defaultDesktopName(); + rfb::IntParameter rfbport("rfbport", "TCP port to listen for RFB protocol",0); rfb::StringParameter rfbunixpath("rfbunixpath", "Unix socket to listen for RFB protocol", ""); rfb::IntParameter rfbunixmode("rfbunixmode", "Unix socket access mode", 0600); -rfb::StringParameter desktopName("desktop", "Name of VNC desktop","x11"); +rfb::StringParameter desktopName("desktop", "Name of VNC desktop", defaultDesktopName()); rfb::BoolParameter localhostOnly("localhost", "Only allow connections from localhost", false); @@ -95,6 +100,35 @@ rfb::BoolParameter sendPrimary("SendPrimary", "Send the PRIMARY as well as the CLIPBOARD selection", true); +static const char* defaultDesktopName() +{ + static char* name = NULL; + + char hostname[HOST_NAME_MAX + 1]; + struct passwd* pwent; + + size_t len; + + delete [] name; + + if (gethostname(hostname, sizeof(hostname)) == -1) + return ""; + + pwent = getpwuid(getuid()); + if (pwent == NULL) + return ""; + + len = snprintf(NULL, 0, "%s@%s", pwent->pw_name, hostname); + if (len < 0) + return ""; + + name = new char[len + 1]; + + snprintf(name, len + 1, "%s@%s", pwent->pw_name, hostname); + + return name; +} + static PixelFormat vncGetPixelFormat(int scrIdx) { int depth, bpp; |