🖥️Desktop & Linux★ FeaturedYear: 2025–26Active development

MTP Ecosystem

A complete desktop suite in pure Rust — Wayland compositor, display manager, terminal, file manager and a Tauri browser.

RustWaylandWGPUDRM/KMSSmithayPAMIcedTauriWGSL

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 smithay with xdg-shell handling, 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.rsSpring1D / Spring2D mass-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 via image).

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, internal theme-engine + compatibility-patcher crates

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.

More projects