C++ C XSLT Python HTML Roff Other
Clone or download
tfar Have StreamStack own the top and bottom layer

Builds, unit tests and integration tests pass on macOS with
clang 7.0 master.

Change-Id: I0db411e49339ccb2301edd1a16612cb1ad2c927c
Latest commit 091f6e5 Aug 2, 2018
Failed to load latest commit information.
.circleci Use separate jobs in CircleCI for coala, clang and gcc Jun 26, 2017
.settings Fixed a few avatar unit tests. Aug 21, 2010
.subl Don't ignore 3rdParty in sublime project. Apr 19, 2013
3rdParty Fix Python 3 compatibility of our SCons and tooling Python code Jul 12, 2018
Backport Make std:: make_unique available in gcc with c++11 Jul 7, 2017
BuildTools Allow scons2ninja to work with check=1 Jul 26, 2018
Documentation Restructure and reword project documentation Apr 29, 2016
Limber Convert hard tabs to four spaces in all our SConscript/*.py files Apr 25, 2016
QA Get rid of plural(s) Jul 14, 2017
Slimber Autofix boost-use-to-string clang-tidy warnings Jul 27, 2018
Sluift Fix Python 3 compatibility of our SCons and tooling Python code Jul 12, 2018
SwifTools Fix Code According to New clang warning (-Wobjc-messaging-id) Oct 2, 2017
Swift Autofix boost-use-to-string clang-tidy warnings Jul 27, 2018
Swiften Have StreamStack own the top and bottom layer Aug 2, 2018
.clang-format Add .clang-format configuration file for Swift projects Mar 17, 2016
.clang-tidy Add clang-tidy-fix target to Makefile Jul 30, 2018
.coafile Add Coala config for whitespace checking Jun 21, 2017
.cproject File Transfer refactoring. Sep 29, 2011
.gitignore Integrate googletest and googlemock libraries to 3rdParty Jan 11, 2017
.project Simple MUC invites. Oct 3, 2011
.project.vimrc Save recent status messages and allow easy setting. Dec 23, 2012
.scons2ninja.conf Fix scons2ninja tooling Feb 29, 2016
COPYING Update copyright year in COPYING and COPYING.gpl Jan 9, 2018
COPYING.dependencies Upgrade Breakpad to latest Oct 19, 2017
COPYING.gpl Update copyright year in COPYING and COPYING.gpl Jan 9, 2018
COPYING.thirdparty Add Bernhard M. Wiedemann to COPYING.thirdparty May 29, 2018
DEVELOPMENT.md Enable Emojis on Windows and Linux May 10, 2018
Makefile Add clang-tidy-fix target to Makefile Jul 30, 2018
README.md Enable Emojis on Windows and Linux May 10, 2018
SConstruct Convert hard tabs to four spaces in all our SConscript/*.py files Apr 25, 2016
scons Update SCons to version 2.4.0 Dec 17, 2015
scons.bat Update SCons to version 2.4.0 Dec 17, 2015


Swift - An elegant, secure, adaptable and intuitive XMPP Client

NOTE: Please download any releases from https://swift.im/releases.html, or as a Git checkout. The tarballs provided by GitHub will not build correctly.

Quick Start

Simply run ./scons Swift on Linux, or ./scons Swift qt=/Users/username/Qt_installation_path/Qt/5.4.2/5.4/clang_64 on Mac OS X or scons.bat Swift qt=C:\path\to\qt on Windows to build Swift.

This document only covers the general structure, project dependencies and building the Swift GUI application. More detailed information on building components, development, testing and packaging can be found in DEVELOPMENT.md.


  • Swiften: A cross-platform C++ XMPP library.
  • Swift: A Qt-based cross-platform desktop GUI client based on Swiften.
  • Sluift: A XMPP scripting environment based on Lua and Swiften.
  • Limber: A XMPP proxy server proxying zero-configuration (XEP-0174) to a connected XMPP client.
  • Slimber: Qt and Cocoa frontends for Limber.
  • SwiftTools: A collection of utilities for Swift.

Supported Platforms

Swift is known to work on Windows, Mac OS X, Linux and other Unix-like systems. However, we do not test the whole range of operating systems, especailly the huge amount of Linux and Unix-like systems. Swiften further has support for Android and iOS.

Platforms we officially test our releases on are listed below. We only test on default configurations and default desktops environments on Linux distributions.

  • Swift
    • Windows 7 to Windows 10
    • Mac OS X 10.10 and Mac OS X 10.11
    • Ubuntu 17.10 ( Artful Aardvark ) and Ubuntu 16.04 ( Xenial Xerus )
    • Debian 8 ( jessie )
    • Debian 9 ( stretch )

External Dependencies

The Swift repository includes some third party dependencies in the 3rdParty directory to easy development. Third party dependencies not included are listed below:

  • OpenSSL is required when building Swiften on Linux or Android
  • Python (2.5 <= version < 3)
  • Qt 5 and QtWebKit is required by Swift. Depending on platform, architecture, and compiler/IDE, you have the following options to fulfill this dependency:

General Build Instructions

The Swift projects use the SCons build system for build configuration and Build execution. SCons is one of the included third party dependencies.

To build all Swift components simply run SCons. On Mac OS X and Linux you run the ./scons command. On Windows you run the scons.bat command in a Visual Studio developer shell.

On multi-processor systems, i.e. most desktop and server machines, you can use the -j NUMBER_OF_PARALLEL_TASKS flag, or pass the max_jobs=1 to the scons command to speed up build time. The max_jobs=1 argument will set the number of parallel tasks to the number of CPU cores available. Note that each parallel task increases the memory requirements for the overall build process.

Platform Specific Instructions

Mac OS X


Building Swift

After installing Qt, simply run ./scons qt=/Users/username/Qt_installation_path/Qt/5.4.2/5.4/clang_64 Swift to build Swift. Afterwards you can find a runnable app bundle at Swift/QtUI/Swift.app.



  • Microsoft Visual Studio 2013 Express or later (C++11)
  • Windows SDK
  • Python (2.5 <= version < 3)
  • Qt Open Source Edition
    • QT 5.6 or newer to support emojis.

A binary release of Qt can be obtained from https://www.qt.io/download-open-source/. Make sure it matches the Visual Studio version you have installed.

Building Swift

Open a Developer Command Prompt. Depending on Windows version and Visual Studio version, this can be found in the Visual C++ Programs group, launch the Visual C++ command prompt, or search for Developer Command Prompt for VS2015 in the Windows start menu in more recent versions of Windows.

In the open command prompt add the Qt installation bin folder to the PATH environment variable, by running set PATH=C:\path\to\qt\msvc2015\bin;%PATH%. The Qt path is just an example; adjust it to your local installation.

Afterwards, in the command prompt, go to your checked out Swift directory and run scons.bat qt=C:\path\to\qt Swift to build Swift. If you want to build a 64-bit version of Swift, this requires to have 64-bit versions of all dependencies, attach win_target_arch=x64_64 to the previous scons command line.

To start Swift, simply change to Swift/QtUI and run Swift.exe.

Unix / Linux


On Linux Swift mainly depends on Qt and OpenSSL. To install all required dependencies take a look at ./BuildTools/InstallSwiftDependencies.sh. It is a script that supports various Linux distributions and will install the required system packages for building and running Swift.

On Unix/Linux SCons will use pkg-config to determine the compiler and linker flags for Qt 5.

Note: The Qt that comes with your Linux distribution might not be up to date and may have issues with some desktop environments.

Building Swift

To build Swift, simply open a terminal, go to the project root and run ./scons Swift. Afterwards you can start Swift by running ./Swift/QtUI/swift-im.

Installing Swift

To install Swift on the system (e.g. in the /usr/local directory), run ./scons SWIFT_INSTALLDIR=/usr/local /usr/local in the Swift project folder.