https://github.com/hacel/jfsh
A terminal-based client for Jellyfin
https://github.com/hacel/jfsh
bubbletea cli go golang jellyfin jellyfin-client tui
Last synced: 5 months ago
JSON representation
A terminal-based client for Jellyfin
- Host: GitHub
- URL: https://github.com/hacel/jfsh
- Owner: hacel
- License: unlicense
- Created: 2024-10-22T20:41:41.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2025-12-17T04:25:19.000Z (6 months ago)
- Last Synced: 2025-12-20T07:38:26.698Z (6 months ago)
- Topics: bubbletea, cli, go, golang, jellyfin, jellyfin-client, tui
- Language: Go
- Homepage:
- Size: 1.04 MB
- Stars: 31
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# jfsh
A terminal-based client for [Jellyfin](https://jellyfin.org) that lets you browse your media library and play videos via [mpv](https://mpv.io).
Inspired by [jftui](https://github.com/Aanok/jftui).

## Features
- Uses _your_ mpv config!
- Resumes playback!
- Tracks playback progress and updates jellyfin!
- Automatic segment (intro, etc.) skipping!
- No mouse required!
## Installation
### Prerequisites
- A running [Jellyfin](https://jellyfin.org) instance.
- [mpv](https://mpv.io) available in PATH.
#### Install from AUR
On Arch Linux, jfsh can be installed from the [AUR](https://aur.archlinux.org/packages/jfsh)
```sh
yay -S jfsh
```
#### Download a release
Download the latest pre-built binary for your platform from the [releases page](https://github.com/hacel/jfsh/releases/latest).
#### Install via go
```sh
go install github.com/hacel/jfsh@latest
```
## Usage
1. **Start jfsh**
```sh
jfsh
```
2. **Login**
On first launch, you'll be prompted to enter:
- **Host**: e.g., `http://localhost:8096`
- **Username**
- **Password**
3. **Play Media**
- Select an item and press **Enter** or **Space** to play it.
- `mpv` will launch and begin streaming.
4. **Quit**
- Press **`q`** at any time to exit jfsh.
## Configuration
By default, the configuration file is stored in `$XDG_CONFIG_HOME/jfsh/jfsh.yaml`. If `$XDG_CONFIG_HOME` is not set it defaults to:
- **Linux**: `~/.config/jfsh/jfsh.yaml`
- **macOS**: `~/Library/Application Support/jfsh/jfsh.yaml`
- **Windows**: `%APPDATA%/jfsh/jfsh.yaml`
```yaml
host: http://localhost:8096
username: me
password: hunter2
device: mycomputer # Device name to report to jellyfin (default: hostname)
skip_segments: # Segments to automatically skip (default: [])
- Recap
- Preview
- Intro
- Outro
```
### Segment skipping
By default, no segments are automatically skipped. To enable skipping segments you must add `skip_segments` to the configuration file. Possible values for `skip_segments` are the segment types in Jellyfin which are: `Unknown`, `Commercial`, `Preview`, `Recap`, `Outro` and `Intro`.
## Plans
- Configuration through TUI
- Complete library browsing
- Sorting
- Better search: Filter by media type, watched status, and metadata