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 |
![]() |
![]() |
| 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/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
git clone https://github.com/dragonflylee/switchfin.git --recurse-submodules --shallow-submodules
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
Ensure mpv, libcurl, libwebp, and their development headers are installed, then:
cmake -B build -DPLATFORM_DESKTOP=ON
cmake --build build
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