From 07d13aca64d08c9574378fc510d359c195b81958 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80?= <153805936+Cheviiot@users.noreply.github.com> Date: Sat, 25 Jul 2026 02:28:05 +1000 Subject: [PATCH] feat: add Telegram Desktop package Repackages the official static tsetup.7.0.5.tar.xz Linux build for amd64, keeping the upstream org.telegram.desktop desktop-id and TelegramDesktop WM class. --- CHANGELOG.md | 12 +++ README.md | 3 +- telegram-desktop/.stapler/update-check | 6 ++ telegram-desktop/LICENSE | 24 +++++ telegram-desktop/Staplerfile | 84 ++++++++++++++++++ telegram-desktop/org.telegram.desktop.desktop | 22 +++++ telegram-desktop/postinstall.sh | 23 +++++ telegram-desktop/postremove.sh | 23 +++++ telegram-desktop/stapler-repo.toml | 1 + telegram-desktop/telegram-desktop.png | Bin 0 -> 20473 bytes tools/package_updates.sh | 2 + tools/validate_repo.py | 1 + 12 files changed, 200 insertions(+), 1 deletion(-) create mode 100755 telegram-desktop/.stapler/update-check create mode 100644 telegram-desktop/LICENSE create mode 100644 telegram-desktop/Staplerfile create mode 100644 telegram-desktop/org.telegram.desktop.desktop create mode 100755 telegram-desktop/postinstall.sh create mode 100755 telegram-desktop/postremove.sh create mode 100644 telegram-desktop/stapler-repo.toml create mode 100644 telegram-desktop/telegram-desktop.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 11a5377..1d8d376 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,18 @@ В файле фиксируются значимые изменения Nivora. +## 2026-07-25 — Telegram Desktop + +### Добавлено + +- В каталог добавлен Telegram Desktop 7.0.5 для `amd64` из официального + статически собранного Linux-архива `tsetup..tar.xz`. +- Сохранены официальные desktop-id `org.telegram.desktop` и WM-класс + `TelegramDesktop`; иконка взята из официального репозитория + `telegramdesktop/tdesktop` для закреплённого тега релиза. +- Пакет добавляет команду `telegram-desktop`; сборка распространяется под + GPL-3.0-only с отдельным разрешением на линковку с OpenSSL. + ## 2026-07-25 — Nivora CLI ### Изменено diff --git a/README.md b/README.md index 79d89b6..634d200 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Nivora предлагает открытые рецепты упаковки д официальный репозиторий Stapler и не официальные пакеты upstream-проектов. -**21 пакет** · **6 категорий** · `amd64`, `arm64` и `all` +**22 пакета** · **6 категорий** · `amd64`, `arm64` и `all` [![Проверка Nivora](https://github.com/Cheviiot/Nivora/actions/workflows/quality.yml/badge.svg)](https://github.com/Cheviiot/Nivora/actions/workflows/quality.yml) @@ -49,6 +49,7 @@ stplr info nivora/codex | [Happ](https://happ.su/) | `3.3.6` | `amd64`, `arm64` | `stplr install nivora/happ` | | [NetBird](https://netbird.io/) | `0.75.0` | `amd64`, `arm64` | `stplr install nivora/netbird` | | [Tailscale](https://tailscale.com/) | `1.98.9` | `amd64`, `arm64` | `stplr install nivora/tailscale` | +| [Telegram Desktop](https://desktop.telegram.org/) | `7.0.5` | `amd64` | `stplr install nivora/telegram-desktop` | | [Яндекс Браузер](https://browser.yandex.ru/) | `26.4.1.1110` | `amd64` | `stplr install nivora/yandex-browser-stable` | ### Удалённый доступ diff --git a/telegram-desktop/.stapler/update-check b/telegram-desktop/.stapler/update-check new file mode 100755 index 0000000..efb050a --- /dev/null +++ b/telegram-desktop/.stapler/update-check @@ -0,0 +1,6 @@ +#!/bin/bash +set -euo pipefail + +package_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" +repo_root="$(cd "${package_dir}/.." && pwd)" +exec "${repo_root}/tools/package_updates.sh" check "$(basename "$package_dir")" diff --git a/telegram-desktop/LICENSE b/telegram-desktop/LICENSE new file mode 100644 index 0000000..16addfe --- /dev/null +++ b/telegram-desktop/LICENSE @@ -0,0 +1,24 @@ +Сведения о лицензии пакета Telegram Desktop + +Лицензия: GPL-3.0-only (с отдельным разрешением на линковку с OpenSSL). +Исходный проект: https://github.com/telegramdesktop/tdesktop +Официальный сайт: https://desktop.telegram.org/ +Условия использования сервиса: https://telegram.org/tos + +Нюансы пакета: +- Пакет перепаковывает официальный статически собранный Linux-архив + Telegram Desktop (`tsetup..tar.xz`), публикуемый Telegram напрямую + и через официальные релизы `telegramdesktop/tdesktop` на GitHub. +- Собственный код Telegram Desktop распространяется на условиях GNU GPL + версии 3 с отдельным разрешением на линковку с OpenSSL; часть bundled- + зависимостей (Qt, ffmpeg и другие) распространяется на собственных + условиях соответствующих проектов. +- Учетные записи, серверы, боты, Premium-подписка и прочие сетевые функции + Telegram в пакет не входят и регулируются условиями Telegram. +- Локальные данные, кэш и сессии создаются приложением в домашнем каталоге + пользователя после запуска и не поставляются внутри пакета. +- Пакет добавляет команду `telegram-desktop` и использует официальные + desktop-id `org.telegram.desktop`. + +Полный официальный текст GPL-3.0: +https://www.gnu.org/licenses/gpl-3.0.txt diff --git a/telegram-desktop/Staplerfile b/telegram-desktop/Staplerfile new file mode 100644 index 0000000..267f37e --- /dev/null +++ b/telegram-desktop/Staplerfile @@ -0,0 +1,84 @@ +name='telegram-desktop' +version='7.0.5' +release=1 +summary='Official Telegram messaging client' +summary_ru='Официальный клиент мессенджера Telegram' +group='Networking/Instant messaging' +desc='Telegram Desktop is the official Telegram messaging client with cloud-synced chats, voice and video calls, and no limits on file size or media history.' +desc_ru='Telegram Desktop — официальный клиент мессенджера Telegram с облачной синхронизацией чатов, голосовыми и видеозвонками и без ограничений на размер файлов и историю медиа.' +homepage='https://desktop.telegram.org/' +maintainer='Telegram Messenger LLP ' + +architectures=('amd64') + +license=('GPL-3.0-only') + +provides=() +replaces=('telegram-desktop') +conflicts=() + +auto_reqprov_method="dirty" +auto_req=0 +auto_prov=0 + +deps=() +deps_debian=('libc6' 'libglib2.0-0t64 | libglib2.0-0' 'libfontconfig1' 'libfreetype6' 'libharfbuzz0b' 'libpng16-16' 'libpcre2-8-0' 'libbrotli1' 'libbz2-1.0' 'libblkid1' 'libmount1' 'libselinux1' 'libffi8' 'libexpat1' 'libgraphite2-3' 'zlib1g' 'libx11-6' 'hicolor-icon-theme') +deps_ubuntu=("${deps_debian[@]}") +deps_fedora=('glibc' 'glib2' 'fontconfig' 'freetype' 'harfbuzz' 'libpng' 'pcre2' 'brotli' 'bzip2-libs' 'libblkid' 'libmount' 'libselinux' 'libffi' 'expat' 'graphite2' 'zlib' 'libX11' 'hicolor-icon-theme') +deps_arch=('glibc' 'glib2' 'fontconfig' 'freetype2' 'harfbuzz' 'libpng' 'pcre2' 'brotli' 'bzip2' 'util-linux-libs' 'libselinux' 'libffi' 'expat' 'graphite' 'zlib' 'libx11' 'hicolor-icon-theme') +deps_opensuse=('glibc' 'libglib-2_0-0' 'libfontconfig1' 'libfreetype6' 'libharfbuzz0' 'libpng16-16' 'libpcre2-8-0' 'libbrotli1' 'libbz2-1' 'libblkid1' 'libmount1' 'libselinux1' 'libffi8' 'libexpat1' 'libgraphite2-3' 'libz1' 'libX11-6' 'hicolor-icon-theme') +deps_altlinux=('glibc' 'libglib2' 'libfontconfig' 'libfreetype' 'libharfbuzz' 'libpng16' 'libpcre2' 'libbrotli' 'libbz2' 'libblkid' 'libmount' 'libselinux' 'libffi' 'libexpat' 'libgraphite2' 'zlib' 'libX11' 'hicolor-icon-theme') + +opt_deps=() +opt_deps_debian=('xdg-utils' 'libayatana-appindicator3-1 | libappindicator3-1' 'ca-certificates' 'libasound2t64 | libasound2 | pulseaudio' 'libgl1' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk | xdg-desktop-portal-gnome | xdg-desktop-portal-kde' 'pipewire') +opt_deps_ubuntu=("${opt_deps_debian[@]}") +opt_deps_fedora=('xdg-utils' 'libappindicator-gtk3' 'ca-certificates' 'alsa-lib' 'pulseaudio-libs' 'mesa-libGL' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk' 'pipewire') +opt_deps_arch=('xdg-utils' 'libappindicator-gtk3' 'ca-certificates' 'alsa-lib' 'pulseaudio' 'libglvnd' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk' 'pipewire') +opt_deps_opensuse=('xdg-utils' 'libappindicator3-1' 'ca-certificates' 'libasound2' 'libpulse0' 'Mesa-libGL1' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk' 'pipewire') +opt_deps_altlinux=('xdg-utils' 'libappindicator-gtk3' 'ca-certificates' 'libalsa' 'libGL' 'xdg-desktop-portal' 'xdg-desktop-portal-gtk' 'pipewire') + +sources=( + "https://td.telegram.org/tlinux/tsetup.${version}.tar.xz?~archive=false&~name=tsetup.tar.xz" + 'local:///org.telegram.desktop.desktop' + 'local:///telegram-desktop.png' + 'local:///LICENSE' +) + +checksums=( + 'sha256:37e23ce08333340504623042120b826f7a2a5650c831187219ab9c520740eb42' + 'sha256:8ceb3f6aea1003f84f1b5757cd857f8237b294bb18456e5e0e54d96e6fff04ba' + 'sha256:3fb1400c7dc9bbc3b5cb3ffedcbf4a9b09c53e28b57a7ff33a8a6b9048864090' + 'sha256:f3ad1b5ecdc1c9e5ab3719a0b084a3e0b4fc87ad424fbf81043df9637be3d1f5' +) + +scripts=( + ['postinstall']='postinstall.sh' + ['postremove']='postremove.sh' +) + +package() { + cd "${srcdir}" + + tar -xJf tsetup.tar.xz + + install -dm755 "${pkgdir}/opt/telegram-desktop" + install -Dm755 "Telegram/Telegram" "${pkgdir}/opt/telegram-desktop/Telegram" + + install -dm755 "${pkgdir}/usr/bin" + ln -sfn /opt/telegram-desktop/Telegram "${pkgdir}/usr/bin/telegram-desktop" + + install-desktop org.telegram.desktop.desktop + install -Dm644 telegram-desktop.png \ + "${pkgdir}/usr/share/icons/hicolor/256x256/apps/org.telegram.desktop.png" + + install-license LICENSE "telegram-desktop/LICENSE.nivora" +} + +files() { + files-find-binary + files-find-desktop + files-find-license + files-find \ + "/opt/telegram-desktop/**/*" \ + "/usr/share/icons/hicolor/256x256/apps/org.telegram.desktop.png" +} diff --git a/telegram-desktop/org.telegram.desktop.desktop b/telegram-desktop/org.telegram.desktop.desktop new file mode 100644 index 0000000..08bdbb8 --- /dev/null +++ b/telegram-desktop/org.telegram.desktop.desktop @@ -0,0 +1,22 @@ +[Desktop Entry] +Name=Telegram +Comment=New era of messaging +TryExec=telegram-desktop +Exec=telegram-desktop -- %U +Icon=org.telegram.desktop +Terminal=false +StartupWMClass=TelegramDesktop +Type=Application +Categories=Chat;Network;InstantMessaging;Qt; +MimeType=x-scheme-handler/tg;x-scheme-handler/tonsite; +Keywords=tg;chat;im;messaging;messenger;sms;tdesktop; +Actions=quit; +DBusActivatable=false +SingleMainWindow=true +X-GNOME-UsesNotifications=true +X-GNOME-SingleWindow=true + +[Desktop Action quit] +Exec=telegram-desktop -quit +Name=Quit Telegram +Icon=application-exit diff --git a/telegram-desktop/postinstall.sh b/telegram-desktop/postinstall.sh new file mode 100755 index 0000000..74f65b4 --- /dev/null +++ b/telegram-desktop/postinstall.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -euo pipefail + +optional_refresh() { + local label=$1 + shift + if ! "$@"; then + echo "Предупреждение: не удалось обновить ${label}." >&2 + fi +} + +if command -v update-desktop-database >/dev/null 2>&1; then + optional_refresh "desktop-базу" update-desktop-database -q /usr/share/applications +fi +if command -v gtk-update-icon-cache >/dev/null 2>&1; then + optional_refresh "кэш иконок" \ + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor +fi +if command -v kbuildsycoca6 >/dev/null 2>&1; then + optional_refresh "кэш KDE" kbuildsycoca6 --noincremental +elif command -v kbuildsycoca5 >/dev/null 2>&1; then + optional_refresh "кэш KDE" kbuildsycoca5 --noincremental +fi diff --git a/telegram-desktop/postremove.sh b/telegram-desktop/postremove.sh new file mode 100755 index 0000000..74f65b4 --- /dev/null +++ b/telegram-desktop/postremove.sh @@ -0,0 +1,23 @@ +#!/bin/bash +set -euo pipefail + +optional_refresh() { + local label=$1 + shift + if ! "$@"; then + echo "Предупреждение: не удалось обновить ${label}." >&2 + fi +} + +if command -v update-desktop-database >/dev/null 2>&1; then + optional_refresh "desktop-базу" update-desktop-database -q /usr/share/applications +fi +if command -v gtk-update-icon-cache >/dev/null 2>&1; then + optional_refresh "кэш иконок" \ + gtk-update-icon-cache -q -t -f /usr/share/icons/hicolor +fi +if command -v kbuildsycoca6 >/dev/null 2>&1; then + optional_refresh "кэш KDE" kbuildsycoca6 --noincremental +elif command -v kbuildsycoca5 >/dev/null 2>&1; then + optional_refresh "кэш KDE" kbuildsycoca5 --noincremental +fi diff --git a/telegram-desktop/stapler-repo.toml b/telegram-desktop/stapler-repo.toml new file mode 100644 index 0000000..9c222ce --- /dev/null +++ b/telegram-desktop/stapler-repo.toml @@ -0,0 +1 @@ +include = "../stapler-repo.toml" diff --git a/telegram-desktop/telegram-desktop.png b/telegram-desktop/telegram-desktop.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4abee16dec0836f615df7266b234bc7a0ec033 GIT binary patch literal 20473 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