Fixing Multi-Device Compatibility
This commit is contained in:
@@ -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 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
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user