Date: Sunday, January 4, 2015 @ 10:18:36 Author: andrea Revision: 228412
archrelease: copy trunk to extra-i686, extra-x86_64 Added: kdenetwork-krdc/repos/extra-i686/PKGBUILD (from rev 228411, kdenetwork-krdc/trunk/PKGBUILD) kdenetwork-krdc/repos/extra-i686/freerdp12.patch (from rev 228411, kdenetwork-krdc/trunk/freerdp12.patch) kdenetwork-krdc/repos/extra-x86_64/PKGBUILD (from rev 228411, kdenetwork-krdc/trunk/PKGBUILD) kdenetwork-krdc/repos/extra-x86_64/freerdp12.patch (from rev 228411, kdenetwork-krdc/trunk/freerdp12.patch) Deleted: kdenetwork-krdc/repos/extra-i686/PKGBUILD kdenetwork-krdc/repos/extra-x86_64/PKGBUILD ------------------------------+ /PKGBUILD | 82 +++++++++ extra-i686/PKGBUILD | 33 --- extra-i686/freerdp12.patch | 345 +++++++++++++++++++++++++++++++++++++++++ extra-x86_64/PKGBUILD | 33 --- extra-x86_64/freerdp12.patch | 345 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 772 insertions(+), 66 deletions(-) Deleted: extra-i686/PKGBUILD =================================================================== --- extra-i686/PKGBUILD 2015-01-04 09:18:11 UTC (rev 228411) +++ extra-i686/PKGBUILD 2015-01-04 09:18:36 UTC (rev 228412) @@ -1,33 +0,0 @@ -# $Id$ -# Maintainer: Andrea Scarpino <and...@archlinux.org> - -pkgname=kdenetwork-krdc -pkgver=4.14.3 -pkgrel=1 -pkgdesc='Remote Desktop Client' -url='http://kde.org/applications/internet/krdc/' -arch=('i686' 'x86_64') -license=('GPL' 'LGPL' 'FDL') -groups=('kde' 'kdenetwork') -depends=('kdebase-runtime' 'telepathy-qt') -makedepends=('cmake' 'automoc4' 'libvncserver' 'freerdp') -optdepends=('libvncserver: VNC support' - 'freerdp: RDP support' - 'kdebase-keditbookmarks: to edit bookmarks') -source=("http://download.kde.org/stable/${pkgver}/src/krdc-${pkgver}.tar.xz") -sha1sums=('e18b48757ab35b51520fd2972e498fc24f6b62ad') - -build() { - mkdir build - cd build - cmake ../krdc-${pkgver} \ - -DCMAKE_BUILD_TYPE=Release \ - -DKDE4_BUILD_TESTS=OFF \ - -DCMAKE_INSTALL_PREFIX=/usr - make -} - -package() { - cd build - make DESTDIR=$pkgdir install -} Copied: kdenetwork-krdc/repos/extra-i686/PKGBUILD (from rev 228411, kdenetwork-krdc/trunk/PKGBUILD) =================================================================== --- extra-i686/PKGBUILD (rev 0) +++ extra-i686/PKGBUILD 2015-01-04 09:18:36 UTC (rev 228412) @@ -0,0 +1,41 @@ +# $Id$ +# Maintainer: Andrea Scarpino <and...@archlinux.org> + +pkgname=kdenetwork-krdc +pkgver=4.14.3 +pkgrel=2 +pkgdesc='Remote Desktop Client' +url='http://kde.org/applications/internet/krdc/' +arch=('i686' 'x86_64') +license=('GPL' 'LGPL' 'FDL') +groups=('kde' 'kdenetwork') +depends=('kdebase-runtime' 'telepathy-qt') +makedepends=('cmake' 'automoc4' 'libvncserver' 'freerdp') +optdepends=('libvncserver: VNC support' + 'freerdp: RDP support' + 'kdebase-keditbookmarks: to edit bookmarks') +source=("http://download.kde.org/stable/${pkgver}/src/krdc-${pkgver}.tar.xz" + 'freerdp12.patch') +sha1sums=('e18b48757ab35b51520fd2972e498fc24f6b62ad' + 'fe7478f60d9b4d8fa71cec104669abb6802efc1a') + +prepare() { + mkdir build + + cd krdc-${pkgver} + patch -p1 -i "${srcdir}"/freerdp12.patch +} + +build() { + cd build + cmake ../krdc-${pkgver} \ + -DCMAKE_BUILD_TYPE=Release \ + -DKDE4_BUILD_TESTS=OFF \ + -DCMAKE_INSTALL_PREFIX=/usr + make +} + +package() { + cd build + make DESTDIR=$pkgdir install +} Copied: kdenetwork-krdc/repos/extra-i686/freerdp12.patch (from rev 228411, kdenetwork-krdc/trunk/freerdp12.patch) =================================================================== --- extra-i686/freerdp12.patch (rev 0) +++ extra-i686/freerdp12.patch 2015-01-04 09:18:36 UTC (rev 228412) @@ -0,0 +1,345 @@ +From: Tony Murray <murrayt...@gmail.com> +Date: Fri, 02 Jan 2015 15:36:40 +0000 +Subject: Support for FreeRDP 1.0.2 and newer. Including 1.1 and 1.2. +X-Git-Url: http://quickgit.kde.org/?p=krdc.git&a=commitdiff&h=a9e514b29b5611e01c2c024157d36eaf416e0c5a +--- +Support for FreeRDP 1.0.2 and newer. Including 1.1 and 1.2. + +FEATURE: +BUG: 341284 +FIXED-IN: 14.12.1 +REVIEW: 115059 +--- + + +--- a/rdp/rdpview.cpp ++++ b/rdp/rdpview.cpp +@@ -146,102 +146,205 @@ + } + } + ++ // Check the version of FreeRDP so we can use pre-1.1 switches if needed ++ QProcess *xfreeRDPVersionCheck = new QProcess(this); ++ xfreeRDPVersionCheck->start("xfreerdp", QStringList("--version")); ++ xfreeRDPVersionCheck->waitForFinished(); ++ QString versionOutput = xfreeRDPVersionCheck->readAllStandardOutput(); ++ xfreeRDPVersionCheck->deleteLater(); ++ + m_process = new QProcess(m_container); + + QStringList arguments; + +- int width, height; +- if (m_hostPreferences->width() > 0) { +- width = m_hostPreferences->width(); +- height = m_hostPreferences->height(); ++ if (versionOutput.contains(QLatin1String(" 1.0"))) { ++ kDebug(5012) << "Use FreeRDP 1.0 compatible arguments"; ++ ++ int width, height; ++ if (m_hostPreferences->width() > 0) { ++ width = m_hostPreferences->width(); ++ height = m_hostPreferences->height(); ++ } else { ++ width = this->parentWidget()->size().width(); ++ height = this->parentWidget()->size().height(); ++ } ++ arguments << "-g" << QString::number(width) + 'x' + QString::number(height); ++ ++ arguments << "-k" << keymapToXfreerdp(m_hostPreferences->keyboardLayout()); ++ ++ if (!m_url.userName().isEmpty()) { ++ // if username contains a domain, it needs to be set with another parameter ++ if (m_url.userName().contains('\\')) { ++ const QStringList splittedName = m_url.userName().split('\\'); ++ arguments << "-d" << splittedName.at(0); ++ arguments << "-u" << splittedName.at(1); ++ } else { ++ arguments << "-u" << m_url.userName(); ++ } ++ } else { ++ arguments << "-u" << ""; ++ } ++ ++ arguments << "-D"; // request the window has no decorations ++ arguments << "-X" << QString::number(m_container->winId()); ++ arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 1) * 8); ++ ++ switch (m_hostPreferences->sound()) { ++ case 1: ++ arguments << "-o"; ++ break; ++ case 0: ++ arguments << "--plugin" << "rdpsnd"; ++ break; ++ case 2: ++ default: ++ break; ++ } ++ ++ if (!m_hostPreferences->shareMedia().isEmpty()) { ++ QStringList shareMedia; ++ shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + m_hostPreferences->shareMedia() << "--"; ++ arguments += shareMedia; ++ } ++ ++ QString performance; ++ switch (m_hostPreferences->performance()) { ++ case 0: ++ performance = 'm'; ++ break; ++ case 1: ++ performance = 'b'; ++ break; ++ case 2: ++ performance = 'l'; ++ break; ++ default: ++ break; ++ } ++ ++ arguments << "-x" << performance; ++ ++ if (m_hostPreferences->console()) { ++ arguments << "-0"; ++ } ++ ++ if (m_hostPreferences->remoteFX()) { ++ arguments << "--rfx"; ++ } ++ ++ if (!m_hostPreferences->extraOptions().isEmpty()) { ++ const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); ++ arguments += additionalArguments; ++ } ++ ++ // krdc has no support for certificate management yet; it would not be possbile to connect to any host: ++ // "The host key for example.com has changed" ... ++ // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." ++ arguments << "--ignore-certificate"; ++ ++ // clipboard sharing is activated in KRDC; user can disable it at runtime ++ arguments << "--plugin" << "cliprdr"; ++ ++ arguments << "-t" << QString::number(m_port); ++ arguments << m_host; ++ ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); ++ ++ arguments.removeLast(); // host must be last, remove and re-add it after the password ++ if (!m_url.password().isNull()) ++ arguments << "-p" << m_url.password(); ++ arguments << m_host; ++ + } else { +- width = this->parentWidget()->size().width(); +- height = this->parentWidget()->size().height(); +- } +- arguments << "-g" << QString::number(width) + 'x' + QString::number(height); +- +- arguments << "-k" << keymapToXfreerdp(m_hostPreferences->keyboardLayout()); +- +- if (!m_url.userName().isEmpty()) { +- // if username contains a domain, it needs to be set with another parameter +- if (m_url.userName().contains('\\')) { +- const QStringList splittedName = m_url.userName().split('\\'); +- arguments << "-d" << splittedName.at(0); +- arguments << "-u" << splittedName.at(1); ++ kDebug(5012) << "Use FreeRDP 1.1+ compatible arguments"; ++ ++ int width, height; ++ if (m_hostPreferences->width() > 0) { ++ width = m_hostPreferences->width(); ++ height = m_hostPreferences->height(); + } else { +- arguments << "-u" << m_url.userName(); +- } +- } else { +- arguments << "-u" << ""; +- } +- +- if (!m_url.password().isNull()) +- arguments << "-p" << m_url.password(); +- +- arguments << "-D"; // request the window has no decorations +- arguments << "-X" << QString::number(m_container->winId()); +- arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 1) * 8); +- +- switch (m_hostPreferences->sound()) { +- case 1: +- arguments << "-o"; +- break; +- case 0: +- arguments << "--plugin" << "rdpsnd"; +- break; +- case 2: +- default: +- break; +- } +- +- if (!m_hostPreferences->shareMedia().isEmpty()) { +- QStringList shareMedia; +- shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + m_hostPreferences->shareMedia() << "--"; +- arguments += shareMedia; +- } +- +- QString performance; +- switch (m_hostPreferences->performance()) { +- case 0: +- performance = 'm'; +- break; +- case 1: +- performance = 'b'; +- break; +- case 2: +- performance = 'l'; +- break; +- default: +- break; +- } +- +- arguments << "-x" << performance; +- +- if (m_hostPreferences->console()) { +- arguments << "-0"; +- } +- +- if (m_hostPreferences->remoteFX()) { +- arguments << "--rfx"; +- } +- +- if (!m_hostPreferences->extraOptions().isEmpty()) { +- const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); +- arguments += additionalArguments; +- } +- +- // krdc has no support for certificate management yet; it would not be possbile to connect to any host: +- // "The host key for example.com has changed" ... +- // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." +- arguments << "--ignore-certificate"; +- +- // clipboard sharing is activated in KRDC; user can disable it at runtime +- arguments << "--plugin" << "cliprdr"; +- +- arguments << "-t" << QString::number(m_port); +- arguments << m_host; +- +- kDebug(5012) << "Starting xfreerdp with arguments:" << arguments; ++ width = this->parentWidget()->size().width(); ++ height = this->parentWidget()->size().height(); ++ } ++ arguments << "-decorations"; ++ arguments << "/w:" + QString::number(width); ++ arguments << "/h:" + QString::number(height); ++ ++ arguments << "/kbd:" + keymapToXfreerdp(m_hostPreferences->keyboardLayout()); ++ ++ if (!m_url.userName().isEmpty()) { ++ // if username contains a domain, it needs to be set with another parameter ++ if (m_url.userName().contains('\\')) { ++ const QStringList splittedName = m_url.userName().split('\\'); ++ arguments << "/d:" + splittedName.at(0); ++ arguments << "/u:" + splittedName.at(1); ++ } else { ++ arguments << "/u:" + m_url.userName(); ++ } ++ } else { ++ arguments << "/u:"; ++ } ++ ++ arguments << "/parent-window:" + QString::number(m_container->winId()); ++ arguments << "/bpp:" + QString::number((m_hostPreferences->colorDepth() + 1) * 8); ++ arguments << "/audio-mode:" + QString::number(m_hostPreferences->sound()); ++ ++ if (!m_hostPreferences->shareMedia().isEmpty()) { ++ QStringList shareMedia; ++ shareMedia << "/drive:media," + m_hostPreferences->shareMedia(); ++ arguments += shareMedia; ++ } ++ ++ QString performance; ++ switch (m_hostPreferences->performance()) { ++ case 0: ++ performance = "modem"; ++ break; ++ case 1: ++ performance = "broadband"; ++ break; ++ case 2: ++ performance = "lan"; ++ break; ++ default: ++ break; ++ } ++ ++ arguments << "/network:" + performance; ++ ++ if (m_hostPreferences->console()) { ++ arguments << "/admin"; ++ } ++ ++ if (m_hostPreferences->remoteFX()) { ++ arguments << "/rfx"; ++ } ++ ++ if (!m_hostPreferences->extraOptions().isEmpty()) { ++ const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); ++ arguments += additionalArguments; ++ } ++ ++ // krdc has no support for certificate management yet; it would not be possbile to connect to any host: ++ // "The host key for example.com has changed" ... ++ // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." ++ arguments << "/cert-ignore"; ++ ++ // clipboard sharing is activated in KRDC; user can disable it at runtime ++ arguments << "+clipboard"; ++ ++ arguments << "/port:" + QString::number(m_port); ++ arguments << "/v:" + m_host; ++ ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); ++ ++ //avoid printing the password in debug ++ if (!m_url.password().isNull()) { ++ arguments << "/p:" + m_url.password(); ++ } ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); ++ ++ } + + setStatus(Connecting); + +@@ -302,7 +405,7 @@ + + void RdpView::processError(QProcess::ProcessError error) + { +- kDebug(5012) << "processError:" << error; ++ kDebug(5012) << error; + if (m_quitFlag) // do not try to show error messages while quitting (prevent crashes) + return; + +@@ -319,11 +422,11 @@ + void RdpView::receivedStandardError() + { + const QString output(m_process->readAllStandardError()); +- kDebug(5012) << "receivedStandardError:" << output; ++ kDebug(5012) << output; + QString line; + int i = 0; + while (!(line = output.section('\n', i, i)).isEmpty()) { +- ++ + // the following error is issued by freerdp because of a bug in freerdp 1.0.1 and below; + // see: https://github.com/FreeRDP/FreeRDP/pull/576 + //"X Error of failed request: BadWindow (invalid Window parameter) +@@ -345,7 +448,7 @@ + void RdpView::receivedStandardOutput() + { + const QString output(m_process->readAllStandardOutput()); +- kDebug(5012) << "receivedStandardOutput:" << output; ++ kDebug(5012) << output; + QString line; + int i = 0; + while (!(line = output.section('\n', i, i)).isEmpty()) { + Deleted: extra-x86_64/PKGBUILD =================================================================== --- extra-x86_64/PKGBUILD 2015-01-04 09:18:11 UTC (rev 228411) +++ extra-x86_64/PKGBUILD 2015-01-04 09:18:36 UTC (rev 228412) @@ -1,33 +0,0 @@ -# $Id$ -# Maintainer: Andrea Scarpino <and...@archlinux.org> - -pkgname=kdenetwork-krdc -pkgver=4.14.3 -pkgrel=1 -pkgdesc='Remote Desktop Client' -url='http://kde.org/applications/internet/krdc/' -arch=('i686' 'x86_64') -license=('GPL' 'LGPL' 'FDL') -groups=('kde' 'kdenetwork') -depends=('kdebase-runtime' 'telepathy-qt') -makedepends=('cmake' 'automoc4' 'libvncserver' 'freerdp') -optdepends=('libvncserver: VNC support' - 'freerdp: RDP support' - 'kdebase-keditbookmarks: to edit bookmarks') -source=("http://download.kde.org/stable/${pkgver}/src/krdc-${pkgver}.tar.xz") -sha1sums=('e18b48757ab35b51520fd2972e498fc24f6b62ad') - -build() { - mkdir build - cd build - cmake ../krdc-${pkgver} \ - -DCMAKE_BUILD_TYPE=Release \ - -DKDE4_BUILD_TESTS=OFF \ - -DCMAKE_INSTALL_PREFIX=/usr - make -} - -package() { - cd build - make DESTDIR=$pkgdir install -} Copied: kdenetwork-krdc/repos/extra-x86_64/PKGBUILD (from rev 228411, kdenetwork-krdc/trunk/PKGBUILD) =================================================================== --- extra-x86_64/PKGBUILD (rev 0) +++ extra-x86_64/PKGBUILD 2015-01-04 09:18:36 UTC (rev 228412) @@ -0,0 +1,41 @@ +# $Id$ +# Maintainer: Andrea Scarpino <and...@archlinux.org> + +pkgname=kdenetwork-krdc +pkgver=4.14.3 +pkgrel=2 +pkgdesc='Remote Desktop Client' +url='http://kde.org/applications/internet/krdc/' +arch=('i686' 'x86_64') +license=('GPL' 'LGPL' 'FDL') +groups=('kde' 'kdenetwork') +depends=('kdebase-runtime' 'telepathy-qt') +makedepends=('cmake' 'automoc4' 'libvncserver' 'freerdp') +optdepends=('libvncserver: VNC support' + 'freerdp: RDP support' + 'kdebase-keditbookmarks: to edit bookmarks') +source=("http://download.kde.org/stable/${pkgver}/src/krdc-${pkgver}.tar.xz" + 'freerdp12.patch') +sha1sums=('e18b48757ab35b51520fd2972e498fc24f6b62ad' + 'fe7478f60d9b4d8fa71cec104669abb6802efc1a') + +prepare() { + mkdir build + + cd krdc-${pkgver} + patch -p1 -i "${srcdir}"/freerdp12.patch +} + +build() { + cd build + cmake ../krdc-${pkgver} \ + -DCMAKE_BUILD_TYPE=Release \ + -DKDE4_BUILD_TESTS=OFF \ + -DCMAKE_INSTALL_PREFIX=/usr + make +} + +package() { + cd build + make DESTDIR=$pkgdir install +} Copied: kdenetwork-krdc/repos/extra-x86_64/freerdp12.patch (from rev 228411, kdenetwork-krdc/trunk/freerdp12.patch) =================================================================== --- extra-x86_64/freerdp12.patch (rev 0) +++ extra-x86_64/freerdp12.patch 2015-01-04 09:18:36 UTC (rev 228412) @@ -0,0 +1,345 @@ +From: Tony Murray <murrayt...@gmail.com> +Date: Fri, 02 Jan 2015 15:36:40 +0000 +Subject: Support for FreeRDP 1.0.2 and newer. Including 1.1 and 1.2. +X-Git-Url: http://quickgit.kde.org/?p=krdc.git&a=commitdiff&h=a9e514b29b5611e01c2c024157d36eaf416e0c5a +--- +Support for FreeRDP 1.0.2 and newer. Including 1.1 and 1.2. + +FEATURE: +BUG: 341284 +FIXED-IN: 14.12.1 +REVIEW: 115059 +--- + + +--- a/rdp/rdpview.cpp ++++ b/rdp/rdpview.cpp +@@ -146,102 +146,205 @@ + } + } + ++ // Check the version of FreeRDP so we can use pre-1.1 switches if needed ++ QProcess *xfreeRDPVersionCheck = new QProcess(this); ++ xfreeRDPVersionCheck->start("xfreerdp", QStringList("--version")); ++ xfreeRDPVersionCheck->waitForFinished(); ++ QString versionOutput = xfreeRDPVersionCheck->readAllStandardOutput(); ++ xfreeRDPVersionCheck->deleteLater(); ++ + m_process = new QProcess(m_container); + + QStringList arguments; + +- int width, height; +- if (m_hostPreferences->width() > 0) { +- width = m_hostPreferences->width(); +- height = m_hostPreferences->height(); ++ if (versionOutput.contains(QLatin1String(" 1.0"))) { ++ kDebug(5012) << "Use FreeRDP 1.0 compatible arguments"; ++ ++ int width, height; ++ if (m_hostPreferences->width() > 0) { ++ width = m_hostPreferences->width(); ++ height = m_hostPreferences->height(); ++ } else { ++ width = this->parentWidget()->size().width(); ++ height = this->parentWidget()->size().height(); ++ } ++ arguments << "-g" << QString::number(width) + 'x' + QString::number(height); ++ ++ arguments << "-k" << keymapToXfreerdp(m_hostPreferences->keyboardLayout()); ++ ++ if (!m_url.userName().isEmpty()) { ++ // if username contains a domain, it needs to be set with another parameter ++ if (m_url.userName().contains('\\')) { ++ const QStringList splittedName = m_url.userName().split('\\'); ++ arguments << "-d" << splittedName.at(0); ++ arguments << "-u" << splittedName.at(1); ++ } else { ++ arguments << "-u" << m_url.userName(); ++ } ++ } else { ++ arguments << "-u" << ""; ++ } ++ ++ arguments << "-D"; // request the window has no decorations ++ arguments << "-X" << QString::number(m_container->winId()); ++ arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 1) * 8); ++ ++ switch (m_hostPreferences->sound()) { ++ case 1: ++ arguments << "-o"; ++ break; ++ case 0: ++ arguments << "--plugin" << "rdpsnd"; ++ break; ++ case 2: ++ default: ++ break; ++ } ++ ++ if (!m_hostPreferences->shareMedia().isEmpty()) { ++ QStringList shareMedia; ++ shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + m_hostPreferences->shareMedia() << "--"; ++ arguments += shareMedia; ++ } ++ ++ QString performance; ++ switch (m_hostPreferences->performance()) { ++ case 0: ++ performance = 'm'; ++ break; ++ case 1: ++ performance = 'b'; ++ break; ++ case 2: ++ performance = 'l'; ++ break; ++ default: ++ break; ++ } ++ ++ arguments << "-x" << performance; ++ ++ if (m_hostPreferences->console()) { ++ arguments << "-0"; ++ } ++ ++ if (m_hostPreferences->remoteFX()) { ++ arguments << "--rfx"; ++ } ++ ++ if (!m_hostPreferences->extraOptions().isEmpty()) { ++ const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); ++ arguments += additionalArguments; ++ } ++ ++ // krdc has no support for certificate management yet; it would not be possbile to connect to any host: ++ // "The host key for example.com has changed" ... ++ // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." ++ arguments << "--ignore-certificate"; ++ ++ // clipboard sharing is activated in KRDC; user can disable it at runtime ++ arguments << "--plugin" << "cliprdr"; ++ ++ arguments << "-t" << QString::number(m_port); ++ arguments << m_host; ++ ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); ++ ++ arguments.removeLast(); // host must be last, remove and re-add it after the password ++ if (!m_url.password().isNull()) ++ arguments << "-p" << m_url.password(); ++ arguments << m_host; ++ + } else { +- width = this->parentWidget()->size().width(); +- height = this->parentWidget()->size().height(); +- } +- arguments << "-g" << QString::number(width) + 'x' + QString::number(height); +- +- arguments << "-k" << keymapToXfreerdp(m_hostPreferences->keyboardLayout()); +- +- if (!m_url.userName().isEmpty()) { +- // if username contains a domain, it needs to be set with another parameter +- if (m_url.userName().contains('\\')) { +- const QStringList splittedName = m_url.userName().split('\\'); +- arguments << "-d" << splittedName.at(0); +- arguments << "-u" << splittedName.at(1); ++ kDebug(5012) << "Use FreeRDP 1.1+ compatible arguments"; ++ ++ int width, height; ++ if (m_hostPreferences->width() > 0) { ++ width = m_hostPreferences->width(); ++ height = m_hostPreferences->height(); + } else { +- arguments << "-u" << m_url.userName(); +- } +- } else { +- arguments << "-u" << ""; +- } +- +- if (!m_url.password().isNull()) +- arguments << "-p" << m_url.password(); +- +- arguments << "-D"; // request the window has no decorations +- arguments << "-X" << QString::number(m_container->winId()); +- arguments << "-a" << QString::number((m_hostPreferences->colorDepth() + 1) * 8); +- +- switch (m_hostPreferences->sound()) { +- case 1: +- arguments << "-o"; +- break; +- case 0: +- arguments << "--plugin" << "rdpsnd"; +- break; +- case 2: +- default: +- break; +- } +- +- if (!m_hostPreferences->shareMedia().isEmpty()) { +- QStringList shareMedia; +- shareMedia << "--plugin" << "rdpdr" << "--data" << "disk:media:" + m_hostPreferences->shareMedia() << "--"; +- arguments += shareMedia; +- } +- +- QString performance; +- switch (m_hostPreferences->performance()) { +- case 0: +- performance = 'm'; +- break; +- case 1: +- performance = 'b'; +- break; +- case 2: +- performance = 'l'; +- break; +- default: +- break; +- } +- +- arguments << "-x" << performance; +- +- if (m_hostPreferences->console()) { +- arguments << "-0"; +- } +- +- if (m_hostPreferences->remoteFX()) { +- arguments << "--rfx"; +- } +- +- if (!m_hostPreferences->extraOptions().isEmpty()) { +- const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); +- arguments += additionalArguments; +- } +- +- // krdc has no support for certificate management yet; it would not be possbile to connect to any host: +- // "The host key for example.com has changed" ... +- // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." +- arguments << "--ignore-certificate"; +- +- // clipboard sharing is activated in KRDC; user can disable it at runtime +- arguments << "--plugin" << "cliprdr"; +- +- arguments << "-t" << QString::number(m_port); +- arguments << m_host; +- +- kDebug(5012) << "Starting xfreerdp with arguments:" << arguments; ++ width = this->parentWidget()->size().width(); ++ height = this->parentWidget()->size().height(); ++ } ++ arguments << "-decorations"; ++ arguments << "/w:" + QString::number(width); ++ arguments << "/h:" + QString::number(height); ++ ++ arguments << "/kbd:" + keymapToXfreerdp(m_hostPreferences->keyboardLayout()); ++ ++ if (!m_url.userName().isEmpty()) { ++ // if username contains a domain, it needs to be set with another parameter ++ if (m_url.userName().contains('\\')) { ++ const QStringList splittedName = m_url.userName().split('\\'); ++ arguments << "/d:" + splittedName.at(0); ++ arguments << "/u:" + splittedName.at(1); ++ } else { ++ arguments << "/u:" + m_url.userName(); ++ } ++ } else { ++ arguments << "/u:"; ++ } ++ ++ arguments << "/parent-window:" + QString::number(m_container->winId()); ++ arguments << "/bpp:" + QString::number((m_hostPreferences->colorDepth() + 1) * 8); ++ arguments << "/audio-mode:" + QString::number(m_hostPreferences->sound()); ++ ++ if (!m_hostPreferences->shareMedia().isEmpty()) { ++ QStringList shareMedia; ++ shareMedia << "/drive:media," + m_hostPreferences->shareMedia(); ++ arguments += shareMedia; ++ } ++ ++ QString performance; ++ switch (m_hostPreferences->performance()) { ++ case 0: ++ performance = "modem"; ++ break; ++ case 1: ++ performance = "broadband"; ++ break; ++ case 2: ++ performance = "lan"; ++ break; ++ default: ++ break; ++ } ++ ++ arguments << "/network:" + performance; ++ ++ if (m_hostPreferences->console()) { ++ arguments << "/admin"; ++ } ++ ++ if (m_hostPreferences->remoteFX()) { ++ arguments << "/rfx"; ++ } ++ ++ if (!m_hostPreferences->extraOptions().isEmpty()) { ++ const QStringList additionalArguments = KShell::splitArgs(m_hostPreferences->extraOptions()); ++ arguments += additionalArguments; ++ } ++ ++ // krdc has no support for certificate management yet; it would not be possbile to connect to any host: ++ // "The host key for example.com has changed" ... ++ // "Add correct host key in ~/.freerdp/known_hosts to get rid of this message." ++ arguments << "/cert-ignore"; ++ ++ // clipboard sharing is activated in KRDC; user can disable it at runtime ++ arguments << "+clipboard"; ++ ++ arguments << "/port:" + QString::number(m_port); ++ arguments << "/v:" + m_host; ++ ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); ++ ++ //avoid printing the password in debug ++ if (!m_url.password().isNull()) { ++ arguments << "/p:" + m_url.password(); ++ } ++ kDebug(5012) << "Starting xfreerdp with arguments: " << arguments.join(" "); ++ ++ } + + setStatus(Connecting); + +@@ -302,7 +405,7 @@ + + void RdpView::processError(QProcess::ProcessError error) + { +- kDebug(5012) << "processError:" << error; ++ kDebug(5012) << error; + if (m_quitFlag) // do not try to show error messages while quitting (prevent crashes) + return; + +@@ -319,11 +422,11 @@ + void RdpView::receivedStandardError() + { + const QString output(m_process->readAllStandardError()); +- kDebug(5012) << "receivedStandardError:" << output; ++ kDebug(5012) << output; + QString line; + int i = 0; + while (!(line = output.section('\n', i, i)).isEmpty()) { +- ++ + // the following error is issued by freerdp because of a bug in freerdp 1.0.1 and below; + // see: https://github.com/FreeRDP/FreeRDP/pull/576 + //"X Error of failed request: BadWindow (invalid Window parameter) +@@ -345,7 +448,7 @@ + void RdpView::receivedStandardOutput() + { + const QString output(m_process->readAllStandardOutput()); +- kDebug(5012) << "receivedStandardOutput:" << output; ++ kDebug(5012) << output; + QString line; + int i = 0; + while (!(line = output.section('\n', i, i)).isEmpty()) { +