[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-5754":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":25,"hasPages":23,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":16,"starSnapshotCount":16,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},5754,"cursive","gyscos\u002Fcursive","gyscos","A Text User Interface library for the Rust programming language","",null,"Rust",4808,264,35,196,0,1,6,22,4,29.27,"MIT License",false,"main",true,[27,28,29,30],"ncurses","rust","terminal","tui","2026-06-12 02:01:14","# Cursive\n\n[![crates.io](https:\u002F\u002Fimg.shields.io\u002Fcrates\u002Fv\u002Fcursive.svg)](https:\u002F\u002Fcrates.io\u002Fcrates\u002Fcursive)\n[![Rust](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Factions\u002Fworkflows\u002Frust.yml\u002Fbadge.svg?branch=main)](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Factions\u002Fworkflows\u002Frust.yml)\n[![MIT licensed](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Flicense-MIT-blue.svg)](.\u002FLICENSE)\n[![Gitter chat](https:\u002F\u002Fbadges.gitter.im\u002Fgyscos\u002Fcursive.png)](https:\u002F\u002Fgitter.im\u002Fcursive-rs\u002Fcursive)\n\n\nCursive is a TUI (Text User Interface) library for rust. It uses the [`crossterm`] backend by default, but [other backends are available](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fwiki\u002FBackends).\n\nIt allows you to build rich user interfaces for terminal applications.\n\n[`crossterm`]: https:\u002F\u002Fgithub.com\u002Fcrossterm-rs\u002Fcrossterm\n\n# [Documentation](http:\u002F\u002Fdocs.rs\u002Fcursive)\n\nIt is designed to be safe and easy to use:\n\n```toml\n[dependencies]\ncursive = \"0.21\"\n```\n\nOr to use the latest git version:\n\n```toml\n[dependencies]\ncursive = { git = \"https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\" }\n```\n\n```rust,no_run\nuse cursive::views::{Dialog, TextView};\n\nfn main() {\n    \u002F\u002F Creates the cursive root - required for every application.\n    let mut siv = cursive::default();\n\n    \u002F\u002F Creates a dialog with a single \"Quit\" button\n    siv.add_layer(Dialog::around(TextView::new(\"Hello Dialog!\"))\n                         .title(\"Cursive\")\n                         .button(\"Quit\", |s| s.quit()));\n\n    \u002F\u002F Starts the event loop.\n    siv.run();\n}\n```\n\n[![Cursive dialog example](https:\u002F\u002Fraw.githubusercontent.com\u002Fgyscos\u002Fcursive\u002Fmain\u002Fdoc\u002Fcursive_example.png)](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Ftree\u002Fmain\u002Fcursive\u002Fexamples\u002Fdialog.rs)\n\nCheck out the other [examples](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Ftree\u002Fmain\u002Fcursive\u002Fexamples) to get these results, and more:\n\n\u003Cdiv>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fblob\u002Fmain\u002Fcursive\u002Fexamples\u002Florem.rs\">\u003Cimg src=\"https:\u002F\u002Fimgur.com\u002FhW9M9MV.png\" alt=\"lorem.rs example\", width=\"48%\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fblob\u002Fmain\u002Fcursive\u002Fexamples\u002Fmenubar.rs\">\u003Cimg src=\"https:\u002F\u002Fimgur.com\u002Fxx3lZPz.png\" alt=\"menubar.rs example\", width=\"48%\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fblob\u002Fmain\u002Fcursive\u002Fexamples\u002Fselect.rs\">\u003Cimg src=\"https:\u002F\u002Fimgur.com\u002Fcouty0n.png\" alt=\"select.rs example\", width=\"48%\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fblob\u002Fmain\u002Fcursive\u002Fexamples\u002Fmines\u002F\">\u003Cimg src=\"https:\u002F\u002Fimgur.com\u002FvNteYyy.png\" alt=\"mines example\", width=\"48%\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fblob\u002Fmain\u002Fcursive\u002Fexamples\u002Ftheme_manual.rs\">\u003Cimg src=\"https:\u002F\u002Fi.imgur.com\u002FI9V5KRi.png\" alt=\"theme_manual.rs example\", width=\"48%\" \u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fblob\u002Fmain\u002Fcursive-syntect\u002Fexamples\u002Fparse.rs\">\u003Cimg src=\"https:\u002F\u002Fi.imgur.com\u002Fa8bfe5s.png\" alt=\"syntect example\" width=\"48%\" \u002F>\u003C\u002Fa>\n\u003C\u002Fdiv>\n\n_(Colors may depend on your terminal configuration.)_\n\n## Tutorials\n\nThese tutorials may help you get started with cursive:\n\n* [Starting with cursive: (1\u002F3)](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Ftree\u002Fmain\u002Fdoc\u002Ftutorial_1.md)\n* [Starting with cursive: (2\u002F3)](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Ftree\u002Fmain\u002Fdoc\u002Ftutorial_2.md)\n* [Starting with cursive: (3\u002F3)](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Ftree\u002Fmain\u002Fdoc\u002Ftutorial_3.md)\n\n## Third-party views\n\nHere are a few crates implementing new views for you to use:\n\n* [cursive-aligned-view](https:\u002F\u002Fgithub.com\u002Fdeinstapel\u002Fcursive-aligned-view): A view wrapper which aligns child views.\n* [cursive-async-view](https:\u002F\u002Fgithub.com\u002Fdeinstapel\u002Fcursive-async-view): A loading-screen wrapper.\n* [cursive_calendar_view](https:\u002F\u002Fgithub.com\u002FBonsaiDen\u002Fcursive_calendar_view): A basic calendar view implementation.\n* [cursive-flexi-logger-view](https:\u002F\u002Fgithub.com\u002Fdeinstapel\u002Fcursive-flexi-logger-view): An alternative debug view using [flexi_logger](https:\u002F\u002Fgithub.com\u002Femabee\u002Fflexi_logger).\n* [cursive_hexview](https:\u002F\u002Fgithub.com\u002Fhellow554\u002Fcursive_hexview): A simple hexview.\n* [cursive-hjkl](https:\u002F\u002Fgithub.com\u002Fgamma-delta\u002Fcursive-hjkl): Wraps any view to use Vim-like `hjkl` controls.\n* [cursive-image](https:\u002F\u002Fcodeberg.org\u002Ftliron\u002Fcursive-image): A graphical image view. Supported formats include PNG, GIF, JPEG, SVG, and PDF.\n* [cursive-markup](https:\u002F\u002Fsr.ht\u002F~ireas\u002Fcursive-markup-rs): A view that renders HTML or other markup.\n* [cursive-multiplex](https:\u002F\u002Fgithub.com\u002Fdeinstapel\u002Fcursive-multiplex): A tmux like multiplexer.\n* [cursive-spinner-view](https:\u002F\u002Fgithub.com\u002Fotov4its\u002Fcursive-spinner-view): A spinner view.\n* [cursive-split-panel](https:\u002F\u002Fcodeberg.org\u002Ftliron\u002Fcursive-split-panel): A split panel view with a movable divider. \n* [cursive_table_view](https:\u002F\u002Fgithub.com\u002FBonsaiDen\u002Fcursive_table_view): A basic table view component.\n* [cursive-tabs](https:\u002F\u002Fgithub.com\u002Fdeinstapel\u002Fcursive-tabs): Tabs.\n* [cursive-tree](https:\u002F\u002Fcodeberg.org\u002Ftliron\u002Fcursive-tree): A tree view implementation.\n\n## Showcases\n\nHere are some cool applications using cursive:\n\n* [RustyChat](https:\u002F\u002Fgithub.com\u002FSambaDialloB\u002FRustyChat): Chat client made using Rust and Cursive.\n* [checkline](https:\u002F\u002Fgithub.com\u002Fsixarm\u002Fcheckline-rust-crate): Checkbox line picker from stdin to stdout.\n* [clock-cli](https:\u002F\u002Fgithub.com\u002FTianyiShi2001\u002Fclock-cli-rs): A clock with stopwatch and countdown timer functionalities.\n* [fui](https:\u002F\u002Fgithub.com\u002Fxliiv\u002Ffui): Add CLI & form interface to your program.\n* [game2048-rs](https:\u002F\u002Fgithub.com\u002FgenieCS\u002Fgame2048-rs): a tui game2048 using Rust and cursive.\n* [git-branchless](https:\u002F\u002Fgithub.com\u002Farxanas\u002Fgit-branchless): Branchless workflow for Git.\n* [grin-tui](https:\u002F\u002Fgithub.com\u002Fmimblewimble\u002Fgrin): Minimal implementation of the MimbleWimble protocol.\n* [kakikun](https:\u002F\u002Fgithub.com\u002Ffile-acomplaint\u002Fkakikun): A paint and ASCII art application for the terminal.\n* [launchk](https:\u002F\u002Fgithub.com\u002Fmach-kernel\u002Flaunchk): Manage launchd agents and daemons on macOS.\n* [markline](https:\u002F\u002Fgithub.com\u002Fsixarm\u002Fmarkline): Marker-based line picker from stdin to stdout.\n* [mythra](https:\u002F\u002Fgithub.com\u002Fdeven96\u002Fmythra): CLI to search for music.\n* [ncspot](https:\u002F\u002Fgithub.com\u002Fhrkfdn\u002Fncspot): Cross-platform ncurses Spotify client.\n* [rbmenu-tui](https:\u002F\u002Fgithub.com\u002FDevHyperCoder\u002Frbmenu-tui): A TUI for bookmark management.\n* [retris](https:\u002F\u002Fgithub.com\u002FgenieCS\u002Fretris): A simple implementation of the classic tetris game.\n* [ripasso](https:\u002F\u002Fgithub.com\u002Fcortex\u002Fripasso): A simple password manager written in Rust.\n* [rusty-man](https:\u002F\u002Fsr.ht\u002F~ireas\u002Frusty-man): Browse rustdoc documentation.\n* [saci-rs](https:\u002F\u002Fgitlab.com\u002Fihercowitz\u002Fsaci-rs): Simple API Client Interface.\n* [so](https:\u002F\u002Fgithub.com\u002Fsamtay\u002Fso): A terminal interface for Stack Overflow.\n* [sudoku-tui](https:\u002F\u002Fgithub.com\u002FTianyiShi2001\u002Fsudoku-tui): Play sudoku on the command line.\n* [tap](https:\u002F\u002Fgithub.com\u002Ftimdubbins\u002Ftap): An audio player for the terminal with fuzzy finder.\n* [ttyloop](https:\u002F\u002Fgithub.com\u002Fgamma-delta\u002Fttyloop): Clone of the mobile game Loop.\n* [wiki-tui](https:\u002F\u002Fgithub.com\u002FBuilditluc\u002Fwiki-tui): A simple and easy to use Wikipedia Text User Interface\n* [glues](https:\u002F\u002Fgithub.com\u002Fgluesql\u002Fglues): A simple note-taking app with Git, CSV, and JSON support\n\n## Goals\n\n* **Ease of use.** Simple apps should be simple. Complex apps should be manageable.\n* **Linux TTY Compatibility.** Colors may suffer, and UTF-8 may be too much, but most features *must* work properly on a Linux TTY.\n* **Flexibility.** This library should be able to handle simple UI scripts, complex real-time applications, or even games.\n    * In particular, it tries to have enough features to recreate these kind of tools:\n        * [menuconfig](http:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMenuconfig#\u002Fmedia\u002FFile:Linux_x86_3.10.0-rc2_Kernel_Configuration.png)\n        * [nmtui](https:\u002F\u002Faccess.redhat.com\u002Fdocumentation\u002Fen-US\u002FRed_Hat_Enterprise_Linux\u002F7\u002Fhtml\u002FNetworking_Guide\u002Fsec-Configure_a_Network_Team_Using_the_Text_User_Interface_nmtui.html)\n\n## Compatibility\n\nFirst off, terminals are messy. A small set of features is standard, but beyond that, almost every terminal has its own implementation.\n\n### Output\n\n* **Colors**: the basic 8-colors palette should be broadly supported. User-defined colors is not supported in the raw linux TTY, but should work in most terminals, although it's still kinda experimental.\n* **UTF-8**: Currently Cursive really expects a UTF-8 locale. It may eventually get patched to support window borders on other locales, but it's not a priority.\nThere is initial support for [wide characters](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCJK_characters). [RTL](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRight-to-left) support [is planned](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fissues\u002F31), but still very early.\n\n### Input\n\n* The `key_codes` example can be a useful tool to see how the library reacts to various key presses.\n* Keep in mind that if the terminal has shortcuts registered, they probably won't be transmitted to the app.\n* UTF-8 input should work fine in a unicode-enabled terminal emulator, but raw linux TTY may be more capricious.\n\n## [Contributing](CONTRIBUTING.md)\n## Alternatives\n\nSee also [ratatui](https:\u002F\u002Fgithub.com\u002Fratatui-org\u002Fratatui) - and a small [comparison page](https:\u002F\u002Fgithub.com\u002Fgyscos\u002Fcursive\u002Fwiki\u002FCursive-vs-tui%E2%80%90rs).\n","Cursive 是一个为 Rust 语言设计的文本用户界面（TUI）库。它支持使用 `crossterm` 作为默认后端，同时提供了多种其他后端选项以满足不同需求。Cursive 提供了丰富的组件和布局管理功能，使开发者能够轻松创建复杂的终端应用程序界面。该库注重安全性和易用性，通过简洁的API和详细的文档降低了学习曲线。适用于需要在命令行环境中构建交互式应用的各种场景，如系统监控工具、文件管理器或任何希望提供图形化操作体验但又受限于纯文本环境的应用程序。",2,"2026-06-11 03:04:57","top_language"]