Ouisync is a free and open source tool enabling peer-to-peer file syncing and
sharing between devices. With or without the internet. For more information,
please visit the project's home page at https://ouisync.net.
This repository implements the GUI for the Ouisync library.
Currently supported operating systems are Android, Windows and Linux.
This repository uses git submodules. As such, use the following commands to clone it locally:
git clone https://github.com/equalitie/ouisync-app
git submodule update --init --recursive
You'll need Flutter, Rust and other dependencies corresponding to the target platform:
sudo apt-get install pkg-config libfuse-dev appindicator3-0.1 libsecret-1-dev
Then to build the app:
flutter pub get
flutter <build|run> -d <windows|android|linux>
On Linux:
# Build Ouisync library
cargo build -p ouisync-ffi --manifest-path=ouisync/Cargo.toml
# Run tests
OUISYNC_LIB=ouisync/target/debug/libouisync_ffi.so flutter test
On Windows
rem Build Ouisync library
cargo build -p ouisync-ffi --manifest-path=ouisync/Cargo.toml
rem Set environment variable to point to ouisync_ffi.dll
set OUISYNC_LIB=ouisync/target/debug/ouisync_ffi.dll
rem Run tests
flutter test
Some info on debugging tests can be found in test/README.md.
We have Dockerfiles for Linux and Windows which contain the development environment although at time of writing they are somewhat outdated (TODO).
If your development platform is Linux, you can use the Dockerfile to create the Linux desktop or the Android app.
Similarly, you can use the Windows Dockerfile to create the Windows desktop or the Android app.
We use the package intl_utils
for handling the localization of the strings used in the app.
To add/modify a localized string, modify the English .arb
file, and run the following to generate the dart code.
dart run intl_utils:generate
This project is tested with BrowserStack.
Ouisync integrates Sentry, via the sentry_flutter
plugin.
For initialization, you need to get a client key, called DSN, from a Sentry instance, making it available via an .env
file, or as a environment variable using export
, and then using envied
Please follow the instructions in the package repository for envied in GitHub to add a key called DSN
, that contains the client key.
To install multiple versions of the app on the same device (e.g., one production and one development), you can differentiate them with the "app suffix". This can be done either with the APP_SUFFIX
environment variable during build, or with the app.suffix
property in android/local.properties
(if both are specified, the env var takes priority).