[X2Go-Commits] x2goclient.git - master (branch) updated: 4.0.1.0-15-ga657ff6

X2Go dev team git-admin at x2go.org
Sat May 18 20:47:38 CEST 2013


The branch, master has been updated
       via  a657ff6df33de369f4c323e42b642b157d999b45 (commit)
      from  c25f99471a30d406a68356d710f928b2e805973f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit a657ff6df33de369f4c323e42b642b157d999b45
Author: Otto Kjell <otto.kjell at gmail.com>
Date:   Sat May 18 20:22:54 2013 +0200

    Enable debug mode through cmd line parameter. (Fixes: #142).

-----------------------------------------------------------------------

Summary of changes:
 .gitignore              |    7 +
 debian/changelog        |    4 +
 onmainwindow.cpp        |  899 +++++++++++++++++++++++++++++++----------------
 onmainwindow.h          |    3 +
 sshmasterconnection.cpp |   88 ++++-
 x2goclientconfig.h      |    2 +-
 x2gologdebug.cpp        |    1 -
 x2gologdebug.h          |   33 +-
 8 files changed, 716 insertions(+), 321 deletions(-)

The diff of changes is:
diff --git a/.gitignore b/.gitignore
index 721e32c..bd81db2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,11 @@
 # Temporary object files/static libs.
 *.[oa]
 
+client_build/
+plugin_build/
+.build_man2html
+x2goclient
+
 # Generated by qmake.
 moc_*.cpp
 ui_*.h
@@ -14,4 +19,6 @@ x2goclient_*.qm
 
 # Generated by qmake when building on OS X.
 x2goclient.app
+x2goclient.dmg
 
+x2goclient.pro.user
diff --git a/debian/changelog b/debian/changelog
index d06914d..85111fe 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -12,6 +12,10 @@ x2goclient (4.0.1.1-0~x2go1) UNRELEASED; urgency=low
       Let's consider a given SSH private key that fails to log the user
       in as an overall login failure. (Fixes: #141).
 
+  [ Otto Kjell ]
+  * New upstream version (4.0.1.1):
+    - Enable debug mode through cmd line parameter. (Fixes: #142).
+
   [ Orion Poplawski ]
   * New upstream version (4.0.1.1):
     - Instead of using a hard-code DPI of 96, use local DPI settings for new
diff --git a/onmainwindow.cpp b/onmainwindow.cpp
index 5f37cc1..c69fc43 100644
--- a/onmainwindow.cpp
+++ b/onmainwindow.cpp
@@ -36,18 +36,20 @@ bool	ONMainWindow::portable=false;
 QString ONMainWindow::homeDir;
 QString ONMainWindow::sessionCfg;
 
-
 #ifdef Q_OS_WIN
 QString ONMainWindow::u3Device;
 #endif
 
+bool ONMainWindow::debugging=false;
 
 ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
 {
 #ifdef Q_OS_LINUX
     image=shape=0;
 #endif
-    x2goDebug<<"ONMainWindow constructor"<<endl;
+    x2goInfof(1) << tr("Starting x2goclient...");
+    debugging = false;
+
     setFocusPolicy ( Qt::NoFocus );
     installTranslator();
     cleanAllFiles=false;
@@ -223,8 +225,8 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
             portableDataPath=QDir::currentPath();
 
         homeDir=portableDataPath;
-        x2goDebug<<"running in \"portable\" mode\n"<<
-                 "Data Dir is "<<portableDataPath;
+
+        x2goInfof(2)<<tr("Starting x2goclient in portable mode... data directory is: ")<<portableDataPath;
         QTimer *timer = new QTimer(this);
         connect(timer, SIGNAL(timeout()), this, SLOT(slotCheckPortableDir()));
         timer->start(1000);
@@ -241,7 +243,6 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
     trayIconInit();
 
 
-
     if ( embedMode )
     {
         miniMode=false;
@@ -270,13 +271,11 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
 
     QDesktopWidget wd;
 
-    //x2goDebug<<"primary screen geometry: "<<wd.screenGeometry(wd.screenNumber(this));
-
     if ( wd.screenGeometry(wd.screenNumber(this)).width() <1024 ||
             wd.screenGeometry(wd.screenNumber(this)).height() <768 )
     {
         miniMode=true;
-        x2goDebug<<"Switching to \"mini\" mode";
+        x2goDebug<<"Switching to \"mini\" mode...";
     }
 
 
@@ -391,7 +390,8 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
     initStatusDlg();
 
 #if defined(CFGPLUGIN) && defined(Q_OS_LINUX)
-    x2goDebug<<"create embedContainer"<<endl;
+
+    x2goDebug<<"Creating embedded container.";
     embedContainer=new QX11EmbedContainer ( fr );
 
 #endif
@@ -457,9 +457,11 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
 
     connect( xineramaTimer, SIGNAL(timeout()), this, SLOT(slotConfigXinerama()));
 
-    x2goDebug<<"ONMainWindows constructor finished, home Directory is:"<<homeDir<<endl;
+    x2goInfof(3)<<tr("Started  x2goclient.");
+    x2goDebug<<"$HOME=" + homeDir.toAscii();
     if (thinMode)
     {
+        x2goDebug<<"ThinMode is active.";
         showMaximized();
         activateWindow();
         raise();
@@ -469,10 +471,10 @@ ONMainWindow::ONMainWindow ( QWidget *parent ) :QMainWindow ( parent )
 
 ONMainWindow::~ONMainWindow()
 {
-    x2goDebug<<"ONMainWindow destructor";
+    x2goDebug<<"Destroying x2goclient...";
     if ( !closeEventSent )
         closeClient();
-    x2goDebug<<"end of ONMainWindow destructor";
+    x2goDebug<<"Destroyed  x2goclient.";
 }
 
 void ONMainWindow::slotShutdownThinClient()
@@ -517,13 +519,12 @@ void ONMainWindow::installTranslator()
     filename=filename.toLower();
     if ( !x2goclientTranslator->load ( filename ) )
     {
-        qDebug ( "Can't load translator (%s) !\n",
-                 filename.toLocal8Bit().data() );
+        x2goWarningf(1)<<tr("Can't load translator: ") + filename.toAscii();
     }
     else
     {
         QCoreApplication::installTranslator ( x2goclientTranslator );
-// 		x2goDebug<<"translator "<<filename<< " installed";
+        x2goInfof(4)<<tr("Translator: ") + filename.toAscii() + tr(" installed.");
     }
 
 
@@ -531,13 +532,12 @@ void ONMainWindow::installTranslator()
     filename=QString ( ":/qt_%1" ).arg ( QLocale::system().name() );
     if ( !qtTranslator->load ( filename ) )
     {
-        x2goDebug<< "Can't load translator "<<
-                 filename.toLocal8Bit().data() ;
+        x2goWarningf(2)<<tr("Can't load translator: ") + filename.toAscii();
     }
     else
     {
         QCoreApplication::installTranslator ( qtTranslator );
-// 		x2goDebug<<"translator "<<filename<< " installed";
+        x2goInfof(5)<<tr("Translator: ") + filename.toAscii() + tr(" installed.");
     }
 }
 
@@ -654,6 +654,7 @@ void ONMainWindow::initWidgetsEmbed()
     if ( config.confFS&& ( !config.useFs ) )
     {
         x2goDebug<<"hide share";
+
         act_shareFolder->setVisible ( false );
     }
 
@@ -915,7 +916,8 @@ void ONMainWindow::slotTestConnection()
 
 void ONMainWindow::slotChangeBrokerPass()
 {
-    x2goDebug<<"change broker pass";
+    x2goDebug<<"Changing broker password.";
+
     BrokerPassDlg passDlg;
     if (passDlg.exec()!=QDialog::Accepted)
         return;
@@ -938,7 +940,7 @@ void ONMainWindow::slotCheckPortableDir()
 {
     if (!QFile::exists(homeDir))
     {
-        x2goDebug<<"portable dir not exists, close";
+        x2goDebug<<"Portable directory does not exists, closing.";
         close();
     }
 }
@@ -1085,8 +1087,12 @@ void ONMainWindow::trayIconInit()
             trayIcon->setIcon(QIcon ( ":icons/128x128/x2go.png") );
             trayIcon->setToolTip(tr("Left mouse button to hide/restore - Right mouse button to display context menu"));
         }
-        trayIcon->show();
-        plugAppsInTray();
+
+        if (!startHidden)
+        {
+            trayIcon->show();
+            plugAppsInTray();
+        }
     }
 #endif
 }
@@ -1101,7 +1107,8 @@ QMenu* ONMainWindow::initTrayAppMenu(QString text, QPixmap icon)
 
 void ONMainWindow::slotAppMenuTriggered(QAction* action)
 {
-    x2goDebug<<"slotAppMenuTriggered :"<<action->data().toString()<<endl;
+    x2goDebug<<"slotAppMenuTriggered: "<<action->data().toString();
+
     if (action->data().toString() != "")
         runApplication(action->data().toString());
 }
@@ -1111,7 +1118,9 @@ void ONMainWindow::plugAppsInTray()
     if (!trayIcon)
         return;
     removeAppsFromTray();
-    x2goDebug<<"plugging apps\n";
+
+    x2goDebug<<"Plugging apps in tray.";
+
     bool empty=true;
     topActions.clear();
     foreach(Application app, applications)
@@ -1141,7 +1150,9 @@ void ONMainWindow::removeAppsFromTray()
 {
     if (!trayIcon)
         return;
-    x2goDebug<<"remove apps\n";
+
+    x2goDebug<<"Removing apps from tray";
+
     for (int i=0; i<=Application::OTHER; ++i)
     {
         appMenu[i]->clear();
@@ -1245,13 +1256,13 @@ void ONMainWindow::slotResize ( const QSize sz )
 
 void ONMainWindow::closeClient()
 {
+    x2goInfof(6)<<tr("Closing x2goclient...");
     if(trayIcon)
         trayIcon->hide();
     closeEventSent=true;
     if ( !startMaximized && !startHidden && !embedMode )
     {
-        x2goDebug<<"saving settings";
-
+        x2goDebug<<"Saving settings...";
         X2goSettings st ( "sizes" );
 
         st.setting()->setValue ( "mainwindow/size",
@@ -1260,7 +1271,7 @@ void ONMainWindow::closeClient()
         st.setting()->setValue ( "mainwindow/maximized",
                                  QVariant ( isMaximized() ) );
         st.setting()->sync();
-        x2goDebug<<"done";
+        x2goDebug<<"Saved  settings.";
 #ifdef Q_OS_LINUX
         if (image)
             XFreePixmap(QX11Info::display(),image);
@@ -1272,20 +1283,19 @@ void ONMainWindow::closeClient()
     {
         if ( nxproxy->state() ==QProcess::Running )
         {
-            x2goDebug<<"terminate proxy";
+            x2goDebug<<"Terminating proxy...";
             nxproxy->terminate();
-            x2goDebug<<"done";
+            x2goDebug<<"Terminated  proxy.";
         }
-        x2goDebug<<"delete proxy process";
+        x2goDebug<<"Deleting proxy...";
         delete nxproxy;
-        x2goDebug<<"done";
-
+        x2goDebug<<"Deleted  proxy.";
     }
     if ( sshConnection && !useLdap)
     {
-        x2goDebug<<"waiting sshConnection to finish\n";
+        x2goDebug<<"Waiting for the SSH connection to finish...";
         delete sshConnection;
-        x2goDebug<<"sshConnection is closed\n";
+        x2goDebug<<"Waited  for the SSH connection to finish.";
         sshConnection=0;
     }
     if (useLdap)
@@ -1294,51 +1304,29 @@ void ONMainWindow::closeClient()
         {
             if (serverSshConnections[i])
             {
-                x2goDebug<<"waiting sshConnection to finish\n";
+                x2goDebug<<"Waiting for the SSH connection to finish...";
                 delete serverSshConnections[i];
-                x2goDebug<<"sshConnection is closed\n";
+                x2goDebug<<"Waited  for the SSH connection to finish.";
             }
         }
     }
 
-    /*	if ( tunnel!=0l )
-    	{
-    		x2goDebug<<"delete tunnel";
-    		delete tunnel;
-    		x2goDebug<<"done";
-    	}
-    	if ( sndTunnel!=0l )
-    	{
-    		x2goDebug<<"delete snd tunnel";
-    		delete sndTunnel;
-    		x2goDebug<<"done";
-    	}
-    	if ( fsTunnel!=0l )
-    	{
-    		x2goDebug<<"delete fs tunnel";
-    		delete fsTunnel;
-    		x2goDebug<<"done";
-    	}
-    	*/
     if ( soundServer )
     {
-        x2goDebug<<"delete snd server";
+        x2goDebug<<"Deleting the sound server...";
         delete soundServer;
-        x2goDebug<<"done";
+        x2goDebug<<"Deleted  the sound server.";
     }
     if ( gpgAgent!=0l )
     {
-        x2goDebug<<"terminate gpg-agent";
         if ( gpgAgent->state() ==QProcess::Running )
+        {
+            x2goDebug<<"Terminating gpg-agent...";
             gpgAgent->terminate();
-        x2goDebug<<"done";
-    }
-    /*	if ( useSshAgent )
-    	{
-    		x2goDebug<<"terminate ssh-agent";
-    		finishSshAgent();
-    		x2goDebug<<"done";
-    	}*/
+            x2goDebug<<"Terminated  gpg-agent.";
+        }
+    }
+
 #ifndef Q_OS_WIN
     if ( agentPid.length() >0 )
     {
@@ -1353,13 +1341,15 @@ void ONMainWindow::closeClient()
 #ifdef Q_OS_WIN
     if ( pulseServer )
     {
+        x2goDebug<<"Deleting the pulse timer...";
         delete pulseTimer;
-
-        x2goDebug<<"terminate pulse";
+        x2goDebug<<"Deleted  the pulse timer.";
+        x2goDebug<<"Killing the pulse sound server...";
         pulseServer->kill();
-        x2goDebug<<"done\ndelete pulse process";
+        x2goDebug<<"Killed  the pulse sound server.";
+        x2goDebug<<"Deleting the pulse process...";
         delete pulseServer;
-        x2goDebug<<"done";
+        x2goDebug<<"Deleted  the pulse process.";
 
         QDir dr ( homeDir );
         dr.remove ( pulseDir+"/config.pa" );
@@ -1369,11 +1359,12 @@ void ONMainWindow::closeClient()
     }
     if ( xorg )
     {
-        x2goDebug<<"terminate xorg";
+        x2goDebug<<"Terminating xorg...";
         xorg->terminate();
-        x2goDebug<<"done\ndelete xorg process";
+        x2goDebug<<"Terminated  xorg.";
+        x2goDebug<<"Deleting xorg...";
         delete xorg;
-        x2goDebug<<"done";
+        x2goDebug<<"Deleted xorg.";
     }
 
     if ( winSshdStarted )
@@ -1385,8 +1376,9 @@ void ONMainWindow::closeClient()
 #else
     if ( userSshd && sshd )
     {
+        x2goDebug<<"Terminating sshd...";
         sshd->terminate();
-        x2goDebug<<"terminating userspace sshd";
+        x2goDebug<<"Terminated  sshd.";
         delete sshd;
     }
 
@@ -1411,11 +1403,14 @@ void ONMainWindow::closeClient()
         cleanPortable();
     }
     SshMasterConnection::finalizeLibSsh();
+
+    x2goInfof(7)<<tr("Closed  x2goclient.");
 }
 
 void ONMainWindow::closeEvent ( QCloseEvent* event )
 {
-    x2goDebug<<"close event";
+    x2goDebug<<"Close event received.";
+
     if (trayNoclose && !brokerMode)
     {
         hide();
@@ -1578,7 +1573,9 @@ void ONMainWindow::displayUsers()
     if ( usePGPCard  && !PGPInited)
     {
         PGPInited=true;
-        x2goDebug<<"Users loaded, starting smart card daemon\n";
+
+        x2goDebug<<"Users loaded, starting smart card daemon.";
+
         QTimer::singleShot ( 10, this, SLOT ( slotStartPGPAuth() ) );
     }
 }
@@ -1738,8 +1735,8 @@ void ONMainWindow::slotPassEnter()
         {
             sPort=sL.front().c_str();
         }
-        x2goDebug<<server.name<<": ssh port is "<<sPort;
 
+        x2goDebug<<"SSH-Server("<<server.name<<") port: "<<sPort;
 
         QString sFactor="1";
         list<string> serialNumber=LDAPSession::getStringAttrValues (
@@ -1748,7 +1745,9 @@ void ONMainWindow::slotPassEnter()
         {
             sFactor=serialNumber.front().c_str();
         }
-        x2goDebug<<server.name<<": factor is "<<sFactor;
+
+        x2goDebug<<"SSH-Server("<<server.name<<") factor: "<<sFactor;
+
         server.factor=sFactor.toFloat();
         server.sess=0;
         server.sshPort=sPort;
@@ -2144,10 +2143,16 @@ void ONMainWindow::slotReadSessions()
         st= new X2goSettings( "sessions" );
 
     QStringList slst=st->setting()->childGroups();
-    x2goDebug<<"read "<<slst.size()<<" sessions from config file";
+
+    x2goDebug<<"Reading "<<slst.size()<<" sessions from config file.";
+
     if (brokerMode && (slst.size()==0))
     {
-        QMessageBox::critical(this,tr("Error"),tr("X2Go sessions not found"));
+        QString error = tr("No X2Go sessions found, closing.");
+        if(!startHidden)
+            QMessageBox::critical(this,tr("Error"),error);
+        else
+            x2goErrorf(1)<<error; // tr("No X2Go sessions not found, closing.");
         close();
         return;
     }
@@ -2333,7 +2338,9 @@ void ONMainWindow::displayToolBar ( bool show )
 bool ONMainWindow::initLdapSession ( bool showError )
 {
 #ifdef USELDAP
-    x2goDebug<<"initing LDAP Session"<<endl;
+
+    x2goDebug<<"Initializing LDAP sessions...";
+
     try
     {
         ld=new LDAPSession ( ldapServer.toStdString(),
@@ -2344,7 +2351,9 @@ bool ONMainWindow::initLdapSession ( bool showError )
         QString message="Exeption0 in: ";
         message=message+e.err_type.c_str();
         message=message+" : "+e.err_str.c_str();
-        x2goDebug <<message<<endl;
+
+        x2goDebug<<message;
+
         if ( ldapServer1.length() )
         {
             try
@@ -2358,7 +2367,9 @@ bool ONMainWindow::initLdapSession ( bool showError )
                 QString message="Exeption1 in: ";
                 message=message+e.err_type.c_str();
                 message=message+" : "+e.err_str.c_str();
-                x2goDebug <<message<<endl;
+
+                x2goDebug<<message;
+
                 if ( ldapServer2.length() )
                 {
                     try
@@ -2376,8 +2387,8 @@ bool ONMainWindow::initLdapSession ( bool showError )
                                 e.err_type.c_str();
                         message=message+" : "+
                                 e.err_str.c_str();
-                        x2goDebug <<message<<endl;
-                        x2goDebug<<"return false"<<endl;
+
+                        x2goDebug<<message;
                         if ( showError )
                             QMessageBox::critical (
                                 0l,tr ( "Error" ),
@@ -2386,12 +2397,14 @@ bool ONMainWindow::initLdapSession ( bool showError )
                                 QMessageBox::
                                 NoButton );
 
+                        x2goDebug<<"Returning false, 3rd try failed.";
                         return false;
                     }
                 }
                 else
                 {
-                    x2goDebug<<"return false"<<endl;
+                    x2goDebug<<"Returning false.";
+
                     if ( showError )
                         QMessageBox::critical (
                             0l,tr ( "Error" ),
@@ -2405,7 +2418,8 @@ bool ONMainWindow::initLdapSession ( bool showError )
         }
         else
         {
-            x2goDebug<<"return false"<<endl;
+            x2goDebug<<"Returning false.";
+
             if ( showError )
                 QMessageBox::critical ( 0l,tr ( "Error" ),
                                         message,QMessageBox::Ok,
@@ -2535,6 +2549,7 @@ bool ONMainWindow::initLdapSession ( bool showError )
         }
     }
 #endif
+    x2goDebug<<"Initialized  LDAP sessions.";
     return true;
 
 }
@@ -2727,7 +2742,7 @@ void ONMainWindow::slotSelectedFromList ( SessionButton* session )
     }
     if ( currentKey != QString::null && currentKey != "" && nopass )
     {
-        x2goDebug<<"Have key, starting session"<<endl;
+        x2goDebug<<"Starting session with key.";
         slotSessEnter();
     }
     if ( cardReady || autologin || krblogin  )
@@ -2762,17 +2777,20 @@ SshMasterConnection* ONMainWindow::startSshConnection ( QString host, QString po
         QString proxylogin, QString proxypassword, QString proxyKey,
         bool proxyAutologin)
 {
-
+    x2goInfof(8)<<tr("Starting connection to server: ") + host + ":" + port;
     SshMasterConnection* con;
-    x2goDebug<<"start new ssh connection to server:"<<host<<":"<<port<<"krb: "<<krbLogin<<endl;
+
+    x2goDebug<<"Start new ssh connection to server:"<<host<<":"<<port<<" krbLogin: "<<krbLogin;
+
     for ( int i=0; i<sshEnv.size(); ++i )
     {
 #ifndef Q_OS_WIN
         QStringList args=sshEnv[i].split ( "=" );
-        x2goDebug<<"set Env "<<args[0]<<" to "<<args[1]<<endl;
+        x2goDebug<<"Setting ENV " + args[0] + tr(" to ") + args[1];
         setenv ( args[0].toAscii(),args[1].toAscii(),1 );
 #else
-        x2goDebug<<"set Env "<<sshEnv[i]<<endl;
+        x2goDebug<<"Set ENV: "<<sshEnv[i];
+
         _putenv ( sshEnv[i].toAscii() );
 #endif
     }
@@ -2813,6 +2831,7 @@ SshMasterConnection* ONMainWindow::startSshConnection ( QString host, QString po
 
 void ONMainWindow::slotSshConnectionError ( QString message, QString lastSessionError )
 {
+    x2goErrorf(2)<< tr("Connection Error(") + message + "): " + lastSessionError;
     if ( sshConnection )
     {
         sshConnection->wait();
@@ -2820,26 +2839,35 @@ void ONMainWindow::slotSshConnectionError ( QString message, QString lastSession
         sshConnection=0l;
     }
 
-    QMessageBox::critical ( 0l,message,lastSessionError,
-                            QMessageBox::Ok,
-                            QMessageBox::NoButton );
-    setEnabled ( true );
-    passForm->setEnabled ( true );
-    slotShowPassForm();
-    pass->setFocus();
-    pass->selectAll();
+    if (!startHidden)
+    {
+        QMessageBox::critical ( 0l,message,lastSessionError,
+                                QMessageBox::Ok,
+                                QMessageBox::NoButton );
+        setEnabled ( true );
+        passForm->setEnabled ( true );
+        slotShowPassForm();
+        pass->setFocus();
+        pass->selectAll();
 
 
-    passForm->setEnabled ( true );
-    if ( startHidden )
+        passForm->setEnabled ( true );
+    }
+    else
     {
-        startHidden=false;
-        slotResize();
-        show();
-        activateWindow();
-        raise();
+        // In order to get this interaction free, we need to free this from windows and stuff
+        //    if ( startHidden )
+        //    {
+        //        startHidden=false;
+        //        slotResize();
+        //        show();
+        //        activateWindow();
+        //        raise();
+        //    }
+
+        // completely quit the application
+        trayQuit();
     }
-
 }
 
 
@@ -2847,7 +2875,7 @@ void ONMainWindow::slotSshConnectionError ( QString message, QString lastSession
 
 void ONMainWindow::slotSshConnectionOk()
 {
-    x2goDebug<<"ssh connection ok"<<endl;
+    x2goDebug<<"SSH connection established.";
     passForm->setEnabled ( true );
     if ( useLdap )
     {
@@ -2860,14 +2888,19 @@ void ONMainWindow::slotSshConnectionOk()
 
 SshMasterConnection*  ONMainWindow::findServerSshConnection(QString host)
 {
+    x2goDebug<<"Searching for SSH connections...";
     for (int i=0; i<serverSshConnections.count(); ++i)
     {
         if (serverSshConnections[i])
         {
             if (serverSshConnections[i]->getHost()==host)
+            {
+                x2goDebug<<"Found SSH connection.";
                 return serverSshConnections[i];
+            }
         }
     }
+    x2goWarningf(3)<< tr("Couldn't find a SSH connection.");
     return 0l;
 }
 
@@ -2876,7 +2909,7 @@ void ONMainWindow::slotServSshConnectionOk(QString server)
     SshMasterConnection* con=findServerSshConnection(server);
     if (!con)
         return;
-    x2goDebug<<"getting sessions on "<<server<<endl;
+    x2goDebug<<"Getting sessions on Host: " + server;
     con->executeCommand( "export HOSTNAME && x2golistsessions", this, SLOT (slotListAllSessions ( bool,QString,int ) ));
 }
 
@@ -2993,6 +3026,21 @@ void ONMainWindow::slotSshUserAuthError ( QString error )
         sshConnection=0l;
     }
 
+    //    if ( startHidden )
+    //    {
+    //        startHidden=false;
+    //        slotResize();
+    //        show();
+    //        activateWindow();
+    //        raise();
+    //    }
+    // hidden means hidden, we'll close the client afterwards.
+    if ( startHidden )
+    {
+        x2goErrorf(3)<< tr("Authentication failed: ") + error;
+        trayQuit();
+    }
+
     QMessageBox::critical ( 0l,tr ( "Authentication failed" ),error,
                             QMessageBox::Ok,
                             QMessageBox::NoButton );
@@ -3005,14 +3053,6 @@ void ONMainWindow::slotSshUserAuthError ( QString error )
 
 
     passForm->setEnabled ( true );
-    if ( startHidden )
-    {
-        startHidden=false;
-        slotResize();
-        show();
-        activateWindow();
-        raise();
-    }
 }
 
 void ONMainWindow::slotSessEnter()
@@ -3027,7 +3067,8 @@ void ONMainWindow::slotSessEnter()
     {
         if (!config.brokerAuthenticated)
         {
-            x2goDebug<<"starting broker request";
+
+            x2goDebug<<"Starting broker request.";
             slotStartBroker();
             return;
         }
@@ -3060,7 +3101,7 @@ void ONMainWindow::slotSessEnter()
 
 void ONMainWindow::continueNormalSession()
 {
-    x2goDebug<<"continue normal x2go session"<<endl;
+    x2goDebug<<"Continue normal x2go session";
     if (brokerMode)
     {
         slotListSessions(true,QString::null,0);
@@ -3252,7 +3293,8 @@ bool ONMainWindow::startSession ( const QString& sid )
     if(brokerMode)
     {
         sshPort=config.sshport;
-        x2goDebug<<"server: "<<host;
+
+        x2goDebug<<"Server: "<<host;
     }
 
     QString cmd=st->setting()->value ( sid+"/command",
@@ -3403,9 +3445,24 @@ void ONMainWindow::slotListSessions ( bool result,QString output,
                     message;
         }
 
-        QMessageBox::critical ( 0l,tr ( "Error" ),message,
-                                QMessageBox::Ok,
-                                QMessageBox::NoButton );
+        if ( !startHidden )
+        {
+            QMessageBox::critical ( 0l,tr ( "Error" ),message,
+                                    QMessageBox::Ok,
+                                    QMessageBox::NoButton );
+        }
+        else
+        {
+            QString printout = tr( "Connection failed: ")  + output.toAscii();
+
+            if ( output.indexOf ( "publickey,password" ) !=-1 )
+                x2goErrorf(4)<< tr( "Connection failed: ")  + output + tr(" - Wrong password.");
+            else
+                x2goErrorf(5)<< tr( "Connection failed: ")  + output;
+            trayQuit();
+        }
+
+
 // 		currentKey=QString::null;
         setEnabled ( true );
         passForm->setEnabled ( true );
@@ -3424,17 +3481,16 @@ void ONMainWindow::slotListSessions ( bool result,QString output,
     }
     if ( managedMode || brokerMode )
     {
-        x2goDebug<<"sess data:"<<config.sessiondata;
+        x2goDebug<<"Session data: " + config.sessiondata;
         if ( config.sessiondata.indexOf ( "|S|" ) ==-1 )
         {
-            x2goDebug<<"start new managed session";
+            x2goDebug<<"Starting new managed session.";
             startNewSession();
         }
         else
         {
-            x2goSession s=getSessionFromString (
-                              config.sessiondata );
-            x2goDebug<<"resuming managed session:"<<s.sessionId;
+            x2goSession s=getSessionFromString (config.sessiondata);
+            x2goDebug<<"Resuming managed session with Id: " + s.sessionId;
             resumeSession ( s );
         }
         return;
@@ -3722,7 +3778,9 @@ void ONMainWindow::startNewSession()
 
     QString geometry;
 #ifdef Q_OS_WIN
-    x2goDebug<<"fullscreen: "<<fullscreen;
+
+    x2goDebug<<"Fullscreen: "<<fullscreen;
+
     maximizeProxyWin=false;
     proxyWinWidth=width;
     proxyWinHeight=height;
@@ -3744,7 +3802,9 @@ void ONMainWindow::startNewSession()
 #ifdef Q_OS_WIN
 //        fullscreen=false;
         maximizeProxyWin=true;
-        x2goDebug<<"maximizeProxyWin: "<<maximizeProxyWin;
+
+        x2goDebug<<"Maximize proxy win: "<<maximizeProxyWin;
+
 #endif
     }
     if ( ! fullscreen )
@@ -3847,7 +3907,9 @@ void ONMainWindow::startNewSession()
              shadowUser+"XSHAD"+shadowDisplay;
     }
     resumingSession.fullscreen=fullscreen;
-    x2goDebug<<cmd<<endl;
+
+    x2goDebug<<"Executing remote command: "<<cmd;
+
     if ( managedMode )
     {
         slotRetResumeSess ( true,config.sessiondata,0 );
@@ -4011,7 +4073,8 @@ void ONMainWindow::resumeSession ( const x2goSession& s )
 #ifdef Q_OS_WIN
 //        fullscreen=false;
         maximizeProxyWin=true;
-        x2goDebug<<"maximizeProxyWin: "<<maximizeProxyWin;
+
+        x2goDebug<<"Maximize proxy win: "<<maximizeProxyWin;
 
 #endif
     }
@@ -4102,10 +4165,10 @@ void ONMainWindow::selectSession ( QStringList& sessions )
     setEnabled ( true );
     sessionStatusDlg->hide();
     passForm->hide();
-// 	x2goDebug<<"check type";
+
     if ( !shadowSession )
     {
-// 		x2goDebug<<"! shadow";
+        x2goDebug<<"No shadow session.";
         if ( !miniMode )
             selectSesDlgLayout->setContentsMargins ( 25,25,10,10 );
 
@@ -4114,13 +4177,13 @@ void ONMainWindow::selectSession ( QStringList& sessions )
         bTerm->show();
         sOk->show();
         sCancel->show();
-// 		x2goDebug<<"standart buttons ok";
+
         desktopFilter->hide();
         desktopFilterCb->hide();
         bShadow->hide();
         bShadowView->hide();
         bCancel->hide();
-// 		x2goDebug<<"shadow buttons ok";
+
 // 		model->clear();
         model->removeRows ( 0,model->rowCount() );
         selectSessionLabel->setText ( tr ( "Select session:" ) );
@@ -4128,10 +4191,9 @@ void ONMainWindow::selectSession ( QStringList& sessions )
         QFontMetrics fm ( sessTv->font() );
         for ( int row = 0; row < sessions.size(); ++row )
         {
-
-// 			x2goDebug<<"decoding sessionstr:"<<sessions[row];
+            x2goDebug<<"Decoding Sessionstring:" + sessions[row];
             x2goSession s=getSessionFromString ( sessions[row] );
-// 			x2goDebug<<"listing id:"<<s.sessionId;
+
             selectedSessions.append ( s );
             QStandardItem *item;
 
@@ -4416,13 +4478,18 @@ void ONMainWindow::slotTermSessFromSt()
 #ifdef Q_OS_LINUX
     if (directRDP)
     {
-        x2goDebug<<"terminating direct RDP session";
+
+        x2goDebug<<"Terminating direct RDP session.";
+
         nxproxy->terminate();
         proxyRunning=false;
         return;
     }
 #endif
-    /*	x2goDebug <<"disconnect export"<<endl;
+
+    x2goDebug<<"Disconnect export.";
+
+    /*
     	disconnect ( sbExp,SIGNAL ( clicked() ),this,
     	             SLOT ( slot_exportDirectory() ) );*/
     sbExp->setEnabled ( false );
@@ -4564,7 +4631,9 @@ void ONMainWindow::slotRetResumeSess ( bool result,
                                        QString output,
                                        int )
 {
-    x2goDebug<<"Agent output:"<<output;
+
+    x2goDebug<<"Agent output: "<<output;
+
     if ( result==false )
     {
         QString message=tr ( "<b>Connection failed</b>\n" ) +output;
@@ -4720,17 +4789,23 @@ void ONMainWindow::slotRetResumeSess ( bool result,
             if (line.indexOf("gr_port=")!=-1)
             {
                 resumingSession.grPort=line.replace("gr_port=","");
-                x2goDebug<<"new gr_port: "<<resumingSession.grPort<<endl;
+
+                x2goDebug<<"New gr_port: "<<resumingSession.grPort;
+
             }
             if (line.indexOf("sound_port=")!=-1)
             {
                 resumingSession.sndPort=line.replace("sound_port=","");
-                x2goDebug<<"new sound_port: "<<resumingSession.sndPort<<endl;
+
+                x2goDebug<<"New sound_port: "<<resumingSession.sndPort;
+
             }
             if (line.indexOf("fs_port=")!=-1)
             {
                 resumingSession.fsPort=line.replace("fs_port=","");
-                x2goDebug<<"new fs_port: "<<resumingSession.fsPort<<endl;
+
+                x2goDebug<<"New fs_port: "<<resumingSession.fsPort;
+
             }
         }
         if (resumingSession.published)
@@ -4831,13 +4906,13 @@ void ONMainWindow::slotRetResumeSess ( bool result,
             }
 #endif
             if ( sysPulse )
-
+            {
                 sshConnection->copyFile(
                     "/var/run/pulse/.pulse-cookie",
                     "~/.x2go/C-"+
                     resumingSession.sessionId+
                     "/.pulse-cookie", this, SLOT ( slotPCookieReady ( bool, QString,int )));
-
+            }
             else
             {
 #ifndef Q_OS_WIN
@@ -4942,7 +5017,9 @@ void ONMainWindow::slotTunnelOk(int)
     //waiting for X
     if ( !winServersReady )
     {
-        x2goDebug<<"waiting for win-servers";
+
+        x2goDebug<<"Waiting for win-servers.";
+
         QTimer::singleShot ( 100, this, SLOT ( slotTunnelOk() ) );
         return;
     }
@@ -4955,9 +5032,13 @@ void ONMainWindow::slotTunnelOk(int)
     if ( !d.exists() )
         if ( !d.mkpath ( dirpath ) )
         {
-            QString message=tr ( "Unable to create folder:" ) +
-                            dirpath;
-            QMessageBox::critical ( 0l,tr ( "Error" ),message,
+            if (startHidden)
+            {
+                x2goErrorf(6)<< tr( "Unable to create folder: ")  + dirpath;
+                trayQuit();
+            }
+
+            QMessageBox::critical ( 0l,tr ( "Error" ), tr ( "Unable to create folder: " ) + dirpath,
                                     QMessageBox::Ok,
                                     QMessageBox::NoButton );
             slotShowPassForm();
@@ -4981,9 +5062,13 @@ void ONMainWindow::slotTunnelOk(int)
     QFile file ( dirpath+"/options" );
     if ( !file.open ( QIODevice::WriteOnly | QIODevice::Text ) )
     {
-        QString message=tr ( "Unable to write file:" ) +
-                        dirpath+"/options";
-        QMessageBox::critical ( 0l,tr ( "Error" ),message,
+        if (startHidden)
+        {
+            x2goErrorf(7)<< tr( "Unable to write file: " ) + dirpath + "/options";
+            trayQuit();
+        }
+
+        QMessageBox::critical ( 0l,tr ( "Error" ), tr( "Unable to write file: " ) + dirpath + "/options",
                                 QMessageBox::Ok,
                                 QMessageBox::NoButton );
         slotShowPassForm();
@@ -5014,6 +5099,7 @@ void ONMainWindow::slotTunnelOk(int)
     for ( int l=0; l<env.size(); ++l )
     {
 // 		x2goDebug<<env[l]<<endl;
+
         if ( env[l].indexOf ( "X2GO_LIB" ) ==0 )
         {
             x2golibpath=env[l].split ( "=" ) [1];
@@ -5043,13 +5129,17 @@ void ONMainWindow::slotTunnelOk(int)
     if ( dispInd==-1 )
     {
         env <<"DISPLAY=localhost:"+disp;
+
         /*		x2goDebug<<"new env DISPLAY"<<"DISPLAY=localhost:"+disp<<endl;*/
+
     }
     else
     {
         env[dispInd]="DISPLAY=localhost:"+disp;
+
         /*		x2goDebug<<"existing env DISPLAY("<<dispInd<<
         		") DISPLAY=localhost:"+disp<<endl;*/
+
     }
 #endif // Q_OS_WIN
 #if defined ( Q_OS_DARWIN )
@@ -5066,17 +5156,14 @@ void ONMainWindow::slotTunnelOk(int)
     }
     if (dispInd == -1)
     {
-        x2goDebug << "No DISPLAY variable found in global environment, using autodetected setting.";
+
+        x2goDebug<< "No DISPLAY variable found in global environment, using autodetected setting.";
+
         env.append ("DISPLAY=" + disp);
     }
 #endif
     nxproxy->setEnvironment ( env );
-    /*	x2goDebug<<"new env:"<<endl;
-    	for ( int l=0;l<env.size();++l )
-    	{
-    		x2goDebug<<env[l]<<endl;
-    	}
-    	x2goDebug<<"##########################"<<endl;*/
+
     connect ( nxproxy,SIGNAL ( error ( QProcess::ProcessError ) ),this,
               SLOT ( slotProxyError ( QProcess::ProcessError ) ) );
     connect ( nxproxy,SIGNAL ( finished ( int,QProcess::ExitStatus ) ),this,
@@ -5095,7 +5182,9 @@ void ONMainWindow::slotTunnelOk(int)
     dir.cd ( "exe" );
     proxyCmd="\""+dir.absolutePath() +"/\""+proxyCmd;
 #endif //Q_OS_DARWIN
-    x2goDebug<<"starting nxproxy with: "<<proxyCmd<<endl;
+
+    x2goDebug<<"Starting NX proxy, command: " + proxyCmd;
+
     nxproxy->start ( proxyCmd );
     proxyRunning=true;
 //always search for proxyWin
@@ -5216,7 +5305,8 @@ void ONMainWindow::slotProxyFinished ( int,QProcess::ExitStatus )
     if ( spoolTimer )
         delete spoolTimer;
 
-    x2goDebug<<"deleting proxy"<<endl;
+    x2goDebug<<"Deleting Proxy." ;
+
     disconnect ( nxproxy,SIGNAL ( error ( QProcess::ProcessError ) ),this,
                  SLOT ( slotProxyError ( QProcess::ProcessError ) ) );
     disconnect ( nxproxy,SIGNAL ( finished ( int,QProcess::ExitStatus ) ),this,
@@ -5241,7 +5331,7 @@ void ONMainWindow::slotProxyFinished ( int,QProcess::ExitStatus )
     if(proxyErrString.indexOf("No data received from remote proxy")!=-1)
     {
         emergencyExit=true;
-        x2goDebug<<"Emergency exit"<<endl;
+        x2goWarningf(4)<< tr( "Emergency exit." );
     }
 
 #if ! (defined (CFGPLUGIN))
@@ -5250,21 +5340,22 @@ void ONMainWindow::slotProxyFinished ( int,QProcess::ExitStatus )
         if ( nxproxy->state() ==QProcess::Running )
         {
             emergencyExit=true;
-            x2goDebug<<"waiting for proxy to exit"<<endl;
+            x2goWarningf(5)<< tr( "Waiting for proxy to exit." );
             if ( !nxproxy->waitForFinished ( 3000 ) )
             {
-                x2goDebug<<"Failed, try to kill"<<endl;
+                x2goWarningf(6)<< tr( "Failed, killing the proxy." );
                 nxproxy->kill();
             }
         }
-        x2goDebug<<"nxproxy not running"<<endl;
+
 #ifdef Q_OS_LINUX
         if (directRDP)
             nxproxy=0;
 #endif
     }
 #endif
-    x2goDebug<<"proxy deleted"<<endl;
+    x2goDebug<<"Waiting for proxy to exit.";
+
     spoolTimer=0l;
     tunnel=sndTunnel=fsTunnel=0l;
     soundServer=0l;
@@ -5283,14 +5374,14 @@ void ONMainWindow::slotProxyFinished ( int,QProcess::ExitStatus )
     if ( !emergencyExit && !shadowSession && !usePGPCard && ! ( embedMode &&
             ( config.checkexitstatus==false ) ) )
     {
-        x2goDebug<<"checking exit status";
+        x2goDebug<<"Checking exit status.";
         check_cmd_status();
     }
     else
     {
-        x2goDebug<<"deleting sshConnection instance: "<<endl;
+        x2goDebug<<"Deleting SSH connection instance.";
         delete sshConnection;
-        x2goDebug<<"done"<<endl;
+        x2goDebug<<"Deleted  SSH connection instance." ;
         sshConnection=0;
         if ( startHidden )
         {
@@ -5330,6 +5421,7 @@ void ONMainWindow::slotProxyFinished ( int,QProcess::ExitStatus )
         sessionStatusDlg->hide();
         resumeSession ( resumingSession );
     }
+    x2goDebug<<"Finished Proxy.";
     setStatStatus ( tr ( "Finished" ) );
 }
 
@@ -5340,7 +5432,9 @@ void ONMainWindow::slotProxyStderr()
     if ( nxproxy )
         reserr= nxproxy->readAllStandardError();
     proxyErrString+=reserr;
-    x2goDebug<<reserr<<endl;
+
+    x2goDebug<<"Proxy wrote on stderr: "<<reserr;
+
     stInfo->insertPlainText ( reserr );
     stInfo->ensureCursorVisible();
     if ( stInfo->toPlainText().indexOf (
@@ -5427,7 +5521,9 @@ void ONMainWindow::slotProxyStderr()
 #if defined( Q_OS_WIN ) && defined (CFGPLUGIN)
     if ( reserr.indexOf ( "Session terminated at" ) !=-1 )
     {
-        x2goDebug<<"proxy finished"<<endl;
+
+        x2goDebug<<"Proxy finished.";
+
         slotProxyFinished ( 0, QProcess::NormalExit );
     }
 #endif
@@ -5439,8 +5535,8 @@ void ONMainWindow::slotProxyStderr()
 void ONMainWindow::slotProxyStdout()
 {
     QString resout ( nxproxy->readAllStandardOutput() );
-    x2goDebug<<resout<<endl;
 
+    x2goDebug<<"Proxy wrote on stdout: "<<resout;
 }
 
 
@@ -5594,7 +5690,7 @@ bool ONMainWindow::termSession ( QString sessId, bool warn )
         nxproxy->terminate();
         return true;
     }
-
+    x2goDebug<<"Terminating session.";
     sshConnection->executeCommand ( "x2goterminate-session "+sessId, this, SLOT ( slotRetTermSess ( bool,
                                     QString,int) )  );
     proxyRunning=false;
@@ -5976,13 +6072,15 @@ void ONMainWindow::slotReadApplications(bool result, QString output,
             if (line.indexOf("Name["+localshort+"]=")!=-1  || line.indexOf("Name["+locallong+"]=")!=-1)
             {
                 app.name=QString::fromUtf8(line.split("=")[1].toAscii());
-//                 x2goDebug<<"local name: "<<app.name<<endl;
+
+                //                 x2goDebug<<"local name: "<<app.name<<endl;
+
                 localname=true;
             }
             if (line.indexOf("Comment["+localshort+"]=")!=-1 || line.indexOf("Comment["+locallong+"]=")!=-1)
             {
                 app.comment=QString::fromUtf8(line.split("=")[1].toAscii());
-//                 x2goDebug<<"local comment: "<<app.comment<<endl;
+                //                 x2goDebug<<"local comment: "<<app.comment<<endl;
                 localcomment=true;
             }
             if (line.indexOf("Name=")!=-1 && !localname)
@@ -5990,12 +6088,12 @@ void ONMainWindow::slotReadApplications(bool result, QString output,
                 app.name=line.split("=")[1];
                 if (app.name==autostartApp)
                     startAppFound=true;
-//                 x2goDebug<<"name: "<<app.name<<endl;
+                //                 x2goDebug<<"name: "<<app.name<<endl;
             }
             if (line.indexOf("Comment=")!=-1 && !localcomment)
             {
                 app.comment=line.split("=")[1];
-//                 x2goDebug<<"comment: "<<app.comment<<endl;
+                //                 x2goDebug<<"comment: "<<app.comment<<endl;
             }
             if (line.indexOf("Exec=")!=-1)
             {
@@ -6006,7 +6104,7 @@ void ONMainWindow::slotReadApplications(bool result, QString output,
                 app.exec.replace("%u","",Qt::CaseInsensitive);
                 if (app.exec==autostartApp)
                     startAppFound=true;
-//                 x2goDebug<<"exec: "<<app.exec<<endl;
+                //                 x2goDebug<<"exec: "<<app.exec<<endl;
             }
             if (line.indexOf("Categories=")!=-1)
             {
@@ -6073,10 +6171,13 @@ void ONMainWindow::slotReadApplications(bool result, QString output,
     plugAppsInTray();
     if (runStartApp && autostartApp.length()>1)
     {
-        if (!startAppFound)
-            x2goDebug<<"Autostart application "<<autostartApp<< " not found in Desktop files"<<endl;
+        if (!startAppFound) {
+            x2goDebug<<"Autostart application "<<autostartApp<< " not found in Desktop files.";
+        }
         else
+        {
             runApplication(autostartApp);
+        }
     }
 }
 
@@ -6095,6 +6196,12 @@ bool ONMainWindow::parseParameter ( QString param )
         return false;
     }
 
+    if (param == "--debug")
+    {
+        ONMainWindow::debugging = true;
+        return true;
+    }
+
     if ( param == "--portable" )
     {
         ONMainWindow::portable=true;
@@ -6409,10 +6516,11 @@ bool ONMainWindow::parseParameter ( QString param )
         if (find!=-1 && lind !=-1)
         {
             QString label=value.mid(find+1,lind-find-1);
-            x2goDebug<< "searching for drive with label: "<<label;
+            x2goDebug<<"Searching for drive with label: "<<label;
+
             QString drive=wapiGetDriveByLabel(label);
             value.replace("("+label+")",drive);
-            x2goDebug<<"new path: "<<value;
+            x2goDebug<<"New path: "<<value;
         }
 #endif
         if (! dr.exists(value))
@@ -6629,11 +6737,15 @@ bool ONMainWindow::packParameter ( QString val )
 
 void ONMainWindow::printError ( QString param )
 {
-    qCritical ( "%s", ( tr ( "wrong parameter: " ) +param ).
-                toLocal8Bit().data() );
-#ifdef Q_OS_WIN
-    x2goDebug<<tr ( "wrong parameter: " ) +param <<endl;
-#endif
+    if( !startHidden )
+    {
+        qCritical ( "%s", ( tr ( "Wrong parameter: " ) +param ).
+                    toLocal8Bit().data() );
+    }
+    else
+    {
+        x2goErrorf(8)<<tr("Wrong parameter: ")<<param;
+    }
 }
 
 void ONMainWindow::showHelp()
@@ -6643,6 +6755,7 @@ void ONMainWindow::showHelp()
         "Options:\n"
         "--help\t\t\t\t show this message\n"
         "--help-pack\t\t\t show available pack methods\n"
+        "--debug\t\t\t\t enables extensive output for console output.\n"
         "--no-menu\t\t\t hide menu bar\n"
         "--no-session-edit\t\t not allow user to edit preconfigured\n"
         "\t\t\t\t sessions\n"
@@ -6667,7 +6780,7 @@ void ONMainWindow::showHelp()
         "--command=<cmd>\t\t\t Set default command, default value 'KDE'\n"
         "--session=<session>\t\t Start session 'session'\n"
         "--user=<username>\t\t select user 'username'\n"
-        "--geomerty=<W>x<H>|fullscreen\t set default geometry, default "
+        "--geometry=<W>x<H>|fullscreen\t set default geometry, default "
         "value '800x600'\n"
         "--dpi=<dpi>\t\t\t set dpi of x2goagent to dpi, default set to same as local display\n"
         "--link=<modem|isdn|adsl|wan|lan> set default link type, "
@@ -6683,7 +6796,10 @@ void ONMainWindow::showHelp()
         "applications\" mode\n"
         "--session-conf=<file>\t\t path to alternative session config\n";
     qCritical ( "%s",helpMsg.toLocal8Bit().data() );
-    QMessageBox::information ( this,tr ( "Options" ),helpMsg );
+    if (!startHidden)
+    {
+        QMessageBox::information ( this,tr ( "Options" ),helpMsg );
+    }
 }
 
 void ONMainWindow::showHelpPack()
@@ -6755,10 +6871,12 @@ void ONMainWindow::slotGetServers ( bool result, QString output,
                     x2goServers[j].sess=
                         lst[1].toInt() *
                         x2goServers[j].factor;
+
                     x2goDebug<<x2goServers[j].name<<
                              ": sessions "<<
                              lst[1].toInt() <<
                              ", multiplied "<<x2goServers[j].sess;
+
                     break;
                 }
         }
@@ -6832,22 +6950,26 @@ void ONMainWindow::slotListAllSessions ( bool result,QString output,
                 ( listedSessions.size() ==1 &&
                   listedSessions[0].length() <5 ) )
         {
-// 	x2goDebug<<"start New Session";
+            x2goDebug<<"Start new session.";
             startNewSession();
         }
         else if ( listedSessions.size() ==1 )
         {
-// 	x2goDebug<<"have one session";
+            x2goDebug<<"Already having a session.";
             x2goSession s=getSessionFromString (
                               listedSessions[0] );
-// 		x2goDebug<<"will procceed one session";
+
+            x2goDebug<<"Will procceed with session.";
+
             QDesktopWidget wd;
             if ( s.status=="S" && isColorDepthOk (
                         wd.depth(),s.colorDepth ) )
+            {
                 resumeSession ( s );
+            }
             else
             {
-// 				x2goDebug<<"select one Session";
+                x2goDebug<<"Please select one session...";
                 selectSession ( listedSessions );
             }
         }
@@ -6932,7 +7054,8 @@ void ONMainWindow::exportDirs ( QString exports,bool removable )
     dr.dirList=exports;
     dr.key=createRSAKey();
     QString passwd;
-    x2goDebug<<"key created on: "<<dr.key;
+
+    x2goDebug<<"Key created on: "<<dr.key;
 
     passwd=getCurrentPass();
 
@@ -7099,15 +7222,17 @@ QString ONMainWindow::createRSAKey()
 
     QStringList args;
 
-    args<<"-t"<<"rsa"<<"-b"<<"1024"<<"-N"<<""<<"-f"<<keyName;
-// 	x2goDebug <<keyName<<endl;
+    args<<"-t"<<"rsa"<<"-b"<<"1024"<<"-N"<<""<<"-f"<<keyName<<"-q";
+
+    x2goDebug<<"ssh-keygen " + args.join(" ");
 
     if ( QProcess::execute ( "ssh-keygen",args ) !=0 )
     {
-        x2goDebug <<"ssh-keygen failed" <<endl;
+        x2goDebug<<"ssh-keygen failed." <<endl;
         return QString::null;
     }
-// 	x2goDebug <<"ssh-keygen ok" <<endl;
+    x2goDebug<<"ssh-keygen succeeded.";
+
 
     QFile rsa ( "/etc/ssh/ssh_host_rsa_key.pub" );
 #ifdef Q_OS_WIN
@@ -7143,7 +7268,7 @@ QString ONMainWindow::createRSAKey()
         rsa_pub = rsa.readLine();
     else
     {
-        x2goDebug<<"error: rsa file empty";
+        x2goErrorf(9)<<tr("RSA file empty.");
         return QString::null;
     }
 
@@ -7152,7 +7277,7 @@ QString ONMainWindow::createRSAKey()
                 QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append )
        )
     {
-        x2goDebug<<"error openning key:"<<keyName;
+        x2goErrorf(10)<<tr("Can not open key: ")<<keyName;
         return keyName;
     }
     QTextStream out ( &file );
@@ -7164,9 +7289,12 @@ QString ONMainWindow::createRSAKey()
 void ONMainWindow::slotCopyKey ( bool result, QString output, int pid)
 {
     fsExportKey=sshConnection->getSourceFile(pid);
-    x2goDebug<<"exported key "<<fsExportKey;
+
+    x2goDebug<<"Exported key: "<<fsExportKey;
+
     QFile::remove ( fsExportKey );
-    x2goDebug<<"key removed";
+    x2goDebug<<"Key removed.";
+
     if ( result==false )
     {
         QString message=tr ( "<b>Connection failed</b>\n" ) +output;
@@ -7176,9 +7304,23 @@ void ONMainWindow::slotCopyKey ( bool result, QString output, int pid)
                     message;
         }
 
-        QMessageBox::critical ( 0l,tr ( "Error" ),message,
-                                QMessageBox::Ok,
-                                QMessageBox::NoButton );
+        if (!startHidden)
+        {
+            QMessageBox::critical ( 0l,tr ( "Error" ),message,
+                                    QMessageBox::Ok,
+                                    QMessageBox::NoButton );
+        }
+        else
+        {
+            QString printout = tr( "Connection failed: ")  + output.toAscii();
+
+            if ( output.indexOf ( "publickey,password" ) !=-1 )
+                x2goErrorf(11)<< tr( "Connection failed: ")  + output + tr(" - Wrong password.");
+            else
+                x2goErrorf(12)<< tr( "Connection failed: ")  + output;
+            trayQuit();
+        }
+
         QFile::remove ( fsExportKey+".pub" );
         return;
     }
@@ -7246,7 +7388,9 @@ void ONMainWindow::slotRetExportDir ( bool result,QString output,
 #ifdef Q_OS_WIN
     QDir dir;
     dir.mkpath ( authofname+"\\.x2go\\.ssh" );
-    x2goDebug<<"Creating "<<authofname+"\\.x2go\\.ssh"<<endl;
+
+    x2goDebug<<"Creating "<<authofname+"\\.x2go\\.ssh";
+
     authofname=wapiShortFileName ( authofname ) +"/.x2go";
 #endif
     authofname+="/.ssh/authorized_keys" ;
@@ -7302,13 +7446,15 @@ void ONMainWindow::slotExtTimer()
             ( QFile::ReadUser|QFile::WriteUser|QFile::ExeUser|
               QFile::ReadOwner|QFile::WriteOwner|QFile::ExeOwner ) )
     {
-        x2goDebug <<"Wrong permissions on "<<readLoginsFrom <<":"<<endl;
-        x2goDebug << ( int ) ( QFile::permissions (
+
+        x2goDebug<<"Wrong permissions on "<<readLoginsFrom <<":";
+        x2goDebug<< ( int ) ( QFile::permissions (
                                    readLoginsFrom+"/." ) )
                   <<"must be"<< ( int ) ( QFile::ReadUser|QFile::WriteUser
                                           |QFile::ExeUser|QFile::ReadOwner|
                                           QFile::WriteOwner|
                                           QFile::ExeOwner ) <<endl;
+
         if ( extLogin )
             extTimer->stop();
         return;
@@ -7338,9 +7484,9 @@ void ONMainWindow::slotExtTimer()
                 }
                 if ( args[0]=="logout" )
                 {
-                    x2goDebug <<
-                              " I HAVE external logout"<<
-                              endl;
+
+                    x2goDebug<<"External logout.";
+
                     args[1].replace ( "\n","" );
                     if ( args[1].size() )
                         logoutDir=args[1];
@@ -7354,7 +7500,7 @@ void ONMainWindow::slotExtTimer()
     {
         if ( logoutDir != QString::null )
         {
-            x2goDebug <<"external logout"<<endl;
+            x2goDebug<<"External logout received";
             externalLogout ( logoutDir );
         }
     }
@@ -7362,7 +7508,7 @@ void ONMainWindow::slotExtTimer()
     {
         if ( loginDir != QString::null )
         {
-            x2goDebug <<"external login"<<endl;
+            x2goDebug<<"External login.";
             externalLogin ( loginDir );
         }
     }
@@ -7377,9 +7523,10 @@ void ONMainWindow::slotExportTimer()
             QFile::ExeUser|
             QFile::ReadOwner|QFile::WriteOwner|QFile::ExeOwner ) )
     {
-        x2goDebug <<"Wrong permissions on "<<
+
+        x2goDebug<<"Wrong permissions on "<<
                   readExportsFrom <<":"<<endl;
-        x2goDebug << ( int ) ( QFile::permissions (
+        x2goDebug<< ( int ) ( QFile::permissions (
                                    readExportsFrom+"/." ) )
                   <<"must be"<< ( int ) ( QFile::ReadUser|QFile::WriteUser
                                           |QFile::ExeUser|QFile::ReadOwner|
@@ -7713,7 +7860,9 @@ void ONMainWindow::slotScDaemonError()
 {
     QString stdOut ( scDaemon->readAllStandardError() );
     stdOut=stdOut.simplified();
-    x2goDebug<<"SCDAEMON err:"<<stdOut<<endl;
+
+    x2goDebug<<"SCDAEMON error: "<<stdOut;
+
     if ( stdOut.indexOf ( "updating slot" ) !=-1 ||
             stdOut.indexOf ( "updating status of slot" ) !=-1 )
     {
@@ -7731,7 +7880,8 @@ void ONMainWindow::slotScDaemonOut()
 {
     QString stdOut ( scDaemon->readAllStandardOutput() );
     stdOut=stdOut.simplified();
-    x2goDebug<<"SCDAEMON out:"<<stdOut<<endl;
+
+    x2goDebug<<"SCDAEMON out: "<<stdOut;
 }
 
 void ONMainWindow::slotScDaemonFinished ( int , QProcess::ExitStatus )
@@ -7739,7 +7889,9 @@ void ONMainWindow::slotScDaemonFinished ( int , QProcess::ExitStatus )
     scDaemon=0l;
     if ( isScDaemonOk )
     {
-        x2goDebug<<"scDaemon finished"<<endl;
+
+        x2goDebug<<"SCDAEMON finished."<<endl;
+
         gpg=new QProcess ( this );
         QStringList arguments;
         arguments<<"--card-status";
@@ -7761,7 +7913,9 @@ void ONMainWindow::slotGpgError()
 {
     QString stdOut ( gpg->readAllStandardError() );
     stdOut=stdOut.simplified();
-    x2goDebug<<"GPG err:"<<stdOut<<endl;
+
+    x2goDebug<<"GPG error: "<<stdOut;
+
     if ( stdOut.indexOf ( "failed" ) !=-1 )
     {
         QMessageBox::critical ( 0l,tr ( "Error" ),
@@ -7776,13 +7930,17 @@ void ONMainWindow::slotGpgError()
 void ONMainWindow::slotGpgFinished ( int exitCode,
                                      QProcess::ExitStatus exitStatus )
 {
-    x2goDebug<<"gpg finished, exit code:"<<exitCode<<" exit status:"<<
-             exitStatus<<endl;
+
+    x2goDebug<<"GPG finished, exit code: "<<exitCode;
+    x2goDebug<<"GPG finished, exit status:"<<exitStatus;
+
     if ( exitStatus==0 )
     {
         QString stdOut ( gpg->readAllStandardOutput() );
         stdOut.chop ( 1 );
-        x2goDebug<<"GPG out:"<<stdOut<<endl;
+
+        x2goDebug<<"GPG out: "<<stdOut;
+
         QStringList lines=stdOut.split ( "\n" );
         QString login;
         QString appId;
@@ -7807,10 +7965,14 @@ void ONMainWindow::slotGpgFinished ( int exitCode,
         appId=appId.simplified();
         login=login.simplified();
         authKey=authKey.simplified();
-        x2goDebug<<"card data: "<<appId<<login<<authKey<<endl;
+
+        x2goDebug<<"Card data: "<<appId<<login<<authKey;
+
         if ( login=="[not set]" || authKey == "[none]" )
         {
-            x2goDebug<<"Card not configured\n";
+
+            x2goErrorf(13)<<tr("Card not configured.");
+
             QMessageBox::critical (
                 0l,tr ( "Error" ),
                 tr (
@@ -7886,15 +8048,16 @@ void ONMainWindow::slotGpgAgentFinished ( int , QProcess::ExitStatus )
     QString gpg_agent_info=envLst[0].split ( "=" ) [1];
     QString ssh_auth_sock=envLst[2].split ( "=" ) [1];
     agentPid=envLst[4].split ( "=" ) [1];
-    x2goDebug<<gpg_agent_info<<ssh_auth_sock<<agentPid<<endl;
-    x2goDebug<<"GPGAGENT out:"<<envLst[0]<<envLst[2]<<envLst[4]<<endl;
+
+    x2goDebug<<"GPG-agent info: "<<gpg_agent_info<<ssh_auth_sock<<agentPid;
+    x2goDebug<<"GPG-agent pid: "<<agentPid;
+    x2goDebug<<"GPG-agent out:"<<envLst[0]<<envLst[2]<<envLst[4];
 
     agentCheckTimer->start ( 1000 );
     cardReady=true;
 
     sshEnv.clear();
     sshEnv<<envLst[0]<<envLst[2]<<envLst[4];
-// 	x2goDebug<<"sshenv:"<<sshEnv<<endl;
 
     if ( !useLdap )
     {
@@ -7918,7 +8081,9 @@ void ONMainWindow::slotGpgAgentFinished ( int , QProcess::ExitStatus )
         sshadd.waitForFinished ( -1 );
         QString sshout ( sshadd.readAllStandardOutput() );
         sshout=sshout.simplified();
-        x2goDebug<<"SSH-ADD out:"<<sshout<<endl;
+
+        x2goDebug<<"SSH-ADD out: "<<sshout;
+
         if(brokerMode)
         {
             broker->getUserSessions();
@@ -7937,7 +8102,9 @@ void ONMainWindow::slotGpgAgentFinished ( int , QProcess::ExitStatus )
             sshadd.waitForFinished ( -1 );
             QString sshout ( sshadd.readAllStandardOutput() );
             sshout=sshout.simplified();
-            x2goDebug<<"SSH-ADD out:"<<sshout<<endl;
+
+            x2goDebug<<"SSH-ADD out: "<<sshout;
+
             return;
         }
 
@@ -7962,13 +8129,14 @@ void ONMainWindow::slotCheckAgentProcess()
         if ( nxproxy )
             if ( nxproxy->state() ==QProcess::Running )
             {
-                x2goDebug<<"Suspending session\n";
+                x2goDebug<<"Suspending session...";
                 slotSuspendSessFromSt();
+                x2goDebug<<"Suspended  session.";
 //                 nxproxy->terminate();
             }
     }
 
-    x2goDebug<<"gpg-agent finished\n";
+    x2goDebug<<"GPG-Agent finished.";
     slotStartPGPAuth();
 }
 
@@ -7998,7 +8166,9 @@ QString ONMainWindow::getXDisplay()
         // Mac OS X 10.4 compatibility mode.
         // There, it is possible no $DISPLAY variable is set.
         // Start X11 manually. First, find a free display number.
-        x2goDebug << "entering 10.4 compat mode, checking for free X11 display";
+
+        x2goDebug<< "entering 10.4 compat mode, checking for free X11 display";
+
 
         int xFreeDisp = 0;
         QDir xtmpdir ("/tmp/.X11-unix");
@@ -8028,7 +8198,8 @@ QString ONMainWindow::getXDisplay()
         if (xFreeDisp != -1)
         {
             xsocket = "/tmp/.X11-unix/X" + QString::number (xFreeDisp);
-            x2goDebug << "Successfully detected free socket " << xsocket << ".";
+
+            x2goDebug<< "Successfully detected free socket " << xsocket << ".";
         }
 
         if (!(xsocket.isEmpty ()))
@@ -8038,18 +8209,21 @@ QString ONMainWindow::getXDisplay()
             QProcessEnvironment env = QProcessEnvironment::systemEnvironment ();
             QProcess* startx = new QProcess (this);
 
-            x2goDebug << "Starting the X server on free display port.";
+            x2goDebug<< "Starting the X server on free display port.";
+
             env.insert (0, "PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11R6/bin");
 
             startx->setProcessEnvironment (env);
             startx->start (xname + QString (" ") + xopt, QIODevice::NotOpen);
             if (startx->waitForStarted (3000))
             {
-                x2goDebug << "sleeping for three seconds";
+
+                x2goDebug<< "Sleeping for three seconds";
                 int sleeptime = 3;
                 while ((sleeptime = sleep (sleeptime))) {};
 
-                x2goDebug << "Leaving OS X 10.4 compat mode.";
+                x2goDebug<< "Leaving OS X 10.4 compat mode.";
+
             }
         }
     }
@@ -8077,7 +8251,9 @@ QString ONMainWindow::getXDisplay()
             }
             // Prepend the well-known socket path.
             xsocket.prepend ("/tmp/.X11-unix/X");
-            x2goDebug << "xsocket in compat mode: " << xsocket;
+
+            x2goDebug<< "xsocket in compat mode: " << xsocket;
+
         }
 
         unixSocket.connectToServer (xsocket);
@@ -8102,7 +8278,7 @@ QString ONMainWindow::getXDisplay()
 
                 if (ok)
                 {
-                    x2goDebug << "Returning" << QString (":") + xsocket;
+                    x2goDebug<<"Returning " << QString (":") + xsocket;
                     return (QString (":") + xsocket);
                 }
             }
@@ -8228,7 +8404,9 @@ void ONMainWindow::slotExecXmodmap()
 //  	    "echo add mod5 = ISO_Level3_Shift"
         ")| DISPLAY=:"
         +resumingSession.display+" xmodmap - ";
-    x2goDebug<<"cmd:"<<cmd;
+
+    x2goDebug<<"Executing xmodmap with cmd: "<<cmd;
+
     SshProcess* xmodProc;
     try
     {
@@ -8254,7 +8432,11 @@ void ONMainWindow::slotExecXmodmap()
 
 void ONMainWindow::check_cmd_status()
 {
-    x2goDebug<<"check command message"<<endl;
+    QString passwd;
+    QString user=getCurrentUname();
+    QString host=resumingSession.server;
+    passwd=getCurrentPass();
+
     sshConnection->executeCommand ( "x2gocmdexitmessage "+
                                     resumingSession.sessionId , this, SLOT(slotCmdMessage(bool, QString, int)));
 }
@@ -8262,6 +8444,7 @@ void ONMainWindow::check_cmd_status()
 void ONMainWindow::slotCmdMessage ( bool result,QString output,
                                     int)
 {
+    x2goDebug<<"Command Message: " + output;
     if ( result==false )
     {
         cardReady=false;
@@ -8285,10 +8468,18 @@ void ONMainWindow::slotCmdMessage ( bool result,QString output,
     {
         QString cmd=output;
         cmd.replace ( "X2GORUNCOMMAND ERR NOEXEC:","" );
-        QMessageBox::critical ( 0l,tr ( "Error" ),
-                                tr ( "Unable to execute: " ) +
-                                cmd,QMessageBox::Ok,
-                                QMessageBox::NoButton );
+
+        if(startHidden)
+        {
+            x2goErrorf(14)<< tr( "Unable to execute: ") + cmd;
+        }
+        else
+        {
+            QMessageBox::critical ( 0l,tr ( "Error" ),
+                                    tr ( "Unable to execute: " ) +
+                                    cmd,QMessageBox::Ok,
+                                    QMessageBox::NoButton );
+        }
     }
     if(sshConnection)
         delete sshConnection;
@@ -8303,8 +8494,10 @@ void ONMainWindow::slotCmdMessage ( bool result,QString output,
 int ONMainWindow::startSshFsTunnel()
 {
     fsTunReady=false;
-    x2goDebug<<"starting fs tunnel for:"<<resumingSession.sessionId<<
-             "\nfs port: "<<resumingSession.fsPort;
+
+    x2goDebug<<"Starting fs tunnel for: "<<resumingSession.sessionId;
+    x2goDebug<<"fs port: "<<resumingSession.fsPort;
+
 
     if ( resumingSession.fsPort.length() <=0 )
     {
@@ -8376,7 +8569,9 @@ void ONMainWindow::startX2goMount()
 #ifdef Q_OS_WIN
     QDir tdir;
     tdir.mkpath ( authofname+"\\.x2go\\.ssh" );
-    x2goDebug<<"Creating "<<authofname+"\\.x2go\\.ssh"<<endl;
+
+    x2goDebug<<"Creating "<<authofname+"\\.x2go\\.ssh";
+
     authofname=wapiShortFileName ( authofname ) +"/.x2go";
 #endif
     authofname+= "/.ssh/authorized_keys" ;
@@ -8496,7 +8691,6 @@ void ONMainWindow::startX2goMount()
 
     dir->pid=sshConnection->executeCommand(cmd,this,SLOT ( slotRetExportDir ( bool,
                                            QString,int) ));
-
 }
 
 void ONMainWindow::slotCheckPrintSpool()
@@ -8582,14 +8776,18 @@ bool ONMainWindow::isServerRunning ( int port )
     iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
     if (iResult != 0)
     {
-        x2goDebug<<"WARNING: WSAStartup failed: "<< iResult<<endl;
+
+        x2goDebug<<"WARNING: WSAStartup failed: "<< iResult;
+
         return false;
     }
 
     addr.s_addr = inet_addr("127.0.0.1");
     if (addr.s_addr == INADDR_NONE)
     {
+
         x2goDebug<< "WARNING:  The IPv4 address entered must be a legal address\n";
+
         return false;
     }
 
@@ -8597,10 +8795,13 @@ bool ONMainWindow::isServerRunning ( int port )
     localHost = gethostbyaddr((char*)&addr,4, AF_INET);
     if (!localHost)
     {
-        x2goDebug<<"WARNING: gethostbyaddr failed: "<<WSAGetLastError()<<endl;
+
+        x2goDebug<<"WARNING: gethostbyaddr failed: "<<WSAGetLastError();
+
         return false;
     }
-    x2goDebug<<"got localhost"<<endl;
+    x2goDebug<<"got localhost";
+
 
     localIP = inet_ntoa (*(struct in_addr *)*localHost->h_addr_list);
 
@@ -8611,7 +8812,8 @@ bool ONMainWindow::isServerRunning ( int port )
     ConnectSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
     if (ConnectSocket == INVALID_SOCKET)
     {
-        x2goDebug<<"WARNING: socket failed with error: "<< WSAGetLastError()<<endl;
+        x2goDebug<<"WARNING: socket failed with error: "<< WSAGetLastError();
+
         return false;
     }
 
@@ -8619,11 +8821,15 @@ bool ONMainWindow::isServerRunning ( int port )
     if (iResult == SOCKET_ERROR)
     {
         closesocket(ConnectSocket);
-        x2goDebug<<"Port is free: "<<port<<endl;
+
+        x2goDebug<<"Port is free: "<<port;
+
         return false;
     }
     closesocket(ConnectSocket);
-    x2goDebug<<"Port already used: "<<port<<endl;
+
+    x2goDebug<<"Port already used: "<<port;
+
     return true;
 #endif
     QTcpSocket tcpSocket ( 0 );
@@ -8681,7 +8887,9 @@ void ONMainWindow::startXOrg ()
     if (internalX==VCXSRV)
         exec=appDir+"\\vcxsrv\\vcxsrv.exe";
     winServersReady=false;
+
     x2goDebug<<"using internal X: "<<useInternalX;
+
 //#ifdef CFGCLIENT
     if (!useInternalX || internalX!=XMING)
     {
@@ -8702,10 +8910,13 @@ void ONMainWindow::startXOrg ()
                 break;
             case WIN:
                 cmdLine=xorgWinOptions;
-                x2goDebug<<"WxH:"<<xorgWidth<<"x"<<xorgHeight<<endl;
+
+                x2goDebug<<"WxH:"<<xorgWidth<<"x"<<xorgHeight;
+
                 cmdLine.replace("%w",xorgWidth);
                 cmdLine.replace("%h",xorgHeight);
-                x2goDebug<<cmdLine<<endl;
+
+                x2goDebug<<cmdLine;
                 break;
             }
         }
@@ -8741,7 +8952,9 @@ void ONMainWindow::startXOrg ()
         xorg-> setWorkingDirectory ( workingDir);
     }
 
-    x2goDebug<<"running"<<exec<<" "<<args.join(" ");
+
+    x2goDebug<<"Running "<<exec<<" "<<args.join(" ");
+
     xorg->start ( exec, args );
 
 
@@ -8768,7 +8981,9 @@ void ONMainWindow::slotCheckXOrgConnection()
     ++waitingForX;
     if (isServerRunning(6000+xDisplay))
     {
-        x2goDebug<<"X is started";
+
+        x2goDebug<<"X is started.";
+
         slotSetWinServersReady();
     }
     else
@@ -8783,7 +8998,9 @@ void ONMainWindow::slotCheckXOrgConnection()
         }
         else
         {
-            x2goDebug<<"waiting for X";
+
+            x2goDebug<<"...waiting for X.";
+
             QTimer::singleShot(1000, this, SLOT(slotCheckXOrgConnection()));
         }
     }
@@ -8813,7 +9030,8 @@ void WinServerStarter::run()
 
 void ONMainWindow::startWinServers()
 {
-    x2goDebug<<"Starting win servers"<<endl;
+
+    x2goDebug<<"Starting win servers...";
 
     QString etcDir=homeDir+"/.x2go/etc";
     QDir dr ( homeDir );
@@ -8841,7 +9059,9 @@ void ONMainWindow::startWinServers()
         startPulsed();
     }
 // #ifdef CFGCLIENT
-//     x2goDebug<<"xorg settings: "<<startXorgOnStart <<" "<< useXming<<endl;
+
+    //x2goDebug<<"Xorg settings: "<< startXorgOnStart <<" useXming: "<< useXming;
+
     if ( useInternalX && (internalX== XMING))
     {
 // #endif
@@ -8878,12 +9098,12 @@ void ONMainWindow::saveCygnusSettings()
     {
         if ( haveCygwinEntry() )
         {
-            x2goDebug<<"Cygwin entry exist";
+            x2goDebug<<"Cygnus Solutions entry exists.";
             cyEntry=true;
         }
         else
         {
-            x2goDebug<<"Cygwin entry not exist";
+            x2goDebug<<"Cygnus Solutions entry does not exist.";
             cyEntry=false;
         }
     }
@@ -8923,7 +9143,9 @@ void ONMainWindow::startPulsed()
     QDir dr ( homeDir );
     dr.mkpath ( pulseDir );
     pulseDir=wapiShortFileName ( pulseDir );
-    x2goDebug<<"template: "<<pulseDir+"/tmp"<<endl;
+
+    x2goDebug<<"pulse template: "<<pulseDir+"/tmp";
+
     QTemporaryFile* fl=new QTemporaryFile ( pulseDir+"/tmp" );
     fl->open();
     pulseDir=fl->fileName();
@@ -8931,7 +9153,9 @@ void ONMainWindow::startPulsed()
     delete fl;
     QFile::remove ( pulseDir );
     dr.mkpath ( pulseDir );
-    x2goDebug<<"pulse tmp file: "<<pulseDir<<endl;
+
+    x2goDebug<<"pulse tmp file: "<<pulseDir;
+
     QStringList pEnv=QProcess::systemEnvironment();
     for ( int i=0; i<pEnv.size(); ++i )
     {
@@ -8971,12 +9195,15 @@ void ONMainWindow::startPulsed()
     pulseServer->setWorkingDirectory ( wapiShortFileName (
                                            appDir+"\\pulse" ) );
     pulseServer->start ( "pulse\\pulseaudio.exe",pulseArgs );
-    x2goDebug<<"starting pulse\\pulseaudio.exe "<<pulseArgs.join ( " " ) <<
+
+    x2goDebug<<"Starting pulse\\pulseaudio.exe "<<pulseArgs.join ( " " ) <<
              " working dir: "<<
-             wapiShortFileName ( appDir+"\\pulse" ) <<endl;
+             wapiShortFileName ( appDir+"\\pulse" );
+
     pulseTimer=new QTimer(this);
-    x2goDebug<<"connect timer";
+
     connect (pulseTimer, SIGNAL(timeout()), this, SLOT(slotCheckPulse()));
+    x2goDebug<<"Connected timer.";
     pulseTimer->start(2000);
 }
 
@@ -8986,7 +9213,9 @@ void ONMainWindow::slotCheckPulse()
     if(pulseServer->state()!=QProcess::Running)
     {
         pulseServer->start ( "pulse\\pulseaudio.exe",pulseArgs );
-        x2goDebug<<"restarting pulse\\pulseaudio.exe "<<pulseArgs.join ( " " );
+
+        x2goDebug<<"Restarting pulse\\pulseaudio.exe "<<pulseArgs.join ( " " );
+
     }
 }
 
@@ -8994,7 +9223,9 @@ void ONMainWindow::slotCheckPulse()
 // #ifdef CFGCLIENT
 void ONMainWindow::xorgSettings()
 {
-    x2goDebug<<"getting xorg settings"<<endl;
+
+    x2goDebug<<"Getting Xorg settings.";
+
 
     X2goSettings st ( "settings" );
 
@@ -9036,7 +9267,9 @@ void ONMainWindow::xorgSettings()
 
 void ONMainWindow::slotSetWinServersReady()
 {
-    x2goDebug<<"all winservers are started\n";
+
+    x2goDebug<<"All winservers are started.";
+
     winServersReady=true;
     restoreCygnusSettings();
 }
@@ -9069,7 +9302,7 @@ void ONMainWindow::generateEtcFiles()
        <<appDir<<"/sftp-server\n";
 #endif
     file.close();
-    x2goDebug<<etcDir +"/sshd_config created";
+    x2goDebug<<etcDir +"/sshd_config created.";
 }
 
 void ONMainWindow::generateHostDsaKey()
@@ -9080,7 +9313,9 @@ void ONMainWindow::generateHostDsaKey()
     if ( !QFile::exists ( etcDir+"/ssh_host_dsa_key" ) ||
             !QFile::exists ( etcDir+"/ssh_host_dsa_key.pub" ) )
     {
-        /*		x2goDebug<<"Generating host DSA key\n";*/
+
+        x2goDebug<<"Generating host DSA key.";
+
 #ifdef Q_OS_WIN
         QString fname=cygwinPath ( wapiShortFileName ( etcDir ) ) +
                       "/ssh_host_dsa_key";
@@ -9122,7 +9357,9 @@ void ONMainWindow::startSshd()
     desktopName+=getenv ( "USERNAME" );
     char* desktop=new char[desktopName.size() +1];
     strcpy ( desktop,desktopName.c_str() );
-    x2goDebug<<"Creating desktop: "<<desktop<<endl;
+
+    x2goDebug<<"Creating desktop: "<<desktop;
+
     if ( !CreateDesktopA (
                 desktop,
                 0,
@@ -9133,7 +9370,9 @@ void ONMainWindow::startSshd()
             ) )
     {
         strcpy ( desktop,"" );
-        x2goDebug<<"Desktop creation failed, using default\n";
+
+        x2goDebug<<"Desktop creation failed, using default.";
+
     }
     ZeroMemory ( &si, sizeof ( si ) );
     ZeroMemory ( &sshd, sizeof ( sshd ) );
@@ -9159,7 +9398,8 @@ void ONMainWindow::startSshd()
     arguments<<"-f"<<etcDir +"/sshd_config"<< "-h" <<
              etcDir+"/ssh_host_dsa_key"<<"-D"<<"-p"<<clientSshPort;
     sshd->start ( appDir+"/sshd",arguments );
-    x2goDebug<<"Usermode sshd started";
+    x2goDebug<<"Usermode sshd started.";
+
 #endif
 }
 
@@ -9261,7 +9501,14 @@ void ONMainWindow::slotSetProxyWinFullscreen()
 void ONMainWindow::resizeProxyWinOnDisplay(int disp)
 {
     QRect geom=QApplication::desktop()->screenGeometry(disp-1);
-    //x2goDebug<<"resizing proxy win to fit display "<<disp<<"("<<geom<<")"<<endl;
+
+    QString geoStr =
+            "(x: " + QString("%1").arg(geom.x()) +
+            ", y: "+ QString("%1").arg(geom.y()) +
+            ", w: "+ QString("%1").arg(geom.width()) +
+            ", h: "+ QString("%1").arg(geom.height());
+    x2goDebug<<"Resizing proxy window to fit Display: " + QString("%1").arg(disp) + " " + geoStr;
+
 #ifdef Q_OS_LINUX
     XSync(QX11Info::display(),false);
     XMoveWindow(QX11Info::display(), proxyWinId,geom.x(),geom.y());
@@ -9304,14 +9551,21 @@ void ONMainWindow::slotConfigXinerama()
     QRect newGeometry=proxyWinGeometry();
     if (newGeometry.isNull())
     {
-//     x2goDebug<<"error getting window geometry (window closed?)\n";
+        x2goWarningf(7)<< tr("Error getting window geometry (window closed)?");
         xineramaTimer->stop();
         return;
     }
     if (newGeometry==lastDisplayGeometry)
         return;
     lastDisplayGeometry=newGeometry;
-//    x2goDebug<<"New proxy geometry: "<<lastDisplayGeometry<<endl;
+
+    QString geoStr =
+            "(x: " + QString("%1").arg(lastDisplayGeometry.x()) +
+            ", y: "+ QString("%1").arg(lastDisplayGeometry.y()) +
+            ", w: "+ QString("%1").arg(lastDisplayGeometry.width()) +
+            ", h: "+ QString("%1").arg(lastDisplayGeometry.height());
+    x2goDebug<<"New proxy geometry: " + geoStr;
+
     QDesktopWidget* root=QApplication::desktop();
     QList<QRect> newXineramaScreens;
     for (int i=0; i< root->numScreens(); ++i)
@@ -9323,17 +9577,19 @@ void ONMainWindow::slotConfigXinerama()
             intersection=root->screenGeometry(i).intersected(lastDisplayGeometry);
         if (!intersection.isNull())
         {
-//            x2goDebug<<"intersected with "<<i<<": "<<intersection<<endl;
+            //            x2goDebug<<"intersected with "<<i<<": "<<intersection<<endl;
             intersection.moveLeft(intersection.x()-lastDisplayGeometry.x());
             intersection.moveTop(intersection.y()-lastDisplayGeometry.y());
-//            x2goDebug<<"xinerama screen: "<<intersection<<endl;
+
+            //            x2goDebug<<"xinerama screen: "<<intersection<<endl;
             newXineramaScreens<<intersection;
         }
     }
     if (xineramaScreens != newXineramaScreens)
     {
         xineramaScreens=newXineramaScreens;
-//        x2goDebug<<"xinerama screen changed, new screens: "<<xineramaScreens<<endl;
+        //        x2goDebug<<"xinerama screen changed, new screens: "<<xineramaScreens<<endl;
+
         xineramaTimer->stop();
         QStringList screens;
         foreach (QRect disp, xineramaScreens)
@@ -9342,7 +9598,6 @@ void ONMainWindow::slotConfigXinerama()
         QString cmd="export DISPLAY=:"+resumingSession.display+";printf '"+screens.join("\\\\n")+"' >  ~/.x2go/C-"+
                     resumingSession.sessionId+"/xinerama.conf";
 
-        x2goDebug<<cmd<<endl;
         sshConnection->executeCommand(cmd, this, SLOT(slotXineramaConfigured()));
     }
 }
@@ -9374,12 +9629,14 @@ void ONMainWindow::slotXineramaConfigured()
 void ONMainWindow::slotFindProxyWin()
 {
 #ifndef Q_OS_DARWIN
-//     x2goDebug<<"search proxy win: "<<"X2GO-"+resumingSession.sessionId;
+    x2goDebug<<"Searching proxy win: X2GO-" + resumingSession.sessionId;
+
     proxyWinId=findWindow ( "X2GO-"+resumingSession.sessionId );
     bool xinerama=defaultXinerama;
     if ( proxyWinId )
     {
-        x2goDebug<<"proxy win found:"<<proxyWinId;
+        x2goDebug<<"Proxy win found: " + QString("%1").arg(proxyWinId);
+
         setProxyWinTitle();
         proxyWinTimer->stop();
         if (!embedMode)
@@ -9415,7 +9672,8 @@ void ONMainWindow::slotFindProxyWin()
             }
             if (xinerama)
             {
-                x2goDebug<<"Starting xinerama timer\n";
+                x2goDebug<<"Starting Xinerama Timer.";
+
                 lastDisplayGeometry=QRect();
                 xineramaScreens.clear();
                 xineramaTimer->start(500);
@@ -9424,23 +9682,26 @@ void ONMainWindow::slotFindProxyWin()
 
         if ( embedMode )
         {
-            x2goDebug<<"checking rootless config";
+            x2goDebug<<"Checking rootless config.";
+
             if ( config.rootless )
             {
-                x2goDebug<<"win is rootless";
+                x2goDebug<<"Window is rootless.";
                 act_embedContol->setEnabled ( false );
             }
             else
                 slotAttachProxyWindow();
         }
 #ifdef Q_OS_WIN
-        x2goDebug<<"maximizeProxyWin: "<<maximizeProxyWin;
+        x2goDebug<<"Maximize proxy win: "<<maximizeProxyWin;
+
         if ( !startEmbedded )
         {
             if ( maximizeProxyWin )
             {
                 QDesktopWidget dw;
-                x2goDebug<<"making proxy win full screen";
+
+                x2goDebug<<"Making proxy win full screen.";
                 wapiSetFSWindow ( ( HWND ) proxyWinId,
                                   dw.screenGeometry ( this ) );
                 /*wapiShowWindow ( ( HWND ) proxyWinId,
@@ -9481,9 +9742,8 @@ void ONMainWindow::slotDetachProxyWindow()
     //and reconnect
     if ( !embedControlChanged )
     {
-        x2goDebug<<"\n";
         slotFindProxyWin();
-        x2goDebug<<"proxy win detached, proxywin is:"<<proxyWinId<<endl;
+        x2goDebug<<"Proxy win detached, proxywin is: "<<proxyWinId;
     }
 #endif
     embedControlChanged=false;
@@ -9492,7 +9752,8 @@ void ONMainWindow::slotDetachProxyWindow()
 
 void ONMainWindow::slotAttachProxyWindow()
 {
-    x2goDebug<<"slotAttachProxy";
+    x2goDebug<<"slotAttachProxyWindow.";
+
     if ( startEmbedded )
     {
         embedControlChanged=false;
@@ -9506,7 +9767,9 @@ void ONMainWindow::slotAttachProxyWindow()
     }
     else
     {
-        x2goDebug<<"start embedded was false";
+
+        x2goDebug<<"Start embedded was false.";
+
         startEmbedded=true;
     }
 
@@ -9814,7 +10077,9 @@ void ONMainWindow::slotChangeKbdLayout(const QString& layout)
 #ifdef Q_OS_LINUX
     QStringList args;
     args<<"-layout"<<layout;
-    x2goDebug<<"running setxkbmap with params: "<<args.join(" ");
+
+    x2goDebug<<"Running setxkbmap with params: "<<args.join(" ");
+
     QProcess::startDetached("setxkbmap",args);
 #endif
 }
@@ -10587,8 +10852,10 @@ void ONMainWindow::slotActivateWindow()
         QApplication::setActiveWindow ( this ) ;
         activateWindow();
 
+
         /*		x2goDebug<<"focus:"<<pass->hasFocus();
-        		x2goDebug<<"activ:"<<pass->isActiveWindow();*/
+                x2goDebug<<"activ:"<<pass->isActiveWindow();*/
+
         QTimer::singleShot ( 50, this,
                              SLOT ( slotEmbedToolBarToolTip() ) );
     }
@@ -10736,7 +11003,6 @@ QString ONMainWindow::u3DataPath()
     QString dpath;
     for ( int i=0; i<env.size(); ++i )
     {
-// 		x2goDebug << env[i];
         //check if we have U3 System
         if ( env[i].indexOf ( "U3_APP_DATA_PATH=" ) ==0 )
         {
@@ -10772,14 +11038,18 @@ void ONMainWindow::cleanPortable()
 
 void ONMainWindow::removeDir ( QString path )
 {
-    x2goDebug<<"entering " <<path;
+
+    x2goDebug<<"removeDir, entering: " <<path;
+
     QDir dr ( path );
     QStringList files=dr.entryList ( QDir::Files );
     for ( int i=0; i<files.size(); ++i )
     {
         if ( files[i]!="known_hosts" || cleanAllFiles)
         {
-            x2goDebug<<"cleaning file:"<<path+"/"+files[i];
+
+            x2goDebug<<"Cleaning file: "<<path+"/"+files[i];
+
             dr.remove ( path+"/"+files[i] );
         }
     }
@@ -10831,6 +11101,7 @@ long ONMainWindow::X11FindWindow ( QString text, long rootWin )
 
 long ONMainWindow::findWindow ( QString text )
 {
+    x2goDebug<<"Searching window with title: " + text;
 #ifdef Q_OS_LINUX
     return X11FindWindow ( text );
 #endif
@@ -10845,7 +11116,9 @@ long ONMainWindow::findWindow ( QString text )
 void ONMainWindow::setX2goconfig ( const QString& text )
 {
     m_x2goconfig=text;
-    x2goDebug<<"have session config";
+
+    x2goDebug<<"Haveing a session config.";
+
     initWidgetsEmbed();
 }
 
@@ -10855,12 +11128,16 @@ void ONMainWindow::doPluginInit()
     Dl_info info;
     dladdr ( ( void* ) & ( ONMainWindow::getPortable ),&info );
     QString fname=info.dli_fname;
+
     x2goDebug<<"Application name:" <<fname;
+
     QString clientDir;
     QString pluginDir;
     int pos=fname.lastIndexOf ( "/" );
     pluginDir=fname.left ( pos );
-    x2goDebug<<"Plugin Dir:" <<pluginDir;
+
+    x2goDebug<<"Plugin directory: " <<pluginDir;
+
     QDir dr ( pluginDir );
     if ( dr.exists ( "x2goclient/x2goclient" ) )
     {
@@ -10886,7 +11163,9 @@ void ONMainWindow::doPluginInit()
             clientDir=pluginDir;
         }
     }
-    x2goDebug<<"Client Dir:"<<clientDir;
+
+    x2goDebug<<"Client directory: "<<clientDir;
+
     QString path=getenv ( "PATH" );
     path=clientDir+":"+pluginDir+":"+path;
     setenv ( "PATH",path.toAscii (),1 );
@@ -10962,7 +11241,9 @@ void ONMainWindow::slotUpdateEmbedWindow()
         oldContainerSize=embedContainer->size();
         oldChildPos= mapToGlobal (
                          QPoint ( 0,0 ) );
-        x2goDebug<<"updating embedded window"<<endl;
+
+        x2goDebug<<"Updating embedded window.";
+
     }
 }
 
@@ -10975,7 +11256,9 @@ void ONMainWindow::embedWindow ( long wndId )
     childId=wndId;
     embedContainer->show();
 #ifdef Q_OS_LINUX
-    x2goDebug<<"embedding "<<wndId<<" in container"<<endl;
+
+    x2goDebug<<"Embedding window with id "<<wndId<<" in container.";
+
     embedContainer->embedClient ( wndId );
 #endif
 #ifdef Q_OS_WIN
diff --git a/onmainwindow.h b/onmainwindow.h
index b51caca..b736755 100644
--- a/onmainwindow.h
+++ b/onmainwindow.h
@@ -324,6 +324,9 @@ public:
         ARTS,
         ESD
     };
+
+    static bool debugging;
+
     static bool portable;
     ONMainWindow ( QWidget *parent = 0 );
     ~ONMainWindow();
diff --git a/sshmasterconnection.cpp b/sshmasterconnection.cpp
index eb75237..3dae569 100644
--- a/sshmasterconnection.cpp
+++ b/sshmasterconnection.cpp
@@ -319,7 +319,9 @@ void SshMasterConnection::run()
         if ( ssh_init() !=0 )
         {
             QString err=tr ( "Can not initialize libssh" );
+#ifdef DEBUG
             x2goDebug<<err<<endl;
+#endif
             emit connectionError ( err,"" );
             quit();
             return;
@@ -345,7 +347,9 @@ void SshMasterConnection::run()
     if ( my_ssh_session == NULL )
     {
         QString err=tr ( "Can not create ssh session" );
+#ifdef DEBUG
         x2goDebug<<err<<endl;
+#endif
         emit connectionError ( err,"" );
         if ( reverseTunnel )
             emit ioErr ( reverseTunnelCreator,err,"" );
@@ -373,7 +377,9 @@ void SshMasterConnection::run()
         if (!tcpProxySocket->waitForConnected(30000))
         {
             QString message=tr ( "Can not connect to proxy server" );
+#ifdef DEBUG
             x2goDebug<<message<<endl;
+#endif
             emit connectionError ( "Proxy", message );
             ssh_free ( my_ssh_session );
             quit();
@@ -394,12 +400,16 @@ void SshMasterConnection::run()
     {
         if(disconnectSessionFlag)
         {
+#ifdef DEBUG
             x2goDebug<<"session already disconnected, exiting"<<endl;
+#endif
             return;
         }
         QString err=ssh_get_error ( my_ssh_session );
         QString message=tr ( "Can not connect to " ) +host+":"+QString::number ( port );
+#ifdef DEBUG
         x2goDebug<<message<<" - "<<err;
+#endif
         emit connectionError ( message, err );
         if ( reverseTunnel )
             emit ioErr ( reverseTunnelCreator,message,err );
@@ -409,7 +419,9 @@ void SshMasterConnection::run()
     }
     if(disconnectSessionFlag)
     {
+#ifdef DEBUG
         x2goDebug<<"session already disconnected, exiting"<<endl;
+#endif
         return;
     }
     QString errMsg;
@@ -418,7 +430,9 @@ void SshMasterConnection::run()
     {
         if(disconnectSessionFlag)
         {
+#ifdef DEBUG
             x2goDebug<<"session already disconnected, exiting"<<endl;
+#endif
             return;
         }
         writeHostKey=writeHostKeyReady=false;
@@ -443,7 +457,9 @@ void SshMasterConnection::run()
 
     if(disconnectSessionFlag)
     {
+#ifdef DEBUG
         x2goDebug<<"session already disconnected, exiting"<<endl;
+#endif
         return;
     }
     ssh_options_set ( my_ssh_session, SSH_OPTIONS_USER, user.toAscii() );
@@ -459,7 +475,9 @@ void SshMasterConnection::run()
     {
         if(disconnectSessionFlag)
         {
+#ifdef DEBUG
             x2goDebug<<"session already disconnected, exiting"<<endl;
+#endif
             return;
         }
 #ifdef DEBUG
@@ -471,14 +489,18 @@ void SshMasterConnection::run()
     {
         if(disconnectSessionFlag)
         {
+#ifdef DEBUG
             x2goDebug<<"session already disconnected, exiting"<<endl;
+#endif
             return;
         }
         QString err;
         if (!kerberos)
             err=ssh_get_error ( my_ssh_session );
         QString message=tr ( "Authentication failed" );
+#ifdef DEBUG
         x2goDebug<<message<<" - "<<err;
+#endif
         emit userAuthError ( authErrors.join ( "\n" ) );
         if ( reverseTunnel )
             emit ioErr ( reverseTunnelCreator,message,err );
@@ -504,12 +526,16 @@ void SshMasterConnection::run()
         {
             if(disconnectSessionFlag)
             {
+#ifdef DEBUG
                 x2goDebug<<"session already disconnected, exiting"<<endl;
+#endif
                 return;
             }
             QString err=ssh_get_error ( my_ssh_session );
             QString message=tr ( "channel_forward_listen failed" );
+#ifdef DEBUG
             x2goDebug<<message<<" - "<<err;
+#endif
             emit ioErr ( reverseTunnelCreator, message, err );
             ssh_disconnect ( my_ssh_session );
             ssh_free ( my_ssh_session );
@@ -919,13 +945,17 @@ void SshMasterConnection::copy()
         ssh_scp scp=ssh_scp_new ( my_ssh_session, SSH_SCP_WRITE|SSH_SCP_RECURSIVE, dstPath.toAscii() );
         if ( scp == NULL )
         {
+#ifdef DEBUG
             x2goDebug<<"Error allocating scp session: "<< ssh_get_error ( my_ssh_session ) <<endl;
+#endif
             return;
         }
         int rc = ssh_scp_init ( scp );
         if ( rc != SSH_OK )
         {
+#ifdef DEBUG
             x2goDebug<<"Error initializing scp session: "<< ssh_get_error ( my_ssh_session ) <<endl;
+#endif
             ssh_scp_free ( scp );
             return;
         }
@@ -946,7 +976,9 @@ void SshMasterConnection::copy()
         {
             QString errMsg=tr ( "Can not create remote file " ) +copyRequests[i].dst;
             QString serr=ssh_get_error ( my_ssh_session );
+#ifdef DEBUG
             x2goDebug<<errMsg<<" - "<<serr<<endl;
+#endif
             emit copyErr ( copyRequests[i].creator, errMsg, serr );
             copyRequests.removeAt ( i );
             ssh_scp_close ( scp );
@@ -958,7 +990,9 @@ void SshMasterConnection::copy()
         {
             QString serr=ssh_get_error ( my_ssh_session );
             QString errMsg=tr ( "Can not write to remote file " ) +copyRequests[i].dst;
+#ifdef DEBUG
             x2goDebug<<errMsg<<" - "<<serr<<endl;
+#endif
             emit copyErr ( copyRequests[i].creator, errMsg, serr );
             copyRequests.removeAt ( i );
             ssh_scp_close ( scp );
@@ -1071,7 +1105,9 @@ void SshMasterConnection::channelLoop()
                 {
                     QString errMsg=tr ( "can not connect to " ) +
                                    reverseTunnelLocalHost+":"+QString::number ( reverseTunnelLocalPort );
+#ifdef DEBUG
                     x2goDebug<<errMsg<<endl;
+#endif
                     emit ioErr ( reverseTunnelCreator, errMsg, "" );
                     continue;
                 }
@@ -1104,7 +1140,9 @@ void SshMasterConnection::channelLoop()
         channelConnectionsMutex.lock();
         if ( channelConnections.size() <=0 )
         {
-//             x2goDebug<<"no channel connections, waiting\n";
+#ifdef DEBUG
+            //             x2goDebug<<"no channel connections, waiting\n";
+#endif
             channelConnectionsMutex.unlock();
             usleep ( 500 );
             continue;
@@ -1144,7 +1182,9 @@ void SshMasterConnection::channelLoop()
                         QString err=ssh_get_error ( my_ssh_session );
                         QString errorMsg=tr ( "channel_open_forward failed" );
                         emit ioErr ( channelConnections[i].creator, errorMsg, err );
+#ifdef DEBUG
                         x2goDebug<<errorMsg<<": "<<err<<endl;
+#endif
                     }
 #ifdef DEBUG
                     else
@@ -1163,14 +1203,18 @@ void SshMasterConnection::channelLoop()
                         QString err=ssh_get_error ( my_ssh_session );
                         QString errorMsg=tr ( "channel_open_session failed" );
                         emit ioErr ( channelConnections[i].creator, errorMsg, err );
+#ifdef DEBUG
                         x2goDebug<<errorMsg<<": "<<err<<endl;
+#endif
                     }
                     else if ( channel_request_exec ( channel, channelConnections[i].command.toAscii() ) != SSH_OK )
                     {
                         QString err=ssh_get_error ( my_ssh_session );
                         QString errorMsg=tr ( "channel_request_exec failed" );
                         emit ioErr ( channelConnections[i].creator, errorMsg, err );
+#ifdef DEBUG
                         x2goDebug<<errorMsg<<": "<<err<<endl;
+#endif
                     }
 #ifdef DEBUG
                     else
@@ -1192,11 +1236,15 @@ void SshMasterConnection::channelLoop()
 
         if ( retval == -1 )
         {
+#ifdef DEBUG
             x2goDebug<<"select error\n";
+#endif
             continue;
         }
 
-//         x2goDebug<<"select exited"<<endl;
+#ifdef DEBUG
+        //         x2goDebug<<"select exited"<<endl;
+#endif
 
         channelConnectionsMutex.lock();
         for ( int i=channelConnections.size()-1; i>=0; --i )
@@ -1207,10 +1255,14 @@ void SshMasterConnection::channelLoop()
                 continue;
             if ( channel_poll ( channel,1 ) >0 )
             {
-//              x2goDebug<<"read err data from channel\n";
+#ifdef DEBUG
+                //              x2goDebug<<"read err data from channel\n";
+#endif
                 nbytes = channel_read ( channel, buffer, sizeof ( buffer )-1, 1 );
                 emit stdErr ( channelConnections[i].creator, QByteArray ( buffer,nbytes ) );
-//              x2goDebug<<nbytes<<" err from channel"<<endl;
+#ifdef DEBUG
+                //              x2goDebug<<nbytes<<" err from channel"<<endl;
+#endif
             }
             int rez=channel_poll ( channel,0 );
             if ( rez==SSH_EOF )
@@ -1224,9 +1276,13 @@ void SshMasterConnection::channelLoop()
             }
             if ( rez>0 )
             {
-//                  x2goDebug<<"read data from channel "<<channel<<endl;
+#ifdef DEBUG
+                //                  x2goDebug<<"read data from channel "<<channel<<endl;
+#endif
                 nbytes = channel_read ( channel, buffer, sizeof ( buffer )-1, 0 );
-//                  x2goDebug<<nbytes<<" from channel "<<channel<<endl;
+#ifdef DEBUG
+                //                  x2goDebug<<nbytes<<" from channel "<<channel<<endl;
+#endif
                 if ( nbytes > 0 )
                 {
                     if ( tcpSocket>0 )
@@ -1234,12 +1290,16 @@ void SshMasterConnection::channelLoop()
                         if ( send ( tcpSocket,buffer, nbytes,0 ) != nbytes )
                         {
                             QString errMsg=tr ( "error writing to socket" );
+#ifdef DEBUG
                             x2goDebug<<"error writing "<<nbytes<<" to tcp socket"<<tcpSocket<<endl;
+#endif
                             emit ioErr ( channelConnections[i].creator,errMsg,"" );
                             finalize ( i );
                             continue;
                         }
-//                      x2goDebug<<"wrote "<<nbytes<<" to tcp socket "<<tcpSocket<<endl;
+#ifdef DEBUG
+                        //                      x2goDebug<<"wrote "<<nbytes<<" to tcp socket "<<tcpSocket<<endl;
+#endif
                     }
                     else
                     {
@@ -1253,7 +1313,9 @@ void SshMasterConnection::channelLoop()
                     QString err=ssh_get_error ( my_ssh_session );
                     QString errorMsg=tr ( "error reading channel" );
                     emit ioErr ( channelConnections[i].creator, errorMsg, err );
+#ifdef DEBUG
                     x2goDebug<<errorMsg<<" - "<<err<<endl;
+#endif
                     finalize ( i );
                     continue;
                 }
@@ -1275,7 +1337,9 @@ void SshMasterConnection::channelLoop()
             if ( FD_ISSET ( tcpSocket,&rfds ) )
             {
                 nbytes = recv ( tcpSocket, buffer, sizeof ( buffer )-1,0 );
-//                  x2goDebug<<nbytes<<" bytes from tcp socket "<<tcpSocket<<endl;
+#ifdef DEBUG
+                //                  x2goDebug<<nbytes<<" bytes from tcp socket "<<tcpSocket<<endl;
+#endif
                 if ( nbytes > 0 )
                 {
                     if ( channel_write ( channel, buffer, nbytes ) !=nbytes )
@@ -1283,11 +1347,15 @@ void SshMasterConnection::channelLoop()
                         QString err=ssh_get_error ( my_ssh_session );
                         QString errorMsg=tr ( "channel_write failed" );
                         emit ioErr ( channelConnections[i].creator, errorMsg, err );
+#ifdef DEBUG
                         x2goDebug<<errorMsg<<" - "<<err<<endl;
+#endif
                         finalize ( i );
                         continue;
                     }
-//                      x2goDebug<<nbytes<<" bytes wrote to channel"<<channel<<endl;
+#ifdef DEBUG
+                    //                      x2goDebug<<nbytes<<" bytes wrote to channel"<<channel<<endl;
+#endif
                 }
                 if ( nbytes < 0 )
                 {
@@ -1295,7 +1363,9 @@ void SshMasterConnection::channelLoop()
                     QString err="";
                     QString errorMsg=tr ( "error reading tcp socket" );
                     emit ioErr ( channelConnections[i].creator, errorMsg, err );
+#ifdef DEBUG
                     x2goDebug<<errorMsg<<" - "<<err<<endl;
+#endif
                     finalize ( i );
                     continue;
                 }
diff --git a/x2goclientconfig.h b/x2goclientconfig.h
index 341c1f7..e857e53 100644
--- a/x2goclientconfig.h
+++ b/x2goclientconfig.h
@@ -23,7 +23,7 @@
 #include <qglobal.h>
 
 
-// #define LOGFILE QDir::homePath()+"/x2goclient.log"
+//#define LOGFILE QDir::homePath()+"/x2goclient.log"
 
 #if !defined Q_OS_WIN
 #define USELDAP
diff --git a/x2gologdebug.cpp b/x2gologdebug.cpp
index c21c1c3..0fd8ada 100644
--- a/x2gologdebug.cpp
+++ b/x2gologdebug.cpp
@@ -28,7 +28,6 @@ X2goLogDebug::X2goLogDebug():QTextStream()
     }
 }
 
-
 X2goLogDebug::~X2goLogDebug()
 {
  	logFile.close();
diff --git a/x2gologdebug.h b/x2gologdebug.h
index b35f783..ded6d8d 100644
--- a/x2gologdebug.h
+++ b/x2gologdebug.h
@@ -20,21 +20,50 @@
 #include <QTextStream>
 #include <QFile>
 #include "x2goclientconfig.h"
+#include "onmainwindow.h"
 /**
 	@author Oleksandr Shneyder <oleksandr.shneyder at obviously-nice.de>
 */
+
+#define __x2goPrefix      "x2go-"
+#define __x2goDebugPrefix "DEBUG-"
+#define __x2goInfoPrefix  "INFO-"
+#define __x2goWarningPrefix  "WARNING-"
+#define __x2goErrorPrefix "ERROR-"
+#define __x2goPostfix     "> "
+
 #ifdef LOGFILE
 class X2goLogDebug: public QTextStream
 {
 public:
     X2goLogDebug();
     ~X2goLogDebug();
+
  private:
      QFile logFile;
 };
-#define x2goDebug X2goLogDebug()
+
+#define __x2goDebug   X2goLogDebug()<<"\n"
+#define __x2goInfo    X2goLogDebug()<<"\n"
+#define __x2goWarning X2goLogDebug()<<"\n"
+#define __x2goError   X2goLogDebug()<<"\n"
+
 #else
+
 #include <QDebug>
-#define x2goDebug qDebug()
+
+#define __x2goDebug   qDebug().nospace()
+#define __x2goInfo    qDebug().nospace()
+#define __x2goWarning qWarning().nospace()
+#define __x2goError   qCritical().nospace()
+
 #endif //LOGFILE
+
+#define x2goDebugf        __x2goDebug  <<__x2goPrefix<<__x2goDebugPrefix  <<__FILE__<<":"<<__LINE__<<__x2goPostfix
+#define x2goInfof(NUM)    __x2goInfo   <<__x2goPrefix<<__x2goInfoPrefix   <<NUM                    <<__x2goPostfix
+#define x2goWarningf(NUM) __x2goWarning<<__x2goPrefix<<__x2goWarningPrefix<<NUM                    <<__x2goPostfix
+#define x2goErrorf(NUM)   __x2goError  <<__x2goPrefix<<__x2goErrorPrefix  <<NUM                    <<__x2goPostfix
+
+#define x2goDebug      if (ONMainWindow::debugging) x2goDebugf
+
 #endif //X2GOLOGDEBUG_H


hooks/post-receive
-- 
x2goclient.git (X2Go Client)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "x2goclient.git" (X2Go Client).




More information about the x2go-commits mailing list