Skip to content

vimi-tt/Flicker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

6 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ”₯ Flicker

License: MIT Rust Platform

A modern, fast, and safe USB bootable drive creator for Linux, written in Rust πŸ¦€

Flicker is a Rufus alternative for Linux that allows you to easily create bootable USB drives from ISO images. Built with Rust for maximum safety, performance, and reliability.

✨ Features

  • πŸ” Smart USB Detection - Automatically detects and lists USB devices
  • πŸš€ Fast Writing - Optimized 4MB chunk writes for maximum performance
  • πŸ›‘οΈ Safety First - Multiple validations and confirmations to prevent data loss
  • πŸ“Š Real-time Progress - Beautiful progress bars with ETA and speed
  • βœ… Data Verification - Optional byte-by-byte verification after writing
  • πŸ”“ Auto Unmount - Automatically unmounts devices before writing
  • πŸ’» CLI Interface - Simple and intuitive command-line interface
  • ⚑ Zero Dependencies - Single binary, no external tools required

πŸ“¦ Installation

From Source

# Clone the repository
git clone https://github.com/vimi-tt/Flicker.git
cd Flicker

# Build release version
cargo build --release

# Install to system
sudo cp target/release/flicker /usr/local/bin/

# Verify installation
flicker --version

Requirements

  • Rust 1.70 or higher
  • Linux kernel 3.0+
  • Root privileges (for writing to devices)

πŸš€ Quick Start

1. List available USB devices

flicker list

Output:

πŸ“€ Available USB devices:

  /dev/sdb - SanDisk Ultra (14.92 GB)
  /dev/sdc - Kingston DataTraveler (29.84 GB)

2. Write ISO to USB

sudo flicker write --iso ubuntu-24.04.iso --device /dev/sdb

3. Write with verification (recommended)

sudo flicker write --iso ubuntu-24.04.iso --device /dev/sdb --verify

πŸ“– Usage

Commands

list - List USB devices

# Simple list
flicker list

# Detailed information
flicker list --verbose
flicker list -v

write - Write ISO to USB

sudo flicker write --iso <ISO_FILE> --device <DEVICE> [OPTIONS]

Options:

  • --iso, -i <FILE> - Path to ISO file (required)
  • --device, -d <DEVICE> - Target device path (required)
  • --verify, -v - Verify data after writing
  • --yes, -y - Skip confirmation prompts

Examples:

# Basic write
sudo flicker write --iso debian.iso --device /dev/sdb

# With verification (recommended for important data)
sudo flicker write --iso ubuntu.iso --device /dev/sdb --verify

# Skip confirmation (use with caution!)
sudo flicker write --iso arch.iso --device /dev/sdb --yes

# Short flags
sudo flicker write -i ubuntu.iso -d /dev/sdb -v

verify - Verify ISO checksum

flicker verify --iso <FILE> [--checksum <HASH>]

Note: Checksum verification is planned for future release

Complete Workflow Example

# Step 1: List devices to identify your USB
flicker list -v

# Step 2: Write ISO with verification
sudo flicker write \
    --iso ~/Downloads/ubuntu-24.04-desktop-amd64.iso \
    --device /dev/sdb \
    --verify

# Step 3: Done! Safely remove your USB

πŸ”’ Safety Features

Flicker includes multiple safety checks to prevent accidental data loss:

  1. Root Permission Check - Ensures proper privileges
  2. ISO Validation - Verifies file exists and is valid
  3. Device Validation - Confirms device exists and is a block device
  4. USB Detection - Warns if target is not a removable device
  5. Size Check - Ensures ISO fits on device
  6. Mount Check - Auto-unmounts mounted partitions
  7. Confirmation Prompts - Multiple confirmations before writing
  8. Verification - Optional byte-by-byte verification

πŸ› οΈ Development

Project Structure

flicker/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ main.rs          # Entry point
β”‚   β”œβ”€β”€ cli/             # CLI argument parsing
β”‚   β”‚   └── mod.rs
β”‚   β”œβ”€β”€ usb/             # USB device detection
β”‚   β”‚   └── mod.rs
β”‚   β”œβ”€β”€ writer/          # ISO writing logic
β”‚   β”‚   └── mod.rs
β”‚   └── utils.rs         # Helper functions
β”œβ”€β”€ docs/                # Documentation
β”œβ”€β”€ Cargo.toml           # Project configuration
└── README.md

Building from Source

# Development build (faster compilation)
cargo build

# Release build (optimized)
cargo build --release

# Run tests
cargo test

# Run with logging
RUST_LOG=debug cargo run -- list -v

# Check code without building
cargo check

# Format code
cargo fmt

# Run linter
cargo clippy

πŸ“‹ Roadmap

βœ… Beta 1 (Current)

  • USB device detection
  • ISO writing with progress
  • Data verification
  • Auto-unmounting
  • Safety validations

🚧 Beta 2 (Planned)

  • ISO checksum verification (SHA256, MD5)
  • Multi-device support (write to multiple USBs)
  • Resume interrupted writes
  • GUI version (optional)

πŸ› Troubleshooting

"Permission denied"

# Always use sudo for writing
sudo flicker write --iso file.iso --device /dev/sdb

"Device not found"

# List devices to find correct path
flicker list -v

# Check with system tools
lsblk

"ISO file not found"

# Use absolute path
sudo flicker write --iso /home/user/Downloads/ubuntu.iso --device /dev/sdb

# Or relative with ~
sudo flicker write --iso ~/Downloads/ubuntu.iso --device /dev/sdb

"Verification failed"

Possible causes:

  • Faulty USB device
  • USB disconnected during write
  • Bad ISO file

Solutions:

  • Try another USB device
  • Verify ISO checksum
  • Re-download ISO file

For more help, see docs/COMMAND_WRITE.md

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • Inspired by Rufus (Windows)
  • Built with Rust πŸ¦€
  • Uses clap for CLI parsing
  • Uses indicatif for progress bars

Flicker - Making bootable USB creation simple, fast, and safe on Linux

About

A modern, fast, and safe USB bootable drive creator for Linux, written in Rust πŸ¦€

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors