My favorite Linux app didn’t exist on Windows—so I built a better one with Claude


Everyone’s talking about AI coding tools right now, but most of the examples feel abstract—a web-based operating system, a DOOM clone, portfolio websites. They’re cool, but they don’t really solve real problems in your day-to-day life. Well, I’ve been running into a frustrating app gap lately where some of the tools I rely on in Linux don’t exist on Windows, and vice versa. That disconnect has been slowing down my workflow, so I decided to vibe-code my way out of it.

The Linux app I desperately want on Windows

It’s a simple image annotation app—but it’s critical to my workflow

The Linux app I couldn’t find an equivalent for on Windows was Gwenview—the default image viewer on KDE Plasma-based Linux distributions.

As a tech writer, I add a lot of annotated screenshots to my articles—arrows pointing at buttons, boxes around specific settings, text boxes to explain something—and Gwenview made that workflow incredibly fast and convenient. Sure, you can technically do the same thing in a dedicated image editor like GIMP (which works on both Linux and Windows), but that adds unnecessary overhead. I wanted something that launched quickly and allowed for fast point-and-click edits.

Unfortunately, I was hard-pressed to find a similar app on Windows. The built-in Photos app in Windows 11 is decent, but it’s no Gwenview, lacking basic annotation tools like arrows and text. Granted, there are plenty of third-party alternatives, but most of the free ones were buggy, and the good ones were paid.

I even tried running Gwenview through Windows Subsystem for Linux, and while it technically worked, the experience was janky. I had trouble opening images, the interface lagged, and I couldn’t save my edits properly. So for a while, I was taking screenshots on Windows, opening a VM running Kubuntu, editing the images there, and then moving them back to Windows.

Needless to say, it wasn’t the smoothest workflow. Eventually, I decided to see if I could just vibe-code the app myself.


A screenshot of NoteTab light side-by-side with Claude code both have JavaScript.


I finally understand why vibe coding is pulling people into programming

Vibe coding lowers the barrier to programming by letting you describe what you want, test quickly, and learn by fixing what breaks.

Here’s my vibe coded image editor

It’s so good—it even replaced its muse

Here’s a quick video showing the app in action:

If the video is not loading, your ad blocker might be preventing it from playing.

As you can see, I decided to build it as a web app instead of a desktop app like Gwenview. I went that route because I wanted to avoid the extra complexity of packaging it as a desktop application—which also meant burning through a lot more tokens.

In its current form, it’s just an HTML file sitting on my system that I can open in any browser. It can crop images, add text overlays, draw arrows, place counters, blur or pixelate specific areas, highlight regions of a screenshot, and magnify parts of an image. You can even bulk upload a folder of images, pick whichever one you want to work on, and edit it.

There’s also a duplicate button, so if you need multiple edits of the same image, you can make a copy first and edit each version separately instead of constantly undoing and redoing changes on a single file. Everything exports as PNG or JPG, and if you’re exporting a batch, it automatically zips the files for you.

It genuinely works flawlessly. I didn’t expect to end up with something I’d call production-ready, but that’s exactly what it became. In fact, I’m now using it on Linux as my main image editing tool too.

How I used Claude to build the app

Planning is the most important part

I had a rough idea of what I wanted the app to do, but I didn’t just hand Claude a list of requirements and ask it to build it. That’s the classic garbage-in, garbage-out problem with AI where a weak prompt usually gives you a weak result. So after writing out my requirements, I asked Claude to turn them into a proper build prompt for a second Claude instance to work from.

That first pass came back with far more detail than I’d originally provided. It chose the entire stack—React with Vite and TypeScript, Konva.js for the canvas layer, Tailwind CSS for styling, and Lucide for icons—none of which I’d specified, because I don’t know enough about frontend tooling to make those decisions myself.

It also mapped out the app’s architecture and explained how each feature would work under the hood. That gave me a chance to sanity-check the plan against what I actually wanted and tweak it before handing it off. If something looked off, I could catch it here instead of after the app was already built.

Once the prompt was solid, I handed it to a second Claude instance, and it built the app with very little back-and-forth. It asked maybe five or six clarifying questions in total, including one deliberate checkpoint baked into the prompt itself. After laying out the interface—but before wiring up any of the tools—it paused and asked if everything looked right. Once I confirmed, it built out the rest of the tools, and the app just worked.


An iPad Pro running Claude Code in a Terminus window with Threads open.


I tested 100 Claude skills so you don’t have to—here are the 6 that actually matter

There are over 1.5 million Claude skills. I tested more than 100 to find the best ones. Turns out, most users only need these six.

Remember to use Claude Code or Cowork—not the web app

I used the Claude desktop app for this, where you get access to Cowork and Code mode. You’ll want to use the desktop app instead of the web version because it can access your local file system directly.

That means the code it writes gets created on your computer as actual files inside a proper folder structure. In my case, Claude created a project folder called “snapmark” and even dropped in a README explaining how to run it.

If you tried doing this through the web app instead, you’d probably end up with a wall of code snippets that you’d have to manually copy into files and organize yourself—which is a rough experience if you’re not a programmer. If you use Claude Cowork or Code, then it’ll handle all of that for you.


Phone photo of monitor showing Claude Cowork storage dashboard treemap with AI ML Models at 39.7 GB and Steam Games at 24 GB.-1


7 unusual ways to use Claude Cowork that have nothing to do with coding

Cowork smarter, not harder.

How much did it cost

How many tokens did it eat—and how long did it take

The entire project took roughly 500k tokens. I used the $20/month Claude Pro plan for this project. As you may know, Claude gives you a weekly usage cap along with shorter rolling session limits. When I started, I was already about 80% through one of those sessions, so I hit the cap pretty quickly.

I got lucky, though—the next session window reset just a few minutes later, which meant I effectively got two sessions’ worth of work back-to-back instead of having to stop and wait.

During that second session, the project burned through about 90% of the available limit. Combined, that means building this app used the equivalent of roughly 110% of a standard Claude session. I should also mention that Anthropic was running a temporary promo that doubled the usual session limits, so under normal conditions, this would’ve been closer to 220% of a standard session—meaning I’d have had to wait through at least three separate resets to finish it.

Speaking of waiting, this wasn’t a case of prompting Claude and getting a finished app a minute later. It took about 15 minutes to generate the first skeleton build, with none of the features working yet, and another hour or so to get a usable version with the core functionality in place. Once I factored in all the extra back-and-forth for additional features, the entire process took roughly two hours from start to finish.


Close-up of the Claude Code welcome screen on an iPad connected to a Mac.


I get more from Claude’s $20 Pro plan than most $200 Max subscribers—here’s how

Before upgrading your plan and spending more money, try upgrading your habits first.


Ask, and you shall receive

It feels like we’re in a strange moment where almost anything you can imagine can be built for you—yet you’ll still see plenty of people complaining that their AI agent completely botched the task. I think that gap mostly comes down to how the request is framed. You have to be precise about what you’re asking for. It also helps to ask Claude how confident it is that it actually understands the project and can build it.


Person typing on the OnePlus Keyboard 81 Pro with rainbow backlighting.


Why I’m learning to code in the age of vibe coding

I’m not giving in to the vibes yet.



Source link

Leave a Reply

Subscribe to Our Newsletter

Get our latest articles delivered straight to your inbox. No spam, we promise.

Recent Reviews


AirPods Pro 3

Jada Jones/ZDNET

This year’s WWDC is packed with announcements, including customization to the Liquid Glass display, substantial upgrades to Siri, and more intuitive device functionality.

Also: Apple WWDC 2026: Live updates on iOS 27, Siri, and Tim Cook’s last event as CEO

If you’re an avid AirPods user, there’s one announcement that may excite you, but speakers breezed past it, offering hardly any details. Still, Apple promised a real equalizer in iOS 27, finally giving users the opportunity to customize the sound of their AirPods. 

Apple didn’t say much about the equalizer, but a brief animation showed a graphic EQ, with options to create a custom EQ profile or choose Apple’s recommended EQ settings. Users can adjust lows, mids, and highs, though it’s unclear how precise the equalizer will be.

AirPods EQ WWDC

Apple

Previously, Apple had full faith in its headphones’ sound profile, vowing that its sound engineers crafted AirPods to sound as best as possible. Still, users prefer some control over their devices, and a custom EQ is a welcome addition.

Also: The feature Apple needs to make HomePod stand out isn’t audio-related

AirPods users could only change their AirPods sound profiles in Apple Music settings, and this customization feature still limited them to preset EQ profiles. 

An equalizer is a staple feature for consumer headphones, and even the most limited equalizers are better than none. Bose’s equalizer, for example, allows users to toggle bass, mids, and treble on a 20-point scale. 

Other companies, like JBL, offer a detailed equalizer with 10 frequency bands, adjustable in Hz. I don’t expect Apple’s equalizer to be as thorough as JBL’s, but instead to be on par with Bose’s. Either way, even if you’re content with your AirPods’ sound profile, the option to change it is what matters. 





Source link