123 lines
3.6 KiB
Markdown
123 lines
3.6 KiB
Markdown
# 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:__
|
||
```bash
|
||
nix run git+https://git.cwj3rcb.com/siege/CjTui
|
||
```
|
||
|
||
#### __Build manually:__
|
||
```bash
|
||
nix build git+https://git.cwj3rcb.com/siege/CjTui
|
||
./result/bin/cjtui
|
||
```
|
||
|
||
#### __Install on NixOS with flakes:__
|
||
Add CJTUI to your `flake.nix` inputs
|
||
```nix
|
||
inputs.cjtui.url = "git+https://git.cwj3rcb.com/siege/CjTui";
|
||
```
|
||
|
||
Then install the package
|
||
```nix
|
||
environment.systemPackages = [
|
||
cjtui.packages.${pkgs.system}.default
|
||
];
|
||
```
|
||
|
||
If your packages are in `configuration.nix`, pass `cjtui` through `specialArgs` from your system flake
|
||
|
||
```nix
|
||
specialArgs = {
|
||
inherit cjtui;
|
||
};
|
||
```
|
||
|
||
Then your `configuration.nix` can accept it
|
||
|
||
```nix
|
||
{ pkgs, cjtui, ... }:
|
||
```
|
||
|
||
CJTUI pins its own `nixpkgs` input so it uses tested versions of `mpv` and `aria2c`.
|
||
|
||
Do **not** add
|
||
```nix
|
||
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 ->
|
||
|
||
```bash
|
||
cargo install --git https://git.cwj3rcb.com/siege/CjTui
|
||
``` |