@@ -208,6 +208,8 @@ public class VncViewer extends javax.swing.JApplet | |||
vncServerName.put(argv[i].toCharArray()).flip(); | |||
} | |||
// Check if the server name in reality is a configuration file | |||
potentiallyLoadConfigurationFile(vncServerName); | |||
} | |||
public static void usage() { | |||
@@ -215,6 +217,7 @@ public class VncViewer extends javax.swing.JApplet | |||
"[host:displayNum]\n"+ | |||
" vncviewer [options/parameters] -listen [port] "+ | |||
"[options/parameters]\n"+ | |||
" vncviewer [options/parameters] [.tigervnc file]\n"+ | |||
"\n"+ | |||
"Options:\n"+ | |||
" -log <level> configure logging level\n"+ | |||
@@ -277,6 +280,27 @@ public class VncViewer extends javax.swing.JApplet | |||
System.exit(1); | |||
} | |||
public static void potentiallyLoadConfigurationFile(CharBuffer vncServerName) { | |||
String serverName = vncServerName.toString(); | |||
boolean hasPathSeparator = (serverName.indexOf('/') != -1 || | |||
(serverName.indexOf('\\')) != -1); | |||
if (hasPathSeparator) { | |||
try { | |||
serverName = loadViewerParameters(vncServerName.toString()); | |||
if (serverName == "") { | |||
vlog.info("Unable to load the server name from given file"); | |||
System.exit(1); | |||
} | |||
vncServerName.clear(); | |||
vncServerName.put(serverName).flip(); | |||
} catch (com.tigervnc.rfb.Exception e) { | |||
vlog.info(e.getMessage()); | |||
System.exit(1); | |||
} | |||
} | |||
} | |||
public static void newViewer() { | |||
String cmd = "java -jar "; | |||
try { |
@@ -349,8 +349,9 @@ static void usage(const char *programName) | |||
fprintf(stderr, | |||
"\nusage: %s [parameters] [host:displayNum] [parameters]\n" | |||
" %s [parameters] -listen [port] [parameters]\n", | |||
programName, programName); | |||
" %s [parameters] -listen [port] [parameters]\n" | |||
" %s [parameters] [.tigervnc file]\n", | |||
programName, programName, programName); | |||
fprintf(stderr,"\n" | |||
"Parameters can be turned on with -<param> or off with -<param>=0\n" | |||
"Parameters which take a value can be specified as " | |||
@@ -368,6 +369,31 @@ static void usage(const char *programName) | |||
exit(1); | |||
} | |||
static void | |||
potentiallyLoadConfigurationFile(char *vncServerName) | |||
{ | |||
const bool hasPathSeparator = (strchr(vncServerName, '/') != NULL || | |||
(strchr(vncServerName, '\\')) != NULL); | |||
if (hasPathSeparator) { | |||
try { | |||
strncpy(vncServerName, loadViewerParameters(vncServerName), | |||
VNCSERVERNAMELEN); | |||
if (vncServerName[0] == '\0') { | |||
vlog.error("Unable to load the server name from given file"); | |||
if (alertOnFatalError) | |||
fl_alert("Unable to load the server name from given file"); | |||
exit(EXIT_FAILURE); | |||
} | |||
} catch (rfb::Exception& e) { | |||
vlog.error("%s", e.str()); | |||
if (alertOnFatalError) | |||
fl_alert("%s", e.str()); | |||
exit(EXIT_FAILURE); | |||
} | |||
} | |||
} | |||
#ifndef WIN32 | |||
static int | |||
interpretViaParam(char *remoteHost, int *remotePort, int localPort) | |||
@@ -516,6 +542,9 @@ int main(int argc, char** argv) | |||
i++; | |||
} | |||
// Check if the server name in reality is a configuration file | |||
potentiallyLoadConfigurationFile(vncServerName); | |||
mkvnchomedir(); | |||
#if !defined(WIN32) && !defined(__APPLE__) |
@@ -14,6 +14,10 @@ vncviewer \- VNC viewer for X | |||
.RI [ options ] | |||
.B \-listen | |||
.RI [ port ] | |||
.br | |||
.B vncviewer | |||
.RI [ options ] | |||
.RI [ .tigervnc file ] | |||
.SH DESCRIPTION | |||
.B vncviewer | |||
is a viewer (client) for Virtual Network Computing. This manual page documents | |||
@@ -31,6 +35,18 @@ VNC server on that machine. Either the machine name or display number can be | |||
omitted. So for example ":1" means display number 1 on the same machine, and | |||
"snoopy" means "snoopy:0" i.e. display 0 on machine "snoopy". | |||
As another quick way to start a connection to a VNC server, specify a .tigervnc | |||
configuration file as an argument to the viewer, e.g.: | |||
.RS | |||
vncviewer ./some.tigervnc | |||
.RE | |||
where './some.tigervnc' is an existing and valid TigerVNC configuration file. | |||
The file name needs to include a path separator. Additional options may be | |||
given too, but the given configuration file will overwrite any conflicting | |||
parameters. | |||
If the VNC server is successfully contacted, you will be prompted for a | |||
password to authenticate you. If the password is correct, a window will appear | |||
showing the desktop of the VNC server. |