Charon is a mobile-optimized Wayland maps and navigation application.
The following noteworthy features are currently supported:
- Raster tile maps (partially offline, tiles need to be manually loaded once)
- POI / Address search (fully offline)
- List POIs/Addresses at location (fully offline)
- Routing (fully offline)
- ModemManager GPS integration
The following features are not supported yet, but are on the roadmap:
- Bulk tile download for offline rendering
- Offline Valhalla routing
- Turn-by-turn navigation (voice instructions might be out of scope)
Charon is compiled with cargo, which creates a binary at target/release/charon:
cargo build --releaseTo compile Charon, the following dependencies are required:
- boost (compile time)
- kyotocabinet (runtime)
- protobuf (runtime)
- sqlite3 (runtime)
- marisa (runtime)
To show GPS, it first needs to enabled either through a UI of choosing or
mmcli:
$ mmcli -m any --location-enable-gps-raw
The refresh rate is set by the modem, but can be increased from the default 30
through mmcli:
# Change GPS refresh rate from 30, to 10 seconds (this will increase battery usage).
$ mmcli -m any --location-set-gps-refresh-rate 10
To allow your user to read the location from the modem, you also need to grant it location permissions using polkit.
The rule to grant these permissions to users in the catacomb group can be
found in the rules directory.
Writing an application that displays map, geocoding, and routing data is the easy part, but it takes a lot of effort to create and compile this data.
OpenStreetMap is used in some form by the majority of navigation software, so if you have some time please consider contributing.
In addition to OpenStreetMap, the following non-exhaustive list of projects and services have been essential in Charon's creation:
- modRana hosting data for offline routing and geocoding
- OSM Scout Server creating the blueprint for offline routing and geocoding
- Komoot providing the online (reverse) geocoding
- Valhalla used for offline and online routing

