- Author: Ganesh Rathinavel
- License: MIT
- System Requirements: macOS 10.10 or higher
- Website URL: https://openmtp.ganeshrvel.com
- Repo URL: https://github.com/ganeshrvel/openmtp
- Contacts: [email protected]
Transferring files between macOS and Android or any other MTP devices has always been a nightmare. There are a few File Transfer MTP apps which are available online but most of them are either too expensive or come with bad UI/UX. The official "Android File Transfer" app for macOS from Google comes with bugs, innumerable limitations, some of which include - not being able to transfer files larger than 4GB, frequent disconnections, unable to rename the folders or files on the android/MTP devices. Most of the other apps available online uses either WiFi or ADB protocol to transfer the files, which is an extremely time-consuming process.
Countless searches to find an app to solve these problems and failing to find one made me restless. So, I took the leap and decided to create an app for us that could help us have a smooth and hassle-free file transfer process from macOS to Android/MTP devices. Created with the objective of giving back to the community, we can all use this app for free in this lifetime.
- Safe, Transparent and Open-Source
- Plug and Play via USB. No hassles, easy and instant connection.
- Select between Internal Memory and SD Card
- Transfer multiple files which are larger than 4GB
- Dark mode
- Drag-and-drop support
- Split pane views for both Local Computer and Android device
- Choose between Grid and List view.
- Use Keyboard Shortcuts to navigate through your files.
- No collection of personally identifiable information.
-
Download the Latest Version
-
Using Homebrew Cask
brew cask install openmtp
-
Find the latest dmg file from GitHub Releases
Command | Keyboard Shortcut |
---|---|
Delete | backspace |
New Folder | command (⌘)+n |
Copy | command (⌘)+c |
Copy to Queue | command (⌘)+shift+c |
Paste | command (⌘)+v |
Refresh | command (⌘) +r |
Folder Up | command (⌘)+b |
Select All | command (⌘)+a |
Rename | command (⌘)+d |
Switch Tab | command(⌘)+1 |
Open | enter |
Navigate Left | left |
Navigate Right | right |
Navigate Up | up |
Navigate Down | down |
Select Multiple Items Forward (in Grid View) | shift+left |
Select Multiple Items Backward (in Grid View) | shift+right |
Select Multiple Items Forward (in List View) | shift+up |
Select Multiple Items Backward (in List View) | shift+down |
Select Multiple Items (with mouse) | command (⌘)+click or shift+click |
Requirements: Node.js v10, Git and Yarn package manager
$ git clone --depth 1 --single-branch --branch master https://github.com/ganeshrvel/openmtp.git
$ cd openmtp
$ yarn
A fresh clone might throw undefined state error. Run the following commands once to fix the issue.
# For Mac and Linux
$ UPGRADE_EXTENSIONS=1 npm run dev
# For Windows
$ set UPGRADE_EXTENSIONS=1 && npm run dev
# Development
$ yarn dev
# Pre-production
$ yarn start
Setup the code signing to build, package and publish the app.
App Notarization for macOS (skip this section for non macOS builds)
- Rename sample.env file as .env
- Update APPLEID in .env file
- Log into your Apple Account
- Goto Security > App-Specific Passwords
- Click on Generate Password..., enter a password label and click Create
- Copy the displayed app-specific-password
- Run
security add-generic-password -a "<apple-developer-account-username>" -w <app-specific-password*> -s "ELECTRON_NOTORIZE_PASSWORD"
- Log into your Apple App Store Connect Account and accept the presented terms and conditions
- The statuses shall turn Active
Packaging Instructions: https://www.electron.build/code-signing
$ export GH_TOKEN="<github token>"
# For local platform
$ yarn package
# For multiple platforms
$ yarn package-all
- Built using Electron v6, React v16.8, Redux v4, Webpack v4, Babel v7 and Material UI v4.2 and highly modular
- Loadables, dynamic reducer injection, selectors for efficient code. splitting and performance/startup optimisation
- Hot module reload (HMR) for instant feedback
- Inbuilt error logging and profile/settings management
- Industry standard state management
- JSS, SASS/SCSS styling
- Port assigned: 4642
- config/env/env.dev.js and config/env/env.prod.js contain the PORT number of the app.
- config/dev-app-update.yml file holds the GitHub repo variables required by electron-updater.
- config/google-analytics-key.js file contains the Google Analytics Tracking ID.
- package.json build.publish object holds the values for publishing the packaged application.
- app/constants folder contains all the constants required by the app.
electron-react-boilerplate/electron-react-boilerplate#400
electron-react-boilerplate/electron-react-boilerplate#118
electron-react-boilerplate/electron-react-boilerplate#108
# For Mac and Linux
$ UPGRADE_EXTENSIONS=1 npm run dev
# For Windows
$ set UPGRADE_EXTENSIONS=1 && npm run dev
Samsung devices aren't supported yet, follow these Github threads for any updates on this issue:
- npm: electron-root-path
- Electron React Redux Advanced Boilerplate
- Tutorial Series by Ganesh Rathinavel
-
Sincere thanks to Vladimir Menshakov for android-file-transfer-linux c++ library and for all his help and support that were extended towards this project.
-
Thanks to Ms Ayushi Bothra for contributing to the documentation and pages.
-
This app was built upon https://github.com/ganeshrvel/electron-react-redux-advanced-boilerplate which is a heavily modified fork of https://github.com/electron-react-boilerplate/electron-react-boilerplate.
-
The icons used in the app were made by flaticon, good-ware and kiranshastry which is licensed under CC 3.0 BY.
-
The "no image found" icon was made by Phonlaphat Thongsriphong.
If you are interested in fixing issues and contributing directly to the code base, please see the guidelines.
Help me keep the app FREE and open for all. Paypal: paypal.me/ganeshrvel
Please feel free to contact me at [email protected]
OpenMTP | Android File Transfer for macOS is released under MIT License.
Copyright © 2018-Present Ganesh Rathinavel