comaps¶
Offline vector maps with search and car, bike and foot routing, from CoMaps' own map files
- Version recorded: 2026.08.31-14
- Categories:
navigation-maps - Upstream: https://www.comaps.app/
- Needs first:
geoclue-2.0,libqt6positioning6-plugins
What it does¶
A map and navigator in the style of a phone app: vector maps drawn on the machine, search for places, addresses and postcodes from an index inside each map file, and routes by car, bike, on foot and by public transport, with contours and speed cameras where the map carries them. Everything runs from files on the disk, so none of it needs a network. It reads CoMaps' own map format, which comaps-maps downloads for your regions.
Why you would want it¶
One program that finds an address and routes to it offline, with modern rendering, beside Navit (turn-by-turn from gpsd) and QMapShack (trails and terrain). It is the desktop build of the CoMaps phone app, a community fork of Organic Maps, so the laptop and a phone can carry the same maps.
Before it will work¶
Map regions set in station config (hammunition station set --map-regions ...) and comaps-maps installed for them; without maps it shows only the World overview. Start it from the menu entry "CoMaps with your offline maps", which runs hammunition maps comaps.
How it installs¶
- git (cmake) — https://codeberg.org/comaps/comaps.git at
v2026.08.31-14(commit72632e4de65a98dfed827d8e447f0287168639d0); with submodules at their recorded commits, a hash-pinned build Python, upstream'sconfigure.shfirst, 3 file(s) the install rule leaves out - build dependencies:
build-essential,cmake,ninja-build,qt6-base-dev,qt6-svg-dev,qt6-positioning-dev,libicu-dev,libfreetype-dev,libharfbuzz-dev,libxrandr-dev,libxinerama-dev,libxcursor-dev,libxi-dev,optipng,python3-venv,jq
Binaries this produces:
CoMaps
Files its install rule leaves under the prefix, checked after the run and never copied or removed by the engine:
share/comaps/data/countries.txtshare/comaps/data/drules_proto.binshare/comaps/data/symbols/mdpi/light/symbols.png
Files the build's own install rule leaves out, installed by the engine after it (a symlink at the destination replaced, never written through) and checked after the run:
share/comaps/data/World.mwm, from https://cdn-fi-1.comaps.app/maps/2026.06.28/260830/World.mwm (53,387,231 bytes, sha256 pinned)share/comaps/data/WorldCoasts.mwm, from https://cdn-fi-1.comaps.app/maps/2026.06.28/260830/WorldCoasts.mwm (8,494,206 bytes, sha256 pinned)share/comaps/data/categories_brands.txt, fromdata/categories_brands.txtfrom the built tree
Known problems¶
"You are here" comes from GeoClue, the only position source CoMaps reads on Linux. Run hammunition hardware apply once, which tells GeoClue to read the GPS tether's socket, then keep hammunition maps gps-tether running (the "GPS position" menu entry) while CoMaps is open. Measured end to end with Debian's GeoClue, its demo agent and Qt's plugin in a private namespace; not yet on the field laptop's own GeoClue, so the dot on a real desktop is unmeasured. With the tether stopped, GeoClue's own network lookup (beacondb, or GeoIP) still answers, and the map shows a coarse location instead; the navigation guide says how to tell them apart and what each disclosure means. Without a GeoClue agent in the session (Debian's demo agent, started at login), CoMaps waits about 25 s and shows no position. Built from source: a first install downloads the source and its submodules and compiles for tens of minutes (about 12 minutes measured on an 8-core laptop at two jobs, by hand). Upstream installs its own menu entry, "CoMaps", under its own categories; that one starts CoMaps without the launcher's preparation, so its first start shows the licence dialog and it does not see Hammunition's maps. uninstall refuses it, as it does every build whose own install rule wrote into /usr/local (the rule leaves no file list to reverse); what it wrote is in the transaction log. US address-search quality has not been measured.
Keeping it current¶
- probe: github tags
- strategy: rebuild
- CoMaps tags a release every few weeks. Move the tag and its commit together, to one a distribution builds (Flathub's manifest names both); move the two World maps' url, sha256 and size with them (Flathub's manifest pins those too); then regenerate catalog/data/comaps-pins.yaml with scripts/gen_comaps_pins.py, whose --check refuses World maps of another version than the index names: the maps must be the version the app's own index names.
Where to get help with the software itself¶
The project's Codeberg issue tracker (https://codeberg.org/comaps/comaps/issues) and its community channels listed on comaps.app.
Source: catalog/packages/comaps.yaml