Skip to content

bradjenn/blink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

167 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Blink icon

Blink

A native macOS terminal workspace for developers with column-based layout, tmux-backed persistence, and fast project switching

Built on libghostty for GPU-accelerated terminal rendering and Niri-style tiling layout

FeaturesInstallKeybindingsDevelopmentProject StructureLicense


Blink screenshot

Features

Terminal

  • libghostty engine — GPU-accelerated rendering via Metal, the same core that powers Ghostty
  • tmux-backed shell persistence — project shells and editors can be reattached instead of restarted
  • Managed tool panes — open dedicated tabs for Neovim, lazygit, Yazi, Spotify, and other project commands inside the workspace
  • Drag-and-drop file support — drop files onto the terminal to paste their path
  • MesloLGS Nerd Font — bundled with full icon/glyph support out of the box

Window Management

  • Niri-style vertical columns — each tab opens in a scrollable column layout, not a fixed grid
  • Absorb and expel panes — pull a neighboring column's tab into your column, or push one out
  • Overview mode — zoom out to see all columns and panes at once
  • Resizable columns — cycle through width presets with ⌘] / ⌘[

Project Management

  • Auto-discovers projects from ~/Code on launch
  • Per-project workspace restore — Blink remembers your tab/column layout and reconnects shell panes on relaunch
  • Sidebar with git branch tracking — see the active branch for each project at a glance
  • Shell-first tooling — run nvim, lazygit, yazi, spotify, or any other CLI in project-scoped tabs without extra wrappers

Appearance

  • Theme presets — switch themes on the fly with a picker overlay
  • Wallpapers with opacity and blur — set a background image behind your terminal
  • Dark mode by default — designed for dark environments

Install

Homebrew (recommended)

brew install --cask bradjenn/tap/blink

Manual Download

Download the latest DMG

Blink is not yet notarized. After installing manually, run:

xattr -d com.apple.quarantine /Applications/Blink.app

Or right-click the app and select Open on first launch.

Requires macOS Sonoma+ and Apple Silicon (M1 or later).

Persistent shell/editor reattachment and in-app Neovim reuse work best with tmux, and Blink Neovim integration assumes nvim is installed.

Keybindings

All shortcuts use Cmd () as the modifier.

Shortcut Action
⌘T New window
⌘W Close window
⌘H Focus left column
⌘L Focus right column
⌘J Focus down pane
⌘K Focus up pane
⇧⌘H Move column left
⇧⌘L Move column right
⇧⌘J Absorb from left
⇧⌘K Absorb from right
⇧⌘E Expel pane
⌘O Overview
⌘B Toggle sidebar
⌘G Open lazygit
⌘P Project switcher
⇧⌘T Theme picker
⌘, Settings
⌘1⌘9 Jump to window N

Development

Tech Stack

Layer Technology
UI Framework SwiftUI
Terminal Rendering Metal via libghostty (GhosttyKit)
Shell Persistence tmux
Window Chrome AppKit (NSWindow, NSMenu)
Project Config XcodeGen (project.yml)
Testing XCTest

Prerequisites

  • macOS 14 Sonoma or later
  • Xcode 16+
  • Apple Silicon Mac (M1 or later)
  • GhosttyKit.xcframework in Frameworks/
  • tmux for persistent shell/editor sessions
  • nvim for Blink's in-app editor flow

Getting Started

git clone https://github.com/bradjenn/blink.git
cd blink
open Blink.xcodeproj

Build and run from Xcode (⌘R), or create a release DMG:

./scripts/build-dmg.sh

Project Structure

Blink/
├── BApp.swift                  # App entry point, menu commands, keybindings
├── Assets.xcassets/            # App icon, colors, images
├── Resources/                  # Bundled fonts, themes, wallpapers
├── Models/
│   ├── Column.swift            # Column layout model
│   ├── Project.swift           # Project definition
│   ├── Tab.swift               # Tab state
│   └── WallpaperPreset.swift   # Wallpaper configuration
├── Store/
│   ├── AppStore.swift          # Central app state, tmux integration, tab/editor actions
│   └── GitStatus.swift         # Git branch monitoring
├── Terminal/
│   ├── GhosttyApp.swift        # libghostty lifecycle and config
│   ├── SurfaceManager.swift    # Terminal surface allocation
│   ├── TerminalSurfaceView.swift # Metal-backed terminal view
│   ├── TerminalTheme.swift     # Terminal color schemes
│   └── TerminalView.swift      # Terminal container with chrome
├── Theme/
│   ├── Theme.swift             # Theme protocol
│   ├── ThemeManager.swift      # Theme loading and switching
│   └── Color+Hex.swift         # Hex color parsing
├── Views/
│   ├── Shell.swift             # Main workspace layout (columns, tabs, overview)
│   ├── Sidebar.swift           # Project sidebar
│   ├── TabBar.swift            # Tab strip
│   ├── StatusLine.swift        # Bottom status bar
│   ├── ThemePicker.swift       # Theme selection overlay
│   ├── SettingsPage.swift      # Settings panel
│   ├── StartScreen.swift       # Welcome / project picker
│   └── Settings/               # Settings sub-pages
├── Utilities/
│   ├── Constants.swift         # Layout constants, defaults
│   └── WindowTitleBarConfigurator.swift
├── Frameworks/
│   └── GhosttyKit.xcframework # Pre-built libghostty binary
├── BTests/                     # Unit tests
├── scripts/                    # Build and packaging scripts
└── project.yml                 # XcodeGen project definition

License

MIT


Report BugRequest Feature