{"id":24657876,"url":"https://github.com/dragonflylee/switchfin","last_synced_at":"2026-01-28T07:15:48.133Z","repository":{"id":175022851,"uuid":"652522172","full_name":"dragonflylee/switchfin","owner":"dragonflylee","description":"Third-party native Jellyfin client for PC/PS4/PSVita/Nintendo Switch","archived":false,"fork":false,"pushed_at":"2025-05-14T10:22:32.000Z","size":13142,"stargazers_count":445,"open_issues_count":25,"forks_count":10,"subscribers_count":7,"default_branch":"dev","last_synced_at":"2025-05-14T11:39:50.975Z","etag":null,"topics":["jellyfin","jellyfin-client","mpv","nintendo-switch","nintendo-switch-homebrew"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dragonflylee.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-06-12T08:40:59.000Z","updated_at":"2025-05-13T14:19:45.000Z","dependencies_parsed_at":"2024-01-07T15:37:14.865Z","dependency_job_id":"eed08f9a-7f70-49aa-8029-8ed40e04e5f6","html_url":"https://github.com/dragonflylee/switchfin","commit_stats":null,"previous_names":["dragonflylee/switchfin"],"tags_count":25,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonflylee%2Fswitchfin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonflylee%2Fswitchfin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonflylee%2Fswitchfin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonflylee%2Fswitchfin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dragonflylee","download_url":"https://codeload.github.com/dragonflylee/switchfin/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254459088,"owners_count":22074605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["jellyfin","jellyfin-client","mpv","nintendo-switch","nintendo-switch-homebrew"],"created_at":"2025-01-26T00:52:11.094Z","updated_at":"2026-01-28T07:15:48.127Z","avatar_url":"https://github.com/dragonflylee.png","language":"C++","readme":"# Switchfin\n\n\u003cimg src=\"scripts/org.player.switchfin.svg\" alt=\"icon\" height=\"128\" width=\"128\" align=\"left\"\u003e\n\nSwitchfin is third-party PC player for Jellyfin that provides a native user interface to browse and play movies and series.\n\u003cbr\u003e\n\n[![build](https://github.com/dragonflylee/switchfin/actions/workflows/build.yaml/badge.svg)](https://github.com/dragonflylee/switchfin/actions/workflows/build.yaml) [![download](https://img.shields.io/github/downloads/dragonflylee/switchfin/total?label=Downloads)](https://github.com/dragonflylee/switchfin/releases/latest) [![nightly](https://img.shields.io/badge/nightly-build-green)](https://nightly.link/dragonflylee/switchfin/workflows/build.yaml/dev)\n\n**This project is in its early stages so expect bugs.**\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003eHome\u003c/th\u003e\n      \u003cth\u003eLibrary\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"images/home.jpg\" alt=\"Home\"\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003cimg src=\"images/library.jpg\" alt=\"Library\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSearch\u003c/th\u003e\n      \u003cth\u003eMusic\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"images/search.jpg\" alt=\"Search\"\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003cimg src=\"images/music.jpg\" alt=\"Music\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003eSeries\u003c/th\u003e\n      \u003cth\u003eEpisode\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd\u003e\u003cimg src=\"images/series.jpg\" alt=\"Series\"\u003e\u003c/td\u003e\n      \u003ctd\u003e\u003cimg src=\"images/episode.jpg\" alt=\"Episode\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n## Features\n- Completely native interface\n- Supported media items: movies, series, seasons, episodes \n  - Direct play and transcoding\n- Remote browser for Webdav/Apache/Nginx/FTP server\n- Base on MPV Player\n  - Container formats: mkv, mov, mp4, avi\n  - Video codecs: H.264, H.265, VP8, VP9, AV1\n  - Audio codecs: Opus, FLAC, MP3, AAC, AC-3, E-AC-3, TrueHD, DTS, DTS-HD\n  - Subtitle codecs: SRT, VTT, SSA/ASS, DVDSUB\n  - Optionally force software decoding when hardware decoding has issues.\n- External drive support using [libusbhsfs](https://github.com/DarkMatterCore/libusbhsfs)\n\n## Input mapping during playback\n\ngamepad | keyboard | describe\n---|-------|---------\n A | space | Play/Pause\n B | esc | Stop during\n Y | o | Toggle OSD\n X | f4 | Show Menu \n R/L | [/] | Seek +/-\n \\+ | f1 | Show video profile\n R | f2 | Stick Button Toggle Video Quality\n L | f3 | Stick Button Toggle Speed Select\n\n## System Requirements\n\n* Windows 7 or later with DirectX 11.1 support\n* Intel or Apple Silicon Mac models 10.15 or later\n* Linux flatpak x86_64/arm64v8 with OpenGL3 support\n\n## FAQ\n\n1. Q: Subtitles didn't display?\n   A: Put any ttf file at `/switch/Switchfin/subfont.ttf`\n2. Q: How to enable external drive on switch?\n   A: Edit config file `config.json`\n\n```json\n{\n  \"setting\": {\n    \"ums\": true\n  }\n}\n```\n\n![ums](images/ums.jpg)\n\n3. Q: How to play media files on webdav server?\n   A: Edit config file `config.json`\n\n```json\n{\n  \"remotes\": [\n    {\n      \"name\": \"local\",\n      \"url\": \"file:///switch\"\n    },\n    {\n      \"name\": \"xiaoya\",\n      \"passwd\": \"guest_Api789\",\n      \"url\": \"webdav://192.168.1.5:5678/dav\",\n      \"user\": \"guest\"\n    },\n    {\n      \"name\": \"rpi\",\n      \"url\": \"sftp://pi:raspberry@192.168.1.5/media\"\n    },\n    {\n      \"name\": \"rclone\",\n      \"url\": \"http://192.168.1.5:8000\"\n    }\n  ]\n}\n```\n\n* example for using [rClone](https://rclone.org/downloads/) setup HTTP server\n\n```bash\nrclone serve http --addr :8000 --read-only /media/downloads\n```\n\n4. Q: Can't open app under macOS ?\n   A: Please run this command in your terminal: `sudo xattr -rd com.apple.quarantine /Applications/Switchfin.app`\n\n## TODO list\n\n- [x] Movie view\n- [x] Series detail\n- [x] Search page\n- [x] Websocket connection (MirrorPlay)\n- [x] [danmu plugin](https://github.com/cxfksword/jellyfin-plugin-danmu) integration\n\n## Develop\n\n```shell\ngit clone https://github.com/dragonflylee/switchfin.git --recurse-submodules --shallow-submodules\n```\n\n### Building for Switch\n\nTo 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).\n\n```bash\nsudo dkp-pacman -S switch-dev switch-glfw switch-libwebp switch-curl switch-libmpv\ncmake -B build_switch -DPLATFORM_SWITCH=ON\nmake -C build_switch Switchfin.nro -j$(nproc)\n# for debug\nnxlink -a \u003cYOUR IP\u003e -p Switchfin/Switchfin.nro -s Switchfin.nro --args -d -v\n```\n\n### Building for MinGW64\n\n```bash\npacman -S ${MINGW_PACKAGE_PREFIX}-cc ${MINGW_PACKAGE_PREFIX}-ninja ${MINGW_PACKAGE_PREFIX}-cmake\ncmake -B build_mingw -G Ninja -DPLATFORM_DESKTOP=ON\ncmake --build build_mingw\n```\n\n## Thanks to\n\n- **@xfangfang for [wiliwili](https://github.com/xfangfang/wiliwili)**\n- @devkitpro and switchbrew for [libnx](https://github.com/switchbrew/libnx)\n- @natinusala and XITRIX for [borealis](https://github.com/natinusala/borealis)\n- @proconsule for [nxmp](https://github.com/proconsule/nxmp)\n- @averne for great work of [FFmpeg](https://github.com/averne/FFmpeg) hwaccel backend\n- @averne deko3d backend of [mpv](https://github.com/averne/mpv)\n","funding_links":[],"categories":["C++","🎞️ Media"],"sub_categories":["🎥 Streaming"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonflylee%2Fswitchfin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdragonflylee%2Fswitchfin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonflylee%2Fswitchfin/lists"}