NAME
perch โ A beautiful terminal social client for Mastodon and Bluesky ๐ฆ
SYNOPSIS
brew install ricardodantas/tap/perchINFO
DESCRIPTION
A beautiful terminal social client for Mastodon and Bluesky ๐ฆ
README
๐ฆ Perch
A beautiful terminal social client for Mastodon and Bluesky
Read, post, and engage across social networks โ all from your terminal.
๐ Table of Contents
- โจ Features
- ๐ธ Screenshots
- ๐ Quick Start
- ๐ Authentication
- ๐ป Usage
- โจ๏ธ Keybindings
- ๐จ Themes
- โ๏ธ Configuration
- ๐๏ธ Architecture
- ๐ง Building from Source
- ๐ค Contributing
- ๐ License
โจ Features
๐ Mastodon IntegrationFull OAuth authentication with any instance. Browse timelines, post, reply, like, and boost. ๐ฆ Bluesky IntegrationAT Protocol support with app passwords. Stay connected to the decentralized social web. ๐ Cross-PostingWrite once, post to multiple networks simultaneously. Perfect for maintaining presence everywhere. |
๐ฅ๏ธ Beautiful TUIGorgeous three-panel terminal interface with vim keybindings and real-time updates. โก Powerful CLIScript your social media with comprehensive commands. Automate posts, fetch timelines, manage accounts. ๐ Secure StorageCredentials stored safely in your system keyring. Never worry about plaintext tokens. |
Feature Highlights
| Feature | Description |
|---|---|
| ๐ Timeline Filtering | View all posts or filter by network |
| ๐พ Offline Cache | SQLite-backed cache for offline reading |
| ๐จ 15 Built-in Themes | From Dracula to Cyberpunk |
| โจ๏ธ Vim Keybindings | Navigate like a pro |
| ๐ Draft Support | Save drafts for later |
| ๐ Scheduled Posts | Queue posts for optimal timing |
| ๐ Notifications | Desktop alerts for mentions |
| ๐ผ๏ธ Media Support | Attach images to posts |
๐ธ Screenshots
Timeline View โ Browse posts from all your networks
Compose Post โ Write once, post everywhere
Accounts โ Manage your connected accounts
Keyboard Shortcuts โ Vim-style navigation
Theme Picker โ 15 beautiful themes
About โ Version info and links
๐ Quick Start
Installation
macOS
# Homebrew (recommended - fast, pre-built binary)
brew install ricardodantas/tap/perch
Linux
# Homebrew (recommended) brew install ricardodantas/tap/perchOr via Cargo
cargo install perch
Windows
# Via Cargo (requires Rust toolchain)
cargo install perch
Or download perch-*-x86_64-pc-windows-msvc.zip from GitHub Releases.
From Source
git clone https://github.com/ricardodantas/perch
cd perch
cargo install --path .
First Run
- Add a Mastodon account:
perch auth mastodon mastodon.social
- Or add a Bluesky account:
perch auth bluesky
- Launch the TUI:
perch
๐ Authentication
Mastodon (OAuth)
perch auth mastodon <instance>
This will:
- Register Perch with your Mastodon instance
- Open your browser for authorization
- Ask you to paste the authorization code
- Store credentials securely in your system keyring
Examples:
perch auth mastodon mastodon.social
perch auth mastodon fosstodon.org
perch auth mastodon hachyderm.io
Bluesky (App Password)
perch auth bluesky
You'll need an App Password from Bluesky settings.
Note: App passwords are more secure than your main password โ they can be revoked individually and don't have full account access.
๐ป Usage
TUI Mode
perch
Launch the beautiful terminal interface with three-panel layout:
- Left panel: Accounts and filters
- Center panel: Timeline/feed
- Right panel: Post details and media
CLI Commands
Posting
# Post to all configured networks perch post "Hello world!"Post to specific networks
perch post "Hello Fediverse!" --to mastodon perch post "Hello everyone!" --to mastodon,bluesky
Post with content warning
perch post "Spoiler content" --cw "Movie spoilers"
Post with media
perch post "Check this out!" --media ~/photo.jpg
Scheduled Posts
# Schedule a post for later perch post "Good morning!" --schedule "in 2h" perch post "Happy Friday!" --schedule "YYYY-MM-DD HH:MM" --to mastodon,blueskyList pending scheduled posts
perch schedule list
Cancel a scheduled post
perch schedule cancel abc123
Process due scheduled posts (one-time)
perch schedule run
Run scheduler daemon (continuous)
perch schedule daemon perch schedule daemon --interval 30 # Check every 30 seconds
Schedule time formats:
- Relative:
"in 5m","in 2h","in 1d","in 30 minutes" - Time today:
"15:00","3pm"(schedules for tomorrow if past) - Date+time:
"YYYY-MM-DD HH:MM","YYYY-MM-DDTHH:MM"
TUI Scheduling:
In the compose dialog (n), press Tab to switch to the schedule input field. Type your schedule time and it validates in real-time. Press Tab or Enter to confirm, F4 to clear.
Timeline
# View home timeline (all networks) perch timelineView specific network
perch timeline mastodon perch timeline bluesky
Limit posts
perch timeline --limit 50
Account Management
# List all accounts perch accountsRemove an account
perch accounts remove <account-id>
โจ๏ธ Keybindings
Global
| Key | Action |
|---|---|
Tab | Switch panel |
? / F1 | Show help |
t | Change theme |
q | Quit |
Ctrl+c | Force quit |
Navigation
| Key | Action |
|---|---|
โ / k | Move up |
โ / j | Move down |
g / Home | Go to first item |
G / End | Go to last item |
PageUp | Page up |
PageDown | Page down |
Timeline View
| Key | Action |
|---|---|
r | Refresh timeline |
f | Cycle filter (All/Mastodon/Bluesky) |
Enter | View post details |
o | Open in browser |
l | Like/favorite |
b | Boost/repost |
R | Reply to post |
Compose
| Key | Action |
|---|---|
n | New post |
Ctrl+Enter | Send post |
Alt+1 | Toggle Mastodon |
Alt+2 | Toggle Bluesky |
Esc | Cancel |
๐จ Themes
Perch includes 15 beautiful themes based on popular terminal and editor color schemes.
Press t in the TUI to cycle through themes.
Available Themes
| Theme | Description |
|---|---|
| ๐ฆ Dracula | Dark purple aesthetic (default) |
| ๐ One Dark Pro | Atom's iconic dark theme |
| โ๏ธ Nord | Arctic, bluish color palette |
| ๐ฑ Catppuccin Mocha | Warm pastel dark theme |
| โ Catppuccin Latte | Warm pastel light theme |
| ๐ธ Gruvbox Dark | Retro groove colors |
| ๐ Gruvbox Light | Retro groove, light variant |
| ๐ Tokyo Night | Futuristic dark blue |
| ๐ Solarized Dark | Precision colors, dark |
| ๐ Solarized Light | Precision colors, light |
| ๐จ Monokai Pro | Classic syntax highlighting |
| ๐น Rosรฉ Pine | All natural pine with soho vibes |
| ๐ Kanagawa | Inspired by Katsushika Hokusai |
| ๐ฒ Everforest | Comfortable green forest theme |
| ๐ Cyberpunk | Neon-soaked futuristic theme |
โ๏ธ Configuration
Perch uses TOML for configuration. The config file is located at:
~/.config/perch/config.toml
Full Configuration Example
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ # Display Settings # โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโTheme (dracula, nord, catppuccin-mocha, etc.)
theme = "dracula"
Enable vim-like keybindings
vim_mode = true
Show media previews (when supported)
show_media = true
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Timeline Settings
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Default timeline view
default_timeline = "home"
Number of posts to fetch
post_limit = 50
Auto-refresh interval in seconds (0 = manual only)
refresh_interval_secs = 0
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Posting Settings
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Default visibility for posts
Options: public, unlisted, private, direct
default_visibility = "public"
Default networks to post to (when using CLI without --to)
default_networks = ["mastodon", "bluesky"]
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ User โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ perch (TUI) โ โ perch (CLI) โ
โ โข Browse timelines โ โ โข perch post โ
โ โข Compose posts โ โ โข perch timeline โ
โ โข Like & boost โ โ โข perch accounts โ
โ โข Switch themes โ โ โข Scriptable commands โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Core Library โ
โ โข api/mastodon.rs โ Mastodon OAuth + API โ
โ โข api/bluesky.rs โ AT Protocol integration โ
โ โข auth/ โ System keyring storage โ
โ โข db.rs โ SQLite cache & drafts โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ Mastodon API โ โ ๐ฆ Bluesky API โ
โ (Any instance) โ โ (bsky.social) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
Project Structure
perch/
โโโ src/
โ โโโ api/ # Network API clients
โ โ โโโ mod.rs # Unified SocialApi trait
โ โ โโโ mastodon.rs # Mastodon OAuth + REST
โ โ โโโ bluesky.rs # AT Protocol client
โ โโโ app/ # TUI application
โ โ โโโ mod.rs
โ โ โโโ state.rs # Application state
โ โ โโโ events.rs # Key event handling
โ โ โโโ ui.rs # UI rendering
โ โโโ auth/ # Credential storage
โ โ โโโ mod.rs # System keyring
โ โโโ models/ # Data models
โ โ โโโ mod.rs
โ โ โโโ account.rs
โ โ โโโ network.rs
โ โ โโโ post.rs
โ โโโ config.rs # Configuration loading
โ โโโ db.rs # SQLite database
โ โโโ theme.rs # Color themes
โ โโโ lib.rs # Library root
โ โโโ main.rs # Entry point
โโโ Cargo.toml
โโโ LICENSE
๐ง Building from Source
Requirements
- Rust 1.85+
- Linux, macOS, or Windows
Build
# Clone the repository git clone https://github.com/ricardodantas/perch cd perchBuild release binary
cargo build --release
The binary will be at:
target/release/perch
Or install directly
cargo install --path .
Development
# Run in development cargo runRun tests
cargo test
Run linter
cargo clippy
Format code
cargo fmt
๐ค Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Quick Start for Contributors
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Run tests:
cargo test - Run clippy:
cargo clippy - Format:
cargo fmt - Commit:
git commit -m "Add amazing feature" - Push:
git push origin feature/amazing-feature - Open a Pull Request
๐ License
This project is licensed under the GPL-3.0-or-later license โ see the LICENSE file for details.
Built with ๐ฆ Rust and โค๏ธ by Ricardo Dantas