Skip to content

k1-c/linear-tui

Repository files navigation

linear-tui

A TUI client for Linear.app — manage issues, projects, and cycles from your terminal.

Crates.io License: MIT CI Rust

Built with ratatui and the Linear GraphQL API.


Features

  • Issue management — Browse, search, filter, and mutate issues (status, priority, assignee, comments)
  • Multiple views — Issues, My Issues, Projects, Cycles with tab-based navigation
  • Project & Cycle detail — Drill into projects/cycles to see their issues
  • Vim-style keybindingsj/k navigation, / search, ? help
  • OAuth2 + PKCE authentication — Secure login via browser, or use a personal API key
  • Theme support — Default (dark), Light, and Ocean color schemes
  • Pagination — Cursor-based infinite scrolling for large issue lists

Installation

From crates.io

cargo install linear-tui

From GitHub Releases

Pre-built binaries are available for Linux, macOS (Intel/Apple Silicon), and Windows on the Releases page.

From source

git clone https://github.com/k1-c/linear-tui.git
cd linear-tui
cargo install --path .

Getting Started

1. Authenticate

OAuth2 (recommended)

Register an OAuth application at Linear Settings > API, then save your credentials:

linear-tui auth set-oauth <client-id> <client-secret>
linear-tui auth login

Tokens are stored locally and refreshed automatically.

Personal API Key

Generate a key at Linear Settings > API, then:

linear-tui auth token <your-api-key>

2. Launch

linear-tui

Keybindings

Key Action
j / k Move cursor down / up
g / G Jump to first / last item
Enter Open detail view
Esc / q Back / quit
1-4 Switch tabs (Issues / My Issues / Projects / Cycles)
s Change status
p Change priority
a Change assignee
c Add comment (Ctrl+Enter to send)
t Switch team
f / F Filter / clear filters
/ Search issues
r Reload data
? Toggle help

Configuration

Config file: ~/.config/linear-tui/config.toml

[auth]
# OAuth tokens are managed automatically via `linear-tui auth login`
# To use a personal API key instead:
# api_key = "lin_api_xxxxx"

[ui]
default_team = "Core"       # Auto-select this team on startup
items_per_page = 50          # Issues per page (pagination)
theme = "default"            # "default" | "light" | "ocean"

Themes

Theme Description
default Dark theme with cyan accents
light Light background with blue accents
ocean Dark blue palette with soft colors

License

MIT

About

✨ A TUI client for Linear.app — manage issues, projects, and cycles from your terminal

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages