[X2Go-Commits] [x2goclient] 01/01: Support for rootless X2GoKdrive sessions.
git-admin at x2go.org
git-admin at x2go.org
Thu Feb 17 19:44:32 CET 2022
This is an automated email from the git hooks/post-receive script.
x2go pushed a commit to branch master
in repository x2goclient.
commit 4eed9dc4beff2c1c53efbaf7861df484684b3bf6
Author: Oleksandr Shneyder <o.shneyder at phoca-gmbh.de>
Date: Thu Feb 17 12:44:22 2022 -0600
Support for rootless X2GoKdrive sessions.
---
debian/changelog | 1 +
src/onmainwindow.cpp | 45 +++++++++++++++++++++++++++++++++++----------
src/onmainwindow.h | 2 +-
3 files changed, 37 insertions(+), 11 deletions(-)
diff --git a/debian/changelog b/debian/changelog
index ec6f587..379d20b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -33,6 +33,7 @@ x2goclient (4.1.2.3-0x2go1) UNRELEASED; urgency=medium
- Fix loading HTTP icon in pass dialog in broker mode.
- Replace QFont::Thin with 0 to keep compatibility with Qt4.
- Add special ACL for exported directories in Windows client.
+ - Support for rootless X2GoKdrive sessions.
[ Ryan Schmidt ]
* New upstream version (4.1.2.3):
diff --git a/src/onmainwindow.cpp b/src/onmainwindow.cpp
index bf6bc26..6eb2680 100644
--- a/src/onmainwindow.cpp
+++ b/src/onmainwindow.cpp
@@ -4204,6 +4204,10 @@ x2goSession ONMainWindow::getSessionFromString ( const QString& string )
{
s.sessionType=x2goSession::KDRIVE;
}
+ if ( st=='A')
+ {
+ s.sessionType=x2goSession::ROOTLESSKDRIVE;
+ }
QString command=cmdinfo.mid ( 1 );
if ( command.length() >0 )
s.command=command;
@@ -4632,6 +4636,10 @@ void ONMainWindow::startNewSession()
}
if(kdrive)
sessTypeStr="K ";
+ if((rootless||resumingSession.published) && kdrive)
+ {
+ sessTypeStr="A ";
+ }
QString dpiEnv;
QString xdmcpEnv;
QString xinerama_env = "X2GO_XINERAMA=";
@@ -4844,12 +4852,12 @@ void ONMainWindow::resumeSession ( const x2goSession& s )
xorgMode=SAPP;
xorgWidth=QString::number(width);
xorgHeight=QString::number(height);
- if(s.sessionType == x2goSession::KDRIVE)
+ if(s.sessionType == x2goSession::KDRIVE || s.sessionType == x2goSession::ROOTLESSKDRIVE)
{
x2goDebug<<"KDRIVE session, don't start X-Server";
slotSetWinServersReady();
}
- if (! startXorgOnStart && (s.sessionType != x2goSession::KDRIVE))
+ if (! startXorgOnStart && (s.sessionType != x2goSession::KDRIVE) && (s.sessionType != x2goSession::ROOTLESSKDRIVE))
startXOrg();
// #endif
#else /* defined (Q_OS_WIN) */
@@ -4917,7 +4925,7 @@ void ONMainWindow::resumeSession ( const x2goSession& s )
type="query";
#endif
- if (s.sessionId.indexOf("RPUBLISHED")!=-1)
+ if (s.sessionId.indexOf("RPUBLISHED")!=-1 || s.sessionId.indexOf("APUBLISHED")!=-1)
{
resumingSession.published=true;
sbApps->setDisabled(true);
@@ -5089,6 +5097,8 @@ void ONMainWindow::selectSession ( QStringList& sessions )
type=tr ( "shadow session" );
if ( s.sessionType==x2goSession::KDRIVE )
type=tr ( "X2GoKDrive session" );
+ if ( s.sessionType==x2goSession::ROOTLESSKDRIVE )
+ type=tr ( "X2GoKDrive single application" );
item= new QStandardItem ( type );
@@ -5646,6 +5656,7 @@ void ONMainWindow::slotRetResumeSess ( bool result,
bool sound=true;
bool kdrive=false;
+ bool rootless=false;
int sndSystem=PULSE;
QString sndPort;
#if !defined (Q_OS_WIN) && !defined (Q_OS_DARWIN)
@@ -5686,6 +5697,10 @@ void ONMainWindow::slotRetResumeSess ( bool result,
kdrive=st->setting()->value ( sid+"/kdrive",
( QVariant ) false ).toBool();
+
+ rootless=st->setting()->value ( sid+"/rootless",
+ ( QVariant ) false ).toBool();
+
sound=st->setting()->value ( sid+"/sound",
( QVariant ) true ).toBool();
QString sndsys=st->setting()->value (
@@ -5776,6 +5791,10 @@ void ONMainWindow::slotRetResumeSess ( bool result,
{
resumingSession.sessionType=x2goSession::KDRIVE;
}
+ if(kdrive&&(rootless||resumingSession.published))
+ {
+ resumingSession.sessionType=x2goSession::ROOTLESSKDRIVE;
+ }
resumingSession.server=host;
resumingSession.crTime=QDateTime::currentDateTime().toString (
Qt::ISODate );
@@ -5809,7 +5828,7 @@ void ONMainWindow::slotRetResumeSess ( bool result,
else
{
- if(resumingSession.sessionType==x2goSession::KDRIVE)
+ if(resumingSession.sessionType==x2goSession::KDRIVE||resumingSession.sessionType==x2goSession::ROOTLESSKDRIVE)
{
qDebug()<<"resuming kdrive session";
}
@@ -6150,7 +6169,7 @@ void ONMainWindow::slotTunnelOk(int)
xmodExecuted=false;
- qDebug()<<"RESUMING SESSION is KDRIVE: "<<(resumingSession.sessionType== x2goSession::KDRIVE);
+ qDebug()<<"RESUMING SESSION is KDRIVE: "<<((resumingSession.sessionType== x2goSession::KDRIVE)||(resumingSession.sessionType== x2goSession::ROOTLESSKDRIVE));
nxproxy=new QProcess;
proxyErrString="";
@@ -6177,7 +6196,7 @@ void ONMainWindow::slotTunnelOk(int)
// the provided one.
QString disp="0";
- if(resumingSession.sessionType!= x2goSession::KDRIVE)
+ if(resumingSession.sessionType!= x2goSession::KDRIVE && resumingSession.sessionType!= x2goSession::ROOTLESSKDRIVE)
{
disp=getXDisplay();
if ( disp==QString::null )
@@ -6248,7 +6267,7 @@ void ONMainWindow::slotTunnelOk(int)
#endif //Q_OS_DARWIN
- if(resumingSession.sessionType==x2goSession::KDRIVE)
+ if(resumingSession.sessionType==x2goSession::KDRIVE || resumingSession.sessionType==x2goSession::ROOTLESSKDRIVE)
{
bool randr=false;
bool fs=false;
@@ -6312,6 +6331,10 @@ void ONMainWindow::slotTunnelOk(int)
}
options<<"--connect"<<"localhost"<<"--port"<<localGraphicPort<<"--title"<<resumingSession.sessionId<<"-S"<<"nx/nx,options="+dirpath+
"/options:"+resumingSession.display<<"--selection"<<clipboard;
+ if(resumingSession.sessionType==x2goSession::ROOTLESSKDRIVE)
+ {
+ options << "--rootless";
+ }
if(randr)
{
options<<"--randr";
@@ -6349,7 +6372,9 @@ void ONMainWindow::slotTunnelOk(int)
#ifdef Q_OS_WIN
if (xorgMode==WIN) {
#endif
- proxyWinTimer->start ( 300 );
+//don't search proxy for kdrive sessions
+ if(!(resumingSession.sessionType==x2goSession::KDRIVE || resumingSession.sessionType==x2goSession::ROOTLESSKDRIVE))
+ proxyWinTimer->start ( 300 );
#ifdef Q_OS_WIN
}
#endif
@@ -11879,7 +11904,7 @@ void ONMainWindow::slotFindProxyWin()
setProxyWinTitle();
proxyWinTimer->stop();
- if (!embedMode && !(resumingSession.sessionType==x2goSession::KDRIVE))
+ if (!embedMode && !(resumingSession.sessionType==x2goSession::KDRIVE) && !(resumingSession.sessionType==x2goSession::ROOTLESSKDRIVE))
{
if (!useLdap)
{
@@ -11947,7 +11972,7 @@ void ONMainWindow::slotFindProxyWin()
#ifdef Q_OS_WIN
x2goDebug<<"Maximize proxy window: "<<maximizeProxyWin;
- if ( !startEmbedded &&!(resumingSession.sessionType==x2goSession::KDRIVE))
+ if ( !startEmbedded &&!(resumingSession.sessionType==x2goSession::KDRIVE)&&!(resumingSession.sessionType==x2goSession::ROOTLESSKDRIVE))
{
if ( maximizeProxyWin )
{
diff --git a/src/onmainwindow.h b/src/onmainwindow.h
index f53c229..b69b4ea 100644
--- a/src/onmainwindow.h
+++ b/src/onmainwindow.h
@@ -152,7 +152,7 @@ struct x2goSession
bool published;
int colorDepth;
bool fullscreen;
- enum {DESKTOP,ROOTLESS,SHADOW, KDRIVE} sessionType;
+ enum {DESKTOP,ROOTLESS,SHADOW, KDRIVE, ROOTLESSKDRIVE} sessionType;
QString command;
void operator = ( const x2goSession& s );
};
--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/x2goclient.git
More information about the x2go-commits
mailing list