GithubHelp home page GithubHelp logo

kaffeine / kepka Goto Github PK

View Code? Open in Web Editor NEW

This project forked from procxx/kepka

0.0 3.0 0.0 146.07 MB

Unofficial Telegram Desktop messaging app

Home Page: https://procxx.github.io

License: Other

PowerShell 0.03% Batchfile 0.01% Shell 0.04% CMake 0.90% C 0.10% C++ 97.03% Python 0.58% Objective-C++ 1.28% Ruby 0.04%

kepka's Introduction

Version Build Status Build status

Kepka - Unofficial 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 and the MTProto 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;
  • optional inter-procedural optimizations on *nix (can be enabled by forwarding CMake's -DENABLE_IPO:BOOL=ON flag; improves performance but could significantly increase compilation times);
  • optional packaged build for GNU/Linux maintainers (can be enabled by forwarding CMake's -DPACKAGED_BUILD:BOOL=ON flag; will disable automatic schema registration and icon generation);
  • 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)!

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:

# 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.

Fedora:

For more convenient work with building on Fedora, it's recommended to build it from our RPM spec file.

1. Installing and configuring RPM tools
# 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):

sudo usermod -a -G mock $(whoami)

You need to relogin to your system or run:

newgrp mock

Create RPM build base directories:

rpmdev-setuptree
  1. Download sources:
spectool -g -R kepka.spec
  1. Generate SRPM (Source RPM for building from sources):
rpmbuild -bs kepka.spec
  1. Start mock build sequence:
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 5.9 or later and 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:

$ 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

The source code is published under GPLv3 with OpenSSL exception, the license is available here.

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.

Supported systems

  • Windows 7 - Windows 10 (not RT);
  • Mac OS X 10.8 - Mac OS X 10.11 (not regularly tested);
  • Mac OS X 10.6 - Mac OS X 10.7 (separate build, not tested);
  • Ubuntu 12.04 - Ubuntu 16.04 (not regularly tested);
  • Fedora 28 - Fedora 32 (old versions were retired).

Third-party

kepka's People

Contributors

3v1n0 avatar alireza-mim avatar anatoly-spb avatar auchri avatar berkus avatar bootak avatar crackedmind avatar eduardosm avatar eegorov avatar fornever avatar foxcpp avatar jaydi85 avatar john-preston avatar kachsheev avatar kaffeine avatar kanishkablack avatar leha-bot avatar mathifonseca avatar minoru avatar mrexodia avatar mymedia2 avatar orbin avatar oz1 avatar pperehozhih avatar randl avatar rezasp avatar stek29 avatar streppel avatar xvitaly avatar zenexer avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.