Skip to content

jpcerone/BlinkLauncher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blink Launcher

A minimal, keyboard-driven application launcher for macOS. Built for tiling window manager workflows with yabai and skhd.

macOS Swift License

The Problem with Spotlight

When you use Spotlight to open an app that's already running, it switches you to the existing window on another desktop. This breaks tiling window manager workflows where you want to spawn a new instance in your current workspace.

Blink fixes this. Inspired by Hyprland + Walker on Linux, Blink launches applications in your current desktop by default, opening new windows instead of switching contexts.

blinkdemo.mov

Why Blink?

  • Launch, don't switch: Opens new app instances in your current desktop
  • Tiling WM native: Designed for yabai, Amethyst, and similar setups
  • Keyboard-first: No mouse required
  • Configurable: Aliases, exclusions, and custom shortcuts
  • Smart search: Fuzzy matching finds what you need

Installation

Homebrew (Recommended)

brew tap jpcerone/blink
brew install --cask blink-launcher

Manual Install

  1. Download Blink.zip from Releases
  2. Extract and drag Blink.app to /Applications

Build from Source

git clone https://github.com/jpcerone/BlinkLauncher
cd BlinkLauncher
xcodebuild -scheme Blink -configuration Release

Setup

Add to your ~/.config/skhd/skhdrc:

alt - space : open -a Blink

Reload skhd:

skhd --reload

Usage

  1. Press your hotkey (e.g., Option + Space)
  2. Type to search
  3. Up/Down to navigate
  4. Enter to launch
  5. Escape to cancel

Keyboard Shortcuts

While Blink is open:

Shortcut Action
Cmd + , Open config file
Cmd + R Rescan applications
Cmd + S Mark selected app as single-instance

Configuration

Config files are located at ~/.config/blink/.

blink.config

# Custom applications in non-standard locations
[[custom_apps]]
name = "My Script"
path = "~/scripts/deploy.app"

# Search aliases - type shortcuts to find apps faster
# App name must match exactly as shown in Blink
[[aliases]]
app = "Code"
shortcuts = ["vsc", "vscode", "editor"]

[[aliases]]
app = "Google Chrome"
shortcuts = ["chrome", "browser", "gc"]

# Hide apps from search results
exclude_apps = ["Migration Assistant", "Boot Camp Assistant"]

# Pattern-based exclusions (supports * wildcard)
exclude_patterns = ["*Helper*", "*Uninstaller*"]

# Keyboard shortcuts (modifier+key)
[shortcuts]
preferences = "cmd+,"
refresh = "cmd+r"
mark_single_instance = "cmd+s"

# Launch behavior
always_new_window = false    # Always open new instances
close_on_blur = true         # Quit when window loses focus
quit_after_launch = true     # Quit after launching an app

single-instance-apps.config

Apps listed here activate existing windows instead of opening new ones:

# Lines starting with # are comments
Finder
System Settings
Activity Monitor

How It Works

App Discovery

Blink uses Spotlight (MDQuery) to find all installed applications, plus any custom apps defined in your config.

Smart Launching

Unlike Spotlight, Blink defaults to launching new instances so apps open in your current desktop:

  • Default behavior: Opens new window with -n flag (stays in current desktop)
  • Single-instance apps: Apps like Finder that can't have multiple instances activate the existing window
  • Configure exceptions via single-instance-apps.config or press Cmd + S on any app

Search Algorithm

Match Type Score
Exact match 1000
Alias match 950
Starts with query 900
Partial alias match 850
Contains query 500
Fuzzy match Variable

Requirements

  • macOS 13.0+ (Ventura or later)
  • skhd (recommended for hotkey binding)

Troubleshooting

App doesn't launch

  • Ensure Blink is in /Applications
  • Check skhd is running: brew services list

Missing apps

  • Press Cmd + R to rescan
  • Or add as [[custom_apps]] in config

Wrong window behavior

  • Add app name to ~/.config/blink/single-instance-apps.config
  • Or select the app and press Cmd + S

Alias not working

  • App name must match exactly as shown in Blink's search results
  • Check with Cmd + R to refresh after config changes

Development

git clone https://github.com/jpcerone/BlinkLauncher
open Blink.xcodeproj

Project Structure

Blink/
├── BlinkApp.swift           # App lifecycle
├── LauncherView.swift       # UI and keyboard handling
├── LauncherViewModel.swift  # Search, filtering, and launch logic
├── ConfigManager.swift      # Config file parsing
└── CacheManager.swift       # Single-instance app management

License

MIT License - see LICENSE for details.


Download Latest Release | Report Bug | Request Feature

About

A minimal, keyboard-driven application launcher for macOS. Built for tiling window manager workflows.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors