kepka/README.md

158 lines
6.4 KiB
Markdown

[![Version](https://badge.fury.io/gh/procxx%2Fkepka.svg)](https://github.com/procxx/kepka/releases)
[![Build Status](https://travis-ci.org/procxx/kepka.svg?branch=dev)](https://travis-ci.org/procxx/kepka)
[![Build status](https://ci.appveyor.com/api/projects/status/2kodvgwvlua3o6hp?svg=true
)](https://ci.appveyor.com/project/procxx/tdesktop)
# Kepka - Unofficial [Telegram Desktop][telegram_desktop] fork from pro.cxx community
This is the complete source code and the build instructions for the Kepka's alpha version based on the [Telegram API][telegram_api] and the [MTProto][telegram_proto] secure protocol.
## Key features and differences from upstream Telegram
* CMake-only build (with a bit of Conan/vcpkg/your package manager. No GYP or patched libraries required);
* Do not require GTK for dialogs and notifications. Kepka will use native from Qt;
* Removed some Qt private stuff from dependencies;
* Kepka can be built and dynamically linked against official Qt packages;
* Added support of native system-wide font settings. Kepka will inherit DE's configuration;
* Partial refactoring and code cleanup;
- reduced #includes coupling (increases compile times and improves program design);
- removed broken PCHs (they are only increases compile times and transform #includes into one big katamari);
- remove some Qt and custom types in favor of using C++ Standard Library types and classes;
- clang-format;
- fix almost all warnings;
* Ability to toggle "typographical" replaces (like replace << to « and another);
* Packages for Fedora and Arch Linux (packages for Debian and Ubuntu will be done soon);
* UI based on 1.1.21 before UI "mobilization" which degrades UX (e.g. group settings will be accessible from 5 clicks);
* Optional Yandex.Maps static API for geolocation preview (should be enabled at CMake configure time via `-DKEPKA_OPTION_USE_YANDEX_MAPS=ON` parameter);
* More features soon (see our [milestones](https://github.com/procxx/kepka/projects))!
## Build instructions
### Linux, macOS
What you need to have installed:
* Qt 5.9+ (with private modules, like qtbase5-private-dev)
* OpenSSL (conan installs this if you use conan)
* OpenAL-soft
* FFmpeg with swscale and swresample libs
* zlib
* opus (libopus-dev)
#### Debian/Ubuntu:
```console
# apt-get install libssl-dev libavformat-dev libavdevice-dev libswscale-dev libavutil-dev libpulse-dev libasound2-dev libswresample-dev libavresample-dev libopus-dev qtbase5-private-dev zlib1g-dev libopenal-dev libavcodec-dev libopenal-data libopenal1
```
You most likely have to rebuild ffmpeg with `--enable-swresample --enable-swscale`
After that, go to the [next section](#configuring-and-building).
#### Fedora:
```console
# dnf install rpm-build rpmdevtools mock mock-rpmfusion-free
```
Add yourself to `mock` group (you must run this only for the first time after installing mock):
```bash
sudo usermod -a -G mock $(whoami)
```
You need to relogin to your system or run:
```bash
newgrp mock
```
Create RPM build base directories:
```bash
rpmdev-setuptree
```
Download sources:
```bash
spectool -g -R kepka.spec
```
Generate SRPM:
```bash
rpmbuild -bs kepka.spec
```
Start mock build sequence:
```bash
mock -r fedora-$(rpm -E %fedora)-$(uname -m)-rpmfusion_free --rebuild ~/rpmbuild/SRPMS/kepka*.src.rpm
```
#### Configuring and building
Provide paths to OpenAL-soft and Qt5 in CMAKE_PREFIX_PATH variable when configuring.
ccache -o sloppiness=pch_defines,time_macros
mkdir _conan_build_
cd _conan_build_
conan install .. --build missing
cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_PREFIX_PATH="/usr/local/opt/qt5/;/usr/local/opt/openal-soft" ..
ninja
### Windows
Install [vcpkg][] (no need to integrate, just install), [python][] 3.5, [cmake][], [Qt][qt] 5.9 or later and [Visual Studio][visual-studio] 2017 or later, and set the following environment variables:
- `QTDIR`: directory where Qt binary distribution is installed, e.g. `C:\Qt\5.9.1\msvc2017_64`
- `VCPKG`: directory where VCPKG is installed, e.g. `C:\vcpkg`
After that, execute the following `cmd` commands from Visual Studio developer command prompt:
```console
$ set PATH=c:\Python35;%PATH%
$ "%VCPKG%\vcpkg" install --triplet x64-windows openal-soft openssl opus zlib ffmpeg
$ mkdir build
$ cd build
$ set PATH=%QTDIR%\bin;%PATH%
$ cmake -G"Visual Studio 15 2017 Win64" -DCMAKE_TOOLCHAIN_FILE="%VCPKG%\scripts\buildsystems\vcpkg.cmake" -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
$ cmake --build . --config RelWithDebInfo
```
![Preview of Telegram Desktop][preview_image]
The source code is published under GPLv3 with OpenSSL exception, the license is available [here][license].
The Kepka logo is available by CC-BY-SA 4.0 License. (c) 2018 leha-bot. The full CC-BY-SA 4.0 license text is available [here](https://creativecommons.org/licenses/by-sa/4.0/legalcode).
## Supported systems
* Windows 7 - Windows 10 (**not** RT)
* Mac OS X 10.8 - Mac OS X 10.11
* Mac OS X 10.6 - Mac OS X 10.7 (separate build)
* Ubuntu 12.04 - Ubuntu 16.04
* Fedora 22 - Fedora 24
## Third-party
* [CMake 3.10+][cmake-build]
* Qt 5.9+ ([LGPL](http://doc.qt.io/qt-5/lgpl.html))
* OpenSSL 1.0.1g ([OpenSSL License](https://www.openssl.org/source/license.html))
* zlib 1.2.8 ([zlib License](http://www.zlib.net/zlib_license.html))
* Ninja ([Apache License 2.0](https://github.com/ninja-build/ninja/blob/master/COPYING))
* OpenAL Soft ([LGPL](http://kcat.strangesoft.net/openal.html))
* Opus codec ([BSD License](http://www.opus-codec.org/license/))
* FFmpeg ([LGPL](https://www.ffmpeg.org/legal.html))
* Guideline Support Library ([MIT License](https://github.com/Microsoft/GSL/blob/master/LICENSE))
* Mapbox Variant ([BSD License](https://github.com/mapbox/variant/blob/master/LICENSE))
* Open Sans font ([Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html))
* Emoji alpha codes ([MIT License](https://github.com/emojione/emojione/blob/master/extras/alpha-codes/LICENSE.md))
* Catch test framework ([Boost License](https://github.com/philsquared/Catch/blob/master/LICENSE.txt))
[//]: # (LINKS)
[cmake]: https://cmake.org/
[python]: https://python.org/
[cmake-build]: docs/building-cmake.md
[qt]: https://www.qt.io/
[telegram]: https://telegram.org
[telegram_desktop]: https://desktop.telegram.org
[telegram_api]: https://core.telegram.org
[telegram_proto]: https://core.telegram.org/mtproto
[license]: LICENSE
[preview_image]: docs/assets/preview.png
[vcpkg]: https://github.com/Microsoft/vcpkg
[visual-studio]: https://www.visualstudio.com/