pineflip 0.2.0

Professional Flipper Zero companion app - Screen mirroring, file management, and device control via GTK4
pineflip-0.2.0 is not a library.

PineFlip 🐬

PineFlip Logo

A professional Flipper Zero companion application for Linux

License: GPL-3.0 Rust GTK4 Libadwaita

✨ Features

🖥️ Live Screen Mirroring

  • Real-time display mirroring from your Flipper Zero
  • Adjustable frame rate and scaling
  • Screenshot capture with one click
  • Screen recording to GIF

🎮 Remote Control

  • Full D-pad control via keyboard or on-screen buttons
  • Button mapping customization
  • Low-latency input

📁 File Manager

  • Browse internal and SD card storage
  • Upload and download files
  • Create, rename, and delete files/folders
  • Drag-and-drop support

🔄 Firmware Management

  • Check for firmware updates
  • Support for official and custom firmware:
    • Official Flipper firmware
    • Momentum Firmware
    • Xtreme Firmware
    • Unleashed Firmware
    • RogueMaster
  • One-click firmware installation

⚙️ Modern UI

  • Built with GTK4 and libadwaita
  • Follows GNOME Human Interface Guidelines
  • Dark/light mode support
  • Responsive sidebar navigation

📸 Screenshots

Screen Mirror File Manager Firmware Update
Screen Files Firmware

🚀 Installation

Dependencies

Fedora/RHEL:

sudo dnf install gtk4-devel libadwaita-devel

Ubuntu/Debian:

sudo apt install libgtk-4-dev libadwaita-1-dev

Arch Linux:

sudo pacman -S gtk4 libadwaita

Building from Source

# Clone the repository
git clone https://github.com/bad-antics/pineflip.git
cd pineflip

# Build release version
cargo build --release

# Install (optional)
sudo cp target/release/pineflip /usr/local/bin/

USB Permissions

To access the Flipper Zero without root, add a udev rule:

# Create udev rule
sudo tee /etc/udev/rules.d/42-flipperzero.rules << 'EOF'
# Flipper Zero serial port
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE="0660", TAG+="uaccess"
# Flipper Zero DFU mode
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="df11", MODE="0660", TAG+="uaccess"
EOF

# Reload udev rules
sudo udevadm control --reload-rules
sudo udevadm trigger

📖 Usage

GUI Mode (Default)

pineflip

CLI Mode

# Screen mirror in terminal
pineflip --cli --mirror

# Specify port
pineflip --port /dev/ttyACM0

# Enable debug logging
pineflip --debug

Keyboard Shortcuts

Action Shortcut
Connect Ctrl+K
Disconnect Ctrl+Shift+K
Screenshot Ctrl+S
Record Ctrl+R
Refresh F5
Upload Ctrl+U
Download Ctrl+D

D-Pad Controls

Button Key
Up or W
Down or S
Left or A
Right or D
OK Enter or Space
Back Backspace or Esc

🏗️ Architecture

graph TB
    subgraph UI["UI Layer (GTK4 + libadwaita)"]
        MainWindow[Main Window]
        ScreenView[Screen View]
        FilesView[Files View]
        FirmwareView[Firmware View]
        SettingsView[Settings View]
    end
    
    subgraph Core["Core Layer"]
        Device[Device Manager]
        Protocol[Protocol Handler]
        Config[Configuration]
    end
    
    subgraph Hardware["Hardware Layer"]
        USB[USB/Serial]
        Flipper[Flipper Zero]
    end
    
    MainWindow --> ScreenView
    MainWindow --> FilesView
    MainWindow --> FirmwareView
    MainWindow --> SettingsView
    
    ScreenView --> Device
    FilesView --> Device
    FirmwareView --> Device
    
    Device --> Protocol
    Protocol --> USB
    USB --> Flipper
    
    Config --> MainWindow

🔧 Configuration

Configuration is stored in ~/.config/pineflip/config.toml:

[connection]
auto_connect = true
timeout_secs = 5
auto_reconnect = true

[screen]
frame_rate = 10
scale = 4
invert_colors = false

[files]
show_hidden = false
confirm_delete = true

[appearance]
follow_system_theme = true
compact_mode = false

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

📜 License

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

🙏 Acknowledgments

  • Flipper Zero - The amazing multi-tool device
  • GTK - The GIMP Toolkit
  • libadwaita - Building blocks for modern GNOME apps
  • Inspired by qFlipper and various community tools

⚠️ Disclaimer

This is an unofficial third-party application. PineFlip is not affiliated with, endorsed by, or connected to Flipper Devices Inc. Use at your own risk.


Made with 🦀 and ❤️ for the Flipper Zero community