{"id":32295458,"url":"https://github.com/officiallyutso/easy_terminal","last_synced_at":"2026-06-20T01:31:09.469Z","repository":{"id":301068983,"uuid":"1008040731","full_name":"officiallyutso/easy_terminal","owner":"officiallyutso","description":"easy_terminal is a lightweight Dart package that allows Flutter developers to easily simulate and embed a classic terminal interface within their apps. Perfect for retro-style UIs, developer tools, or educational apps, it provides customizable input/output streams and a terminal-like experience with minimal setup.","archived":false,"fork":false,"pushed_at":"2025-06-28T18:11:40.000Z","size":526,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-01T04:06:28.674Z","etag":null,"topics":["dart","package","pubdev","terminal-ui"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/easy_terminal","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/officiallyutso.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-24T23:56:38.000Z","updated_at":"2025-08-08T02:19:31.000Z","dependencies_parsed_at":"2025-06-25T02:28:42.994Z","dependency_job_id":"3349db8e-e8eb-40bd-8e91-548f98fedacc","html_url":"https://github.com/officiallyutso/easy_terminal","commit_stats":null,"previous_names":["officiallyutso/easy_terminal"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/officiallyutso/easy_terminal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officiallyutso%2Feasy_terminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officiallyutso%2Feasy_terminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officiallyutso%2Feasy_terminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officiallyutso%2Feasy_terminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/officiallyutso","download_url":"https://codeload.github.com/officiallyutso/easy_terminal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/officiallyutso%2Feasy_terminal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34554511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-19T02:00:06.005Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart","package","pubdev","terminal-ui"],"created_at":"2025-10-23T03:56:50.407Z","updated_at":"2026-06-20T01:31:09.464Z","avatar_url":"https://github.com/officiallyutso.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Easy Terminal Dart Package\n\nA fully customizable terminal-style UI toolkit for Flutter that brings the power and aesthetics of command-line interfaces to your mobile and desktop applications.\n\n[![pub package](https://img.shields.io/pub/v/easy_terminal.svg)](https://pub.dev/packages/easy_terminal)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Platform](https://img.shields.io/badge/platform-flutter-blue.svg)](https://flutter.dev)\n\n## API Documentation\n\nComplete API documentation is available at [pub.dev/documentation/easy_terminal](https://pub.dev/documentation/easy_terminal/latest/). All public APIs are fully documented with examples and usage instructions.\n\n## Example\n\nA complete example application demonstrating all package features is available in the `/example` directory. Run it with:\n\n```bash\ncd example\nflutter run\n```\n\nThe example includes:\n- Basic terminal implementation\n- Custom theming\n- Command handling\n- All widget demonstrations\n- Interactive tutorials\n\n## Usage Examples\n\nThese screenshots demonstrate the practical implementation of the package features:\n\n- **Responsive Design**: The interface adapts well to different screen sizes\n- **User Experience**: Clean, intuitive navigation and interaction patterns\n- **Feature Integration**: Seamless integration of package functionality within the demo app\n- **Customization**: Various configuration options available to developers\n- **Commands**: Configurable commands to perform any task is available\n\n### Feature Demonstrations\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/officiallyutso/easy_terminal/main/assets/1.png\" alt=\"Main application interface\" width=\"400\"/\u003e\n\u003cbr\u003e\n\u003cem\u003eMain application interface showing the primary features and layout\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/officiallyutso/easy_terminal/main/assets/2.png\" alt=\"Feature demonstration screen\" width=\"400\"/\u003e\n\u003cbr\u003e\n\u003cem\u003eDemonstration of key package functionality in action\u003c/em\u003e\n\u003c/td\u003e\n\u003ctd align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/officiallyutso/easy_terminal/main/assets/3.png\" alt=\"Additional feature showcase\" width=\"400\"/\u003e\n\u003cbr\u003e\n\u003cem\u003eAdditional feature showcase highlighting package capabilities\u003c/em\u003e\n\u003c/td\u003e\n  \u003ctd align=\"center\"\u003e\n\u003cimg src=\"https://raw.githubusercontent.com/officiallyutso/easy_terminal/main/assets/4.png\" alt=\"Configuration or settings interface\" width=\"400\"/\u003e\n\u003cbr\u003e\n\u003cem\u003eConfiguration interface demonstrating package customization options\u003c/em\u003e\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n## Getting Started\n\nTo integrate similar functionality in your own project, refer to the package documentation on pub.dev and use these screenshots as reference for expected behavior and UI patterns.\n\n## Features\n\n- **Terminal View** - Complete terminal emulation with command input, output display, and history\n- **Input Components** - Advanced terminal-style input fields with autocomplete and command history\n- **List Selectors** - Interactive terminal-style selection menus with keyboard navigation\n- **Progress Bars** - ASCII-style progress indicators with customizable styling\n- **Panels** - Bordered containers with optional titles for organizing terminal content\n- **Themes** - Comprehensive theming system with support for colors, fonts, effects, and styling\n- **Command Parsing** - Built-in command parser with support for arguments and flags\n- **Keyboard Handling** - Full keyboard support including history navigation, shortcuts, and special keys\n- **Box Drawing** - Extensive collection of Unicode box drawing characters and utilities\n- **Visual Effects** - Optional scanlines, glow effects, and retro styling\n\n## Use Cases\n\nThis package is perfect for:\n\n- **Developer Tools** - Build CLI-style interfaces for development tools, debuggers, and IDEs\n- **System Monitoring** - Create dashboards with terminal aesthetics for server monitoring\n- **Games** - Develop retro-style games, hacking simulators, or text-based adventures\n- **Educational Apps** - Build interactive coding tutorials or command-line learning tools\n- **Admin Panels** - Design system administration interfaces with terminal styling\n- **Data Entry** - Create efficient forms with terminal-style input and navigation\n- **IoT Interfaces** - Build control panels for embedded systems and IoT devices\n- **Prototyping** - Quickly mock up CLI tools and terminal applications\n\n## Installation\n\nAdd this to your package's `pubspec.yaml` file:\n\n```yaml\ndependencies:\n  easy_terminal: ^0.0.1\n```\n\nThen run:\n\n```bash\nflutter pub get\n```\n\n## Quick Start\n\n### Basic Terminal View\n\n```dart\nimport 'package:flutter/material.dart';\nimport 'package:easy_terminal/easy_terminal.dart';\n\nclass MyTerminal extends StatefulWidget {\n  @override\n  _MyTerminalState createState() =\u003e _MyTerminalState();\n}\n\nclass _MyTerminalState extends State\u003cMyTerminal\u003e {\n  final GlobalKey\u003cTerminalViewState\u003e _terminalKey = GlobalKey\u003cTerminalViewState\u003e();\n\n  final TerminalTheme theme = TerminalTheme(\n    backgroundColor: Color(0xFF000000),\n    foregroundColor: Color(0xFF00FF00),\n    cursorColor: Color(0xFF00FF00),\n    fontFamily: 'Courier New',\n    fontSize: 14.0,\n  );\n\n  @override\n  Widget build(BuildContext context) {\n    return Scaffold(\n      body: TerminalView(\n        key: _terminalKey,\n        theme: theme,\n        prompt: 'user@system:~\\$ ',\n        onCommand: _handleCommand,\n        initialText: [\n          'Welcome to Easy Terminal!',\n          'Type \"help\" for available commands.',\n        ],\n      ),\n    );\n  }\n\n  void _handleCommand(TerminalCommand command) {\n    switch (command.command.toLowerCase()) {\n      case 'help':\n        _terminalKey.currentState?.addOutput(\n          'Available commands:\\n'\n          '  help - Show this help message\\n'\n          '  clear - Clear the screen\\n'\n          '  echo \u003ctext\u003e - Echo text back\\n'\n          '  date - Show current date',\n        );\n        break;\n      case 'clear':\n        _terminalKey.currentState?.clearScreen();\n        break;\n      case 'echo':\n        _terminalKey.currentState?.addOutput(command.args.join(' '));\n        break;\n      case 'date':\n        _terminalKey.currentState?.addOutput(DateTime.now().toString());\n        break;\n      default:\n        _terminalKey.currentState?.addOutput(\n          'Command not found: ${command.command}',\n          color: theme.errorColor,\n        );\n    }\n  }\n}\n```\n\n### Terminal Input with Autocomplete\n\n```dart\nTerminalInput(\n  theme: theme,\n  prompt: 'Enter command: ',\n  placeholder: 'Type a command...',\n  suggestions: ['help', 'clear', 'echo', 'date', 'exit'],\n  onSubmitted: (input) {\n    print('Command entered: $input');\n  },\n  enableHistory: true,\n)\n```\n\n### List Selector\n\n```dart\nTerminalListSelector\u003cString\u003e(\n  items: ['Option 1', 'Option 2', 'Option 3', 'Option 4'],\n  theme: theme,\n  title: 'Select an option:',\n  onSelected: (item, index) {\n    print('Selected: $item at index $index');\n  },\n  showNumbers: true,\n  selectedIndicator: '▶ ',\n  unselectedIndicator: '  ',\n)\n```\n\n### Progress Bar\n\n```dart\nTerminalProgressBar(\n  progress: 0.75,\n  theme: theme,\n  label: 'Loading...',\n  width: 40,\n  showPercentage: true,\n  fillChar: '█',\n  emptyChar: '░',\n)\n```\n\n### Themed Panel\n\n```dart\nTerminalPanel(\n  title: 'System Information',\n  theme: theme,\n  child: Column(\n    crossAxisAlignment: CrossAxisAlignment.start,\n    children: [\n      TerminalText(text: 'CPU: 45%', theme: theme),\n      TerminalText(text: 'Memory: 2.1GB / 8GB', theme: theme),\n      TerminalText(text: 'Disk: 156GB / 512GB', theme: theme),\n    ],\n  ),\n)\n```\n\n## Theming\n\nEasy Terminal provides extensive theming capabilities:\n\n```dart\nfinal customTheme = TerminalTheme(\n  backgroundColor: Color(0xFF1E1E1E),\n  foregroundColor: Color(0xFF00D4AA),\n  cursorColor: Color(0xFFFFFFFF),\n  selectionColor: Color(0x4000D4AA),\n  borderColor: Color(0xFF00D4AA),\n  errorColor: Color(0xFFFF5555),\n  successColor: Color(0xFF50FA7B),\n  warningColor: Color(0xFFFFB86C),\n  fontFamily: 'Fira Code',\n  fontSize: 16.0,\n  lineHeight: 1.4,\n  enableScanlines: true,\n  enableGlow: true,\n  glowRadius: 2.0,\n  borderRadius: 8.0,\n  borderWidth: 2.0,\n);\n```\n\n## Components Overview\n\n### Core Components\n\n| Component | Description |\n|-----------|-------------|\n| `TerminalView` | Complete terminal interface with command input/output |\n| `TerminalInput` | Advanced input field with history and autocomplete |\n| `TerminalText` | Styled text rendering with theme support |\n| `TerminalPanel` | Bordered container for organizing content |\n| `TerminalListSelector` | Interactive selection menu with keyboard navigation |\n| `TerminalProgressBar` | ASCII-style progress indicators |\n\n### Models\n\n| Model | Purpose |\n|-------|---------|\n| `TerminalTheme` | Comprehensive theming configuration |\n| `TerminalBuffer` | Text buffer management with scrolling |\n| `TerminalCommand` | Command parsing with arguments and flags |\n| `TerminalCursor` | Cursor state and positioning |\n\n### Utilities\n\n| Utility | Features |\n|---------|----------|\n| `KeyboardHandler` | Command history, keyboard shortcuts, special keys |\n| `BoxDrawing` | Unicode box drawing characters and utilities |\n| `ColorUtils` | Color manipulation and effects |\n\n## Advanced Features\n\n### Command Parsing\n\n```dart\nfinal command = TerminalCommand.parse('git commit -m \"Initial commit\" --verbose');\nprint(command.command); // 'git'\nprint(command.args); // ['commit']\nprint(command.flags); // {'m': 'Initial commit', 'verbose': 'true'}\n```\n\n### Box Drawing\n\n```dart\n// Create a box\nfinal box = BoxDrawing.createBox(20, 10, doubleLine: true);\n\n// Progress bar\nfinal progress = BoxDrawing.createProgressBar(0.7, 30, \n  fillChar: BoxDrawing.fullBlock,\n  emptyChar: BoxDrawing.lightShade,\n);\n```\n\n### Buffer Management\n\n```dart\nfinal buffer = TerminalBuffer(maxLines: 1000);\nbuffer.addText('Hello, Terminal!');\nbuffer.addLine(TerminalLine(\n  content: 'Error occurred',\n  color: Colors.red,\n  isInput: false,\n));\n\n// Get visible lines for display\nfinal visibleLines = buffer.getVisibleLines(25);\n```\n\n## Keyboard Shortcuts\n\nEasy Terminal supports standard terminal keyboard shortcuts:\n\n- `Ctrl+C` - Clear current input\n- `Ctrl+L` - Clear screen\n- `Ctrl+D` - EOF signal\n- `↑/↓` - Navigate command history\n- `Tab` - Autocomplete suggestions\n- `Esc` - Close suggestions/cancel\n- `Enter` - Execute command\n- `Backspace` - Delete character\n- `Home/End` - Navigate to line start/end\n\n## Examples\n\nThe package includes several example implementations:\n\n1. **Basic Terminal** - Simple command-line interface\n2. **File Manager** - Terminal-style file browser\n3. **System Monitor** - Resource monitoring dashboard\n4. **Code Editor** - Terminal-based text editor\n5. **Game Terminal** - Interactive text adventure\n6. **Developer Console** - Debug console for applications\n\n## Documentation Standards\n\nThis package follows Dart documentation standards with comprehensive dartdoc comments for all public APIs. Key documentation features include:\n\n- **Complete API Coverage** - All public classes, methods, and properties documented\n- **Usage Examples** - Practical code examples for every component\n- **Parameter Descriptions** - Detailed explanations of all parameters\n- **Return Value Documentation** - Clear descriptions of return values\n- **Exception Documentation** - Documented exceptions and error conditions\n- **Cross-References** - Linked references between related APIs\n\n## Testing\n\nThe package includes comprehensive tests covering:\n\n- Unit tests for all core functionality\n- Widget tests for UI components\n- Integration tests for complete workflows\n- Performance tests for large datasets\n- Platform-specific tests for all supported platforms\n\nRun tests with:\n\n```bash\nflutter test\n```\n\n## Performance Considerations\n\n- Text rendering is optimized for large amounts of terminal output\n- Buffer management automatically handles memory limits\n- Keyboard input is debounced for smooth performance\n- Themes support hardware acceleration for visual effects\n\n## Platform Support\n\nEasy Terminal works on all Flutter platforms:\n- iOS\n- Android  \n- Web\n- Windows\n- macOS\n- Linux\n\n## Migration Guide\n\n### From version 0.0.1 to latest\n\nNo breaking changes in current version. All existing code remains compatible.\n\n## Troubleshooting\n\n### Common Issues\n\n**Issue**: Terminal not responding to keyboard input\n**Solution**: Ensure the terminal widget has focus and is wrapped in a `Focus` widget.\n\n**Issue**: Custom fonts not loading\n**Solution**: Verify font files are included in `pubspec.yaml` and `flutter clean` has been run.\n\n**Issue**: Performance issues with large output\n**Solution**: Use `TerminalBuffer.maxLines` to limit buffer size and enable virtual scrolling.\n\n### Debug Mode\n\nEnable debug mode for additional logging:\n\n```dart\nTerminalView(\n  debugMode: true,\n  // ... other properties\n)\n```\n\n## Contributing\n\nContributions are welcome! Please read our contributing guidelines and submit pull requests to our GitHub repository.\n\n### Development Setup\n\n1. Fork the repository\n2. Create a feature branch\n3. Make your changes\n4. Add tests for new functionality\n5. Ensure all tests pass\n6. Update documentation\n7. Submit a pull request\n\n### Code Style\n\nThis project follows the official Dart style guide and uses the following linting rules:\n\n- `flutter_lints` for Flutter-specific rules\n- `public_member_api_docs` for documentation requirements\n- Custom rules for terminal-specific code patterns\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for a detailed history of changes.\n\n## Support\n\nIf you find this package helpful, please consider:\n- Giving it a star on GitHub\n- Reporting issues and bugs\n- Contributing improvements\n- Sharing it with other developers\n\nFor questions and support, please open an issue on our GitHub repository.\n\n## Acknowledgments\n\nSpecial thanks to the Flutter community and contributors who helped make this package possible.\n\n## Related Packages\n\n- [flutter_terminal](https://pub.dev/packages/flutter_terminal) - Alternative terminal implementation\n- [console](https://pub.dev/packages/console) - Console utilities for Dart\n- [terminal_view](https://pub.dev/packages/terminal_view) - Basic terminal view widget\n\n## Badges and Quality Metrics\n\n[![pub points](https://img.shields.io/pub/points/easy_terminal)](https://pub.dev/packages/easy_terminal/score)\n[![popularity](https://img.shields.io/pub/popularity/easy_terminal)](https://pub.dev/packages/easy_terminal/score)\n[![likes](https://img.shields.io/pub/likes/easy_terminal)](https://pub.dev/packages/easy_terminal/score)\n[![pub package](https://img.shields.io/pub/v/easy_terminal.svg)](https://pub.dev/packages/easy_terminal)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Platform](https://img.shields.io/badge/platform-flutter-blue.svg)](https://flutter.dev)\n\n---\n\n*This package is actively maintained and regularly updated. Please check the [changelog](CHANGELOG.md) for the latest updates and improvements.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofficiallyutso%2Feasy_terminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fofficiallyutso%2Feasy_terminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofficiallyutso%2Feasy_terminal/lists"}