Skip to content

2Xsave/2XsaveTUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

2Xsave TUI

A fast, beautiful, and fully keyboard/mouse-driven Terminal UI for downloading media from social platforms. Built in Rust using ratatui.

Dashboard

Features

  • Multi-platform — TikTok, Instagram, X/Twitter, Threads, SoundCloud
  • Concurrent downloads — queue multiple URLs, they download in the background without freezing the UI
  • Rich detail view — file sizes, duration, syntax-highlighted metadata.json preview
  • Mouse support — click queue items, toggle checkboxes, switch tabs, open folders
  • Keyboard-first — fully operable without a mouse (Tab, F1/F2, Enter, o)
  • Tokyo Night color theme

Screenshots

New Download Download Complete Task Details
Dashboard Downloaded Details

Supported Platforms

Platform Videos Audio Stories
TikTok
Instagram
X / Twitter
Threads
SoundCloud

Installation

Requirements: Rust 1.75+ and Cargo

git clone https://github.com/2Xsave/xsave_tui
cd xsave_tui
cargo build --release
./target/release/xsave_tui

Or run directly without cloning:

cargo install --git https://github.com/2Xsave/xsave_tui

Usage

  1. Paste a URL into the URL input field (auto-focused on start)
  2. Toggle options if needed:
    • Download Audio — extract audio track (TikTok, SoundCloud)
    • Skip Initial URL Check — skip validation, attempt download directly
  3. Press Enter to start the download

The download runs in the background. Switch to the Details tab (F2) to see the result, file path, and metadata.json.

Keyboard Shortcuts

Key Action
F1 Switch to New Download tab
F2 Switch to Details tab
Tab / Shift+Tab Cycle focus between UI elements
/ Navigate queue (left panel) or scroll details
Enter Start download / toggle checkbox
o Open download folder in file manager (xdg-open)
Esc / q Quit
Scroll wheel Navigate queue or scroll details

Architecture

xsave_tui/
├── src/
│   ├── main.rs        # Async event loop, keyboard & mouse handling
│   ├── state.rs       # App state, task queue, focus management
│   ├── ui.rs          # ratatui rendering (Tokyo Night theme)
│   └── downloader.rs  # Platform auto-detection & download routing
└── Cargo.toml

The app uses a single tokio::sync::mpsc channel to communicate between the UI thread and background download threads. Each download spawns its own OS thread with a local tokio runtime to avoid Send bound issues with the core library futures.

Dependencies

All platform cores are pulled directly from GitHub:

Crate Repository
insave_core 2Xsave/insave
ttsave_core 2Xsave/ttsave
sksave_core 2Xsave/sksave
trsave_core 2Xsave/trsave
twsave_core 2Xsave/twsave

License

MIT

About

A fast, beautiful Terminal UI for downloading media from social platforms

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages