Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • nightly/20250605.0
  • beta/202506051039
  • beta/202506051002
  • beta/202506041611
  • beta/202506041335
  • beta/202505231812
  • stable/20250523.0
  • nightly/20250523.0
  • nightly/20250515.0
  • nightly/20250510.0
  • nightly/20250509.1
  • nightly/20250509.0
  • stable/20250430.1
  • stable/20250430.0
  • beta/202504301614
  • nightly/20250430.0
  • stable/20250424.1
  • beta/202504241506
  • stable/20250424.0
  • nightly/20250424.1
21 results

jami-client-qt

  • Clone with SSH
  • Clone with HTTPS
  • Mingrui Zhang's avatar
    Ming Rui Zhang authored
    Gitlab: #320
    Change-Id: Ia2a16a05be3fd6452a39df999660a5c8440eea13
    2e605683
    History

    Jami-qt

    jami-logo

    Share, freely and privately

    Introduction

    Jami provides all its users a universal communication tool, autonomous, free, secure and built on a distributed architecture thus requiring no authority or central server to function.

    jami-qt is the cross platform client for Jami. For now, it's mainly used for the Windows platform and is not tested on other platforms.

    For more information about the jami project, see the following:

    Getting involved

    Notes

    Build instructions

    Note: This project is quite new, and still need some work for the build integration.

    Dependencies

    This client is only the graphical part, you will need to also build the daemon and LRC (the library containing the logic for desktop clients). Because of this, the recommended way is to clone our meta-repository containing all submodules needed.

    In order to use the Qt Client it is necessary to have the Qt version 5.14 or higher. If your system does not have it you can install it from sources or download the binary installer.

    Build all projects

    git clone https://review.jami.net/ring-project

    Jami installer uses python3. If it's not installed, please install it:

    cd ring-project/
    ./make-ring.py --init

    Then you will need to install dependencies:

    • For GNU/Linux
    ./make-ring.py --dependencies --qt # needs sudo

    Then, you can build daemon, lrc and client-qt with:

    ./make-ring.py --install --qt

    And you will have the daemon in daemon/bin/dring and the client in client-qt/build-local/jami-qt. You also can run it with

    If you use a Qt version that is not wide-system installed you need to specify its path after the --qt flag, i. e., `./make-ring.py --install --qt /home//Qt/5.15.0/gcc_64

    ./make-ring.py --run --qt

    Build only the client

    cd client-qt
    mkdir build
    cd build
    cmake .. -DQT5_VER=5.15.0 -DQT5_PATH=/home/<username>/Qt/5.15.0/gcc_64 -DLRC=<path_to_lrc> -DCMAKE_INSTALL_PREFIX=<installation_path>
    make -j

    Variables QT5_VER and QT5_PATH are used to specify version and path for a custom installation of Qt.

    If lrc library is installed in a custom directory you can set its path with the variable LRC. Additionally you can specify built library location with LRCLIB (otherwise it will seach inside LRC with the suffixes /lib, /build and /build-local).

    After the build has finished, you are finally ready to launch jami-qt in your build directory.

    If you want to install it to the path provided by CMAKE_INSTALL_PREFIX you can run:

    make install

    If you want more details, or separately build other projects you can check this page.

    Building On Native Windows

    Only 64-bit MSVC build can be compiled.

    Note: command ./make-ring.py --init is not required on the Windows build

    Setup Before Building:

    • Download Qt (Open Source)

      Prebuild Module
      Components: msvc2017_64 Qt WebEngine
    • Download Visual Studio (version >= 2015)

    • Install Qt Vs Tools under extensions, and configure msvc2017_64 path under Qt Options

      Qt Version SDK Toolset
      Minimum requirement: 5.9.4 10.0.16299.0 V141
    • Install Python3 for Windows

    Start Building

    • Using Command Prompt
        git clone https://review.jami.net/ring-project
        cd ring-project/
        git submodule update --init daemon lrc client-windows
        git submodule update --recursive --remote daemon lrc client-windows
    • Using Elevated Command Prompt
        python make-ring.py --dependencies

    Note:

    1. This command will install chocolatey which may require you to restart the Command Prompt to be able to use it.
    2. This command will install msys2 (64 bit) by using chocolatey command which may cause issues below:
      a. Choco may require you to restart the Command Prompt after finishing installing msys2.
      b. Only if you have already installed msys2 (64 bit) under the default installation folder, we will use the existing one.
    3. This command will install strawberry perl by using chocolatey command which may fail if you have already installed it.
    4. This command will install cmake by using chocolatey command which will not add cmake into PATH (environment variable).

    The issue 1, 2(a), 3 can be solved by restarting the Command Prompt under Administrator right and re-run the command.
    The issue 3 can be solved by uninstalling your current strawberry perl and re-run the command.
    The issue 4 can be solved by adding the location of the cmake.exe into PATH.

    • Using a new Non-Elevated Command Prompt
        python make-ring.py --install
    • Then you should be able to use the Visual Studio Solution file in client-windows folder (Configuration = Release, Platform = x64)

    Note:
    To control the toolset and the sdk version that are used by msbuild, you can use --toolset and --sdk options
    To control which Qt version should be used (qmake, windeployqt), uou can use --qtver option
    By default: toolset=v141, sdk=10.0.16299.0, qtver=5.9.4
    For example:

        python make-ring.py --install --toolset v142 --sdk 10.0.18362.0 --qtver 5.14.0

    Build Module individually

    • Jami-qt also support building each module (daemon, lrc, jami-qt) seperately

    Daemon

    • Make sure that dependencies is built by make-ring.py
    • On MSVC folder (ring-project\daemon\MSVC):
        cmake -DCMAKE_CONFIGURATION_TYPES="ReleaseLib_win32" -DCMAKE_VS_PLATFORM_NAME="x64" -G "Visual Studio 16 2019" -A x64 -T '$(DefaultPlatformToolset)' ..
        python winmake.py -b daemon
    • This will generate a .lib file in the path of ring-project\daemon\MSVC\x64\ReleaseLib_win32\bin

    Note: each dependencies contrib for daemon can also be updated individually
    For example:

        python winmake.py -b opendht

    Lrc

    • Make sure that daemon is built first
        cd lrc
        python make-lrc.py -gb

    Jami-qt

    • Make sure that daemon, lrc are built first
        cd client-windows
        python make-client.py -d
        python make-client.py -b
        powershell -ExecutionPolicy Unrestricted -File copy-runtime-files.ps1

    Note

    • For all python scripts, both --toolset and --sdk options are available.
    • For more available options, run scripts with -h option.
    • --qtver option is available on make-lrc.py and make-client.py.

    Packaging On Native Windows

    • To be able to generate a msi package, first download and install Wixtoolset.
    • In Visual Studio, download WiX Toolset Visual Studio Extension.
    • Build client-windows project first, then the JamiInstaller project, msi package should be stored in ring-project\client-windows\JamiInstaller\bin\Release

    Debugging

    Compile the client with BUILD=Debug and compile LibRingClient with -DCMAKE_BUILD_TYPE=Debug

    License

    Copyright (C) 2020-2021 Savoir-faire Linux Inc.

    Jami is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

    See COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html for the full GPLv3 license.