Tools: I Built a Terminal Workspace in Rust - Here's How It Started

Tools: I Built a Terminal Workspace in Rust - Here's How It Started

What It Is

The Workflow That Drove It

The Stack

Where It Stands

Try It It didn't start as a terminal. I wanted a live log viewer, something that could tail and filter structured JSON logs in real time without making me jump between windows. The kind of thing where you run kubectl logs mypod -f and actually see what's happening, filtered by level, searchable, right there. I couldn't find exactly what I wanted, so I built it. Then I thought, why not make it a proper terminal and just add the log viewer as a sidebar? That's the idea that turned into Obsidian. Obsidian is a GTK4 desktop terminal workspace written in Rust. It ships three things in one window: The use case I kept coming back to was this: Pipe any log stream straight in. Filter by error level. Search for a specific field. Export what you need. All while your terminal is right next to it. You can also launch with filters pre-applied: This is v0.1.0-beta. It's early but the core workspace is solid. The aesthetic is intentionally opinionated, dark, black and red, no theme system. One clean look. There's a lot I still want to add, but I wanted to ship something real first rather than keep building in private. Repo: [github.com/WilliamSamson/obsidian] You can install the .deb from the releases page or build from source with cargo build --release. Feedback welcome - especially if you're someone who lives in logs. Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to ? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse

Command

Copy

$ -weight: 500;">kubectl logs mypod -f -weight: 500;">kubectl logs mypod -f | obsidian -weight: 500;">kubectl logs mypod -f | obsidian -weight: 500;">kubectl logs mypod -f | obsidian obsidian --filter level=error --filter query=request sample-logs.jsonl obsidian --filter level=error --filter query=request sample-logs.jsonl obsidian --filter level=error --filter query=request sample-logs.jsonl cargo build --release - A full terminal - tabs, split panes, pane-local multiplexer sessions, tab rename/reorder, clipboard integration, command history, and desktop notifications - logr - a live JSON log viewer sidebar with level filtering, full-text search, export, and graceful handling of malformed lines - An embedded web pane - a browser alongside your terminal for quick lookups without switching apps - Rust - for the core application - GTK4 + VTE4 - for the terminal and desktop window - WebKitGTK 6.0 - for the embedded web pane