| Crates.io | shellcast |
| lib.rs | shellcast |
| version | 20251214.0.0 |
| created_at | 2025-12-14 23:31:36.568335+00 |
| updated_at | 2025-12-14 23:31:36.568335+00 |
| description | A terminal-based podcast player with discovery, playback controls, chapters, and theming |
| homepage | https://github.com/ducks/shellcast |
| repository | https://github.com/ducks/shellcast |
| max_upload_size | |
| id | 1985277 |
| size | 2,382,082 |

A terminal-based podcast player written in Rust.




Active development - core features implemented and working. See CHANGELOG.md for recent changes and TODO section for planned enhancements.
Download the latest release from the Releases page.
cargo build --release
The binary will be available at target/release/shellcast.
shellcast to start the application5 to enter Browse mode, then / to searchEnter on a search result to subscribea to add a podcast feed by URLj/k or arrow keys to navigate between podcasts and episodesTab to switch between the podcast list and episode listSpace to play an episode (resumes from last position)h/l or arrow keys to seek backward/forward 30 seconds[/] to decrease/increase playback speed (0.5x - 3.0x)m to mark episodes as played/unplayed1 to return to Podcasts view, 5 for Browseq to quitPodcasts and playback status are automatically saved to ~/.config/shellcast/podcasts.json.
Shellcast supports customizable color themes. Create a config file at ~/.config/shellcast/config.toml:
[theme]
# Use a built-in theme
name = "default"
For full customization, set name = "custom" and define your colors:
[theme]
name = "custom"
[theme.custom]
selection_bg = "blue"
selection_fg = "white"
border_focused = "cyan"
border_unfocused = "gray"
text_normal = "white"
text_played = "gray"
text_unplayed = "white"
status_bar_bg = "black"
status_bar_fg = "white"
popup_border = "cyan"
popup_bg = "black"
popup_fg = "white"
episode_title = "white"
episode_published = "gray"
Color Formats:
black, red, green, yellow, blue, magenta, cyan, gray, etc."#ff0000", "#f00", "5f87af""rgb(255, 0, 0)""0" through "255" (use your terminal's theme colors)"reset"See config.example.toml for a complete reference and examples.
cargo test
If using Nix:
nix-shell
j/k or Arrow Keys - Navigate up/down in listsg/G - Jump to top/bottom of listTab - Switch focus between podcast list and episode list1 - Switch to Podcasts view5 - Switch to Browse/Search view/ - Start searching (when in Browse mode)Enter - Subscribe to selected search resultSpace - Play/pause selected episode (resumes from last position)s - Stop playbackh or Left Arrow - Seek backward 30 secondsl or Right Arrow - Seek forward 30 seconds[ - Decrease playback speed (min 0.5x)] - Increase playback speed (max 3.0x)m - Mark episode as played/unplayeda - Add new podcast feed (enter URL)d - Delete selected podcast? - Show help screen with all keybindingsi - Show episode info/description popupc - Show episode chapters (if available)Esc - Close popupsq - Quit applicationMIT OR Apache-2.0