MTP Ecosystem
A complete desktop suite in pure Rust — Wayland compositor, display manager, terminal, file manager and a Tauri browser.
What it is
MTP is not one project — it is an ecosystem. Five independent Rust crates that cooperate to form a full desktop environment, from the moment the machine powers on to the browser tab you open last:
| Crate | Role | Notes |
|---|---|---|
| mtp-login | Display manager | Direct DRM/KMS rendering, PAM auth, session handling, GPU wallpaper + boot animation |
| mtp-compositor | Wayland compositor | Window shell, panel/taskbar, wallpaper manager, settings, custom render engine |
| mtp-term | Terminal emulator | PTY + GPU grid rendering, ANSI support, tabs & scene-based UI |
| mtp-files | File manager | Iced + WGPU, async I/O, icon cache, breadcrumbs, previews |
| mtp-chrome | Web browser | Tauri 2 shell with a dedicated Rust theme engine + extension host |
Everything is 100% Rust with zero C runtime dependencies — the README tracks the totals: ~324 files, ~85k estimated lines, ~185 MB idle RAM for the whole suite, and a cold boot to a usable desktop in under 1.5 seconds.
Why it matters
- GPU from boot to shutdown. DRM/KMS for the login screen, WGPU + custom WGSL shaders for the compositor, GPU-rendered text, and even physics-based spring animations for windows and flyouts.
- A real Wayland compositor. Built on
smithaywithxdg-shellhandling, plus shell/window management, workspaces, snapping and a thumbnail cache. - Bilingual desktop. UI text ships in both English and Persian (JetBrains Mono + Vazirmatn fonts) — the only desktop suite of its kind aimed at Persian speakers.
- Not a toy. Each crate is independently structured with its own Cargo manifest, and the whole workspace builds through a single lockfile.
Architecture (from the source)
mtp-login (drm/, display/, auth/, render/): talks to DRM/KMS through raw drm/gbm crates, authenticates via PAM (pam-sys) with a zeroize’d secrets path, and renders the clock/date wallpaper with wgpu — including a Jalali calendar widget (jalali-date).
mtp-compositor (src/backend, shell/, desktop/, panel/, physics/, render/): the heart of the ecosystem. Notable modules:
physics/spring.rs—Spring1D/Spring2Dmass-aware semi-implicit Euler integrators; window open/close, flyout reveal and hover scale all animate on spring physics with hot-reloadable tension/damping/mass from settings.shell/— window management, workspaces, tiling/snapping (snap.rs), window animations and a thumbnail cache.panel/— a full taskbar: layout, hit-testing, flyouts, widgets for battery / clock / CPU, plus a command runner.render/engine+render/text— custom GPU render engine with damage tracking and GPU text layout.desktop/wallpaper— animated wallpaper manager (image formats decoded viaimage).
mtp-term: PTY-backed terminal (portable-pty), vte parser, GPU grid with shaders, tabs, and a session layer.
mtp-files: built on iced 0.13 with wgpu, svg/resvg icon rendering, notify filesystem watching, zip/tar/flate2 archives, syntax highlighting via syntect and markdown preview via pulldown-cmark, plus pdf-extract for document previews.
mtp-chrome: a Tauri 2 shell (src-tauri) whose core/ contains a Rust theme-engine, a compatibility-patcher, and a native-host that theme the Chromium UI from outside — including an accompanying chrome-extension/ and a ui/ front-end.
Dependency map
- Workspace-wide:
wgpu 22,winit 0.30,image(png/jpeg/webp/gif/bmp),tracing,anyhow - mtp-login:
drm,drm-ffi,drm-fourcc,gbm,input-sys,xkbcommon,wgpu,cosmic-text,pam-sys,nix,zeroize,chrono,jalali-date,rand,image - mtp-compositor:
smithay 0.7,wgpu,winit,portable-pty,cosmic-text,swash,fontdb,sysinfo,chrono,toml,serde,nix,egui,rfd,ctrlc - mtp-term:
portable-pty,wgpu,winit,vte,fontdue,arboard,sled,reqwest(rustls),tokio,unicode-width/bidi,arabic_reshaper - mtp-files:
iced 0.13,dirs,freedesktop-icons,image,resvg/usvg,sysinfo,trash,notify,zip/tar/flate2,similar,syntect,pulldown-cmark,pdf-extract - mtp-chrome:
tauri 2,tauri-plugin-log,serde/serde_json, internaltheme-engine+compatibility-patchercrates
Getting started
cargo build --release # builds the whole workspace
# mtp-login needs root for DRM:
sudo ./target/release/mtp-login
# compositor (also try inside an existing session):
./target/release/mtp-compositor
The project also ships install.sh and a deployment script for one-command setup.
What it proves
Building one OS component from scratch is impressive; building five that talk to each other — sharing a render philosophy, GPU pipeline and a bilingual UI — is a different category of project. MTP shows systems-level Rust work across DRM, Wayland, GPU compute, PTY handling and desktop UX, all with no C runtime and a boot target under 1.5 s.