{"id":34085739,"url":"https://github.com/matesh/mqttk","last_synced_at":"2026-04-09T00:32:32.778Z","repository":{"id":39885369,"uuid":"455500949","full_name":"matesh/mqttk","owner":"matesh","description":"Lightweight MQTT client GUI to replace MQTT.fx","archived":false,"fork":false,"pushed_at":"2024-12-28T07:13:23.000Z","size":7336,"stargazers_count":34,"open_issues_count":1,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-12-16T15:52:08.924Z","etag":null,"topics":["mqtt","mqtt-analyser","mqtt-client","mqtt-client-gui","python","python3","tkinter-gui"],"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/matesh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-02-04T10:11:59.000Z","updated_at":"2025-12-12T18:50:15.000Z","dependencies_parsed_at":"2024-12-28T06:21:56.247Z","dependency_job_id":"2cd1a5c2-7020-4c50-a02a-3a638497056e","html_url":"https://github.com/matesh/mqttk","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/matesh/mqttk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matesh%2Fmqttk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matesh%2Fmqttk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matesh%2Fmqttk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matesh%2Fmqttk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matesh","download_url":"https://codeload.github.com/matesh/mqttk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matesh%2Fmqttk/sbom","scorecard":{"id":623802,"data":{"date":"2025-08-11","repo":{"name":"github.com/matesh/mqttk","commit":"631800ecbf46d7aaa316ad7afb31f3cbe2c3f15c"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.7,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Code-Review","score":5,"reason":"Found 2/4 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.txt:0","Info: FSF or OSI recognized license: GNU General Public License v3.0: LICENSE.txt:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.4.0 not signed: https://api.github.com/repos/matesh/mqttk/releases/192552501","Warn: release artifact 1.3.2 not signed: https://api.github.com/repos/matesh/mqttk/releases/83092276","Warn: release artifact 1.3.1 not signed: https://api.github.com/repos/matesh/mqttk/releases/71124351","Warn: release artifact 1.3.0 not signed: https://api.github.com/repos/matesh/mqttk/releases/64025024","Warn: release artifact 1.2.0 not signed: https://api.github.com/repos/matesh/mqttk/releases/61154720","Warn: release artifact v1.4.0 does not have provenance: https://api.github.com/repos/matesh/mqttk/releases/192552501","Warn: release artifact 1.3.2 does not have provenance: https://api.github.com/repos/matesh/mqttk/releases/83092276","Warn: release artifact 1.3.1 does not have provenance: https://api.github.com/repos/matesh/mqttk/releases/71124351","Warn: release artifact 1.3.0 does not have provenance: https://api.github.com/repos/matesh/mqttk/releases/64025024","Warn: release artifact 1.2.0 does not have provenance: https://api.github.com/repos/matesh/mqttk/releases/61154720"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-21T05:51:39.204Z","repository_id":39885369,"created_at":"2025-08-21T05:51:39.204Z","updated_at":"2025-08-21T05:51:39.204Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31579970,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"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":["mqtt","mqtt-analyser","mqtt-client","mqtt-client-gui","python","python3","tkinter-gui"],"created_at":"2025-12-14T13:12:15.662Z","updated_at":"2026-04-09T00:32:32.736Z","avatar_url":"https://github.com/matesh.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"![MQTTk](/mqttk/mqttk_splash.png)\n\n- [Introduction](#introduction)\n- [Features](#features)\n  * [Connection profile management](#connection-profile-management)\n  * [Subscribe interface](#subscribe-interface)\n  * [Publish interface](#publish-interface)\n  * [Topic browser](#topic-browser)\n  * [Broker stats](#broker-stats)\n  * [Log tab](#log-tab)\n  * [Import MQTT.fx configuration](#import-mqttfx-configuration)\n- [Planned features](#planned-features)\n  * [V1.4](#v14)\n  * [V1.5](#v15)\n- [Software dependencies](#software-dependencies)\n- [Installation](#installation)\n  * [macOS - app](#macos---app)\n  * [On macOS from source](#on-macos-from-source)\n    + [macOS Dependencies](#macos-dependencies)\n    + [macOS - acquiring and installing the package from source](#macos---acquiring-and-installing-the-package-from-source)\n    + [macOS - installing via pip](#macos---installing-via-pip)\n    + [macOS - running MQTTk](#macos---running-mqttk)\n  * [Windows - as an executable](#windows---as-an-executable)\n  * [Windows - from source](#windows---from-source)\n    + [Windows - dependencies](#windows---dependencies)\n    + [Windows - acquiring and installing the package from source](#windows---acquiring-and-installing-the-package-from-source)\n    + [Windows - installing it via pip](#windows---installing-it-via-pip)\n    + [Windows - running MQTTk](#windows---running-mqttk)\n  * [On Linux from source](#on-linux-from-source)\n    + [Linux - dependencies](#linux---dependencies)\n    + [Linux - acquiring and installing the package from source](#linux---acquiring-and-installing-the-package-from-source)\n    + [Linux - installing it via pip](#linux---installing-it-via-pip)\n    + [Linux - Running MQTTk](#linux---running-mqttk)\n- [Building the app from source](#building-the-app-from-source)\n  * [pypi package](#pypi-package)\n  * [macOS appimage](#macos-appimage)\n    + [Dependencies](#dependencies)\n    + [Building the macOS app](#building-the-macos-app)\n  * [Windows executable](#windows-executable)\n- [How to contribute](#how-to-contribute)\n  * [Reporting bugs](#reporting-bugs)\n  * [macOS universal2 appimage](#macos-universal2-appimage)\n  * [Linux binary package or app](#linux-binary-package-or-app)\n\n\n# Introduction\nMQTTk is a very lightweight MQTT GUI client that looks retarded, but it does the job fast in a native\nfashion, without bloated and sluggish browser, java and javascript based rubbish that may look good, but\nare a pain to use especially in a professional environment.\n\nIt intends to replicate most features and functionality of MQTT.fx which is no longer free \nand the free version is no longer maintained. Since upgrading my computer, it was crashing \nevery minute, practically becoming useless. I always found it more useful than other \nMQTT GUI clients, which mostly update the values of topics as they come in, in my work, \nbeing able to track message exchange over time is as important as the content of \nthe messages themselves.\n\nSince I couldn't find a similar tool out there, I decided to make my own and share it with\nwhoever is interested. The project is written in Tk/ttk. I don't have time to learn some\nfancy-pancy GUI environment, it was quick and easy to knock out, and it should run on anything\nincluding the kitchen sink without too much pain.\n\n# Features\n## Connection profile management\nMQTTk allows the user to create and manage multiple connection profiles. For each connection profile, the broker\nconfiguration, the topics that have been subscribed to along with the associated colour, the topics in which messages \nhave been published and the message templates are saved. From these connection profiles, the broker connection \nconfiguration and the associated subscribe/publish history and message templates can be exported and imported \nseparately.\n\nOnce a connection has been configured, it can be connected to. Upon successful connection, the different interfaces for\nsubscription, publish and topic inspection become available.\n\nThe configuration files and logs are saved in the following locations:\n\n**macOS**: `~/Library/ApplicationSupport/MQTTk/`\n\n**Windows**: `%LOCALAPPDATA/MQTTk/`\n\n**Linux:** `~/.config/MQTTk/`\n\n\nConfiguration interface\n\n![Configuration interface](/assets/configuration.png)\n\nExport subscribe/publish history interface\n\n![Configuration interface](/assets/export.png)\n\n## Subscribe interface\nOn the subscribe tab, topics can be subscribed to. The $SYS topics and both the `#` and `+` wildcards are supported.\nOnce subscribed, the messages arriving in the topic(s) are listed in the listbox with the time of their arrival, topic,\nQOS, retained state and their ID in MQTTk. Topics and topic patterns subscribed to get a colour assigned to them, \nmessages arriving in these topis appear in the colour associated to the topic pattern. The colour can be changed on the\nfly and the new colour gets applied to all previous messages that arrived in these topics. Activating the `Autoscroll`\ncheckbox will cause the last message that arrived to be selected automatically and its details to be shown immediately\nin the message details section of the interface. Topic subscriptions can be temporarily muted using the `Mute` checkbox\non the subscription widget.\n\nOnce messages arrived, they can be selected in the listbox. Selected message details appear in the lower right part of\nthe interface. Here, different decoders are available to quickly decode or format the most common message types in\nthe message content textbox. So far, a JSON pretty formatter and a hex decoder are available, but decoders can be\nadded in the future on demand.\n\nThe `Attempt to decompress` option will try to decompress the payload using the most common compression algorithms\n(currently zlib and bz2 are supported, but these can be extended in the future). \n\nMessages that have arrived, can be exported in .CSV and .JSON formats. Message payload is exported as unicode text if \npossible, otherwise it is encoded in base64.\n\nSubscribe interface\n\n![Subscribe interface](/assets/subscribe.png)\n\n## Publish interface\nOn this interface, messages can be published. Once a topic is input, a message payload can be inserted, the QoS of the\nmessage selected and if needed be, the message can be made retained. Once a message is published, the topic will be\nsaved in the topic drop-down for future use. If a message or a payload is needed often, the message can be saved as a\ntemplate with a custom name, and published by just a click of the publish button on the message template widget.\nSelecting the message template will fill the relevant fields on the interface so the content can be modified and/or\nsaved as a new template.\n\nPublish interface\n\n![Publish interface](/assets/publish.png)\n\n## Topic browser\nThe topic browser allows to subscribe to a topic pattern and organises all incoming messages in a tree format, split\nby the `/` in message the topic. The most important message information (time of arrival of the last message, QoS, \nretained status, payload) are also shown. The message payload is decoded into a string if possible, otherwise it remains\nthe bytestring as it arrived. Right clicking on the selected message allows the topic and the payload to  be copied on \nthe clipboard. The `Ignore retained messages` option will ignore all retained messages, only freshly arrived messages \nwill make it into the topic browser.\n\nTopic browser\n\n![Topic browser](/assets/topic_browser.png)\n\n## Broker stats\nThis allows the statistics of the broker connected to, to be viewed in a similar fashion as the topic browser. \n\nBroker stats\n\n![Broker stats](/assets/broker_stats.png)\n\n## Log tab\nThe log may contain useful information in case something isn't working with the app as expected. The log is also output\nin a file, which is in the same directory as the configuration files. The log tab text will change to `* Log *` when\nerror or exception level messages get inserted to it, to indicate an issue. Upon clicking on the tab, the text returns\nto normal.\n\n## Import MQTT.fx configuration\nIf MQTT.fx was already installed on the computer, the \"MQTT.fx config\" option in the \"Import\" will try to find and\nimport it. If MQTTk cannot find it, the file can also be browsed for. This feature has only been tested with my MQTT.fx\nconfigs and although it worked, there may be config files out there that may fail to import.\n\n# Planned features\n\n## V1.4\n- Option to turn on notifications when new messages arrive\n- Notifications only for specific subscriptions\n\n## V1.5\n- option to encrypt the configuration file and decrypt it at application launch or use an alternative unencrypted config\nin the current session\n- option to encrypt exported broker configuration\n\n# Software dependencies\nThe project is written in pure python, powered by the below projects: \n- [python3.7+](https://www.python.org/)\n- [Tkinter/ttk](https://docs.python.org/3/library/tkinter.html) \n- [Eclipse paho-mqtt python client](https://github.com/eclipse/paho.mqtt.python)\n- [xmltodict](https://github.com/martinblech/xmltodict) \n\nThat't it, nothing fancy. Give the above projects a big thumbs up!\n\n# Installation\n## macOS - app\n:warning: The built appimage is experimental! Use it at your own risk, it may cause kernel panics and app crashes.\n\n:warning: The app image is only for M1 (ARM64, Apple Silicon) macs! With my current knowledge I can't produce a working\nintel or universal2 app image.\n\nDownload the latest release from [the GitHub releases page](https://github.com/matesh/mqttk/releases) and install it\nlike any other apps. \n\nThe system may complain about not being able to verify the developer. You can find more information\nabout me [here](https://mateszabo.com), so you can verify the developer yourself instead. To run the app, follow\nthe instructions provided by Apple [here](https://support.apple.com/en-ie/guide/mac-help/mh40616/mac).\n\n## On macOS from source\n### macOS Dependencies\nYou must have Python 3.7+ and pip installed. On some versions of macOS or the python package, Tk/ttk is not included, \nin which case the python-tk package is also needed. \n\nThe easiest way to install these, is to use [homebrew](https://brew.sh/). \nThe commands below may be different on your system. Open the terminal and issue these commands:\n\n```shell\n$ brew install python python-tk\n```\n\n:warning: When installing/running the app, use the system interpreter, or the interpreter available via homebrew.\nDuring my testing, Conda or other interpreters occasionally caused my system to crash entirely (kernel panic) and\nwhen using mission control to switch between apps, MQTTk crashed regularly.\nThe cause is outside the code of this software. This crash happens under certain circumstances when switching\nto the app via mission control or the dock, there's nothing I can do about it, unfortunately. Therefore,\nuse other interpreters at your own risk!\n\n### macOS - acquiring and installing the package from source\nDownload the latest release from the [GitHub repository](https://github.com/matesh/mqttk/releases)\nand install it using pip.\n```shell\n$ pip3 install mqttk-x.y.tar.gz\n```\n\n### macOS - installing via pip\nIssue the following command:\n```shell\n$ pip3 install mqttk\n```\n\n### macOS - running MQTTk\nTo run the software, just issue the mqttk command from the terminal. \n```shell\n$ mqttk\n```\n\nIf the app fails to start, or crashes randomly, try re-launching it using the\n```shell\n$ mqttk-console\n```\ncommand. This will leave a console window, which might provide additional debug information when something goes tits up.\n\n## Windows - as an executable\nDownload the latest release from the [GitHub repository](https://github.com/matesh/mqttk/releases)\nand install/run like any other apps.\n\n## Windows - from source\n### Windows - dependencies\nDownload python3 from the [official website](https://www.python.org/downloads/) and install it like any other apps.\n\n### Windows - acquiring and installing the package from source\nDownload the latest release from the [GitHub repository](https://github.com/matesh/mqttk/releases)\nand then install it using pip and the command line:\n\n```shell\n\u003e pip3 install mqttk-x.y.tar.gz\n```\n\n### Windows - installing it via pip\nIssue the following command in the command line:\n```shell\n\u003e pip3 install mqttk\n```\n\n### Windows - running MQTTk\nIn the command line issue the command:\n```shell\n\u003e mqttk\n```\n\nIf the app fails to start, or crashes randomly, try re-launching it using the\n```shell\n$ mqttk-console\n```\ncommand. This will leave a console window, which might provide additional debug information when something goes tits up.\n\n\n## On Linux from source\n### Linux - dependencies\nYou need to install python3, python3-pip and in some cases the python3-tk packages. The process\nwill be different depending on your distribution, refer to your distributions package manager or\ncommunity. As an example, on ubuntu you'd need to install the below packages using apt. On\nother distros, python3 might be default, in which case the \"3\" suffix won't be needed on the packages.\n\n```shell\n$ sudo apt install python3 python3-pip python3-tk\n```\n\n### Linux - acquiring and installing the package from source\nDownload the latest release from the [GitHub repository](https://github.com/matesh/mqttk/releases)\nand install it using pip.\n```shell\n$ pip3 install mqttk-x.y.tar.gz\n```\n\n### Linux - installing it via pip\nJust issue the command\n```shell\n$ pip3 install mqttk\n```\n\n### Linux - Running MQTTk\n\nFrom the command line issue the command\n```shell\n$ mqttk\n```\n\nIf the app fails to start, or crashes randomly, try re-launching it using the\n```shell\n$ mqttk-console\n```\ncommand. This will leave a console window, which might provide additional debug information when something goes tits up.\n\n# Building the app from source\n## pypi package\nissue the following command in the project root to build the sdist package.\n```shell\n$ python3 setup.py sdist\n```\nThe built package will appear in the dist/ directory.\n\n## macOS appimage\n:warning: This is highly experimental and needs refiniement!\n\n:warning: When building the app, use the system interpreter, or the interpreter available via homebrew.\n\nConda or other interpreters can cause your system to crash entirely (kernel panic) which issue is\noutside of the code of this software. This crash happens under certain circumstances when switching\nto the app via mission control or the dock. Use other interpreters at your own risk!\n\n### Dependencies\nYou need to have xcode installed. Use the app store to do that if you don't have it yet.\nYou will also need the xcode command line tools to be installed. You can do that from the terminal:\n\n```shell\n$ xcode-select —install\n```\n\nJust like when running the app, you need python3, pip and python3-tk. Install these as explained above.\n\nIn addition, you need the pyinstaller package. Install it using pip:\n\n```shell\n$ pip install pyinstaller\n```\n\n### Building the macOS app\nI was not able to build a universal app image for MACs that ran native on both Intel and M1 architectures,\nso I only built the ARM64 package.\n\nNavigate to the project root and issue\n\n```shell\n$  pyinstaller mqttk.spec\n```\n\n## Windows executable\nJust like when running the app, you need python3, pip and python3-tk. Install these as explained above.\nIn addition, you need the pyinstaller package, use the command line:\n\n```shell\n\u003e pip3 install pyinstaller\n```\n\nNavigate to the project root and issue the following command:\n```shell\n\u003e pyinstaller mqttk.spec\n```\n\n# How to contribute\n## Reporting bugs\nUse the GitHub [issue reporting page](https://github.com/matesh/mqttk/issues) of the project to help me squish bugs.\n\n## macOS universal2 appimage\nMy time and knowledge is limited to figure how to properly build a universal2 app image (intel + ARM). I managed to\nbuild an M1 only version, with which I'm not entirely happy, it takes a long time to start up for some reason. Furthermore,\nI had issues with the app when not running on the system interpreter on my M1 mac, causing regular crashes and\nkernel panics when switching to and from MQTTk. I would appreciate help with building the app and testing the \nresulting image out on other machines. \n\n## Linux binary package or app\nThere are more ways to distribute apps on various linux distros than stars on the sky. I'd appreciate recommendations\non what format to use and maybe a helping hand figuring it out and getting things set up.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatesh%2Fmqttk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatesh%2Fmqttk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatesh%2Fmqttk/lists"}