Mepo is a fast, simple, hackable OSM map viewer for mobile and desktop Linux! Free your navigation now.

Mepo is a fast, simple, and hackable OSM map viewer for desktop & mobile Linux devices (like the PinePhone, Librem 5, postmarketOS devices etc.) and both environment's various user interfaces (Wayland & X inclusive). Environments supported include Phosh, Sxmo, Plasma Mobile, desktop X, and desktop Wayland. Mepo works both offline and online, features a minimalist both touch/mouse and keyboard compatible interface, and offers a simple & powerful JSON API to allow the user to change & add functionality such as adding their own search & routing scripts, add arbitrary buttons/keybindings to the UI, and more.

Get started now:


Features

  • Fast & usable in resource-constrained environments:
    • Mepo launches quickly and runs quickly on the PinePhone and other resource-constrained devices.
    • Mepo renders using SDL which keeps things fast and lightweight; also as a bonus: portable.
    • Built in a non GC'd language (Zig) with an aim toward careful memory usage and allocations/deallocations
  • Simple JSON API for Scripting & Extending:
    • Mepo's core UI is built out to be as minimal as possible, only handling map rendering, displaying, pins, and simple IO operation (keybinding, mouse callbacks, etc.)
    • Extendeded functionality such as menus & and search integrations (via Nominatim, Overpass), routing (via Mobroute and GraphHopper), and similar are built out utilizing Mepo's extensible JSON API
    • The JSON API allows you to
    • Reposition the map, change tileserver, etc.
    • Change preferences
    • Create arbitrary buttons to run other API commands
    • Create arbitrary keybindings to run other API commands
    • Inject pin data onto the map
    • Modify pin "groups" to collect sets of pins together
    • Create custom user scripts (in any language of your choosing outputting JSON)
    • And more
  • Offline operation as a first-class feature:
    • Downloading of maps for later offline use can be done non-interactively through a command-line flag.
    • Users can download based on a bounding-box or a user-specified radius from a specific point for multiple zoom levels.
    • Offline usage is a primary usecase and should be treated as such, we can't assume a user is always online.
  • Supports touch AND keyboard-oriented operation:
    • A map application must of course be usable with a mouse / touch, but the keyboard as a tool for map navigation has been overlooked in in map applications.
    • Provides vi-like (& customizable) keybindings out-of-the-box.
    • Should be usable in touch-oriented environments like the PinePhone and similar where a physical keyboard isn't present.
    • Compatible across multiple Linux mobile environments including: Phosh, Plasma Mobile, Sxmo, and Swmo. Being written in SDL ensures good support and portability to other future environments as well.