|
1 | 1 | # Jellyfin Desktop |
| 2 | + |
2 | 3 | Jellyfin desktop client built with Qt WebEngine and [libmpv](https://github.com/mpv-player/mpv). Supports audio passthrough, hardware decoding, and playback of more formats without transcoding. |
3 | 4 |
|
4 | 5 |  |
5 | 6 |
|
6 | | -Downloads: |
7 | | - - [Windows, Mac, and Linux Releases](https://github.com/jellyfin/jellyfin-desktop/releases) |
8 | | - - Note for Mac users: builds for Intel require macOS 12+ and Apple Silicon builds requires macOS 14+ |
9 | | - - [Flathub (Linux)](https://flathub.org/apps/details/org.jellyfin.JellyfinDesktop) |
10 | | - |
11 | | -Related Documents: |
12 | | - - Web client: Application uses server-provided web client. |
13 | | - - Web client integration documentation: [for-web-developers.md](https://github.com/jellyfin/jellyfin-desktop/blob/master/for-web-developers.md) |
14 | | - - API Docs in [client-api.md](https://github.com/jellyfin/jellyfin-desktop/blob/master/client-api.md) |
15 | | - - Tip: For help building, look at the GitHub Actions file! |
16 | | - |
17 | | -## Building at a glance (Linux) |
18 | | - |
19 | | -To download the latest stable release, get the latest version tag from the [latest releases page](https://github.com/jellyfin/jellyfin-desktop/releases/latest) and append the following to your pull command during the build phase for JMP "--branch $VERSIONTAG --single-branch" |
20 | | - |
21 | | -Example: |
22 | | -```bash |
23 | | -git clone --recursive https://github.com/jellyfin/jellyfin-desktop.git --branch v1.9.1 --single-branch |
24 | | -``` |
25 | | - |
26 | | - |
27 | | -### Ubuntu based systems |
28 | | - |
29 | | -Install dependencies: |
30 | | -```bash |
31 | | -sudo apt install autoconf automake build-essential cmake curl g++ git libasound2-dev libcec-dev libegl1-mesa-dev libfontconfig1-dev libfreetype6-dev libfribidi-dev libgl1-mesa-dev libgnutls28-dev libharfbuzz-dev libpulse-dev libsdl2-dev libtool libuchardet-dev libva-dev libvdpau-dev libx11-dev libxrandr-dev mesa-common-dev meson qml6-module-qtqml-workerscript qml6-module-qtquick-controls qml6-module-qtquick-templates qml6-module-qtquick-window qml6-module-qtwebchannel qml6-module-qtwebengine qml6-module-qtwebengine-controlsdelegates qml6-module-qtwebview qt6-base-private-dev qt6-webengine-private-dev unzip wget yasm zlib1g-dev |
32 | | -mkdir ~/jmp; cd ~/jmp |
33 | | -git clone https://github.com/mpv-player/mpv-build.git |
34 | | -cd mpv-build |
35 | | -./use-mpv-release |
36 | | -./update |
37 | | -echo -Dlibmpv=true > mpv_options |
38 | | -./rebuild -j$(nproc) |
39 | | -sudo ./install |
40 | | -sudo ln -s /usr/local/lib/x86_64-linux-gnu/libmpv.so /usr/local/lib/x86_64-linux-gnu/libmpv.so.1 |
41 | | -sudo ln -sf /usr/local/lib/x86_64-linux-gnu/libmpv.so /usr/local/lib/libmpv.so.2 |
42 | | -sudo ldconfig |
43 | | -cd ~/jmp/ |
44 | | -git clone --recursive https://github.com/jellyfin/jellyfin-desktop.git |
45 | | -cd jellyfin-desktop |
46 | | -mkdir build |
47 | | -cd build |
48 | | -cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local/ -G Ninja .. |
49 | | -ninja |
50 | | -sudo ninja install |
51 | | -rm -rf ~/jmp/ |
52 | | -``` |
53 | | - |
54 | | -### Fedora based systems |
55 | | - |
56 | | -Install dependencies: |
57 | | -```bash |
58 | | -sudo dnf install autoconf automake libtool freetype-devel libXrandr-devel libvdpau-devel libva-devel mesa-libGL-devel libdrm-devel libX11-devel mesa-libEGL-devel yasm alsa-lib pulseaudio-libs-devel zlib-devel fribidi-devel git gnutls-devel mesa-libGLU-devel SDL2-devel cmake wget g++ qt-devel libcec-devel qt6-qtbase-devel curl unzip qt6-qtwebchannel-devel qt6-qtwebengine-devel mpv.x86_64 qt6-qtbase.x86_64 meson.noarch ninja-build.x86_64 qt6-qtbase-private-devel mpv-libs.x86_64 mpv-devel qt6-qtdeclarative nasm libatomic libshaderc mpvqt-devel |
59 | | -``` |
60 | | - |
61 | | -Build commands for Fedora: |
62 | | - |
63 | | -Note, the only real differences here is that libraries are in diffrent directories on Fedora systems. |
64 | | -```bash |
65 | | -mkdir ~/jmp; cd ~/jmp |
66 | | -git clone https://github.com/mpv-player/mpv-build.git |
67 | | -cd mpv-build/ |
68 | | -echo -Dlibmpv=true > mpv_options |
69 | | -echo -Dpipewire=disabled >> mpv_options # hopefully temporary |
70 | | -./rebuild -j`nproc` |
71 | | -sudo ./install |
72 | | -sudo mkdir /usr/local/lib/x86_64-linux-gnu |
73 | | -sudo ln -s /usr/local/lib64/libmpv.so /usr/local/lib/x86_64-linux-gnu/libmpv.so.1 |
74 | | -sudo ln -s /usr/local/lib64/libmpv.so /usr/local/lib/x86_64-linux-gnu/libmpv.so |
75 | | -sudo ldconfig |
76 | | -cd ~/jmp/ |
77 | | -git clone --recursive https://github.com/jellyfin/jellyfin-desktop.git |
78 | | -cd jellyfin-desktop/ |
79 | | -mkdir build |
80 | | -cd build/ |
81 | | -cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr/local/ .. |
82 | | -make -j`nproc` |
83 | | -sudo make install |
84 | | -``` |
85 | | - |
86 | | -## Building for Windows |
87 | | - |
88 | | -Please install: |
89 | | - - [cmake](https://cmake.org/download/) - cmake-3.20.0-windows-x86_64.msi |
90 | | - - Add cmake to the path. |
91 | | - - [ninja](https://github.com/ninja-build/ninja/releases) |
92 | | - - Place this in the build directory. |
93 | | - - [QT](https://www.qt.io/download-thank-you?hsLang=en) |
94 | | - - This package is huge. You also need to make a QT account... |
95 | | - - Check "MSVC 2019 64-bit" and "Qt WebEngine" under Qt 6. |
96 | | - - [VS2019 Build Tools](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) |
97 | | - - Again this will use a lot of disk space. The installer is small though. |
98 | | - - [libmpv1](https://sourceforge.net/projects/mpv-player-windows/files/libmpv/) |
99 | | - - Place the contents in the build directory, in a subfolder called `mpv`. |
100 | | - - Move the contents of the `include` folder to an `mpv` folder inside the `include` folder. |
101 | | - - Move the `mpv-1.dll` to `mpv.dll`. |
102 | | - - [WIX](https://wixtoolset.org/releases/v3.11.2/stable) |
103 | | - |
104 | | -You need to run these commands in git bash. |
105 | | - |
106 | | -```bash |
107 | | -git clone --recursive https://github.com/jellyfin/jellyfin-desktop |
108 | | -cd jellyfin-desktop |
109 | | -mkdir build |
110 | | -cd build |
111 | | -``` |
112 | | - |
113 | | -Open the "x86_x64 Cross Tools Command Prompt for VS 2019". `cd` to the `build` directory. Run: |
114 | | - |
115 | | -``` |
116 | | -set PATH=%PATH%;C:\Program Files (x86)\WiX Toolset v3.11\bin |
117 | | -cmake -GNinja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=output -DCMAKE_MAKE_PROGRAM=ninja.exe -DQTROOT=C:/Qt/6.x.x/msvc2019_64 -DMPV_INCLUDE_DIR=mpv/include -DMPV_LIBRARY=mpv/libmpv-2.dll -DCMAKE_INSTALL_PREFIX=output .. |
118 | | -lib /def:mpv\mpv.def /out:mpv\mpv.dll.lib /MACHINE:X64 |
119 | | -ninja |
120 | | -ninja windows_package |
121 | | -``` |
122 | | - |
123 | | -## Building for MacOS |
124 | | -```bash |
125 | | -# Install dependencies |
126 | | -brew install aqtinstall mpv ninja |
127 | | - |
128 | | -# Download Qt |
129 | | -aqt install-qt mac desktop 6.10.1 -m qtwebengine qtwebchannel qtpositioning |
130 | | -export QTROOT="$(realpath 6.10.1/macos)" |
131 | | - |
132 | | -# Clone and build |
133 | | -git clone --recursive https://github.com/jellyfin/jellyfin-desktop.git |
134 | | -cd jellyfin-desktop |
135 | | - |
136 | | -cmake -B build -G Ninja \ |
137 | | - -DQTROOT="$QTROOT" \ |
138 | | - -DCMAKE_PREFIX_PATH="$QTROOT" \ |
139 | | - -DCMAKE_BUILD_TYPE=Release \ |
140 | | - -DCMAKE_INSTALL_PREFIX=output \ |
141 | | - -DUSE_STATIC_MPVQT=ON |
142 | | -cmake --build build --target install |
143 | | -``` |
144 | | - |
145 | | -## Log File Location |
146 | | - |
147 | | - - Windows: `%LOCALAPPDATA%\Jellyfin Desktop\logs` |
148 | | - - Linux: `~/.local/share/jellyfin-desktop/logs/` |
149 | | - - Linux (Flatpak): `~/.var/app/org.jellyfin.JellyfinDesktop/data/jellyfin-desktop/logs/` |
150 | | - - macOS: `~/Library/Logs/Jellyfin Desktop/` |
151 | | - |
152 | | -## Config File Location |
153 | | - |
154 | | -The main configuration file is called `jellyfin-desktop.conf`. You can also add a `mpv.conf` to configure MPV directly. |
155 | | - |
156 | | - - Windows: `%LOCALAPPDATA%\Jellyfin Desktop\` |
157 | | - - Linux: `~/.local/share/jellyfin-desktop/` |
158 | | - - Linux (Flatpak): `~/.var/app/org.jellyfin.JellyfinDesktop/data/jellyfin-desktop/` |
159 | | - - macOS: `~/Library/Application Support/Jellyfin Desktop/` |
160 | | - |
161 | | -## Web Debugger |
162 | | - |
163 | | -To get browser devtools, use remote debugging. |
164 | | - |
165 | | - - Run the application with the command argument `--remote-debugging-port=9222`. |
166 | | - - Open Chromium or Google Chrome. |
167 | | - - Navigate to `chrome://inspect/#devices`. |
168 | | - - You can now access the developer tools. |
| 7 | +## Downloads |
| 8 | +- [Windows, Mac, and Linux Releases](https://github.com/jellyfin/jellyfin-desktop/releases) |
| 9 | + - Note for Mac users: builds for Intel require macOS 12+ and Apple Silicon builds requires macOS 14+ |
| 10 | +- [Flathub (Linux)](https://flathub.org/apps/details/org.jellyfin.JellyfinDesktop) |
169 | 11 |
|
170 | | -If you have problems: |
| 12 | +## Building |
| 13 | +See [dev/](dev/) for platform-specific build instructions. |
171 | 14 |
|
172 | | - - Make sure "Discover Network Targets" is checked. |
173 | | - - Make sure `localhost:9222` is in the list under "Configure...". |
174 | | - - Make sure `--remote-debugging-port=9222` is specified correctly. |
| 15 | +## File Locations |
| 16 | +Data is stored per-profile in a `profiles/<profile-id>/` subdirectory. The main configuration file is `jellyfin-desktop.conf`. You can also add `mpv.conf` to configure MPV directly. |
175 | 17 |
|
176 | | -## License |
| 18 | +**Windows:** |
| 19 | +- Config: `%LOCALAPPDATA%\Jellyfin Desktop\profiles\<profile-id>\` |
| 20 | +- Logs: `%LOCALAPPDATA%\Jellyfin Desktop\profiles\<profile-id>\logs\` |
177 | 21 |
|
178 | | -Jellyfin Desktop is licensed under GPL v2. See the ``LICENSE`` file. |
179 | | -Licenses of dependencies are summarized under ``resources/misc/licenses.txt``. |
180 | | -This file can also be printed at runtime when using the ``--licenses`` option. |
| 22 | +**Linux:** |
| 23 | +- Config: `~/.local/share/jellyfin-desktop/profiles/<profile-id>/` |
| 24 | +- Logs: `~/.local/share/jellyfin-desktop/profiles/<profile-id>/logs/` |
181 | 25 |
|
182 | | -## Known Issues |
| 26 | +**Linux (Flatpak):** |
| 27 | +- Config: `~/.var/app/org.jellyfin.JellyfinDesktop/data/jellyfin-desktop/profiles/<profile-id>/` |
| 28 | +- Logs: `~/.var/app/org.jellyfin.JellyfinDesktop/data/jellyfin-desktop/profiles/<profile-id>/logs/` |
183 | 29 |
|
184 | | -If you build MPV from source, you currently need to disable pipewire or else the client will segfault. |
| 30 | +**macOS:** |
| 31 | +- Config: `~/Library/Application Support/Jellyfin Desktop/profiles/<profile-id>/` |
| 32 | +- Logs: `~/Library/Logs/Jellyfin Desktop/<profile-id>/` |
0 commit comments