{"id":15721901,"url":"https://github.com/mr-ingenious/gnss-ui","last_synced_at":"2026-01-05T16:05:53.055Z","repository":{"id":239831203,"uuid":"800712476","full_name":"mr-ingenious/gnss-ui","owner":"mr-ingenious","description":"GTK4 based GNSS dashboard to display information gathered from GNSS receivers","archived":false,"fork":false,"pushed_at":"2024-05-22T20:31:49.000Z","size":2455,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-22T20:39:44.457Z","etag":null,"topics":["gnss","gtk4","nmea-parser","python3","ui"],"latest_commit_sha":null,"homepage":"","language":"Python","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/mr-ingenious.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-05-14T21:14:54.000Z","updated_at":"2024-07-08T22:40:39.025Z","dependencies_parsed_at":"2024-05-28T19:23:44.594Z","dependency_job_id":"70e22e8b-db14-44ec-8a86-5907ebad5ba2","html_url":"https://github.com/mr-ingenious/gnss-ui","commit_stats":null,"previous_names":["mr-ingenious/gnss-ui"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-ingenious%2Fgnss-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-ingenious%2Fgnss-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-ingenious%2Fgnss-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mr-ingenious%2Fgnss-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mr-ingenious","download_url":"https://codeload.github.com/mr-ingenious/gnss-ui/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245147436,"owners_count":20568500,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["gnss","gtk4","nmea-parser","python3","ui"],"created_at":"2024-10-03T22:02:03.937Z","updated_at":"2026-01-05T16:05:52.979Z","avatar_url":"https://github.com/mr-ingenious.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gnss-ui\nGTK4 / Python based GNSS dashboard to display information gathered from GNSS receivers. The application includes a simple GPSD client that is capable of requesting NMEA and JSON data from a GPSD instance.\n\nNOTE: This application is work in progress and possibly unstable, so things may break!\n\nThe UI allows displaying various information, such as:\n\n* current position and gps quality\n* current satellites in view and available\n* positions of the satellites in a graphical view\n* a map with the current position\n\nIn addition, the application allows recording GNSS tracks and exporting to GPX files.\n\nSome screenshots:\n\n![Main window with position and satellites information](./screenshots/gnss-ui1.png)\n\n![Main window with satellites information only](./screenshots/gnss-ui2.png)\n\n![Position and map view](./screenshots/gnss-ui3.png)\n\n![Plot window 1](./screenshots/gnss-ui4.png)\n\n![Plot window 1](./screenshots/gnss-ui5.png)\n\n![Plot window 2](./screenshots/gnss-ui6.png)\n\n![Satellites and Recording](./screenshots/gnss-ui7.png)\n\n![Map view](./screenshots/gnss-ui10.png)\n\n## Installation\n\nSeveral methods are possible to use or install the gnss-ui:\n\n1. git: just clone the repo and start `gnss-ui.py` in the `src` subdirectory.\n2. arch linux: a separate project to build an arch linux package exists at https://github.com/mr-ingenious/gnss-ui-pkg. Please find further explanations there.\n\nIf time permits, maybe packaging for other linux distributions will be added.\n\nSome python libraries are required (versions I currently use in brackets):\n\n* GTK4 (version 4.14.4)\n* PyGOBject (version 3.48.2)\n* Cairo (version 1.26.0)\n* libshumate (https://gitlab.gnome.org/GNOME/libshumate) (version 1.2.2)\n\n\n## Configuration\n\n### Application\nThe application is configurable via the `appconfig.json` file located at `~/.config/gnss-ui`. The file is created automatically at first startup. Changes are effective after application restart.\n\nExample (default settings):\n\n    {\n        \"created\": \"2024-07-11 22:14:18\",\n        \"last_update\": \"2024-07-11 22:14:18\",\n        \"config\": {\n            \"general\": {\n                \"panel_refresh_cycle_sec\": 2,\n                \"resolution\": {\n                    \"height\": 800,\n                    \"width\": 1200\n                }\n            },\n            \"ttyc\": {\n                \"ttyname\": \"/dev/ttyUSB1\",\n                \"baudrate\": 9600\n            },\n            \"gpsd\": {\n                \"hostname\": \"localhost\",\n                \"port\": 2947\n            },\n            \"startup\": {\n                \"connect_to_gpsd\": true,\n                \"panels_shown\": [\n                    \"map\",\n                    \"satellites_list\"\n                ]\n            },\n            \"map_panel\": {\n                \"auto_center\": true,\n                \"initial_zoom_level\": 5,\n                \"show_satellites_dashboard\": true,\n                \"show_position_dashboard\": true,\n                \"show_compass_dashboard\": true,\n                \"start_latitude\": 0.0,\n                \"start_longitude\": 0.0\n            },\n            \"recording\": {\n                \"export\": {\n                    \"directory\": \"~/.gnss-ui\"\n                }\n            }\n        }\n    }\n\nDescription of the configuration options:\n\n| Configuration group | Description |\n|---|---|\n| general | Configuration of the default resolution of the UI and the refresh cycle of the panels | \n| ttyc  | Serial connection settings, if modem or GNSS receiver output (NMEA0183 format) shall be used directly |\n| gpsd | Connection settings for use of gpsd. The gpsd JSON output format will be used |\n| startup | Settings for startup, e.g., whether a connection to gpsd or serial connection shall be automatically established, or which panels are visible (possible values: \"position\", \"satellites_list\", \"satellites_radar\", \"map\", \"compass\", \"recorder\") |\n| map_panel | Various settings for the map panel, such as start position of the map (default: 0,0), the zoom level or visibility of different dashboards within the map panel |\n| recording | Recording specific settings, such as the export directory |\n\n### Logging configuration\n\nLogging can be configured with a `log.ini` file: `~/.config/gnss-ui/log.ini`. As default, no log configuration file is created automatically, but the default logging is active (i.e., the application logs to `~/.gnss-ui/gnss-ui.log`)\n\nExample `log.ini`:\n\n    [loggers]\n    keys=root,app,datamodel,gpsd,ttyc,config,recorder,preferences\n\n    [handlers]\n    keys=consoleHandler,fileHandler\n\n    [formatters]\n    keys=fileFormatter,consoleFormatter\n\n    [logger_root]\n    level=DEBUG\n    handlers=consoleHandler\n\n    [logger_app]\n    level=INFO\n    handlers=consoleHandler,fileHandler\n    qualname=app\n    propagate=0\n\n    [logger_preferences]\n    level=DEBUG\n    handlers=consoleHandler,fileHandler\n    qualname=preferences\n    propagate=0\n\n    [logger_datamodel]\n    level=INFO\n    handlers=consoleHandler,fileHandler\n    qualname=datamodel\n    propagate=0\n\n    [logger_gpsd]\n    level=INFO\n    handlers=consoleHandler,fileHandler\n    qualname=gpsd\n    propagate=0\n\n    [logger_ttyc]\n    level=INFO\n    handlers=consoleHandler,fileHandler\n    qualname=ttyc\n    propagate=0\n\n    [logger_config]\n    level=INFO\n    handlers=consoleHandler,fileHandler\n    qualname=config\n    propagate=0\n\n    [logger_recorder]\n    level=DEBUG\n    handlers=consoleHandler,fileHandler\n    qualname=recorder\n    propagate=0\n\n    [handler_consoleHandler]\n    class=StreamHandler\n    level=DEBUG\n    formatter=consoleFormatter\n    args=(sys.stdout,)\n\n    [handler_fileHandler]\n    class=FileHandler\n    level=INFO\n    formatter=fileFormatter\n    args=('gnss-ui.log',)\n\n    [formatter_fileFormatter]\n    format=[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s\n    datefmt=\n\n    [formatter_consoleFormatter]\n    format=[%(asctime)s] [%(name)s] [%(levelname)s] %(message)s\n    datefmt=\n\n## Usage\n\nTo make use of gpsd (see https://gpsd.gitlab.io/gpsd/ ) the daemon must be running in the background, but can also be started manually, e.g. for testing: `gpsd -nND5 /dev/ttyUSB1`. Refer to `gpsd` settings in the `appconfig.json`.\n\nAnother possibility is to use the GNSS output from the modem / GNSS receiver directly (e.g., `/dev/ttyUSB1`) - see `ttyc` settings in the `appconfig.json`.\n\n## Working directory\n\nThe application creates its files in `~/.gnss-ui`. Such files are\n* the SQLite database storing the recorded GNSS position information, satellites information etc.\n* the default output directory for recording exports.\n* the application log file\n\n\n## Further information\n\nThe application has been tested on a notebook with an integrated Quectel EM-05G modem, connected to gpsd and also via a direct connection to the serial GNSS output of the modem.\n\nCompatibility with other modems or GNSS receivers is not guaranteed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmr-ingenious%2Fgnss-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmr-ingenious%2Fgnss-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmr-ingenious%2Fgnss-ui/lists"}