Switchfin is third-party PC player for Jellyfin that provides a native user interface to browse and play movies and series.
This project is in its early stages so expect bugs.
| Home | Library |
|---|---|
![]() |
![]() |
| Search | Music |
![]() |
![]() |
| Series | Episode |
![]() |
![]() |
- 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
- Browse and play media from external sources:
- WebDAV · HTTP(S) · SFTP · FTP · local filesystem
- Manage multiple remote sources with add/edit/remove
- 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
- Personalized recommendations — because-you-watched, similar content, genre browsing
- Cast & crew view — browse actors and directors with filmography
- Multiple servers & users — quick switch between Jellyfin servers and user profiles
- 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
| 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"
}
}| 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 |
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/downloadsQ: 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.appgit clone https://github.com/dragonflylee/switchfin.git --recurse-submodules --shallow-submodulesSet 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 -vEnsure mpv, libcurl, libwebp, and their development headers are installed, then:
cmake -B build -DPLATFORM_DESKTOP=ON
cmake --build buildpacman -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




