- Real-time display mirroring from your Flipper Zero
- Adjustable frame rate and scaling
- Screenshot capture with one click
- Screen recording to GIF
- Full D-pad control via keyboard or on-screen buttons
- Button mapping customization
- Low-latency input
- Browse internal and SD card storage
- Upload and download files
- Create, rename, and delete files/folders
- Drag-and-drop support
- Check for firmware updates
- Support for official and custom firmware:
- Official Flipper firmware
- Momentum Firmware
- Xtreme Firmware
- Unleashed Firmware
- RogueMaster
- One-click firmware installation
- Built with GTK4 and libadwaita
- Follows GNOME Human Interface Guidelines
- Dark/light mode support
- Responsive sidebar navigation
Fedora/RHEL:
sudo dnf install gtk4-devel libadwaita-develUbuntu/Debian:
sudo apt install libgtk-4-dev libadwaita-1-devArch Linux:
sudo pacman -S gtk4 libadwaita# 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/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 triggerpineflip# Screen mirror in terminal
pineflip --cli --mirror
# Specify port
pineflip --port /dev/ttyACM0
# Enable debug logging
pineflip --debug| Action | Shortcut |
|---|---|
| Connect | Ctrl+K |
| Disconnect | Ctrl+Shift+K |
| Screenshot | Ctrl+S |
| Record | Ctrl+R |
| Refresh | F5 |
| Upload | Ctrl+U |
| Download | Ctrl+D |
| Button | Key |
|---|---|
| Up | ↑ or W |
| Down | ↓ or S |
| Left | ← or A |
| Right | → or D |
| OK | Enter or Space |
| Back | Backspace or Esc |
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 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 = falseContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the GPL-3.0 License - see the LICENSE file for details.
- 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
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



