Telegram Desktop, minus the bullshit, plus the features.
Full feature list / Known bugs / Contributing notes / Licensing information / Telegram channel
Most clients (all of them?) are forks, and most forks don't bother rebasing their changes over and over, and instead opt for introducing merge commits to be on par with upstream changes. This makes history and changes harder to track and audit. Patch-based approach is, in a way, a rebase-workflow but without commits, and with range-diff included, allowing to more precisely track how patches evolve over time and understand code easier.
Please inspect these patches yourselves to make sure that you really trust the code.
Some more information can be found in Contributing notes.
Do not blindly trust our binary caches. They are built by GitHub Actions, and are supposed to be reproducible, though.
Windows and macOS are not supported.
Consider using isolated packages and reviewing and refining their permissions (with e.g. Flatseal for flatpak or with custom Nixpak options for nixpak) instead of plain binaries.
flatpak remote-add --user --if-not-exists yukigram https://yukigram.github.io/yukigram/index.flatpakrepo
flatpak install --user io.github.yukigramAdd yukigram-nixos-binary-cache:JY9MpP2ESUmPx3cfIpcSRpBK9HQ1/mzHemsvjv1aiYU=
to extra-trusted-public-keys.
Add https://yukigram.github.io/yukigram
to extra-substituters.
Add yukigram-official.cachix.org-1:PmmKVD/46LWDxfPWKol4rvoqvcdLqFq0aTtG/E1gdA8=
to extra-trusted-public-keys
for previous and development versions.
Add https://yukigram-official.cachix.org
to extra-substituters
for previous and development versions.
If you use Nix to manage nix config, activate a configuration with these settings at least once before adding Yukigram to packages.
If you supply these options as command-line-arguments, make sure to run builds from a trusted user, otherwise binary caches won't work.
Binary caches are only built for tagged releases.
Track release branch instead of master
if your pinning tool does not support tracking tags.
Recommended flake input formats are:
github:yukigram/yukigram/releasefor latest releases,github:yukigram/yukigram/v6.7.8.1for pinned releases.
without flakes:
(import <yukigram> {}).packages.defaultwith flakes:
inputs.yukigram.packages.${system}.defaultdefault can be replaced with nixpak for explicitness.
without flakes:
(import <yukigram> {}).packages.nonisolatedwith flakes:
inputs.yukigram.packages.${system}.nonisolatedCustom nixpak options are required to launch Yukigram nixpak under X11.
let
d = import <yukigram> {}; # without flakes
d = inputs.yukigram.d.${system}; # with flakes
yukigram = d.override (prev: {
# customize nixpak
nixpak.yukigram = prev.nixpak.yukigram.override {
appId = "io.github.yukigram.backed";
customNixpakConfig = {
bubblewrap.sockets.x11 = true;
}
}
# or bring your own patches (disables binary caches)
packages.nonisolated = prev.packages.nonisolated.override (prev: {
unwrapped = prev.unwrapped.overrideAttrs (prev: {
patches = prev.patches ++ [./my-cool.patch];
};
};
# or bring your own nixpkgs (may disable binary caches)
sources.nixpkgs = <nixpkgs>;
# or use a custom instance of nixpkgs (may disable binary caches)
inputs.pkgs = import <nixpkgs> {};
# or make nonisolated package the default one
packages.default = prev.packages.nonisolated;
});
in yukigram.packages.default;wget https://yukigram.github.io/yukigram/pmaports/yukigram-key/yukigram.github.io.rsa.pub -O /etc/apk/keys/yukigram.github.io.rsa.pub
echo https://yukigram.github.io/yukigram/packages/edge >> /etc/apk/repositories
apk update
apk add yukigram yukigram-keyDownload yukigram-$ARCH.apk from releases.
Not really recommended unless for quick checks,
as automatic updates are unsupported with bare .apk files.
Download binary-$ARCH from releases
and unpack it to /usr/local/ or ~/.local/.
Automatic updates are unsupported with this approach.
Check your package manager's manual on how to add patches to packages and package Telegram Desktop (of correct version) with your selection of patches.
The recommended way of applying patches
for building for repositories
is by using patch.
See #applying-with-patch
in contributing notes for details.
Unofficial packages that seem correct and may be used instead of a manual from-source build:
- AUR package
yukigram-desktop
Versions of Yukigram up to (and including) 6.8.2.1 published their artifacts only to GitHub Pages and Cachix. They may become inaccessible in the future.
Versions of Yukigram up to (and including) 6.4.1.1 are deprecated and should no longer be used. They were based on 64Gram and developed in a downstream merge-based workflow.
"Enhanced settings" from 64Gram and Yukigram are converted to native "Experimental settings" (in Advanced). Users of past Yukigram should make a note of their enhanced settings and toggle them on new versions, because of different settings backends.
Past versions can be found at yukigram-legacy repo.
Telegram Desktop developers are using AI-generated code and are adding a bunch of useless AI features. Yukigram has no intention of completely ripping out AI code from Telegram Desktop sources, or has no intention of diverging codebases. Therefore, it is clear that patch developers and maintainers will definitely have some AI code exposure.
Most of the initial patches were written by me by looking at surrounding 64Gram code from times before the so-called vibe coding was popular. Other patches were taken from forks that developed them years ago.
I want to make this project at least somewhat clear from AI code, so please refrain from sending AI-assisted code here.
This project is proudly made by real humans.
Thank you for not wasting my time.