Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

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.


The program must be built from source.

For Arch Linux users, there is an AUR package.



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


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

BEWARE: jftui fetches 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

  • Search;
  • Explicit command to recursively navigate folders to send items to playback;
  • Transcoding.