{"id":16200020,"url":"https://github.com/rinigus/deb-pure-maps","last_synced_at":"2026-02-06T18:08:58.294Z","repository":{"id":74209661,"uuid":"189087830","full_name":"rinigus/deb-pure-maps","owner":"rinigus","description":"Debian packaging of Pure Maps","archived":false,"fork":false,"pushed_at":"2019-08-11T18:51:52.000Z","size":13894,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-07T17:49:00.076Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"QML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rinigus.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-28T19:09:23.000Z","updated_at":"2019-08-10T19:14:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"356c1c9e-8928-443f-8704-dc3341bc4608","html_url":"https://github.com/rinigus/deb-pure-maps","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/rinigus/deb-pure-maps","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinigus%2Fdeb-pure-maps","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinigus%2Fdeb-pure-maps/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinigus%2Fdeb-pure-maps/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinigus%2Fdeb-pure-maps/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rinigus","download_url":"https://codeload.github.com/rinigus/deb-pure-maps/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rinigus%2Fdeb-pure-maps/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29171219,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-06T16:33:35.550Z","status":"ssl_error","status_checked_at":"2026-02-06T16:33:30.716Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-10T09:29:04.476Z","updated_at":"2026-02-06T18:08:58.277Z","avatar_url":"https://github.com/rinigus.png","language":"QML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pure Maps\n\nPure Maps is an application for Sailfish OS and Linux to display\nvector and raster maps, places, routes, and provide navigation\ninstructions with a flexible selection of data and service providers.\n\nPure Maps is free software released under the GNU General Public\nLicense (GPL), see the file [`COPYING`](COPYING) for details. Pure\nMaps is a fork of [WhoGo Maps](https://github.com/otsaloma/whogo-maps)\nthat was made to continue its development.\n\n\n## User feedback\n\nThere are two main communication channels with the users: GitHub and a\nthread at\n[TMO](https://talk.maemo.org/showthread.php?t=100442). \n\nPlease use Github issues to address specific problems and development\nrequests. General discussion is expected either through corresponding\nissues opened by maintainer or TMO thread. Please note that users from\nall platforms are welcome at TMO, not only current Sailfish OS users.\n\n\n## Development\n\nFor development of Pure Maps and testing on desktop, you would have to\nchoose platform for which you develop, install dependencies, and be\nable to run application. All this is covered below.\n\n\n## Platforms\n\nTo support multiple platforms, QML code is split into\nplatform-specific and platform-independent parts. Platform-independent\npart is in `qml` folder with the platform-dependent code under\n`qml/\u003cplatform-id\u003e`. To switch between platforms, one has to make a\nsymbolic link from the corresponding `qml/\u003cplatform-id\u003e` to\n`qml/platform`. This can be done by running \n\n```\nmake platform-qtcontrols\n```\n\nfor example. Current platforms are \n\n* platform.kirigami -\u003e make target `platform-kirigami`\n* platform.qtcontrols -\u003e make target `platform-qtcontrols`\n* platform.silica -\u003e make target `platform-silica`\n\nWithin platform-independent code, platform is included allowing to\naccess platform-specific implementations of page stack, file dialog,\nand other specific aspects. For this approach to work, API in the\nplatform specific implementation has to be the same for all platforms. \n\nTo add new platform, add new directory under `qml`, new Makefile\ntarget to set it, and implement all the required QML items. Take a\nlook under other platforms for examples.\n\nFor testing purposes you can just run `qmlscene qml/pure-maps.qml`,\nafter setting the platform.\n\n\n## Dependencies\n\nIn addition to common dependencies for QML applications, the following\nare needed:\n\n* Nemo DBus https://git.merproject.org/mer-core/nemo-qml-plugin-dbus\n* PyOtherSide https://github.com/thp/pyotherside\n* PyXDG https://www.freedesktop.org/wiki/Software/pyxdg/\n* Mapbox GL Native, Qt version, use the packaged version at https://github.com/rinigus/pkg-mapbox-gl-native\n* Mapbox GL QML, unofficial QML bindings, https://github.com/rinigus/mapbox-gl-qml\n* [non-Sailfish] QML runner https://github.com/rinigus/qmlrunner\n* GPXPy, https://github.com/tkrajina/gpxpy\n\nWhen developing with Kirigami using flatpak builder, dependencies will\nbe pulled and installed in flatpak. See instructions regarding\nKirigami below.\n\nGPXPy is also provided as a thirdparty submodule and can be installed\ntogether with Pure Maps by setting `INCLUDE_GPXPY=yes` argument to\n`make install`. \n\n\n## Running\n\nFor development purposes, Pure Maps doesn't need to be installed in\nthe system and can be started wither using `qmlscene`, `qmlrunner`, or\nsome similar tool. On Linux desktop, `qmlrunner` is recommended since\nit adds support for fallback icons.\n\nThe both solutions require the path used to install QML\ndependencies. In the following examples, `/usr/local/lib64/qml`,\nplease adjust if needed.\n\nTo run Pure Maps from the folder containing source, make a symbolic\nlinks\n\n```\nln -s qml/icons/fallback icons\nln -s ../thirdparty/open-location-code poor/openlocationcode\n```\n\nand then run with\n\n```\nqmlrunner -P .. -path /usr/local/lib64/qml pure-maps\n```\n\nor\n\n```\nqmlscene -I /usr/local/lib64/qml qml/pure-maps.qml\n```\n\nNote that you will need API keys if you wish to access the services\nthat require them (such as Mapbox). For that, register as a developer\nand insert these keys in the preferences. Among services that don't\nrequire API keys are OSM Scout Server (for offline maps), HSL (raster\ntiles for Finland), Sputnik (raster tiles in Russian), Photon\n(search).\n\n\n## Packaging\n\nAt present, Sailfish OS version is packaged as RPM and Linux version\nis packaged using Flatpak.\n\nFor packaging, please copy `tools/apikeys_dummy.py` to\n`tools/apikeys.py` and fill missing API keys for the services that you\nplan to use.\n\nFor installation on Sailfish, you can build the RPM package with\ncommand `make rpm`. You don't need an SDK to build the RPM, only basic\ntools: `make`, `rpmbuild`, `gettext` and `qttools`.\n\nFlatpak specific instructions are available under `packaging/flatpak`.\n\n\n## Platform specific notes\n\n### Kirigami\n\nKirigami platform may require latest platform SDK available as\nflatpaks. See instructions at\nhttps://docs.plasma-mobile.org/AppDevelopment.html for local\ndevelopment. From these instructions, only SDK install is\nneeded. After that, building and running can be performed by\n\n```\nmake flatpak-build flatpak-run\n```\n\nIf you wish to install development version for testing, you could use\nthe following command instead (will build the package, bundle it,\nuninstall current version of Pure Maps, and install the freshly built\none):\n```\nmake flatpak-dev-install\n```\n\n\n## Development\n\n### General\n\nThroughout QML and Python code, all the same type items (properties,\nsignals, functions), are ordered alphabetically. \n\nIts possible that some of the implemented code does not fully comply\nwith the outlined order. Then it should be fixed eventually.\n\nIf you wish to run the code while developing, it is recommended to\nmake a symbolic link (command run from Pure Maps source folder):\n\n```\nln -s ../thirdparty/open-location-code poor/openlocationcode\n```\n\nIf GPXPy is not installed in the system, but is pulled as a thirdparty\nmodule, Pure Maps will run when executed using `qmlscene`, `qmlrunner`\nor similar tool, but the automatic tests will fail. This is an expected\nbehavior or the implementation.\n\n### QML\n\nTo simplify development, there are few simple rules regarding QML file\norganization. QML files are organized as follows (use the needed\ncomponents):\n\n```\nimport A\nimport B\nimport \".\"\n\nimport \"js/util.js\" as Util\n\nItem {\n    id: item\n    \n    // base class defined properties in alphabetic order\n    prop_a: val_a\n    prop_b: val_b\n    \n    // new properties in alphabetic order\n    property         var  np_a: default_a\n    default property bool np_b: default_b\n    \n    // readonly properties\n    readonly property var images: QtObject {\n        readonly property string pixel:         \"pure-image-pixel\"\n        readonly property string poi:           \"pure-image-poi\"\n        readonly property string poiBookmarked: \"pure-image-poi-bookmarked\"\n    }\n    \n    // signals\n    signal mySignal\n\n    // local unexported properties\n    property bool _locked: false\n\n    // behavior\n    Behavior on bearing {\n        RotationAnimation {\n            direction: RotationAnimation.Shortest\n            duration: map.ready ? 500 : 0\n            easing.type: Easing.Linear\n        }\n    }\n    \n    // new sub-items following the same principles\n    Item {\n        id: subitem\n    }\n    \n    // connections\n    Connections {\n    }\n\n    // signal handlers\n    Component.onCompleted: init()\n    onActivated: doSomething()\n    \n    // functions \n    function a() {\n        return 10;\n    }\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frinigus%2Fdeb-pure-maps","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frinigus%2Fdeb-pure-maps","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frinigus%2Fdeb-pure-maps/lists"}