CjTUI
Chris Jellyfin Terminal User Interface
This is the first actually useful programming project I have completed. I still can't write in rust because of generative AI. Maybe one day when I am better at programming I will refactor the codebase and figure out how to hand code a transcoding option that actually is compatible with Jellyfin API.
Linux Only Curreently.
Features
- Blazingly Fast Speed
- Online and Offline Playback
- Robust Download Connectivity
- Individual Download and Batch Download Support
- Download Queue Management
- Local Media Management
- Autoplay and Resume functionality
- Sends Current Watch Position to the Server
- Playlist and Collection Support
- Persistent Auth
System Dependencies on
MPV and ARIA2C
Persistent Storage
All application data is stored in: ~/.config/cjtui/
- config.toml: Server URL and API key is stored.
- downloads/: Local download data, used for local playback and offline navigation.
- temp/: Temporary download data during ARIA2C functionality.
Controls
General Interface Controls
- Up/K: Up
- Right/L/Enter: Drilldown/Enter
- Down/J: Down
- Left/H/Backspace/Esc: Back
- q: Return to the home screen or quit.
- /: Search: Click once to search and clicking / multiple times cycles through search categories.
How to Watch Media
- p: Play: Starts a show playing at the beginning and will use offline playback if available.
- P: AutoPlay: Starts a show playing at the beginning and will use offline playback if available. Turns on auto play mode which will play the next episode in series or song in the playlist.
- r: Resume: If there is a pause position online, it will stream beginning at the paused position.
- R: AutoResume: Resume + Autoplay flag is on.
- w: Watched: Marks as watched.
- W: Not Watched: Marks as unwatched.
Media Player Control
- Space: Pause
- x: close mpv
- f: full screen media player
- a: cycle audio track
- s: cycle subtitles
- v: change subtitle visibility.
Local File Management
- d: Queue file for download
- D: Enter the download visual queue.
- (d on an item in the queue): Remove item from queue.
- X: Deletes the local file if the file exists.
- o: Enter offline playback/Attempt to ping the server to join online mode. (Local downloaded database is available during this mode)
Admin Controls
- /\reset"Enter": Deletes the config file and exits the program. Reloading will prompt URL, Username, and Password Input.
Installation Instructions
Nix/NixOS
Run without installing:
nix run git+https://git.cwj3rcb.com/siege/CjTui
Build manually:
nix build git+https://git.cwj3rcb.com/siege/CjTui
./result/bin/cjtui
Install on NixOS with flakes:
Add CJTUI to your flake.nix inputs
inputs.cjtui.url = "git+https://git.cwj3rcb.com/siege/CjTui";
Then install the package
environment.systemPackages = [
cjtui.packages.${pkgs.system}.default
];
If your packages are in configuration.nix, pass cjtui through specialArgs from your system flake
specialArgs = {
inherit cjtui;
};
Then your configuration.nix can accept it
{ pkgs, cjtui, ... }:
CJTUI pins its own nixpkgs input so it uses tested versions of mpv and aria2c.
Do not add
inputs.cjtui.inputs.nixpkgs.follows = "nixpkgs";
unless you intentionally want CJTUI to use your system’s versions of mpv and aria2c.
General Install
Install mpv and aria2c with your package manager of choice then ->
cargo install --git https://git.cwj3rcb.com/siege/CjTui