https://github.com/dragonflylee/switchfin
Third-party native Jellyfin client for PC/PS4/PSVita/Nintendo Switch
https://github.com/dragonflylee/switchfin
jellyfin jellyfin-client mpv nintendo-switch nintendo-switch-homebrew
Last synced: 5 months ago
JSON representation
Third-party native Jellyfin client for PC/PS4/PSVita/Nintendo Switch
- Host: GitHub
- URL: https://github.com/dragonflylee/switchfin
- Owner: dragonflylee
- License: apache-2.0
- Created: 2023-06-12T08:40:59.000Z (over 2 years ago)
- Default Branch: dev
- Last Pushed: 2025-05-14T10:22:32.000Z (5 months ago)
- Last Synced: 2025-05-14T11:39:50.975Z (5 months ago)
- Topics: jellyfin, jellyfin-client, mpv, nintendo-switch, nintendo-switch-homebrew
- Language: C++
- Homepage:
- Size: 12.5 MB
- Stars: 445
- Watchers: 7
- Forks: 10
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Switchfin
Switchfin is third-party PC player for Jellyfin that provides a native user interface to browse and play movies and series.
[](https://github.com/dragonflylee/switchfin/actions/workflows/build.yaml) [](https://github.com/dragonflylee/switchfin/releases/latest) [](https://nightly.link/dragonflylee/switchfin/workflows/build.yaml/dev)
**This project is in its early stages so expect bugs.**
## Screenshots
| Home | Library |
|-------------------------------------|-------------------------------------|
|  |  |
| Search | Episode |
|  |  |
| Music | |
|  | |## Features
- Completely native interface
- Supported media items: movies, series, seasons, episodes
- Direct play and transcoding
- Remote browser for Webdav/Apache/Nginx/FTP server
- Base 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
- Optionally force software decoding when hardware decoding has issues.## Input mapping during playback
- A Play/Pause
- B Stop during
- Y Toggle OSD
- X Show Menu
- R/L Seek +/-
- L Stick Button Toggle Speed Select
- R Stick Button Toggle Video Quality Select
- \+ Show video profile## FAQ
1. Q: Subtitles didn't display?
A: Put any ttf file at `/switch/Switchfin/subfont.ttf`
2. Q: How to play media files on webdav server?
A: Edit config file `config.json````json
{
"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 for using [rClone](https://rclone.org/downloads/) setup HTTP server
```bash
rclone serve http --addr :8000 --read-only /media/downloads
```## TODO list
- [ ] Movie view
- [ ] Series detail
- [x] Search page
- [x] Websocket connection (MirrorPlay)
- [x] [danmu plugin](https://github.com/cxfksword/jellyfin-plugin-danmu) integration## Develop
```shell
git clone https://github.com/dragonflylee/switchfin.git --recurse-submodules --shallow-submodules
```### Building for Switch
To build for Switch, a standard development environment must first be set up. In order to do so, [refer to the Getting Started guide](https://devkitpro.org/wiki/Getting_Started).
```bash
sudo dkp-pacman -S switch-dev switch-glfw switch-libwebp switch-curl switch-libmpv
cmake -B build_switch -DPLATFORM_SWITCH=ON -DBUILTIN_NSP=ON
make -C build_switch Switchfin.nro -j$(nproc)
# for debug
nxlink -a -p Switchfin/Switchfin.nro -s Switchfin.nro --args -d -v
```### Building for MinGW64
```bash
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
```## Thanks to
- **@xfangfang for [wiliwili](https://github.com/xfangfang/wiliwili)**
- @devkitpro and switchbrew for [libnx](https://github.com/switchbrew/libnx)
- @natinusala and XITRIX for [borealis](https://github.com/natinusala/borealis)
- @proconsule for [nxmp](https://github.com/proconsule/nxmp)
- @averne for great work of [FFmpeg](https://github.com/averne/FFmpeg) hwaccel backend
- @averne deko3d backend of [mpv](https://github.com/averne/mpv)