TUI jellyfin music player
  • Go 96.7%
  • Nix 3.3%
Find a file
2025-12-08 21:51:23 +01:00
cmd/jellyfin-mustui init project jellyfin-mustui 2025-12-06 00:45:18 +01:00
internal fix: remove unused vars and update theme to Catppuccin colors 2025-12-07 14:47:00 +01:00
.envrc init nix flake direnv 2025-12-07 14:45:07 +01:00
.gitattributes Initial commit 2025-12-05 22:56:08 +01:00
.gitignore init nix flake direnv 2025-12-07 14:45:07 +01:00
flake.lock init nix flake direnv 2025-12-07 14:45:07 +01:00
flake.nix chore: add nix flake build support 2025-12-07 20:21:41 +01:00
go.mod init project jellyfin-mustui 2025-12-06 00:45:18 +01:00
go.sum init project jellyfin-mustui 2025-12-06 00:45:18 +01:00
LICENSE Initial commit 2025-12-05 22:56:08 +01:00
README.md add: direnv section 2025-12-08 21:51:23 +01:00

jellyfin-mustui

A terminal-based user interface (TUI) for Jellyfin, built with Bubbletea and Lipgloss. Browse your music library, play tracks, and enjoy a sleek terminal experience.

image

Installation

  1. Clone the repository:

    git clone https://github.com/cedev-1/jellyfin-mustui.git
    cd jellyfin-mustui
    

    To get the direnv setup run direnv allow if you have direnv installed.

  2. Install dependencies:

    go mod tidy
    
  3. Build the application:

    go build -o jellyfin-mustui ./cmd/jellyfin-mustui
    

    Or run directly:

    go run ./cmd/jellyfin-mustui/main.go
    

NixOS Integration

If you're using NixOS, you can integrate jellyfin-mustui into your system configuration using flakes.

Add the flake as an input

Modify your system's flake.nix.

{
  description = "My NixOS configuration";

  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    
    # ADD THIS
    jellyfin-mustui.url = "github:cedev-1/jellyfin-mustui";
    # This line forces the app to use the same nixpkgs version as your system
    # to avoid downloading duplicate dependencies:
    jellyfin-mustui.inputs.nixpkgs.follows = "nixpkgs"; 
  };

  outputs = { self, nixpkgs, ... }@inputs: {
    .
    .
    .
  };
}

And add the package to your configuration.nix:

{ config, pkgs, inputs, ... }: 
# ^^^ Make sure 'inputs' is in the function arguments at the top

{
  # ... your existing configuration ...

  environment.systemPackages = [

    # Access the default package from the flake
    inputs.jellyfin-mustui.packages.${pkgs.system}.default
  ];
}

Usage

  1. Run the application:

    ./jellyfin-mustui
    
  2. On first launch, enter your Jellyfin server details (URL, username, password).

  3. Browse your music:

    • Use arrow keys or Vim keys (h, j, k, l) to navigate.
    • Press Tab to switch between Artists and Tracks panels.
    • Press Enter to select an artist/album or play a track.
    • Press / to filter/search in lists.
    • Press Space to play/pause, n/p for next/previous track.
  4. Press ? for help, q to quit.

Keybindings

  • Navigation: ↑/↓ or k/j (up/down), Tab (switch panels)
  • Selection: Enter (select/play)
  • Albums: h/l or ←/→ (previous/next album in Tracks panel)
  • Playback: Space (play/pause), n (next), p (previous)
  • Search: / (filter in lists)
  • Help: ? (toggle help), Esc (close help or cancel)
  • Quit: q (or Ctrl+C)

Configuration

The app saves your login details in a config file (e.g., ~/.config/jellyfin-mustui/config.json on Linux).

License

MIT LICENSE.