linear-term
A terminal user interface for Linear project management. Manage issues, triage your inbox, and track projects without leaving the terminal.
Features
- 3-panel TUI: Navigate projects/cycles in the sidebar, browse issues in the list, and view details in the right panel
- Kanban board: Visual board view grouped by workflow state
- Triage workflow: Dedicated mode for processing untriaged issues with quick actions
- CLI commands: Scriptable interface for listing, viewing, creating, and searching issues
- Offline-ready: SQLite cache for instant startup and offline browsing
- Themeable: 9 built-in color schemes
Installation
pip install -e .
Configuration
API Key
Set your Linear API key via environment variable:
export LINEAR_API_KEY=lin_api_xxxxx
Or create a config file at ~/.config/linear-term/config.yaml:
api_key: lin_api_xxxxx
Full Configuration Example
api_key: $LINEAR_API_KEY # Uses env var
appearance:
theme: material-dark # See themes below
layout:
sidebar_width: 28
detail_panel_width: 40
show_detail_panel: true
show_sidebar: true
defaults:
view: my-issues # Starting view
sort_by: priority # priority, status, updated, created
sort_order: asc
columns: # Issue list columns
- identifier
- title
- status
- priority
- assignee
kanban:
columns: # Custom column order (empty = all states)
- Backlog
- Todo
- In Progress
- In Review
- Done
hide_done: false # Hide completed/canceled
cache:
ttl_minutes: 30
editor:
command: vim # For editing descriptions (defaults to $EDITOR)
Available Themes
material-dark (default), gruvbox-dark, linear, dracula, nord, solarized-dark, catppuccin-mocha, one-dark, tokyo-night
Usage
Interactive TUI
Launch the full terminal interface:
linear-term
The TUI provides three main views:
- List view: Traditional issue list with sortable columns
- Kanban view: Board layout grouped by status (press
bto toggle) - Triage view: Process untriaged issues from your inbox
CLI Commands
Use standalone commands for quick operations or scripting:
# List issues
linear-term list # All issues (20 max)
linear-term list --mine # Only issues assigned to you
linear-term list --limit 50 # Specify max results
linear-term list --json # Output as JSON
# View issue details
linear-term view ENG-123 # By identifier
linear-term view ENG-123 --json # JSON output
# Create issues
linear-term create "Fix login bug"
linear-term create "Add feature" --description "Details here"
linear-term create "Task" --team Engineering --priority high
# Search
linear-term search "auth bug"
linear-term search "payment" --limit 10 --json
Command Reference
| Command | Aliases | Description |
|---|---|---|
list |
ls |
List issues |
view |
show |
View issue details |
create |
new |
Create a new issue |
search |
— | Search issues |
Common Options
| Option | Commands | Description |
|---|---|---|
--json |
all | Output as JSON for scripting |
--limit N |
list, search | Maximum results (default: 20) |
--mine |
list | Only your assigned issues |
--team NAME |
create | Target team name or key |
--priority LEVEL |
create | urgent, high, medium, low, none |
--description TEXT |
create | Issue description |
Development
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/ -v
# Lint
ruff check src/
# Format check
ruff format --check src/
License
Metadata
Release files for linear-term 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| linear_term-0.1.0.tar.gz | 76.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| linear_term-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 152.1 kB
Release files / linear_term-0.1.0.tar.gz
| Download URL | linear_term-0.1.0.tar.gz |
|---|---|
| Size | 76.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3cac9067f62a536c6f4d2e9c507f3e8b58c6f178016696dc71d1905a4a2ded03
|
|
BLAKE2b-256 checksum How to use checksums |
2d89072736b1bca7e837e520245527f10603dedddb70cc933a8a81f193e59574
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / linear_term-0.1.0-py3-none-any.whl
| Download URL | linear_term-0.1.0-py3-none-any.whl |
|---|---|
| Size | 75.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
721fd2b655ceeaad8d748f7f8dd55f5b9b49c14c5016dc4d57b5a383ccb0c76e
|
|
BLAKE2b-256 checksum How to use checksums |
70ce7f79d20bc4d06667c8ae527e640bc5ad25527f2d366b20608abc5107e639
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Security for linear-term 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.