DEV Community

Cover image for CursorTint — A Small macOS App That Makes Terminal Input Less Frustrating
fix
fix

Posted on

CursorTint — A Small macOS App That Makes Terminal Input Less Frustrating

I built CursorTint, a small, free, open-source macOS app that helps you avoid typing commands in the wrong input mode.

This is my first app written in Swift.

The Problem

I regularly use Terminal on my Mac, switching between English and Japanese input.

Sometimes, I start typing a command while the Japanese input method is still active. It's a small mistake, but it happens often enough to be frustrating.

Of course, I can switch back to English before typing. But constantly remembering which input mode is active is another source of stress.

I wanted a way to recognize the current input mode without having to think about it.

What CursorTint Does

CursorTint indicates the current input mode by changing the cursor color in macOS Terminal.

When the input source is anything other than U.S., ABC, or ABC Extended, the cursor turns red (#EB5F5F).

That's it.

CursorTint demonstration: The Terminal cursor changes from gray to red when switching from English to Japanese input mode.

Because the cursor is already where I'm looking while typing, I can recognize the input mode without checking the menu bar.

CursorTint doesn't change the input mode itself. It simply makes the current state visible.

There's no configuration required. Just launch the app, and it works with your existing input-switching shortcuts.

When you quit CursorTint from the menu bar, the cursor returns to its original color.

How the Idea Started

I discovered that macOS Terminal allows users to customize the cursor color in its settings.

That made me wonder: could I control the cursor color from an app?

I already had the problem of accidentally typing commands with the Japanese input method enabled.

So I thought, what if I combined cursor color control with input source detection?

That simple idea became CursorTint.

Why Not Switch Input Modes Automatically?

There are already utilities that automatically switch input modes.

But I wanted to keep control over when and how I switch input modes.

With CursorTint, my usual Terminal workflow stays exactly the same. My keyboard shortcuts still work as before, and the app never changes the input mode on its own.

It only provides visual feedback.

For me, this feels more natural than having another app decide when to switch input modes.

My First Swift App

Before CursorTint, I had no experience developing apps with Swift.

My programming experience mainly came from creating small macOS automation tools with AppleScript as a hobby.

CursorTint became my first attempt at building a native macOS app.

My goal wasn't to create a feature-rich utility. I wanted something small that would solve one specific problem reliably.

Design Philosophy

My approach to CursorTint is simple:

Minimal functionality, maximum practical value.

I believe small utilities should stay out of the user's way.

For an app that runs alongside Terminal, responsiveness and stability are more important to me than adding features.

CursorTint is currently in beta. I've tested it on my M1 MacBook Air with more than ten Terminal windows open, and it responds reliably when switching between them.

I don't plan to add more features. Instead, I'll focus on maintaining and improving its stability and performance.

Try CursorTint

CursorTint is free and open source.

The app is signed with an Apple Developer ID and notarized by Apple.

You can download it, explore the source code, or report issues on GitHub.

GitHub: https://github.com/fixdot/cursortint

How Do You Handle Input Method Switching?

If you regularly use Terminal with Japanese, Chinese, Korean, or other input methods, have you experienced similar problems?

How do you handle input method switching in your terminal? Do you use a dedicated app, shell configuration, or something else?

I'd love to hear how other developers deal with this.

Top comments (0)