Compare commits

...

573 Commits

Author SHA1 Message Date
John Preston
38bef584e1 Beta version 1.9.11.
- Bug fixes and other minor improvements.
2020-02-10 19:49:10 +04:00
Ilya Fedin
e62f727135 Fix creating of autostart launcher in snap 2020-02-10 19:30:41 +04:00
John Preston
a0e7ef61fc Update submodules. 2020-02-10 19:30:09 +04:00
John Preston
fd8ae60dc1 Change show order of MainWindow/OverlayWindow.
Fixes #6804.
2020-02-10 19:28:41 +04:00
John Preston
093c2887c3 Fix PiP on multi-monitor setup. 2020-02-10 18:45:23 +04:00
John Preston
770678e32a Fix crash in updates handling. 2020-02-10 15:58:58 +04:00
John Preston
07cc05f62e Fix loading thumbnails in videos in albums.
Once more fixes #6332.
2020-02-10 15:43:24 +04:00
Ilya Fedin
77719750ee Fix name of the snap desktop file
Use new switch for GSL
2020-02-10 15:34:03 +04:00
Ilya Fedin
fb2bbd87b7 Fix zlib linkage 2020-02-10 15:23:14 +04:00
Ilya Fedin
6206b6f843 Adapt indicator-application check for sandboxed environments
Fix quality loss in the tray icon image

Fix window showing by clicking on the tray icon on macOS

Fix tray icon displaying on KDE
2020-02-10 15:09:47 +04:00
Kai Uwe Broulik
9e3fa2e4bc Check action id when invoked
Makes it more resilient
2020-02-10 14:45:07 +04:00
John Preston
1f16d72667 Allow setSpeed() on non-active streaming player. 2020-02-06 13:27:21 +04:00
John Preston
6cf9157fb5 Fix jump-to-time from audio captions. 2020-02-06 13:19:33 +04:00
John Preston
76ff9a562e Fix build. 2020-02-05 22:06:40 +04:00
John Preston
ffeff09561 Beta version 1.9.10: Fix build for OS X 10.10-10.11. 2020-02-05 22:03:42 +04:00
John Preston
cc71bdce8f Beta version 1.9.10: Update lib_spellcheck. 2020-02-05 20:33:46 +04:00
John Preston
5d43df4f33 Beta version 1.9.10.
- Switch to the Picture-in-Picture mode
to watch your video in a small window.
- Change video playback speed in the playback controls '...' menu.
- Rotate photos and videos in the media viewer
using the rotate button in the bottom right corner.
2020-02-05 20:15:28 +04:00
John Preston
d29c3add79 Rotate video in PiP. 2020-02-05 20:04:40 +04:00
John Preston
4544b091a0 Allow rotating content in media viewer. 2020-02-05 19:37:39 +04:00
John Preston
91244d5211 Update cmake_helpers submodule. 2020-02-05 18:39:58 +04:00
John Preston
5cae7b3db1 Use system zlib on Linux, update submodules. 2020-02-05 18:39:47 +04:00
John Preston
702fe024c0 Fix a crash in reply data inconsistency. 2020-02-05 18:39:47 +04:00
John Preston
1ad0ff34df Don't overlap video with controls. 2020-02-05 18:39:47 +04:00
John Preston
282c502b71 Show playback time in PiP. 2020-02-05 18:39:47 +04:00
John Preston
d6e989cad5 Allow seek in PiP. 2020-02-05 18:39:47 +04:00
John Preston
23388b5705 Display playback progress in PiP. 2020-02-05 18:39:47 +04:00
John Preston
9ed56aa5d6 Good display of not-yet-started streaming in PiP. 2020-02-05 18:39:47 +04:00
John Preston
d9c5ab645c Fix radial loading in PiP widget. 2020-02-05 18:39:47 +04:00
John Preston
2cfb3c6755 Display dark background for PiP controls. 2020-02-05 18:39:47 +04:00
John Preston
e095c325b3 Move PiP controls to one corner. 2020-02-05 18:39:47 +04:00
John Preston
47f9978c46 Double click on PiP to switch back to fullscreen. 2020-02-05 18:39:47 +04:00
John Preston
2e1e13b843 Rename mediaview.style to media_view.style. 2020-02-05 18:39:47 +04:00
John Preston
7c2110c1f3 Closed alpha version 1.9.9.1. 2020-02-05 18:39:47 +04:00
John Preston
2a7ac6896c Update submodules. 2020-02-05 18:39:47 +04:00
John Preston
e13325ca22 Support menu with playback speed. 2020-02-05 18:39:47 +04:00
John Preston
e889a52f6f Improve design of video player and PiP controls. 2020-02-05 18:39:47 +04:00
John Preston
4d737b35da Fix PiP window on macOS. 2020-02-05 18:39:47 +04:00
John Preston
0fbd263562 Add shadow and round corners in PiP. 2020-02-05 18:39:47 +04:00
John Preston
f81f37505b Save video PiP window geometry. 2020-02-05 18:39:47 +04:00
John Preston
58dd33d8a2 Fix PiP window on macOS. 2020-02-05 18:39:47 +04:00
John Preston
f24f27a13c Add volume icon and playback speed info. 2020-02-05 18:39:47 +04:00
John Preston
87cc18aff8 Add video speed control slider. 2020-02-05 18:39:47 +04:00
John Preston
b88219902f Add sample PiP controls. 2020-02-05 18:39:47 +04:00
John Preston
63090fb75f Fix build for macOS. 2020-02-05 18:39:46 +04:00
John Preston
b5b520ab66 Make non-activatable PiP window. 2020-02-05 18:39:46 +04:00
John Preston
7a6052db81 Implement complex PiP movement. 2020-02-05 18:39:46 +04:00
John Preston
a73520c9d8 Allow resizing PiP. 2020-02-05 18:39:46 +04:00
John Preston
55b63cd2e3 Move PiP panel code to a separate class. 2020-02-05 18:39:46 +04:00
John Preston
612ee18a93 Snap PiP to screen edges. 2020-02-05 18:39:46 +04:00
John Preston
ca5c9271a3 First prototype of picture-in-picture player. 2020-02-05 18:39:46 +04:00
John Preston
9feea4a724 Don't blur video thumbnail if any side >= 240px.
Fixes #6332.
2020-02-05 18:39:46 +04:00
John Preston
3da99b6058 Add x11 plugin to Snap config. 2020-02-05 18:39:46 +04:00
Ilya Fedin
3b4dfa1381 Use LXQt's StatusNotifierItem implementation instead of appindicator 2020-02-05 18:38:34 +04:00
Ilya Fedin
1b1f9d9985 Adapt snap for system GSL 2020-02-04 21:22:04 +04:00
Ilya Fedin
3f5eaa8f0a Remove glib dependency from Qt 2020-02-04 21:19:51 +04:00
John Preston
28a567986d Try linking some libs dynamically on Linux. 2020-01-31 16:33:35 +03:00
John Preston
68027fd23e Add missing static plugin on Linux. 2020-01-31 16:05:03 +03:00
Ilya Fedin
2807c5ef19 Use system icon theme and increase icon size 2020-01-31 16:03:41 +03:00
Ilya Fedin
0477bda929 Use XDG Desktop Portal for file dialog 2020-01-31 16:02:11 +03:00
Ilya Fedin
d80b3fda7d Fix duplicate object path in SandboxAutostart and add some logging 2020-01-31 15:47:44 +03:00
Ilya Fedin
a831c1703a Split launcher filename detection to a function 2020-01-31 15:46:39 +03:00
John Preston
e6cec49646 Fix static libstdc++ linking in Updater.
Fixes #6939.
2020-01-29 14:54:25 +03:00
John Preston
74d848311b Replace str_const with base::const_string. 2020-01-29 12:47:50 +03:00
John Preston
c03df169b3 Attempt 2 to fix the snap build. 2020-01-29 10:07:01 +03:00
John Preston
9b19cba161 Version 1.9.9.
- Bug fixes and other minor improvements.
2020-01-28 20:45:49 +03:00
Ilya Fedin
9536a3c98e Use packaged build in the snap package 2020-01-28 20:38:12 +03:00
John Preston
f0de8131ec Improve phrases for scheduled messages. 2020-01-28 18:07:17 +03:00
John Preston
aa18cb64bc Catch more spellcheck exceptions.
Fixes #7086, hopefully fixes #7095.
2020-01-28 16:56:12 +03:00
23rd
7b36c91e0d Fixed insertion of 11th image from clipboard in SendFilesBox. 2020-01-28 16:56:03 +03:00
John Preston
fb0ceb110e Fix assertion violation in non-history song player. 2020-01-28 16:55:57 +03:00
RadRussianRus
20fbf0a655 Fixed formatting 2020-01-28 16:45:11 +03:00
RadRussianRus
46de86f1e4 Fix opening private linked channel from message 2020-01-28 16:45:11 +03:00
Ilya Fedin
05eabfd539 Add autostart support for linux 2020-01-28 16:44:27 +03:00
Ilya Fedin
74942cd06e Use QDBusConnection::connect to fix signal connection on old distributions 2020-01-28 16:43:23 +03:00
John Preston
24da40ef05 Fix -startintray on Ubuntu. 2020-01-28 11:41:05 +03:00
23rd
e7fbcce9d9 Added handler for SCHEDULE_STATUS_PRIVATE error when send file. 2020-01-28 11:20:36 +03:00
23rd
ef5055f4f3 Fixed missing reply cancel after sending scheduled message. 2020-01-28 11:20:36 +03:00
23rd
7cbc5ef902 Fixed scheduled sending text messages until online when user is online. 2020-01-28 11:20:36 +03:00
23rd
03d96a32f2 Fixed scheduled sending files until online when user is online. 2020-01-28 11:20:36 +03:00
John Preston
5406c17158 Handle only left click on button.
Fixes #7073.
2020-01-28 09:46:21 +03:00
John Preston
29c6228616 Add quiz phrase to langpack. 2020-01-28 09:33:36 +03:00
23rd
3f4a44c828 Fixed wrong checking of index in auto-closer Github Action. 2020-01-27 20:20:05 +03:00
RadRussianRus
327c9caed7 Fix opening hashtag when in archive 2020-01-27 19:56:30 +03:00
Nicholas Guriev
07560188cf Perform test for additional libatomic 2020-01-27 19:41:56 +03:00
23rd
2c64676415 Removed Travis CI in favor of Github CI.
Thanks Auchri for the work he did, but we are moving on with Github CI!
2020-01-24 21:53:45 +03:00
23rd
29ddd88a5d Added Github CI for Linux. Added new build status badge. 2020-01-24 21:53:45 +03:00
23rd
543dc80b0b Reduced cache size in Github CI for Windows and macOS.
- Other minor improvements.
2020-01-24 21:53:45 +03:00
John Preston
2008b1beea Version 1.9.8.
- Bug fixes and other minor improvements.
2020-01-24 18:30:59 +03:00
John Preston
9aa597d6f0 Fix validation of created poll. 2020-01-24 18:29:53 +03:00
Ilya Fedin
1d85416434 Remove unneeded include from QtDBus notifications 2020-01-24 18:06:58 +03:00
John Preston
bb64285c3a Always show Create button, show error messages.
Fixes #7058, fixes #7059.
2020-01-24 17:45:05 +03:00
John Preston
6a581830f4 Enable IPO by CMake option. 2020-01-24 17:11:30 +03:00
John Preston
f1d155c3f6 Added fireworks animation for right quiz answer. 2020-01-24 17:01:25 +03:00
John Preston
66e3b529b7 Fix visual glitches in bubble shaking. 2020-01-24 17:01:25 +03:00
Ilya Fedin
04cfd598e2 Use appindicator in flatpak and fix desktop environment detection, add pavucontrol-qt 2020-01-24 16:51:50 +03:00
Vitaly Zaitsev
b94c8436eb Added missing Qt header. Fixed clang build.
Signed-off-by: Vitaly Zaitsev <vitaly@easycoding.org>
2020-01-24 15:35:15 +03:00
John Preston
dbfc555d9c Support shaking bubble for wrong quiz answer. 2020-01-24 11:49:12 +03:00
John Preston
5aacf867cd Correctly apply 'min' updates in polls. 2020-01-24 10:31:18 +03:00
John Preston
2f9db1d069 Fix signedness compare warning. 2020-01-24 10:30:59 +03:00
John Preston
3c022b893a Show correct incoming quiz votes in green. 2020-01-24 10:27:08 +03:00
John Preston
b74adc5311 Allow viewing round videos in scheduled messages. 2020-01-23 15:37:12 +03:00
John Preston
ed8b237364 Fix assertion violation in poll create box. 2020-01-23 15:36:53 +03:00
John Preston
7170808d2b Fix unloading thumbnails in videos.
Fixes #6332.
2020-01-23 14:02:18 +03:00
John Preston
578a80dfb8 Remove AppVeyor CI in favor of GitHub. 2020-01-23 13:48:15 +03:00
John Preston
d72a5e0d3d Fix build for Mac App Store. 2020-01-23 13:14:19 +03:00
John Preston
2699af5d5a Version 1.9.7.
- Create three new kinds of polls.
- See who voted for what in polls with visible votes.
- Vote for several options in polls that allow multiple answers.
- Guess the correct answer in quiz-style polls.
- Explore various ways of combining the different poll options.
- Add polls from the '...' menu in any group or channel.
- Use bots like @QuizBot to create quizzes
with several questions and media attachments.
- Schedule messages to be sent when your recipient comes online
(only works if you know their online status).
2020-01-23 10:46:57 +03:00
23rd
8298caddc3 Removing scheduling messages until online for those who hide their online. 2020-01-23 10:46:57 +03:00
John Preston
1bcde1b55c Pass cdn_supported flag to upload.getFile. 2020-01-23 10:46:57 +03:00
23rd
5d492bfe93 Added Github Action that closes issue if it was created for TG macOS. 2020-01-23 10:46:57 +03:00
John Preston
655b3d7c50 Update submodules. 2020-01-23 10:46:57 +03:00
John Preston
e4278745d5 Closed alpha version 1.9.6.1. 2020-01-23 10:09:34 +03:00
23rd
e266dc153b Implemented ability to add more than 1 file to albums via SendFilesBox. 2020-01-23 10:09:34 +03:00
John Preston
a482b744d2 Add a ripple animation for polls bottom button. 2020-01-23 10:09:34 +03:00
John Preston
d5bf742912 Improve polls layout. 2020-01-23 10:09:34 +03:00
John Preston
4346aecb61 Add a separate string for a pinned quiz. 2020-01-23 10:09:34 +03:00
John Preston
bdfa080701 Fix build for Windows. 2020-01-23 10:09:34 +03:00
23rd
465a42a825 Added ability to customize shortcuts for sending messages. 2020-01-23 10:09:34 +03:00
23rd
7d519990b2 Added ability to customize shortcuts for silent or scheduled messages. 2020-01-23 10:09:34 +03:00
23rd
19fd3a15e1 Updated range-v3 to 0.10.0. 2020-01-23 10:09:34 +03:00
23rd
12250676f9 Added restoring of scroll position after edit items in SendFilesBox. 2020-01-23 10:09:34 +03:00
23rd
a1bb9cbb2b Added ability to delete and edit files in SendFilesBox. 2020-01-23 10:09:34 +03:00
23rd
836df873f0 Added ability to delete and edit separate media in SendFilesBox. 2020-01-23 10:09:33 +03:00
23rd
58cc8fc08b Removed IconButtons from album items in SendFilesBox. 2020-01-23 10:09:33 +03:00
23rd
d1d5312ead Moved searching of sticker mimes to single place. 2020-01-23 10:09:33 +03:00
23rd
f3595e379c Added processing of small album thumb widths in SendFilesBox. 2020-01-23 10:09:33 +03:00
23rd
5f8c2f90ff Added button to add new files in SendFilesBox to album only. 2020-01-23 10:09:33 +03:00
23rd
abc7b8364c Slightly refactored code in SendFilesBox. 2020-01-23 10:09:33 +03:00
23rd
627a105ba9 Moved album files filter to FileDialog namespace. 2020-01-23 10:09:33 +03:00
23rd
faef5d8af6 Added buttons to delete and edit album items in SendFilesBox. 2020-01-23 10:09:33 +03:00
23rd
cf1dc3df78 Added ability to edit album items in send files box via FileDialog. 2020-01-23 10:09:33 +03:00
23rd
a26e4eee18 Split some things into different methods in SendFilesBox. 2020-01-23 10:09:33 +03:00
23rd
efa4deef6a Moved media editing via FileDialog to separate static method. 2020-01-23 10:09:33 +03:00
23rd
7e00930319 Added ability to delete items from album in SendFilesBox. 2020-01-23 10:09:33 +03:00
23rd
c08b2ae3df Added ability to schedule messages to be sent when user comes online.
Pro tip: Hold Ctrl key to send a silent scheduled message!
2020-01-23 10:09:33 +03:00
23rd
8ebbeb5274 Fixed display of scheduled until online message dates. 2020-01-23 10:09:33 +03:00
John Preston
c3b01d8573 Hide multiple answers if only quiz is allowed. 2020-01-23 10:09:33 +03:00
John Preston
43d8dedec4 Fix collapse after full results are loaded. 2020-01-23 10:09:33 +03:00
John Preston
cd97b649ff Improve phrases for polls. 2020-01-23 10:09:33 +03:00
John Preston
ac650b08fd Allow collapsing expanded poll results. 2020-01-23 10:09:33 +03:00
John Preston
e6c005dcba Fix poll result header on scroll top. 2020-01-23 10:09:33 +03:00
John Preston
5acb7448b7 Add loading rows placeholder. 2020-01-23 10:09:33 +03:00
John Preston
80168a58a7 Improve poll results loading. 2020-01-23 10:09:33 +03:00
John Preston
ebae0d71b8 Save poll results state when viewing profiles. 2020-01-23 10:09:33 +03:00
John Preston
8c11e1724a Move poll results to a Info-like layer. 2020-01-23 10:09:33 +03:00
John Preston
d0597407d8 Support creating polls from bot keyboards. 2020-01-23 10:09:33 +03:00
John Preston
c3aa2abe11 Fix multiple answers polls voting. 2020-01-23 10:09:33 +03:00
John Preston
3e0b2f5553 Add PollResultsBox. 2020-01-23 10:09:33 +03:00
John Preston
3d1275e19a Disable forwarding public polls to channels. 2020-01-23 10:09:33 +03:00
John Preston
d72d1aabe6 Disable creating public polls in channels. 2020-01-23 10:09:33 +03:00
John Preston
aac6d0df27 Improve quiz phrases. 2020-01-23 10:09:33 +03:00
John Preston
f700220ec1 Create polls with different settings. 2020-01-23 10:09:33 +03:00
John Preston
04d9b93e17 Implement poll creation settings UI. 2020-01-23 10:09:33 +03:00
John Preston
989fad8554 Add poll option select animation. 2020-01-23 10:09:33 +03:00
John Preston
2981a16e17 Allow sending multiple votes in a poll. 2020-01-23 10:09:33 +03:00
John Preston
afff7634f9 Display last voters userpics. 2020-01-23 10:09:33 +03:00
John Preston
95b2886bad Display correct poll subtitle and quiz answer. 2020-01-23 10:09:33 +03:00
John Preston
d57905c2b3 Update API scheme to layer 109. 2020-01-23 10:09:33 +03:00
Ilya Fedin
ffe037f9f1 Fix single instance socket path for compatibility with flatpak 2020-01-23 09:58:12 +03:00
Sergey
3a748e20c2 Fix Github CI MacOS artifacts 2020-01-23 09:57:06 +03:00
John Preston
b0c2ed839d Use c++17 instead of c++2a on GCC.
For now GCC9 and c++2a crashes with ICE somewhere deep in range-v3.
2020-01-22 17:25:04 +03:00
John Preston
eee252bb74 Filter out Unicode tag symbols from document names.
Fixes #7005.
2020-01-22 17:24:42 +03:00
Vitaly Zaitsev
59a8acc667 Implemented installation support for GNU/Linux.
Signed-off-by: Vitaly Zaitsev <vitaly@easycoding.org>
2020-01-22 16:35:35 +03:00
John Preston
960f50824d Fix one more crash in CDN file download.
The sessionTimedOut could remove a session right between a request
for a file part and a request for additional cdn file hashes.

In this case requestData.sessionIndex was not updated and this
was leading to an assertion violation in changeRequestedAmount.
2020-01-22 16:13:50 +03:00
John Preston
63020ec302 Fix radial animation ending.
Fixes (2) from #6975.
2020-01-22 11:55:27 +03:00
John Preston
71d4563b9d Use 'telegramdesktop' as a default desktop file base name. 2020-01-22 11:55:27 +03:00
Ilya Fedin
98bfd7370d Make TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME and TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION respect DESKTOP_APP_USE_PACKAGED 2020-01-22 10:06:56 +03:00
Federico Armellini
45a81a5016 Fix changelog year 2020 2020-01-22 10:06:24 +03:00
John Preston
389fb0c4e9 Fix GIF real parent refresh after sending.
Fixes #6943.
2020-01-22 09:53:59 +03:00
John Preston
fc72fe3a78 Version 1.9.6.
- Bug fixes and other minor improvements.
2020-01-22 02:16:47 +03:00
John Preston
5f646dd125 Fix strange crash on Windows. 2020-01-22 02:16:38 +03:00
John Preston
6748233869 Version 1.9.5.
- Bug fixes and other minor improvements.
2020-01-21 23:32:41 +03:00
John Preston
fef90ea363 Fix build for Linux. 2020-01-21 23:32:05 +03:00
Ilya Fedin
0480611bf8 Add possibility to build without dbus 2020-01-21 23:30:47 +03:00
23rd
b4fbff0b6c Fixed build for Windows with c++latest. 2020-01-21 20:29:14 +03:00
John Preston
5f5d5629f8 Fix memory leak in media streaming. 2020-01-21 18:48:21 +03:00
John Preston
2d7f6fc2e7 Removed old lib_storage sources. 2020-01-21 18:47:57 +03:00
John Preston
5d6fd32496 Fixed detecting unsupported languages for spellcheck. 2020-01-21 18:47:40 +03:00
John Preston
48b24d12b2 Always ask for TDESKTOP_LAUNCHER_BASENAME on Linux. 2020-01-21 18:47:36 +03:00
John Preston
f0dc912080 Fix video frame rounding.
Fixes #6982.
2020-01-21 18:47:30 +03:00
John Preston
23f6044081 Remove GYP build scripts. 2020-01-21 18:47:25 +03:00
John Preston
f52fe937ed Fix possible crash in text processing on Linux.
Fixes #7005.
2020-01-21 18:47:21 +03:00
John Preston
97fe03e522 Update submodules. 2020-01-21 18:47:13 +03:00
John Preston
1ce2b5d946 Fix build for macOS with C++14 and later. 2020-01-21 18:47:03 +03:00
John Preston
c1003e39d1 Fix build with new libtgvoip. 2020-01-21 18:46:49 +03:00
kbroulik
b50073d281 Implement inline-reply
On supported notification servers (currently only KDE Plasma 5.18+) this
action will create a reply text field inside the notification.
2020-01-21 15:27:50 +03:00
23rd
37cdd78bda Fixed Github CI builds.
- Added prefix to configure zlib for macOS.
 - Removed hardcoded path to Python 2 version
 and added a search for existing versions.
2020-01-21 11:59:13 +03:00
Ilya Fedin
c13d637502 Fix spaces on end of lines 2020-01-21 11:58:57 +03:00
Ilya Fedin
2298eed8bf Use QStringList::contains also 2020-01-21 11:57:52 +03:00
Nicholas Guriev
8fab9167be Use QStringList::join to print notifications capabilities 2020-01-20 14:05:00 +03:00
John Preston
965a01a4cd Hide connecting status when update is ready. 2020-01-20 13:57:45 +03:00
John Preston
98bc7ce49b Revert "Pass cdn_supported flag to upload.getFile."
This reverts commit 7751f383ca.
2020-01-20 13:39:18 +03:00
John Preston
12873f8be0 Fix crash in CDN file download. 2020-01-20 13:04:12 +03:00
John Preston
6820b0b3b3 Fix spell checker crash for Persian language.
Fixes #6994.
2020-01-20 13:02:27 +03:00
John Preston
862093e1dd Revert min width 360px back to 380px.
Many visual glitches appeared, for example one in theme previews.
2020-01-20 13:01:52 +03:00
John Preston
7751f383ca Pass cdn_supported flag to upload.getFile. 2020-01-20 13:01:38 +03:00
John Preston
431521a8f5 Version 1.9.4: Fix build for Linux. 2020-01-17 20:22:53 +03:00
John Preston
f1b0e81b60 Version 1.9.4.
- Bug fixes and other minor improvements.
2020-01-17 18:14:48 +03:00
John Preston
340271fea0 Fix build, improve flat containers. 2020-01-17 18:13:50 +03:00
John Preston
25c48cc08e Update submodules. 2020-01-17 17:50:21 +03:00
Ilya Fedin
0bcc4befa1 Change fc-custom.conf condition to DESKTOP_APP_USE_PACKAGED 2020-01-17 17:49:07 +03:00
John Preston
d24735b217 Fix possible crash in CDN file loading. 2020-01-17 17:45:43 +03:00
John Preston
3643622e1b Update lib_spellcheck. 2020-01-17 17:00:47 +03:00
John Preston
8fb2772093 Fix sent GIFs playback. 2020-01-17 16:58:19 +03:00
23rd
4794a0be84 Fixed indents in utils.cpp. 2020-01-17 15:03:11 +03:00
John Preston
bd3d57056b Use MACRO_TO_STRING in config.h 2020-01-17 14:33:46 +03:00
23rd
15fc17066b Added Github CI for Windows and MacOS. Added new build status badges. 2020-01-17 14:19:44 +03:00
John Preston
afe34121af Use MACRO_TO_STRING from lib_base. 2020-01-17 14:15:40 +03:00
John Preston
4f71383557 Fix video timestamps in replies when editing. 2020-01-17 14:14:43 +03:00
John Preston
5aee0f642a Fix timestamps adjacent to parentheses.
Fixes #6997.
2020-01-17 14:14:36 +03:00
John Preston
38d799de24 Fix links parsing. 2020-01-17 14:14:30 +03:00
John Preston
0eb8d24394 Fix unread badge update when leaving a channel.
Fixes #6995.
2020-01-17 14:14:19 +03:00
John Preston
f1822d69be Fix build with DESKTOP_APP_SPECIAL_TARGET. 2020-01-17 13:52:37 +03:00
Ilya Fedin
ee9336f781 Fix notification actions for Cinnamon, fix notification icon for Gnome, add support for TDESKTOP_LAUNCHER_FILENAME in notifications and fix indentation 2020-01-17 13:40:31 +03:00
Ilya Fedin
6fdd1389e6 Make packaged build working 2020-01-17 13:34:27 +03:00
Anton Afanasyev
00e601296c Fix as suggested
Co-Authored-By: 23rd <23rd@vivaldi.net>
2020-01-17 13:00:12 +03:00
Anton Afanasyev
3bc58fb690 Add Ctrl+9 shortcut to show archive. 2020-01-17 13:00:12 +03:00
Vitaly Zaitsev
a52dfe7998 Fixed TDESKTOP_LAUNCHER_FILENAME option.
Signed-off-by: Vitaly Zaitsev <vitaly@easycoding.org>
2020-01-17 12:52:31 +03:00
John Preston
3d7a3cf33a Update copyright information. 2020-01-17 11:37:27 +03:00
CynicallDude
6bba0cf986 Update copyright year 2020-01-17 11:33:34 +03:00
John Preston
1f447f98d8 Include variables.cmake after project() call.
Fixes #6950.
2020-01-17 11:29:10 +03:00
John Preston
208b5d7b5b Link libstdc++ statically in Updater.
Fixes #6939.
2020-01-17 10:45:14 +03:00
John Zimmermann
87f44e87cd Cmake: Also use /bin subdir for Ninja if the executable does not have a suffxi (e.g. Linux) 2020-01-17 10:43:40 +03:00
Leo
f2c8167124 lib_tgvoip.cmake: Match against x86 arches.
This avoids matching against other 32bit arches like armv7/armhf that
doesn't have msse2 but are 32bit and need other 32bit-specific flags to
allow for compilation like -g0.
2020-01-17 10:42:50 +03:00
John Preston
3589e658c9 Use Strawberry Perl instead of Active Perl. 2020-01-03 11:41:38 +03:00
John Preston
1f71630f51 Improve spell check underline color.
Fixes #6926.
2020-01-02 15:24:36 +03:00
John Preston
322367c1b1 Correctly minimize window.
Fixes #6932.
2020-01-02 14:57:36 +03:00
John Preston
4eeac7dc18 Fix whitespace and indentation errors.
See #6672, thanks Sea-n.
2020-01-02 14:25:53 +03:00
John Preston
74733275d8 Fix build scripts. 2020-01-02 13:45:21 +03:00
John Preston
100fed3622 Fix build for Linux 32 bit.
Fixes #6921.
2019-12-31 20:20:58 +03:00
John Preston
3e8b76dbd8 Version 1.9.3: Catch Enchant exceptions. 2019-12-31 18:06:54 +03:00
John Preston
da7178089f Version 1.9.3: Fix build for OS X 10.10-10.11. 2019-12-31 17:52:15 +03:00
John Preston
651ef2aa78 Version 1.9.3: Fix cmake version parsing. 2019-12-31 17:39:08 +03:00
John Preston
8c0e168009 Version 1.9.3.
- Videos in chats start playing automatically.
- Resume playback from where you left off
when watching long videos and listening to long audio tracks.
- Control automatic playback for
videos, GIFs and round video messages
in Settings > Advanced > Automatic media download.
- Enjoy system spell checker support on all modern systems.
2019-12-31 17:26:41 +03:00
John Preston
fb36359a6d Disable one failing assertion for now. 2019-12-31 17:26:05 +03:00
John Preston
f2a92f2b02 Check if app is active before showing a tooltip.
Fixes #6885, fixes #6895.
2019-12-31 16:48:44 +03:00
John Preston
3b562bfa3a Minimal update of build instructions to use CMake. 2019-12-31 15:08:58 +03:00
John Preston
22df6fb42e Allow videos to have size as before streaming.
Fixes #6915.
2019-12-31 14:56:31 +03:00
John Preston
735457c231 Fix infinite spell checker loop.
Fixes #6912.
2019-12-31 14:39:14 +03:00
John Preston
b387ccdcf7 Fix video restart in media viewer.
Fixes #6913.
2019-12-31 14:20:37 +03:00
John Preston
03ff48cf07 Allow several lines in QR code intro step phrases. 2019-12-31 14:19:50 +03:00
John Preston
6db4222b1b Update submodules. 2019-12-31 10:30:14 +03:00
John Preston
72d8cd7ef0 Save playback position in long audio files. 2019-12-31 10:30:06 +03:00
John Preston
2637c860e9 Fix glitch in open GIF from context menu. 2019-12-30 17:02:37 +03:00
John Preston
50b5af64dd Fix possible crash in lib_storage. 2019-12-30 16:02:15 +03:00
23rd
e5682a9b25 Fixed Spelling Highlighter creation on unsupported platforms. 2019-12-30 16:02:15 +03:00
John Preston
1ee7801c0b Force GTK file dialog in official builds. 2019-12-30 14:20:12 +03:00
John Preston
c13e433e65 Fix possible crash in failed media resume. 2019-12-30 13:39:18 +03:00
John Preston
4aaecfd531 Fix upload progress and message time display.
Fixes #6909.
2019-12-30 13:38:36 +03:00
John Preston
57b27d217c Fix 'Open GIF' context menu item.
Fixes #6908.
2019-12-30 13:38:02 +03:00
John Preston
1e8f4e428a Beta version 1.9.2.
- Videos in chats start playing automatically.
- Resume playback from where you left off
when watching long videos.
- Control videos, GIFs and round video messages automatic playback
in Settings > Advanced > Automatic media download.
- Spell checker on Linux using Enchant.
2019-12-29 19:34:52 +03:00
John Preston
0693f98107 Fix build on Linux. 2019-12-29 18:57:19 +03:00
Stepan Skryabin
08a93416e8 Update supported Fedora version 2019-12-29 18:43:57 +03:00
ilya-fedin
3d36b4f866 Replace libnotify with QtDBus notification implementation (#6825) 2019-12-29 18:41:45 +03:00
Stepan Skryabin
9071d7b8c0 Update supported Ubuntu version 2019-12-29 18:15:56 +03:00
Nicholas Guriev
dff28bcf7f Adjust build instructions 2019-12-29 18:14:17 +03:00
Nicholas Guriev
22585ca919 Activate spellchecking on Linux 2019-12-29 18:13:42 +03:00
annymosse
8a888051e5 Proposal:Add Chat category
add Chat category for more classification and will appear under Chat category on Deepin distro
2019-12-29 18:01:40 +03:00
Julian Sparber
0b5ac98282 Make min width 360 2019-12-29 17:58:32 +03:00
Xaaalera
d506f10e9f Update utils.cpp
fix for the Ukrainian language
https://i.imgur.com/GcGZOvf.png
https://i.imgur.com/0ZUNw4X.png
2019-12-29 15:46:31 +03:00
John Preston
49129c1529 Update API scheme to layer 108. 2019-12-29 15:28:27 +03:00
John Preston
66204bae95 Update API scheme on layer 107. 2019-12-29 14:41:10 +03:00
John Preston
d47c138f23 Save streaming player between message edits. 2019-12-28 17:56:06 +03:00
John Preston
a980fba3aa Create only temporary keys for CDN. 2019-12-28 13:52:29 +03:00
John Preston
f3d5f0c9de Fix build script for Windows. 2019-12-27 17:35:51 +03:00
John Preston
28c58b41fe Closed alpha version 1.9.1.12. 2019-12-27 17:34:43 +03:00
John Preston
da385069f4 Fix build for Xcode. 2019-12-27 17:29:51 +03:00
John Preston
79870600d9 Fix saving of playback position for long videos. 2019-12-27 17:09:55 +03:00
John Preston
ac48ec5969 Fix radial progress on in-chat streaming start. 2019-12-27 15:55:02 +03:00
John Preston
74e2175a7a Don't show tooltips for internal: links. 2019-12-27 15:43:29 +03:00
John Preston
a7fe88bea7 Highlight timestamps in media viewer. 2019-12-27 15:35:35 +03:00
John Preston
fedf29adb1 Fix timestamp highlights when editing media. 2019-12-27 15:15:16 +03:00
John Preston
1ba052cc13 Highlight timestamps in replies to media. 2019-12-27 13:41:30 +03:00
John Preston
90c54b1f2a Highlight timestamps in song captions. 2019-12-26 17:14:35 +03:00
John Preston
3e3e1d628c Highlight timestamps in video captions. 2019-12-25 18:20:02 +03:00
John Preston
e9620af6fb Save last playback position for long videos. 2019-12-25 18:19:52 +03:00
John Preston
b584204522 Fix sound stop in streamed videos. 2019-12-25 13:12:42 +03:00
John Preston
dc146cb1fe Blur small thumbnails. 2019-12-25 13:12:00 +03:00
John Preston
08e04cdcb1 Fix autoplay settings apply in albums. 2019-12-25 12:01:49 +03:00
John Preston
063be9a13a Closed alpha version 1.9.1.11. 2019-12-24 16:39:56 +03:00
John Preston
8f6f434d8a Cherry-pick a bugfix from upstream Qt. 2019-12-24 16:38:50 +03:00
John Preston
616957e46f Add file size limit to autoplay settings. 2019-12-24 13:09:04 +03:00
John Preston
8a3506af89 Restore download priorities without streaming. 2019-12-23 14:13:32 +03:00
John Preston
85545dba64 Set higher streaming priority in media overlay. 2019-12-23 13:27:20 +03:00
John Preston
fa4d8f2fbd Support priorities in download tasks. 2019-12-23 12:37:03 +03:00
John Preston
8ae6156477 Fix video quality when opening from chat. 2019-12-23 11:10:11 +03:00
John Preston
621a5cc4ab Fix GIFs freezing playback. 2019-12-21 16:57:06 +03:00
John Preston
a4ea4689a2 Autoplay full-width videos in albums. 2019-12-20 17:13:55 +03:00
John Preston
a8935178a2 Remove autodownload for GIFs and video messages. 2019-12-20 15:56:39 +03:00
John Preston
7f033c1cc4 Closed alpha 1.9.1.10: Stream videos in chat. 2019-12-19 18:29:19 +03:00
23rd
eb9c2ce39a Split build types by folders for GCC. 2019-12-19 18:27:52 +03:00
23rd
057e0de75a Updated Third-party list in README.md. 2019-12-19 18:27:36 +03:00
23rd
4102551108 Fixed covering message status with mentions button at end. 2019-12-19 18:27:34 +03:00
23rd
ff4ccdc59c Fixed covering right part of chat list with dialogs up button at end. 2019-12-19 18:27:32 +03:00
John Preston
f51f133832 Send packets for processing in batches. 2019-12-19 18:14:05 +03:00
John Preston
c4319a7370 Add a separate setting for video files autoplay. 2019-12-19 14:48:53 +03:00
John Preston
041670b8e7 Fix download of short videos in media overlay. 2019-12-19 14:13:27 +03:00
John Preston
4cdf08cbfb Fix video with autoplay disabled. 2019-12-19 13:50:33 +03:00
John Preston
9f96237b85 Remove unnecessary repaints in an inactive window. 2019-12-18 22:00:19 +03:00
John Preston
92d87f96e1 Optimize locked videos repainting. 2019-12-18 21:48:07 +03:00
John Preston
40d4353d05 Allow stopping audio without stopping video. 2019-12-18 21:26:17 +03:00
John Preston
a2b6e05cdf Fix inline player for rotated videos. 2019-12-18 20:15:42 +03:00
John Preston
10c810ff03 Lock inline HistoryView::Gif when playing fullscreen. 2019-12-17 17:30:14 +03:00
John Preston
51dac66998 Show inline video playback state. 2019-12-17 16:04:53 +03:00
John Preston
9b9ea336be Use HistoryView::Gif for video files. 2019-12-17 14:11:10 +03:00
John Preston
0e75ad42e2 Fix playback state display in round videos. 2019-12-16 17:17:13 +03:00
John Preston
ceecbaa904 Continue GIFs in media overlay. 2019-12-16 16:22:53 +03:00
John Preston
58315ec50e Closed alpha version 1.9.1.9 2019-12-14 17:46:59 +03:00
John Preston
1f2b5ba0a2 Update spellcheck and ui submodules. 2019-12-14 17:46:31 +03:00
John Preston
dc3e9e2f3d Fix updates script and instruction. 2019-12-13 18:13:28 +03:00
John Preston
ff6df75adc Fix QR login to different dc. 2019-12-13 18:11:31 +03:00
John Preston
07ceee79ff Support password in QR login. 2019-12-13 18:00:21 +03:00
John Preston
55859f3caa Fix layout regressions in login. 2019-12-13 17:51:50 +03:00
John Preston
418b0e7db0 Always try to stream video messages. 2019-12-13 17:51:14 +03:00
John Preston
38199276f1 Fix round video messages streaming. 2019-12-12 16:26:53 +03:00
John Preston
7f26f81e4f Give names to MTProto session threads. 2019-12-12 16:26:26 +03:00
John Preston
8211c94a74 Prepare frames for all instances with requests. 2019-12-12 12:34:40 +03:00
John Preston
dbdd9aa481 Stop GIFs that are far away from the screen. 2019-12-11 17:15:29 +03:00
John Preston
9339db900f Pause GIFs in message history. 2019-12-11 17:01:11 +03:00
John Preston
2d7adbc68a All players create own Media::Streaming::Instance. 2019-12-11 15:09:21 +03:00
John Preston
bfa5accc29 Use shared player for each document. 2019-12-11 13:15:48 +03:00
John Preston
f91f77ff2e Make temporary keys live one day. 2019-12-10 18:29:18 +03:00
John Preston
1243123579 Allow multiple players of the same file. 2019-12-10 17:06:22 +03:00
John Preston
8e8c356659 Use streamed video for GIFs in History. 2019-12-10 15:49:37 +03:00
John Preston
b73f1be856 Make some video player code reusable. 2019-12-10 15:13:12 +03:00
John Preston
c7836be614 In emoji suggestions match only full strings. 2019-12-10 11:17:27 +03:00
John Preston
f88466a376 Don't refresh messages redundantly.
Fixes #6781.
2019-12-10 10:49:31 +03:00
John Preston
e60a9f0943 Fix key creation for media cluster. 2019-12-09 18:42:11 +03:00
John Preston
41e13e39bc Apply ignore_restriction_reasons from config. 2019-12-09 18:42:11 +03:00
John Preston
431b7445c3 Allow editing sensitive content filtering. 2019-12-09 15:59:08 +03:00
John Preston
c301be3826 Fix GIFs and animated stickers freeze. 2019-12-09 09:37:02 +03:00
John Preston
998b36f014 Use installed opus on non-Windows. 2019-12-09 09:36:37 +03:00
John Preston
5b787a6759 Add more extensions as possibly-executable. 2019-12-08 17:54:21 +03:00
John Preston
cf0ea4a0a1 Read project version from build/version file. 2019-12-06 18:52:44 +03:00
John Preston
aea5a8ff76 Respect TDESKTOP_DISABLE_GTK_INTEGRATION. 2019-12-06 17:46:45 +03:00
John Preston
fd1a8014c4 Add Packer project to cmake configuration. 2019-12-06 15:47:25 +03:00
John Preston
7e3bc2966e Closed alpha version 1.9.1.8: Re-enable crash reports. 2019-12-06 14:28:07 +03:00
John Preston
f1877641e5 Closed alpha version 1.9.1.8: Fix macOS build. 2019-12-06 14:22:46 +03:00
John Preston
240117b77e Use URL instead of string for QR login. 2019-12-06 13:27:10 +03:00
John Preston
352d87ba76 Closed alpha version 1.9.1.8. 2019-12-06 13:23:04 +03:00
John Preston
b5dc22b77b Add configure script for cmake. 2019-12-06 13:17:40 +03:00
John Preston
9310728a11 Fix build on Windows. 2019-12-06 11:39:13 +03:00
John Preston
e3fa17dd4f Merge remote-tracking branch 'private/alpha' into cmake 2019-12-06 11:08:14 +03:00
John Preston
ae8fb14f9e Use 8 seconds timeout for request duration. 2019-12-06 10:05:38 +03:00
John Preston
7fb24d77c0 Check request duration when adding sessions. 2019-12-05 16:38:28 +03:00
John Preston
e426f2895b Add download sessions if it works fast enough. 2019-12-05 14:46:28 +03:00
John Preston
ee94e78533 All mtproto downloads using DownloadMtprotoTask. 2019-12-05 11:32:33 +03:00
John Preston
78809873b0 Fix build for Linux 32 bit. 2019-12-05 11:09:37 +03:00
John Preston
4611727ab9 Rewrite webFileLoader without Storage::DownloadManager. 2019-12-04 15:15:58 +03:00
John Preston
619dbe9b11 Initial Linux build. 2019-12-04 11:22:11 +03:00
John Preston
f522cc9444 Load streaming parts using Storage::DownloadManager. 2019-12-04 10:42:55 +03:00
John Preston
3ae2986c25 Allow variable count of download sessions. 2019-12-04 09:51:21 +03:00
John Preston
cb2c6e4b89 Change QR code phrase. 2019-12-03 17:50:25 +03:00
John Preston
fb86bb579b Correctly track DC index in Downloader-s. 2019-12-03 15:45:35 +03:00
John Preston
8535a579ca Fix by-word/paragraph text selection in WebPage. 2019-12-03 11:08:55 +03:00
John Preston
12f5ccaaa5 Use vector queues in mtproto file downloader. 2019-12-03 10:25:27 +03:00
John Preston
524d64a462 Clip intro animation by Next button. 2019-12-02 20:12:24 +03:00
John Preston
66961dce83 Closed alpha version 1.9.1.7: Update lib_spellcheck. 2019-12-02 19:23:59 +03:00
John Preston
6f092bbb57 Closed alpha version 1.9.1.7. 2019-12-02 18:52:54 +03:00
John Preston
872ff633b6 Update Qt patch. 2019-12-02 18:52:30 +03:00
23rd
d542291d8f Added ability to invoke macOS Character Palette. 2019-12-02 18:50:32 +03:00
23rd
de94afd966 Updated and fixed building-cmake.md. 2019-12-02 18:50:30 +03:00
John Preston
907965531c Don't bind key for more than 10 seconds. 2019-12-02 16:30:33 +03:00
John Preston
91f50e8bdc Move some more code to lib_mtproto. 2019-12-02 16:11:22 +03:00
John Preston
718de09aa6 Handle state / resend requests separately. 2019-12-02 16:11:22 +03:00
John Preston
3b703d7262 Keep in sent container only important msgIds. 2019-12-02 16:11:22 +03:00
John Preston
efaa3ba453 Handle sent containers separately. 2019-12-02 16:11:22 +03:00
John Preston
9caac426ef Correctly check container lifetime. 2019-12-02 16:11:22 +03:00
John Preston
cbebcb1bc9 Fix notification about a new mtproto session. 2019-12-02 16:11:22 +03:00
John Preston
01ecd73a62 Implement build for Mac App Store. 2019-11-30 12:04:51 +03:00
John Preston
6f2a37cbab Fix build for Windows. 2019-11-29 17:32:24 +03:00
John Preston
eea508066c Closed alpha version 1.9.1.6. 2019-11-29 15:38:41 +03:00
John Preston
b3a255b3f1 Fix file references in webpage collages. 2019-11-29 15:36:06 +03:00
John Preston
ae98e4ae44 Support file reference refresh in Export. 2019-11-29 15:36:06 +03:00
John Preston
64535251e8 Use limited number of threads in MTP. 2019-11-29 15:36:06 +03:00
John Preston
c742d7406c Make MTP::Session handle the connection thread. 2019-11-29 15:36:06 +03:00
John Preston
06f5f7f7d9 Don't always restart connection on config change. 2019-11-29 15:36:06 +03:00
John Preston
e6c86b19db Use app config value for QR login. 2019-11-29 15:36:06 +03:00
John Preston
55f83129b7 Remove Q_OBJECTs from Intro. 2019-11-29 15:36:05 +03:00
John Preston
e943264823 Pass MTP::Instance to MTP::Sender. 2019-11-29 15:36:05 +03:00
John Preston
a0152557ec Cross-fade login QR. 2019-11-29 15:36:05 +03:00
John Preston
f4bf79b067 Add QR code generation progress. 2019-11-29 15:36:05 +03:00
John Preston
ba7762305e Use special plane icon for login QR. 2019-11-29 15:36:05 +03:00
John Preston
7dbba75776 Make login QR follow the color theme. 2019-11-29 15:36:05 +03:00
John Preston
339a80e192 Improve QR code login layout. 2019-11-29 15:36:04 +03:00
John Preston
32d567120b Change URL in Windows setup script. 2019-11-29 15:36:04 +03:00
John Preston
d5718f96b8 First working auth by QR code. 2019-11-29 15:36:04 +03:00
John Preston
95ba12e3cb Update API scheme to layer 107. 2019-11-29 15:36:04 +03:00
John Preston
82f06cee55 Build OS X 10.10-10.11 version with Qt 5.6.2. 2019-11-29 15:10:33 +03:00
John Preston
2f2d698545 Use absolute paths instead of target_link_directories. 2019-11-29 13:56:07 +03:00
John Preston
90de0b687f Use faster style generation and better source groups. 2019-11-29 11:37:29 +03:00
John Preston
d932271c60 Use BYPRODUCTS instead of OUTPUT for codegen. 2019-11-28 11:43:00 +03:00
John Preston
5bfb98b70d Initial build with Xcode. 2019-11-25 18:46:02 +03:00
John Preston
fe1aacd37b Rename update.cpp to updater_win.cpp. 2019-11-25 18:34:02 +03:00
John Preston
8979525dc0 Closed alpha version 1.9.1.4. 2019-11-25 09:57:55 +03:00
John Preston
9d0332be0a Closed alpha version 1.9.1.3: Update lib_spellcheck. 2019-11-23 19:40:06 +03:00
John Preston
9e37088f43 Closed alpha version 1.9.1.3. 2019-11-23 19:34:15 +03:00
John Preston
8f17fe98e0 Fix using undefined variables. 2019-11-22 21:03:57 +03:00
John Preston
8be4dfb346 Use explicit fields for sent container ids wrap. 2019-11-22 17:38:01 +03:00
John Preston
46a42e02bc Fix lost bind key messages. 2019-11-22 12:06:48 +03:00
John Preston
2597bc9f4e Fix layout of polls with huge questions. 2019-11-21 18:28:49 +03:00
John Preston
ec84589eca Update lib_lottie with useCache fixes. 2019-11-21 18:18:53 +03:00
John Preston
11b02b4f88 Use namespaced library aliases. 2019-11-21 17:43:20 +03:00
John Preston
9e5262008f Add more options. 2019-11-21 14:56:17 +03:00
John Preston
311a1274c5 Closed alpha version 1.9.1.2: Update lib_spellcheck. 2019-11-21 13:46:29 +03:00
John Preston
276adec0ff Fix temporary keys for media cluster. 2019-11-21 13:38:02 +03:00
John Preston
54b5342af4 Closed alpha version 1.9.1.2: Key expire in 10 min. 2019-11-20 17:30:20 +03:00
John Preston
410efc924b Closed alpha version 1.9.1.2. 2019-11-20 17:26:31 +03:00
John Preston
e748a68153 Fix build for macOS. 2019-11-20 17:26:07 +03:00
John Preston
4edfd4804f Fix destroyed key clearing. 2019-11-20 16:33:45 +03:00
John Preston
4c24ec7725 Fix keys destruction on logout. 2019-11-20 14:50:19 +03:00
John Preston
bdc7f4114f Move some things from SessionData. 2019-11-20 13:41:14 +03:00
John Preston
885738ac32 Always choose correct address for key creation. 2019-11-20 12:16:53 +03:00
John Preston
43bab3eeaa Fix instant restarts with additional timeout. 2019-11-20 11:23:30 +03:00
John Preston
f424cb54f7 Create keys not simultaneously. 2019-11-19 19:22:02 +03:00
John Preston
e6d3b2b098 Fix resending requests after new session. 2019-11-19 19:14:50 +03:00
John Preston
e7e1c9aa5a Don't handle 'msg_resend_req'. 2019-11-19 14:55:39 +03:00
John Preston
173ae746a2 First version of working through temp keys. 2019-11-19 13:10:51 +03:00
John Preston
d9fc3619c2 Remove all signals from ConnectionPrivate. 2019-11-18 15:53:37 +03:00
John Preston
cfe12f773f Move some modules to lib_mtproto. 2019-11-18 12:28:14 +03:00
John Preston
782025a0a6 Wrap 'divmodti4' the same as 'divmoddi4'. 2019-11-18 12:10:52 +03:00
John Preston
a05e2f0d8d Use 'uname -m' instead of 'uname -p'. 2019-11-18 12:10:31 +03:00
John Preston
50b2b6c5b1 Use installed opus on non-Windows. 2019-11-18 11:52:06 +03:00
John Preston
1afae74d1e Remove libdee from linking. 2019-11-18 10:52:45 +03:00
John Preston
da4120bddd Fix building without glib. 2019-11-18 10:52:32 +03:00
John Preston
c961acabbc Include private header only if needed. 2019-11-18 10:52:08 +03:00
John Preston
7b6fcb467a Move common code to cmake_helpers. 2019-11-18 00:34:34 +03:00
John Preston
e5bd187d4d Use precompiled header from cmake 3.16. 2019-11-18 00:29:03 +03:00
John Preston
90c6475c8c Closed alpha version 1.9.1.1: Fix build on macOS. 2019-11-15 17:11:05 +03:00
John Preston
8fa9172818 Closed alpha version 1.9.1.1. 2019-11-15 16:16:33 +03:00
John Preston
cfcd12e879 Several spellchecker fixes. 2019-11-15 16:16:33 +03:00
23rd
1ef877d9a5 Fixed moving cursor to begin/end when using reply shortcuts for macOS. 2019-11-15 16:16:33 +03:00
John Preston
be06d68468 Don't lock whole key creation by a mutex. 2019-11-15 16:16:33 +03:00
John Preston
055b99f5b0 Don't use shared_ptr for Dcenters. 2019-11-15 16:16:33 +03:00
John Preston
f37ab6e38e Remove checked key property. 2019-11-15 16:16:33 +03:00
John Preston
fe1e627cac Improve working with sessions. 2019-11-15 16:16:33 +03:00
John Preston
1e252a6505 Remove old debug information. 2019-11-15 16:16:32 +03:00
John Preston
3a7faffa3a Use thread_local counter in logs for thread index. 2019-11-15 16:16:32 +03:00
John Preston
8b14249cd2 Move DumpToText from Telegram to lib_mtproto. 2019-11-15 16:16:32 +03:00
John Preston
7243fb52ad Check keys that receive -404 error codes. 2019-11-15 16:16:32 +03:00
John Preston
1524b4a930 Allow creating temporary keys. 2019-11-15 16:16:32 +03:00
John Preston
08bfe6f1c1 Extract mtproto key generation code. 2019-11-15 16:16:32 +03:00
John Preston
70dbd9e5b4 Add base::expected. 2019-11-15 16:16:26 +03:00
John Preston
2577bedeac Remove mtproto/facade.h from main pch. 2019-11-13 11:31:12 +03:00
Christian Hesse
0c0c8f3584 libnotify: capabilities are not exclusive
Capabilities "actions" and "body-markup" can be available at the
same time.

Signed-off-by: Christian Hesse <mail@eworm.de>
2019-11-13 11:22:08 +03:00
John Preston
3b1fd9e45a Fix travis build. 2019-11-13 11:21:39 +03:00
Nicholas Guriev
793862bee6 Fix -Wredundant-move and -Wdeprecated-copy warnings (#6663)
* Do not move result at end of function

This makes GCC 9.1.2 happy with the active -Wredundant-move warning.
Indeed, such moving of local variables or local arguments before
returning is unnecessary and prevents the compiler from copy elision
optimization.
2019-11-12 18:15:34 +03:00
RadRussianRus
a196b0aba7 Fixed animated stickers cache 2019-11-11 19:46:33 +03:00
John Preston
61723bd794 Initial Windows Debug build with cmake. 2019-11-11 13:39:48 +03:00
John Preston
85060cd655 Compile all code with cmake. 2019-11-09 19:06:00 +03:00
John Preston
c4da31c213 Add lib_storage as submodule. 2019-11-08 15:00:15 +03:00
John Preston
a18baaae2c Add all code generation targets. 2019-11-08 14:08:40 +03:00
John Preston
02a71d745d Build lib_ui with cmake. 2019-11-08 13:05:59 +03:00
John Preston
b7fed0377c Build codegen utils with cmake. 2019-11-08 11:30:20 +03:00
Sean Wei
325e4af356 Fix building instruction of macOS (crashpad) 2019-11-07 14:21:22 +03:00
John Preston
6a668fc171 'TDESKTOP_DISABLE_CRASH_REPORTS' => 'DESKTOP_APP_DISABLE_..' 2019-11-07 13:53:55 +03:00
John Preston
35befb2b3c Fix snapcraft build. 2019-11-07 13:11:47 +03:00
John Preston
86695f60a3 Fix selected text colors on macOS. 2019-11-07 13:11:40 +03:00
John Preston
4e1e7a5a9c Beta version 1.9.1: gyp fixes. 2019-11-06 19:44:50 +03:00
John Preston
2677a86ffd Beta version 1.9.1.
- Bug fixes and other minor improvements.
2019-11-06 19:32:29 +03:00
John Preston
a293018a87 Fix travis build. 2019-11-06 19:25:47 +03:00
John Preston
c8a98b6429 Fix appveyor build. 2019-11-06 19:25:46 +03:00
23rd
16d06527be Updated lib_spellcheck.
- Fixed #6756.
2019-11-06 15:45:03 +03:00
23rd
c867727e1c Removed spellcheck setting for OS X 10.10/10.11 version. 2019-11-06 15:31:41 +03:00
John Preston
1a4c1cbbf4 Link xkbcommon-x11 and build Qt with XCB XKB.
Fixes #6754.
2019-11-06 12:03:54 +03:00
John Preston
c1a241c7e7 Upload full source tarballs to assets. 2019-11-06 11:11:16 +03:00
RadRussianRus
1368d6e7db Fix build instructions for Linux (Breakpad) 2019-11-06 09:16:43 +03:00
RadRussianRus
908b513601 Fix build instructions for Windows (ThirdParty/patches and zlib) 2019-11-06 09:16:43 +03:00
John Preston
3023a383fc Update build scripts. 2019-11-06 00:27:20 +03:00
John Preston
54a64c01dc Version 1.9.
- System spellchecker on Windows 8+ and macOS 10.12+.
2019-11-05 17:46:42 +03:00
John Preston
3fd2d73f04 Fix layout in the spellchecker settings block. 2019-11-05 17:44:39 +03:00
John Preston
d1e2fec760 Fix crash in destructor of spellchecked input field. 2019-11-05 17:03:48 +03:00
John Preston
b94ed1fc3b Remove 'mac32' and add 'osx' special targets. 2019-11-05 15:45:55 +03:00
John Preston
9a44531953 Return GCC feature checks on Linux. 2019-11-05 14:51:03 +03:00
John Preston
1eb62579e2 Support building OS X 10.10/10.11 version. 2019-11-05 14:27:42 +03:00
John Preston
88e0342e02 Update to the latest submodules. 2019-11-05 14:27:42 +03:00
John Preston
6a0c7f3909 Update docs, fix patches revision. 2019-11-05 14:27:41 +03:00
23rd
ef101d63b1 Updated supported macOS versions. 2019-11-05 13:23:56 +03:00
23rd
6c2479c09f Fixed moving cursor when using reply shortcuts.
- Fixed #6038.
 - Slightly refactored comparison of modifiers.
2019-11-05 13:23:56 +03:00
John Preston
f945e88d13 Fix tilde workaround in Open Sans. 2019-11-05 13:23:56 +03:00
John Preston
bd0aee2f77 Use userpic if no photo thumbnail is loaded. 2019-11-05 13:23:56 +03:00
John Preston
d63e50944a Update submodules to the latest spellcheck. 2019-11-05 13:23:56 +03:00
John Preston
272f2d937b Fix build in Linux. 2019-10-20 22:05:35 +04:00
John Preston
6529edff92 Closed alpha version 1.8.15.2. 2019-10-20 21:43:31 +04:00
23rd
155d28d6d0 Updated lib_ui. 2019-10-20 21:11:38 +04:00
23rd
aa9dc2bee2 Added phrases for spellchecker. 2019-10-20 21:11:38 +04:00
23rd
4be178c75f Added SpellingHighlighter to InputField in HistoryWidget and some boxes. 2019-10-20 21:11:38 +04:00
23rd
6e95cfc24d Added lib_spellcheck. 2019-10-20 21:11:37 +04:00
23rd
1056021059 Added new setting to disable spellchecker. 2019-10-20 21:11:37 +04:00
John Preston
d535f5b3bc Fix build in Linux. 2019-10-20 21:09:07 +04:00
John Preston
92d48a7846 Fix build on Windows. 2019-10-20 15:32:44 +04:00
John Preston
467be135d6 Fix build in macOS. 2019-10-20 15:24:09 +04:00
John Preston
768a3d5a12 Backport a fix for custom window title. 2019-10-20 14:23:02 +04:00
John Preston
27a83a7a09 Use base::FileNameFromUserString. 2019-10-20 14:22:46 +04:00
John Preston
3ae7f9f93d Fix color conversion for Qt 5.12.5. 2019-10-20 13:00:36 +04:00
John Preston
e952c513d5 Use old non-crashing rlottie. 2019-10-20 12:13:20 +04:00
John Preston
e745bb7718 Fix instructions for MSVC. 2019-10-19 12:27:57 +04:00
John Preston
3ce72d0696 Closed alpha version 1.8.15.1. 2019-10-19 12:27:56 +04:00
John Preston
28719939a0 Fix tray icon on macOS in Qt 5.12.5. 2019-10-19 12:27:56 +04:00
John Preston
85acdbc7ed Disable custom scaling by envvar. 2019-10-19 12:27:56 +04:00
John Preston
b880d4aa30 Use custom named fonts. 2019-10-19 12:27:56 +04:00
John Preston
01936b5f1b Build with Qt 5.12.5 and OpenSSL 1.1.1. 2019-10-19 12:27:56 +04:00
John Preston
c6b3257412 Update lib_ui.
Fixes #6632, fixes #6635.
2019-10-19 12:27:56 +04:00
John Preston
9a498616c6 Fix build for Xcode 11. 2019-10-19 12:27:56 +04:00
John Preston
c88ee34b1d Fix build with range-v3 0.9.1. 2019-10-19 12:27:56 +04:00
John Preston
bc2a0fb505 Use TL code generator from lib_tl. 2019-10-19 12:27:56 +04:00
John Preston
7bb23519f9 Use base::Platform::ShowInFolder. 2019-10-19 12:27:56 +04:00
John Preston
30a1bd7ba2 Use base::call_delayed. 2019-10-19 12:27:56 +04:00
John Preston
09a7daf164 Update submodules. 2019-10-19 12:27:56 +04:00
John Preston
e757e6f67b Move private folder. 2019-10-19 12:27:56 +04:00
John Preston
25b6dea5e3 Build cmake 3.15.3 from source. 2019-10-19 12:27:56 +04:00
John Preston
2fc9fd5887 Remove some unused code. 2019-10-19 12:27:56 +04:00
John Preston
c87f9d0074 Fix build for Linux. 2019-10-19 12:27:56 +04:00
John Preston
fcb2950ce8 Use slide animation from lib_ui. 2019-10-19 12:27:56 +04:00
John Preston
250b7240f6 Add lib_[r]lottie as submodules. 2019-10-19 12:27:56 +04:00
John Preston
dad73c0e7b Build with updated submodules. 2019-10-19 12:27:56 +04:00
John Preston
959901d599 Use toasts from lib_ui. 2019-10-19 12:27:56 +04:00
John Preston
2d3f683003 Rename core_ui_integration to ui_integration. 2019-10-19 12:27:56 +04:00
John Preston
f677b116f9 Use install_base_filter for lib_base. 2019-10-19 12:27:56 +04:00
John Preston
a6b96662c4 Use some resources from lib_ui. 2019-10-19 12:27:56 +04:00
John Preston
a6c84c36c0 Use layers and boxes from lib_ui. 2019-10-19 12:27:52 +04:00
John Preston
860353824b Fix build in Xcode. 2019-10-19 12:27:34 +04:00
John Preston
383195f1b2 Use some icons from lib_ui. 2019-10-19 12:27:34 +04:00
John Preston
e3f5a505eb Fix folder structure for Xcode build. 2019-10-19 12:27:34 +04:00
John Preston
246c45ce0e Use lib_ui from submodule. 2019-10-19 12:27:28 +04:00
John Preston
1b89348d89 Use lib_rpl / lib_base from submodules. 2019-10-19 10:30:08 +04:00
John Preston
be9398b05a Add several submodules from desktop-app. 2019-10-19 10:29:11 +04:00
John Preston
daa33a5726 Update API scheme to layer 106. 2019-10-13 15:31:44 +04:00
John Preston
17baac710e Fix save dialog in macOS for streamed videos. 2019-10-07 19:57:26 +03:00
RadRussianRus
883d6dcede Fixed inline message restriction width 2019-10-07 18:58:21 +03:00
RadRussianRus
261a83eda3 Show restricted date to user (#6642)
* Show restricted date to user
* Fixed attach button toast
* Fixed attach button toast in scheduled messages
2019-10-07 17:35:22 +03:00
John Preston
5f06279b9a Version 1.8.15.
- Bug fixes and other minor improvements.
2019-10-07 17:33:41 +03:00
John Preston
2835aa446f Fix possible HistoryHider bug on old OS X. 2019-10-07 17:28:36 +03:00
John Preston
55d5f6e03d Fix possible crash in emoji suggestions.
Fixes #6652, fixes #6654.
2019-10-07 12:35:49 +03:00
John Preston
60b39c8f7e Fix inline result previews. 2019-10-07 12:19:04 +03:00
John Preston
de230332b9 Version 1.8.14: Fix crash in text processing on old OS X. 2019-10-03 19:51:09 +03:00
John Preston
dcf79df0b2 Version 1.8.13.
- Bug fixes and other minor improvements.
2019-10-03 13:26:39 +03:00
John Preston
9773563926 Fix history geometry update being lost.
Fixes #6629.
2019-10-03 13:25:05 +03:00
John Preston
3779ad46ca Fix crash in pre-launch logging.
Fixes #6635.
2019-10-03 12:37:00 +03:00
John Preston
4e7946d03e Allow scales below 100.
Fixes #6632.
2019-10-03 12:34:58 +03:00
John Preston
606a90a4ac Fix crash in emoji suggestions.
Fixes #6636.
2019-10-03 12:13:41 +03:00
John Preston
af818b40aa Version 1.8.12: Apply user settings in Session().
Fixes #6617.
2019-10-02 13:47:40 +03:00
John Preston
ecfe1dacb2 Version 1.8.12: Fix build for Xcode. 2019-10-02 12:54:29 +03:00
John Preston
60640c7087 Version 1.8.12: Fix 'edited' badge display. 2019-10-02 12:08:31 +03:00
RadRussianRus
982edcb310 Resize message with photo when bubbled 2019-10-02 11:56:33 +03:00
Jiachen YANG
4669c07dc5 fix range-v3 version to 0.9.1 2019-10-02 11:52:55 +03:00
Jiachen YANG
c164985233 tweak vs2019 compiler settings to be compatible with newer range-v3 2019-10-02 11:52:55 +03:00
Jiachen YANG
497df7f4b2 change deprecated ranges::to_ to ranges::to (no underscore) 2019-10-02 11:52:55 +03:00
Jiachen YANG
56aab1aa07 explicitly specify the upper bound in ranges::view::ints 2019-10-02 11:52:55 +03:00
Jiachen YANG
8abeb4a9db include range/v3/range/conversion.hpp instead of range/v3/to_container.hpp 2019-10-02 11:52:55 +03:00
Jiachen YANG
d78716d7d4 appveyor use range-v3 latest branch 2019-10-02 11:52:55 +03:00
Jiachen YANG
d7489f8e67 Revert "Use 0.5.0 version of range-v3."
This reverts commit 3355e6da0c.
2019-10-02 11:52:55 +03:00
Jiachen YANG
9d850b71e7 be compatible with range-v3 0.9.x/1.0 branch
This made 2 changes to the current code base to be compatible with higher versions of range-v3 library.
1. ranges::iterator_range was renamed to subrange, see https://github.com/ericniebler/range-v3/issues/766
2. PercentCounterItem need an operator== for ranges::sort for some reason
2019-10-02 11:52:55 +03:00
RadRussianRus
684cfa16b8 Do not show edit timer for supergroup admins 2019-10-02 11:31:43 +03:00
John Preston
2cb7d76417 Optimize unixtime refresh. 2019-10-02 11:30:50 +03:00
23rd
9bf8b619fe Refactored ability to display media preview from touchbar. 2019-10-02 11:30:23 +03:00
John Preston
664162982c Version 1.8.12: Fix build for old OS X. 2019-10-02 11:21:56 +03:00
John Preston
718f862be0 Version 1.8.12: Fix build for Mac App Store. 2019-10-02 11:21:02 +03:00
John Preston
489bd22828 Version 1.8.12.
- Bug fixes and other minor improvements.
2019-10-02 11:18:23 +03:00
John Preston
65b5a29288 Fix local url handling.
Regression was introduced in 849deb57e2.

Fixes #6622.
2019-10-02 11:11:03 +03:00
John Preston
bf345da87b Version 1.8.11: Fix build for Xcode. 2019-10-02 00:57:16 +03:00
John Preston
1e5aa2a78d Version 1.8.11.
- Bug fixes and other minor improvements.
2019-10-01 23:59:46 +03:00
John Preston
8cf62c312f Allow not to cache emoji sprites. 2019-10-01 23:59:46 +03:00
John Preston
3b0bf7cb1e Move some more widgets and effects. 2019-10-01 23:59:46 +03:00
John Preston
673072ea5b Reorganize GYP files. 2019-10-01 23:59:46 +03:00
John Preston
849deb57e2 Move many widget classes to lib_ui. 2019-10-01 23:59:46 +03:00
John Preston
dda587a2fc Move QtConnectionOwner to base/qt_connection. 2019-10-01 23:59:46 +03:00
John Preston
c057f28425 Move standard buttons to lib_ui. 2019-10-01 23:59:46 +03:00
John Preston
a16c6ca41a Support more request types. 2019-10-01 23:59:46 +03:00
John Preston
c5845f17ae Remove twidget header. 2019-10-01 23:59:46 +03:00
John Preston
e2f54eb3e9 Move some style code to lib_ui. 2019-10-01 23:59:46 +03:00
John Preston
5a1c8e6a0a Move fonts to a separate .qrc file. 2019-10-01 23:59:46 +03:00
John Preston
b73390a3f6 Support emoji in popup menu items. 2019-10-01 23:59:46 +03:00
John Preston
0c713a930a Remove app.h / facades.h from precompiled header. 2019-10-01 23:59:46 +03:00
1258 changed files with 35796 additions and 113323 deletions

View File

@@ -1,86 +0,0 @@
@echo off
IF "%BUILD_DIR%"=="" SET BUILD_DIR=C:\TBuild
SET LIB_DIR=%BUILD_DIR%\Libraries
SET SRC_DIR=%BUILD_DIR%\tdesktop
SET QT_VERSION=5_6_2
call:configureBuild
call:getDependencies
call:setupGYP
cd %SRC_DIR%
echo Finished!
GOTO:EOF
:: FUNCTIONS
:logInfo
echo [INFO] %~1
GOTO:EOF
:logError
echo [ERROR] %~1
GOTO:EOF
:getDependencies
call:logInfo "Clone dependencies repository"
git clone -q --depth 1 --branch master https://github.com/telegramdesktop/dependencies_windows.git %LIB_DIR%
cd %LIB_DIR%
git clone --depth 1 --branch 0.5.0 https://github.com/ericniebler/range-v3
if exist prepare.bat (
call prepare.bat
) else (
call:logError "Error cloning dependencies, trying again"
rmdir %LIB_DIR% /S /Q
call:getDependencies
)
GOTO:EOF
:setupGYP
call:logInfo "Setup GYP/Ninja and generate VS solution"
cd %LIB_DIR%
git clone https://github.com/telegramdesktop/gyp.git
cd gyp
git checkout tdesktop
SET PATH=%PATH%;%BUILD_DIR%\Libraries\gyp;%BUILD_DIR%\Libraries\ninja;
cd %SRC_DIR%
git submodule init
git submodule update
cd %SRC_DIR%\Telegram
call gyp\refresh.bat --api-id 17349 --api-hash 344583e45741c457fe1862106095a5eb
GOTO:EOF
:configureBuild
call:logInfo "Configuring build"
call:logInfo "Build version: %BUILD_VERSION%"
set TDESKTOP_BUILD_DEFINES=
echo %BUILD_VERSION% | findstr /C:"disable_register_custom_scheme">nul && (
set TDESKTOP_BUILD_DEFINES=%TDESKTOP_BUILD_DEFINES%,TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME
)
echo %BUILD_VERSION% | findstr /C:"disable_crash_reports">nul && (
set TDESKTOP_BUILD_DEFINES=%TDESKTOP_BUILD_DEFINES%,TDESKTOP_DISABLE_CRASH_REPORTS
)
echo %BUILD_VERSION% | findstr /C:"disable_network_proxy">nul && (
set TDESKTOP_BUILD_DEFINES=%TDESKTOP_BUILD_DEFINES%,TDESKTOP_DISABLE_NETWORK_PROXY
)
echo %BUILD_VERSION% | findstr /C:"disable_desktop_file_generation">nul && (
set TDESKTOP_BUILD_DEFINES=%TDESKTOP_BUILD_DEFINES%,TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION
)
echo %BUILD_VERSION% | findstr /C:"disable_gtk_integration">nul && (
set TDESKTOP_BUILD_DEFINES=%TDESKTOP_BUILD_DEFINES%,TDESKTOP_DISABLE_GTK_INTEGRATION
)
if not "%TDESKTOP_BUILD_DEFINES%" == "" (
set "TDESKTOP_BUILD_DEFINES=%TDESKTOP_BUILD_DEFINES:~1%"
)
call:logInfo "Build Defines: %TDESKTOP_BUILD_DEFINES%"
GOTO:EOF

View File

@@ -8,7 +8,7 @@ about: Report errors or unexpected behavior.
Thanks for reporting issues of Telegram Desktop!
To make it easier for us to help you please enter detailed information below.
-->
-->
### Steps to reproduce
1.
2.

103
.github/workflows/issue_closer.yml vendored Normal file
View File

@@ -0,0 +1,103 @@
name: Issue closer.
on:
issues:
types: opened
jobs:
comment:
runs-on: ubuntu-latest
steps:
- name: Get the latest version.
run: |
tag=$(git ls-remote --tags git://github.com/$GITHUB_REPOSITORY | cut -f 2 | tail -n1)
echo $tag
echo ::set-env name=LATEST_TAG::$tag
- name: Check a version from an issue.
uses: actions/github-script@0.4.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
let errorStr = "Version not found.";
let item1 = "Version of Telegram Desktop";
let item2 = "Used theme";
let body = context.payload.issue.body;
console.log("Body of issue:\n" + body);
let index1 = body.indexOf(item1);
let index2 = body.indexOf(item2);
index2 = (index2 == -1) ? Number.MAX_SAFE_INTEGER : index2;
console.log("Index 1: " + index1);
console.log("Index 2: " + index2);
if (index1 == -1) {
console.log(errorStr);
return;
}
function parseVersion(str) {
let pattern = /[0-9]\.[0-9][0-9.]{0,}/g;
return str.match(pattern);
}
function firstNum(version) {
return version[0].split(".")[0];
}
let issueVer = parseVersion(body.substring(index1 + item1.length, index2));
if (issueVer == undefined) {
console.log(errorStr);
return;
}
console.log("Version from issue: " + issueVer[0]);
let latestVer = parseVersion(process.env.LATEST_TAG);
if (latestVer == undefined) {
console.log(errorStr);
return;
}
console.log("Version from tags: " + latestVer[0]);
let issueNum = firstNum(issueVer);
let latestNum = firstNum(latestVer);
if (issueNum <= latestNum && issueNum < 5) {
console.log("Seems the version of this issue is fine!");
return;
}
let message = `
Sorry, but according to the version you specify in this issue, \
you are using the [Telegram for macOS](https://macos.telegram.org), \
not the [Telegram Desktop](https://desktop.telegram.org).
You can report your issue to [the group](https://t.me/macswift) \
or to [the repository of Telegram for macOS](https://github.com/overtake/TelegramSwift).
If I made a mistake and closed your issue wrongly, please reopen it. Thanks!
`;
let params = {
owner: context.issue.owner,
repo: context.issue.repo,
issue_number: context.issue.number
};
github.issues.createComment({
...params,
body: message
});
github.issues.addLabels({
...params,
labels: ['TG macOS Swift']
});
github.issues.update({
...params,
state: 'closed'
});

493
.github/workflows/linux.yml vendored Normal file
View File

@@ -0,0 +1,493 @@
name: Linux.
on:
push:
paths-ignore:
- 'docs/**'
- '*.md'
pull_request:
paths-ignore:
- 'docs/**'
- '*.md'
jobs:
linux:
name: Ubuntu 14.04
runs-on: ubuntu-latest
container: ubuntu:trusty
strategy:
matrix:
defines:
- ""
env:
GIT: "https://github.com"
QT: "5_12_5"
QT_PREFIX: "/usr/local/desktop-app/Qt-5.12.5"
OPENSSL_VER: "1_1_1"
OPENSSL_PREFIX: "/usr/local/desktop-app/openssl-1.1.1"
CMAKE_VER: "3.16.3"
UPLOAD_ARTIFACT: "false"
ONLY_CACHE: "false"
MANUAL_CACHING: "3"
DOC_PATH: "docs/building-cmake.md"
steps:
- name: Get repository name.
run: echo ::set-env name=REPO_NAME::${GITHUB_REPOSITORY##*/}
- name: Clone.
uses: actions/checkout@v1
with:
submodules: recursive
- name: First set up.
run: |
cd ..
mv $REPO_NAME temp
mkdir $REPO_NAME
mv temp $REPO_NAME/$REPO_NAME
cd $REPO_NAME
sudo apt-get update
sudo apt-get install software-properties-common -y && \
sudo apt-get install git libexif-dev liblzma-dev libz-dev libssl-dev \
libgtk2.0-dev libice-dev libsm-dev libicu-dev libdrm-dev dh-autoreconf \
autoconf automake build-essential libass-dev libfreetype6-dev \
libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev \
libvorbis-dev libenchant-dev libxcb1-dev libxcb-image0-dev libxcb-shm0-dev \
libxcb-xfixes0-dev libxcb-keysyms1-dev libxcb-icccm4-dev libatspi2.0-dev \
libxcb-render-util0-dev libxcb-util0-dev libxcb-xkb-dev libxrender-dev \
libasound-dev libpulse-dev libxcb-sync0-dev libxcb-randr0-dev bison \
libx11-xcb-dev libffi-dev libncurses5-dev pkg-config texi2html yasm \
zlib1g-dev xutils-dev python-xcbgen chrpath gperf wget -y --force-yes && \
sudo add-apt-repository ppa:ubuntu-toolchain-r/test -y && \
sudo apt-get update && \
sudo apt-get install gcc-8 g++-8 -y && \
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 && \
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 60 && \
sudo update-alternatives --config gcc && \
sudo add-apt-repository --remove ppa:ubuntu-toolchain-r/test -y
gcc --version
gcc --version > CACHE_KEY.txt
echo $MANUAL_CACHING >> CACHE_KEY.txt
md5cache=$(md5sum CACHE_KEY.txt | cut -c -32)
echo ::set-env name=CACHE_KEY::$md5cache
mkdir -p Libraries
cd Libraries
echo ::set-env name=LibrariesPath::`pwd`
- name: Range-v3.
run: |
echo "Find necessary branch from doc."
cloneRange=$(grep -A 1 "range-v3" $REPO_NAME/$DOC_PATH | sed -n 1p)
cd $LibrariesPath
echo $cloneRange
eval $cloneRange
- name: Patches.
run: |
echo "Find necessary commit from doc."
checkoutCommit=$(grep -A 1 "cd patches" $REPO_NAME/$DOC_PATH | sed -n 2p)
cd $LibrariesPath
git clone $GIT/desktop-app/patches.git
cd patches
eval $checkoutCommit
- name: CMake.
run: |
cd $LibrariesPath
file=cmake-$CMAKE_VER-Linux-x86_64.sh
wget $GIT/Kitware/CMake/releases/download/v$CMAKE_VER/$file
sudo mkdir /opt/cmake
sudo sh $file --prefix=/opt/cmake --skip-license
sudo ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
cmake --version
- name: Opus cache.
id: cache-opus
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/opus
key: ${{ runner.OS }}-opus-${{ env.CACHE_KEY }}
- name: Opus.
if: steps.cache-opus.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
git clone $GIT/xiph/opus
cd opus
git checkout v1.3
./autogen.sh
./configure
make -j$(nproc)
- name: Opus install.
run: |
cd $LibrariesPath/opus
sudo make install
- name: Libva.
run: |
cd $LibrariesPath
git clone $GIT/01org/libva.git
cd libva
./autogen.sh --enable-static
make -j$(nproc)
sudo make install
- name: Libvdpau.
run: |
cd $LibrariesPath
git clone git://anongit.freedesktop.org/vdpau/libvdpau
cd libvdpau
git checkout libvdpau-1.2
./autogen.sh --enable-static
make -j$(nproc)
sudo make install
- name: FFmpeg cache.
id: cache-ffmpeg
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/ffmpeg-cache
key: ${{ runner.OS }}-ffmpeg-${{ env.CACHE_KEY }}
- name: FFmpeg build.
if: steps.cache-ffmpeg.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
git clone --branch release/3.4 $GIT/FFmpeg/FFmpeg ffmpeg
cd ffmpeg
./configure --prefix=$LibrariesPath/ffmpeg-cache \
--enable-protocol=file --enable-libopus \
--disable-programs \
--disable-doc \
--disable-network \
--disable-everything \
--enable-hwaccel=h264_vaapi \
--enable-hwaccel=h264_vdpau \
--enable-hwaccel=mpeg4_vaapi \
--enable-hwaccel=mpeg4_vdpau \
--enable-decoder=aac \
--enable-decoder=aac_at \
--enable-decoder=aac_fixed \
--enable-decoder=aac_latm \
--enable-decoder=aasc \
--enable-decoder=alac \
--enable-decoder=alac_at \
--enable-decoder=flac \
--enable-decoder=gif \
--enable-decoder=h264 \
--enable-decoder=h264_vdpau \
--enable-decoder=hevc \
--enable-decoder=mp1 \
--enable-decoder=mp1float \
--enable-decoder=mp2 \
--enable-decoder=mp2float \
--enable-decoder=mp3 \
--enable-decoder=mp3adu \
--enable-decoder=mp3adufloat \
--enable-decoder=mp3float \
--enable-decoder=mp3on4 \
--enable-decoder=mp3on4float \
--enable-decoder=mpeg4 \
--enable-decoder=mpeg4_vdpau \
--enable-decoder=msmpeg4v2 \
--enable-decoder=msmpeg4v3 \
--enable-decoder=opus \
--enable-decoder=pcm_alaw \
--enable-decoder=pcm_alaw_at \
--enable-decoder=pcm_f32be \
--enable-decoder=pcm_f32le \
--enable-decoder=pcm_f64be \
--enable-decoder=pcm_f64le \
--enable-decoder=pcm_lxf \
--enable-decoder=pcm_mulaw \
--enable-decoder=pcm_mulaw_at \
--enable-decoder=pcm_s16be \
--enable-decoder=pcm_s16be_planar \
--enable-decoder=pcm_s16le \
--enable-decoder=pcm_s16le_planar \
--enable-decoder=pcm_s24be \
--enable-decoder=pcm_s24daud \
--enable-decoder=pcm_s24le \
--enable-decoder=pcm_s24le_planar \
--enable-decoder=pcm_s32be \
--enable-decoder=pcm_s32le \
--enable-decoder=pcm_s32le_planar \
--enable-decoder=pcm_s64be \
--enable-decoder=pcm_s64le \
--enable-decoder=pcm_s8 \
--enable-decoder=pcm_s8_planar \
--enable-decoder=pcm_u16be \
--enable-decoder=pcm_u16le \
--enable-decoder=pcm_u24be \
--enable-decoder=pcm_u24le \
--enable-decoder=pcm_u32be \
--enable-decoder=pcm_u32le \
--enable-decoder=pcm_u8 \
--enable-decoder=pcm_zork \
--enable-decoder=vorbis \
--enable-decoder=wavpack \
--enable-decoder=wmalossless \
--enable-decoder=wmapro \
--enable-decoder=wmav1 \
--enable-decoder=wmav2 \
--enable-decoder=wmavoice \
--enable-encoder=libopus \
--enable-parser=aac \
--enable-parser=aac_latm \
--enable-parser=flac \
--enable-parser=h264 \
--enable-parser=hevc \
--enable-parser=mpeg4video \
--enable-parser=mpegaudio \
--enable-parser=opus \
--enable-parser=vorbis \
--enable-demuxer=aac \
--enable-demuxer=flac \
--enable-demuxer=gif \
--enable-demuxer=h264 \
--enable-demuxer=hevc \
--enable-demuxer=m4v \
--enable-demuxer=mov \
--enable-demuxer=mp3 \
--enable-demuxer=ogg \
--enable-demuxer=wav \
--enable-muxer=ogg \
--enable-muxer=opus
make -j$(nproc)
sudo make install
- name: FFmpeg install.
run: |
cd $LibrariesPath
#List of files from cmake/external/ffmpeg/CMakeLists.txt.
copyLib() {
mkdir -p ffmpeg/$1
yes | cp -i ffmpeg-cache/lib/$1.a ffmpeg/$1/$1.a
}
copyLib libavformat
copyLib libavcodec
copyLib libswresample
copyLib libswscale
copyLib libavutil
sudo cp -R ffmpeg-cache/. /usr/local/
- name: PortAudio.
run: |
cd $LibrariesPath
git clone https://git.assembla.com/portaudio.git
cd portaudio
git checkout 396fe4b669
./configure
make -j$(nproc)
sudo make install
- name: OpenAL Soft.
run: |
cd $LibrariesPath
git clone $GIT/kcat/openal-soft.git
cd openal-soft
git checkout openal-soft-1.19.1
cd build
cmake -D LIBTYPE:STRING=STATIC ..
make -j$(nproc)
sudo make install
- name: OpenSSL cache.
id: cache-openssl
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/openssl-cache
key: ${{ runner.OS }}-${{ env.OPENSSL_VER }}-${{ env.CACHE_KEY }}
- name: OpenSSL build.
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
git clone $GIT/openssl/openssl openssl_$OPENSSL_VER
cd openssl_$OPENSSL_VER
git checkout OpenSSL_1_1_1-stable
./config --prefix=$LibrariesPath/openssl-cache
make -j$(nproc)
sudo make install
- name: OpenSSL install.
run: |
cd $LibrariesPath
sudo mkdir -p $OPENSSL_PREFIX
sudo cp -R openssl-cache/. $OPENSSL_PREFIX/
- name: Libxkbcommon.
run: |
cd $LibrariesPath
git clone $GIT/xkbcommon/libxkbcommon.git
cd libxkbcommon
git checkout xkbcommon-0.8.4
./autogen.sh
make -j$(nproc)
sudo make install
- name: Qt 5.12.5 cache.
id: cache-qt
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/qt-cache
key: ${{ runner.OS }}-qt-${{ env.CACHE_KEY }}-${{ hashFiles('**/qtbase_5_12_5.diff') }}
- name: Qt 5.12.5 build.
if: steps.cache-qt.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
git clone git://code.qt.io/qt/qt5.git qt_$QT
cd qt_$QT
perl init-repository --module-subset=qtbase,qtimageformats,qtsvg
git checkout v5.12.5
git submodule update qtbase
git submodule update qtimageformats
git submodule update qtsvg
cd qtbase
git apply ../../patches/qtbase_$QT.diff
cd src/plugins/platforminputcontexts
git clone $GIT/desktop-app/fcitx.git
git clone $GIT/desktop-app/hime.git
git clone $GIT/desktop-app/nimf.git
cd ../../../..
./configure -prefix "$LibrariesPath/qt-cache" \
-release \
-force-debug-info \
-opensource \
-confirm-license \
-qt-zlib \
-qt-libpng \
-qt-libjpeg \
-qt-harfbuzz \
-qt-pcre \
-qt-xcb \
-system-freetype \
-fontconfig \
-no-opengl \
-no-glib \
-no-gtk \
-static \
-openssl-linked \
-I "$OPENSSL_PREFIX/include" OPENSSL_LIBS="$OPENSSL_PREFIX/lib/libssl.a $OPENSSL_PREFIX/lib/libcrypto.a -ldl -lpthread" \
-nomake examples \
-nomake tests
make -j$(nproc)
sudo make install
- name: Qt 5.12.5 install.
run: |
cd $LibrariesPath
sudo mkdir -p $QT_PREFIX
sudo cp -R qt-cache/. $QT_PREFIX/
- name: Breakpad cache.
id: cache-breakpad
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/breakpad-cache
key: ${{ runner.OS }}-breakpad-${{ env.CACHE_KEY }}
- name: Breakpad clone.
run: |
cd $LibrariesPath
git clone https://chromium.googlesource.com/breakpad/breakpad
cd breakpad
git checkout bc8fb886
git clone https://chromium.googlesource.com/linux-syscall-support src/third_party/lss
cd src/third_party/lss
git checkout a91633d1
- name: Breakpad build.
if: steps.cache-breakpad.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
BreakpadCache=$LibrariesPath/breakpad-cache
git clone https://chromium.googlesource.com/external/gyp
cd gyp
git checkout 9f2a7bb1
git apply ../patches/gyp.diff
cd ..
cd breakpad
./configure --prefix=$BreakpadCache
make -j$(nproc)
sudo make install
cd src
rm -r testing
git clone $GIT/google/googletest testing
cd tools
sed -i 's/minidump_upload.m/minidump_upload.cc/' linux/tools_linux.gypi
../../../gyp/gyp --depth=. --generator-output=.. -Goutput_dir=../out tools.gyp --format=cmake
cd ../../out/Default
cmake .
make -j$(nproc) dump_syms
mv dump_syms $BreakpadCache/
- name: Breakpad install.
run: |
cd $LibrariesPath
sudo cp -R breakpad-cache/. /usr/local/
mkdir -p breakpad/out/Default/
cp breakpad-cache/dump_syms breakpad/out/Default/dump_syms
- name: Telegram Desktop build.
if: env.ONLY_CACHE == 'false'
run: |
cd $REPO_NAME/Telegram
DEFINE=""
if [ -n "${{ matrix.defines }}" ]; then
DEFINE="-D ${{ matrix.defines }}=ON"
echo Define from matrix: $DEFINE
fi
./configure.sh -D TDESKTOP_API_TEST=ON -D DESKTOP_APP_USE_PACKAGED=OFF $DEFINE
cd ../out/Debug
make -j$(nproc)
strip -s bin/Telegram
- name: Check.
if: env.ONLY_CACHE == 'false'
run: |
filePath="$REPO_NAME/out/Debug/bin/Telegram"
if test -f "$filePath"; then
echo "Build successfully done! :)"
size=$(stat -c %s "$filePath")
echo "File size of ${filePath}: ${size} Bytes."
else
echo "Build error, output file does not exist."
exit 1
fi
- name: Move artifact.
if: env.UPLOAD_ARTIFACT == 'true'
run: |
cd $REPO_NAME/out/Debug/bin
mkdir artifact
mv Telegram artifact/
- uses: actions/upload-artifact@master
if: env.UPLOAD_ARTIFACT == 'true'
name: Upload artifact.
with:
name: Telegram
path: ${{ env.REPO_NAME }}/out/Debug/bin/artifact/

456
.github/workflows/mac.yml vendored Normal file
View File

@@ -0,0 +1,456 @@
name: MacOS.
on:
push:
paths-ignore:
- 'docs/**'
- '*.md'
pull_request:
paths-ignore:
- 'docs/**'
- '*.md'
jobs:
macos:
name: MacOS
runs-on: macos-latest
strategy:
matrix:
defines:
- ""
env:
MIN_MAC: "-mmacosx-version-min=10.12"
UNGUARDED: "-Werror=unguarded-availability-new"
GIT: "https://github.com"
PREFIX: "/usr/local/macos"
MACOSX_DEPLOYMENT_TARGET: "10.12"
XZ: "xz-5.0.5"
QT: "5_12_5"
OPENSSL_VER: "1_1_1"
QT_PREFIX: "/usr/local/desktop-app/Qt-5.12.5"
LIBICONV_VER: "libiconv-1.15"
UPLOAD_ARTIFACT: "false"
ONLY_CACHE: "false"
MANUAL_CACHING: "2"
DOC_PATH: "docs/building-xcode.md"
steps:
- name: Get repository name.
run: echo ::set-env name=REPO_NAME::${GITHUB_REPOSITORY##*/}
- name: Clone.
uses: actions/checkout@v1
with:
submodules: recursive
- name: First set up.
run: |
cd ..
mv $REPO_NAME temp
mkdir $REPO_NAME
mv temp $REPO_NAME/$REPO_NAME
cd $REPO_NAME
brew install automake fdk-aac lame libass libtool libvorbis libvpx \
ninja opus sdl shtool texi2html theora x264 xvid yasm pkg-config
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
xcodebuild -version > CACHE_KEY.txt
echo $MIN_MAC >> CACHE_KEY.txt
echo $PREFIX >> CACHE_KEY.txt
echo $MANUAL_CACHING >> CACHE_KEY.txt
echo ::set-env name=CACHE_KEY::`md5 -q CACHE_KEY.txt`
echo ::add-path::$PWD/Libraries/depot_tools
mkdir -p Libraries/macos
cd Libraries/macos
echo ::set-env name=LibrariesPath::`pwd`
- name: Range-v3.
run: |
echo "Find necessary branch from doc."
cloneRange=$(grep -A 1 "range-v3" $REPO_NAME/$DOC_PATH | sed -n 1p)
cd $LibrariesPath
echo $cloneRange
eval $cloneRange
- name: Patches.
run: |
echo "Find necessary commit from doc."
checkoutCommit=$(grep -A 1 "cd patches" $REPO_NAME/$DOC_PATH | sed -n 2p)
cd $LibrariesPath
git clone $GIT/desktop-app/patches.git
cd Patches
eval $checkoutCommit
- name: XZ.
run: |
cd $LibrariesPath
wget https://tukaani.org/xz/$XZ.tar.gz
tar -xvzf $XZ.tar.gz
cd $XZ
CFLAGS="$MIN_MAC" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
make -j$(nproc)
sudo make install
- name: Zlib.
run: |
cd $LibrariesPath
git clone $GIT/desktop-app/zlib.git
cd zlib
CFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
make -j$(nproc)
sudo make install
- name: OpenSSL cache.
id: cache-openssl
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/openssl_${{ env.OPENSSL_VER }}
key: ${{ runner.OS }}-${{ env.OPENSSL_VER }}-${{ env.CACHE_KEY }}
- name: OpenSSL.
if: steps.cache-openssl.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
git clone $GIT/openssl/openssl openssl
cd openssl
git checkout OpenSSL_"$OPENSSL_VER"-stable
./Configure \
--prefix=$PREFIX \
darwin64-x86_64-cc \
-static \
$MIN_MAC
make build_libs -j$(nproc)
SSL_DIR=$LibrariesPath/openssl_${{ env.OPENSSL_VER }}
mkdir -p $SSL_DIR/include
copyLib() {
cp $1.a $SSL_DIR/$1.a
}
copyLib libssl
copyLib libcrypto
sudo cp -R include/. $SSL_DIR/include/
- name: Opus cache.
id: cache-opus
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/opus
key: ${{ runner.OS }}-opus-${{ env.CACHE_KEY }}
- name: Opus.
if: steps.cache-opus.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
git clone $GIT/xiph/opus
cd opus
git checkout v1.3
./autogen.sh
CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --prefix=$PREFIX
make -j$(nproc)
- name: Opus install.
run: |
cd $LibrariesPath/opus
sudo make install
- name: Libiconv cache.
id: cache-libiconv
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/${{ env.LIBICONV_VER }}
key: ${{ runner.OS }}-${{ env.LIBICONV_VER }}-${{ env.CACHE_KEY }}
- name: Libiconv.
if: steps.cache-libiconv.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
wget https://ftp.gnu.org/pub/gnu/libiconv/"$LIBICONV_VER".tar.gz
tar -xvzf "$LIBICONV_VER".tar.gz
cd $LIBICONV_VER
CFLAGS="$MIN_MAC $UNGUARDED" CPPFLAGS="$MIN_MAC $UNGUARDED" LDFLAGS="$MIN_MAC" ./configure --enable-static --prefix=$PREFIX
make -j$(nproc)
- name: Libiconv install.
run: |
cd $LibrariesPath/$LIBICONV_VER
sudo make install
- name: FFmpeg cache.
id: cache-ffmpeg
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/ffmpeg-cache
key: ${{ runner.OS }}-ffmpeg-${{ env.CACHE_KEY }}
- name: FFmpeg.
if: steps.cache-ffmpeg.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
git clone $GIT/FFmpeg/FFmpeg.git ffmpeg
cd ffmpeg
git checkout release/3.4
CFLAGS=`freetype-config --cflags`
LDFLAGS=`freetype-config --libs`
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/lib/pkgconfig:/usr/X11/lib/pkgconfig
./configure --prefix=$LibrariesPath/ffmpeg-cache \
--extra-cflags="$MIN_MAC $UNGUARDED" \
--extra-cxxflags="$MIN_MAC $UNGUARDED" \
--extra-ldflags="$MIN_MAC" \
--enable-protocol=file --enable-libopus \
--disable-programs \
--disable-doc \
--disable-network \
--disable-everything \
--enable-hwaccel=h264_videotoolbox \
--enable-hwaccel=hevc_videotoolbox \
--enable-hwaccel=mpeg1_videotoolbox \
--enable-hwaccel=mpeg2_videotoolbox \
--enable-hwaccel=mpeg4_videotoolbox \
--enable-decoder=aac \
--enable-decoder=aac_at \
--enable-decoder=aac_fixed \
--enable-decoder=aac_latm \
--enable-decoder=aasc \
--enable-decoder=alac \
--enable-decoder=alac_at \
--enable-decoder=flac \
--enable-decoder=gif \
--enable-decoder=h264 \
--enable-decoder=hevc \
--enable-decoder=mp1 \
--enable-decoder=mp1float \
--enable-decoder=mp2 \
--enable-decoder=mp2float \
--enable-decoder=mp3 \
--enable-decoder=mp3adu \
--enable-decoder=mp3adufloat \
--enable-decoder=mp3float \
--enable-decoder=mp3on4 \
--enable-decoder=mp3on4float \
--enable-decoder=mpeg4 \
--enable-decoder=msmpeg4v2 \
--enable-decoder=msmpeg4v3 \
--enable-decoder=opus \
--enable-decoder=pcm_alaw \
--enable-decoder=pcm_alaw_at \
--enable-decoder=pcm_f32be \
--enable-decoder=pcm_f32le \
--enable-decoder=pcm_f64be \
--enable-decoder=pcm_f64le \
--enable-decoder=pcm_lxf \
--enable-decoder=pcm_mulaw \
--enable-decoder=pcm_mulaw_at \
--enable-decoder=pcm_s16be \
--enable-decoder=pcm_s16be_planar \
--enable-decoder=pcm_s16le \
--enable-decoder=pcm_s16le_planar \
--enable-decoder=pcm_s24be \
--enable-decoder=pcm_s24daud \
--enable-decoder=pcm_s24le \
--enable-decoder=pcm_s24le_planar \
--enable-decoder=pcm_s32be \
--enable-decoder=pcm_s32le \
--enable-decoder=pcm_s32le_planar \
--enable-decoder=pcm_s64be \
--enable-decoder=pcm_s64le \
--enable-decoder=pcm_s8 \
--enable-decoder=pcm_s8_planar \
--enable-decoder=pcm_u16be \
--enable-decoder=pcm_u16le \
--enable-decoder=pcm_u24be \
--enable-decoder=pcm_u24le \
--enable-decoder=pcm_u32be \
--enable-decoder=pcm_u32le \
--enable-decoder=pcm_u8 \
--enable-decoder=pcm_zork \
--enable-decoder=vorbis \
--enable-decoder=wavpack \
--enable-decoder=wmalossless \
--enable-decoder=wmapro \
--enable-decoder=wmav1 \
--enable-decoder=wmav2 \
--enable-decoder=wmavoice \
--enable-encoder=libopus \
--enable-parser=aac \
--enable-parser=aac_latm \
--enable-parser=flac \
--enable-parser=h264 \
--enable-parser=hevc \
--enable-parser=mpeg4video \
--enable-parser=mpegaudio \
--enable-parser=opus \
--enable-parser=vorbis \
--enable-demuxer=aac \
--enable-demuxer=flac \
--enable-demuxer=gif \
--enable-demuxer=h264 \
--enable-demuxer=hevc \
--enable-demuxer=m4v \
--enable-demuxer=mov \
--enable-demuxer=mp3 \
--enable-demuxer=ogg \
--enable-demuxer=wav \
--enable-muxer=ogg \
--enable-muxer=opus
make -j$(nproc)
sudo make install
- name: FFmpeg install.
run: |
cd $LibrariesPath
#List of files from cmake/external/ffmpeg/CMakeLists.txt.
copyLib() {
mkdir -p ffmpeg/$1
\cp -fR ffmpeg-cache/lib/$1.a ffmpeg/$1/$1.a
}
copyLib libavformat
copyLib libavcodec
copyLib libswresample
copyLib libswscale
copyLib libavutil
sudo cp -R ffmpeg-cache/. /usr/local/
sudo cp -R ffmpeg-cache/include/. ffmpeg/
- name: OpenAL Soft.
run: |
cd $LibrariesPath
git clone $GIT/kcat/openal-soft.git
cd openal-soft
git checkout openal-soft-1.19.1
cd build
CFLAGS="$UNGUARDED" CPPFLAGS="$UNGUARDED" cmake \
-D CMAKE_INSTALL_PREFIX:PATH=$PREFIX \
-D ALSOFT_EXAMPLES=OFF \
-D LIBTYPE:STRING=STATIC \
-D CMAKE_OSX_DEPLOYMENT_TARGET:STRING=$MACOSX_DEPLOYMENT_TARGET ..
make -j$(nproc)
sudo make install
- name: Crashpad cache.
id: cache-crashpad
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/crashpad
key: ${{ runner.OS }}-crashpad-${{ env.CACHE_KEY }}-${{ hashFiles('**/crashpad.diff') }}-${{ hashFiles('**/mini_chromium.diff') }}
- name: Crashpad.
if: steps.cache-crashpad.outputs.cache-hit != 'true'
run: |
cd Libraries
echo Install GYP for Crashpad.
git clone https://chromium.googlesource.com/external/gyp
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
cd gyp
git checkout 9f2a7bb1
git apply $LibrariesPath/patches/gyp.diff
./setup.py build
sudo ./setup.py install
cd $LibrariesPath
git clone https://chromium.googlesource.com/crashpad/crashpad.git
cd crashpad
git checkout feb3aa3923
git apply ../patches/crashpad.diff
cd third_party/mini_chromium
git clone https://chromium.googlesource.com/chromium/mini_chromium
cd mini_chromium
git checkout 7c5b0c1ab4
git apply ../../../../patches/mini_chromium.diff
cd ../../gtest
git clone https://chromium.googlesource.com/external/github.com/google/googletest gtest
cd gtest
git checkout d62d6c6556
cd ../../..
build/gyp_crashpad.py -Dmac_deployment_target=10.10
ninja -C out/Debug
- name: Qt 5.12.5 cache.
id: cache-qt
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/qt-cache
key: ${{ runner.OS }}-qt-${{ env.CACHE_KEY }}-${{ hashFiles('**/qtbase_5_12_5.diff') }}
- name: Use cached Qt 5.12.5.
if: steps.cache-qt.outputs.cache-hit == 'true'
run: |
cd $LibrariesPath
mv qt-cache Qt-5.12.5
sudo mkdir -p $QT_PREFIX
sudo mv -f Qt-5.12.5 "$(dirname "$QT_PREFIX")"/
- name: Qt 5.12.5 build.
if: steps.cache-qt.outputs.cache-hit != 'true'
run: |
cd $LibrariesPath
git clone git://code.qt.io/qt/qt5.git qt$QT
cd qt$QT
perl init-repository --module-subset=qtbase,qtimageformats
git checkout v5.12.5
git submodule update qtbase
git submodule update qtimageformats
cd qtbase
git apply ../../patches/qtbase_$QT.diff
cd ..
./configure \
-prefix "$QT_PREFIX" \
-debug \
-force-debug-info \
-opensource \
-confirm-license \
-static \
-opengl desktop \
-no-openssl \
-securetransport \
-nomake examples \
-nomake tests \
-platform macx-clang
make -j$(nproc)
sudo make install
make clean
cp -r $QT_PREFIX $LibrariesPath/qt-cache
- name: Telegram Desktop build.
if: env.ONLY_CACHE == 'false'
run: |
cd $REPO_NAME/Telegram
DEFINE=""
if [ -n "${{ matrix.defines }}" ]; then
DEFINE="-D ${{ matrix.defines }}=ON"
echo Define from matrix: $DEFINE
fi
./configure.sh -D TDESKTOP_API_TEST=ON -D DESKTOP_APP_USE_PACKAGED=OFF $DEFINE
cd ../out
xcoderun='xcodebuild build -project Telegram.xcodeproj -scheme Telegram -destination "platform=macOS,arch=x86_64" -configuration Debug'
bash -c "$xcoderun" || bash -c "$xcoderun" || bash -c "$xcoderun"
- name: Move artifact.
if: env.UPLOAD_ARTIFACT == 'true'
run: |
cd $REPO_NAME/out/Debug
mkdir artifact
mv Telegram.app artifact/
mv Updater artifact/
- uses: actions/upload-artifact@master
if: env.UPLOAD_ARTIFACT == 'true'
name: Upload artifact.
with:
name: Telegram
path: ${{ env.REPO_NAME }}/out/Debug/artifact/

99
.github/workflows/snap.yml vendored Normal file
View File

@@ -0,0 +1,99 @@
name: Snap.
on:
push:
paths-ignore:
- 'docs/**'
- '*.md'
pull_request:
paths-ignore:
- 'docs/**'
- '*.md'
jobs:
linux:
name: Ubuntu 18.04
runs-on: ubuntu-18.04
env:
UPLOAD_ARTIFACT: "false"
ONLY_CACHE: "false"
MANUAL_CACHING: "3"
steps:
- name: Clone.
uses: actions/checkout@v1
with:
submodules: recursive
- name: First set up.
run: |
sudo apt-get update
sudo apt-get install gcc-8 g++-8 -y
sudo snap install --classic snapcraft
# Workaround for snapcraft
# See https://forum.snapcraft.io/t/permissions-problem-using-snapcraft-in-azure-pipelines/13258
sudo chown root:root /
snapcraft --version > CACHE_KEY.txt
gcc-8 --version >> CACHE_KEY.txt
echo $MANUAL_CACHING >> CACHE_KEY.txt
md5cache=$(md5sum CACHE_KEY.txt | cut -c -32)
echo ::set-env name=CACHE_KEY::$md5cache
awk -v RS="" -v ORS="\n\n" '/^ cmake:/' snap/snapcraft.yaml > CMAKE_CACHE_KEY.txt
md5cache=$(md5sum CMAKE_CACHE_KEY.txt | cut -c -32)
echo ::set-env name=CMAKE_CACHE_KEY::$md5cache
awk -v RS="" -v ORS="\n\n" '/^ enchant:/' snap/snapcraft.yaml > ENCHANT_CACHE_KEY.txt
md5cache=$(md5sum ENCHANT_CACHE_KEY.txt | cut -c -32)
echo ::set-env name=ENCHANT_CACHE_KEY::$md5cache
- name: CMake cache.
id: cache-cmake
uses: actions/cache@v1
with:
path: parts/cmake
key: ${{ runner.OS }}-cmake-${{ env.CACHE_KEY }}-${{ env.CMAKE_CACHE_KEY }}
- name: CMake build.
if: steps.cache-cmake.outputs.cache-hit != 'true'
run: snapcraft build --destructive-mode cmake
- name: Enchant cache.
id: cache-enchant
uses: actions/cache@v1
with:
path: parts/enchant
key: ${{ runner.OS }}-enchant-${{ env.CACHE_KEY }}-${{ env.ENCHANT_CACHE_KEY }}
- name: Enchant build.
if: steps.cache-enchant.outputs.cache-hit != 'true'
run: snapcraft build --destructive-mode enchant
- name: Telegram Desktop snap build.
if: env.ONLY_CACHE == 'false'
run: snapcraft --destructive-mode
- name: Move artifact.
if: env.UPLOAD_ARTIFACT == 'true'
run: |
artifact_name=$(echo telegram-desktop_*.snap)
echo ::set-env name=ARTIFACT_NAME::$artifact_name
mkdir artifact
mv $artifact_name artifact
- uses: actions/upload-artifact@master
if: env.UPLOAD_ARTIFACT == 'true'
name: Upload artifact.
with:
name: ${{ env.ARTIFACT_NAME }}
path: artifact
- name: Remove unneeded directories for cache.
run: |
rm -rf parts/{cmake,enchant}/{build,src,ubuntu}
rm -rf parts/{cmake,enchant}/state/{stage,prime}

357
.github/workflows/win.yml vendored Normal file
View File

@@ -0,0 +1,357 @@
name: Windows.
on:
push:
paths-ignore:
- 'docs/**'
- '*.md'
pull_request:
paths-ignore:
- 'docs/**'
- '*.md'
jobs:
windows:
name: Windows
runs-on: windows-latest
strategy:
matrix:
defines:
- ""
env:
SDK: "10.0.18362.0"
VC: "call vcvars32.bat && cd Libraries"
GIT: "https://github.com"
QT: "5_12_5"
OPENSSL_VER: "1_1_1"
UPLOAD_ARTIFACT: "false"
ONLY_CACHE: "false"
MANUAL_CACHING: "2"
DOC_PATH: "docs/building-msvc.md"
steps:
- name: Get repository name.
shell: bash
run: echo ::set-env name=REPO_NAME::${GITHUB_REPOSITORY##*/}
- name: Clone.
uses: actions/checkout@v1
with:
submodules: recursive
- name: Set up environment variables.
shell: cmd
run: |
cd ..
move %REPO_NAME% temp
mkdir %REPO_NAME%
move temp %REPO_NAME%/%REPO_NAME%
cd %REPO_NAME%
echo ::add-path::C:\Strawberry\perl\bin\
echo ::add-path::"%programfiles%\NASM"
C:
cd "%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\"
echo ::add-path::%cd%
call vcvars32.bat
D:
cd %GITHUB_WORKSPACE%
msbuild -version > CACHE_KEY.txt
echo %MANUAL_CACHING% >> CACHE_KEY.txt
mkdir Libraries
cd Libraries
echo ::set-env name=LibrariesPath::%cd%
- name: Generate cache key.
shell: bash
run: |
echo ::set-env name=CACHE_KEY::`md5sum CACHE_KEY.txt | awk '{ print $1 }'`
- name: Choco installs.
run: |
choco install --no-progress -y nasm yasm jom ninja
- name: Range-v3.
shell: bash
run: |
echo "Find necessary branch from doc."
cloneRange=$(grep -A 1 "range-v3" $REPO_NAME/$DOC_PATH | sed -n 1p)
cd $LibrariesPath
echo $cloneRange
eval $cloneRange
- name: Patches.
shell: bash
run: |
echo "Find necessary commit from doc."
checkoutCommit=$(grep -A 1 "cd patches" $REPO_NAME/$DOC_PATH | sed -n 2p)
cd $LibrariesPath
git clone $GIT/desktop-app/patches.git
cd Patches
eval $checkoutCommit
- name: LZMA.
shell: cmd
run: |
%VC%
git clone %GIT%/telegramdesktop/lzma.git
cd lzma
cd C\Util\LzmaLib
msbuild -m LzmaLib.sln /property:Configuration=Debug
- name: OpenSSL cache.
id: cache-openssl
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/openssl_${{ env.OPENSSL_VER }}
key: ${{ runner.OS }}-${{ env.CACHE_KEY }}-${{ env.OPENSSL_VER }}
- name: OpenSSL.
if: steps.cache-openssl.outputs.cache-hit != 'true'
shell: cmd
run: |
%VC%
git clone %GIT%/openssl/openssl.git openssl_%OPENSSL_VER%
cd openssl_%OPENSSL_VER%
git checkout OpenSSL_%OPENSSL_VER%-stable
perl Configure no-shared debug-VC-WIN32
nmake
mkdir out32.dbg
move libcrypto.lib out32.dbg
move libssl.lib out32.dbg
move ossl_static.pdb out32.dbg\ossl_static
nmake clean
move out32.dbg\ossl_static out32.dbg\ossl_static.pdb
perl Configure no-shared VC-WIN32
nmake
mkdir out32
move libcrypto.lib out32
move libssl.lib out32
move ossl_static.pdb out32
rmdir /S /Q test
rmdir /S /Q .git
- name: Zlib.
shell: cmd
run: |
%VC%
git clone %GIT%/telegramdesktop/zlib.git
cd zlib
git checkout tdesktop
cd contrib\vstudio\vc14
msbuild -m zlibstat.vcxproj /property:Configuration=Debug
- name: OpenAL Soft cache.
id: cache-openal
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/openal-soft
key: ${{ runner.OS }}-openal-soft-${{ env.CACHE_KEY }}
- name: OpenAL Soft.
shell: cmd
if: steps.cache-openal.outputs.cache-hit != 'true'
run: |
%VC%
git clone %GIT%/telegramdesktop/openal-soft.git
cd openal-soft
git checkout fix_capture
cd build
cmake ^
-G "Visual Studio 16 2019" ^
-A Win32 ^
-D LIBTYPE:STRING=STATIC ^
-D FORCE_STATIC_VCRT:STRING=ON ..
msbuild -m OpenAL.vcxproj /property:Configuration=Debug
- name: Breakpad cache.
id: cache-breakpad
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/breakpad
key: ${{ runner.OS }}-breakpad-${{ env.CACHE_KEY }}-${{ hashFiles('**/breakpad.diff') }}
- name: Breakpad.
env:
GYP_MSVS_OVERRIDE_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\'
GYP_MSVS_VERSION: 2019
shell: cmd
if: steps.cache-breakpad.outputs.cache-hit != 'true'
run: |
cd %LibrariesPath%
echo Find any version of Python 2.
for /D %%a in (C:\hostedtoolcache\windows\Python\2.*) do (
SET PY2=%%a\x64
)
IF [%PY2%] == [] (
echo Python 2 is not found.
exit 1
)
echo Found %PY2%.
git clone %GIT%/telegramdesktop/gyp.git
cd gyp
SET PATH=%PY2%;%cd%;%PATH%
git checkout tdesktop
cd %LibrariesPath%
git clone %GIT%/google/breakpad
cd breakpad
git checkout a1dbcdcb43
git apply ../patches/breakpad.diff
cd src
git clone %GIT%/google/googletest testing
cd client\windows
call gyp --no-circular-check breakpad_client.gyp --format=ninja
cd ..\..
ninja -C out/Debug common crash_generation_client exception_handler
ninja -C out/Release common crash_generation_client exception_handler
cd tools\windows\dump_syms
call gyp dump_syms.gyp
call vcvars32.bat
msbuild -m dump_syms.vcxproj /property:Configuration=Release
- name: Opus cache.
id: cache-opus
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/opus
key: ${{ runner.OS }}-opus-${{ env.CACHE_KEY }}
- name: Opus.
if: steps.cache-opus.outputs.cache-hit != 'true'
shell: cmd
run: |
%VC%
git clone %GIT%/telegramdesktop/opus.git
cd opus
git checkout tdesktop
cd win32\VS2015
msbuild -m opus.sln /property:Configuration=Debug /property:Platform="Win32"
msbuild -m opus.sln /property:Configuration=Release /property:Platform="Win32"
- name: FFmpeg cache.
id: cache-ffmpeg
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/ffmpeg
key: ${{ runner.OS }}-ffmpeg-${{ env.CACHE_KEY }}-2-${{ hashFiles('**/build_ffmpeg_win.sh') }}
- name: FFmpeg.
if: steps.cache-ffmpeg.outputs.cache-hit != 'true'
shell: cmd
run: |
%VC%
choco install --no-progress -y msys2
git clone %GIT%/FFmpeg/FFmpeg.git ffmpeg
cd ffmpeg
git checkout release/3.4
set CHERE_INVOKING=enabled_from_arguments
set MSYS2_PATH_TYPE=inherit
call c:\tools\msys64\usr\bin\bash --login ../../%REPO_NAME%/Telegram/Patches/build_ffmpeg_win.sh
rmdir /S /Q .git
- name: Qt 5.12.5 cache.
id: cache-qt
uses: actions/cache@v1
with:
path: ${{ env.LibrariesPath }}/Qt-5.12.5
key: ${{ runner.OS }}-qt-${{ env.CACHE_KEY }}-${{ hashFiles('**/qtbase_5_12_5.diff') }}
- name: Configure Qt 5.12.5.
if: steps.cache-qt.outputs.cache-hit != 'true'
shell: cmd
run: |
%VC%
git clone git://code.qt.io/qt/qt5.git qt_%QT%
cd qt_%QT%
perl init-repository --module-subset=qtbase,qtimageformats
git checkout v5.12.5
git submodule update qtbase
git submodule update qtimageformats
cd qtbase
git apply ../../patches/qtbase_%QT%.diff
cd ..
SET SSL=%LibrariesPath%\openssl_1_1_1
SET LIBS=libcrypto.lib Ws2_32.lib Gdi32.lib Advapi32.lib Crypt32.lib User32.lib
configure ^
-prefix "%LibrariesPath%\Qt-5.12.5" ^
-debug ^
-force-debug-info ^
-opensource ^
-confirm-license ^
-static ^
-static-runtime -I "%SSL%\include" ^
-no-opengl ^
-openssl-linked ^
OPENSSL_LIBS_DEBUG="%SSL%\out32.dbg\libssl.lib %SSL%\out32.dbg\%LIBS%" ^
OPENSSL_LIBS_RELEASE="%SSL%\out32\libssl.lib %SSL%\out32\%LIBS%" ^
-mp ^
-nomake examples ^
-nomake tests ^
-platform win32-msvc
- name: Qt 5.12.5 build.
if: steps.cache-qt.outputs.cache-hit != 'true'
shell: cmd
run: |
%VC%
cd qt_%QT%
jom -j%NUMBER_OF_PROCESSORS%
jom -j%NUMBER_OF_PROCESSORS% install
cd ..
rmdir /S /Q qt_%QT%
- name: Read defines.
shell: bash
run: |
DEFINE=""
if [ -n "${{ matrix.defines }}" ]; then
DEFINE="-D ${{ matrix.defines }}=ON"
echo Define from matrix: $DEFINE
fi
echo "::set-env name=TDESKTOP_BUILD_DEFINE::$DEFINE"
- name: Telegram Desktop build.
if: env.ONLY_CACHE == 'false'
shell: cmd
run: |
cd %REPO_NAME%\Telegram
call configure.bat ^
-D TDESKTOP_API_TEST=ON ^
-D DESKTOP_APP_USE_PACKAGED=OFF ^
%TDESKTOP_BUILD_DEFINE% ^
-DCMAKE_SYSTEM_VERSION=%SDK%
call vcvars32.bat
cd ..\out
msbuild -m Telegram.sln /nologo /p:Configuration=Debug,Platform=Win32
- name: Move artifact.
if: env.UPLOAD_ARTIFACT == 'true'
run: |
cd %REPO_NAME%\out\Debug
mkdir artifact
move Telegram.exe artifact/
move Updater.exe artifact/
- uses: actions/upload-artifact@master
name: Upload artifact.
if: env.UPLOAD_ARTIFACT == 'true'
with:
name: Telegram
path: ${{ env.REPO_NAME }}\out\Debug\artifact\

22
.gitignore vendored
View File

@@ -1,24 +1,8 @@
/out/
/Debug/
/Release/
/Deploy/
Debug/
Release/
/ThirdParty/
/Telegram/build/target
/Telegram/GeneratedFiles/
/Telegram/SourceFiles/art/grid.png
/Telegram/SourceFiles/art/grid_125x.png
/Telegram/SourceFiles/art/grid_150x.png
/Telegram/SourceFiles/art/grid_200x.png
/Telegram/SourceFiles/art/sprite_125x.png
/Telegram/SourceFiles/art/sprite_150x.png
/Telegram/Resources/art/grid.png
/Telegram/Resources/art/grid_125x.png
/Telegram/Resources/art/grid_150x.png
/Telegram/Resources/art/grid_200x.png
/Telegram/Resources/art/sprite_125x.png
/Telegram/Resources/art/sprite_150x.png
/Telegram/Debug/
/Telegram/Release/
/Telegram/tests/
/Telegram/gyp/tests/*.test
/Telegram/out/
@@ -32,7 +16,6 @@
*.VC.db
*.aps
*.xcodeproj
/Win32/
ipch/
.vs/
@@ -60,6 +43,7 @@ stage
/snap/plugins/__pycache__
/Telegram/*.user.*
*.txt.user
*.pro.user
/Linux/
/Telegram/Makefile

50
.gitmodules vendored
View File

@@ -10,15 +10,57 @@
[submodule "Telegram/ThirdParty/Catch"]
path = Telegram/ThirdParty/Catch
url = https://github.com/philsquared/Catch
[submodule "Telegram/ThirdParty/crl"]
path = Telegram/ThirdParty/crl
url = https://github.com/telegramdesktop/crl.git
[submodule "Telegram/ThirdParty/xxHash"]
path = Telegram/ThirdParty/xxHash
url = https://github.com/Cyan4973/xxHash.git
[submodule "Telegram/ThirdParty/rlottie"]
path = Telegram/ThirdParty/rlottie
url = https://github.com/john-preston/rlottie
url = https://github.com/desktop-app/rlottie.git
[submodule "Telegram/ThirdParty/lz4"]
path = Telegram/ThirdParty/lz4
url = https://github.com/lz4/lz4.git
[submodule "Telegram/lib_crl"]
path = Telegram/lib_crl
url = https://github.com/desktop-app/lib_crl.git
[submodule "Telegram/lib_rpl"]
path = Telegram/lib_rpl
url = https://github.com/desktop-app/lib_rpl.git
[submodule "Telegram/lib_base"]
path = Telegram/lib_base
url = https://github.com/desktop-app/lib_base.git
[submodule "Telegram/codegen"]
path = Telegram/codegen
url = https://github.com/desktop-app/codegen.git
[submodule "Telegram/lib_ui"]
path = Telegram/lib_ui
url = https://github.com/desktop-app/lib_ui.git
[submodule "Telegram/lib_rlottie"]
path = Telegram/lib_rlottie
url = https://github.com/desktop-app/lib_rlottie.git
[submodule "Telegram/lib_lottie"]
path = Telegram/lib_lottie
url = https://github.com/desktop-app/lib_lottie.git
[submodule "Telegram/lib_tl"]
path = Telegram/lib_tl
url = https://github.com/desktop-app/lib_tl.git
[submodule "Telegram/lib_spellcheck"]
path = Telegram/lib_spellcheck
url = https://github.com/desktop-app/lib_spellcheck
[submodule "Telegram/lib_storage"]
path = Telegram/lib_storage
url = https://github.com/desktop-app/lib_storage.git
[submodule "cmake"]
path = cmake
url = https://github.com/desktop-app/cmake_helpers.git
[submodule "Telegram/ThirdParty/expected"]
path = Telegram/ThirdParty/expected
url = https://github.com/TartanLlama/expected
[submodule "Telegram/ThirdParty/QR"]
path = Telegram/ThirdParty/QR
url = https://github.com/nayuki/QR-Code-generator
[submodule "Telegram/lib_qr"]
path = Telegram/lib_qr
url = https://github.com/desktop-app/lib_qr.git
[submodule "Telegram/ThirdParty/libdbusmenu-qt"]
path = Telegram/ThirdParty/libdbusmenu-qt
url = https://github.com/desktop-app/libdbusmenu-qt.git

View File

@@ -1,65 +0,0 @@
sudo: required
dist: trusty
language: cpp
cache:
directories:
- $HOME/travisCacheDir
env:
matrix:
- BUILD_VERSION=""
- BUILD_VERSION="disable_register_custom_scheme"
- BUILD_VERSION="disable_crash_reports"
- BUILD_VERSION="disable_network_proxy"
- BUILD_VERSION="disable_desktop_file_generation"
- BUILD_VERSION="disable_gtk_integration"
matrix:
fast_finish: true
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- bison
- build-essential
- cmake
- devscripts
- dpatch
- equivs
- fakeroot
- g++-8
- gcc-8
- git
- gnome-common
- gobject-introspection
- gtk-doc-tools
- libappindicator-dev
- libasound2-dev
- libdbusmenu-glib-dev
- liblzma-dev
- libopus-dev
- libpulse-dev
- libssl-dev
- libdee-dev
- libva-dev
- libvdpau-dev
- libxcb-xkb-dev
- libxkbcommon-dev
- lintian
- quilt
- valac
- xutils-dev
- yasm
before_install:
- export CXX="g++-8" CC="gcc-8"
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-8
- sudo update-alternatives --config gcc
- g++ --version
script:
- .travis/build.sh

View File

@@ -1,718 +0,0 @@
#!/bin/bash
set -e
REPO="$PWD"
BUILD="$REPO/build"
UPSTREAM="$REPO/upstream"
EXTERNAL="$REPO/external"
CACHE="$HOME/travisCacheDir"
QT_WAS_BUILT="0"
QT_VERSION=5.6.2
XKB_PATH="$BUILD/libxkbcommon"
XKB_CACHE_VERSION="3"
QT_PATH="$BUILD/qt"
QT_CACHE_VERSION="4"
QT_PATCH="$UPSTREAM/Telegram/Patches/qtbase_${QT_VERSION//\./_}.diff"
BREAKPAD_PATH="$BUILD/breakpad"
BREAKPAD_CACHE_VERSION="3"
GYP_PATH="$BUILD/gyp"
GYP_CACHE_VERSION="3"
GYP_PATCH="$UPSTREAM/Telegram/Patches/gyp.diff"
RANGE_PATH="$BUILD/range-v3"
RANGE_CACHE_VERSION="4"
VA_PATH="$BUILD/libva"
VA_CACHE_VERSION="3"
VDPAU_PATH="$BUILD/libvdpau"
VDPAU_CACHE_VERSION="3"
FFMPEG_PATH="$BUILD/ffmpeg"
FFMPEG_CACHE_VERSION="3"
OPENAL_PATH="$BUILD/openal-soft"
OPENAL_CACHE_VERSION="4"
GYP_DEFINES=""
[[ ! $MAKE_ARGS ]] && MAKE_ARGS="--silent -j4"
run() {
# Move files to subdir
cd ..
mv tdesktop tdesktop2
mkdir tdesktop
mv tdesktop2 "$UPSTREAM"
mkdir "$BUILD"
build
check
}
build() {
mkdir -p "$EXTERNAL"
BUILD_VERSION_DATA=$(echo $BUILD_VERSION | cut -d'-' -f 1)
# libxkbcommon
getXkbCommon
# libva
getVa
# libvdpau
getVdpau
# ffmpeg
getFFmpeg
# openal_soft
getOpenAL
# Patched Qt
getCustomQt
# Breakpad
getBreakpad
# Patched GYP (supports cmake precompiled headers)
getGYP
# Range v3
getRange
# Guideline Support Library
getGSL
if [ "$QT_WAS_BUILT" == "1" ]; then
error_msg "Qt was built, please restart the job :("
exit 1
fi
# Configure the build
if [[ $BUILD_VERSION == *"disable_register_custom_scheme"* ]]; then
GYP_DEFINES+=",TDESKTOP_DISABLE_REGISTER_CUSTOM_SCHEME"
fi
if [[ $BUILD_VERSION == *"disable_crash_reports"* ]]; then
GYP_DEFINES+=",TDESKTOP_DISABLE_CRASH_REPORTS"
fi
if [[ $BUILD_VERSION == *"disable_network_proxy"* ]]; then
GYP_DEFINES+=",TDESKTOP_DISABLE_NETWORK_PROXY"
fi
if [[ $BUILD_VERSION == *"disable_desktop_file_generation"* ]]; then
GYP_DEFINES+=",TDESKTOP_DISABLE_DESKTOP_FILE_GENERATION"
fi
if [[ $BUILD_VERSION == *"disable_gtk_integration"* ]]; then
GYP_DEFINES+=",TDESKTOP_DISABLE_GTK_INTEGRATION"
fi
info_msg "Build defines: ${GYP_DEFINES}"
buildTelegram
travisEndFold
}
getXkbCommon() {
travisStartFold "Getting xkbcommon"
local XKB_CACHE="$CACHE/libxkbcommon"
local XKB_CACHE_FILE="$XKB_CACHE/.cache.txt"
local XKB_CACHE_KEY="${XKB_CACHE_VERSION}"
local XKB_CACHE_OUTDATED="1"
if [ ! -d "$XKB_CACHE" ]; then
mkdir -p "$XKB_CACHE"
fi
ln -sf "$XKB_CACHE" "$XKB_PATH"
if [ -f "$XKB_CACHE_FILE" ]; then
local XKB_CACHE_KEY_FOUND=`tail -n 1 $XKB_CACHE_FILE`
if [ "$XKB_CACHE_KEY" == "$XKB_CACHE_KEY_FOUND" ]; then
XKB_CACHE_OUTDATED="0"
else
info_msg "Cache key '$XKB_CACHE_KEY_FOUND' does not match '$XKB_CACHE_KEY', rebuilding libxkbcommon"
fi
fi
if [ "$XKB_CACHE_OUTDATED" == "1" ]; then
buildXkbCommon
sudo echo $XKB_CACHE_KEY > "$XKB_CACHE_FILE"
else
info_msg "Using cached libxkbcommon"
fi
}
buildXkbCommon() {
info_msg "Downloading and building libxkbcommon"
if [ -d "$EXTERNAL/libxkbcommon" ]; then
rm -rf "$EXTERNAL/libxkbcommon"
fi
cd $XKB_PATH
rm -rf *
cd "$EXTERNAL"
git clone https://github.com/xkbcommon/libxkbcommon.git
cd "$EXTERNAL/libxkbcommon"
git checkout xkbcommon-0.8.4
./autogen.sh --prefix=$XKB_PATH
make $MAKE_ARGS
sudo make install
sudo ldconfig
}
getRange() {
travisStartFold "Getting range-v3"
local RANGE_CACHE="$CACHE/range-v3"
local RANGE_CACHE_FILE="$RANGE_CACHE/.cache.txt"
local RANGE_CACHE_KEY="${RANGE_CACHE_VERSION}"
local RANGE_CACHE_OUTDATED="1"
if [ ! -d "$RANGE_CACHE" ]; then
mkdir -p "$RANGE_CACHE"
fi
ln -sf "$RANGE_CACHE" "$RANGE_PATH"
if [ -f "$RANGE_CACHE_FILE" ]; then
local RANGE_CACHE_KEY_FOUND=`tail -n 1 $RANGE_CACHE_FILE`
if [ "$RANGE_CACHE_KEY" == "$RANGE_CACHE_KEY_FOUND" ]; then
RANGE_CACHE_OUTDATED="0"
else
info_msg "Cache key '$RANGE_CACHE_KEY_FOUND' does not match '$RANGE_CACHE_KEY', getting range-v3"
fi
fi
if [ "$RANGE_CACHE_OUTDATED" == "1" ]; then
buildRange
sudo echo $RANGE_CACHE_KEY > "$RANGE_CACHE_FILE"
else
info_msg "Using cached range-v3"
fi
}
buildRange() {
info_msg "Downloading range-v3"
if [ -d "$EXTERNAL/range-v3" ]; then
rm -rf "$EXTERNAL/range-v3"
fi
cd $RANGE_PATH
rm -rf *
cd "$EXTERNAL"
git clone --depth 1 --branch 0.5.0 https://github.com/ericniebler/range-v3
cd "$EXTERNAL/range-v3"
cp -r * "$RANGE_PATH/"
}
getVa() {
travisStartFold "Getting libva"
local VA_CACHE="$CACHE/libva"
local VA_CACHE_FILE="$VA_CACHE/.cache.txt"
local VA_CACHE_KEY="${VA_CACHE_VERSION}"
local VA_CACHE_OUTDATED="1"
if [ ! -d "$VA_CACHE" ]; then
mkdir -p "$VA_CACHE"
fi
ln -sf "$VA_CACHE" "$VA_PATH"
if [ -f "$VA_CACHE_FILE" ]; then
local VA_CACHE_KEY_FOUND=`tail -n 1 $VA_CACHE_FILE`
if [ "$VA_CACHE_KEY" == "$VA_CACHE_KEY_FOUND" ]; then
VA_CACHE_OUTDATED="0"
else
info_msg "Cache key '$VA_CACHE_KEY_FOUND' does not match '$VA_CACHE_KEY', rebuilding libva"
fi
fi
if [ "$VA_CACHE_OUTDATED" == "1" ]; then
buildVa
sudo echo $VA_CACHE_KEY > "$VA_CACHE_FILE"
else
info_msg "Using cached libva"
fi
}
buildVa() {
info_msg "Downloading and building libva"
if [ -d "$EXTERNAL/libva" ]; then
rm -rf "$EXTERNAL/libva"
fi
cd $VA_PATH
rm -rf *
cd "$EXTERNAL"
git clone https://github.com/01org/libva
cd "$EXTERNAL/libva"
./autogen.sh --prefix=$VA_PATH --enable-static
make $MAKE_ARGS
sudo make install
sudo ldconfig
}
getVdpau() {
travisStartFold "Getting libvdpau"
local VDPAU_CACHE="$CACHE/libvdpau"
local VDPAU_CACHE_FILE="$VDPAU_CACHE/.cache.txt"
local VDPAU_CACHE_KEY="${VDPAU_CACHE_VERSION}"
local VDPAU_CACHE_OUTDATED="1"
if [ ! -d "$VDPAU_CACHE" ]; then
mkdir -p "$VDPAU_CACHE"
fi
ln -sf "$VDPAU_CACHE" "$VDPAU_PATH"
if [ -f "$VDPAU_CACHE_FILE" ]; then
local VDPAU_CACHE_KEY_FOUND=`tail -n 1 $VDPAU_CACHE_FILE`
if [ "$VDPAU_CACHE_KEY" == "$VDPAU_CACHE_KEY_FOUND" ]; then
VDPAU_CACHE_OUTDATED="0"
else
info_msg "Cache key '$VDPAU_CACHE_KEY_FOUND' does not match '$VDPAU_CACHE_KEY', rebuilding libvdpau"
fi
fi
if [ "$VDPAU_CACHE_OUTDATED" == "1" ]; then
buildVdpau
sudo echo $VDPAU_CACHE_KEY > "$VDPAU_CACHE_FILE"
else
info_msg "Using cached libvdpau"
fi
}
buildVdpau() {
info_msg "Downloading and building libvdpau"
if [ -d "$EXTERNAL/libvdpau" ]; then
rm -rf "$EXTERNAL/libvdpau"
fi
cd $VDPAU_PATH
rm -rf *
cd "$EXTERNAL"
git clone git://anongit.freedesktop.org/vdpau/libvdpau
cd "$EXTERNAL/libvdpau"
git checkout libvdpau-1.2
./autogen.sh --prefix=$VDPAU_PATH --enable-static
make $MAKE_ARGS
sudo make install
sudo ldconfig
}
getFFmpeg() {
travisStartFold "Getting ffmpeg"
local FFMPEG_CACHE="$CACHE/ffmpeg"
local FFMPEG_CACHE_FILE="$FFMPEG_CACHE/.cache.txt"
local FFMPEG_CACHE_KEY="${FFMPEG_CACHE_VERSION}"
local FFMPEG_CACHE_OUTDATED="1"
if [ ! -d "$FFMPEG_CACHE" ]; then
mkdir -p "$FFMPEG_CACHE"
fi
ln -sf "$FFMPEG_CACHE" "$FFMPEG_PATH"
if [ -f "$FFMPEG_CACHE_FILE" ]; then
local FFMPEG_CACHE_KEY_FOUND=`tail -n 1 $FFMPEG_CACHE_FILE`
if [ "$FFMPEG_CACHE_KEY" == "$FFMPEG_CACHE_KEY_FOUND" ]; then
FFMPEG_CACHE_OUTDATED="0"
else
info_msg "Cache key '$FFMPEG_CACHE_KEY_FOUND' does not match '$FFMPEG_CACHE_KEY', rebuilding ffmpeg"
fi
fi
if [ "$FFMPEG_CACHE_OUTDATED" == "1" ]; then
buildFFmpeg
sudo echo $FFMPEG_CACHE_KEY > "$FFMPEG_CACHE_FILE"
else
info_msg "Using cached ffmpeg"
fi
}
buildFFmpeg() {
info_msg "Downloading and building ffmpeg"
if [ -d "$EXTERNAL/ffmpeg" ]; then
rm -rf "$EXTERNAL/ffmpeg"
fi
cd $FFMPEG_PATH
rm -rf *
cd "$EXTERNAL"
git clone https://git.ffmpeg.org/ffmpeg.git
cd "$EXTERNAL/ffmpeg"
git checkout release/3.4
./configure \
--prefix=$FFMPEG_PATH \
--disable-debug \
--disable-programs \
--disable-doc \
--disable-everything \
--enable-gpl \
--enable-version3 \
--enable-libopus \
--enable-decoder=aac \
--enable-decoder=aac_latm \
--enable-decoder=aasc \
--enable-decoder=flac \
--enable-decoder=gif \
--enable-decoder=h264 \
--enable-decoder=h264_vdpau \
--enable-decoder=mp1 \
--enable-decoder=mp1float \
--enable-decoder=mp2 \
--enable-decoder=mp2float \
--enable-decoder=mp3 \
--enable-decoder=mp3adu \
--enable-decoder=mp3adufloat \
--enable-decoder=mp3float \
--enable-decoder=mp3on4 \
--enable-decoder=mp3on4float \
--enable-decoder=mpeg4 \
--enable-decoder=mpeg4_vdpau \
--enable-decoder=msmpeg4v2 \
--enable-decoder=msmpeg4v3 \
--enable-decoder=opus \
--enable-decoder=vorbis \
--enable-decoder=wavpack \
--enable-decoder=wmalossless \
--enable-decoder=wmapro \
--enable-decoder=wmav1 \
--enable-decoder=wmav2 \
--enable-decoder=wmavoice \
--enable-encoder=libopus \
--enable-hwaccel=h264_vaapi \
--enable-hwaccel=h264_vdpau \
--enable-hwaccel=mpeg4_vaapi \
--enable-hwaccel=mpeg4_vdpau \
--enable-parser=aac \
--enable-parser=aac_latm \
--enable-parser=flac \
--enable-parser=h264 \
--enable-parser=mpeg4video \
--enable-parser=mpegaudio \
--enable-parser=opus \
--enable-parser=vorbis \
--enable-demuxer=aac \
--enable-demuxer=flac \
--enable-demuxer=gif \
--enable-demuxer=h264 \
--enable-demuxer=mov \
--enable-demuxer=mp3 \
--enable-demuxer=ogg \
--enable-demuxer=wav \
--enable-muxer=ogg \
--enable-muxer=opus
make $MAKE_ARGS
sudo make install
sudo ldconfig
}
getOpenAL() {
travisStartFold "Getting openal-soft"
local OPENAL_CACHE="$CACHE/openal-soft"
local OPENAL_CACHE_FILE="$OPENAL_CACHE/.cache.txt"
local OPENAL_CACHE_KEY="${OPENAL_CACHE_VERSION}"
local OPENAL_CACHE_OUTDATED="1"
if [ ! -d "$OPENAL_CACHE" ]; then
mkdir -p "$OPENAL_CACHE"
fi
ln -sf "$OPENAL_CACHE" "$OPENAL_PATH"
if [ -f "$OPENAL_CACHE_FILE" ]; then
local OPENAL_CACHE_KEY_FOUND=`tail -n 1 $OPENAL_CACHE_FILE`
if [ "$OPENAL_CACHE_KEY" == "$OPENAL_CACHE_KEY_FOUND" ]; then
OPENAL_CACHE_OUTDATED="0"
else
info_msg "Cache key '$OPENAL_CACHE_KEY_FOUND' does not match '$OPENAL_CACHE_KEY', rebuilding openal-soft"
fi
fi
if [ "$OPENAL_CACHE_OUTDATED" == "1" ]; then
buildOpenAL
sudo echo $OPENAL_CACHE_KEY > "$OPENAL_CACHE_FILE"
else
info_msg "Using cached openal-soft"
fi
}
buildOpenAL() {
info_msg "Downloading and building openal-soft"
if [ -d "$EXTERNAL/openal-soft" ]; then
rm -rf "$EXTERNAL/openal-soft"
fi
cd $OPENAL_PATH
sudo rm -rf *
cd "$EXTERNAL"
git clone https://github.com/kcat/openal-soft.git
cd openal-soft
git checkout openal-soft-1.19.1
cd "$EXTERNAL/openal-soft/build"
cmake \
-D CMAKE_INSTALL_PREFIX=$OPENAL_PATH \
-D CMAKE_BUILD_TYPE=Release \
-D LIBTYPE=STATIC \
-D ALSOFT_EXAMPLES=OFF \
-D ALSOFT_TESTS=OFF \
-D ALSOFT_UTILS=OFF \
..
make $MAKE_ARGS
sudo make install
sudo ldconfig
}
getBreakpad() {
travisStartFold "Getting breakpad"
local BREAKPAD_CACHE="$CACHE/breakpad"
local BREAKPAD_CACHE_FILE="$BREAKPAD_CACHE/.cache.txt"
local BREAKPAD_CACHE_KEY="${BREAKPAD_CACHE_VERSION}"
local BREAKPAD_CACHE_OUTDATED="1"
if [ ! -d "$BREAKPAD_CACHE" ]; then
mkdir -p "$BREAKPAD_CACHE"
fi
ln -sf "$BREAKPAD_CACHE" "$BREAKPAD_PATH"
if [ -f "$BREAKPAD_CACHE_FILE" ]; then
local BREAKPAD_CACHE_KEY_FOUND=`tail -n 1 $BREAKPAD_CACHE_FILE`
if [ "$BREAKPAD_CACHE_KEY" == "$BREAKPAD_CACHE_KEY_FOUND" ]; then
BREAKPAD_CACHE_OUTDATED="0"
else
info_msg "Cache key '$BREAKPAD_CACHE_KEY_FOUND' does not match '$BREAKPAD_CACHE_KEY', rebuilding breakpad"
fi
fi
if [ "$BREAKPAD_CACHE_OUTDATED" == "1" ]; then
buildBreakpad
sudo echo $BREAKPAD_CACHE_KEY > "$BREAKPAD_CACHE_FILE"
else
info_msg "Using cached breakpad"
fi
}
buildBreakpad() {
info_msg "Downloading and building breakpad"
if [ -d "$EXTERNAL/breakpad" ]; then
rm -rf "$EXTERNAL/breakpad"
fi
cd $BREAKPAD_PATH
rm -rf *
cd "$EXTERNAL"
git clone https://chromium.googlesource.com/breakpad/breakpad
cd "$EXTERNAL/breakpad/src/third_party"
git clone https://chromium.googlesource.com/linux-syscall-support lss
cd "$EXTERNAL/breakpad"
./configure --prefix=$BREAKPAD_PATH
make $MAKE_ARGS
sudo make install
sudo ldconfig
}
getCustomQt() {
travisStartFold "Getting patched Qt"
local QT_CACHE="$CACHE/qtPatched"
local QT_CACHE_FILE="$QT_CACHE/.cache.txt"
local QT_PATCH_CHECKSUM=`sha1sum $QT_PATCH`
local QT_CACHE_KEY="${QT_VERSION}_${QT_CACHE_VERSION}_${QT_PATCH_CHECKSUM:0:32}"
local QT_CACHE_OUTDATED="1"
if [ ! -d "$QT_CACHE" ]; then
mkdir -p "$QT_CACHE"
fi
ln -sf "$QT_CACHE" "$QT_PATH"
if [ -f "$QT_CACHE_FILE" ]; then
local QT_CACHE_KEY_FOUND=`tail -n 1 $QT_CACHE_FILE`
if [ "$QT_CACHE_KEY" == "$QT_CACHE_KEY_FOUND" ]; then
QT_CACHE_OUTDATED="0"
else
info_msg "Cache key '$QT_CACHE_KEY_FOUND' does not match '$QT_CACHE_KEY', rebuilding patched Qt"
fi
fi
if [ "$QT_CACHE_OUTDATED" == "1" ]; then
buildCustomQt
sudo echo $QT_CACHE_KEY > "$QT_CACHE_FILE"
else
info_msg "Using cached patched Qt"
fi
export PATH="$QT_PATH/bin:$PATH"
}
buildCustomQt() {
QT_WAS_BUILT="1"
info_msg "Downloading and building patched qt"
if [ -d "$EXTERNAL/qt${QT_VERSION}" ]; then
sudo rm -rf "$EXTERNAL/qt${QT_VERSION}"
fi
cd $QT_PATH
sudo rm -rf *
cd "$EXTERNAL"
git clone git://code.qt.io/qt/qt5.git qt${QT_VERSION}
cd "$EXTERNAL/qt${QT_VERSION}"
perl init-repository --branch --module-subset=qtbase,qtimageformats
git checkout v${QT_VERSION}
cd qtbase && git checkout v${QT_VERSION} && cd ..
cd qtimageformats && git checkout v${QT_VERSION} && cd ..
cd "$EXTERNAL/qt${QT_VERSION}/qtbase"
git apply "$QT_PATCH"
cd ..
cd "$EXTERNAL/qt${QT_VERSION}/qtbase/src/plugins/platforminputcontexts"
git clone https://github.com/telegramdesktop/fcitx.git
git clone https://github.com/telegramdesktop/hime.git
git clone https://github.com/telegramdesktop/nimf.git
cd ../../../..
./configure -prefix $QT_PATH -release -opensource -confirm-license -qt-zlib \
-qt-libpng -qt-libjpeg -qt-freetype -qt-harfbuzz -qt-pcre -qt-xcb \
-qt-xkbcommon-x11 -no-opengl -no-gtkstyle -static \
-nomake examples -nomake tests -no-mirclient \
-dbus-runtime -no-gstreamer -no-mtdev # <- Not sure about these
make $MAKE_ARGS
sudo make install
}
getGSL() {
cd "$UPSTREAM"
git submodule init
git submodule update
}
getGYP() {
travisStartFold "Getting patched GYP"
local GYP_CACHE="$CACHE/gyp"
local GYP_CACHE_FILE="$GYP_CACHE/.cache.txt"
local GYP_PATCH_CHECKSUM=`sha1sum $GYP_PATCH`
local GYP_CACHE_KEY="${GYP_CACHE_VERSION}_${GYP_PATCH_CHECKSUM:0:32}"
local GYP_CACHE_OUTDATED="1"
if [ ! -d "$GYP_CACHE" ]; then
mkdir -p "$GYP_CACHE"
fi
ln -sf "$GYP_CACHE" "$GYP_PATH"
if [ -f "$GYP_CACHE_FILE" ]; then
local GYP_CACHE_KEY_FOUND=`tail -n 1 $GYP_CACHE_FILE`
if [ "$GYP_CACHE_KEY" == "$GYP_CACHE_KEY_FOUND" ]; then
GYP_CACHE_OUTDATED="0"
else
info_msg "Cache key '$GYP_CACHE_KEY_FOUND' does not match '$GYP_CACHE_KEY', rebuilding patched GYP"
fi
fi
if [ "$GYP_CACHE_OUTDATED" == "1" ]; then
buildGYP
sudo echo $GYP_CACHE_KEY > "$GYP_CACHE_FILE"
else
info_msg "Using cached patched GYP"
fi
}
buildGYP() {
info_msg "Downloading and building patched GYP"
if [ -d "$EXTERNAL/gyp" ]; then
rm -rf "$EXTERNAL/gyp"
fi
cd $GYP_PATH
rm -rf *
cd "$EXTERNAL"
git clone https://chromium.googlesource.com/external/gyp
cd "$EXTERNAL/gyp"
git checkout 702ac58e47
git apply "$GYP_PATCH"
cp -r * "$GYP_PATH/"
}
buildTelegram() {
travisStartFold "Build tdesktop"
cd "$UPSTREAM/Telegram/gyp"
"$GYP_PATH/gyp" \
-Dapi_id=17349 \
-Dapi_hash=344583e45741c457fe1862106095a5eb \
-Dbuild_defines=${GYP_DEFINES:1} \
-Dlinux_path_xkbcommon=$XKB_PATH \
-Dlinux_path_va=$VA_PATH \
-Dlinux_path_vdpau=$VDPAU_PATH \
-Dlinux_path_ffmpeg=$FFMPEG_PATH \
-Dlinux_path_openal=$OPENAL_PATH \
-Dlinux_path_range=$RANGE_PATH \
-Dlinux_path_qt=$QT_PATH \
-Dlinux_path_breakpad=$BREAKPAD_PATH \
-Dlinux_path_libexif_lib=/usr/local/lib \
-Dlinux_path_opus_include=/usr/include/opus \
-Dlinux_lib_ssl=-lssl \
-Dlinux_lib_crypto=-lcrypto \
-Dlinux_lib_icu=-licuuc\ -licutu\ -licui18n \
--depth=. --generator-output=.. --format=cmake -Goutput_dir=../out \
Telegram.gyp
cd "$UPSTREAM/out/Debug"
export ASM="gcc"
cmake .
make $MAKE_ARGS
}
check() {
local filePath="$UPSTREAM/out/Debug/Telegram"
if test -f "$filePath"; then
success_msg "Build successfully done! :)"
local size;
size=$(stat -c %s "$filePath")
success_msg "File size of ${filePath}: ${size} Bytes"
else
error_msg "Build error, output file does not exist"
exit 1
fi
}
source ./.travis/common.sh
run

View File

@@ -1,64 +0,0 @@
#!/usr/bin/env bash
# set colors
RCol='\e[0m' # Text Reset
# Regular Bold Underline High Intensity BoldHigh Intens Background High Intensity Backgrounds
Bla='\e[0;30m'; BBla='\e[1;30m'; UBla='\e[4;30m'; IBla='\e[0;90m'; BIBla='\e[1;90m'; On_Bla='\e[40m'; On_IBla='\e[0;100m';
Red='\e[0;31m'; BRed='\e[1;31m'; URed='\e[4;31m'; IRed='\e[0;91m'; BIRed='\e[1;91m'; On_Red='\e[41m'; On_IRed='\e[0;101m';
Gre='\e[0;32m'; BGre='\e[1;32m'; UGre='\e[4;32m'; IGre='\e[0;92m'; BIGre='\e[1;92m'; On_Gre='\e[42m'; On_IGre='\e[0;102m';
Yel='\e[0;33m'; BYel='\e[1;33m'; UYel='\e[4;33m'; IYel='\e[0;93m'; BIYel='\e[1;93m'; On_Yel='\e[43m'; On_IYel='\e[0;103m';
Blu='\e[0;34m'; BBlu='\e[1;34m'; UBlu='\e[4;34m'; IBlu='\e[0;94m'; BIBlu='\e[1;94m'; On_Blu='\e[44m'; On_IBlu='\e[0;104m';
Pur='\e[0;35m'; BPur='\e[1;35m'; UPur='\e[4;35m'; IPur='\e[0;95m'; BIPur='\e[1;95m'; On_Pur='\e[45m'; On_IPur='\e[0;105m';
Cya='\e[0;36m'; BCya='\e[1;36m'; UCya='\e[4;36m'; ICya='\e[0;96m'; BICya='\e[1;96m'; On_Cya='\e[46m'; On_ICya='\e[0;106m';
Whi='\e[0;37m'; BWhi='\e[1;37m'; UWhi='\e[4;37m'; IWhi='\e[0;97m'; BIWhi='\e[1;97m'; On_Whi='\e[47m'; On_IWhi='\e[0;107m';
start_msg() {
echo -e "\n${Gre}$*${RCol}"
}
info_msg() {
sameLineInfoMessage "\n$1"
}
error_msg() {
echo -e "\n${BRed}$*${RCol}"
}
success_msg() {
echo -e "\n${BGre}$*${RCol}"
}
sameLineInfoMessage() {
echo -e "${Cya}$*${RCol}"
}
TRAVIS_LAST_FOLD=""
travisStartFold() {
local TITLE="$1"
local NAME=$(sanitizeName "$TITLE")
if [ "$TRAVIS_LAST_FOLD" != "" ]; then
travisEndFold
fi
echo "travis_fold:start:$NAME"
sameLineInfoMessage "$TITLE"
TRAVIS_LAST_FOLD="$NAME"
}
travisEndFold() {
if [ "$TRAVIS_LAST_FOLD" == "" ]; then
return
fi
echo "travis_fold:end:$TRAVIS_LAST_FOLD"
TRAVIS_LAST_FOLD=""
}
sanitizeName() {
local NAME="${1// /_}"
local NAME="${NAME,,}"
echo "$NAME"
}

37
CMakeLists.txt Normal file
View File

@@ -0,0 +1,37 @@
# This file is part of Telegram Desktop,
# the official desktop application for the Telegram messaging service.
#
# For license and copyright information please follow this link:
# https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
cmake_minimum_required(VERSION 3.16)
cmake_policy(SET CMP0076 NEW)
cmake_policy(SET CMP0091 NEW)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
include(cmake/validate_special_target.cmake)
include(cmake/version.cmake)
desktop_app_parse_version(Telegram/build/version)
project(Telegram
LANGUAGES C CXX
VERSION ${desktop_app_version_cmake}
DESCRIPTION "Official Telegram Desktop messenger"
HOMEPAGE_URL "https://desktop.telegram.org"
)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT Telegram)
include(cmake/variables.cmake)
include(cmake/nice_target_sources.cmake)
include(cmake/target_link_static_libraries.cmake)
include(cmake/target_link_frameworks.cmake)
include(cmake/init_target.cmake)
include(cmake/generate_target.cmake)
include(cmake/options.cmake)
include(cmake/external/qt/package.cmake)
add_subdirectory(cmake)
add_subdirectory(Telegram)

2
LEGAL
View File

@@ -1,7 +1,7 @@
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
Copyright (c) 2014-2019 John Preston, https://desktop.telegram.org
Copyright (c) 2014-2020 The Telegram Desktop Authors.
Telegram Desktop is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by

View File

@@ -3,8 +3,9 @@
This is the complete source code and the build instructions for the alpha version of the official desktop client for the [Telegram][telegram] messenger, based on the [Telegram API][telegram_api] and the [MTProto][telegram_proto] secure protocol.
[![Version](https://badge.fury.io/gh/telegramdesktop%2Ftdesktop.svg)](https://github.com/telegramdesktop/tdesktop/releases)
[![Build Status](https://travis-ci.org/telegramdesktop/tdesktop.svg?branch=dev)](https://travis-ci.org/telegramdesktop/tdesktop)
[![Build status](https://ci.appveyor.com/api/projects/status/uiw2y768iy4i5bu8/branch/dev?svg=true)](https://ci.appveyor.com/project/telegramdesktop/tdesktop)
[![Build Status](https://github.com/telegramdesktop/tdesktop/workflows/Windows./badge.svg)](https://github.com/telegramdesktop/tdesktop/actions)
[![Build Status](https://github.com/telegramdesktop/tdesktop/workflows/MacOS./badge.svg)](https://github.com/telegramdesktop/tdesktop/actions)
[![Build Status](https://github.com/telegramdesktop/tdesktop/workflows/Linux./badge.svg)](https://github.com/telegramdesktop/tdesktop/actions)
[![Preview of Telegram Desktop][preview_image]][preview_image_url]
@@ -13,19 +14,18 @@ The source code is published under GPLv3 with OpenSSL exception, the license is
## Supported systems
* Windows XP - Windows 10 (**not** RT)
* Mac OS X 10.8 - Mac OS X 10.11
* Mac OS X 10.8 - Mac OS X 10.15
* Mac OS X 10.6 - Mac OS X 10.7 (separate build)
* Ubuntu 12.04 - Ubuntu 19.04
* Fedora 22 - Fedora 30
* Ubuntu 12.04 - Ubuntu 19.10
* Fedora 22 - Fedora 31
* [Snappy](https://snapcraft.io/telegram-desktop)
* [Flathub](https://flathub.org/apps/details/org.telegram.desktop)
## Third-party
* Qt 5.3.2 and 5.6.2, slightly patched ([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))
* libexif 0.6.20 ([LGPL](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html))
* Qt 5.12.5 and 5.6.2, slightly patched ([LGPL](http://doc.qt.io/qt-5/lgpl.html))
* OpenSSL 1.1.1 ([OpenSSL License](https://www.openssl.org/source/license.html))
* zlib 1.2.11 ([zlib License](http://www.zlib.net/zlib_license.html))
* LZMA SDK 9.20 ([public domain](http://www.7-zip.org/sdk.html))
* liblzma ([public domain](http://tukaani.org/xz/))
* Google Breakpad ([License](https://chromium.googlesource.com/breakpad/breakpad/+/master/LICENSE))
@@ -42,6 +42,8 @@ The source code is published under GPLv3 with OpenSSL exception, the license is
* 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))
* xxHash ([BSD License](https://github.com/Cyan4973/xxHash/blob/dev/LICENSE))
* QR Code generator ([MIT License](https://github.com/nayuki/QR-Code-generator#license))
* CMake ([New BSD License](https://github.com/Kitware/CMake/blob/master/Copyright.txt))
## Build instructions

1212
Telegram/CMakeLists.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,300 +0,0 @@
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
using "colors.palette";
TextPalette {
linkFg: color;
monoFg: color;
selectBg: color;
selectFg: color;
selectLinkFg: color;
selectMonoFg: color;
selectOverlay: color;
}
TextStyle {
font: font;
linkFont: font;
linkFontOver: font;
lineHeight: pixels;
}
semibold: "Open Sans Semibold";
fsize: 13px;
normalFont: font(fsize);
semiboldFont: font(fsize semibold);
boxFontSize: 14px;
boxTextFont: font(boxFontSize);
emojiImgSize: 18px; // exceptional value for retina
emojiSize: 18px;
emojiPadding: 1px;
lineWidth: 1px;
defaultTextPalette: TextPalette {
linkFg: windowActiveTextFg;
monoFg: msgInMonoFg;
selectBg: msgInBgSelected;
selectFg: transparent; // use painter current pen instead
selectLinkFg: historyLinkInFgSelected;
selectMonoFg: msgInMonoFgSelected;
selectOverlay: msgSelectOverlay;
}
defaultTextStyle: TextStyle {
font: normalFont;
linkFont: normalFont;
linkFontOver: font(fsize underline);
lineHeight: 0px;
}
semiboldTextStyle: TextStyle(defaultTextStyle) {
font: semiboldFont;
linkFont: semiboldFont;
linkFontOver: font(fsize semibold underline);
}
shadowToggleDuration: 200;
slideDuration: 240;
slideShift: 100px;
slideShadow: icon {{ "slide_shadow", slideFadeOutShadowFg }};
slideWrapDuration: 150;
fadeWrapDuration: 200;
linkCropLimit: 360px;
linkFont: normalFont;
linkOverFont: font(fsize underline);
dateRadius: 6px;
buttonRadius: 3px;
setLittleSkip: 9px;
noContactsHeight: 100px;
noContactsFont: font(fsize);
noContactsColor: windowSubTextFg;
activeFadeInDuration: 500;
activeFadeOutDuration: 3000;
msgMaxWidth: 430px;
msgFont: font(fsize);
msgNameFont: semiboldFont;
msgNameStyle: semiboldTextStyle;
msgServiceFont: semiboldFont;
msgServiceNameFont: semiboldFont;
msgServicePhotoWidth: 100px;
msgDateFont: font(13px);
msgMinWidth: 160px;
msgPhotoSize: 33px;
msgPhotoSkip: 40px;
msgPadding: margins(13px, 7px, 13px, 8px);
msgMargin: margins(16px, 6px, 56px, 2px);
msgMarginTopAttached: 1px;
msgLnkPadding: 2px; // for media open / save links
msgShadow: 2px;
msgReplyPadding: margins(6px, 6px, 11px, 6px);
msgReplyBarPos: point(1px, 0px);
msgReplyBarSize: size(2px, 36px);
msgReplyBarSkip: 10px;
msgServicePadding: margins(12px, 3px, 12px, 4px);
msgServiceMargin: margins(10px, 10px, 10px, 2px);
msgDateSpace: 12px;
msgDateDelta: point(2px, 5px);
msgDateImgDelta: 4px;
msgDateImgPadding: point(8px, 2px);
msgDateImgCheckSpace: 4px;
messageTextStyle: defaultTextStyle;
msgDateTextStyle: defaultTextStyle;
serviceTextPalette: TextPalette(defaultTextPalette) {
linkFg: msgServiceFg;
monoFg: msgServiceFg;
selectBg: msgServiceBgSelected;
selectFg: msgServiceFg;
selectLinkFg: msgServiceFg;
selectMonoFg: msgServiceFg;
selectOverlay: msgServiceBgSelected;
}
serviceTextStyle: TextStyle(defaultTextStyle) {
font: msgServiceFont;
linkFont: msgServiceFont;
linkFontOver: font(fsize semibold underline);
}
inTextPalette: TextPalette(defaultTextPalette) {
linkFg: historyLinkInFg;
monoFg: msgInMonoFg;
selectBg: msgInBgSelected;
selectFg: historyTextInFgSelected;
selectLinkFg: historyLinkInFgSelected;
selectMonoFg: msgInMonoFgSelected;
selectOverlay: msgSelectOverlay;
}
inTextPaletteSelected: TextPalette(inTextPalette) {
linkFg: historyLinkInFgSelected;
monoFg: msgInMonoFgSelected;
}
outTextPalette: TextPalette(defaultTextPalette) {
linkFg: historyLinkOutFg;
monoFg: msgOutMonoFg;
selectBg: msgOutBgSelected;
selectFg: historyTextOutFgSelected;
selectLinkFg: historyLinkOutFgSelected;
selectMonoFg: msgOutMonoFgSelected;
selectOverlay: msgSelectOverlay;
}
outTextPaletteSelected: TextPalette(outTextPalette) {
linkFg: historyLinkOutFgSelected;
monoFg: msgOutMonoFgSelected;
}
fwdTextStyle: TextStyle(semiboldTextStyle) {
linkFontOver: semiboldFont;
}
inFwdTextPalette: TextPalette(defaultTextPalette) {
linkFg: msgInServiceFg;
}
outFwdTextPalette: TextPalette(defaultTextPalette) {
linkFg: msgOutServiceFg;
}
inFwdTextPaletteSelected: TextPalette(defaultTextPalette) {
linkFg: msgInServiceFgSelected;
}
outFwdTextPaletteSelected: TextPalette(defaultTextPalette) {
linkFg: msgOutServiceFgSelected;
}
inReplyTextPalette: TextPalette(inTextPalette) {
linkFg: msgInDateFg;
}
inReplyTextPaletteSelected: TextPalette(inTextPaletteSelected) {
linkFg: msgInDateFgSelected;
}
outReplyTextPalette: TextPalette(outTextPalette) {
linkFg: msgOutDateFg;
}
outReplyTextPaletteSelected: TextPalette(outTextPaletteSelected) {
linkFg: msgOutDateFgSelected;
}
imgReplyTextPalette: TextPalette(defaultTextPalette) {
linkFg: msgImgReplyBarColor;
}
inSemiboldPalette: TextPalette(inTextPalette) {
linkFg: msgInServiceFg;
selectFg: msgInServiceFgSelected;
selectLinkFg: msgInServiceFgSelected;
}
outSemiboldPalette: TextPalette(outTextPalette) {
linkFg: msgOutServiceFg;
selectFg: msgOutServiceFgSelected;
selectLinkFg: msgOutServiceFgSelected;
}
historyComposeAreaPalette: TextPalette(defaultTextPalette) {
linkFg: historyComposeAreaFgService;
}
mediaCaptionSkip: 5px;
mediaInBubbleSkip: 5px;
mediaThumbSize: 48px;
mediaNameTop: 3px;
mediaDetailsShift: 3px;
mediaUnreadSize: 7px;
mediaUnreadSkip: 5px;
mediaUnreadTop: 6px;
mediaInPalette: TextPalette(defaultTextPalette) {
linkFg: mediaInFg;
}
mediaInPaletteSelected: TextPalette(defaultTextPalette) {
linkFg: mediaInFgSelected;
}
textRectMargins: margins(-2px, -1px, -2px, -1px);
searchedBarHeight: 32px;
searchedBarFont: normalFont;
searchedBarPosition: point(17px, 7px);
smallCloseIcon: icon {{ "simple_close", smallCloseIconFg }};
smallCloseIconOver: icon {{ "simple_close", smallCloseIconFgOver }};
dialogsForwardCancelIcon: icon {{ "simple_close", dialogsForwardFg }};
emojiTextFont: font(15px);
emojiReplaceWidth: 52px;
emojiReplaceHeight: 56px;
emojiReplaceInnerHeight: 42px;
emojiReplacePadding: 14px;
dragFont: font(28px semibold);
dragSubfont: font(20px semibold);
dragColor: windowSubTextFg;
dragDropColor: windowActiveTextFg;
dragMargin: margins(0px, 10px, 0px, 10px);
dragPadding: margins(20px, 10px, 20px, 10px);
dragHeight: 72px;
radialSize: size(50px, 50px);
radialLine: 3px;
radialDuration: 350;
radialPeriod: 3000;
youtubeIcon: icon {
{ "media_youtube_play_bg", youtubePlayIconBg },
{ "media_youtube_play", youtubePlayIconFg, point(24px, 12px) },
};
videoIcon: icon {
{ "media_video_play_bg", videoPlayIconBg },
{ "media_video_play", videoPlayIconFg, point(12px, 12px) },
};
locationSize: size(320px, 240px);
mediaPlayerSuppressDuration: 150;
botDescSkip: 8px;
inlineResultsLeft: 11px;
inlineResultsSkip: 3px;
inlineMediaHeight: 96px;
inlineThumbSize: 64px;
inlineThumbSkip: 10px;
inlineTitleFg: windowFg;
inlineDescriptionFg: windowSubTextFg;
inlineRowMargin: 6px;
inlineRowBorder: 1px;
inlineRowBorderFg: shadowFg;
inlineRowFileNameTop: 2px;
inlineRowFileDescriptionTop: 23px;
inlineResultsMinWidth: 48px;
inlineDurationMargin: 3px;
toastTextStyle: defaultTextStyle;
toastMaxWidth: 480px;
toastMinMargin: 13px;
toastPadding: margins(19px, 13px, 19px, 12px);
toastFadeInDuration: 200;
toastFadeOutDuration: 1000;
historyReplyCancelIcon: icon {{ "box_button_close", historyReplyCancelFg }};
historyReplyCancelIconOver: icon {{ "box_button_close", historyReplyCancelFgOver }};
boxTitleCloseIcon: icon {{ "box_button_close", boxTitleCloseFg }};
boxTitleCloseIconOver: icon {{ "box_button_close", boxTitleCloseFgOver }};
notifyFadeRight: icon {{ "fade_horizontal", notificationBg }};
stickerIconLeft: icon {{ "fade_horizontal-flip_horizontal", emojiPanCategories }};
stickerIconRight: icon {{ "fade_horizontal", emojiPanCategories }};
emojiSuggestionsFadeLeft: icon {{ "fade_horizontal-flip_horizontal", boxBg }};
emojiSuggestionsFadeRight: icon {{ "fade_horizontal", boxBg }};
transparentPlaceholderSize: 4px;

View File

@@ -1,559 +0,0 @@
/*
This file is part of Telegram Desktop,
the official desktop application for the Telegram messaging service.
For license and copyright information please follow this link:
https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
*/
// basic
windowBg: #ffffff; // white: fallback for background
windowFg: #000000; // black: fallback for text
windowBgOver: #f1f1f1; // light gray: fallback for background with mouse over
windowBgRipple: #e5e5e5; // darker gray: fallback for ripple effect
windowFgOver: windowFg; // black: fallback for text with mouse over
windowSubTextFg: #999999; // gray: fallback for additional text
windowSubTextFgOver: #919191; // darker gray: fallback for additional text with mouse over
windowBoldFg: #222222; // dark gray: fallback for bold text
windowBoldFgOver: #222222; // dark gray: fallback for bold text with mouse over
windowBgActive: #40a7e3; // bright blue: fallback for blue filled active areas
windowFgActive: #ffffff; // white: fallback for text on active areas
windowActiveTextFg: #168acd; // online blue: fallback for active text like online status
windowShadowFg: #000000; // black: fallback for shadow
windowShadowFgFallback: #f1f1f1; // gray: fallback for shadow without opacity
shadowFg: #00000018; // most shadows (including opacity)
slideFadeOutBg: #0000003c; // slide animation (chat to profile) fade out filling
slideFadeOutShadowFg: windowShadowFg; // slide animation (chat to profile) fade out right section shadow
imageBg: #000000; // image background fallback (when photo size is less than minimum allowed)
imageBgTransparent: #ffffff; // image background when displaying an image with opacity where no opacity is needed
// widgets
activeButtonBg: windowBgActive; // default active button background
activeButtonBgOver: #39a5db; // default active button background with mouse over
activeButtonBgRipple: #2095d0; // default active button ripple effect
activeButtonFg: windowFgActive; // default active button text
activeButtonFgOver: activeButtonFg; // default active button text with mouse over
activeButtonSecondaryFg: #cceeff; // default active button additional text (selected messages counter in forward / delete buttons)
activeButtonSecondaryFgOver: activeButtonSecondaryFg; // default active button additional text with mouse over
activeLineFg: #37a1de; // default active line (like code input field bottom border when you log in and field is focused)
activeLineFgError: #e48383; // default active line for error state (like code input field bottom border when you log in and you've entered incorrect code)
lightButtonBg: windowBg; // default light button background (like buttons in boxes)
lightButtonBgOver: #e3f1fa; // default light button background with mouse over
lightButtonBgRipple: #c9e4f6; // default light button ripple effect
lightButtonFg: windowActiveTextFg; // default light button text
lightButtonFgOver: lightButtonFg; // default light button text with mouse over
attentionButtonFg: #d14e4e; // default attention button text (like confirm button on log out)
attentionButtonFgOver: #d14e4e; // default attention button text with mouse over
attentionButtonBgOver: #fcdfde; // default attention button background with mouse over
attentionButtonBgRipple: #f4c3c2; // default attention button ripple effect
menuBg: windowBg; // default popup menu background
menuBgOver: windowBgOver; // default popup menu item background with mouse over
menuBgRipple: windowBgRipple; // default popup menu item ripple effect
menuIconFg: #a8a8a8; // default popup menu item icon (like main menu)
menuIconFgOver: #999999; // default popup menu item icon with mouse over
menuSubmenuArrowFg: #373737; // default popup menu submenu arrow icon (like in message field context menu in case of RTL system language)
menuFgDisabled: #cccccc; // default popup menu item disabled text (like unavailable items in message field context menu)
menuSeparatorFg: #f1f1f1; // default popup menu separator (like in message field context menu)
scrollBarBg: #00000053; // default scroll bar current rectangle, the bar itself (like in chats list)
scrollBarBgOver: #0000007a; // default scroll bar current rectangle with mouse over it
scrollBg: #0000001a; // default scroll bar background
scrollBgOver: #0000002c; // default scroll bar background with mouse over the scroll bar
smallCloseIconFg: #c7c7c7; // small X icon (like in Show all sessions box to the right for sessions termination)
smallCloseIconFgOver: #a3a3a3; // small X icon with mouse over
radialFg: windowFgActive; // default radial loader line (like in Media Viewer when loading a photo)
radialBg: #00000056; // default radial loader background (like in Media Viewer when loading a photo)
placeholderFg: windowSubTextFg; // default input field placeholder when field is not focused (like in phone input field when you log in)
placeholderFgActive: #aaaaaa; // default input field placeholder when field is focused
inputBorderFg: #e0e0e0; // default input field bottom border (like in code input field when you log in and field is not focused)
filterInputBorderFg: #54c3f3; // default rounded input field border (like in chats list search field when field is focused)
filterInputActiveBg: windowBg; // default rounded input field active background (like in chats list search field when field is focused)
filterInputInactiveBg: windowBgOver; // default rounded input field inactive background (like in chats list search field when field is inactive)
checkboxFg: #b3b3b3; // default unchecked checkbox rounded rectangle
botKbBg: menuBgOver; // bot keyboard button background
botKbDownBg: menuBgRipple; // bot keyboard button ripple effect
botKbColor: windowBoldFgOver; // bot keyboard button text
sliderBgInactive: #e1eaef; // default slider not active bar (like in Settings when you choose interface scale or custom notifications count)
sliderBgActive: windowBgActive; // default slider active bar (like in Settings when you choose interface scale or custom notifications count)
tooltipBg: #eef2f5; // tooltip background (like when you put mouse over the message timestamp and wait)
tooltipFg: #5d6c80; // tooltip text
tooltipBorderFg: #c9d1db; // tooltip border
// custom title bar for Windows and macOS
titleShadow: #00000003; // one pixel line shadow at the bottom of custom window title
titleBg: windowBgOver; // custom window title background when window is inactive
titleBgActive: titleBg; // custom window title background when window is active
titleButtonBg: titleBg; // custom window title minimize/maximize/restore button background when window is inactive (Windows only)
titleButtonFg: #ababab; // custom window title minimize/maximize/restore button icon when window is inactive (Windows only)
titleButtonBgOver: #e5e5e5; // custom window title minimize/maximize/restore button background with mouse over when window is inactive (Windows only)
titleButtonFgOver: #9a9a9a; // custom window title minimize/maximize/restore button icon with mouse over when window is inactive (Windows only)
titleButtonBgActive: titleButtonBg; // custom window title minimize/maximize/restore button background when window is active (Windows only)
titleButtonFgActive: titleButtonFg; // custom window title minimize/maximize/restore button icon when window is active (Windows only)
titleButtonBgActiveOver: titleButtonBgOver; // custom window title minimize/maximize/restore button background with mouse over when window is active (Windows only)
titleButtonFgActiveOver: titleButtonFgOver; // custom window title minimize/maximize/restore button icon with mouse over when window is active (Windows only)
titleButtonCloseBg: titleButtonBg; // custom window title close button background when window is inactive (Windows only)
titleButtonCloseFg: titleButtonFg; // custom window title close button icon when window is inactive (Windows only)
titleButtonCloseBgOver: #e81123; // custom window title close button background with mouse over when window is inactive (Windows only)
titleButtonCloseFgOver: windowFgActive; // custom window title close button icon with mouse over when window is inactive (Windows only)
titleButtonCloseBgActive: titleButtonCloseBg; // custom window title close button background when window is active (Windows only)
titleButtonCloseFgActive: titleButtonCloseFg; // custom window title close button icon when window is active (Windows only)
titleButtonCloseBgActiveOver: titleButtonCloseBgOver; // custom window title close button background with mouse over when window is active (Windows only)
titleButtonCloseFgActiveOver: titleButtonCloseFgOver; // custom window title close button icon with mouse over when window is active (Windows only)
titleFg: #acacac; // custom window title text when window is inactive (macOS only)
titleFgActive: #3e3c3e; // custom window title text when window is active (macOS only)
// tray icon
trayCounterBg: #f23c34; // tray icon counter background
trayCounterBgMute: #888888; // tray icon counter background if all unread messages are muted
trayCounterFg: #ffffff; // tray icon counter text
trayCounterBgMacInvert: #ffffff; // tray icon counter background when tray icon is pressed or when dark theme of macOS is used (macOS only)
trayCounterFgMacInvert: #ffffff01; // tray icon counter text when tray icon is pressed or when dark theme of macOS is used (macOS only)
// layers
layerBg: #0000007f; // box and main menu background layer fade
cancelIconFg: menuIconFg; // default for settings close icon and box search cancel icon
cancelIconFgOver: menuIconFgOver; // default for settings close icon and box search cancel icon with mouse over
// boxes
boxBg: windowBg; // box background
boxTextFg: windowFg; // box text
boxTextFgGood: #4ab44a; // accepted box text (like when choosing username that is not occupied)
boxTextFgError: #d84d4d; // rejecting box text (like when choosing username that is occupied)
boxTitleFg: #404040; // box title text
boxSearchBg: boxBg; // box search field background (like in contacts box)
boxTitleAdditionalFg: #808080; // box title additional text (like in create group box when you see chosen members count)
boxTitleCloseFg: cancelIconFg; // settings close icon and box search cancel icon (like in contacts box)
boxTitleCloseFgOver: cancelIconFgOver; // settings close icon and box search cancel icon (like in contacts box) with mouse over
//boxSearchCancelIconFg: cancelIconFg; // search cancel X button icon (like in contacts box) (not implemented yet)
//boxSearchCancelIconFgOver: cancelIconFgOver; // search cancel X button icon with mouse over (not implemented yet)
membersAboutLimitFg: windowSubTextFgOver; // text in channel members box about the limit (max 200 last members are shown)
contactsBg: windowBg; // contacts (and some other) box row background
contactsBgOver: windowBgOver; // contacts (and some other) box row background with mouse over
contactsNameFg: boxTextFg; // contacts (and some other) box row name text
contactsStatusFg: windowSubTextFg; // contacts (and some other) box row additional text (like last seen stamp)
contactsStatusFgOver: windowSubTextFgOver; // contacts (and some other) box row additional text (like last seen stamp) with mouse over
contactsStatusFgOnline: windowActiveTextFg; // contacts (and some other) box row active additional text (like online status)
photoCropFadeBg: layerBg; // avatar crop box fade background (when choosing a new photo in Settings or for a group)
photoCropPointFg: #ffffff7f; // avatar crop box corner rectangles (when choosing a new photo in Settings or for a group)
callArrowFg: #2ab32a | boxTextFgGood; // received phone call arrow (in calls list box)
callArrowMissedFg: #dd5b4a | boxTextFgError; // missed phone call arrow (in calls list box)
// intro
introBg: windowBg; // login background
introTitleFg: windowBoldFg; // login title text
introDescriptionFg: windowSubTextFg; // login description text
introErrorFg: windowSubTextFg; // login error text (like when providing a wrong log in code)
introCoverTopBg: #0f89d0; // intro gradient top (from)
introCoverBottomBg: #39b0f0; // intro gradient bottom (to)
introCoverIconsFg: #5ec6ff; // intro cloud graphics
introCoverPlaneTrace: #5ec6ff69; // intro plane traces
introCoverPlaneInner: #c6d8e8; // intro plane part
introCoverPlaneOuter: #a1bed4; // intro plane part
introCoverPlaneTop: #ffffff; // intro plane part
// dialogs
dialogsMenuIconFg: menuIconFg; // main menu and lock telegram icon
dialogsMenuIconFgOver: menuIconFgOver; // main menu and lock telegram icon with mouse over
dialogsBg: windowBg; // chat list background
dialogsNameFg: windowBoldFg; // chat list name text
dialogsChatIconFg: dialogsNameFg; // chat list group or channel icon
dialogsDateFg: windowSubTextFg; // chat list date text
dialogsTextFg: windowSubTextFg; // chat list message text
dialogsTextFgService: windowActiveTextFg; // chat list group sender name text (or media message type text)
dialogsDraftFg: #dd4b39; // chat list draft label
dialogsVerifiedIconBg: windowBgActive; // chat list verified icon background
dialogsVerifiedIconFg: windowFgActive; // chat list verified icon check
dialogsSendingIconFg: #c1c1c1; // chat list sending message icon (clock)
dialogsSentIconFg: #5dc452; // chat list sent message tick / double tick icon
dialogsUnreadBg: windowBgActive; // chat list unread badge background for not muted chat
dialogsUnreadBgMuted: #bbbbbb; // chat list unread badge background for muted chat
dialogsUnreadFg: windowFgActive; // chat list unread badge text
dialogsArchiveFg: #525252 | dialogsNameFg; // chat list archive name text
dialogsOnlineBadgeFg: #4dc920 | dialogsUnreadBg; // chat list online status
dialogsScamFg: dialogsDraftFg; // chat list scam label
dialogsBgOver: windowBgOver; // chat list background with mouse over
dialogsNameFgOver: windowBoldFgOver; // chat list name text with mouse over
dialogsChatIconFgOver: dialogsNameFgOver; // chat list group or channel icon with mouse over
dialogsDateFgOver: windowSubTextFgOver; // chat list date text with mouse over
dialogsTextFgOver: windowSubTextFgOver; // chat list message text with mouse over
dialogsTextFgServiceOver: dialogsTextFgService; // chat list group sender name text with mouse over
dialogsDraftFgOver: dialogsDraftFg; // chat list draft label with mouse over
dialogsVerifiedIconBgOver: dialogsVerifiedIconBg; // chat list verified icon background with mouse over
dialogsVerifiedIconFgOver: dialogsVerifiedIconFg; // chat list verified icon check with mouse over
dialogsSendingIconFgOver: dialogsSendingIconFg; // chat list sending message icon (clock) with mouse over
dialogsSentIconFgOver: dialogsSentIconFg; // chat list sent message tick / double tick icon with mouse over
dialogsUnreadBgOver: dialogsUnreadBg; // chat list unread badge background for not muted chat with mouse over
dialogsUnreadBgMutedOver: dialogsUnreadBgMuted; // chat list unread badge background for muted chat with mouse over
dialogsUnreadFgOver: dialogsUnreadFg; // chat list unread badge text with mouse over
dialogsArchiveFgOver: #525252 | dialogsNameFgOver; // chat list archive name text with mouse over
dialogsScamFgOver: dialogsDraftFgOver; // chat list scam label with mouse over
dialogsBgActive: #419fd9; // chat list background for current (active) chat
dialogsNameFgActive: windowFgActive; // chat list name text for current (active) chat
dialogsChatIconFgActive: dialogsNameFgActive; // chat list group or channel icon for current (active) chat
dialogsDateFgActive: windowFgActive; // chat list date text for current (active) chat
dialogsTextFgActive: windowFgActive; // chat list message text for current (active) chat
dialogsTextFgServiceActive: dialogsTextFgActive; // chat list group sender name text for current (active) chat
dialogsDraftFgActive: #c6e1f7; // chat list draft label for current (active) chat
dialogsVerifiedIconBgActive: dialogsTextFgActive; // chat list verified icon background for current (active) chat
dialogsVerifiedIconFgActive: dialogsBgActive; // chat list verified icon check for current (active) chat
dialogsSendingIconFgActive: #ffffff99; // chat list sending message icon (clock) for current (active) chat
dialogsSentIconFgActive: dialogsTextFgActive; // chat list sent message tick / double tick icon for current (active) chat
dialogsUnreadBgActive: dialogsTextFgActive; // chat list unread badge background for not muted chat for current (active) chat
dialogsUnreadBgMutedActive: dialogsDraftFgActive; // chat list unread badge background for muted chat for current (active) chat
dialogsUnreadFgActive: dialogsBgActive; // chat list unread badge text for current (active) chat
dialogsOnlineBadgeFgActive: #ffffff; // chat list online status for current (active) chat
dialogsScamFgActive: dialogsDraftFgActive; // chat list scam label for current (active) chat
dialogsRippleBg: windowBgRipple; // chat list background ripple effect
dialogsRippleBgActive: activeButtonBgRipple; // chat list background ripple effect for current (active) chat
dialogsForwardBg: dialogsBgActive; // forwarding panel background (when forwarding messages in the smallest window size)
dialogsForwardFg: dialogsNameFgActive; // forwarding panel text (when forwarding messages in the smallest window size)
searchedBarBg: windowBgOver; // search results bar background (in chats list, contacts box..)
searchedBarFg: windowSubTextFgOver; // search results bar text (in chats list, contacts box..)
// history
topBarBg: windowBg; // top bar background (in chat view, media overview..)
emojiPanBg: windowBg; // emoji panel background
emojiPanCategories: #f7f7f7 | windowBg; // emoji panel categories background
emojiPanHeaderFg: windowSubTextFg; // emoji panel section header text
emojiPanHeaderBg: #fffffff2 | emojiPanBg; // emoji panel section header background
emojiIconFg: checkboxFg; // emoji category icon
emojiIconFgActive: windowBgActive; // active emoji category icon
stickerPanDeleteBg: #000000ff; // delete X button background for custom sent stickers in stickers panel (legacy)
stickerPanDeleteFg: windowFgActive; // delete X button icon for custom sent stickers in stickers panel (legacy)
stickerPreviewBg: #ffffffb0; // sticker and GIF preview background (when you press and hold on a sticker)
historyTextInFg: windowFg; // inbox message text
historyTextInFgSelected: historyTextInFg; // inbox message selected text or text in a selected message
historyTextOutFg: windowFg; // outbox message text
historyTextOutFgSelected: historyTextOutFg; // outbox message selected text or text in a selected message
historyLinkInFg: windowActiveTextFg; // inbox message link
historyLinkInFgSelected: historyLinkInFg; // inbox message link in a selected text or message
historyLinkOutFg: windowActiveTextFg; // outbox message link
historyLinkOutFgSelected: historyLinkOutFg; // outbox message link in a selected text or message
historyFileNameInFg: historyTextInFg; // inbox media filename text
historyFileNameInFgSelected: historyFileNameInFg; // inbox media filename text in a selected message
historyFileNameOutFg: historyTextOutFg; // outbox media filename text
historyFileNameOutFgSelected: historyFileNameOutFg; // outbox media filename text in a selected message
historyOutIconFg: dialogsSentIconFg; // outbox message tick / double tick icon
historyOutIconFgSelected: #4da79f; // outbox message tick / double tick icon in a selected message
historyIconFgInverted: windowFgActive; // media message tick / double tick icon (like in sent photo)
historySendingOutIconFg: #98d292; // outbox sending message icon (clock)
historySendingInIconFg: #a0adb5; // inbox sending message icon (clock) (like in sent messages to yourself or in sent messages to a channel)
historySendingInvertedIconFg: #ffffffc8; // media sending message icon (clock) (like in sent photo)
historyCallArrowInFg: callArrowFg; // received phone call arrow
historyCallArrowInFgSelected: callArrowFg; // received phone call arrow in a selected message
historyCallArrowMissedInFg: callArrowMissedFg; // missed phone call arrow
historyCallArrowMissedInFgSelected: callArrowMissedFg; // missed phone call arrow in a selected message
historyCallArrowOutFg: historyCallArrowInFg; // outgoing phone call arrow
historyCallArrowOutFgSelected: historyCallArrowInFgSelected; // outgoing phone call arrow
historyUnreadBarBg: #fcfbfa; // new unread messages bar background
historyUnreadBarBorder: shadowFg; // new unread messages bar shadow
historyUnreadBarFg: #538bb4; // new unread messages bar text
historyForwardChooseBg: #0000004c; // forwarding messages in a large window size "choose recipient" background
historyForwardChooseFg: windowFgActive; // forwarding messages in a large window size "choose recipient" text
historyPeer1NameFg: #c03d33; // red group member name
historyPeer1NameFgSelected: historyPeer1NameFg; // red group member name in a selected message
historyPeer1UserpicBg: #e17076; // red userpic background
historyPeer2NameFg: #4fad2d; // green group member name
historyPeer2NameFgSelected: historyPeer2NameFg; // green group member name in a selected message
historyPeer2UserpicBg: #7bc862; // green userpic background
historyPeer3NameFg: #d09306; // yellow group member name
historyPeer3NameFgSelected: historyPeer3NameFg; // yellow group member name in a selected message
historyPeer3UserpicBg: #e5ca77; // yellow userpic background
historyPeer4NameFg: windowActiveTextFg; // blue group member name
historyPeer4NameFgSelected: historyPeer4NameFg; // blue group member name in a selected message
historyPeer4UserpicBg: #65aadd; // blue userpic background
historyPeer5NameFg: #8544d6; // purple group member name
historyPeer5NameFgSelected: historyPeer5NameFg; // purple group member name in a selected message
historyPeer5UserpicBg: #a695e7; // purple userpic background
historyPeer6NameFg: #cd4073; // pink group member name
historyPeer6NameFgSelected: historyPeer6NameFg; // pink group member name in a selected message
historyPeer6UserpicBg: #ee7aae; // pink userpic background
historyPeer7NameFg: #2996ad; // sea group member name
historyPeer7NameFgSelected: historyPeer7NameFg; // sea group member name in a selected message
historyPeer7UserpicBg: #6ec9cb; // sea userpic background
historyPeer8NameFg: #ce671b; // orange group member name
historyPeer8NameFgSelected: historyPeer8NameFg; // orange group member name in a selected message
historyPeer8UserpicBg: #faa774; // orange userpic background
historyPeerUserpicFg: windowFgActive; // default userpic initials
historyPeerSavedMessagesBg: historyPeer4UserpicBg; // saved messages userpic background
historyPeerArchiveUserpicBg: dialogsUnreadBgMuted; // archive folder userpic background
// Some values are marked as (adjusted), it means they're adjusted by
// hue and saturation of the average background color if user chooses
// some other (not bundled to this color theme) background. If the
// bundled background is used those colors are not adjusted in any way.
historyScrollBarBg: #517c417a; // scroll bar current rectangle, the bar itself in the chat view (adjusted)
historyScrollBarBgOver: #517c41bc; // scroll bar current rectangle with mouse over it in the chat view (adjusted)
historyScrollBg: #517c414c; // scroll bar background (adjusted)
historyScrollBgOver: #517c416b; // scroll bar background with mouse over the scroll bar (adjusted)
msgInBg: windowBg; // inbox message background
msgInBgSelected: #c2dcf2; // inbox selected message background (and background of selected text in those messages)
msgOutBg: #effdde; // outbox message background
msgOutBgSelected: #b7dbdb; // outbox selected message background (and background of selected text in those messages)
msgSelectOverlay: #358cd44c; // overlay which is filling the media parts of selected messages (like in selected photo message)
msgStickerOverlay: #358cd47f; // overlay which is filling the selected sticker message
msgInServiceFg: windowActiveTextFg; // inbox message information text (like information about a forwarded message original sender)
msgInServiceFgSelected: windowActiveTextFg; // inbox selected message information text (like information about a forwarded message original sender)
msgOutServiceFg: #3a8e26; // outbox message information text (like information about a forwarded message original sender)
msgOutServiceFgSelected: #367570; // outbox message information text (like information about a forwarded message original sender)
msgInShadow: #748ea229; // inbox message shadow (below the bubble)
msgInShadowSelected: #548dbb29; // inbox selected message shadow (below the bubble)
msgOutShadow: #3ac34740; // outbox message shadow (below the bubble)
msgOutShadowSelected: #37a78e40; // outbox selected message shadow (below the bubble)
msgInDateFg: #a0acb6; // inbox message time text
msgInDateFgSelected: #6a9cc5; // inbox selected message time text
msgOutDateFg: #6cc264; // outbox message time text
msgOutDateFgSelected: #50a79c; // outbox selected message time text
msgServiceFg: windowFgActive; // service message text (like date dividers or service message about the group title being changed)
msgServiceBg: #517c417f; // service message background (like in a service message about group title being changed) (adjusted)
msgServiceBgSelected: #96b38ba2; // service message selected text background (like in a service message about group title being changed) (adjusted)
msgInReplyBarColor: activeLineFg; // inbox message reply outline
msgInReplyBarSelColor: activeLineFg; // inbox selected message reply outline
msgOutReplyBarColor: historyOutIconFg; // outbox message reply outline
msgOutReplyBarSelColor: historyOutIconFgSelected; // outbox selected message reply outline
msgImgReplyBarColor: msgServiceFg; // sticker message reply outline
msgInMonoFg: #4e7391; // inbox message monospace text (like a message sent with `test` text)
msgOutMonoFg: #469165; // outbox message monospace text
msgInMonoFgSelected: msgInMonoFg; // inbox message monospace text in a selected text or message
msgOutMonoFgSelected: msgOutMonoFg; // outbox message monospace text in a selected text or message
msgDateImgFg: msgServiceFg; // media message time text (like time text in a sent photo)
msgDateImgBg: #00000054; // media message time bubble background (like time bubble in a sent photo) or file with thumbnail download icon circle background
msgDateImgBgOver: #00000074; // media message download icon circle background with mouse over (like file with thumbnail download icon)
msgDateImgBgSelected: #1c4a7187; // selected media message time bubble background
msgFileThumbLinkInFg: lightButtonFg; // inbox media file message with thumbnail download / open with button text
msgFileThumbLinkInFgSelected: lightButtonFgOver; // inbox selected media file message with thumbnail download / open with button text
msgFileThumbLinkOutFg: #5eba5b; // outbox media file message with thumbnail download / open with button text
msgFileThumbLinkOutFgSelected: #31a298; // outbox selected media file message with thumbnail download / open with button text
msgFileInBg: windowBgActive; // inbox audio file download circle background
msgFileInBgOver: #4eade3; // inbox audio file download circle background with mouse over
msgFileInBgSelected: #51a3d3; // inbox selected audio file download circle background
msgFileOutBg: #78c67f; // outbox audio file download circle background
msgFileOutBgOver: #6bc272; // outbox audio file download circle background with mouse over
msgFileOutBgSelected: #5fb389; // outbox selected audio file download circle background
msgFile1Bg: #72b1df; // blue shared links / files without image square thumbnail
msgFile1BgDark: #5c9ece; // blue shared files without image download circle background
msgFile1BgOver: #5294c4; // blue shared files without image download circle background with mouse over
msgFile1BgSelected: #5099d0; // blue shared files without image download circle background if file is selected
msgFile2Bg: #61b96e; // green shared links / shared files without image square thumbnail
msgFile2BgDark: #4da859; // green shared files without image download circle background
msgFile2BgOver: #44a050; // green shared files without image download circle background with mouse over
msgFile2BgSelected: #46a07e; // green shared files without image download circle background if file is selected
msgFile3Bg: #e47272; // red shared links / shared files without image square thumbnail
msgFile3BgDark: #cd5b5e; // red shared files without image download circle background
msgFile3BgOver: #c35154; // red shared files without image download circle background with mouse over
msgFile3BgSelected: #9f6a82; // red shared files without image download circle background if file is selected
msgFile4Bg: #efc274; // yellow shared links / shared files without image square thumbnail
msgFile4BgDark: #e6a561; // yellow shared files without image download circle background
msgFile4BgOver: #dc9c5a; // yellow shared files without image download circle background with mouse over
msgFile4BgSelected: #b19d84; // yellow shared files without image download circle background if file is selected
historyFileInIconFg: msgInBg; // inbox file without thumbnail (like audio file) download arrow icon
historyFileInIconFgSelected: msgInBgSelected; // inbox selected file without thumbnail (like audio file) download arrow icon
historyFileInRadialFg: historyFileInIconFg; // inbox file without thumbnail (like audio file) radial download animation line
historyFileInRadialFgSelected: historyFileInIconFgSelected; // inbox selected file without thumbnail (like audio file) radial download animation line
historyFileOutIconFg: msgOutBg; // outbox file without thumbnail (like audio file) download arrow icon
historyFileOutIconFgSelected: msgOutBgSelected; // outbox selected file without thumbnail (like audio file) download arrow icon
historyFileOutRadialFg: historyFileOutIconFg; // outbox file without thumbnail (like audio file) radial download animation line
historyFileOutRadialFgSelected: historyFileOutIconFgSelected; // outbox selected file without thumbnail (like audio file) radial download animation line
historyFileThumbIconFg: msgInBg; // file with thumbnail (or photo / video) download arrow icon
historyFileThumbIconFgSelected: msgInBgSelected; // selected file with thumbnail (or photo / video) download arrow icon
historyFileThumbRadialFg: historyFileThumbIconFg; // file with thumbnail (or photo / video) radial download animation line
historyFileThumbRadialFgSelected: historyFileThumbIconFgSelected; // selected file with thumbnail (or photo / video) radial download animation line
historyVideoMessageProgressFg: historyFileThumbIconFg; // radial playback progress in round video messages
msgWaveformInActive: windowBgActive; // inbox voice message active waveform lines (like played part of currently playing voice message)
msgWaveformInActiveSelected: #51a3d3; // inbox selected voice message active waveform lines (like played part of currently playing voice message)
msgWaveformInInactive: #d4dee6; // inbox voice message inactive waveform lines (like upcoming part of currently playing voice message)
msgWaveformInInactiveSelected: #9cc1e1; // inbox selected voice message inactive waveform lines (like upcoming part of currently playing voice message)
msgWaveformOutActive: #78c67f; // outbox voice message active waveform lines (like played part of currently playing voice message)
msgWaveformOutActiveSelected: #6badad; // outbox selected voice message active waveform lines (like played part of currently playing voice message)
msgWaveformOutInactive: #b3e2b4; // outbox voice message inactive waveform lines (like upcoming part of currently playing voice message)
msgWaveformOutInactiveSelected: #91c3c3; // outbox selected voice message inactive waveform lines (like upcoming part of currently playing voice message)
msgBotKbOverBgAdd: #ffffff20; // this is painted over a bot inline keyboard button (which has msgServiceBg background) when mouse is over that button
msgBotKbIconFg: msgServiceFg; // bot inline keyboard button icon in the top-right corner (like in @vote bot when a poll is ready to be shared)
msgBotKbRippleBg: #00000020; // bot inline keyboard button ripple effect
mediaInFg: msgInDateFg; // inbox media message status text (like in file that is being downloaded)
mediaInFgSelected: msgInDateFgSelected; // inbox selected media message status text (like in file that is being downloaded)
mediaOutFg: msgOutDateFg; // outbox media message status text (like in file that is being downloaded)
mediaOutFgSelected: msgOutDateFgSelected; // outbox selected media message status text (like in file that is being downloaded)
youtubePlayIconBg: #e83131c8; // youtube play icon background (when a link to a youtube video with a webpage preview is sent)
youtubePlayIconFg: windowFgActive; // youtube play icon arrow (when a link to a youtube video with a webpage preview is sent)
videoPlayIconBg: #0000007f; // other video play icon background (like when a link to a vimeo video with a webpage preview is sent)
videoPlayIconFg: #ffffff; // other video play icon arrow (like when a link to a vimeo video with a webpage preview is sent)
toastBg: #000000b2; // toast notification background (like when you click on your t.me link when editing your username)
toastFg: windowFgActive; // toast notification text (like when you click on your t.me link when editing your username)
reportSpamBg: emojiPanHeaderBg; // report spam panel background (like a non contact user writes your for the first time)
reportSpamFg: windowFg; // report spam panel text (when you send a report from that panel)
historyToDownBg: windowBg; // arrow button background (to scroll to the end of the viewed chat)
historyToDownBgOver: windowBgOver; // arrow button background with mouse over
historyToDownBgRipple: windowBgRipple; // arrow button ripple effect
historyToDownFg: menuIconFg; // arrow button icon
historyToDownFgOver: menuIconFgOver; // arrow button icon with mouse over
historyToDownShadow: #00000040; // arrow button shadow
historyComposeAreaBg: msgInBg; // history compose area background (message write area / reply information / forwarding information)
historyComposeAreaFg: historyTextInFg; // history compose area text
historyComposeAreaFgService: msgInDateFg; // history compose area text when replying to a media message
historyComposeIconFg: menuIconFg; // history compose area icon (like emoji, attach, bot command..)
historyComposeIconFgOver: menuIconFgOver; // history compose area icon with mouse over
historySendIconFg: windowBgActive; // send message icon
historySendIconFgOver: windowBgActive; // send message icon with mouse over
historyPinnedBg: historyComposeAreaBg; // pinned message area background
historyReplyBg: historyComposeAreaBg; // reply / forward / edit message area background
historyReplyIconFg: windowBgActive; // reply / forward / edit message left icon
historyReplyCancelFg: cancelIconFg; // reply / forward / edit message cancel button
historyReplyCancelFgOver: cancelIconFgOver; // reply / forward / edit message cancel button with mouse over
historyComposeButtonBg: historyComposeAreaBg; // unblock / join channel / mute channel button background
historyComposeButtonBgOver: windowBgOver; // unblock / join channel / mute channel button background with mouse over
historyComposeButtonBgRipple: windowBgRipple; // unblock / join channel / mute channel button ripple effect
mapPointDrop: #fd4444; // geo location marker background
mapPointDot: #ffffff; // geo location marker point
// overview
overviewCheckBg: #00000040; // shared media / files / links checkbox background for not selected rows when some rows are selected
overviewCheckBgActive: windowBgActive; // shared media / files / links checkbox background for selected rows
overviewCheckBorder: windowBg; // shared media round checkbox border
overviewCheckFg: windowBg; // shared files / links checkbox icon for not selected rows when some rows are selected
overviewCheckFgActive: windowBg; // shared files / links checkbox icon for selected rows
overviewPhotoSelectOverlay: #40ace333; // shared photos / videos / links fill for selected rows
// profile
profileStatusFgOver: #7c99b2; // group members list in group profile user last seen text with mouse over
profileVerifiedCheckBg: windowBgActive; // profile verified check icon background
profileVerifiedCheckFg: windowFgActive; // profile verified check icon tick
profileAdminStartFg: windowBgActive; // group members list creator star icon
profileAdminStarFgOver: profileAdminStartFg; // group members list creator star icon with mouse over
profileOtherAdminStarFg: windowSubTextFg; // group members list admin star icon
profileOtherAdminStarFgOver: profileStatusFgOver; // group members list admin star icon with mouse over
// settings
notificationsBoxMonitorFg: windowFg; // custom notifications settings box monitor color
notificationsBoxScreenBg: dialogsBgActive; // #6389a8; // custom notifications settings box monitor screen background
notificationSampleUserpicFg: windowBgActive; // custom notifications settings box small sample userpic placeholder
notificationSampleCloseFg: #d7d7d7 | windowSubTextFg; // custom notifications settings box small sample close button placeholder
notificationSampleTextFg: #d7d7d7 | windowSubTextFg; // custom notifications settings box small sample text placeholder
notificationSampleNameFg: #939393 | windowSubTextFg; // custom notifications settings box small sample name placeholder
changePhoneSimcardFrom: notificationSampleTextFg; // change phone number box left simcard icon
changePhoneSimcardTo: notificationSampleNameFg; // change phone number box right simcard and plane icons
mainMenuBg: windowBg; // main menu background
mainMenuCoverBg: dialogsBgActive; // main menu top cover background
mainMenuCoverFg: windowFgActive; // main menu top cover text
mainMenuCloudFg: activeButtonFg;
mainMenuCloudBg: #2785bf | activeButtonBgRipple;
mediaPlayerBg: windowBg; // audio file player background
mediaPlayerActiveFg: windowBgActive; // audio file player playback progress already played part
mediaPlayerInactiveFg: sliderBgInactive; // audio file player playback progress upcoming (not played yet) part with mouse over
mediaPlayerDisabledFg: #9dd1ef; // audio file player loading progress (when you're playing an audio file and switch to the previous one which is not loaded yet)
// mediaview
mediaviewFileBg: windowBg; // file rectangle background (when you view a png file in Media Viewer and go to a previous, not loaded yet, file)
mediaviewFileNameFg: windowFg; // file name in file rectangle
mediaviewFileSizeFg: windowSubTextFg; // file size text in file rectangle
mediaviewFileRedCornerFg: #d55959; // red file thumbnail placeholder corner in file rectangle (for a file without thumbnail, like .pdf)
mediaviewFileYellowCornerFg: #e8a659; // yellow file thumbnail placeholder corner in file rectangle (for a file without thumbnail, like .zip)
mediaviewFileGreenCornerFg: #49a957; // green file thumbnail placeholder corner in file rectangle (for a file without thumbnail, like .exe)
mediaviewFileBlueCornerFg: #599dcf; // blue file thumbnail placeholder corner in file rectangle (for a file without thumbnail, like .dmg)
mediaviewFileExtFg: activeButtonFg; // file extension text in file thumbnail placeholder in file rectangle
mediaviewMenuBg: #383838; // context menu in Media Viewer background
mediaviewMenuBgOver: #505050; // context menu item background with mouse over
mediaviewMenuBgRipple: #676767; // context menu item ripple effect
mediaviewMenuFg: windowFgActive; // context menu item text
mediaviewBg: #222222eb; // Media Viewer background
mediaviewVideoBg: imageBg; // Media Viewer background when viewing a video in full screen
mediaviewControlBg: #0000003c; // controls background (like next photo / previous photo)
mediaviewControlFg: windowFgActive; // controls icon (like next photo / previous photo)
mediaviewCaptionBg: #11111180; // caption text background (when viewing photo with caption)
mediaviewCaptionFg: mediaviewControlFg; // caption text
mediaviewTextLinkFg: #91d9ff; // caption text link
mediaviewSaveMsgBg: toastBg; // save to file toast message background in Media Viewer
mediaviewSaveMsgFg: toastFg; // save to file toast message text
mediaviewPlaybackActive: #c7c7c7; // video playback progress already played part
mediaviewPlaybackInactive: #252525; // video playback progress upcoming (not played yet) part
mediaviewPlaybackActiveOver: #ffffff; // video playback progress already played part with mouse over
mediaviewPlaybackInactiveOver: #474747; // video playback progress upcoming (not played yet) part with mouse over
mediaviewPlaybackProgressFg: #ffffffc7; // video playback progress text
mediaviewPlaybackIconFg: mediaviewPlaybackActive; // video playback controls icon
mediaviewPlaybackIconFgOver: mediaviewPlaybackActiveOver; // video playback controls icon with mouse over
mediaviewTransparentBg: #ffffff; // transparent filling part (when viewing a transparent .png file in Media Viewer)
mediaviewTransparentFg: #cccccc; // another transparent filling part
// notification
notificationBg: windowBg; // custom notification window background
// calls
callBg: #26282cf2; // phone call popup background
callNameFg: #ffffff; // phone call popup name text
callFingerprintBg: #00000066; // phone call popup emoji fingerprint background
callStatusFg: #aaabac; // phone call popup status text
callIconFg: #ffffff; // phone call popup answer, hangup and mute mic icon
callAnswerBg: #64c15b; // phone call popup answer button background
callAnswerRipple: #52b149; // phone call popup answer button ripple effect
callAnswerBgOuter: #50eb4126; // phone call popup answer button outer ripple effect
callHangupBg: #d75a5a; // phone call popup hangup button background
callHangupRipple: #c04646; // phone call popup hangup button ripple effect
callCancelBg: #ffffff; // phone call popup line busy cancel button background
callCancelFg: #777777; // phone call popup line busy cancel button icon
callCancelRipple: #f1f1f1; // phone call popup line busy cancel button ripple effect
callMuteRipple: #ffffff12; // phone call popup mute mic ripple effect
callBarBg: dialogsBgActive; // active phone call bar background
callBarMuteRipple: dialogsRippleBgActive; // active phone call bar mute and hangup button ripple effect
callBarBgMuted: #8f8f8f | dialogsUnreadBgMuted; // phone call bar with muted mic background
callBarUnmuteRipple: #7f7f7f | shadowFg; // phone call bar with muted mic mute and hangup button ripple effect
callBarFg: dialogsNameFgActive; // phone call bar text and icons
importantTooltipBg: toastBg;
importantTooltipFg: toastFg;
importantTooltipFgLink: mediaviewTextLinkFg;
outdatedFg: #ffffff;
outdateSoonBg: #e08543;
outdatedBg: #e05745;

File diff suppressed because it is too large Load Diff

View File

@@ -1,2 +0,0 @@
[Paths]
Libraries=:/gui/art

View File

@@ -1,2 +0,0 @@
[Platforms]
WindowsArguments = nomousefromtouch

View File

@@ -1,57 +0,0 @@
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
<dir>/usr/share/fonts</dir>
<dir>/usr/local/share/fonts</dir>
<dir>~/.fonts</dir>
<dir>~/.local/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir>
<dir prefix="xdg">fonts</dir>
<match target="pattern">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>monospace</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>sans serif</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>sans-serif</string>
</edit>
</match>
<match target="pattern">
<test qual="any" name="family">
<string>sans</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>sans-serif</string>
</edit>
</match>
<cachedir>/var/cache/fontconfig_11</cachedir>
<cachedir prefix="xdg">fontconfig_11</cachedir>
<cachedir>~/.fontconfig_11</cachedir>
<match target="font">
<edit mode="assign" name="antialias">
<bool>true</bool>
</edit>
<edit mode="assign" name="embeddedbitmap">
<bool>false</bool>
</edit>
<edit mode="assign" name="hinting">
<bool>true</bool>
</edit>
<edit mode="assign" name="hintstyle">
<const>hintslight</const>
</edit>
<edit mode="assign" name="lcdfilter">
<const>lcddefault</const>
</edit>
<edit mode="assign" name="rgba">
<const>rgb</const>
</edit>
</match>
</fontconfig>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 251 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 269 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 590 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 707 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 825 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 296 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

After

Width:  |  Height:  |  Size: 513 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 B

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 B

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 912 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 281 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 639 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 879 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 566 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 530 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 877 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 253 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 427 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 574 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 845 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 242 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 662 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 445 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 854 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 668 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 962 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 260 B

Some files were not shown because too many files have changed in this diff Show More