<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: dennislee666</title>
    <description>The latest articles on DEV Community by dennislee666 (@dennislee666).</description>
    <link>https://dev.to/dennislee666</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4200174%2Fb99c0521-3ff5-4e7e-84fd-4ff1a587060f.jpg</url>
      <title>DEV Community: dennislee666</title>
      <link>https://dev.to/dennislee666</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dennislee666"/>
    <language>en</language>
    <item>
      <title>I wrote a native macOS app in Rust + egui because I was drowning in terminal tabs</title>
      <dc:creator>dennislee666</dc:creator>
      <pubDate>Thu, 22 Oct 2026 09:51:32 +0000</pubDate>
      <link>https://dev.to/dennislee666/i-wrote-a-native-macos-app-in-rust-egui-because-i-was-drowning-in-terminal-tabs-3b0d</link>
      <guid>https://dev.to/dennislee666/i-wrote-a-native-macos-app-in-rust-egui-because-i-was-drowning-in-terminal-tabs-3b0d</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Falu824qsi1czrl9crhqb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Falu824qsi1czrl9crhqb.gif" alt="DevStart demo" width="720" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's my own project, so take it with the usual grain of salt.&lt;/p&gt;

&lt;p&gt;Since I started leaning on AI coding tools I've had way more projects going at the same time. A few real ones, plus a pile of prototypes I spun up and never quite closed. Writing code got faster. Getting all of it running didn't. I kept losing time to the boring stuff: start this one, kill that one, which tab was the API in, what's on 5173 again.&lt;/p&gt;

&lt;p&gt;So I built DevStart. You point it at a folder, it picks up the projects and the start scripts they already have, and then you start/stop/restart everything from one window and read the logs there. There's also a basic Git view, a terminal per project and a small editor. v1.0 is out, MIT licensed.&lt;/p&gt;

&lt;p&gt;Some details on the Rust side:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;eframe/egui. No WebView, no Node. Universal binary, macOS 12+.&lt;/li&gt;
&lt;li&gt;A project can have several launch entries and each one runs on its own. Stop tries a graceful shutdown first and only force-kills after a timeout.&lt;/li&gt;
&lt;li&gt;The Console has tabs and a tiled view, ANSI colors, search/filter, follow mode, and disk log limits so a noisy dev server doesn't just grow forever.&lt;/li&gt;
&lt;li&gt;The GUI, a CLI (&lt;code&gt;dev-start --api projects.list&lt;/code&gt;, or &lt;code&gt;--serve&lt;/code&gt; to run headless), a local JSON-RPC API and an MCP server over stdio (&lt;code&gt;dev-start --mcp&lt;/code&gt;) all talk to the same backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tradeoffs, honestly. It's macOS only right now. Linux needs work on the graphics side and on the process-tool paths, and on Windows I haven't implemented process groups at all, so I wouldn't even try it there. Process and port detection shells out to &lt;code&gt;ps&lt;/code&gt; and &lt;code&gt;lsof&lt;/code&gt;, which is a bit crude but it works. egui got me to something usable fast, but it doesn't feel 100% like a Cocoa app and I've accepted that. It also doesn't do dependency orchestration on purpose. No startup ordering, no readiness checks. If your frontend needs the API, you click the API first. Simple, maybe too simple for some people.&lt;/p&gt;

&lt;p&gt;Where I'd really like input: how you handle killing a process tree cleanly when a dev server spawns its own children, and how you keep big log views snappy in egui. Or just anything in the code that looks off to you. Issues and PRs are welcome.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/dennislee666/DevStart" rel="noopener noreferrer"&gt;https://github.com/dennislee666/DevStart&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>macos</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
