Archive of https://github.com/RaringM/switchfin — Third-party native Jellyfin client for PC/PS4/PSVita/Nintendo Switch https://github.com/RaringM/switchfin
  • C++ 69.8%
  • Java 11.4%
  • Python 9.2%
  • C 3.7%
  • Shell 3%
  • Other 2.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
RaringM 0f9b275175
Merge upstream Switchfin playback settings update
Merge dragonflylee/switchfin dev at 4a669aa. Preserve PS5 native track selection while applying upstream defaults and playback parameters to other platforms.
2026-09-21 10:01:43 -05:00
.github Install Meson for PS5 media dependencies 2026-09-19 22:04:09 -05:00
.vscode Update mpv d3d11 patch 2026-09-19 01:04:03 +08:00
app Merge upstream Switchfin playback settings update 2026-09-21 10:01:43 -05:00
cmake Link Debian MuPDF archives with their required libraries 2026-09-19 21:54:23 -05:00
debian Link Debian MuPDF archives with their required libraries 2026-09-19 21:54:23 -05:00
images doc: update README.md 2025-05-16 08:11:07 +08:00
library Build pinned PS5 native dependencies 2026-09-19 18:30:35 -05:00
resources Integrate PS5 startup and native packaging 2026-09-19 18:30:35 -05:00
scripts Fetch Fontconfig from a checksum-verified mirror 2026-09-19 22:25:22 -05:00
tests/ps5 Adapt PS5 download locations to writable storage 2026-09-19 21:32:39 -05:00
.clang-format refactor: update PlayerSetting default values and streamline playback parameters (#256) 2026-09-21 21:40:06 +08:00
.gitignore add android project port (#155) 2025-09-16 20:44:09 +08:00
.gitmodules Use the public Borealis fork for PS5 builds 2026-09-19 18:30:35 -05:00
CHANGELOG.md bump version 0.9.4 2026-08-25 22:38:57 +08:00
CMakeLists.txt Integrate PS5 startup and native packaging 2026-09-19 18:30:35 -05:00
LICENSE initial commit 2023-05-17 09:32:57 +08:00
README.md bump version 0.9.3 2026-07-27 10:55:12 +08:00

Switchfin

icon

Switchfin is third-party PC player for Jellyfin that provides a native user interface to browse and play movies and series.

build NS PSVita PS4 Flathub download nightly

This project is in its early stages so expect bugs.

Screenshots

Home Library
Home Library
Search Music
Search Music
Series Episode
Series Episode

Features

Media Playback

  • Browse and play movies, series, seasons, episodes, music albums, and playlists
  • Live TV with channel guide and program recommendations
  • Direct play and server-side transcoding, with auto-detection
  • Full audio track, subtitle track, and chapter selection
  • Based on MPV Player
    • Container formats: MKV, MOV, MP4, AVI
    • Video codecs: H.264, H.265, VP8, VP9, AV1
    • Audio codecs: Opus, FLAC, MP3, AAC, AC-3, E-AC-3, TrueHD, DTS, DTS-HD
    • Subtitle codecs: SRT, VTT, SSA/ASS, DVDSUB
    • Hardware-accelerated decoding; fallback to software decoding when needed

Remote File Browser

  • Browse and play media from external sources:
    • WebDAV · HTTP(S) · SFTP · FTP · local filesystem
  • Manage multiple remote sources with add/edit/remove

Additional Features

  • Danmaku (弹幕) — integration with jellyfin-plugin-danmu
  • Download — save media for offline viewing, with series batch download
  • MirrorPlay — remote playback control via WebSocket (browse on phone, play on big screen)
  • Dashboard — monitor server sessions, activities, and device status; restart and rescan libraries
  • Search — full-text search with suggestions across all media types
  • 14 languages — English, 简体中文, 繁體中文, 日本語, 한국어, Deutsch, Français, Español, Português, Русский, Čeština, Türkçe, Українська, Tiếng Việt
  • External drive support on Nintendo Switch via libusbhsfs

Input Mapping (Playback)

Gamepad Keyboard Description
A Space Play / Pause
B Esc Stop
Y O Toggle OSD
X F4 Show Menu
R / L [ / ] Seek forward / backward
+ F1 Show video profile
R stick F2 Toggle video quality
L stick F3 Toggle playback speed

Keyboard bindings can be customized in Settings.

{
  "setting": {
    "key_last": "pgup",
    "key_next": "pgdn",
    "key_volume_up": "0",
    "key_volume_down": "9",
    "key_danmaku": "d",
    "key_video_profile": "f1",
    "key_video_quality": "f2",
    "key_video_speed": "f3",
    "key_setting": "f4",
    "key_refresh": "f5",
    "key_forward": "]",
    "key_rewind": "[",
    "key_video_osd": "o",
    "key_video_pause": "space"
  }
}

System Requirements

Platform Requirement
Windows Windows 7 or later with DirectX 11.1 support
macOS Intel or Apple Silicon, macOS 10.15 or later
Linux x86_64 / arm64v8 with OpenGL 3.0+, Flatpak recommended

FAQ

Q: Subtitles don't display on Nintendo Switch? A: Place a .ttf font file at /switch/Switchfin/subfont.ttf.

Q: How do I play media from a WebDAV / SFTP / HTTP server? A: Edit config.json and add entries under remotes:

{
  "remotes": [
    {
      "name": "local",
      "url": "file:///switch"
    },
    {
      "name": "xiaoya",
      "passwd": "guest_Api789",
      "url": "webdav://192.168.1.5:5678/dav",
      "user": "guest"
    },
    {
      "name": "rpi",
      "url": "sftp://pi:raspberry@192.168.1.5/media"
    },
    {
      "name": "rclone",
      "url": "http://192.168.1.5:8000"
    }
  ]
}

Example: using rclone to serve files over HTTP:

rclone serve http --addr :8000 --read-only /media/downloads

Q: The app won't open on macOS? A: Run the following in Terminal to remove the quarantine attribute:

sudo xattr -rd com.apple.quarantine /Applications/Switchfin.app

Development

git clone https://github.com/dragonflylee/switchfin.git --recurse-submodules --shallow-submodules

Nintendo Switch

Set up the devkitPro environment, then:

sudo dkp-pacman -S switch-dev switch-glfw switch-libwebp switch-curl switch-libmpv
cmake -B build_switch -DPLATFORM_SWITCH=ON
make -C build_switch Switchfin.nro -j$(nproc)
# Debug with nxlink
nxlink -a <YOUR_IP> -p Switchfin/Switchfin.nro -s Switchfin.nro --args -d -v

Linux / macOS / Windows (Desktop)

Ensure mpv, libcurl, libwebp, and their development headers are installed, then:

cmake -B build -DPLATFORM_DESKTOP=ON
cmake --build build

Windows (MinGW64)

pacman -S ${MINGW_PACKAGE_PREFIX}-cc ${MINGW_PACKAGE_PREFIX}-ninja ${MINGW_PACKAGE_PREFIX}-cmake
cmake -B build_mingw -G Ninja -DPLATFORM_DESKTOP=ON
cmake --build build_mingw

Acknowledgements

  • @xfangfang for wiliwili
  • @devkitpro and switchbrew for libnx
  • @natinusala and XITRIX for borealis
  • @proconsule for nxmp
  • @averne for FFmpeg hwaccel backend
  • @averne for mpv deko3d backend