Add native desktop terminal client (crates/desktop)#83
Open
Add native desktop terminal client (crates/desktop)#83
Conversation
Contributor
|
GPU-accelerated terminal client using winit + wgpu with cosmic-text for text rendering. Supports multiple simultaneous connections (Unix, TCP, SSH, WebRTC shares) with persistent config at ~/.config/blit/remotes.conf. Includes BSP tiled layouts, 31 color palettes, keyboard-driven overlays (switcher, help, palette, font), and the full blit wire protocol. Generated with [Indent](https://indent.com) Co-Authored-By: Indent <noreply@indent.com>
- Add tokio runtime init in main.rs for async spawning - Fix reconnection: non-looping connection task with ReconnectNeeded event - Remove erroneous resize on every FrameUpdate - Fix infinite redraw loop: only render when needs_redraw - Fix BSP dedup to use value-based HashSet instead of pointer formatting - Fix content_len guard to <= 4 - Add dynamic status bar (height from atlas.cell_height) - Clean up unused imports and suppress dead_code on future-use items Generated with [Indent](https://indent.com) Co-Authored-By: Indent <noreply@indent.com>
Crate-level allows for dead_code, too_many_arguments, unnecessary_cast, and manual_range_patterns since the desktop client has many features scaffolded but not yet fully wired up. Generated with [Indent](https://indent.com) Co-Authored-By: Indent <noreply@indent.com>
Use EventLoopProxy to wake the event loop when server events arrive, fixing the freeze where ControlFlow::Wait never re-rendered after the first frame. Fix status bar title truncation to use char boundaries instead of byte slicing. Generated with [Indent](https://indent.com) Co-Authored-By: Indent <noreply@indent.com>
e217f87 to
fb2374b
Compare
Glyph placement offsets (physical.x + image.placement.left) can be negative, causing overflow when cast to u32. Compute in i32 first and skip glyphs with negative coordinates. Generated with [Indent](https://indent.com) Co-Authored-By: Indent <noreply@indent.com>
Parse ~/.config/blit/blit.conf (key=value format matching the web app) to read blit.fontFamily, blit.fontSize, blit.palette, and blit.layouts. Apply font family/size to the glyph atlas and palette to the renderer on startup instead of hardcoding "monospace"/14/default. Generated with [Indent](https://indent.com) Co-Authored-By: Indent <noreply@indent.com>
Mouse: handle click, drag, scroll, and motion events. Forward to server when terminal has mouse mode enabled; fall back to scrollback navigation for scroll when mouse mode is off. Overlay: render session list text with search filtering, highlight selected item, handle arrow keys/enter/backspace/typing for navigation. Selecting a session focuses it; Enter on "New terminal" creates one. Generated with [Indent](https://indent.com) Co-Authored-By: Indent <noreply@indent.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
crates/desktopcrate (blit-desktop) — a GPU-accelerated native terminal client using winit 0.30 + wgpu 25 + cosmic-text~/.config/blit/remotes.conf(INI-style format)line(a 2, col(b, c))) and 7 presets~/.config/blit/blit.conffor font family/size, palette, and custom layouts (same format as web app)Motivation
Provide a lightweight, GPU-rendered native desktop client for blit that covers the full feature set of the web version. The desktop client avoids browser overhead and enables direct socket/SSH connections without a relay server.
Testing
Manual compilation and launch tested. No automated tests yet — the desktop client is a new standalone binary.
Tag
@indentto continue the conversation here.