{"id":16391821,"url":"https://github.com/williamfzc/toolcover","last_synced_at":"2026-05-06T15:40:33.328Z","repository":{"id":113371105,"uuid":"125655262","full_name":"williamfzc/ToolCover","owner":"williamfzc","description":"easily run your terminal app in html","archived":false,"fork":false,"pushed_at":"2018-03-31T16:05:34.000Z","size":113,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-03T21:16:21.968Z","etag":null,"topics":["bootstrap-ui","flask","python","terminal","ui"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/williamfzc.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":"2018-03-17T17:54:54.000Z","updated_at":"2023-01-11T15:07:56.000Z","dependencies_parsed_at":"2023-06-15T11:15:09.761Z","dependency_job_id":null,"html_url":"https://github.com/williamfzc/ToolCover","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamfzc%2FToolCover","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamfzc%2FToolCover/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamfzc%2FToolCover/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/williamfzc%2FToolCover/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/williamfzc","download_url":"https://codeload.github.com/williamfzc/ToolCover/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240245909,"owners_count":19771028,"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":["bootstrap-ui","flask","python","terminal","ui"],"created_at":"2024-10-11T04:47:27.416Z","updated_at":"2026-05-06T15:40:28.292Z","avatar_url":"https://github.com/williamfzc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ToolCover\n\n[![codebeat badge](https://codebeat.co/badges/03386646-bf13-40a4-a8a2-f81cdfef59a2)](https://codebeat.co/projects/github-com-williamfzc-toolcover-master)\n[![Maintainability](https://api.codeclimate.com/v1/badges/24dc28bf1389249b3a19/maintainability)](https://codeclimate.com/github/williamfzc/ToolCover/maintainability)\n\n- 以网页的形式，旨在用最简单的方式为所有命令行程序提供一个跨平台、美观的交互方案。\n- 基于flask + bootstrap，python3。\n- 目前只支持linux与mac系统。\n\n## 灵感\n\n对于python来说UI是个远古难题，官方的tkinter非常老气。前段时间尝试了各种第三方工具之后第一感觉都是，太麻烦了。通常情况下，这些UI框架的学习成本都不低，在编写工具之余还需要费心研究UI的制作很容易让开发者烦躁，在工作中深有体会。\n\n个人认为，未来的应用肯定是趋向web化的，web应用能够很好地适配到不同平台，一次开发多处使用，那么，为什么我们不直接用web作为交互手段呢？\n\n其实在这方面已经有flexx作为先驱，做的也很好，但开发过程远称不上简单，仍然需要对源码进行较大改动。\n\n那么，有没有一种完全无缝对接的UI解决方案呢？有的。\n\n## 效果\n\n先看一下效果。如果我们的源码是这样：\n\n![你的源码](https://upload-images.jianshu.io/upload_images/9838087-b34bea5985809c21.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)\n\n经过ToolCover的渲染，他将变成一个**可以交互**的web页面：\n\n![效果](https://upload-images.jianshu.io/upload_images/9838087-c6a75d7e724dcdcd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)\n\n你只需要在编程的时候正常使用标准输入输出，就可以渲染出合适的web页面，并且用它进行交互。\n\n当然，你也可以不按上面的实例来写，你只需要考虑在终端中输出与输入应该是什么样，ToolCover会自动完成这个过程，没有学习成本。\n\n\n## 使用方法\n\n把大象放进冰箱一共需要几步？\n\n1. 打开门\n1. 把大象塞进去\n1. 关上门\n\n所有事情都应该如此简单。你只需要：\n\n1. 把程序拷到`app/packages`里\n1. 在config.py配置入口\n1. 运行 `python manage.py`\n\n然后就可以愉快的访问本地5000端口进行交互了！\n\n\u003e 源码自带教程，`git clone`之后可以直接运行查阅。推荐直接参照它学习使用。\n位置`app/packages/test_app`\n\n## 使用场景\n\n- 使用场景多运行于服务器，由客户端访问实现远程控制。\n- 非常适用于为命令行工具提供UI界面。\n\n## 优势\n\n- 非常适用于局域网做展示或者为一系列命令行工具提供交互。\n- 经过简单配置就可以直接将命令行工具转变成有UI交互，非常方便。\n- 几乎不需要对源代码进行改动，甚至不需要接触源代码。\n- UI由bootstrap+jinja2实现，html形式展示，跨平台，甚至在手机等移动设备上也可以运行。\n\n## Bug与建议\n\n目前项目还在继续优化中，有任何建议欢迎指出。\n\n欢迎fork/star/issue/PR。\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamfzc%2Ftoolcover","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwilliamfzc%2Ftoolcover","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilliamfzc%2Ftoolcover/lists"}