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 0000000..8c4abee Binary files /dev/null and b/telegram-desktop/telegram-desktop.png differ diff --git a/tools/package_updates.sh b/tools/package_updates.sh index 2f1b9f8..956c871 100755 --- a/tools/package_updates.sh +++ b/tools/package_updates.sh @@ -20,6 +20,7 @@ readonly -a PACKAGES=( parsec pineconemc tailscale + telegram-desktop ventoy vual yandex-browser-stable @@ -234,6 +235,7 @@ latest_version() { parsec) latest_parsec ;; pineconemc) github_latest_release ElyPrismLauncher/Launcher ;; tailscale) latest_tailscale ;; + telegram-desktop) github_latest_release telegramdesktop/tdesktop ;; ventoy) github_latest_release ventoy/Ventoy ;; vual) github_latest_release Cheviiot/Vual ;; yandex-browser-stable) latest_yandex_browser ;; diff --git a/tools/validate_repo.py b/tools/validate_repo.py index 51acfcc..1ad54c6 100755 --- a/tools/validate_repo.py +++ b/tools/validate_repo.py @@ -30,6 +30,7 @@ EXPECTED_PACKAGES = ( "parsec", "pineconemc", "tailscale", + "telegram-desktop", "ventoy", "vual", "yandex-browser-stable",