Fixing Multi-Device Compatibility

This commit is contained in:
2026-07-25 10:56:11 -05:00
parent 04c98cacfd
commit 4ce716be9f
12 changed files with 9223 additions and 9143 deletions
+122 -122
View File
@@ -1,123 +1,123 @@
# 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
# 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
```