Telegram for desktop in Material 3 Expressive. Windows and Linux, free and open source.
SocialGitHub @JettaXPOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Telegram desktop client in Kotlin with Material 3 Expressive design. Windows and Linux (AppImage, Arch)
Taken from the repository README
Loading the full README.
Read the full README ↗Telegram desktop client built with Kotlin, Compose Multiplatform and Material 3 Expressive, powered by TDLib (via TDLight).
Channel: @pixelgramclient
| Music player with Material 3 morphing controls | Reactions and message actions |
| Polls, calls, voice and files | Sign in with a QR code |
| Appearance settings | Every Material 3 Expressive shape for avatars |
| Bubble corners with a live preview |
MaterialShapes) and a custom corner radiusEvery release has the same set of files. Pick the one for your system:
| File | Who it's for |
|---|---|
pixelGram-…-windows-x64-setup.exe | Windows, recommended. The Material 3 installer: choose a folder, watch the progress, launch pixelGram at the end. |
pixelGram-…-windows-x64.msi | Windows, if you prefer the standard Windows Installer, deploy pixelGram with scripts (msiexec /i … /qn), or the Setup.exe is blocked on your PC. Installs the same app. |
pixelGram-…-windows-x64-portable.zip | Windows without installing: unpack anywhere, even on a USB drive. Your data stays in the pixelgram-data folder next to the app. |
pixelgram-…-x86_64.pkg.tar.zst | Arch Linux and derivatives (CachyOS, EndeavourOS, Manjaro, etc). |
pixelGram-…-x86_64.AppImage | Any other Linux distribution, as a single file. |
pixelGram-…-linux-x86_64.tar.gz | Any Linux, as a plain folder you unpack and run. |
pixelGram-…-macos-arm64.dmg | macOS on Apple Silicon (M1 and newer). Intel Macs are not supported. |
SHA256SUMS-*.txt | Checksums to verify the downloaded files. You don't need them to install. |
Not sure on Windows? Take the setup.exe. Already have pixelGram? You don't need to download anything: it checks for updates on start and offers to install them.
sudo pacman -U pixelgram-*.pkg.tar.zst-setup.exe (or the .msi), or unpack the portable .zipchmod +x pixelGram-x86_64.AppImage && ./pixelGram-x86_64.AppImagepixelGram-linux-x86_64.tar.gz and run pixelGram/bin/pixelGrampixelGram-macos-arm64.dmg and drag pixelGram to ApplicationsRequirements: JDK 21.
./gradlew run # run from sources
./gradlew createDistributable # Linux app folder (Arch package: packaging/arch)
./gradlew packageMsi # Windows .msi
./gradlew packageDmg # macOS .dmg (Apple Silicon)
./gradlew createDistributable # portable folder in build/compose/binaries
Telegram API credentials (from https://my.telegram.org) can be passed at build
time with TELEGRAM_API_ID / TELEGRAM_API_HASH environment variables or the
pixelgram.apiId / pixelgram.apiHash Gradle properties. Without them the app
asks for them on first launch.
On Linux the TDLib native library needs OpenSSL 3 (any current distribution).
The macOS build uses the same Compose Multiplatform sources and the same
Material 3 Expressive UI as the Linux and Windows builds. TDLib is shipped as the
official macos_arm64 native library, so Apple Silicon is required.
The app bundle is ad hoc signed and carries microphone/camera usage strings,
tg:// URL registration and a notification bridge. Downloaded builds are not
notarized; if Gatekeeper blocks the first launch, open the app from the context
menu or run xattr -dr com.apple.quarantine /Applications/pixelGram.app.
Set CODESIGN_IDENTITY (or -Ppixelgram.macSigningIdentity) to a Developer ID
Application identity to sign a release build instead of using the ad hoc
signature. macOS may withhold notification authorization from ad hoc builds;
pixelGram then falls back to its in-app notification style.
The bundle metadata (usage descriptions, URL scheme, high-DPI flag) is applied
after jpackage in build.gradle.kts. macOS does not need matugen: dynamic
colors from the system are not part of the design.
Enable Settings → Appearance → Dynamic colors from matugen, then add to
~/.config/matugen/config.toml:
[templates.pixelgram]
input_path = '~/.config/pixelgram/matugen-template.json'
output_path = '~/.config/pixelgram/matugen.json'
Run matugen image /path/to/wallpaper.png and pixelGram picks up the colors.
All data lives in ~/.local/share/pixelgram (Linux), %APPDATA%\pixelgram
(Windows) or ~/Library/Application Support/pixelgram (macOS).
The previous C++ version (AyuGram Desktop fork) is kept in the legacy-cpp branch.
swipe_handler.cpp: direction lock, reply on release, damped overswipe and the bounce at the threshold.cursor_trail.c.GPLv3, see LICENSE.