OnTheFly

Effortlessly convert file formats in the background.

GitHub commit activity GitHub Release Windows Builder

OnTheFly is a desktop app that automates file format conversions in the background. Customize it to monitor multiple folders, process images, handle files matching specific regex patterns, and more!

App Screenshot

Downloading

Currently, OnTheFly is not stable (in active development) for general consumer use, but keep a watch in the Releases Tab!

Building

For people who want to do it themselves...

As previously stated, OnTheFly is not stable and is in active development, so expect bugs, undocumented actions, etc.. Additionally, there currently is only support for Windows. Building for any other platforms will produce undefined and untested behavior. However, as OnTheFly is built on Flutter and Dart, it is very easy to build with the tooling provided.

To build, you must have the Flutter SDK downloaded: https://docs.flutter.dev/get-started/install

Make sure you have all of the dependencies required by Flutter. You can check by running the command flutter doctor.

  1. Clone the repository (git clone https://github.com/exoad/on_the_fly.git)
  2. Enter the root directory of the repository
  3. Download all project dependencies: flutter pub get
  4. Run the respective Flutter build command for Windows: flutter build windows --release (the --release flag is used for maximal optimization)
  5. The built artifact can be located in the generated folder ./build/windows/Runner/Release

Building using Python Script (Windows Only)

build.py is a standardized script for building typically release builds of OnTheFly. It requires Python 3 and up and Flutter to be installed as well as dependencies required by Flutter (which you can check with flutter doctor).

By default, running the script with python build.py will produce a "non-release" build. To run it with release mode, run it with the --release flag (python build.py --release).

Furthermore, there are a few parameters you can tweak—for example, the build output locations; all of which you can find in these lines:

# configuration stuffs (change if you want to)
BUILD_OUTPUT_FOLDER_NAME = "BuildArtifacts"
BUILD_OUTPUT_FOLDER_ROOT_NAME = "OnTheFly"
BUILD_OUTPUT_FOLDER_UPDATER_NAME = "OnTheFly_Updater"
ALLOW_BUILD_LOG_TO_FILE = True
BUILD_LOG_FILE_NAME = (
    "onthefly_pybuilder.log"  # only is used if ALLOW_BUILD_LOG_TO_FILE is also True
)

⚠️ Edit the script at your own risk!

Documentation

You can check out the documentation here

Supported Formats

Currently there are only implementations for image formats, but more mediums will be added!

Input

  • webp
  • png
  • jpg
  • tiff
  • gif
  • bmp
  • ico

Output

  • png
  • jpg
  • tiff
  • gif
  • bmp

Translations + Contributing

This app is currently stable for English, with additional works for Simplified Chinese (中国大陆).

All of the internationalization can be found in ./lib/i18n/*.yaml. If you spot a mistake in the strings or want to make a suggestion, please include it in a pull request! Thank you very much for your contributions :)

Acknowledgements

Here are some of the tools and libraries that make this app possible and greatly simplified the development process.

gskinner/flutter_animate

For simplifying the animation creation process and enhancing the app's overall smoothness.

flutter

A well built framework that is the backbone of this app.

brendan-duncan/image

For a versatile cross-platform image IO library for Dart.

unDraw

Providing amazing illustrations within the UI.

Contributors

Libraries

base\ephemeral
base\native_channel
base\win_man
client\app_view
client\components\asyncs
client\components\c_canvas
client\components\components
client\components\debug_component
client\components\gradient_f_circle
client\debug_layer_view
client\events\debug_events
client\events\ephemeral_stacks
client\events\job_stack
client\left_menu_view
client\load_it_n_view
client\logging_view
client\right_menu_view
client\root_service_view
client\tray\tray
core\components\j_body
core\components\j_fields
core\components\j_prebuilt
core\components\j_spinner
core\components\j_titles
core\components\job_component
this part is usually used for commonly used ui elements for job forms
core\core
core\e_files
core\folder_watchdog
core\formats\formats
core\formats\images_target
core\jobs
core\output_builder
core\services\services
core\utils\date_time
core\utils\file_system
core\utils\result
core\utils\strings
helpers\basics
helpers\color_helper
helpers\projection_matrices
helpers\ranged_incrementor
i18n\translations.i18n
i18n\translations_zh.i18n
main
shared\app
shared\bundles
shared\layout
shared\theme
xt