Travel the globe from your photos. You'll see how small the World is.
Important
This project is still WIP.
- Catalog your photos: metadata extraction & thumbnails generation
- Geolocalize photos on virtual globe with metadata in annotations
- Search & filter capabilities to easily navigate your photos (by dates, countries, ...)
- Offline mode (use local cache for globe data)
- Available as portable app, AppImage package, DMG package and OCI image (i.e. container)
- JPEG/JPG
- PNG
- HEIF/HEIC
- Windows (x64) or Linux (x64 or aarch64) for Portable App
- Linux (x64 or aarch64) for AppImage
- macOS (aarch64) for DMG package
- Docker or Podman for OCI image
Untar/Unzip downloaded portable package (several flavors available: with Linux JRE x64 or aarch64, with Windows JRE x64) then run provided TinyWorld script:
# On Linux (x64 or aarch64)
<TinyWorld folder>/tinyworld.sh
# On Windows (x64)
<TinyWorld folder>\tinyworld.batBy default, 4Gb of memory is set via Xmx/Xms Java options: edit the script to change any Java options.
chmod +x tinyworld-<x86_64|aarch64>-<release version>.AppImage
./tinyworld-<x86_64|aarch64>-<release version>.AppImageBy default, 4Gb of memory is set via Xmx/Xms Java options. You can override this and add other options using the JAVA_OPTS env var:
# E.g. 2Gb max, 1Gb min
JAVA_OPTS="-Xmx2048m -Xms1024m" ./tinyworld-<x86_64|aarch64>-<release version>.AppImageDownload the DMG package and double-clic on the file. Drag and drop the application icon to the Applications folder to install the application. A TinyWorld app should now be available in the Launchpad.
<docker|podman> run --rm -e DISPLAY -v "$HOME/.Xauthority:/root/.Xauthority:rw" -v "$HOME/.tinyworld:/root/.tinyworld" -v "$HOME/var/cache:/root/var/cache" --network host asaintsever/tinyworld:<release version>By default, 4Gb of memory is set via Xmx/Xms Java options. You can override this and add other options using the JAVA_OPTS env var:
# E.g. 2Gb max, 1Gb min
<docker|podman> run --rm -e DISPLAY -e JAVA_OPTS="-Xmx2048m -Xms1024m" -v "$HOME/.Xauthority:/root/.Xauthority:rw" -v "$HOME/.tinyworld:/root/.tinyworld" -v "$HOME/var/cache:/root/var/cache" --network host asaintsever/tinyworld:<release version>Requires GNU Make 4+, Java JDK 17+, Maven 3+
See instructions.
-
GNU Make 4+
On macOS, you can install/update GNU Make using brew:
brew install make -
jq (used to parse responses from GitHub API)
-
Maven 3+
-
Java JDK 17+
-
zip/unzip (to generate TinyWorld portable app for Windows)
-
Docker or Podman (to generate TinyWorld OCI image)
-
FUSE (to generate TinyWorld AppImage)
On Ubuntu / Debian, install required FUSE library using
sudo apt install libfuse2On Chrome OS, install required FUSE library using
sudo apt install fuse
Note
For AppImage and DMG (macOS) packages, you'll only be able to generate the package for the platform you're running on (e.g. aarch64 AppImage if you use an arm/aarch64 platform).
You need to init your environment the first time (will install WorlWind jar and sources into your local Maven repo):
make initThen you can generate all supported packages:
# Build portable app
make gen-portableapp
# Build AppImage
make gen-appimage
# Build OCI image
make gen-oci-image
# Build macOS DMG package
make gen-dmgInstructions to release new versions of TinyWorld are available here.
TinyWorld is built upon lots of great projects. Main ones are:
- NASA WorldWind Java: https://github.com/NASAWorldWind/WorldWindJava
- OpenSearch: https://github.com/opensearch-project/OpenSearch
- Metadata Extractor: https://github.com/drewnoakes/metadata-extractor
Thumbnails for HEIF/HEIC photos are generated using ImageMagick.
