Files
CjTui/README.md
2026-06-19 00:00:53 -05:00

123 lines
3.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 systems 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
```