Skip to content
MOzcelik14Public

About

A lightweight, modern non-linear video editor for Linux.

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

triM. Logo

A lightweight, native, Electron-free non-linear video editor for Linux written in Rust.

License: MIT Rust 2021 GUI: egui / eframe FFmpeg 6.0+ Release v0.3.0 Linux

English • Türkçe • Shortcuts • Architecture • Website


English

triM. is a modern, blazing-fast, and native non-linear video editor (NLE) built from the ground up in Rust specifically for Linux desktop environments.

Engineered with a modular Cargo workspace architecture, triM. delivers precision video cutting, multi-track audio mixing, real-time color grading, and FFmpeg filtergraph exporting — completely free of Electron bloat or web runtime overhead. The compiled release binary is a self-contained, lightning-fast native Linux application (~19 MB).

Highlights

  • 100% Rust & Native Desktop: Zero Electron, zero Python dependencies. Instant startup and deterministic memory safety.
  • Asynchronous Video Pipeline: Multi-threaded PlaybackStreamer (235+ FPS continuous rawvideo decoding pipe) and non-blocking AsyncFrameDecoder for stutter-free timeline scrubbing.
  • Multi-Track Timeline: Dynamic layered video (V1..Vn) and audio (A1..An) tracks with cross-track dragging, vertical track resizing, razor split (S), ripple trim (Q/W), ripple delete (Shift+Delete), and magnetic snapping.
  • Dedicated NLE Vector Toolbar: Native subpixel vector-drawn tools (V Select, A Track Select, B Ripple, C Razor, Y Slip, P Pen, H Hand, T Text).
  • Multi-Channel Audio Mixer: Live master fader, per-track dB sliders, stereo RMS/Peak VU meters, Mute/Solo, and instant audio separation ("Detach Audio").
  • Export Studio: Multi-threaded FFmpeg rendering with presets for YouTube 1080p, 4K UHD, Reels/Shorts (9:16 Vertical), HEVC/H.265, and Apple ProRes 422.
  • Keyframing & Color Grading: Interpolation curves (Linear, Hold, Smoothstep Ease-In-Out) across clip position, scale, opacity, rotation, brightness, contrast, and saturation.
  • Direct CLI & Welcome Launcher: Launch directly from terminal (trim video.mp4) or use the startup launcher with resolution presets and recent project history.
  • Backward Compatible: Native support for both .trim and legacy .cutline project files with automatic crash recovery snapshots.

Linux Packages (.deb / .rpm / AppImage)

Prebuilt packages for the native Rust edition are published with each new tagged release:

  • Debian / Ubuntu / Linux Mint: trim_<version>_amd64.deb
  • Fedora / RPM-based distros: trim-<version>-1.x86_64.rpm
  • Other x86_64 Linux distributions: triM-<version>-x86_64.AppImage

Get the latest builds from GitHub Releases. Install and run the trim desktop application. FFmpeg must be available on your system for media processing and exports; the AppImage bundles compatible libraries where possible but does not bundle FFmpeg. Package compatibility should be verified on your particular distribution.

Publishing a new version (maintainers)

The source of truth for the Rust version is [workspace.package].version in Cargo.toml. After updating that value and committing the changes, create and push the matching tag:

git tag v0.3.1  # Example only: Cargo.toml must say 0.3.1
git push origin master
git push origin v0.3.1

The Linux release workflow tests the Rust workspace, builds Debian and AppImage packages on Ubuntu and an RPM on Fedora, then publishes all three files with SHA-256 checksums to the matching GitHub Release. On changes to the packaging script or workflow, the same builds can run on master as CI artifacts without publishing a release. No manual packaging or uploading is needed. All packages are 100% native Rust executables.


Installation & Build

🚀 Quick Install (One-Line curl)

Install triM. on any Linux desktop with a single command (installs binary to ~/.local/bin/trim, integrates high-res desktop icons and system application menu):

curl -fsSL https://raw.githubusercontent.com/MOzcelik14/triM/master/install.sh | bash

To cleanly uninstall at any time:

curl -fsSL https://raw.githubusercontent.com/MOzcelik14/triM/master/install.sh | bash -s -- --uninstall

Prerequisites (Debian / Ubuntu / Pop!_OS / Fedora / Arch)

Ensure you have Rust and the required development libraries installed:

# Debian / Ubuntu / Linux Mint
sudo apt update
sudo apt install build-essential pkg-config libasound2-dev libx11-dev libgl1-mesa-dev ffmpeg

# Fedora
sudo dnf install gcc pkgconf-pkg-config alsa-lib-devel libX11-devel mesa-libGL-devel ffmpeg

# Arch Linux
sudo pacman -S base-devel alsa-lib libx11 mesa ffmpeg

Build from Source

git clone https://github.com/MOzcelik14/triM.git
cd triM
cargo build --release

The optimized native binary is produced at ./target/release/trim.

Running triM.

# Launch editor
./target/release/trim

# Launch with a video or project directly
./target/release/trim /path/to/video.mp4
./target/release/trim /path/to/project.trim

Türkçe

triM., Linux masaüstü ortamları için özel olarak Rust ile sıfırdan yeniden geliştirilmiş, modern, ultra hızlı ve hafif bir yerel video düzenleyicidir (NLE).

Modüler Cargo çalışma alanı mimarisi üzerine kurulan triM.; hassas video kesme, çok kanallı ses miksajı, gerçek zamanlı renk derecelendirme ve FFmpeg filtre dışa aktarımı sunar. Electron yükü ve web motoru bağımlılıkları içermez; yaklaşık 19 MB boyutunda bağımsız, optimize bir yerel ikili dosyadır.

Öne Çıkan Özellikler

  • %100 Rust ve Yerel Masaüstü: Sıfır Electron yükü, sıfır Python bağımlılığı. Anında açılış ve kararlı bellek yönetimi.
  • Yüksek Hızlı Asenkron Video Motoru: PlaybackStreamer (arka planda 235+ FPS sürekli rawvideo borusu) ve AsyncFrameDecoder (sarma sırasında kilitlenmeyen oynatma kafası).
  • Dinamik Çok Kanallı Zaman Çizgisi: Kanallar arası serbest dikey klip taşıma, dikey kanal boyu ayarlama, [+ Video] / [+ Ses] ekleme, çizgiden kesme (S), başı kırpıp kaydırma (Q), sonu kırpıp kaydırma (W), boşluğu kapatarak silme (Shift+Delete) ve manyetik yapışma.
  • Özel NLE Vektörel Araç Çubuğu: Yerel piksel altı vektörlerle çizilen 8 profesyonel kurgu aracı (V Seçim, A İz Seçme, B Dalgalanma, C Jilet/Kesme, Y Kaydırma, P Kalem/Anahtar Kare, H El/Gezinme, T Metin).
  • Çok Kanallı Ses Mikseri Konsolu: Canlı Master fader, kanal bazlı dB sürgüleri, stereo tepe/RMS VU metreler, Mute/Solo ve tek tıkla ses ayırma ("Sesi Ayır").
  • Gelişmiş Dışa Aktarma Stüdyosu: YouTube 1080p, 4K UHD, Reels/Shorts 9:16 Dikey, HEVC H.265 ve Apple ProRes 422 hazır profilleri ile anlık tahmini boyut hesabı.
  • Anahtar Kare & Renk Düzenleme: Konum, ölçek, opaklık, döndürme, parlaklık, kontrast ve doygunluk üzerinde anahtar kare enterpolasyonu (Doğrusal, Sabit, Ease-In-Out eğrisi).
  • Hızlı Başlangıç & Karşılama Ekranı: Çözünürlük şablonları, son kullanılan projeler ve terminalden doğrudan dosya açabilme (trim video.mp4).
  • Geriye Dönük Uyumluluk: .trim ve eski .cutline JSON proje dosyalarını otomatik tanıma ve her 2 dakikada bir otomatik kurtarma anlık görüntüsü alma.

🚀 Hızlı Kurulum (Tek Satırda curl)

Modern Linux dağıtımlarında triM. uygulamasını tek satırla kurmak için:

curl -fsSL https://raw.githubusercontent.com/MOzcelik14/triM/master/install.sh | bash

İstediğiniz zaman uygulamayı, simgeleri ve kısayolları temizce kaldırmak için:

curl -fsSL https://raw.githubusercontent.com/MOzcelik14/triM/master/install.sh | bash -s -- --uninstall

⌨️ Keyboard Shortcuts / Klavye Kısayolları

Kısayol İngilizce Açıklama Türkçe Açıklama
Space Toggle Playback / Pause Oynat / Duraklat
V Selection Tool Seçim Aracı
A Track Select Forward Tool İleri İz Seçme Aracı
B Ripple Edit Tool Dalgalanma Düzenleme Aracı
C Razor / Cut Tool Jilet / Kesme Aracı
Y Slip Tool Kaydırma Aracı
P Pen / Keyframe Tool Kalem / Anahtar Kare Aracı
H Hand / Pan Tool El / Gezinme Aracı
T Type / Text Tool Metin / Yazı Aracı
S Split / Razor Cut at Playhead Çizgiden Kes / Böl
Q Ripple Trim Head to Playhead Başı Çizgiye Kırp ve Kaydır
W Ripple Trim Tail to Playhead Sonu Çizgiye Kırp ve Kaydır
Delete Delete Selected Clip(s) Seçili Klibi Sil
Shift + Delete Ripple Delete Selected Clip Boşluğu Kapatıp Sil (Ripple Delete)
J Shuttle Reverse (-1x, -2x, -4x, -8x) Geriye Hızlı Oynat
K Shuttle Pause Oynatmayı Durdur
L Shuttle Forward (1x, 2x, 4x, 8x) İleriye Hızlı Oynat
← / → Step 1 Frame Backward / Forward 1 Kare Geri / İleri Adımla
Shift + ← / → Step 1 Second Backward / Forward 1 Saniye Geri / İleri Adımla
↑ / ↓ Jump to Previous / Next Edit Point Önceki / Sonraki Kesim Noktasına Git
Home / End Jump to Beginning / End of Timeline Zaman Çizgisi Başına / Sonuna Git
M Add Marker at Playhead Çizgiye İşaretçi Ekle
Ctrl + Z Undo Last Action Son İşlemi Geri Al
Ctrl + Y Redo Last Action Son İşlemi Yinele
Ctrl + N New Project Yeni Proje
Ctrl + O Open Project Dialog Proje Aç
Ctrl + S Save Project Projeyi Kaydet
Ctrl + T Add Title Card Dialog Başlık / Metin Ekle
Ctrl + M / E Open Export Studio Dışa Aktarma Stüdyosu
F1 Keyboard Shortcuts Guide Klavye Kısayolları Kılavuzu

🏗️ Architecture / Mimari Yapı

Uygulama, sorumlulukların temiz ve modüler ayrıldığı 8 üyeli Cargo Çalışma Alanı (Workspace) olarak yapılandırılmıştır:

VideoEditor/
├── Cargo.toml                    # Workspace manifesti (resolver = "2")
├── crates/
│   ├── trim-core/                # Zaman, klip, kanal, anahtar kare ve proje modelleri
│   ├── trim-commands/            # 14 adet geri alınabilir (Undo/Redo) komut ve UndoStack
│   ├── trim-timeline/            # Üst düzey zaman çizgisi düzenleme algoritmaları
│   ├── trim-project/             # Atomik disk G/Ç (.tmp rename) ve AutosaveManager
│   ├── trim-media/               # VideoEngine, PlaybackStreamer, PCM mikser, ses motoru
│   ├── trim-export/              # FFmpeg filtergraph oluşturucu, arka plan işçisi
│   ├── trim-ui/                  # Saf Rust egui/eframe arayüzü, canvas, denetçi, monitör
│   └── trim-app/                 # Masaüstü ikili dosya giriş noktası (`trim`)

Modül Sorumlulukları

  1. trim-core:
    • SMPTE zaman kodu hesaplamaları (seconds_to_timecode, timecode_to_seconds).
    • Zaman çizgisi manyetik yapışma (snap_time).
    • Çok katmanlı görünür klip tespiti (get_visible_video_clips_at, get_active_audio_clips_at).
    • Anahtar kare enterpolatörleri (Linear, Hold, Smoothstep Ease-In-Out).
  2. trim-commands:
    • 14 adet atomik, geri alınabilir komut (AddClip, RemoveClip, MoveClip, TrimClip, SplitClip, RippleDelete, BatchMove, DetachAudio, vb.).
  3. trim-timeline:
    • Oynatma kafasından kesme (split_at_playhead).
    • Ripple trim baş (ripple_trim_head) ve kuyruk (ripple_trim_tail) fonksiyonları.
    • Edit noktası arama (find_prev_edit_point, find_next_edit_point).
  4. trim-project:
    • Güvenli atomik kaydetme (.tmp -> rename).
    • .trim v1 ve eski .cutline geriye dönük uyumlu JSON serileştirme.
    • Periyodik kurtarma yöneticisi (AutosaveManager).
  5. trim-media:
    • VideoEngine: Gerçek zamanlı akış (PlaybackStreamer), asenkron sarma (AsyncFrameDecoder), RAM kare önbelleği.
    • AudioMixer: 48kHz 16-bit stereo miksaj, arka plan ön yükleme (preload_audio_async), cpal ses akış cihazı (AudioStreamPlayer).
    • WaveformGenerator: Çok iş parçacıklı dalga formu analizi ve RAM/Disk önbellekleme.
    • FFprobeAnalyzer: JSON akış ve codec çözümleme.
  6. trim-export:
    • FFmpeg karmaşık filtre grafikleri ([v0][v1]overlay, scale, pad, eq, fade, afade, atempo).
    • Önayarlar: 1080p, 720p, 4K, YouTube 60fps, WebM, Yalnızca Ses (WAV/MP3).
  7. trim-ui:
    • Donanım hızlandırmalı egui arayüzü: Zaman çizgisi kanvası, monitör penceresi, medya havuzu, özellik denetçisi, çift kanallı VU metre.
  8. trim-app:
    • Komut satırı argümanları, uygulama ikonu ve pencere ilklendirmesi.

Test Kapsamı

Tüm çalışma alanı testleri Cargo üzerinden doğrudan çalıştırılabilir:

cargo test --workspace

Birim ve entegrasyon testleri; geri alma yığını, ses mikseri, manyetik yapışma, video çözümleme ve kurgu iş akışlarını kapsar. GitHub Actions, her ilgili değişiklikte Rust çalışma alanını yeniden derleyip test eder.


License / Lisans

Bu proje MIT Lisansı ile lisanslanmıştır. Detaylar için LICENSE dosyasına bakabilirsiniz.

About

A lightweight, modern non-linear video editor for Linux.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages