Skip to content
zlotnyPublic

About

Minimal macOS window switcher: per-window Cmd+Tab with glow, dim, and reveal of covered windows.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

glint

A minimal window switcher for macOS.

Hold a modifier and press Tab to cycle through individual windows, not apps. The selected window glows, everything else can dim, and windows that cover it step aside so you can see it. Nothing gets focus until you release the key, so your window order stays exactly as it was.

No Dock icon, no menu bar icon, no screen recording permission, and no work while idle.

Features

  • Per-window switching. One icon per window, most recently used first. Minimized windows are listed last and restore when chosen.
  • Glow. An accent-colored outline around the selected window.
  • Dim. Optional: darken every other window.
  • Reveal. Windows covering the selection move aside while you cycle and return afterwards. Focus and stacking order never change.
  • Native feel. A quick Cmd+Tab jumps to the previous window. Shift+Tab or the arrow keys go back. Esc cancels.
  • Custom shortcut. Any modifier plus a key. The native Cmd+Tab switcher is turned off only while glint uses Cmd+Tab.
  • Lightweight. About 24 MB of memory, 0% CPU when idle, and a bundle under 400 KB.

Requirements

  • macOS 14 or later
  • Swift 6 toolchain (Xcode 16 or the Command Line Tools)
  • The Accessibility permission

Install

glint is distributed as source. Build and install it with:

git clone https://github.com/zlotny/glint.git
cd glint
scripts/make-cert.sh    # once, see "Code signing" below
scripts/install.sh      # builds, signs, and installs /Applications/glint.app
open /Applications/glint.app

On first launch glint asks for the Accessibility permission and adds itself as a login item.

Code signing

macOS ties the Accessibility grant to the app's code signature. scripts/make-cert.sh creates a self-signed glint-dev code-signing certificate in your login keychain. Builds signed with it keep the grant across rebuilds. Without it, scripts/bundle.sh signs ad-hoc, and you need to grant Accessibility again after every build.

Use another identity with GLINT_SIGN_IDENTITY="Your Identity" scripts/install.sh.

Usage

Keys Action
Cmd+Tab Open the switcher, move to the next window
Cmd+Shift+Tab, Left arrow Previous window
Right arrow Next window
Esc Cancel
Release Cmd Switch to the selected window

Open glint again (Spotlight, Raycast, Finder, or open -a glint) to show the settings:

  • Shortcut
  • Glow (on by default)
  • Dim other windows (off by default)
  • Launch at login (on by default)
  • Quit glint

Quitting glint turns the native Cmd+Tab switcher back on.

Limitations

  • Only windows on the current Space of each display are listed.
  • Windows of hidden apps (Cmd+H) are not listed.
  • Key events do not reach glint while Secure Input is active, for example in a password field.
  • glint uses private macOS APIs (CGSSetSymbolicHotKeyEnabled, _AXUIElementGetWindow). A future macOS release can break them.
  • If glint crashes while windows are moved aside, they stay at the screen corner. Move them back by hand.

Development

swift build             # debug build
scripts/test.sh         # unit tests
scripts/bundle.sh       # build/glint.app
build/glint.app/Contents/MacOS/glint   # run with logs in the terminal

Source layout:

Path Role
Sources/glint/Hotkey/ Event tap, key state machine, native Cmd+Tab suppression
Sources/glint/Windows/ Window enumeration, MRU order, focus, moving covering windows aside
Sources/glint/UI/ Chooser panel, glow and dim overlays, settings window
Sources/glint/Support/ Coordinate conversion, settings storage
Tests/glintTests/ Unit tests for the pure logic

License

MIT

About

Minimal macOS window switcher: per-window Cmd+Tab with glow, dim, and reveal of covered windows.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages