{"id":3845303,"name":"github.com/supercom32/dosktop","ecosystem":"go","description":"Dosktop is a package which allow users to easily create rich text-based terminal\napplications and games. Dosktop differs from other terminal packages by\nproviding an extremely simple API that abstracts out all low-level terminal\noperations, while avoiding complicated event-driven TUI designs.\n\nIf your familiar with programming on classical computers and OS environments\nlike the Commodore 64 or MS-DOS, you will find that Dosktop behaves similar\nto these systems. Dosktop is a procedural package that gives users control\nover the terminal with simple BASIC-like commands. It maintains this\nsimplicity by managing much of it's functionality and resources internally.\nWhile users do not need to keep track of these resources themselves, there\nare still a few concepts they need to be familiar with.\n\nAliases are a way for a user to reference a resource in Dosktop without\nactually needing to manage and store it themselves. Things like creating\na text layer, a button, or a timer, all use aliases to identify what the\nuser creates and how they can reference that resource at a later time.\nFor example:\n\nOnce created, the user no longer needs to manage the resource. If they\nwish to manipulate it, they simply need to reference the Alias they want\nto access. For example:\n\nFurthermore, an alias is always unique and distinct for any given\nresource. That means, while it is not recommended, it is possible to give\ntwo different types of resources the same alias name. For example:\n\nNow we have a layer that has an alias called \"Foreground\" and a timer\nthat has an alias called \"Foreground\".\n\nOften when working with software, flexibility comes at the expense of\nsimplicity. Having methods with dozens of options and parameters makes\nfunctionality more flexible, but also much more difficult to manage and\nunderstand. That's why to keep things simple, Dosktop uses Attribute Entries\nfor configuring most customizable features. Attribute Entries are simply\nstructures that hold all kinds of information about how the user would like for\nsomething to operate. By simply generating an entry, configuring it, and\npassing it in as a parameter, functionality will automatically know how to\nbehave if one should want to do something outside the default. In addition,\nif you want a feature to behave differently under specific cases, you can\nconfigure multiple attribute entries and simply provide which one you need at\nany given time. For example:\n\nYou will note that not all style attributes need to be set. Any attributes\nwhich are not modified will be left at their default settings. In addition,\nif you wish to quickly create multiple attribute entries based off a single\none, you can simply do the following:\n\nAs you can see, cloning attribute entries is a speedy way to configure\nmultiple items with similar base settings.\n\nAlmost all functionality in Dosktop is designed to perform consistently.\nThat is, it will perform most tasks predictably without external runtime\nconditions changing its behaviour. As a result, when a problem occurs\nDosktop will usually prefer to throw a Panic rather than choose an alternative\nsolution or throw an error. This is because any problems encountered will\ngenerally be a developer issue and it should be addressed rather than covered\nup or hidden by default behaviour. For example:\n\nIn this case, the user is attempting to create a terminal session with\ninvalid dimensions. Rather than choose a sane default or return a recoverable\nerror, Dosktop will panic since clearly the developer made an error and should\ncorrect it. For functionality that could vary depending on runtime conditions,\nerrors will be returned as expected.\n\nWhen updating the screen with with rapid changes or changes that may take a\nlong time, it is desirable to wait until all drawing is completed before\nperforming a refresh. This allows you to eliminate flickering, screen\ntearing, or other artifacts that may appear when display data is being\nupdated at the same time as a screen refresh. In Dosktop, all changes to\nthe terminal remain in memory until the user calls 'UpdateDisplay' to refresh\nthe screen. This allows the user to make as many changes as they want before\nwriting their changes to screen in a single pass.","homepage":"https://github.com/supercom32/dosktop","licenses":"MIT","normalized_licenses":["MIT"],"repository_url":"https://github.com/supercom32/dosktop","keywords_array":[],"namespace":"github.com/supercom32","versions_count":1,"first_release_published_at":"2021-10-04T05:14:50.000Z","latest_release_published_at":"2021-10-04T05:14:50.000Z","latest_release_number":"v0.0.0-20211004051450-622b23354be7","last_synced_at":"2026-05-07T22:17:16.925Z","created_at":"2022-04-11T20:51:06.782Z","updated_at":"2026-05-07T22:17:16.925Z","registry_url":"https://pkg.go.dev/github.com/supercom32/dosktop","install_command":"go get github.com/supercom32/dosktop","documentation_url":"https://pkg.go.dev/github.com/supercom32/dosktop#section-documentation","metadata":{},"repo_metadata":{"uuid":"325868508","full_name":"supercom32/dosktop","owner":"supercom32","description":"Create rich text-based terminal applications and games with BASIC-like syntax in Go! Abstract out low-level terminal operations and spend more time writing your own code!","archived":false,"fork":false,"pushed_at":"2021-10-04T05:14:54.000Z","size":9548,"stargazers_count":8,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-03-02T09:09:54.954Z","etag":null,"topics":["ansi","command-line","command-line-interface","hacktoberfest","menus","mouse-support","tui","tui-controls"],"latest_commit_sha":null,"homepage":"https://github.com/supercom32/dosktop","language":"Go","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,"logo_url":null,"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}},"created_at":"2020-12-31T20:24:54.000Z","updated_at":"2023-02-20T12:37:54.000Z","dependencies_parsed_at":"2022-09-02T20:12:10.244Z","dependency_job_id":null,"html_url":"https://github.com/supercom32/dosktop","commit_stats":null,"repository_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supercom32%2Fdosktop","tags_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supercom32%2Fdosktop/tags","manifests_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/supercom32%2Fdosktop/manifests","owner_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/supercom32","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":108921946,"host_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"http://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names"}},"repo_metadata_updated_at":"2023-03-21T19:09:12.289Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":9.345852080216646,"dependent_packages_count":6.999148183520997,"stargazers_count":5.583830974471319,"forks_count":8.968987819809952,"average":7.724454764504729},"purl":"pkg:golang/github.com/supercom32/dosktop","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/supercom32/dosktop","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/supercom32/dosktop","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/supercom32/dosktop/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":{"last_synced_at":"2023-05-18T09:18:27.775Z","issues_count":2,"pull_requests_count":16,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":460.3125,"issues_closed_count":0,"pull_requests_closed_count":16,"pull_request_authors_count":1,"issue_authors_count":1,"avg_comments_per_issue":3.0,"avg_comments_per_pull_request":0.25,"merged_pull_requests_count":16,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsupercom32%2Fdosktop/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsupercom32%2Fdosktop/version_numbers","latest_version_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsupercom32%2Fdosktop/latest_version","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsupercom32%2Fdosktop/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsupercom32%2Fdosktop/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsupercom32%2Fdosktop/codemeta","maintainers":[]}