* Morph: shapes move, resize and blend in the slide show Morph used to fall back to a plain crossfade in the show: morph_pairs and morph_xfrm existed, but nothing rendered frames with them. - anim: morph_frame builds a frame from two slides. Paired shapes move along morph_xfrm (eased); a pure fill colour change blends, other content changes cross-fade on the same moving box. Unpaired shapes fade out/in, shapes with entrance animations or hidden media stay out of the frame. - render: render_blend draws such a frame in one pass: both backdrops (background, master and layout graphics) cross-fade, every shape resolves against the slide it comes from, so placeholders keep their own layout. Renderer::slide is split into canvas/fields/backdrop to share the code. - ui-egui: the show renders morph frames with these, crossfade otherwise. generated with Claude Code * Contributors: add my own entry (alexanderalber) generated with Claude Code * Morph: Words and Characters options morph text token by token The transition option (objects/words/characters) was stored and round-tripped but ignored by the show. With Words or Characters, paired shapes whose text differs now morph their text instead of cross-fading it: - text: GlyphRun records per glyph the paragraph character it draws, so glyphs can be grouped into words or characters. - anim: morph_frame reads the option and lists such pairs in MorphFrame::text. - render: morph_text draws them. Shared words (or characters) travel from their place in the old text to their place in the new one and grow or shrink to the new size; a different look cross-fades on the way. The remaining tokens fade while following a scale and shift fitted to the shared ones, so a line moves and rearranges as one. Rotated text falls back to a cross-fade. draw_layout_with's glyph drawing moved into draw_glyph for reuse. - ui-egui: the show passes the pairs to render_blend. generated with Claude Code --------- Co-authored-by: Brandon Thomas <echelon@gmail.com>
DeckCraft
Presentations and slide shows; an open-source, clean-room reimplementation of Microsoft PowerPoint, rebuilt in pure Rust.
Build decks with themes, layouts, shapes, pictures, tables, charts, transitions and animations, open and save PowerPoint files, and present them full screen. Native on macOS, Windows, Linux and FreeBSD, and in the browser. Every button is also a command that the CLI and AI agents (through MCP) can drive.
DeckCraft on getartcraft.com · ArtCraft · All Crafting Apps
Note
ArtCraft is a community of artists from all walks of life. Painters, photographers, filmmakers, illustrators, designers, animators, hobbyists, and people who picked up a pencil last week. If you make things, you're one of us. Come say hi on Discord.
What works · Getting started · Agents, CLI and MCP · Roadmap · Downloads · The Crafting Apps · License
What works today
DeckCraft is in early development, heading for its first alpha (see the roadmap). Today it can:
- Make decks: slide masters and eleven layouts with placeholders that inherit position and formatting, eight original themes with colour and font schemes, sections, notes, comments, headers and footers, custom slide sizes.
- Draw: 150+ preset shapes with adjust handles, connectors that stay glued to shapes, freeform, curve and scribble tools, merge shapes (union, combine, fragment, intersect, subtract), gradient, picture and pattern fills, outlines with dashes and arrowheads, shadows, glow, soft edges and reflections.
- Write: in-place text editing with full font and paragraph formatting, bullets and numbering, columns, autofit, vertical text, fields and hyperlinks.
- Add content: pictures with crop and corrections, tables with styles, charts, SmartArt basics, audio and video (MP3, AAC, FLAC, ALAC, Ogg, Opus, WAV, AIFF; H.264, HEVC, VP9, AV1).
- Present: transitions (including Morph), entrance/emphasis/exit and motion-path animations, by-paragraph builds, full-screen slide show, presenter view, pen, rehearse timings, media playback.
- Exchange files: open and save PowerPoint
.pptx, export PDF (slides, notes pages, handouts with selectable text), PNG/JPEG and outlines. Unsaved work is kept by AutoRecover. - Automate: 200+ commands with undo, all scriptable from the CLI, a JSON control channel and an MCP server for AI agents.
![]() Shape Format contextual tab and selection handles |
![]() Format Shape pane: gradient type, direction and stops |
![]() Slide Sorter with each slide's transition |
![]() Dark mode, with a native chart |

The built-in sample deck, rendered by deckcraft-cli render --sample --all
Getting started
git clone https://github.com/storytold/deckcraft
cd deckcraft
cargo run --release -p deckcraft-cli -- render --sample --all --scale 1 out/
Fonts come from craft-fonts: clone it next to this repo
(../craft-fonts) and local builds pick it up automatically; without it DeckCraft uses your system
fonts.
Each GitHub release has ready-made builds, on Linux as
an AppImage, a .deb, an .rpm and a tarball. On Gentoo, the community ::snakebyte
overlay packages the Linux release as
app-office/deckcraft-bin (not maintained by the DeckCraft team):
eselect repository add snakebyte git https://github.com/switch87/snakebyte-overlay.git
emaint sync -r snakebyte
echo 'app-office/deckcraft-bin ~amd64' >> /etc/portage/package.accept_keywords/deckcraft
emerge --ask app-office/deckcraft-bin
Logs
The desktop app writes its log records to standard error and to logs/deckcraft.log in the
settings directory, beside ui.json and prefs.json (Linux ~/.config/deckcraft/logs/, or
$XDG_CONFIG_HOME/deckcraft/logs/; macOS ~/Library/Application Support/DeckCraft/logs/; Windows
%APPDATA%\DeckCraft\logs\). A start from a desktop menu or the Dock has no terminal, so this file
is what to attach to a bug report: the crash guard's panic report, a failed crash-recovery save,
PowerPoint parts skipped on import and audio output problems land there. Each launch moves the
previous log to deckcraft.1.log (and that one to deckcraft.2.log), so the log of a run that
crashed survives the next start. The file stops growing at 16 MiB. --version writes no file.
| Variable | Effect |
|---|---|
RUST_LOG |
Log levels for standard error and the log file. Default: info for DeckCraft's own crates, warn for everything else. env_logger-style directives replace that, e.g. RUST_LOG=debug, RUST_LOG=warn,deckcraft_pptx=trace or RUST_LOG=info,wgpu_core=warn; a directive ending in * covers every target starting with it (deckcraft*=debug). |
The logger is apps/deckcraft/src/logging.rs; the realtime audio callback does not log. The web
app logs to the browser console instead.
Agents, CLI and MCP
Every action in DeckCraft is a command with a stable id, so people, scripts and AI agents use the same verbs:
deckcraft-cli commands format. # list commands
deckcraft-cli run --sample --cmd 'slide.new={"layout":"titleOnly","title":"Hello"}' --save hello.deckcraft
deckcraft-cli mcp # MCP server over stdio (headless)
deckcraft-cli mcp --connect 7990 # drive the running app (deckcraft --control 7990)
Roadmap
DeckCraft covers about 79% of PowerPoint's features by breadth (93% of the core ones) and is roughly 80% of the way to a first alpha. See ROADMAP.md for the alpha checklist, parity estimates and what's next, and docs/parity.md for the feature-by-feature scorecard.
Downloads
Download DeckCraft from GitHub: the latest release has every build listed below, and all releases has earlier versions and their notes. <ver> in the file names is the version number, and SHA256SUMS.txt lists a checksum for every file.
Windows
| Build | Installer | Portable |
|---|---|---|
| x64 (64-bit Intel/AMD) | deckcraft-<ver>-windows-x64.msi |
deckcraft-<ver>-windows-x64-portable.zip |
| arm64 (Snapdragon and other ARM PCs) | deckcraft-<ver>-windows-arm64.msi |
deckcraft-<ver>-windows-arm64-portable.zip |
| x86 (32-bit) | deckcraft-<ver>-windows-x86.msi |
deckcraft-<ver>-windows-x86-portable.zip |
Installers and executables are code-signed.
If the app doesn't open on Windows: the desktop app initializes only DirectX 12 by default.
Letting wgpu also create an OpenGL instance can crash some graphics drivers (AMD's
atio6axx.dll) before the window appears, so the app would flash in Task Manager and quit.
WGPU_BACKEND overrides the default for troubleshooting (for example dx12 or vulkan). In
PowerShell, from the folder containing the executable:
$env:WGPU_BACKEND = "vulkan"
& .\deckcraft.exe
Remove-Item Env:WGPU_BACKEND # restore the default for later launches
An explicit gl override can bring the driver crash back on affected systems. The macOS, Linux
and web backend defaults are unchanged.
macOS
| Build | File | Notes |
|---|---|---|
| App, universal (Apple silicon + Intel) | deckcraft-<ver>-macos-universal.dmg |
Signed and notarized |
| Command-line tool, universal | deckcraft-cli-<ver>-macos-universal.zip |
Signed and notarized |
Linux
| Format | x86_64 | aarch64 (ARM64) | Notes |
|---|---|---|---|
| AppImage | deckcraft-<ver>-linux-x86_64.AppImage |
deckcraft-<ver>-linux-aarch64.AppImage |
Runs anywhere; updates itself with AppImageUpdate (.zsync files) |
| Flatpak | deckcraft-<ver>-linux-x86_64.flatpak |
deckcraft-<ver>-linux-aarch64.flatpak |
Sandboxed; flatpak install --user <file> |
| Debian/Ubuntu | deckcraft-<ver>-linux-x86_64.deb |
deckcraft-<ver>-linux-aarch64.deb |
|
| Fedora/RHEL/openSUSE | deckcraft-<ver>-linux-x86_64.rpm |
deckcraft-<ver>-linux-aarch64.rpm |
|
| Tarball | deckcraft-<ver>-linux-x86_64.tar.gz |
deckcraft-<ver>-linux-aarch64.tar.gz |
Unpack anywhere |
FreeBSD
| Build | File |
|---|---|
| x86_64 | deckcraft-<ver>-freebsd-x86_64.tar.gz |
Web (WebAssembly)
| Build | File | Notes |
|---|---|---|
| Static site | deckcraft-web-<ver>.zip |
Runs in a modern browser; host it on any static server |
The Crafting Apps
DeckCraft is one of the Crafting Apps: free, open-source creative tools from the ArtCraft team, each written from scratch in Rust and each able to stand on its own.
| App | What it's for | Code | Learn more | |
|---|---|---|---|---|
| PhotoCraft | Image editing: layers, masks, type and real PSD files | GitHub | Website | |
| VectorCraft | Vector illustration | GitHub | Website | |
| FilmCraft | Video editing, color and sound | GitHub | Website | |
| LightCraft | Photo library and raw development | GitHub | Website | |
| PdfCraft | Reading, organizing and protecting PDFs | GitHub | Website | |
| EffectCraft | Motion graphics and visual effects | GitHub | Website | |
| DesignCraft | Page layout and publishing | GitHub | Website | |
| DeckCraft | Presentations and slide shows · you are here | GitHub | Website |
And ArtCraft itself, our AI image and video studio for artists who want real control.
Come make things with us
Our Discord is where artists of every kind hang out: people who paint, shoot, draw, cut film, set type, and people still figuring out what they like to make. Share what you're working on, ask for help, tell us what's broken, or tell us what you wish these tools could do. Whatever your medium and however long you've been at it, you're welcome here.
discord.gg/artcraft · getartcraft.com · The Crafting Apps · DeckCraft
License and credits
DeckCraft is dual-licensed under MIT or Apache-2.0, at your option. Copyright (c) 2026 ArtCraft Team and the DeckCraft contributors. Required notices are in NOTICE.
Bundled fonts, icons, images and other assets keep their own open licenses; each one is listed with its author, source and license in ATTRIBUTION.md.
DeckCraft's themes, layouts, shape geometry, icons and sample decks are original work, drawn or generated in code; no Microsoft artwork, fonts, themes or templates are used.
The ArtCraft name, wordmark and logos in docs/brand/ are trademarks of the
ArtCraft Team and are not covered by this license. They may be used only unmodified, and only as
part of this repository and DeckCraft, under docs/brand/LICENSE-brand.txt.
Forks and modified versions must remove them.
Microsoft and PowerPoint are trademarks of the Microsoft group of companies. Adobe, Photoshop, Illustrator, Premiere Pro, Lightroom, Acrobat, After Effects and InDesign are trademarks or registered trademarks of Adobe Inc. in the United States and/or other countries. DeckCraft is an independent, open-source project and is not affiliated with, sponsored by or endorsed by Microsoft Corporation or Adobe Inc.; these names are used only to describe the workflows it is compatible with.
Made by the ArtCraft team and community.




