diff -urN rdesktop-1.4.1.orig/rdesktop.c rdesktop-1.4.1/rdesktop.c
--- rdesktop-1.4.1.orig/rdesktop.c	2005-04-23 08:12:28.000000000 +1000
+++ rdesktop-1.4.1/rdesktop.c	2006-06-17 09:53:15.000000000 +1000
@@ -108,6 +108,9 @@
 rdp2vnc_connect(char *server, uint32 flags, char *domain, char *password,
 		char *shell, char *directory);
 #endif
+
+void read_config(void);
+
 /* Display usage information */
 static void
 usage(char *program)
@@ -387,6 +390,8 @@
 #define VNCOPT
 #endif
 
+	read_config();
+
 	while ((c = getopt(argc, argv,
 			   VNCOPT "u:L:d:s:c:p:n:k:g:fbBeEmzCDKS:T:NX:a:x:Pr:045h?")) != -1)
 	{
@@ -1287,3 +1292,55 @@
 		return False;
 	return True;
 }
+
+#define CFGFILE "/.rdesktop/config"
+#define BUFSIZE 1024
+
+void read_config(void) {
+	char *homedir;
+	char *cfgfilepath;
+	char buf[BUFSIZE];
+
+	FILE *fp;
+
+	homedir = getenv("HOME");
+	cfgfilepath = (char *) malloc (strlen(homedir) + strlen(CFGFILE) + 1);
+
+	if (!cfgfilepath) return;
+
+	sprintf(cfgfilepath,"%s%s",homedir,CFGFILE);
+
+	fp = fopen(cfgfilepath,"r");
+
+	if (!fp)
+		return;
+	
+	while( fgets(buf,BUFSIZE,fp) > 0 ) {
+		int a,x,y;
+
+		if (sscanf(buf,"colordepth %d",&a)) 
+			g_server_bpp = a;			
+
+		else if (sscanf(buf,"geometry %dx%d",&x,&y)) {
+			g_width = x;
+			g_height = y;
+		}	
+
+		else if (sscanf(buf,"geometry %d%%",&x)) {
+			g_width = -x;
+		}	
+
+		else if (sscanf(buf,"fullscreen %d",&a)) {
+			if (a) 
+				g_fullscreen = True;
+			else 
+				g_fullscreen = False;
+		}	
+	}
+
+	fclose(fp);
+
+	free(cfgfilepath);
+
+	return;
+}

