{"id":44330233,"url":"https://github.com/bad-antics/pineflip","last_synced_at":"2026-02-18T06:33:09.511Z","repository":{"id":337746370,"uuid":"1142851019","full_name":"bad-antics/pineflip","owner":"bad-antics","description":"Professional Flipper Zero companion app for Linux - GTK4/libadwaita UI with screen mirroring, file manager, and firmware management","archived":false,"fork":false,"pushed_at":"2026-02-11T05:03:02.000Z","size":62,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-11T08:54:32.557Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bad-antics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["bad-antics"],"ko_fi":"badantics","custom":["https://bad-antics.github.io/services"]}},"created_at":"2026-01-26T23:30:20.000Z","updated_at":"2026-02-11T07:20:17.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bad-antics/pineflip","commit_stats":null,"previous_names":["bad-antics/pineflip"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/bad-antics/pineflip","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2Fpineflip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2Fpineflip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2Fpineflip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2Fpineflip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bad-antics","download_url":"https://codeload.github.com/bad-antics/pineflip/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bad-antics%2Fpineflip/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29570350,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-18T06:19:27.422Z","status":"ssl_error","status_checked_at":"2026-02-18T06:18:44.348Z","response_time":162,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-11T10:00:20.558Z","updated_at":"2026-02-18T06:33:09.506Z","avatar_url":"https://github.com/bad-antics.png","language":"Rust","readme":"# PineFlip 🐬\n\n\u003cdiv align=\"center\"\u003e\n\n![PineFlip Logo](assets/logo.png)\n\n**A professional Flipper Zero companion application for Linux**\n\n[![License: GPL-3.0](https://img.shields.io/badge/License-GPL--3.0-blue.svg)](LICENSE)\n[![Rust](https://img.shields.io/badge/rust-1.75+-orange.svg)](https://www.rust-lang.org)\n[![GTK4](https://img.shields.io/badge/GTK-4.0-green.svg)](https://gtk.org)\n[![Libadwaita](https://img.shields.io/badge/libadwaita-1.4-purple.svg)](https://gnome.pages.gitlab.gnome.org/libadwaita/)\n\n\u003c/div\u003e\n\n## ✨ Features\n\n### 🖥️ Live Screen Mirroring\n- Real-time display mirroring from your Flipper Zero\n- Adjustable frame rate and scaling\n- Screenshot capture with one click\n- Screen recording to GIF\n\n### 🎮 Remote Control\n- Full D-pad control via keyboard or on-screen buttons\n- Button mapping customization\n- Low-latency input\n\n### 📁 File Manager\n- Browse internal and SD card storage\n- Upload and download files\n- Create, rename, and delete files/folders\n- Drag-and-drop support\n\n### 🔄 Firmware Management\n- Check for firmware updates\n- Support for official and custom firmware:\n  - Official Flipper firmware\n  - Momentum Firmware\n  - Xtreme Firmware  \n  - Unleashed Firmware\n  - RogueMaster\n- One-click firmware installation\n\n### ⚙️ Modern UI\n- Built with GTK4 and libadwaita\n- Follows GNOME Human Interface Guidelines\n- Dark/light mode support\n- Responsive sidebar navigation\n\n## 📸 Screenshots\n\n\u003cdiv align=\"center\"\u003e\n\n| Screen Mirror | File Manager | Firmware Update |\n|:-------------:|:------------:|:---------------:|\n| ![Screen](assets/screenshot-screen.png) | ![Files](assets/screenshot-files.png) | ![Firmware](assets/screenshot-firmware.png) |\n\n\u003c/div\u003e\n\n## 🚀 Installation\n\n### Dependencies\n\n**Fedora/RHEL:**\n```bash\nsudo dnf install gtk4-devel libadwaita-devel\n```\n\n**Ubuntu/Debian:**\n```bash\nsudo apt install libgtk-4-dev libadwaita-1-dev\n```\n\n**Arch Linux:**\n```bash\nsudo pacman -S gtk4 libadwaita\n```\n\n### Building from Source\n\n```bash\n# Clone the repository\ngit clone https://github.com/bad-antics/pineflip.git\ncd pineflip\n\n# Build release version\ncargo build --release\n\n# Install (optional)\nsudo cp target/release/pineflip /usr/local/bin/\n```\n\n### USB Permissions\n\nTo access the Flipper Zero without root, add a udev rule:\n\n```bash\n# Create udev rule\nsudo tee /etc/udev/rules.d/42-flipperzero.rules \u003c\u003c 'EOF'\n# Flipper Zero serial port\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"5740\", MODE=\"0660\", TAG+=\"uaccess\"\n# Flipper Zero DFU mode\nSUBSYSTEMS==\"usb\", ATTRS{idVendor}==\"0483\", ATTRS{idProduct}==\"df11\", MODE=\"0660\", TAG+=\"uaccess\"\nEOF\n\n# Reload udev rules\nsudo udevadm control --reload-rules\nsudo udevadm trigger\n```\n\n## 📖 Usage\n\n### GUI Mode (Default)\n\n```bash\npineflip\n```\n\n### CLI Mode\n\n```bash\n# Screen mirror in terminal\npineflip --cli --mirror\n\n# Specify port\npineflip --port /dev/ttyACM0\n\n# Enable debug logging\npineflip --debug\n```\n\n### Keyboard Shortcuts\n\n| Action | Shortcut |\n|--------|----------|\n| Connect | `Ctrl+K` |\n| Disconnect | `Ctrl+Shift+K` |\n| Screenshot | `Ctrl+S` |\n| Record | `Ctrl+R` |\n| Refresh | `F5` |\n| Upload | `Ctrl+U` |\n| Download | `Ctrl+D` |\n\n### D-Pad Controls\n\n| Button | Key |\n|--------|-----|\n| Up | `↑` or `W` |\n| Down | `↓` or `S` |\n| Left | `←` or `A` |\n| Right | `→` or `D` |\n| OK | `Enter` or `Space` |\n| Back | `Backspace` or `Esc` |\n\n## 🏗️ Architecture\n\n```mermaid\ngraph TB\n    subgraph UI[\"UI Layer (GTK4 + libadwaita)\"]\n        MainWindow[Main Window]\n        ScreenView[Screen View]\n        FilesView[Files View]\n        FirmwareView[Firmware View]\n        SettingsView[Settings View]\n    end\n    \n    subgraph Core[\"Core Layer\"]\n        Device[Device Manager]\n        Protocol[Protocol Handler]\n        Config[Configuration]\n    end\n    \n    subgraph Hardware[\"Hardware Layer\"]\n        USB[USB/Serial]\n        Flipper[Flipper Zero]\n    end\n    \n    MainWindow --\u003e ScreenView\n    MainWindow --\u003e FilesView\n    MainWindow --\u003e FirmwareView\n    MainWindow --\u003e SettingsView\n    \n    ScreenView --\u003e Device\n    FilesView --\u003e Device\n    FirmwareView --\u003e Device\n    \n    Device --\u003e Protocol\n    Protocol --\u003e USB\n    USB --\u003e Flipper\n    \n    Config --\u003e MainWindow\n```\n\n## 🔧 Configuration\n\nConfiguration is stored in `~/.config/pineflip/config.toml`:\n\n```toml\n[connection]\nauto_connect = true\ntimeout_secs = 5\nauto_reconnect = true\n\n[screen]\nframe_rate = 10\nscale = 4\ninvert_colors = false\n\n[files]\nshow_hidden = false\nconfirm_delete = true\n\n[appearance]\nfollow_system_theme = true\ncompact_mode = false\n```\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n\n1. Fork the repository\n2. Create your feature branch (`git checkout -b feature/amazing-feature`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing-feature`)\n5. Open a Pull Request\n\n## 📜 License\n\nThis project is licensed under the GPL-3.0 License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- [Flipper Zero](https://flipperzero.one/) - The amazing multi-tool device\n- [GTK](https://gtk.org/) - The GIMP Toolkit\n- [libadwaita](https://gnome.pages.gitlab.gnome.org/libadwaita/) - Building blocks for modern GNOME apps\n- Inspired by [qFlipper](https://github.com/flipperdevices/qFlipper) and various community tools\n\n## ⚠️ Disclaimer\n\nThis is an unofficial third-party application. PineFlip is not affiliated with, endorsed by, or connected to Flipper Devices Inc. Use at your own risk.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nMade with 🦀 and ❤️ for the Flipper Zero community\n\n\u003c/div\u003e\n","funding_links":["https://github.com/sponsors/bad-antics","https://ko-fi.com/badantics","https://bad-antics.github.io/services"],"categories":["Tools"],"sub_categories":["Hardware Tools"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbad-antics%2Fpineflip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbad-antics%2Fpineflip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbad-antics%2Fpineflip/lists"}