Aanok / jftui

Jellyfin Terminal User Interface
The Unlicense
149 stars 7 forks source link
jellyfin mpv

jftui is a minimalistic, lightweight C99 command line client for the open source Jellyfin media server.

It is developed for the GNU/Linux OS only, although it may be possible to make it run on BSD's.

Installation

The program must be built from source.

For Arch Linux users, there is an AUR package.

Dependencies

Building

Make sure to checkout a release as the master branch is not guaranteed to work correctly or indeed compile at any time.

Then, simply run

make && sudo make install

Usage

Run jftui. You will be prompted for a minimal interactive configuration on first run.

BEWARE: jftui fetches https://github.com/Aanok/jftui/releases/latest on startup to check for newer versions. You can avoid this by passing the --no-check-updates argument. There is also a settings file entry.

The interface should be intuitive enough: select one or more entries by entering the corresponding index number. See below for a full description of the command syntax.

jftui will drop into a command line instance of mpv when starting playback. It will use mpv.conf and input.conf files found in $XDG_CONFIG_HOME/jftui (this location can be overridden with the --config-dir argument). It will also try and load scripts found in the same folder, but no guarantees are made about them actually working correctly.

It is recommended to consult the wiki page on configuring mpv commands to use jftui: a few special ones are required in particular to manipulate the playback playlist.

Jftui commands

The grammar defining jftui commands is as follows:

S ::= "q" (quits)
  | ( "help" | "?" )          (print a help menu)
  | "h"                       (go to "home" root menu)
  | ".."                      (go to previous menu)
  | "f" ( "c" | [pufrld]+ )   (filters: clear or played, unplayed, favorite, resumable, liked, disliked)
  | "m" ("p" | "u") Selector  (marks items played or unplayed)
  | "m" ("f" | "uf") Selector (marks items favorite or unfavorite)
  | Selector                  (opens a single directory entry or sends a sequence of items to playback)
Selector :: = '*'             (everything in the current menu)
  | Items
Items ::= Atom "," Items      (list)
  | Atom
Atom ::= n1 "-" n2            (range)
  | n                         (single item)

Whitespace may be scattered between tokens at will. Inexisting items are silently ignored. Both quit and stop mpv commands will drop you back to menu navigation.

There is one further command that will be parsed, but it is left undocumented because its implementation is barely more than a stub. Caveat.

Plans and TODO