{"id":31790771,"url":"https://github.com/codebam/vulkan-terminal","last_synced_at":"2025-10-20T06:56:49.476Z","repository":{"id":301847680,"uuid":"1010222210","full_name":"codebam/vulkan-terminal","owner":"codebam","description":"WIP","archived":false,"fork":false,"pushed_at":"2025-08-13T04:51:05.000Z","size":116,"stargazers_count":0,"open_issues_count":3,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-26T08:49:03.443Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/codebam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-28T16:00:47.000Z","updated_at":"2025-06-29T11:02:53.000Z","dependencies_parsed_at":"2025-06-29T07:37:28.879Z","dependency_job_id":null,"html_url":"https://github.com/codebam/vulkan-terminal","commit_stats":null,"previous_names":["codebam/vulkan-terminal"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/codebam/vulkan-terminal","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebam%2Fvulkan-terminal","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebam%2Fvulkan-terminal/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebam%2Fvulkan-terminal/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebam%2Fvulkan-terminal/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codebam","download_url":"https://codeload.github.com/codebam/vulkan-terminal/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codebam%2Fvulkan-terminal/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279004706,"owners_count":26083750,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-10T02:00:06.843Z","response_time":62,"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":[],"created_at":"2025-10-10T16:29:45.778Z","updated_at":"2025-10-10T16:29:49.344Z","avatar_url":"https://github.com/codebam.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Vulkan Terminal\n\nA complete terminal emulator built with Rust and Vulkan for hardware-accelerated text rendering.\n\n## Features\n\n- **Hardware-accelerated rendering** using Vulkan API\n- **Font rendering** with glyph caching and texture atlasing\n- **Terminal emulation** with character grid, colors, and text formatting\n- **Input handling** for keyboard events and commands\n- **Window management** with resizing support\n- **Cursor animation** with blinking effect\n- **Command system** with built-in commands (help, clear, exit)\n- **Scrolling and history** support\n\n## Prerequisites\n\n1. **Vulkan SDK** - Install from [LunarG](https://vulkan.lunarg.com/)\n2. **Rust** - Install from [rustup.rs](https://rustup.rs/)\n3. **Shader compiler** - `glslc` (included with Vulkan SDK)\n\n## Setup\n\n1. Clone or create the project directory\n2. Compile the shaders:\n   ```bash\n   glslc shaders/text.vert -o shaders/text.vert.spv\n   glslc shaders/text.frag -o shaders/text.frag.spv\n   ```\n3. Add a font file named `DejaVuSansMono.ttf` to the `assets/` directory\n4. Build and run:\n   ```bash\n   cargo run\n   ```\n\n## Project Structure\n\n```\nvulkan-terminal/\n├── src/\n│   ├── main.rs           # Main application and event loop\n│   ├── vulkan.rs         # Vulkan context and rendering setup\n│   ├── text_renderer.rs  # Text rendering with font support\n│   └── terminal.rs       # Terminal state and command handling\n├── shaders/\n│   ├── text.vert         # Vertex shader for text rendering\n│   ├── text.frag         # Fragment shader for text rendering\n│   ├── text.vert.spv     # Compiled vertex shader\n│   └── text.frag.spv     # Compiled fragment shader\n├── assets/\n│   └── DejaVuSansMono.ttf # Font file (user must provide)\n├── Cargo.toml            # Project dependencies\n└── README.md             # This file\n```\n\n## Dependencies\n\n- `ash` - Vulkan bindings for Rust\n- `winit` - Cross-platform window creation\n- `raw-window-handle` - Window handle abstraction\n- `fontdue` - Font rasterization\n- `bytemuck` - Safe casting for vertex data\n- `memoffset` - Offset calculations for structs\n\n## Usage\n\nOnce running, the terminal supports:\n- **Text input** - Type normally\n- **Commands**:\n  - `help` - Show available commands\n  - `clear` - Clear the terminal\n  - `exit` - Exit the application\n- **Keyboard shortcuts**:\n  - `Enter` - Execute command\n  - `Backspace` - Delete character\n  - `Tab` - Tab character\n\n## Architecture\n\nThe application is structured in several modules:\n\n1. **Vulkan Context** (`vulkan.rs`) - Manages Vulkan initialization, swapchain, render passes, and frame rendering\n2. **Text Renderer** (`text_renderer.rs`) - Handles font loading, glyph caching, and text rendering with Vulkan\n3. **Terminal State** (`terminal.rs`) - Manages the terminal grid, input processing, and command execution\n4. **Main Application** (`main.rs`) - Window management, event handling, and application lifecycle\n\nThe rendering pipeline uses Vulkan for hardware acceleration, with text rendered as textured quads using signed distance field techniques for crisp text at any scale.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodebam%2Fvulkan-terminal","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodebam%2Fvulkan-terminal","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodebam%2Fvulkan-terminal/lists"}