CINXE.COM

GitHub - Mk555/awesome-tuis: List of projects that provide terminal user interfaces

<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-74231a1f3bbb.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-8a995f0bacd4.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-f37fb7684b1f.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-9ac301c3ebe5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-cd826e8636dc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f91b0f603451.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-83beb16e0ecf.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6e122dab64fc.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-18119e682df0.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-225433424a87.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-cba26849680f.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-03f97e65e478.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-ea73c9cb5377.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-4fce88777fa8.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-0210be90f4d3.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["copilot_immersive_issue_preview","copilot_new_references_ui","copilot_chat_repo_custom_instructions_preview","copilot_no_floating_button","copilot_topics_as_references","copilot_read_shared_conversation","copilot_duplicate_thread","copilot_buffered_streaming","dotcom_chat_client_side_skills","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","github_models_gateway_parse_params","github_models_o3_mini_streaming","insert_before_patch","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","issues_advanced_search_nested_ownership_filters","issues_dashboard_no_redirects","marketing_pages_search_explore_provider","primer_react_css_modules_ga","react_data_router_pull_requests","react_override_default_key","remove_child_patch","sample_network_conn_type","swp_enterprise_contact_form","site_proxima_australia_update","viewscreen_sandbox","issues_react_create_milestone","issues_react_cache_fix_workaround","lifecycle_label_name_updates","copilot_task_oriented_assistive_prompts","issue_types_prevent_private_type_creation","refresh_image_video_src","react_router_dispose_on_disconnect","codespaces_prebuild_region_target_update","turbo_app_id_restore","copilot_code_review_sign_up_closed"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-f8247267f0ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-9da652f58479.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-3abb8f-46b9f4874d95.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-952d624642a1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-f04cb2a9fc8c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-0dbb79f97f8f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-62d275b7ddd9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-78748950cb0c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-8e9f78-a90ac05d2469.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-a1760ffda83d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-ceef33f593fa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-c44a69-efa32db3a345.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-394f8eb34f19.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-0fd720babc23.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-2906d7-2a07a295af40.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-be8cb88f481b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-a4a1922eb55f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-a03ee12d659a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-b6294cf703b7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-e3180fe3bcb3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-947061-e7a6c4a19f98.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-62f3e9c52ece.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-768abe60b1f8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-3e000c5d31a9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-87a4ae-eda74b9de9cd.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-e429cff6ceb1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-c92ce7c6a557.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-01e85cd1be94.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_virtualized-list_es_index_js-node_modules_github_template-parts_lib_index_js-94dc7a2157c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-70450e-4b93df70b903.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_ref-selector_ts-52913063a0b9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/codespaces-b419a25ee02f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-3eebbd-0763620ad7bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_decorators_js-node_modules_delegated-events_di-e161aa-9d41fb1b6c9e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_github_remote--3c9c82-b71ef90fbdc7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repositories-10217e4e5a53.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_catalyst_lib_inde-dbbea9-26cce2010167.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/code-menu-d6d3c94ee97e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-602097a4b0db.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-56004cde4e29.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-f1bca44e0926.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-cf2f2ab8dab4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-62da9f-2df2f32ec596.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-9a233856b02c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-55fea94174bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-be96865e7e52.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8748b7127eb5f3cfb5ac.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8748b7127eb5f3cfb5ac.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <title>GitHub - Mk555/awesome-tuis: List of projects that provide terminal user interfaces</title> <meta name="route-pattern" content="/:user_id/:repository" data-turbo-transient> <meta name="route-controller" content="files" data-turbo-transient> <meta name="route-action" content="disambiguate" data-turbo-transient> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> <meta name="request-id" content="DD70:1DA50E:1391EB:19D745:67EDBA3E" data-pjax-transient="true"/><meta name="html-safe-nonce" content="0c9c9dbe8e6396344d04235373b59f0ce422ff1d28bcf814d86675b6adeb7da7" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJERDcwOjFEQTUwRToxMzkxRUI6MTlENzQ1OjY3RURCQTNFIiwidmlzaXRvcl9pZCI6IjM5MDE5NTY4NTY0ODkwMzIyNTQiLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="72077bef931b7b09bb479442cb7e3a90339f882cfc2e9fec31fda0036a004494" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:787837940" data-turbo-transient> <meta name="github-keyboard-shortcuts" content="repository,copilot" data-turbo-transient="true" /> <meta name="selected-link" value="repo_source" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;" data-turbo-transient="true" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="List of projects that provide terminal user interfaces - Mk555/awesome-tuis"> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/Mk555/awesome-tuis" /> <meta name="twitter:image" content="https://opengraph.githubassets.com/5c186fbf5429b9b55ca92480c0cc85a1d09d5e70535bef194aef5dd814b7b84a/Mk555/awesome-tuis" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="GitHub - Mk555/awesome-tuis: List of projects that provide terminal user interfaces" /><meta name="twitter:description" content="List of projects that provide terminal user interfaces - Mk555/awesome-tuis" /> <meta property="og:image" content="https://opengraph.githubassets.com/5c186fbf5429b9b55ca92480c0cc85a1d09d5e70535bef194aef5dd814b7b84a/Mk555/awesome-tuis" /><meta property="og:image:alt" content="List of projects that provide terminal user interfaces - Mk555/awesome-tuis" /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="GitHub - Mk555/awesome-tuis: List of projects that provide terminal user interfaces" /><meta property="og:url" content="https://github.com/Mk555/awesome-tuis" /><meta property="og:description" content="List of projects that provide terminal user interfaces - Mk555/awesome-tuis" /> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="c65893d39daaef16d92b9f4cc4b07246a69887b2b5063e30afe892b5f3035eaa" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="e26f9f0ba624ee85cc7ac057d8faa8618a4f25a85eab052c33d018ac0f6b1a46" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="3880f621a6450d86227686dafe66b79bb840ae1d588507e3f013719db633d34a" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="e72c3b0d1bf65084fdb02e5617345ac46f328a7a1c52f4ba57ac2541e522f6ab" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta data-hydrostats="publish"> <meta name="go-import" content="github.com/Mk555/awesome-tuis git https://github.com/Mk555/awesome-tuis.git"> <meta name="octolytics-dimension-user_id" content="12348623" /><meta name="octolytics-dimension-user_login" content="Mk555" /><meta name="octolytics-dimension-repository_id" content="787837940" /><meta name="octolytics-dimension-repository_nwo" content="Mk555/awesome-tuis" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="true" /><meta name="octolytics-dimension-repository_parent_id" content="178716643" /><meta name="octolytics-dimension-repository_parent_nwo" content="rothgar/awesome-tuis" /><meta name="octolytics-dimension-repository_network_root_id" content="178716643" /><meta name="octolytics-dimension-repository_network_root_nwo" content="rothgar/awesome-tuis" /> <link rel="canonical" href="https://github.com/Mk555/awesome-tuis" data-turbo-transient> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <meta name="release" content="4ab0d407c68e487d2b8246b71e1e165813afe89b"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-e2a7ccb6ae86.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-e3ed32b00ef9.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8748b7127eb5f3cfb5ac.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-4898d1bf4b51.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-45d6658f8b6b.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Logomark;ref_loc:Header&quot;}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2FMk555%2Fawesome-tuis" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/Mk555/awesome-tuis&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9ccba5fd9f125f40783aa75a25bd2b78a1606a7c46be6984ca348e14ada11213" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to Sign in&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_copilot&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_copilot_link_product_navbar&quot;}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_advanced_security_link_product_navbar&quot;}" href="https://github.com/security/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Advanced Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;actions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;actions_link_product_navbar&quot;}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;codespaces&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;codespaces_link_product_navbar&quot;}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;issues&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;issues_link_product_navbar&quot;}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_review&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_review_link_product_navbar&quot;}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;discussions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;discussions_link_product_navbar&quot;}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_search&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_search_link_product_navbar&quot;}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;all_features&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;all_features_link_product_navbar&quot;}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;documentation&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;documentation_link_product_navbar&quot;}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_skills&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_skills_link_product_navbar&quot;}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;blog&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;blog_link_product_navbar&quot;}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprises&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;startups&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}" href="https://github.com/enterprise/startups"> Startups </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;nonprofits&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}" href="/solutions/industry/nonprofits"> Nonprofits </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devsecops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ci_cd&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ci_cd_link_solutions_navbar&quot;}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;healthcare&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;financial_services&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;manufacturing&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;government&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_industries&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ai&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;software_development&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_link_resources_navbar&quot;}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;learning_pathways&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;learning_pathways_link_resources_navbar&quot;}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;events_amp_webinars&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;events_amp_webinars_link_resources_navbar&quot;}" href="https://resources.github.com"> Events &amp; Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ebooks_amp_whitepapers&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ebooks_amp_whitepapers_link_resources_navbar&quot;}" href="https://github.com/resources/whitepapers"> Ebooks &amp; Whitepapers </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;customer_stories&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;partners&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;executive_insights&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;executive_insights_link_resources_navbar&quot;}" href="https://github.com/solutions/executive-insights"> Executive Insights </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_sponsors&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;the_readme_project&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;the_readme_project_link_open_source_navbar&quot;}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;topics&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;trending&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;collections&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}" href="https://github.com/security/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}" href="/features/copilot/copilot-business"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">Copilot for business</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;premium_support&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;pricing&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;pricing_link_global_navbar&quot;}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="repo:Mk555/awesome-tuis" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="0TNcm8dvxQX_ylu35_-f3W7YWOqp59f4VvcXNbtnEu0CkVhU6h9WfCEhAWFNfLt2PpI2P5-M4TWfKHRG_1j2pw" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="Mk555/awesome-tuis" data-current-org="" data-current-owner="Mk555" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;searchbar&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-32824387-ec0b-4782-a034-2460e5b48e5e" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-32824387-ec0b-4782-a034-2460e5b48e5e" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2">Search syntax tips</a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="cbHqT4K129ik6O1+86IrnbVNXTlUs8wNI2A4qSyEO0YQRbM6Mji++iJItNA+E9jNEzFCydN3ul3A/Win1i2WEw==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="fA74n+ErACpcjPvwxnCCn2cq7NoRI1KKiXiBIMISai9B8z+2SOcdpmqlX2JDLK/H42nhFxhJYXD076t3/o6bjQ==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required only-validate-on-blur="false"> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="99spbSEqgPgq0aAa/th+ryaxHUa3B4ZPvb+SDPGIr7DVUUSy9fOpRSn6E6lOihxq6ccBQfFfHRXcBqvXq3j1Yg==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2FMk555%2Fawesome-tuis" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/Mk555/awesome-tuis&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9ccba5fd9f125f40783aa75a25bd2b78a1606a7c46be6984ca348e14ada11213" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;source=header-repo&amp;source_repo=Mk555%2Fawesome-tuis" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/Mk555/awesome-tuis&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9ccba5fd9f125f40783aa75a25bd2b78a1606a7c46be6984ca348e14ada11213" data-analytics-event="{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;;ref_cta:Sign up;ref_loc:header logged out&quot;}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-6475ad4b-b384-4c19-9e30-34d2756e7e9e" aria-labelledby="tooltip-0282c869-5d93-42c6-ad3e-37943e76ea97" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-0282c869-5d93-42c6-ad3e-37943e76ea97" for="icon-button-6475ad4b-b384-4c19-9e30-34d2756e7e9e" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled data-project-hovercards-enabled > <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class=""> <main id="js-repo-pjax-container" > <div id="repository-container-header" class="pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace> <div class="d-flex flex-nowrap flex-justify-end mb-3 px-3 px-lg-5" style="gap: 1rem;"> <div class="flex-auto min-width-0 width-fit"> <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked color-fg-muted mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg> <span class="author flex-self-stretch" itemprop="author"> <a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/Mk555/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/Mk555"> Mk555 </a> </span> <span class="mx-1 flex-self-stretch color-fg-muted">/</span> <strong itemprop="name" class="mr-2 flex-self-stretch"> <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/Mk555/awesome-tuis">awesome-tuis</a> </strong> <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span> </div> <span class="text-small lh-condensed-ultra no-wrap mt-1" data-repository-hovercards-enabled> forked from <a data-hovercard-type="repository" data-hovercard-url="/rothgar/awesome-tuis/hovercard" class="Link--inTextBlock" href="/rothgar/awesome-tuis">rothgar/awesome-tuis</a> </span> </div> <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;"> <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;"> <li> <a href="/login?return_to=%2FMk555%2Fawesome-tuis" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/Mk555/awesome-tuis&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cba40e944972a28d3f961cf68d5c145ca9e500aae1da9ac3049ebf37e59d6788" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-ea48f12a-165c-4a06-9e07-e9120e026033" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </li> <li> <a icon="repo-forked" id="fork-button" href="/login?return_to=%2FMk555%2Fawesome-tuis" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:787837940,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/Mk555/awesome-tuis&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2a7fb87bbbf4ca4174fbbc5ef3417eda5a839cf876980fe14548d27c2aced96f" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg>Fork <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="0" data-view-component="true" class="Counter">0</span> </a> </li> <li> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FMk555%2Fawesome-tuis" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:787837940,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/Mk555/awesome-tuis&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c3820d951c75aefe5f3774ada744086795042aa48350a57f4ec5e348aad24909" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="0 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="0" data-view-component="true" class="Counter js-social-count">0</span> </a></div> </li> </ul> </div> </div> <div id="responsive-meta-container" data-turbo-replace> <div class="d-block d-md-none mb-2 px-3 px-md-4 px-lg-5"> <p class="f4 mb-3 "> List of projects that provide terminal user interfaces </p> <div class="mb-3"> <a class="Link--secondary no-underline mr-3" href="/Mk555/awesome-tuis/stargazers"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star mr-1"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg> <span class="text-bold">0</span> stars </a> <a class="Link--secondary no-underline mr-3" href="/Mk555/awesome-tuis/forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-1"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg> <span class="text-bold">333</span> forks </a> <a class="Link--secondary no-underline mr-3 d-inline-block" href="/Mk555/awesome-tuis/branches"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-branch mr-1"> <path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path> </svg> <span>Branches</span> </a> <a class="Link--secondary no-underline d-inline-block" href="/Mk555/awesome-tuis/tags"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag mr-1"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span>Tags</span> </a> <a class="Link--secondary no-underline d-inline-block" href="/Mk555/awesome-tuis/activity"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pulse mr-1"> <path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z"></path> </svg> <span>Activity</span> </a> </div> <div class="d-flex flex-wrap gap-2"> <div class="flex-1"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2FMk555%2Fawesome-tuis" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:787837940,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/Mk555/awesome-tuis&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c3820d951c75aefe5f3774ada744086795042aa48350a57f4ec5e348aad24909" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn btn-block"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> </a></div> </div> <div class="flex-1"> <a href="/login?return_to=%2FMk555%2Fawesome-tuis" rel="nofollow" id="files-overview-watch-button" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/Mk555/awesome-tuis&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cba40e944972a28d3f961cf68d5c145ca9e500aae1da9ac3049ebf37e59d6788" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn btn-block"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-57cfe6d4-892e-4fa2-b0b3-3d70adeeadac" for="files-overview-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </div> <span> </span> </div> </div> </div> <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5"> <ul data-view-component="true" class="UnderlineNav-body list-style-none"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab" href="/Mk555/awesome-tuis" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /Mk555/awesome-tuis" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> <span data-content="Code">Code</span> <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab" href="/Mk555/awesome-tuis/pulls" data-tab-item="i1pull-requests-tab" data-selected-links="repo_pulls checks /Mk555/awesome-tuis/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> <span data-content="Pull requests">Pull requests</span> <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="actions-tab" href="/Mk555/awesome-tuis/actions" data-tab-item="i2actions-tab" data-selected-links="repo_actions /Mk555/awesome-tuis/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> <span data-content="Actions">Actions</span> <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="projects-tab" href="/Mk555/awesome-tuis/projects" data-tab-item="i3projects-tab" data-selected-links="repo_projects new_repo_project repo_project /Mk555/awesome-tuis/projects" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g b" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Projects&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table UnderlineNav-octicon d-none d-sm-inline"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path> </svg> <span data-content="Projects">Projects</span> <span id="projects-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="security-tab" href="/Mk555/awesome-tuis/security" data-tab-item="i4security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /Mk555/awesome-tuis/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span data-content="Security">Security</span> <include-fragment src="/Mk555/awesome-tuis/security/overall-count" accept="text/fragment+html"></include-fragment> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="insights-tab" href="/Mk555/awesome-tuis/pulse" data-tab-item="i5insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /Mk555/awesome-tuis/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> <span data-content="Insights">Insights</span> <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> </ul> <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <action-menu data-select-variant="none" data-view-component="true"> <focus-group direction="vertical" mnemonics retain> <button id="action-menu-f59b444d-6034-415c-833d-e767414cd645-button" popovertarget="action-menu-f59b444d-6034-415c-833d-e767414cd645-overlay" aria-controls="action-menu-f59b444d-6034-415c-833d-e767414cd645-list" aria-haspopup="true" aria-labelledby="tooltip-c23852dc-a9c9-4fcb-8a89-1021d8f567e2" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual"> <path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path> </svg> </button><tool-tip id="tooltip-c23852dc-a9c9-4fcb-8a89-1021d8f567e2" for="action-menu-f59b444d-6034-415c-833d-e767414cd645-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip> <anchored-position data-target="action-menu.overlay" id="action-menu-f59b444d-6034-415c-833d-e767414cd645-overlay" anchor="action-menu-f59b444d-6034-415c-833d-e767414cd645-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true"> <div data-view-component="true" class="Overlay Overlay--size-auto"> <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list> <div data-view-component="true"> <ul aria-labelledby="action-menu-f59b444d-6034-415c-833d-e767414cd645-button" id="action-menu-f59b444d-6034-415c-833d-e767414cd645-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap"> <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-a9d53650-8dfa-41a3-9cb8-b46d7f31d3e9" href="/Mk555/awesome-tuis" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Code </span> </a> </li> <li hidden="hidden" data-menu-item="i1pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-c529f289-e1ed-4b1e-9c1a-dbcc47e933c8" href="/Mk555/awesome-tuis/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Pull requests </span> </a> </li> <li hidden="hidden" data-menu-item="i2actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-eceadc70-48f1-4227-9b85-b5c335680a63" href="/Mk555/awesome-tuis/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Actions </span> </a> </li> <li hidden="hidden" data-menu-item="i3projects-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-0d51016a-172c-402c-9bb8-0a33f680b90f" href="/Mk555/awesome-tuis/projects" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-table"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25ZM6.5 6.5v8h7.75a.25.25 0 0 0 .25-.25V6.5Zm8-1.5V1.75a.25.25 0 0 0-.25-.25H6.5V5Zm-13 1.5v7.75c0 .138.112.25.25.25H5v-8ZM5 5V1.5H1.75a.25.25 0 0 0-.25.25V5Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Projects </span> </a> </li> <li hidden="hidden" data-menu-item="i4security-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-b9acb917-358d-42f5-8d54-75e1097da86d" href="/Mk555/awesome-tuis/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Security </span> </a> </li> <li hidden="hidden" data-menu-item="i5insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-a4349dd7-3ff9-4cee-b446-e3c6c7276b09" href="/Mk555/awesome-tuis/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Insights </span> </a> </li> </ul> </div></action-list> </div> </div></anchored-position> </focus-group> </action-menu></div> </nav> </div> <turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class=""> <div id="repo-content-pjax-container" class="repository-content " > <h1 class='sr-only'>Mk555/awesome-tuis</h1> <div class="clearfix container-xl px-md-4 px-lg-5 px-3"> <div> <div style="max-width: 100%" data-view-component="true" class="Layout Layout--flowRow-until-md react-repos-overview-margin Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end"> <div data-view-component="true" class="Layout-main"> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_es_mjs-dd1d3ea6a436.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryObserver_js-node_modules_tanstack_-defd52-843b41414e0e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_aria-live_aria-live_ts-ui_packages_history_history_ts-ui_packages_promise-with-re-01dc80-b13b6c1d97b0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-34d034ee6c50.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-7496afc3784d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_commit-attribution_index_ts-ui_packages_commit-checks-status_index_ts-ui_packages-762eaa-4cd444e23e10.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_code-view-shared_hooks_use-canonical-object_ts-ui_packages_code-view-shared_hooks-c2dbff-087c516e084d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repos-overview-0952519b47e6.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.8748b7127eb5f3cfb5ac.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repos-overview.0ee7cac3ab511a65d9f9.module.css" /> <react-partial partial-name="repos-overview" data-ssr="true" data-attempted-ssr="true" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"initialPayload":{"allShortcutsEnabled":false,"path":"/","repo":{"id":787837940,"defaultBranch":"master","name":"awesome-tuis","ownerLogin":"Mk555","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2024-04-17T09:24:01.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/12348623?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"master","listCacheKey":"v0:1713346050.465803","canEdit":false,"refType":"branch","currentOid":"e278385fcaa3dc7d45cfd3432e1ce07f71bb2e49"},"tree":{"items":[{"name":".github/workflows","path":".github/workflows","contentType":"directory","hasSimplifiedPath":true},{"name":"README.md","path":"README.md","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":null,"totalCount":2,"showBranchInfobar":true},"fileTree":null,"fileTreeProcessingTime":null,"foldersToFetch":[],"treeExpanded":false,"symbolsExpanded":false,"isOverview":true,"overview":{"banners":{"shouldRecommendReadme":false,"isPersonalRepo":false,"showUseActionBanner":false,"actionSlug":null,"actionId":null,"showProtectBranchBanner":false,"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_repo","releasePath":"/Mk555/awesome-tuis/releases/new?marketplace=true","showPublishActionBanner":false},"interactionLimitBanner":null,"showInvitationBanner":false,"inviterName":null,"actionsMigrationBannerInfo":{"releaseTags":[],"showImmutableActionsMigrationBanner":false,"initialMigrationStatus":null}},"codeButton":{"contactPath":"/contact","isEnterprise":false,"local":{"protocolInfo":{"httpAvailable":true,"sshAvailable":null,"httpUrl":"https://github.com/Mk555/awesome-tuis.git","showCloneWarning":null,"sshUrl":null,"sshCertificatesRequired":null,"sshCertificatesAvailable":null,"ghCliUrl":"gh repo clone Mk555/awesome-tuis","defaultProtocol":"http","newSshKeyUrl":"/settings/ssh/new","setProtocolPath":"/users/set_protocol"},"platformInfo":{"cloneUrl":"https://desktop.github.com","showVisualStudioCloneButton":false,"visualStudioCloneUrl":"https://windows.github.com","showXcodeCloneButton":false,"xcodeCloneUrl":"xcode://clone?repo=https%3A%2F%2Fgithub.com%2FMk555%2Fawesome-tuis","zipballUrl":"/Mk555/awesome-tuis/archive/refs/heads/master.zip"}},"newCodespacePath":"/codespaces/new?hide_repo_select=true\u0026repo=787837940"},"popovers":{"rename":null,"renamedParentRepo":null},"commitCount":"264","overviewFiles":[{"displayName":"README.md","repoName":"awesome-tuis","refName":"master","path":"README.md","preferredFileType":"readme","tabName":"README","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAwesome TUIs\u003c/h1\u003e\u003ca id=\"user-content-awesome-tuis\" class=\"anchor\" aria-label=\"Permalink: Awesome TUIs\" href=\"#awesome-tuis\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eList of projects that provide terminal user interfaces\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eTable of Contents\u003c/h2\u003e\u003ca id=\"user-content-table-of-contents\" class=\"anchor\" aria-label=\"Permalink: Table of Contents\" href=\"#table-of-contents\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#dashboards\"\u003eDashboards\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#development\"\u003eDevelopment\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#editors\"\u003eEditors\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#games\"\u003eGames\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#libraries\"\u003eLibraries\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#messaging\"\u003eMessaging\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#miscellaneous\"\u003eMiscellaneous\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#multimedia\"\u003eMultimedia\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#productivity\"\u003eProductivity\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#web\"\u003eWeb\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDashboards\u003c/h2\u003e\u003ca id=\"user-content-dashboards\" class=\"anchor\" aria-label=\"Permalink: Dashboards\" href=\"#dashboards\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lissy93/AdGuardian-Term\"\u003eAdGuardian-Term\u003c/a\u003e A TUI dashboard for monitoring real-time traffic from an AdGuard Home instance.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aristocratos/bashtop\"\u003ebashtop\u003c/a\u003e Resource manager written in bash\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/facebookincubator/below\"\u003ebelow\u003c/a\u003e A time traveling resource monitor for modern Linux systems\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tgraf/bmon\"\u003ebmon\u003c/a\u003e A monitoring and debugging tool to capture networking related statistics and prepare them visually.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ClementTsang/bottom\"\u003ebottom\u003c/a\u003e A customizable graphical process/system monitor for the terminal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aristocratos/bpytop\"\u003ebpytop\u003c/a\u003e A Python-based system monitor with lots of information.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aristocratos/btop\"\u003ebtop++\u003c/a\u003e Resource monitor with extras\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/miguelmota/cointop\"\u003ecointop\u003c/a\u003e The fastest and most interactive terminal based UI application for tracking cryptocurrencies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bcicen/ctop\"\u003ectop\u003c/a\u003e Top-like interface for container metrics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cyring/CoreFreq\"\u003eCoreFreq\u003c/a\u003e CPU monitoring software designed for the 64-bits Processors\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hashicorp/damon\"\u003edamon\u003c/a\u003e TUI interface for Hashicorp Nomad\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lirantal/dockly\"\u003edockly\u003c/a\u003e Immersive terminal interface for managing docker containers and services\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/moncho/dry\"\u003edry\u003c/a\u003e A Docker manager for the terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/awslabs/eks-node-viewer/\"\u003eeks-node-viewer\u003c/a\u003e visualizing dynamic node usage within a kubernetes cluster\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dylanaraps/fff\"\u003efff\u003c/a\u003e A simple file manager written in bash.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/irishmaestro/fubar\"\u003efubar\u003c/a\u003e Formidable Unix Binary Arsenal \u0026amp; Repository. TUI built for gtfobins power users.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nicolargo/glances\"\u003eGlances\u003c/a\u003e Glances an Eye on your system. A top/htop alternative.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/allinurl/goaccess\"\u003eGoaccess\u003c/a\u003e GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in nix systems or through your browser.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/xxxserxxx/gotop\"\u003egotop\u003c/a\u003e A terminal based graphical activity monitor inspired by gtop and vtop\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/orf/gping\"\u003egping\u003c/a\u003e Ping, but with a graph\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slok/grafterm\"\u003eGrafterm\u003c/a\u003e Metrics dashboards on terminal, a Grafana inspired terminal version\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/htop-dev/htop\"\u003ehtop\u003c/a\u003e Interactive text-mode process viewer for Unix systems. It aims to be a better 'top'\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PierreKieffer/htui\"\u003ehtui\u003c/a\u003e Heroku Terminal User Interface\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kdash-rs/kdash\"\u003ekdash\u003c/a\u003e A simple and fast dashboard for Kubernetes\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/derailed/k9s\"\u003ek9s\u003c/a\u003e TUI for managing a Kubernetes cluster\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/orhun/kmon\"\u003ekmon\u003c/a\u003e Linux Kernel Manager and Activity Monitor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesseduffield/lazydocker\"\u003elazydocker\u003c/a\u003e The lazier way to manage everything docker\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Chleba/netscanner\"\u003enetscanner\u003c/a\u003e Network scanner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jarun/nnn\"\u003ennn\u003c/a\u003e n³ The unorthodox terminal file manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Syllo/nvtop\"\u003envtop\u003c/a\u003e GPUs process monitoring for AMD, Intel and NVIDIA\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrusme/planor\"\u003ePlanor\u003c/a\u003e The Cloud Aviator, dashboard for AWS, Vultr, Heroku, ...\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/containers/podman-tui\"\u003ePodman-tui\u003c/a\u003e TUI for Podman containers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TomasTomecek/sen\"\u003esen\u003c/a\u003e Terminal User Interface for docker engine\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/amanusk/s-tui\"\u003es-tui\u003c/a\u003e CPU stress and monitoring utility\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joehillen/sysz\"\u003esysz\u003c/a\u003e An fzf terminal UI for systemctl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jessfraz/tdash\"\u003etdash\u003c/a\u003e A terminal dashboard with stats from Google Analytics, GitHub, Travis CI, and Jenkins. Very much built specific to me\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pythops/tegratop\"\u003etegratop\u003c/a\u003e Monitoring tool (top like) for Nvidia jetson boards\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gizak/termui\"\u003eTermUI\u003c/a\u003e Golang terminal dashboard\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/franckverrot/trek\"\u003etrek\u003c/a\u003e ncurses explorer for Hashicorp Nomad clusters\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fujiapple852/trippy\"\u003etrippy\u003c/a\u003e A network diagnostic tool that includes functionality like mtr and more\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inv2004/ttop\"\u003ettop\u003c/a\u003e System monitoring tool with historical data service, triggers and top-like TUI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/robinovitch61/wander\"\u003ewander\u003c/a\u003e HashiCorp Nomad terminal client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/senorprogrammer/wtf\"\u003eWTF\u003c/a\u003e The personal information dashboard for your terminal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bvaisvil/zenith\"\u003ezenith\u003c/a\u003e In terminal graphical metrics for your *nix system written in Rust\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDevelopment\u003c/h2\u003e\u003ca id=\"user-content-development\" class=\"anchor\" aria-label=\"Permalink: Development\" href=\"#development\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/P403n1x87/austin-tui\"\u003eaustin-tui\u003c/a\u003e The top-like text-based user interface for Austin\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/razeghi71/burf\"\u003eburf\u003c/a\u003e TUI for Google Cloud Storage (GCS)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fipso/cntui\"\u003ecnTUI\u003c/a\u003e Replay chrome requests from your terminal using curl\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/agvxov/csope\"\u003ecsope\u003c/a\u003e C source code browser based on cscope\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PThorpe92/CuTE\"\u003eCuTE\u003c/a\u003e TUI to help build, execute and save curl commands, recursively download from remote sources, test your API endpoints, and mange your keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/DataDog/ddqa\"\u003eddqa\u003c/a\u003e Jira TUI to help with software releases\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dandavison/delta\"\u003edelta\u003c/a\u003e A syntax-highlighting pager for git, diff, and grep output.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/joouha/euporie\"\u003eeuporie\u003c/a\u003e Jupyter notebooks in the terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/extrawurst/gitui\"\u003egitui\u003c/a\u003e blazing fast terminal-ui for git written in rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrewshadura/git-crecord\"\u003egit-crecord\u003c/a\u003e interactive selective commit tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rgburke/grv\"\u003egrv\u003c/a\u003e Terminal interface for viewing git repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tconbeer/harlequin\"\u003eharlequin\u003c/a\u003e The SQL IDE for Your Terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/noahgorstein/jqp\"\u003ejqp\u003c/a\u003e A TUI playground to experiment with jq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jesseduffield/lazygit\"\u003elazygit\u003c/a\u003e Simple terminal UI for git commands\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jorgerojas26/lazysql\"\u003elazysql\u003c/a\u003e A cross-platform TUI database management tool written in Go.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://www.mitmproxy.org\" rel=\"nofollow\"\u003emitmproxy\u003c/a\u003e A free and open source interactive HTTPS proxy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/maaslalani/nap\"\u003enap\u003c/a\u003e Code snippets in your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/paololazzari/play\"\u003eplay\u003c/a\u003e A TUI playground to experiment with your favorite programs, such as grep, sed, awk, jq and yq\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dhth/prs\"\u003eprs\u003c/a\u003e Stay updated on PRs without leaving the terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/inducer/pudb\"\u003epudb\u003c/a\u003e A console-based visual debugger for Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jwlodek/pyautogit\"\u003epyautogit\u003c/a\u003e A terminal UI for managing git repositories, written using py_cui\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/stateful/runme\"\u003erunme\u003c/a\u003e Discover and run code snippets directly from your README.md or other markdowns\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Theodo-UK/sls-dev-tools\"\u003esls-dev-tools\u003c/a\u003e Dev Tools for the Serverless World\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mathaou/termdbms\"\u003etermdbms\u003c/a\u003e A TUI for viewing and editing database files.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/idoavrah/terraform-tui\"\u003eterraform-tui\u003c/a\u003e view and interact with Terraform state\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charmbracelet/soft-serve\"\u003esoft-serve\u003c/a\u003e A tasty, self-hostable Git server for the command lineicecream\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jonas/tig\"\u003etig\u003c/a\u003e Text-mode interface for git\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thebsdbox/vctui\"\u003evctui\u003c/a\u003e Console interface for vCenter\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/braheezy/violet\"\u003eviolet\u003c/a\u003e Colorful TUI frontend to run Vagrant commands\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eEditors\u003c/h2\u003e\u003ca id=\"user-content-editors\" class=\"anchor\" aria-label=\"Permalink: Editors\" href=\"#editors\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jmacdonald/amp\"\u003eamp\u003c/a\u003e A complete text editor for your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://helix-editor.com/\" rel=\"nofollow\"\u003ehelix\u003c/a\u003e A post-modern text editor.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Textualize/frogmouth\"\u003efrogmouth\u003c/a\u003e A Markdown browser for your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://kakoune.org/\" rel=\"nofollow\"\u003ekakoune\u003c/a\u003e A modern, modal text editor with focus on interactivity and efficiency\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zyedidia/micro\"\u003emicro\u003c/a\u003e A modern and intuitive terminal-based text editor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/xyproto/orbiton\"\u003eorbiton\u003c/a\u003e Text editor limited by VT100, suitable for programming, writing git commit messages and editing Markdown\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/slap-editor/slap\"\u003eslap\u003c/a\u003e Sublime-like terminal-based text editor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magiblot/turbo\"\u003eturbo\u003c/a\u003e An experimental text editor for the terminal, based on Scintilla and Turbo Vision\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zee-editor/zee\"\u003ezee\u003c/a\u003e A modern text editor for the terminal written in Rust\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eGames\u003c/h2\u003e\u003ca id=\"user-content-games\" class=\"anchor\" aria-label=\"Permalink: Games\" href=\"#games\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tiehuis/2048-cli\"\u003e2048-cli\u003c/a\u003e The game 2048 for your Linux terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TheMozg/awk-raycaster\"\u003eawkaster\u003c/a\u003e Pseudo-3D shooter written completely in gawk using raycasting technique\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fph/bastet\"\u003ebastet\u003c/a\u003e Evil falling block game\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jifunks/botany/\"\u003ebotany\u003c/a\u003e Virtual plant buddy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ilyakurdyukov/brickgame-4bit\"\u003ebrickgame-4bit\u003c/a\u003e Brick Game emulator (4-bit Holtek chip)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tmewett/BrogueCE\"\u003eBrogueCE\u003c/a\u003e Beautiful roguelike dungeon crawler\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/jallbrit/cbonsai\" rel=\"nofollow\"\u003ecbonsai\u003c/a\u003e A bonsai tree generator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thomas-mauran/chess-tui\"\u003echess-tui\u003c/a\u003e Play Chess in your terminal, built in rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ajeetdsouza/clidle\"\u003eclidle\u003c/a\u003e Play Wordle in your terminal. Also works over SSH!\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wojciech-graj/doom-ascii\"\u003eDOOM-ASCII\u003c/a\u003e Text-based DOOM running in terminal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gabrielrcouto/php-terminal-gameboy-emulator\"\u003eGameboy Emulator\u003c/a\u003e A PHP Terminal GameBoy Emulator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sachaos/go-life\"\u003ego-life\u003c/a\u003e Terminal based Conway's Game of Life\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/esr/greed\" rel=\"nofollow\"\u003eGreed\u003c/a\u003e A game of consumption. Eat as much as you can before munching yourself into a corner!\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/troglobit/snake\"\u003eMicro Snake\u003c/a\u003e A small snake game, utilizing ANSI escape sequences to draw the board.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/troglobit/tetris\"\u003eMicro Tetris\u003c/a\u003e One of the smallest Tetris implementations in the world, utilizing only ANSI escape sequences to draw the board.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/seehuhn/moon-buggy\"\u003emoon-buggy\u003c/a\u003e Drive some car across the moon\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://sourceforge.net/projects/myman/\" rel=\"nofollow\"\u003eMyMan\u003c/a\u003e MyMan is a video game for color and monochrome text terminals in the genre of Namco's Pac-Man\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/billyvinning/nchess\"\u003enchess\u003c/a\u003e Chess in the terminal, written in C.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NetHack/NetHack\"\u003eNetHack\u003c/a\u003e Dungeon exploration game\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://ninvaders.sourceforge.net/\" rel=\"nofollow\"\u003enInvaders\u003c/a\u003e Space Invaders\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/alexdantas/nSnake\"\u003enSnake\u003c/a\u003e The classic snake game with textual interface\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jubalh/nudoku\"\u003enudoku\u003c/a\u003e ncurses based sudoku game\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vyalovvldmr/onx\"\u003eonx\u003c/a\u003e Noughts \u0026amp; Crosses client-server game with your partner. Based on textual and python.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/lxgr-linux/pokete\"\u003epokete\u003c/a\u003e A terminal based Pokemon like game\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wick3dr0se/snake\"\u003esnake\u003c/a\u003e 🎮 A super minimal TUI snake game written in pure BASH v5.1+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/learnbyexample/TUI-apps/tree/main/SquareTicTacToe\"\u003eSquare Tic Tac Toe\u003c/a\u003e Like Tic Tac Toe, but form a square with 4 corners instead of a line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zachlatta/sshtron\"\u003esshtron\u003c/a\u003e multiplayer lightcycle game that runs through SSH\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/AngelJumbo/sssnake\"\u003esssnake\u003c/a\u003e The classic snake game for the terminal that can play itself and be used like a screensaver.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dmadisetti/steam-tui\"\u003esteam-tui\u003c/a\u003e Just a simple TUI client for steamcmd. Allows for the graphical launching, updating, and downloading of steam games through a simple terminal client.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MitchelPaulin/sudoku-rs\"\u003esudoku-rs\u003c/a\u003e Sudoku built with tui-rs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/igor47/sweeper\"\u003esweeper\u003c/a\u003e Minesweeper game using curtsies\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/dustyweb/terminal-phase\" rel=\"nofollow\"\u003eterminal-phase\u003c/a\u003e Space shooter game that runs in your terminal!\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/taylorconor/tinytetris\"\u003etinytetris\u003c/a\u003e 80x23 terminal tetris!\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mpereira/tty-solitaire\"\u003etty-solitaire\u003c/a\u003e Solitaire runs in your terminal!\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/m-dango/raku-wordle/\"\u003eWordle\u003c/a\u003e Script and library for Wordle, written in Raku\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eLibraries\u003c/h2\u003e\u003ca id=\"user-content-libraries\" class=\"anchor\" aria-label=\"Permalink: Libraries\" href=\"#libraries\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/colinta/Ashen\"\u003eAshen\u003c/a\u003e An Elm inspired framework written in \u003cstrong\u003eSwift\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chjj/blessed\"\u003eblessed\u003c/a\u003e A high-level terminal interface library for \u003cstrong\u003eNode.js\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jquast/blessed\"\u003eblessed\u003c/a\u003e Blessed is an easy, practical library for making \u003cstrong\u003ePython\u003c/strong\u003e terminal apps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/erikrose/blessings\"\u003eblessings\u003c/a\u003e A \u003cstrong\u003ePython\u003c/strong\u003e wrapper lib for ncurses that makes your code pretty to look at\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charmbracelet/bubbletea\"\u003ebubbletea\u003c/a\u003e A \u003cstrong\u003eGo\u003c/strong\u003e framework based on Elm to build functional and stateful TUI apps, complete with extensions known as \u003ca href=\"https://github.com/charmbracelet/bubbles\"\u003ebubbles\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saccharineboi/CursedGL\"\u003eCursedGL\u003c/a\u003e A \u003cstrong\u003eC\u003c/strong\u003e notcurses-based software rasterizer inspired by OpenGL 1.X that renders directly to the terminal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gansm/finalcut\"\u003eFINAL CUT\u003c/a\u003e \u003cstrong\u003eC++\u003c/strong\u003e library for creating terminal applications with text-based widgets\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ArthurSonzogni/FTXUI\"\u003eFTXUI\u003c/a\u003e 💻 \u003cstrong\u003eC++\u003c/strong\u003e Functional Terminal User Interface. ❤️\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jroimartin/gocui\"\u003egocui\u003c/a\u003e Minimalist \u003cstrong\u003eGo\u003c/strong\u003e package aimed at creating Console User Interfaces\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/migueldeicaza/gui.cs\"\u003egui.cs\u003c/a\u003e Console-based user interface toolkit for \u003cstrong\u003e.NET\u003c/strong\u003e applications\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charmbracelet/gum\"\u003egum\u003c/a\u003e A tool for glamorous \u003cstrong\u003eshell\u003c/strong\u003e scripts\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ggerganov/imtui\"\u003eimtui\u003c/a\u003e An immediate mode text-based user interface \u003cstrong\u003eC++\u003c/strong\u003e library, supporting 256 ANSI colors and mouse/keyboard input.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vadimdemedes/ink\"\u003eink\u003c/a\u003e React for \u003cstrong\u003eNode.js\u003c/strong\u003e interactive command-line apps\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mabe02/lanterna\"\u003eLanterna\u003c/a\u003e A \u003cstrong\u003eJava\u003c/strong\u003e library for creating text-based UIs, very similar to the C library curses but with more functionality.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://invisible-island.net/ncurses/announce.html\" rel=\"nofollow\"\u003encurses\u003c/a\u003e A classic \u003cstrong\u003eC\u003c/strong\u003e library with bindings for many languages\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ansiwave/nimwave\"\u003enimwave\u003c/a\u003e Build text interfaces for the terminal or browser in \u003cstrong\u003eNim\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dankamongmen/notcurses\"\u003enotcurses\u003c/a\u003e blingful character graphics/TUI library for \u003cstrong\u003eC\u003c/strong\u003e and \u003cstrong\u003ePython\u003c/strong\u003e. definitely not curses.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/php-tui/php-tui\"\u003ephp-tui\u003c/a\u003e comprehensive TUI library for \u003cstrong\u003ePHP\u003c/strong\u003e based heavily on Ratatui.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pterm/pterm/\"\u003epterm\u003c/a\u003e A modern \u003cstrong\u003eGo\u003c/strong\u003e module to beautify console output. Featuring charts, progressbars, tables, trees, and much more! It's completely configurable and 100% cross-platform compatible.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jwlodek/py_cui\"\u003epy_cui\u003c/a\u003e \u003cstrong\u003ePython\u003c/strong\u003e library aimed at making widget based TUI/CUI interfaces as simple as possible. Supports standard widgets and popups like menus, textboxes, forms, file explorers etc.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/bczsalba/pytermgui\"\u003epytermgui\u003c/a\u003e A simple yet powerful TUI framework for your \u003cstrong\u003ePython\u003c/strong\u003e (3.7+) applications.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ceccopierangiolieugenio/pyTermTk\"\u003epyTermTk\u003c/a\u003e self-contained TUI library for \u003cstrong\u003ePython\u003c/strong\u003e with a QT-like API semantics\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/prompt-toolkit/python-prompt-toolkit\"\u003ePython Prompt Toolkit\u003c/a\u003e Library for building powerful interactive command line applications in \u003cstrong\u003ePython\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tui-rs-revival/ratatui\"\u003eRatatui\u003c/a\u003e A \u003cstrong\u003eRust\u003c/strong\u003e crate for building Terminal UIs (actively maintained fork of tui-rs).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willmcgugan/rich\"\u003eRich\u003c/a\u003e is a \u003cstrong\u003ePython\u003c/strong\u003e library for rich text and beautiful formatting in the terminal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/76creates/stickers\"\u003estickers\u003c/a\u003e Building blocks for charmbracelet/lipgloss in \u003cstrong\u003eGo\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gdamore/tcell\"\u003etcell\u003c/a\u003e Tcell is an alternate \u003cstrong\u003eGo\u003c/strong\u003e terminal package, similar in some ways to termbox, but better in others.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/termbox/termbox2\"\u003etermbox2\u003c/a\u003e A terminal rendering library for creating TUIs.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/willmcgugan/textual\"\u003etextual\u003c/a\u003e is a TUI (Text User Interface) framework for \u003cstrong\u003ePython\u003c/strong\u003e inspired by modern web development.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/thermage/thermage\"\u003eThermage\u003c/a\u003e Thermage is a \u003cstrong\u003ePHP\u003c/strong\u003e library that provides a fluent and incredibly powerful, object-oriented interface for customizing CLI output text color, background, formatting, theming and more.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wojciech-graj/TermGL\"\u003eTermGL\u003c/a\u003e A terminal-based graphics library for 2D and 3D graphics.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/marcusolsson/tui-go\"\u003etui-go\u003c/a\u003e A \u003cstrong\u003eGo\u003c/strong\u003e UI library for terminal applications (deprecated)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fdehau/tui-rs\"\u003etui-rs\u003c/a\u003e Terminal user interfaces and dashboards using \u003cstrong\u003eRust\u003c/strong\u003e (no longer maintained, use Ratatui instead).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Cubified/tuibox\"\u003etuibox\u003c/a\u003e A single-header \u003cstrong\u003eC\u003c/strong\u003e terminal UI library, capable of creating mouse-driven, interactive applications on the command line.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tuiwidgets/tuiwidgets\"\u003eTui Widgets\u003c/a\u003e A high-level widget based toolkit for terminal applications.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rivo/tview/\"\u003etview\u003c/a\u003e Terminal UI library with rich, interactive widgets — written in \u003cstrong\u003eGo\u003c/strong\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magiblot/tvision\"\u003etvision\u003c/a\u003e A modern port of \u003cstrong\u003eC++\u003c/strong\u003e Turbo Vision 2.0, cross-platform and Unicode support.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/unicurses/unicurses\"\u003eUniCurses\u003c/a\u003e A \u003cstrong\u003ePython\u003c/strong\u003e module that is aimed at providing the Curses functionality on all operating systems.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/urwid/urwid\"\u003eurwid\u003c/a\u003e A console user interface library for \u003cstrong\u003ePython\u003c/strong\u003e on Linux, OSX, Cygwin or other unix-like OS.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMessaging\u003c/h2\u003e\u003ca id=\"user-content-messaging\" class=\"anchor\" aria-label=\"Permalink: Messaging\" href=\"#messaging\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://aerc-mail.org/\" rel=\"nofollow\"\u003eaerc\u003c/a\u003e Email client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/quackduck/devzat\"\u003eDevzat\u003c/a\u003e Chat over SSH, written in Golang with self-hosting ability.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ayntgl/discordo\"\u003ediscordo\u003c/a\u003e A lightweight, secure, and feature-rich Discord terminal client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrusme/gomphotherium\"\u003eGomphotherium\u003c/a\u003e A command line Mastodon client.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tulir/gomuks\"\u003egomuks\u003c/a\u003e Matrix client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/yellowsink/gord\"\u003egord\u003c/a\u003e TUI discord client. updated fork of the now-outdated cordless.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://irssi.org/\" rel=\"nofollow\"\u003eirssi\u003c/a\u003e An IRC terminal client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/matterhorn-chat/matterhorn\"\u003ematterhorn\u003c/a\u003e A Mattermost terminal client.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://mcabber.com/\" rel=\"nofollow\"\u003emcabber\u003c/a\u003e XMPP (Jabber) client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://meli.delivery/\" rel=\"nofollow\"\u003emeli\u003c/a\u003e Email client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/muttmua/mutt\" rel=\"nofollow\"\u003eMutt\u003c/a\u003e Email client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/d99kris/nchat\"\u003enchat\u003c/a\u003e Telegram/WhatsApp client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/akiomik/nostui\"\u003enostui\u003c/a\u003e Nostr client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://profanity-im.github.io\" rel=\"nofollow\"\u003eProfanity\u003c/a\u003e XMPP (Jabber) client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/haskellcamargo/sclack\"\u003esclack\u003c/a\u003e Slack terminal client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/isamert/scli/\"\u003escli\u003c/a\u003e A simple terminal user interface for signal messenger\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/derricw/siggo\"\u003esiggo\u003c/a\u003e A terminal ui for signal-cli, written in Go\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/erroneousboat/slack-term\"\u003eSlack-term\u003c/a\u003e Slack client for your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sup-heliotrope/sup\"\u003esup\u003c/a\u003e A curses threads-with-tags style email client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrusme/superhighway84\"\u003eSuperhighway84\u003c/a\u003e USENET-inspired decentralized internet discussion system\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ihabunek/toot\"\u003etoot\u003c/a\u003e Mastodon CLI \u0026amp; TUI\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pythops/tuix\"\u003etuix\u003c/a\u003e TUI for managing screens\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/RasmusLindroth/tut\"\u003etut\u003c/a\u003e Mastodon TUI client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Xithrius/twitch-tui\"\u003etwitch-tui\u003c/a\u003e Twitch chat in the terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://weechat.org/\" rel=\"nofollow\"\u003eWeechat\u003c/a\u003e Extensible chat client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zulip/zulip-terminal\"\u003ezulip-terminal\u003c/a\u003e Official Zulip terminal client (similar to matterhorn)\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMiscellaneous\u003c/h2\u003e\u003ca id=\"user-content-miscellaneous\" class=\"anchor\" aria-label=\"Permalink: Miscellaneous\" href=\"#miscellaneous\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/darkhz/adbtuifm\"\u003eadbtuifm\u003c/a\u003e A TUI file manager for Android, based on the Android Debug Bridge(ADB).\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/reportaman/arttime\"\u003earttime\u003c/a\u003e An app that brings beauty of text-art together with functionality of clock, timer, and pattern-based time manager.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dewberryants/asciiMol\"\u003easciiMol\u003c/a\u003e Curses based ASCII molecule viewer for linux terminals.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/darkhz/bluetuith\"\u003ebluetuith\u003c/a\u003e A TUI-based bluetooth connection manager, which can interact with bluetooth adapters and devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pythops/bluetui\"\u003ebluetui\u003c/a\u003e A TUI for managing bluetooth devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://dystroy.org/broot/\" rel=\"nofollow\"\u003ebroot\u003c/a\u003e A new way to see and navigate directory trees\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NikolaDucak/caps-log\"\u003eCaptain's log\u003c/a\u003e A small TUI journaling tool\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/actuday6418/Diary\"\u003ediary\u003c/a\u003e A diary app written in Rust that encrypts both text and file data, and can decrypt and build a rich HTML representation of your diary when required.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hyperreal64/distrobox-tui\"\u003edistrobox-tui\u003c/a\u003e TUI for managing distrobox containers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wagoodman/dive\"\u003edive\u003c/a\u003e A tool for exploring each layer in a docker image\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aws/amazon-ec2-instance-selector\"\u003eec2-instance-selector\u003c/a\u003e A CLI tool and go library which recommends instance types based on resource criteria like vcpus and memory\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dmsc/emu2\"\u003eemu2\u003c/a\u003e A simple DOS emulator for the Linux text console, supporting basic DOS system calls and console I/O.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/junegunn/fzf\"\u003efzf\u003c/a\u003e A general-purpose command-line fuzzy finder\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/dundee/gdu\"\u003egdu\u003c/a\u003e Fast disk usage analyzer with console interface written in Go\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/google/gif-for-cli\"\u003egif-for-cli\u003c/a\u003e Convert a gif into ASCII\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/TaKO8Ki/gobang\"\u003egobang\u003c/a\u003e A cross-platform TUI database management tool written in Rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Macmod/godap\"\u003egodap\u003c/a\u003e A complete TUI for LDAP written in Golang\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/orhun/gpg-tui\"\u003egpg-tui\u003c/a\u003e A terminal user interface for GnuPG\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/koenvervloesem/humble-explorer\"\u003eHumBLE Explorer\u003c/a\u003e A cross-platform, command-line and human-friendly Bluetooth Low Energy scanner\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://jrnl.sh/\" rel=\"nofollow\"\u003ejrnl\u003c/a\u003e Collect your thoughts and notes without leaving the command line. human-friendly. future-proof. secure.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sarub0b0/kubetui\"\u003ekubetui\u003c/a\u003e A TUI tool designed for monitoring Kubernetes resources.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://lnav.org/\" rel=\"nofollow\"\u003elnav\u003c/a\u003e An advanced log file viewer for the small-scale\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rastapasta/mapscii\"\u003emapscii\u003c/a\u003e Braille \u0026amp; ASCII world map renderer for your console\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/EdJoPaTo/mqttui\"\u003emqttui\u003c/a\u003e MQTT Client written in rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PabloLec/neoss\"\u003eneoss\u003c/a\u003e Socket statistics visualization and explanation tool for Unix systems.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://developer.gnome.org/NetworkManager/stable/nmtui.html\" rel=\"nofollow\"\u003enmtui\u003c/a\u003e ncurses network manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hatoo/oha\"\u003eoha\u003c/a\u003e HTTP load generator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/profanity-im/profanity\"\u003eprofanity\u003c/a\u003e A cross-platfrom XMPP client.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://dev.yorhel.nl/ncdu\" rel=\"nofollow\"\u003encdu\u003c/a\u003e disk usage analyzer with an ncurses interface\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PabloLec/recoverpy\"\u003erecoverpy\u003c/a\u003e A TUI to recover overwritten or deleted data.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gerstner-hub/rocket.term\"\u003erocket.term\u003c/a\u003e Text based chat client for the Rocket.chat messaging solution.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sachaos/tcpterm\"\u003etcpterm\u003c/a\u003e tcpterm is a packet visualizer in TUI.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/velorek1/terminalperiodictable\"\u003eterminalperiodictable\u003c/a\u003e A beautiful TUI periodic table for Unix systems coded in C.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gcla/termshark\"\u003etermshark\u003c/a\u003e Terminal UI for tshark\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coloradocolby/thokr\"\u003ethokr\u003c/a\u003e a sleek typing tui written in rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/max-niederman/ttyper\"\u003ettyper\u003c/a\u003e Terminal-based typing test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Gcat101/tui-shop\"\u003etui-shop\u003c/a\u003e Something between a CLI and a GUI way of downloading TUIs/CLIs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/vifm/vifm\"\u003evifm\u003c/a\u003e A TUI file manager with vi-keybindings and other vim like behaviour.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/MertGunduz/wb\"\u003ewb\u003c/a\u003e A TUI vocabulary notebook app for Linux based devices.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/schachmat/wego\"\u003ewego\u003c/a\u003e Weather app\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/uoaerg/wavemon\"\u003ewavemon\u003c/a\u003e A wireless device monitoring application\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andrianbdn/wg-cmd\"\u003eWG Commander\u003c/a\u003e A TUI for a simple WireGuard VPN setup: peer management, QR codes, setup wizard.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/chubin/wttr.in\"\u003ewttr.in\u003c/a\u003e The right way to check the weather\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sayanarijit/xplr\"\u003explr\u003c/a\u003e A hackable, minimal, fast TUI file explorer, stealing ideas from nnn and fzf.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sxyazi/yazi\"\u003eyazi\u003c/a\u003e Blazing fast terminal file manager written in Rust, based on async I/O.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMultimedia\u003c/h2\u003e\u003ca id=\"user-content-multimedia\" class=\"anchor\" aria-label=\"Permalink: Multimedia\" href=\"#multimedia\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://hpjansson.org/chafa/\" rel=\"nofollow\"\u003echafa\u003c/a\u003e A powerful utility that converts image data, including animated GIFs, into graphics formats or ANSI/Unicode character art suitable for display in a terminal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/knosmos/cmdpxl\"\u003ecmdpxl\u003c/a\u003e Totally practical command-line image editor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://cmus.github.io/\" rel=\"nofollow\"\u003ecmus\u003c/a\u003e A small, fast and powerful console music player for Unix-like operating systems.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/maaslalani/draw\"\u003edraw\u003c/a\u003e A simple drawing tool in the terminal.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/xyproto/favicon-editor\"\u003efavicon-editor\u003c/a\u003e Spartan grayscale favicon editor\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rareitems/gadacz\"\u003egadacz\u003c/a\u003e Audiobook player\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jgalat/image-sorter\"\u003eimage-sorter\u003c/a\u003e Terminal user interface for sorting images using key bindings written in Rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/darkhz/invidtui\"\u003einvidtui\u003c/a\u003e A TUI Invidious client for Windows, Linux and MacOS, that fetches and plays audio/video from an invidious instance. Supports viewing and playing from playlists and channels as well.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pd3v/line\"\u003eline\u003c/a\u003e Tiny command-line midi sequencer and language for live coding\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mps-youtube/mps-youtube\"\u003emps-youtube\u003c/a\u003e Terminal based YouTube player and downloader\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gmt4/mpvc\"\u003empvc\u003c/a\u003e A mpc-like control interface for mpv\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://nap.sourceforge.net/\" rel=\"nofollow\"\u003enap\u003c/a\u003e Linux napster client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hrkfdn/ncspot\"\u003encspot\u003c/a\u003e Cross-platform ncurses Spotify client written in Rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/coderholic/pyradio\"\u003epyradio\u003c/a\u003e TUI web radio player with thousands of stations from around the world\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Zi0P4tch0/RadioGoGo\"\u003eRadioGoGo\u003c/a\u003e Go-powered CLI to surf global radio waves via a sleek TUI.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/winsbe01/roku-cli\"\u003eroku-cli\u003c/a\u003e A command line TUI remote for Roku\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/grobie/soundcloud2000\"\u003esoundcloud2000\u003c/a\u003e A terminal client for soundcloud\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Rigellute/spotify-tui\"\u003espotify-tui\u003c/a\u003e Spotify for the terminal written in Rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ceuk/spotui\"\u003espotui\u003c/a\u003e Spotify client written in Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jooooscha/terminal-yt\"\u003eterminal-yt\u003c/a\u003e A small newsboat-inspired terminal youtube manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/1j01/textual-paint\"\u003etextual-paint\u003c/a\u003e MS Paint in your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/hzeller/timg\"\u003etimg\u003c/a\u003e A terminal image viewer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tizonia/tizonia-openmax-il\"\u003etizonia-openmax-il\u003c/a\u003e Command-line cloud music player for Linux with support for Spotify, Google Play Music, YouTube, SoundCloud, Dirble, Plex servers and Chromecast devices\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/eliasdorneles/upiano\"\u003eupiano\u003c/a\u003e A Piano in your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/videolan/vlc\"\u003evlc\u003c/a\u003e VLC includes an ncurses interface, \u003ccode\u003evlc --intf ncurses\u003c/code\u003e. See documentation at \u003ca href=\"https://wiki.videolan.org/Console/\" rel=\"nofollow\"\u003ehttps://wiki.videolan.org/Console/\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/sudipghimire533/ytui-music\"\u003eytui-music\u003c/a\u003e Listen to music from youtube. Configurable, minimal, lightweight, private \u0026amp; beautiful music client.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/darky/ytdl-tui\"\u003eytdl-tui\u003c/a\u003e TUI for downloading Youtube videos\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pystardust/ytfzf\"\u003eytfzf\u003c/a\u003e A POSIX script that helps you find Youtube videos (without API) or Peertube videos and opens/downloads them using mpv/youtube-dl\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eProductivity\u003c/h2\u003e\u003ca id=\"user-content-productivity\" class=\"anchor\" aria-label=\"Permalink: Productivity\" href=\"#productivity\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anufrievroman/calcure\"\u003ecalcure\u003c/a\u003e Modern TUI calendar and task manager with minimal and customizable UI.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://calcurse.org/\" rel=\"nofollow\"\u003ecalcurse\u003c/a\u003e calendar and scheduling application for the command line\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/darrenburns/elia\"\u003eelia\u003c/a\u003e A terminal ChatGPT client build with Textual\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wick3dr0se/fml\"\u003efml\u003c/a\u003e 📁 A stupid simple, fast file manager written in BASH v4.2+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mk-5/fjira\"\u003efjira\u003c/a\u003e TUI application for Atlassian Jira\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/anmitsu/goful\"\u003egoful\u003c/a\u003e a powerful TUI file manager written in Go\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/charmbracelet/glow\"\u003eGlow\u003c/a\u003e A markdown reader, designed from the ground up to showcase the elegance and capabilities of TUI.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/simonmichael/hledger\"\u003ehledger-ui\u003c/a\u003e A fast TUI for browsing double entry bookkeeping data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nadrad/h-m-m\"\u003eh-m-m\u003c/a\u003e Hackers Mind Map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/PlankCipher/kabmat\"\u003ekabmat\u003c/a\u003e TUI program for managing kanban boards with vim-like keybindings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Zaloog/kanban-python\"\u003ekanban-python\u003c/a\u003e Kanban Terminal App written in Python\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pimutils/khal\"\u003ekhal\u003c/a\u003e A standards based CLI calendar program, able to synchronize with CalDAV servers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/gokcehan/lf\"\u003elf\u003c/a\u003e A terminal file manager written in Go\nwith heavy inspiration from ranger file manager.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/cantino/mcfly\"\u003emcfly\u003c/a\u003e Intelligent context-aware search engine for your shell history\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/jaspervdj/patat\"\u003epatat\u003c/a\u003e Terminal-based presentations using Pandoc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/manipuladordedados/pdiary\"\u003epdiary\u003c/a\u003e A simple terminal diary journal application written in Python with encryption support\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/wick3dr0se/pkm\"\u003epkm\u003c/a\u003e A super minimal TUI package manager wrapper written in BASH v4.2+\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/nikoladucak/pream-team/\"\u003epream-team\u003c/a\u003e a TUI utility that helps you keep track of your teams GitHub PRs across multiple repositories\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/napisani/procmux\"\u003eprocmux\u003c/a\u003e - a TUI for running multiple commands in parallel in easily switchable terminals\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/h-sifat/productivity-timer\"\u003eproductivity-timer\u003c/a\u003e A command line time tracker application with a sleek TUI.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ranger/ranger\"\u003eranger\u003c/a\u003e A VIM-inspired filemanager for the console\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/andmarti1424/sc-im\"\u003esc-im\u003c/a\u003e An ncurses spreadsheet program for terminal. Reignited version of sc\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/perryrh0dan/taskline\"\u003etaskline\u003c/a\u003e Tasks, boards \u0026amp; notes for the command-line habitat\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/kdheepak/taskwarrior-tui\"\u003etaskwarrior-tui\u003c/a\u003e A Terminal User Interface for Taskwarrior\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pythops/tenere\"\u003etenere\u003c/a\u003e A TUI for ChatGPT written in Rust.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tmux/tmux\"\u003etmux\u003c/a\u003e Terminal multiplexer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/pimutils/todoman\"\u003etodoman\u003c/a\u003e A simple, standards-based (ics, DAV), cli task-manager\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/topydo/topydo\"\u003etopydo\u003c/a\u003e A powerful todo list application using the todo.txt format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tenox7/ttyplot\"\u003ettyplot\u003c/a\u003e A realtime plotting utility for terminals with data input from stdin/pipe.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/GiorgosXou/TUIFIManager\"\u003eTUIFIManager\u003c/a\u003e A cross-platform terminal-based file manager \u003cem\u003e(supports termux)\u003c/em\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/NicoDblc/TUI_ProjectManager\"\u003eTUI_ProjectManager\u003c/a\u003e A simple project-based todo list written in Rust\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ashis0013/tuihub\"\u003etuihub\u003c/a\u003e A utility hub/dashboard for personal use\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/magiblot/tvterm\"\u003etvterm\u003c/a\u003e A terminal emulator that runs in your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/saulpw/visidata\"\u003eVisidata\u003c/a\u003e A terminal spreadsheet multitool for discovering and arranging data\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/zellij-org/zellij\"\u003ezellij\u003c/a\u003e A terminal workspace with batteries included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://vifm.info\" rel=\"nofollow\"\u003eVifm\u003c/a\u003e File manager with Vim bindings and scripting/configuration style\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrusme/zeit\"\u003ezeit\u003c/a\u003e A command line tool for tracking time spent on activities.\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cdetails open=\"\"\u003e\u003csummary\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eWeb\u003c/h2\u003e\u003ca id=\"user-content-web\" class=\"anchor\" aria-label=\"Permalink: Web\" href=\"#web\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\u003c/summary\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://bombadillo.colorfield.space/\" rel=\"nofollow\"\u003ebombadillo\u003c/a\u003e A TUI browser for the non-web: Gopher, Gemini, Finger\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/browsh-org/browsh\"\u003ebrowsh\u003c/a\u003e A fully-modern text-based browser, rendering to TTY and browsers\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/mrusme/canard\"\u003eCanard\u003c/a\u003e A command line TUI client for the \u003ca href=\"https://github.com/mrusme/journalist\"\u003eJournalist\u003c/a\u003e RSS aggregator.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/fathyb/carbonyl\"\u003ecarbonyl\u003c/a\u003e Chromium running inside your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/xgi/castero\"\u003ecastero\u003c/a\u003e A TUI app to listen to podcast\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/aome510/hackernews-TUI\"\u003ehackernews-TUI\u003c/a\u003e A Terminal UI to browse Hacker News\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/donnemartin/haxor-news\"\u003ehaxor-news\u003c/a\u003e Browse Hacker News like a haxor: A Hacker News command line interface (CLI)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://lynx.invisible-island.net/\" rel=\"nofollow\"\u003eLYNX\u003c/a\u003e A text based Terminal browser\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/newsboat/newsboat\"\u003enewsboat\u003c/a\u003e An RSS/Atom feed reader for the text console\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/Beastwick18/nyaa\"\u003enyaa\u003c/a\u003e A nyaa.si TUI for browsing and downloading torrents\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/rakshasa/rtorrent\"\u003ertorrent\u003c/a\u003e A text-based BitTorrent client written in C++\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://gitlab.com/BlackEdder/rttt\" rel=\"nofollow\"\u003erttt\u003c/a\u003e A Hackernews, RSS and Reddit reader for the terminal written in C++.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ezeoleaf/tblogs\"\u003etblogs\u003c/a\u003e Read and browse development blogs from your terminal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/ryota-ka/twterm\"\u003etwterm\u003c/a\u003e A full-featured TUI Twitter client\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://github.com/tats/w3m\"\u003ew3m\u003c/a\u003e A text-mode WWW browser\u003c/li\u003e\n\u003c/ul\u003e\n\u003chr\u003e\n\u003c/details\u003e\n\u003cp dir=\"auto\"\u003eThere's a crazy amount of TUI projects out there, and we can't list them all (though we try!)\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eFor more, see awesome-opensource's \u003ca href=\"https://awesomeopensource.com/projects/tui\" rel=\"nofollow\"\u003eTUI Projects\u003c/a\u003e page.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eLooking for lightweight but not necessarily TUI? check out mayfrost's \u003ca href=\"https://github.com/mayfrost/guides/blob/master/ALTERNATIVES.md\"\u003ealternatives list\u003c/a\u003e!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eEnjoy Vim keybinds and don't want to learn new ones? check out the \u003ca href=\"https://vim.reversed.top\" rel=\"nofollow\"\u003eBig Pile of Vim-like\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eFirst-hand reviews for a lot of these tools and many, many more at k.mandla's \u003ca href=\"https://inconsolation.wordpress.com/index/\" rel=\"nofollow\"\u003eInconsolation blog\u003c/a\u003e. The site also has a \"surprise me with a random tool\" link!\u003c/p\u003e\n\u003c/article\u003e","loaded":true,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"Awesome TUIs","anchor":"awesome-tuis","htmlText":"Awesome TUIs"},{"level":2,"text":"Table of Contents","anchor":"table-of-contents","htmlText":"Table of Contents"},{"level":2,"text":"Dashboards","anchor":"dashboards","htmlText":"Dashboards"},{"level":2,"text":"Development","anchor":"development","htmlText":"Development"},{"level":2,"text":"Editors","anchor":"editors","htmlText":"Editors"},{"level":2,"text":"Games","anchor":"games","htmlText":"Games"},{"level":2,"text":"Libraries","anchor":"libraries","htmlText":"Libraries"},{"level":2,"text":"Messaging","anchor":"messaging","htmlText":"Messaging"},{"level":2,"text":"Miscellaneous","anchor":"miscellaneous","htmlText":"Miscellaneous"},{"level":2,"text":"Multimedia","anchor":"multimedia","htmlText":"Multimedia"},{"level":2,"text":"Productivity","anchor":"productivity","htmlText":"Productivity"},{"level":2,"text":"Web","anchor":"web","htmlText":"Web"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FMk555%2Fawesome-tuis"}}],"overviewFilesProcessingTime":0}},"appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-708ec8ade250.js","githubDevUrl":null,"enabled_features":{"copilot_workspace":null,"code_nav_ui_events":false,"overview_shared_code_dropdown_button":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}}</script> <div data-target="react-partial.reactRoot"><style data-styled="true" data-styled-version="5.3.11">.iVEunk{margin-top:16px;margin-bottom:16px;}/*!sc*/ .jzuOtQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}/*!sc*/ .bGojzy{margin-bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;row-gap:16px;}/*!sc*/ .iNSVHo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding-bottom:16px;padding-top:8px;}/*!sc*/ .bVgnfw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:8px;}/*!sc*/ @media screen and (max-width:320px){.bVgnfw{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}/*!sc*/ .CEgMp{position:relative;}/*!sc*/ @media screen and (max-width:380px){.CEgMp .ref-selector-button-text-container{max-width:80px;}}/*!sc*/ @media screen and (max-width:320px){.CEgMp{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}.CEgMp .overview-ref-selector{width:100%;}.CEgMp .overview-ref-selector > span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}.CEgMp .overview-ref-selector > span > span[data-component="text"]{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}/*!sc*/ .gMOVLe[data-size="medium"]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;}/*!sc*/ .gMOVLe[data-size="medium"] svg{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gMOVLe[data-size="medium"] > span{width:inherit;}/*!sc*/ .gUkoLg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .bZBlpz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;}/*!sc*/ .lhTYNA{margin-right:4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .ffLUq{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}/*!sc*/ .bmcJak{min-width:0;}/*!sc*/ .fLXEGX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (max-width:1079px){.fLXEGX{display:none;}}/*!sc*/ .lmSMZJ[data-size="medium"]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));padding-left:4px;padding-right:4px;}/*!sc*/ .lmSMZJ[data-size="medium"] span[data-component="leadingVisual"]{margin-right:4px !important;}/*!sc*/ .dqfxud{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:1080px){.dqfxud{display:none;}}/*!sc*/ @media screen and (max-width:543px){.dqfxud{display:none;}}/*!sc*/ .fGwBZA[data-size="medium"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jxTzTd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:8px;gap:8px;}/*!sc*/ .gqqBXN{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;}/*!sc*/ @media screen and (max-width:543px){.gqqBXN{display:none;}}/*!sc*/ .dzXgxt{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (max-width:1011px){.dzXgxt{display:none;}}/*!sc*/ .iWFGlI{margin-left:8px;margin-right:8px;margin:0;}/*!sc*/ .vcvyP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:160px;}/*!sc*/ .YUPas{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:1012px){.YUPas{display:none;}}/*!sc*/ .izFOf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:544px){.izFOf{display:none;}}/*!sc*/ .cjVDqW{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;background-color:var(--bgColor-muted,var(--color-canvas-subtle,#f6f8fa));font-size:14px;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;border:solid 1px;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:6px;padding-left:16px;padding-right:8px;padding-top:8px;padding-bottom:8px;margin-bottom:16px;min-height:50px;}/*!sc*/ .vIPPs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}/*!sc*/ .fdROMU{width:100%;border-collapse:separate;border-spacing:0;border:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:6px;table-layout:fixed;overflow:unset;}/*!sc*/ .jGKpsv{height:0px;line-height:0px;}/*!sc*/ .jGKpsv tr{height:0px;font-size:0px;}/*!sc*/ .jdgHnn{padding:16px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:12px;text-align:left;height:40px;}/*!sc*/ .jdgHnn th{padding-left:16px;background-color:var(--bgColor-muted,var(--color-canvas-subtle,#f6f8fa));}/*!sc*/ .bQivRW{width:100%;border-top-left-radius:6px;}/*!sc*/ @media screen and (min-width:544px){.bQivRW{display:none;}}/*!sc*/ .ldkMIO{width:40%;border-top-left-radius:6px;}/*!sc*/ @media screen and (max-width:543px){.ldkMIO{display:none;}}/*!sc*/ .jMbWeI{text-align:right;padding-right:16px;width:136px;border-top-right-radius:6px;}/*!sc*/ .gpqjiB{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:12px;height:40px;}/*!sc*/ .dzCJzi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:273px;padding:8px;}/*!sc*/ @media screen and (min-width:544px){.dzCJzi{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}/*!sc*/ .eNCcrz{text-align:center;vertical-align:center;height:40px;border-top:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));}/*!sc*/ .bHTcCe{border-top:1px solid var(--borderColor-default,var(--color-border-default));cursor:pointer;}/*!sc*/ .csrIcr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;gap:16px;}/*!sc*/ .bUQNHB{border:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}/*!sc*/ @media screen and (max-width:543px){.bUQNHB{margin-left:-16px;margin-right:-16px;max-width:calc(100% + 32px);}}/*!sc*/ @media screen and (min-width:544px){.bUQNHB{max-width:100%;}}/*!sc*/ .jPdcfu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-bottom:1px solid;border-bottom-color:var(--borderColor-default,var(--color-border-default,#d0d7de));-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:8px;position:-webkit-sticky;position:sticky;top:0;background-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));z-index:1;border-top-left-radius:6px;border-top-right-radius:6px;}/*!sc*/ .iphEWz{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-bottom:none;max-width:100%;padding-left:8px;padding-right:8px;}/*!sc*/ .hUCRAk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .cwoBXV[data-size="medium"]{color:var(--fgColor-muted,var(--color-fg-subtle,#6e7781));padding-left:8px;padding-right:8px;}/*!sc*/ .QkQOb{padding:32px;overflow:auto;}/*!sc*/ data-styled.g1[id="Box-sc-g0xbh4-0"]{content:"iVEunk,jzuOtQ,bGojzy,iNSVHo,bVgnfw,CEgMp,gMOVLe,gUkoLg,bZBlpz,lhTYNA,ffLUq,bmcJak,fLXEGX,lmSMZJ,dqfxud,fGwBZA,jxTzTd,gqqBXN,dzXgxt,iWFGlI,vcvyP,YUPas,izFOf,cjVDqW,vIPPs,fdROMU,jGKpsv,jdgHnn,bQivRW,ldkMIO,jMbWeI,gpqjiB,dzCJzi,eNCcrz,bHTcCe,csrIcr,bUQNHB,jPdcfu,iphEWz,hUCRAk,cwoBXV,QkQOb,"}/*!sc*/ .brGdpi{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip:rect(0,0,0,0);clip:rect(0,0,0,0);white-space:nowrap;border-width:0;}/*!sc*/ data-styled.g5[id="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0"]{content:"brGdpi,"}/*!sc*/ .hWlpPn{position:relative;display:inline-block;}/*!sc*/ .hWlpPn::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;-webkit-text-decoration:none;text-decoration:none;text-shadow:none;text-transform:none;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;opacity:0;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .hWlpPn:hover::after,.hWlpPn:active::after,.hWlpPn:focus::after,.hWlpPn:focus-within::after{display:inline-block;-webkit-text-decoration:none;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-no-delay:hover::after,.hWlpPn.tooltipped-no-delay:active::after,.hWlpPn.tooltipped-no-delay:focus::after,.hWlpPn.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-multiline:hover::after,.hWlpPn.tooltipped-multiline:active::after,.hWlpPn.tooltipped-multiline:focus::after,.hWlpPn.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-se::after,.hWlpPn.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/ .hWlpPn.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-sw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-n::after,.hWlpPn.tooltipped-ne::after,.hWlpPn.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/ .hWlpPn.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-nw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/ .hWlpPn.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate;}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-s::after,.hWlpPn.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-w::after,.hWlpPn.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/ .hWlpPn.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/ .hWlpPn.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/ data-styled.g16[id="Tooltip__TooltipBase-sc-17tf59c-0"]{content:"hWlpPn,"}/*!sc*/ .liVpTx{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:125px;}/*!sc*/ data-styled.g18[id="Truncate__StyledTruncate-sc-23o1d2-0"]{content:"liVpTx,"}/*!sc*/ </style> <!-- --> <!-- --> <div class="Box-sc-g0xbh4-0 iVEunk"><div class="Box-sc-g0xbh4-0 jzuOtQ"><div class="Box-sc-g0xbh4-0 bGojzy"></div></div><div class="Box-sc-g0xbh4-0 iNSVHo"><div class="Box-sc-g0xbh4-0 bVgnfw"><div class="Box-sc-g0xbh4-0 CEgMp"><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="master branch" data-testid="anchor-button" class="Box-sc-g0xbh4-0 gMOVLe prc-Button-ButtonBase-c50BI overview-ref-selector width-full" data-loading="false" data-size="medium" data-variant="default" aria-describedby="branch-picker-repos-header-ref-selector-loading-announcement" id="branch-picker-repos-header-ref-selector"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x"><div class="Box-sc-g0xbh4-0 bZBlpz"><div class="Box-sc-g0xbh4-0 lhTYNA"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></div><div class="Box-sc-g0xbh4-0 ffLUq ref-selector-button-text-container"><span class="Box-sc-g0xbh4-0 bmcJak prc-Text-Text-0ima0"> <!-- -->master</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><button hidden="" data-hotkey-scope="read-only-cursor-text-area"></button></div><div class="Box-sc-g0xbh4-0 fLXEGX"><a style="--button-color:fg.muted" type="button" href="/Mk555/awesome-tuis/branches" class="Box-sc-g0xbh4-0 lmSMZJ prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rclab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Branches</span></span></a><a style="--button-color:fg.muted" type="button" href="/Mk555/awesome-tuis/tags" class="Box-sc-g0xbh4-0 lmSMZJ prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rklab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-tag" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Tags</span></span></a></div><div class="Box-sc-g0xbh4-0 dqfxud"><a style="--button-color:fg.muted" type="button" aria-label="Go to Branches page" href="/Mk555/awesome-tuis/branches" class="Box-sc-g0xbh4-0 fGwBZA prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":Relab:-loading-announcement"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></a><a style="--button-color:fg.muted" type="button" aria-label="Go to Tags page" href="/Mk555/awesome-tuis/tags" class="Box-sc-g0xbh4-0 fGwBZA prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":Rmlab:-loading-announcement"><svg aria-hidden="true" focusable="false" class="octicon octicon-tag" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg></a></div></div><div class="Box-sc-g0xbh4-0 jxTzTd"><div class="Box-sc-g0xbh4-0 gqqBXN"><div class="Box-sc-g0xbh4-0 dzXgxt"><!--$--><div class="Box-sc-g0xbh4-0 iWFGlI"><span class="Box-sc-g0xbh4-0 vcvyP TextInput-wrapper prc-components-TextInputWrapper-i1ofR prc-components-TextInputBaseWrapper-ueK9q" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id=":R2j5ab:" aria-hidden="true"><svg aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellcheck="false" placeholder="Go to file" aria-describedby=":R2j5ab: :R2j5abH1:" data-component="input" class="prc-components-Input-Ic-y8" value=""/><span class="TextInput-icon" id=":R2j5abH1:" aria-hidden="true"></span></span></div><!--/$--></div><div class="Box-sc-g0xbh4-0 YUPas"><button type="button" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":Rr5ab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Go to file</span></span></button></div><div class="react-directory-add-file-icon"></div><div class="react-directory-remove-file-icon"></div></div><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="primary" aria-describedby=":R55ab:-loading-announcement" id=":R55ab:"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-code hide-sm" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Code</span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="Box-sc-g0xbh4-0 izFOf"><button data-component="IconButton" type="button" aria-label="Open more actions menu" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R75ab:-loading-announcement" id=":R75ab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button></div></div></div><div data-testid="branch-info-bar" aria-live="polite" class="Box-sc-g0xbh4-0 cjVDqW"><div style="width:40%" class="Skeleton Skeleton--text"> </div><div style="width:30%" class="Skeleton Skeleton--text"> </div></div><div class="Box-sc-g0xbh4-0 vIPPs"><div data-hpc="true"><button hidden="" data-testid="focus-next-element-button" data-hotkey="j"></button><button hidden="" data-testid="focus-previous-element-button" data-hotkey="k"></button><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading" id="folders-and-files">Folders and files</h2><table aria-labelledby="folders-and-files" class="Box-sc-g0xbh4-0 fdROMU"><thead class="Box-sc-g0xbh4-0 jGKpsv"><tr class="Box-sc-g0xbh4-0 jdgHnn"><th colSpan="2" class="Box-sc-g0xbh4-0 bQivRW"><span class="text-bold">Name</span></th><th colSpan="1" class="Box-sc-g0xbh4-0 ldkMIO"><span class="text-bold">Name</span></th><th class="hide-sm"><div title="Last commit message" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx width-fit"><span class="text-bold">Last commit message</span></div></th><th colSpan="1" class="Box-sc-g0xbh4-0 jMbWeI"><div title="Last commit date" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx width-fit"><span class="text-bold">Last commit date</span></div></th></tr></thead><tbody><tr class="Box-sc-g0xbh4-0 gpqjiB"><td colSpan="3" class="bgColor-muted p-1 rounded-top-2"><div class="Box-sc-g0xbh4-0 dzCJzi"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">History</h2><a href="/Mk555/awesome-tuis/commits/master/" class="prc-Button-ButtonBase-c50BI d-none d-lg-flex LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":Raqj8pab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x"><span class="fgColor-default">264 Commits</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><span role="tooltip" aria-label="264 Commits" id="history-icon-button-tooltip" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-n"><a href="/Mk555/awesome-tuis/commits/master/" class="prc-Button-ButtonBase-c50BI LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":R1iqj8pab:-loading-announcement history-icon-button-tooltip"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a></span></div></div></div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-0"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="This path skips through empty directories" aria-label=".github/workflows, (Directory)" class="Link--primary" href="/Mk555/awesome-tuis/tree/master/.github/workflows"><span class="react-directory-default-color" data-testid="path-name-segment">.github/</span><span class="" data-testid="path-name-segment">workflows</span></a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="This path skips through empty directories" aria-label=".github/workflows, (Directory)" class="Link--primary" href="/Mk555/awesome-tuis/tree/master/.github/workflows"><span class="react-directory-default-color" data-testid="path-name-segment">.github/</span><span class="" data-testid="path-name-segment">workflows</span></a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-1"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="README.md" aria-label="README.md, (File)" class="Link--primary" href="/Mk555/awesome-tuis/blob/master/README.md">README.md</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="README.md" aria-label="README.md, (File)" class="Link--primary" href="/Mk555/awesome-tuis/blob/master/README.md">README.md</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="Box-sc-g0xbh4-0 eNCcrz d-none" data-testid="view-all-files-row"><td colSpan="3" class="Box-sc-g0xbh4-0 bHTcCe"><div><button class="prc-Link-Link-85e08">View all files</button></div></td></tr></tbody></table></div><div class="Box-sc-g0xbh4-0 csrIcr"><div class="Box-sc-g0xbh4-0 bUQNHB"><div itemscope="" itemType="https://schema.org/abstract" class="Box-sc-g0xbh4-0 jPdcfu"><h2 class="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0 brGdpi">Repository files navigation</h2><nav class="Box-sc-g0xbh4-0 iphEWz prc-components-UnderlineWrapper-oOh5J" aria-label="Repository files"><ul class="prc-components-UnderlineItemList-b23Hf" role="list"><li class="Box-sc-g0xbh4-0 hUCRAk"><a class="prc-components-UnderlineItem-lJsg-" href="#" aria-current="page"><span data-component="icon"><svg aria-hidden="true" focusable="false" class="octicon octicon-book" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path></svg></span><span data-component="text" data-content="README">README</span></a></li></ul></nav><button style="--button-color:fg.subtle" type="button" aria-label="Outline" aria-haspopup="true" aria-expanded="false" tabindex="0" class="Box-sc-g0xbh4-0 cwoBXV prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rr9ab:-loading-announcement" id=":Rr9ab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-list-unordered" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg></button></div><div class="Box-sc-g0xbh4-0 QkQOb js-snippet-clipboard-copy-unpositioned undefined" data-hpc="true"><article class="markdown-body entry-content container-lg" itemprop="text"><div class="markdown-heading" dir="auto"><h1 tabindex="-1" class="heading-element" dir="auto">Awesome TUIs</h1><a id="user-content-awesome-tuis" class="anchor" aria-label="Permalink: Awesome TUIs" href="#awesome-tuis"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">List of projects that provide terminal user interfaces</p> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Table of Contents</h2><a id="user-content-table-of-contents" class="anchor" aria-label="Permalink: Table of Contents" href="#table-of-contents"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#dashboards">Dashboards</a></li> <li><a href="#development">Development</a></li> <li><a href="#editors">Editors</a></li> <li><a href="#games">Games</a></li> <li><a href="#libraries">Libraries</a></li> <li><a href="#messaging">Messaging</a></li> <li><a href="#miscellaneous">Miscellaneous</a></li> <li><a href="#multimedia">Multimedia</a></li> <li><a href="#productivity">Productivity</a></li> <li><a href="#web">Web</a></li> </ul> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Dashboards</h2><a id="user-content-dashboards" class="anchor" aria-label="Permalink: Dashboards" href="#dashboards"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://github.com/lissy93/AdGuardian-Term">AdGuardian-Term</a> A TUI dashboard for monitoring real-time traffic from an AdGuard Home instance.</li> <li><a href="https://github.com/aristocratos/bashtop">bashtop</a> Resource manager written in bash</li> <li><a href="https://github.com/facebookincubator/below">below</a> A time traveling resource monitor for modern Linux systems</li> <li><a href="https://github.com/tgraf/bmon">bmon</a> A monitoring and debugging tool to capture networking related statistics and prepare them visually.</li> <li><a href="https://github.com/ClementTsang/bottom">bottom</a> A customizable graphical process/system monitor for the terminal.</li> <li><a href="https://github.com/aristocratos/bpytop">bpytop</a> A Python-based system monitor with lots of information.</li> <li><a href="https://github.com/aristocratos/btop">btop++</a> Resource monitor with extras</li> <li><a href="https://github.com/miguelmota/cointop">cointop</a> The fastest and most interactive terminal based UI application for tracking cryptocurrencies</li> <li><a href="https://github.com/bcicen/ctop">ctop</a> Top-like interface for container metrics</li> <li><a href="https://github.com/cyring/CoreFreq">CoreFreq</a> CPU monitoring software designed for the 64-bits Processors</li> <li><a href="https://github.com/hashicorp/damon">damon</a> TUI interface for Hashicorp Nomad</li> <li><a href="https://github.com/lirantal/dockly">dockly</a> Immersive terminal interface for managing docker containers and services</li> <li><a href="https://github.com/moncho/dry">dry</a> A Docker manager for the terminal</li> <li><a href="https://github.com/awslabs/eks-node-viewer/">eks-node-viewer</a> visualizing dynamic node usage within a kubernetes cluster</li> <li><a href="https://github.com/dylanaraps/fff">fff</a> A simple file manager written in bash.</li> <li><a href="https://github.com/irishmaestro/fubar">fubar</a> Formidable Unix Binary Arsenal &amp; Repository. TUI built for gtfobins power users.</li> <li><a href="https://github.com/nicolargo/glances">Glances</a> Glances an Eye on your system. A top/htop alternative.</li> <li><a href="https://github.com/allinurl/goaccess">Goaccess</a> GoAccess is a real-time web log analyzer and interactive viewer that runs in a terminal in nix systems or through your browser.</li> <li><a href="https://github.com/xxxserxxx/gotop">gotop</a> A terminal based graphical activity monitor inspired by gtop and vtop</li> <li><a href="https://github.com/orf/gping">gping</a> Ping, but with a graph</li> <li><a href="https://github.com/slok/grafterm">Grafterm</a> Metrics dashboards on terminal, a Grafana inspired terminal version</li> <li><a href="https://github.com/htop-dev/htop">htop</a> Interactive text-mode process viewer for Unix systems. It aims to be a better 'top'</li> <li><a href="https://github.com/PierreKieffer/htui">htui</a> Heroku Terminal User Interface</li> <li><a href="https://github.com/kdash-rs/kdash">kdash</a> A simple and fast dashboard for Kubernetes</li> <li><a href="https://github.com/derailed/k9s">k9s</a> TUI for managing a Kubernetes cluster</li> <li><a href="https://github.com/orhun/kmon">kmon</a> Linux Kernel Manager and Activity Monitor</li> <li><a href="https://github.com/jesseduffield/lazydocker">lazydocker</a> The lazier way to manage everything docker</li> <li><a href="https://github.com/Chleba/netscanner">netscanner</a> Network scanner</li> <li><a href="https://github.com/jarun/nnn">nnn</a> n³ The unorthodox terminal file manager</li> <li><a href="https://github.com/Syllo/nvtop">nvtop</a> GPUs process monitoring for AMD, Intel and NVIDIA</li> <li><a href="https://github.com/mrusme/planor">Planor</a> The Cloud Aviator, dashboard for AWS, Vultr, Heroku, ...</li> <li><a href="https://github.com/containers/podman-tui">Podman-tui</a> TUI for Podman containers</li> <li><a href="https://github.com/TomasTomecek/sen">sen</a> Terminal User Interface for docker engine</li> <li><a href="https://github.com/amanusk/s-tui">s-tui</a> CPU stress and monitoring utility</li> <li><a href="https://github.com/joehillen/sysz">sysz</a> An fzf terminal UI for systemctl</li> <li><a href="https://github.com/jessfraz/tdash">tdash</a> A terminal dashboard with stats from Google Analytics, GitHub, Travis CI, and Jenkins. Very much built specific to me</li> <li><a href="https://github.com/pythops/tegratop">tegratop</a> Monitoring tool (top like) for Nvidia jetson boards</li> <li><a href="https://github.com/gizak/termui">TermUI</a> Golang terminal dashboard</li> <li><a href="https://github.com/franckverrot/trek">trek</a> ncurses explorer for Hashicorp Nomad clusters</li> <li><a href="https://github.com/fujiapple852/trippy">trippy</a> A network diagnostic tool that includes functionality like mtr and more</li> <li><a href="https://github.com/inv2004/ttop">ttop</a> System monitoring tool with historical data service, triggers and top-like TUI</li> <li><a href="https://github.com/robinovitch61/wander">wander</a> HashiCorp Nomad terminal client</li> <li><a href="https://github.com/senorprogrammer/wtf">WTF</a> The personal information dashboard for your terminal.</li> <li><a href="https://github.com/bvaisvil/zenith">zenith</a> In terminal graphical metrics for your *nix system written in Rust</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Development</h2><a id="user-content-development" class="anchor" aria-label="Permalink: Development" href="#development"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://github.com/P403n1x87/austin-tui">austin-tui</a> The top-like text-based user interface for Austin</li> <li><a href="https://github.com/razeghi71/burf">burf</a> TUI for Google Cloud Storage (GCS)</li> <li><a href="https://github.com/fipso/cntui">cnTUI</a> Replay chrome requests from your terminal using curl</li> <li><a href="https://github.com/agvxov/csope">csope</a> C source code browser based on cscope</li> <li><a href="https://github.com/PThorpe92/CuTE">CuTE</a> TUI to help build, execute and save curl commands, recursively download from remote sources, test your API endpoints, and mange your keys</li> <li><a href="https://github.com/DataDog/ddqa">ddqa</a> Jira TUI to help with software releases</li> <li><a href="https://github.com/dandavison/delta">delta</a> A syntax-highlighting pager for git, diff, and grep output.</li> <li><a href="https://github.com/joouha/euporie">euporie</a> Jupyter notebooks in the terminal</li> <li><a href="https://github.com/extrawurst/gitui">gitui</a> blazing fast terminal-ui for git written in rust</li> <li><a href="https://github.com/andrewshadura/git-crecord">git-crecord</a> interactive selective commit tool</li> <li><a href="https://github.com/rgburke/grv">grv</a> Terminal interface for viewing git repositories</li> <li><a href="https://github.com/tconbeer/harlequin">harlequin</a> The SQL IDE for Your Terminal</li> <li><a href="https://github.com/noahgorstein/jqp">jqp</a> A TUI playground to experiment with jq</li> <li><a href="https://github.com/jesseduffield/lazygit">lazygit</a> Simple terminal UI for git commands</li> <li><a href="https://github.com/jorgerojas26/lazysql">lazysql</a> A cross-platform TUI database management tool written in Go.</li> <li><a href="https://www.mitmproxy.org" rel="nofollow">mitmproxy</a> A free and open source interactive HTTPS proxy</li> <li><a href="https://github.com/maaslalani/nap">nap</a> Code snippets in your terminal</li> <li><a href="https://github.com/paololazzari/play">play</a> A TUI playground to experiment with your favorite programs, such as grep, sed, awk, jq and yq</li> <li><a href="https://github.com/dhth/prs">prs</a> Stay updated on PRs without leaving the terminal</li> <li><a href="https://github.com/inducer/pudb">pudb</a> A console-based visual debugger for Python</li> <li><a href="https://github.com/jwlodek/pyautogit">pyautogit</a> A terminal UI for managing git repositories, written using py_cui</li> <li><a href="https://github.com/stateful/runme">runme</a> Discover and run code snippets directly from your README.md or other markdowns</li> <li><a href="https://github.com/Theodo-UK/sls-dev-tools">sls-dev-tools</a> Dev Tools for the Serverless World</li> <li><a href="https://github.com/mathaou/termdbms">termdbms</a> A TUI for viewing and editing database files.</li> <li><a href="https://github.com/idoavrah/terraform-tui">terraform-tui</a> view and interact with Terraform state</li> <li><a href="https://github.com/charmbracelet/soft-serve">soft-serve</a> A tasty, self-hostable Git server for the command lineicecream</li> <li><a href="https://github.com/jonas/tig">tig</a> Text-mode interface for git</li> <li><a href="https://github.com/thebsdbox/vctui">vctui</a> Console interface for vCenter</li> <li><a href="https://github.com/braheezy/violet">violet</a> Colorful TUI frontend to run Vagrant commands</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Editors</h2><a id="user-content-editors" class="anchor" aria-label="Permalink: Editors" href="#editors"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://github.com/jmacdonald/amp">amp</a> A complete text editor for your terminal</li> <li><a href="https://helix-editor.com/" rel="nofollow">helix</a> A post-modern text editor.</li> <li><a href="https://github.com/Textualize/frogmouth">frogmouth</a> A Markdown browser for your terminal</li> <li><a href="http://kakoune.org/" rel="nofollow">kakoune</a> A modern, modal text editor with focus on interactivity and efficiency</li> <li><a href="https://github.com/zyedidia/micro">micro</a> A modern and intuitive terminal-based text editor</li> <li><a href="https://github.com/xyproto/orbiton">orbiton</a> Text editor limited by VT100, suitable for programming, writing git commit messages and editing Markdown</li> <li><a href="https://github.com/slap-editor/slap">slap</a> Sublime-like terminal-based text editor</li> <li><a href="https://github.com/magiblot/turbo">turbo</a> An experimental text editor for the terminal, based on Scintilla and Turbo Vision</li> <li><a href="https://github.com/zee-editor/zee">zee</a> A modern text editor for the terminal written in Rust</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Games</h2><a id="user-content-games" class="anchor" aria-label="Permalink: Games" href="#games"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://github.com/tiehuis/2048-cli">2048-cli</a> The game 2048 for your Linux terminal</li> <li><a href="https://github.com/TheMozg/awk-raycaster">awkaster</a> Pseudo-3D shooter written completely in gawk using raycasting technique</li> <li><a href="https://github.com/fph/bastet">bastet</a> Evil falling block game</li> <li><a href="https://github.com/jifunks/botany/">botany</a> Virtual plant buddy</li> <li><a href="https://github.com/ilyakurdyukov/brickgame-4bit">brickgame-4bit</a> Brick Game emulator (4-bit Holtek chip)</li> <li><a href="https://github.com/tmewett/BrogueCE">BrogueCE</a> Beautiful roguelike dungeon crawler</li> <li><a href="https://gitlab.com/jallbrit/cbonsai" rel="nofollow">cbonsai</a> A bonsai tree generator</li> <li><a href="https://github.com/thomas-mauran/chess-tui">chess-tui</a> Play Chess in your terminal, built in rust</li> <li><a href="https://github.com/ajeetdsouza/clidle">clidle</a> Play Wordle in your terminal. Also works over SSH!</li> <li><a href="https://github.com/wojciech-graj/doom-ascii">DOOM-ASCII</a> Text-based DOOM running in terminal.</li> <li><a href="https://github.com/gabrielrcouto/php-terminal-gameboy-emulator">Gameboy Emulator</a> A PHP Terminal GameBoy Emulator</li> <li><a href="https://github.com/sachaos/go-life">go-life</a> Terminal based Conway's Game of Life</li> <li><a href="https://gitlab.com/esr/greed" rel="nofollow">Greed</a> A game of consumption. Eat as much as you can before munching yourself into a corner!</li> <li><a href="https://github.com/troglobit/snake">Micro Snake</a> A small snake game, utilizing ANSI escape sequences to draw the board.</li> <li><a href="https://github.com/troglobit/tetris">Micro Tetris</a> One of the smallest Tetris implementations in the world, utilizing only ANSI escape sequences to draw the board.</li> <li><a href="https://github.com/seehuhn/moon-buggy">moon-buggy</a> Drive some car across the moon</li> <li><a href="https://sourceforge.net/projects/myman/" rel="nofollow">MyMan</a> MyMan is a video game for color and monochrome text terminals in the genre of Namco's Pac-Man</li> <li><a href="https://github.com/billyvinning/nchess">nchess</a> Chess in the terminal, written in C.</li> <li><a href="https://github.com/NetHack/NetHack">NetHack</a> Dungeon exploration game</li> <li><a href="http://ninvaders.sourceforge.net/" rel="nofollow">nInvaders</a> Space Invaders</li> <li><a href="https://github.com/alexdantas/nSnake">nSnake</a> The classic snake game with textual interface</li> <li><a href="https://github.com/jubalh/nudoku">nudoku</a> ncurses based sudoku game</li> <li><a href="https://github.com/vyalovvldmr/onx">onx</a> Noughts &amp; Crosses client-server game with your partner. Based on textual and python.</li> <li><a href="https://github.com/lxgr-linux/pokete">pokete</a> A terminal based Pokemon like game</li> <li><a href="https://github.com/wick3dr0se/snake">snake</a> 🎮 A super minimal TUI snake game written in pure BASH v5.1+</li> <li><a href="https://github.com/learnbyexample/TUI-apps/tree/main/SquareTicTacToe">Square Tic Tac Toe</a> Like Tic Tac Toe, but form a square with 4 corners instead of a line</li> <li><a href="https://github.com/zachlatta/sshtron">sshtron</a> multiplayer lightcycle game that runs through SSH</li> <li><a href="https://github.com/AngelJumbo/sssnake">sssnake</a> The classic snake game for the terminal that can play itself and be used like a screensaver.</li> <li><a href="https://github.com/dmadisetti/steam-tui">steam-tui</a> Just a simple TUI client for steamcmd. Allows for the graphical launching, updating, and downloading of steam games through a simple terminal client.</li> <li><a href="https://github.com/MitchelPaulin/sudoku-rs">sudoku-rs</a> Sudoku built with tui-rs</li> <li><a href="https://github.com/igor47/sweeper">sweeper</a> Minesweeper game using curtsies</li> <li><a href="https://gitlab.com/dustyweb/terminal-phase" rel="nofollow">terminal-phase</a> Space shooter game that runs in your terminal!</li> <li><a href="https://github.com/taylorconor/tinytetris">tinytetris</a> 80x23 terminal tetris!</li> <li><a href="https://github.com/mpereira/tty-solitaire">tty-solitaire</a> Solitaire runs in your terminal!</li> <li><a href="https://github.com/m-dango/raku-wordle/">Wordle</a> Script and library for Wordle, written in Raku</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Libraries</h2><a id="user-content-libraries" class="anchor" aria-label="Permalink: Libraries" href="#libraries"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://github.com/colinta/Ashen">Ashen</a> An Elm inspired framework written in <strong>Swift</strong></li> <li><a href="https://github.com/chjj/blessed">blessed</a> A high-level terminal interface library for <strong>Node.js</strong></li> <li><a href="https://github.com/jquast/blessed">blessed</a> Blessed is an easy, practical library for making <strong>Python</strong> terminal apps</li> <li><a href="https://github.com/erikrose/blessings">blessings</a> A <strong>Python</strong> wrapper lib for ncurses that makes your code pretty to look at</li> <li><a href="https://github.com/charmbracelet/bubbletea">bubbletea</a> A <strong>Go</strong> framework based on Elm to build functional and stateful TUI apps, complete with extensions known as <a href="https://github.com/charmbracelet/bubbles">bubbles</a></li> <li><a href="https://github.com/saccharineboi/CursedGL">CursedGL</a> A <strong>C</strong> notcurses-based software rasterizer inspired by OpenGL 1.X that renders directly to the terminal.</li> <li><a href="https://github.com/gansm/finalcut">FINAL CUT</a> <strong>C++</strong> library for creating terminal applications with text-based widgets</li> <li><a href="https://github.com/ArthurSonzogni/FTXUI">FTXUI</a> 💻 <strong>C++</strong> Functional Terminal User Interface. ❤️</li> <li><a href="https://github.com/jroimartin/gocui">gocui</a> Minimalist <strong>Go</strong> package aimed at creating Console User Interfaces</li> <li><a href="https://github.com/migueldeicaza/gui.cs">gui.cs</a> Console-based user interface toolkit for <strong>.NET</strong> applications</li> <li><a href="https://github.com/charmbracelet/gum">gum</a> A tool for glamorous <strong>shell</strong> scripts</li> <li><a href="https://github.com/ggerganov/imtui">imtui</a> An immediate mode text-based user interface <strong>C++</strong> library, supporting 256 ANSI colors and mouse/keyboard input.</li> <li><a href="https://github.com/vadimdemedes/ink">ink</a> React for <strong>Node.js</strong> interactive command-line apps</li> <li><a href="https://github.com/mabe02/lanterna">Lanterna</a> A <strong>Java</strong> library for creating text-based UIs, very similar to the C library curses but with more functionality.</li> <li><a href="https://invisible-island.net/ncurses/announce.html" rel="nofollow">ncurses</a> A classic <strong>C</strong> library with bindings for many languages</li> <li><a href="https://github.com/ansiwave/nimwave">nimwave</a> Build text interfaces for the terminal or browser in <strong>Nim</strong></li> <li><a href="https://github.com/dankamongmen/notcurses">notcurses</a> blingful character graphics/TUI library for <strong>C</strong> and <strong>Python</strong>. definitely not curses.</li> <li><a href="https://github.com/php-tui/php-tui">php-tui</a> comprehensive TUI library for <strong>PHP</strong> based heavily on Ratatui.</li> <li><a href="https://github.com/pterm/pterm/">pterm</a> A modern <strong>Go</strong> module to beautify console output. Featuring charts, progressbars, tables, trees, and much more! It's completely configurable and 100% cross-platform compatible.</li> <li><a href="https://github.com/jwlodek/py_cui">py_cui</a> <strong>Python</strong> library aimed at making widget based TUI/CUI interfaces as simple as possible. Supports standard widgets and popups like menus, textboxes, forms, file explorers etc.</li> <li><a href="https://github.com/bczsalba/pytermgui">pytermgui</a> A simple yet powerful TUI framework for your <strong>Python</strong> (3.7+) applications.</li> <li><a href="https://github.com/ceccopierangiolieugenio/pyTermTk">pyTermTk</a> self-contained TUI library for <strong>Python</strong> with a QT-like API semantics</li> <li><a href="https://github.com/prompt-toolkit/python-prompt-toolkit">Python Prompt Toolkit</a> Library for building powerful interactive command line applications in <strong>Python</strong></li> <li><a href="https://github.com/tui-rs-revival/ratatui">Ratatui</a> A <strong>Rust</strong> crate for building Terminal UIs (actively maintained fork of tui-rs).</li> <li><a href="https://github.com/willmcgugan/rich">Rich</a> is a <strong>Python</strong> library for rich text and beautiful formatting in the terminal.</li> <li><a href="https://github.com/76creates/stickers">stickers</a> Building blocks for charmbracelet/lipgloss in <strong>Go</strong></li> <li><a href="https://github.com/gdamore/tcell">tcell</a> Tcell is an alternate <strong>Go</strong> terminal package, similar in some ways to termbox, but better in others.</li> <li><a href="https://github.com/termbox/termbox2">termbox2</a> A terminal rendering library for creating TUIs.</li> <li><a href="https://github.com/willmcgugan/textual">textual</a> is a TUI (Text User Interface) framework for <strong>Python</strong> inspired by modern web development.</li> <li><a href="https://github.com/thermage/thermage">Thermage</a> Thermage is a <strong>PHP</strong> library that provides a fluent and incredibly powerful, object-oriented interface for customizing CLI output text color, background, formatting, theming and more.</li> <li><a href="https://github.com/wojciech-graj/TermGL">TermGL</a> A terminal-based graphics library for 2D and 3D graphics.</li> <li><a href="https://github.com/marcusolsson/tui-go">tui-go</a> A <strong>Go</strong> UI library for terminal applications (deprecated)</li> <li><a href="https://github.com/fdehau/tui-rs">tui-rs</a> Terminal user interfaces and dashboards using <strong>Rust</strong> (no longer maintained, use Ratatui instead).</li> <li><a href="https://github.com/Cubified/tuibox">tuibox</a> A single-header <strong>C</strong> terminal UI library, capable of creating mouse-driven, interactive applications on the command line.</li> <li><a href="https://github.com/tuiwidgets/tuiwidgets">Tui Widgets</a> A high-level widget based toolkit for terminal applications.</li> <li><a href="https://github.com/rivo/tview/">tview</a> Terminal UI library with rich, interactive widgets — written in <strong>Go</strong></li> <li><a href="https://github.com/magiblot/tvision">tvision</a> A modern port of <strong>C++</strong> Turbo Vision 2.0, cross-platform and Unicode support.</li> <li><a href="https://github.com/unicurses/unicurses">UniCurses</a> A <strong>Python</strong> module that is aimed at providing the Curses functionality on all operating systems.</li> <li><a href="https://github.com/urwid/urwid">urwid</a> A console user interface library for <strong>Python</strong> on Linux, OSX, Cygwin or other unix-like OS.</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Messaging</h2><a id="user-content-messaging" class="anchor" aria-label="Permalink: Messaging" href="#messaging"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://aerc-mail.org/" rel="nofollow">aerc</a> Email client</li> <li><a href="https://github.com/quackduck/devzat">Devzat</a> Chat over SSH, written in Golang with self-hosting ability.</li> <li><a href="https://github.com/ayntgl/discordo">discordo</a> A lightweight, secure, and feature-rich Discord terminal client</li> <li><a href="https://github.com/mrusme/gomphotherium">Gomphotherium</a> A command line Mastodon client.</li> <li><a href="https://github.com/tulir/gomuks">gomuks</a> Matrix client</li> <li><a href="https://github.com/yellowsink/gord">gord</a> TUI discord client. updated fork of the now-outdated cordless.</li> <li><a href="https://irssi.org/" rel="nofollow">irssi</a> An IRC terminal client</li> <li><a href="https://github.com/matterhorn-chat/matterhorn">matterhorn</a> A Mattermost terminal client.</li> <li><a href="https://mcabber.com/" rel="nofollow">mcabber</a> XMPP (Jabber) client</li> <li><a href="https://meli.delivery/" rel="nofollow">meli</a> Email client</li> <li><a href="https://gitlab.com/muttmua/mutt" rel="nofollow">Mutt</a> Email client</li> <li><a href="https://github.com/d99kris/nchat">nchat</a> Telegram/WhatsApp client</li> <li><a href="https://github.com/akiomik/nostui">nostui</a> Nostr client</li> <li><a href="https://profanity-im.github.io" rel="nofollow">Profanity</a> XMPP (Jabber) client</li> <li><a href="https://github.com/haskellcamargo/sclack">sclack</a> Slack terminal client</li> <li><a href="https://github.com/isamert/scli/">scli</a> A simple terminal user interface for signal messenger</li> <li><a href="https://github.com/derricw/siggo">siggo</a> A terminal ui for signal-cli, written in Go</li> <li><a href="https://github.com/erroneousboat/slack-term">Slack-term</a> Slack client for your terminal</li> <li><a href="https://github.com/sup-heliotrope/sup">sup</a> A curses threads-with-tags style email client</li> <li><a href="https://github.com/mrusme/superhighway84">Superhighway84</a> USENET-inspired decentralized internet discussion system</li> <li><a href="https://github.com/ihabunek/toot">toot</a> Mastodon CLI &amp; TUI</li> <li><a href="https://github.com/pythops/tuix">tuix</a> TUI for managing screens</li> <li><a href="https://github.com/RasmusLindroth/tut">tut</a> Mastodon TUI client</li> <li><a href="https://github.com/Xithrius/twitch-tui">twitch-tui</a> Twitch chat in the terminal</li> <li><a href="https://weechat.org/" rel="nofollow">Weechat</a> Extensible chat client</li> <li><a href="https://github.com/zulip/zulip-terminal">zulip-terminal</a> Official Zulip terminal client (similar to matterhorn)</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Miscellaneous</h2><a id="user-content-miscellaneous" class="anchor" aria-label="Permalink: Miscellaneous" href="#miscellaneous"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://github.com/darkhz/adbtuifm">adbtuifm</a> A TUI file manager for Android, based on the Android Debug Bridge(ADB).</li> <li><a href="https://github.com/reportaman/arttime">arttime</a> An app that brings beauty of text-art together with functionality of clock, timer, and pattern-based time manager.</li> <li><a href="https://github.com/dewberryants/asciiMol">asciiMol</a> Curses based ASCII molecule viewer for linux terminals.</li> <li><a href="https://github.com/darkhz/bluetuith">bluetuith</a> A TUI-based bluetooth connection manager, which can interact with bluetooth adapters and devices.</li> <li><a href="https://github.com/pythops/bluetui">bluetui</a> A TUI for managing bluetooth devices.</li> <li><a href="https://dystroy.org/broot/" rel="nofollow">broot</a> A new way to see and navigate directory trees</li> <li><a href="https://github.com/NikolaDucak/caps-log">Captain's log</a> A small TUI journaling tool</li> <li><a href="https://github.com/actuday6418/Diary">diary</a> A diary app written in Rust that encrypts both text and file data, and can decrypt and build a rich HTML representation of your diary when required.</li> <li><a href="https://github.com/hyperreal64/distrobox-tui">distrobox-tui</a> TUI for managing distrobox containers</li> <li><a href="https://github.com/wagoodman/dive">dive</a> A tool for exploring each layer in a docker image</li> <li><a href="https://github.com/aws/amazon-ec2-instance-selector">ec2-instance-selector</a> A CLI tool and go library which recommends instance types based on resource criteria like vcpus and memory</li> <li><a href="https://github.com/dmsc/emu2">emu2</a> A simple DOS emulator for the Linux text console, supporting basic DOS system calls and console I/O.</li> <li><a href="https://github.com/junegunn/fzf">fzf</a> A general-purpose command-line fuzzy finder</li> <li><a href="https://github.com/dundee/gdu">gdu</a> Fast disk usage analyzer with console interface written in Go</li> <li><a href="https://github.com/google/gif-for-cli">gif-for-cli</a> Convert a gif into ASCII</li> <li><a href="https://github.com/TaKO8Ki/gobang">gobang</a> A cross-platform TUI database management tool written in Rust</li> <li><a href="https://github.com/Macmod/godap">godap</a> A complete TUI for LDAP written in Golang</li> <li><a href="https://github.com/orhun/gpg-tui">gpg-tui</a> A terminal user interface for GnuPG</li> <li><a href="https://github.com/koenvervloesem/humble-explorer">HumBLE Explorer</a> A cross-platform, command-line and human-friendly Bluetooth Low Energy scanner</li> <li><a href="https://jrnl.sh/" rel="nofollow">jrnl</a> Collect your thoughts and notes without leaving the command line. human-friendly. future-proof. secure.</li> <li><a href="https://github.com/sarub0b0/kubetui">kubetui</a> A TUI tool designed for monitoring Kubernetes resources.</li> <li><a href="https://lnav.org/" rel="nofollow">lnav</a> An advanced log file viewer for the small-scale</li> <li><a href="https://github.com/rastapasta/mapscii">mapscii</a> Braille &amp; ASCII world map renderer for your console</li> <li><a href="https://github.com/EdJoPaTo/mqttui">mqttui</a> MQTT Client written in rust</li> <li><a href="https://github.com/PabloLec/neoss">neoss</a> Socket statistics visualization and explanation tool for Unix systems.</li> <li><a href="https://developer.gnome.org/NetworkManager/stable/nmtui.html" rel="nofollow">nmtui</a> ncurses network manager</li> <li><a href="https://github.com/hatoo/oha">oha</a> HTTP load generator</li> <li><a href="https://github.com/profanity-im/profanity">profanity</a> A cross-platfrom XMPP client.</li> <li><a href="https://dev.yorhel.nl/ncdu" rel="nofollow">ncdu</a> disk usage analyzer with an ncurses interface</li> <li><a href="https://github.com/PabloLec/recoverpy">recoverpy</a> A TUI to recover overwritten or deleted data.</li> <li><a href="https://github.com/gerstner-hub/rocket.term">rocket.term</a> Text based chat client for the Rocket.chat messaging solution.</li> <li><a href="https://github.com/sachaos/tcpterm">tcpterm</a> tcpterm is a packet visualizer in TUI.</li> <li><a href="https://github.com/velorek1/terminalperiodictable">terminalperiodictable</a> A beautiful TUI periodic table for Unix systems coded in C.</li> <li><a href="https://github.com/gcla/termshark">termshark</a> Terminal UI for tshark</li> <li><a href="https://github.com/coloradocolby/thokr">thokr</a> a sleek typing tui written in rust</li> <li><a href="https://github.com/max-niederman/ttyper">ttyper</a> Terminal-based typing test</li> <li><a href="https://github.com/Gcat101/tui-shop">tui-shop</a> Something between a CLI and a GUI way of downloading TUIs/CLIs</li> <li><a href="https://github.com/vifm/vifm">vifm</a> A TUI file manager with vi-keybindings and other vim like behaviour.</li> <li><a href="https://github.com/MertGunduz/wb">wb</a> A TUI vocabulary notebook app for Linux based devices.</li> <li><a href="https://github.com/schachmat/wego">wego</a> Weather app</li> <li><a href="https://github.com/uoaerg/wavemon">wavemon</a> A wireless device monitoring application</li> <li><a href="https://github.com/andrianbdn/wg-cmd">WG Commander</a> A TUI for a simple WireGuard VPN setup: peer management, QR codes, setup wizard.</li> <li><a href="https://github.com/chubin/wttr.in">wttr.in</a> The right way to check the weather</li> <li><a href="https://github.com/sayanarijit/xplr">xplr</a> A hackable, minimal, fast TUI file explorer, stealing ideas from nnn and fzf.</li> <li><a href="https://github.com/sxyazi/yazi">yazi</a> Blazing fast terminal file manager written in Rust, based on async I/O.</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Multimedia</h2><a id="user-content-multimedia" class="anchor" aria-label="Permalink: Multimedia" href="#multimedia"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://hpjansson.org/chafa/" rel="nofollow">chafa</a> A powerful utility that converts image data, including animated GIFs, into graphics formats or ANSI/Unicode character art suitable for display in a terminal.</li> <li><a href="https://github.com/knosmos/cmdpxl">cmdpxl</a> Totally practical command-line image editor</li> <li><a href="https://cmus.github.io/" rel="nofollow">cmus</a> A small, fast and powerful console music player for Unix-like operating systems.</li> <li><a href="https://github.com/maaslalani/draw">draw</a> A simple drawing tool in the terminal.</li> <li><a href="https://github.com/xyproto/favicon-editor">favicon-editor</a> Spartan grayscale favicon editor</li> <li><a href="https://github.com/rareitems/gadacz">gadacz</a> Audiobook player</li> <li><a href="https://github.com/jgalat/image-sorter">image-sorter</a> Terminal user interface for sorting images using key bindings written in Rust</li> <li><a href="https://github.com/darkhz/invidtui">invidtui</a> A TUI Invidious client for Windows, Linux and MacOS, that fetches and plays audio/video from an invidious instance. Supports viewing and playing from playlists and channels as well.</li> <li><a href="https://github.com/pd3v/line">line</a> Tiny command-line midi sequencer and language for live coding</li> <li><a href="https://github.com/mps-youtube/mps-youtube">mps-youtube</a> Terminal based YouTube player and downloader</li> <li><a href="https://github.com/gmt4/mpvc">mpvc</a> A mpc-like control interface for mpv</li> <li><a href="https://nap.sourceforge.net/" rel="nofollow">nap</a> Linux napster client</li> <li><a href="https://github.com/hrkfdn/ncspot">ncspot</a> Cross-platform ncurses Spotify client written in Rust</li> <li><a href="https://github.com/coderholic/pyradio">pyradio</a> TUI web radio player with thousands of stations from around the world</li> <li><a href="https://github.com/Zi0P4tch0/RadioGoGo">RadioGoGo</a> Go-powered CLI to surf global radio waves via a sleek TUI.</li> <li><a href="https://github.com/winsbe01/roku-cli">roku-cli</a> A command line TUI remote for Roku</li> <li><a href="https://github.com/grobie/soundcloud2000">soundcloud2000</a> A terminal client for soundcloud</li> <li><a href="https://github.com/Rigellute/spotify-tui">spotify-tui</a> Spotify for the terminal written in Rust</li> <li><a href="https://github.com/ceuk/spotui">spotui</a> Spotify client written in Python</li> <li><a href="https://github.com/jooooscha/terminal-yt">terminal-yt</a> A small newsboat-inspired terminal youtube manager</li> <li><a href="https://github.com/1j01/textual-paint">textual-paint</a> MS Paint in your terminal</li> <li><a href="https://github.com/hzeller/timg">timg</a> A terminal image viewer</li> <li><a href="https://github.com/tizonia/tizonia-openmax-il">tizonia-openmax-il</a> Command-line cloud music player for Linux with support for Spotify, Google Play Music, YouTube, SoundCloud, Dirble, Plex servers and Chromecast devices</li> <li><a href="https://github.com/eliasdorneles/upiano">upiano</a> A Piano in your terminal</li> <li><a href="https://github.com/videolan/vlc">vlc</a> VLC includes an ncurses interface, <code>vlc --intf ncurses</code>. See documentation at <a href="https://wiki.videolan.org/Console/" rel="nofollow">https://wiki.videolan.org/Console/</a></li> <li><a href="https://github.com/sudipghimire533/ytui-music">ytui-music</a> Listen to music from youtube. Configurable, minimal, lightweight, private &amp; beautiful music client.</li> <li><a href="https://github.com/darky/ytdl-tui">ytdl-tui</a> TUI for downloading Youtube videos</li> <li><a href="https://github.com/pystardust/ytfzf">ytfzf</a> A POSIX script that helps you find Youtube videos (without API) or Peertube videos and opens/downloads them using mpv/youtube-dl</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Productivity</h2><a id="user-content-productivity" class="anchor" aria-label="Permalink: Productivity" href="#productivity"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://github.com/anufrievroman/calcure">calcure</a> Modern TUI calendar and task manager with minimal and customizable UI.</li> <li><a href="https://calcurse.org/" rel="nofollow">calcurse</a> calendar and scheduling application for the command line</li> <li><a href="https://github.com/darrenburns/elia">elia</a> A terminal ChatGPT client build with Textual</li> <li><a href="https://github.com/wick3dr0se/fml">fml</a> 📁 A stupid simple, fast file manager written in BASH v4.2+</li> <li><a href="https://github.com/mk-5/fjira">fjira</a> TUI application for Atlassian Jira</li> <li><a href="https://github.com/anmitsu/goful">goful</a> a powerful TUI file manager written in Go</li> <li><a href="https://github.com/charmbracelet/glow">Glow</a> A markdown reader, designed from the ground up to showcase the elegance and capabilities of TUI.</li> <li><a href="https://github.com/simonmichael/hledger">hledger-ui</a> A fast TUI for browsing double entry bookkeeping data</li> <li><a href="https://github.com/nadrad/h-m-m">h-m-m</a> Hackers Mind Map</li> <li><a href="https://github.com/PlankCipher/kabmat">kabmat</a> TUI program for managing kanban boards with vim-like keybindings</li> <li><a href="https://github.com/Zaloog/kanban-python">kanban-python</a> Kanban Terminal App written in Python</li> <li><a href="https://github.com/pimutils/khal">khal</a> A standards based CLI calendar program, able to synchronize with CalDAV servers</li> <li><a href="https://github.com/gokcehan/lf">lf</a> A terminal file manager written in Go with heavy inspiration from ranger file manager.</li> <li><a href="https://github.com/cantino/mcfly">mcfly</a> Intelligent context-aware search engine for your shell history</li> <li><a href="https://github.com/jaspervdj/patat">patat</a> Terminal-based presentations using Pandoc</li> <li><a href="https://github.com/manipuladordedados/pdiary">pdiary</a> A simple terminal diary journal application written in Python with encryption support</li> <li><a href="https://github.com/wick3dr0se/pkm">pkm</a> A super minimal TUI package manager wrapper written in BASH v4.2+</li> <li><a href="https://github.com/nikoladucak/pream-team/">pream-team</a> a TUI utility that helps you keep track of your teams GitHub PRs across multiple repositories</li> <li><a href="https://github.com/napisani/procmux">procmux</a> - a TUI for running multiple commands in parallel in easily switchable terminals</li> <li><a href="https://github.com/h-sifat/productivity-timer">productivity-timer</a> A command line time tracker application with a sleek TUI.</li> <li><a href="https://github.com/ranger/ranger">ranger</a> A VIM-inspired filemanager for the console</li> <li><a href="https://github.com/andmarti1424/sc-im">sc-im</a> An ncurses spreadsheet program for terminal. Reignited version of sc</li> <li><a href="https://github.com/perryrh0dan/taskline">taskline</a> Tasks, boards &amp; notes for the command-line habitat</li> <li><a href="https://github.com/kdheepak/taskwarrior-tui">taskwarrior-tui</a> A Terminal User Interface for Taskwarrior</li> <li><a href="https://github.com/pythops/tenere">tenere</a> A TUI for ChatGPT written in Rust.</li> <li><a href="https://github.com/tmux/tmux">tmux</a> Terminal multiplexer</li> <li><a href="https://github.com/pimutils/todoman">todoman</a> A simple, standards-based (ics, DAV), cli task-manager</li> <li><a href="https://github.com/topydo/topydo">topydo</a> A powerful todo list application using the todo.txt format</li> <li><a href="https://github.com/tenox7/ttyplot">ttyplot</a> A realtime plotting utility for terminals with data input from stdin/pipe.</li> <li><a href="https://github.com/GiorgosXou/TUIFIManager">TUIFIManager</a> A cross-platform terminal-based file manager <em>(supports termux)</em></li> <li><a href="https://github.com/NicoDblc/TUI_ProjectManager">TUI_ProjectManager</a> A simple project-based todo list written in Rust</li> <li><a href="https://github.com/ashis0013/tuihub">tuihub</a> A utility hub/dashboard for personal use</li> <li><a href="https://github.com/magiblot/tvterm">tvterm</a> A terminal emulator that runs in your terminal</li> <li><a href="https://github.com/saulpw/visidata">Visidata</a> A terminal spreadsheet multitool for discovering and arranging data</li> <li><a href="https://github.com/zellij-org/zellij">zellij</a> A terminal workspace with batteries included</li> <li><a href="https://vifm.info" rel="nofollow">Vifm</a> File manager with Vim bindings and scripting/configuration style</li> <li><a href="https://github.com/mrusme/zeit">zeit</a> A command line tool for tracking time spent on activities.</li> </ul> <hr> </details> <details open=""><summary><div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Web</h2><a id="user-content-web" class="anchor" aria-label="Permalink: Web" href="#web"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div></summary> <ul dir="auto"> <li><a href="https://bombadillo.colorfield.space/" rel="nofollow">bombadillo</a> A TUI browser for the non-web: Gopher, Gemini, Finger</li> <li><a href="https://github.com/browsh-org/browsh">browsh</a> A fully-modern text-based browser, rendering to TTY and browsers</li> <li><a href="https://github.com/mrusme/canard">Canard</a> A command line TUI client for the <a href="https://github.com/mrusme/journalist">Journalist</a> RSS aggregator.</li> <li><a href="https://github.com/fathyb/carbonyl">carbonyl</a> Chromium running inside your terminal</li> <li><a href="https://github.com/xgi/castero">castero</a> A TUI app to listen to podcast</li> <li><a href="https://github.com/aome510/hackernews-TUI">hackernews-TUI</a> A Terminal UI to browse Hacker News</li> <li><a href="https://github.com/donnemartin/haxor-news">haxor-news</a> Browse Hacker News like a haxor: A Hacker News command line interface (CLI)</li> <li><a href="https://lynx.invisible-island.net/" rel="nofollow">LYNX</a> A text based Terminal browser</li> <li><a href="https://github.com/newsboat/newsboat">newsboat</a> An RSS/Atom feed reader for the text console</li> <li><a href="https://github.com/Beastwick18/nyaa">nyaa</a> A nyaa.si TUI for browsing and downloading torrents</li> <li><a href="https://github.com/rakshasa/rtorrent">rtorrent</a> A text-based BitTorrent client written in C++</li> <li><a href="https://gitlab.com/BlackEdder/rttt" rel="nofollow">rttt</a> A Hackernews, RSS and Reddit reader for the terminal written in C++.</li> <li><a href="https://github.com/ezeoleaf/tblogs">tblogs</a> Read and browse development blogs from your terminal</li> <li><a href="https://github.com/ryota-ka/twterm">twterm</a> A full-featured TUI Twitter client</li> <li><a href="https://github.com/tats/w3m">w3m</a> A text-mode WWW browser</li> </ul> <hr> </details> <p dir="auto">There's a crazy amount of TUI projects out there, and we can't list them all (though we try!)</p> <p dir="auto">For more, see awesome-opensource's <a href="https://awesomeopensource.com/projects/tui" rel="nofollow">TUI Projects</a> page.</p> <p dir="auto">Looking for lightweight but not necessarily TUI? check out mayfrost's <a href="https://github.com/mayfrost/guides/blob/master/ALTERNATIVES.md">alternatives list</a>!</p> <p dir="auto">Enjoy Vim keybinds and don't want to learn new ones? check out the <a href="https://vim.reversed.top" rel="nofollow">Big Pile of Vim-like</a></p> <p dir="auto">First-hand reviews for a lot of these tools and many, many more at k.mandla's <a href="https://inconsolation.wordpress.com/index/" rel="nofollow">Inconsolation blog</a>. The site also has a "surprise me with a random tool" link!</p> </article></div></div></div></div></div> <!-- --> <!-- --> <script type="application/json" id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script></div> </react-partial> <input type="hidden" data-csrf="true" value="je9fhr5OBZE31JUIegMY6JV7IcVJxZ2cX+YrNvZhcTtyh9EeEb0Q4xMSIHTrR8oW0N/SpeAUn9WAYcdZViDhsw==" /> </div> <div data-view-component="true" class="Layout-sidebar"> <div class="BorderGrid about-margin" data-pjax> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <div class="hide-sm hide-md"> <h2 class="mb-3 h4">About</h2> <p class="f4 my-3"> List of projects that provide terminal user interfaces </p> <h3 class="sr-only">Resources</h3> <div class="mt-2"> <a class="Link--muted" data-analytics-event="{&quot;category&quot;:&quot;Repository Overview&quot;,&quot;action&quot;:&quot;click&quot;,&quot;label&quot;:&quot;location:sidebar;file:readme&quot;}" href="#readme-ov-file"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book mr-2"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> Readme </a> </div> <include-fragment src="/Mk555/awesome-tuis/hovercards/citation/sidebar_partial?tree_name=master"> </include-fragment> <div class="mt-2"> <a href="/Mk555/awesome-tuis/activity" data-view-component="true" class="Link Link--muted"><svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pulse mr-2"> <path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z"></path> </svg> <span class="color-fg-muted">Activity</span></a> </div> <h3 class="sr-only">Stars</h3> <div class="mt-2"> <a href="/Mk555/awesome-tuis/stargazers" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg> <strong>0</strong> stars</a> </div> <h3 class="sr-only">Watchers</h3> <div class="mt-2"> <a href="/Mk555/awesome-tuis/watchers" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-eye mr-2"> <path d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14c-1.981 0-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2ZM1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5c1.473 0 2.825-.742 3.955-1.715 1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5c-1.473 0-2.825.742-3.955 1.715-1.124.967-1.954 2.096-2.366 2.717ZM8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10Z"></path> </svg> <strong>0</strong> watching</a> </div> <h3 class="sr-only">Forks</h3> <div class="mt-2"> <a href="/Mk555/awesome-tuis/forks" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg> <strong>0</strong> forks</a> </div> <div class="mt-2"> <a class="Link--muted" href="/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2FMk555%2Fawesome-tuis&amp;report=Mk555+%28user%29"> Report repository </a> </div> </div> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/Mk555/awesome-tuis/releases" data-view-component="true" class="Link--primary no-underline Link">Releases</a></h2> <div class="text-small color-fg-muted">No releases published</div> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3"> <a href="/users/Mk555/packages?repo_name=awesome-tuis" data-view-component="true" class="Link--primary no-underline Link d-flex flex-items-center">Packages <span title="0" hidden="hidden" data-view-component="true" class="Counter ml-1">0</span></a></h2> <div class="text-small color-fg-muted" > No packages published <br> </div> </div> </div> </div> </div> </div></div> </div> </div> </turbo-frame> </main> </div> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <span> &copy; 2025 GitHub,&nbsp;Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10