Skip to content

Professional Flipper Zero companion app for Linux - GTK4/libadwaita UI with screen mirroring, file manager, and firmware management

Notifications You must be signed in to change notification settings

bad-antics/pineflip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

9 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

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
Loading

๐Ÿ”ง 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

About

Professional Flipper Zero companion app for Linux - GTK4/libadwaita UI with screen mirroring, file manager, and firmware management

Topics

Resources

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Languages