Skip to content

Commit d33fa04

Browse files
author
Andrew Rabert
authored
Merge pull request #1087 from jellyfin/dev
Cleanup build instructions and scripts
2 parents 0233fd2 + 8c51614 commit d33fa04

26 files changed

Lines changed: 558 additions & 1741 deletions

.github/workflows/build-macos.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,21 @@ jobs:
4141
cmake --build build --target install
4242
- name: Sign and create dmg
4343
run: |
44-
codesign --force --deep -s - "./output/Jellyfin Desktop.app/"
44+
codesign --force --deep -s - "./build/output/Jellyfin Desktop.app/"
4545
brew install create-dmg
46-
create-dmg --volname "Jellyfin Desktop" --no-internet-enable "Jellyfin Desktop.dmg" "./output/Jellyfin Desktop.app"
46+
VERSION=$(cat VERSION)
47+
ARCH=$(uname -m)
48+
DMG_NAME="JellyfinDesktop-${VERSION}-${ARCH}.dmg"
49+
create-dmg \
50+
--volname "Jellyfin Desktop v${VERSION}" \
51+
--no-internet-enable \
52+
--window-size 500 300 \
53+
--icon-size 100 \
54+
--icon "Jellyfin Desktop.app" 125 150 \
55+
--app-drop-link 375 150 \
56+
"${DMG_NAME}" "./build/output/Jellyfin Desktop.app"
4757
- name: Archive production artifacts
4858
uses: actions/upload-artifact@v4
4959
with:
5060
name: ${{ matrix.artifact }}
51-
path: ${{ github.workspace }}/Jellyfin Desktop.dmg
61+
path: ${{ github.workspace }}/JellyfinDesktop-*.dmg

.gitignore

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,18 @@
22
!/.github/**
33
*.pro.user*
44
dependencies/*
5-
CMakeLists.txt.user
6-
CMakeLists.txt.user.*
7-
build/*
8-
build_deps/*
5+
/build/*
96
deps/*
10-
build_vs_debug/*
7+
dev/windows/deps/
8+
dev/macos/deps/
119
.idea
12-
.install_pkg
13-
.openelec-unpack
14-
QtCreatorDeployment.txt
15-
vagrant/ubuntu-x86_64/.vagrant
16-
vagrant/windows-x86_64/.vagrant
17-
build-*
18-
cmake-build-*
1910
*.pyc
20-
conaninfo.txt
21-
conanbuildinfo.*
22-
web-client
2311
.DS_Store
2412
.*libreelec*
25-
toolchain.cmake
26-
.sublime-settings
27-
.last_wc_version
2813
debian/*.debhelper.log
2914
debian/.debhelper/
3015
debian/jellyfin-desktop/
3116
debian/files
3217
debian/jellyfin-desktop.substvars
3318
debian/debhelper-build-stamp
34-
dist.zip
35-
obj-x86_64-linux-gnu/
3619
deployment/dist

.vscode/c_cpp_properties.json

Lines changed: 0 additions & 18 deletions
This file was deleted.

.vscode/settings.json

Lines changed: 0 additions & 73 deletions
This file was deleted.

CMakeModules/WindowsInstaller.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ add_custom_target(innosetup_install
3232

3333
# Determine architecture string for output filename
3434
if(CMAKE_SIZEOF_VOID_P MATCHES 8)
35-
set(INSTALLER_ARCH_STR windows-x64)
35+
set(INSTALLER_ARCH_STR x64)
3636
else()
37-
set(INSTALLER_ARCH_STR windows-x86)
37+
set(INSTALLER_ARCH_STR x86)
3838
endif()
3939

4040
set(INSTALLER_BASE_NAME "JellyfinDesktop-${VERSION_STRING}-${INSTALLER_ARCH_STR}")

README.md

Lines changed: 21 additions & 173 deletions
Original file line numberDiff line numberDiff line change
@@ -1,184 +1,32 @@
11
# Jellyfin Desktop
2+
23
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.
34

45
![Screenshot of Jellyfin Desktop](screenshots/video_player.png)
56

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)
16911

170-
If you have problems:
12+
## Building
13+
See [dev/](dev/) for platform-specific build instructions.
17114

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.
17517

176-
## License
18+
**Windows:**
19+
- Config: `%LOCALAPPDATA%\Jellyfin Desktop\profiles\<profile-id>\`
20+
- Logs: `%LOCALAPPDATA%\Jellyfin Desktop\profiles\<profile-id>\logs\`
17721

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/`
18125

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/`
18329

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

Comments
 (0)