|
|
.github/workflows/ci-flatpak.yml
|
+6
−5
|
@@ -17,9 +17,10 @@ name: ${{ matrix.arch }} env: APP_ID: dev.lizardbyte.app.Sunshine FREEDESKTOP_SDK_VERSION: "25.08" KDE_PLATFORM_VERSION: "6.10" MATRIX_ARCH: ${{ matrix.arch }} NODE_VERSION: "20" PLATFORM_VERSION: "24.08" permissions: contents: read runs-on: ${{ matrix.runner }} @@ -65,9 +66,9 @@
sudo su "$(whoami)" -c "flatpak --user install -y flathub \ org.flatpak.Builder \ org.kde.Platform/${MATRIX_ARCH}/${KDE_PLATFORM_VERSION} \ org.kde.Sdk/${MATRIX_ARCH}/${KDE_PLATFORM_VERSION} \ org.freedesktop.Sdk.Extension.node${NODE_VERSION}/${MATRIX_ARCH}/${FREEDESKTOP_SDK_VERSION} \ org.freedesktop.Platform/${MATRIX_ARCH}/${PLATFORM_VERSION} \ org.freedesktop.Sdk/${MATRIX_ARCH}/${PLATFORM_VERSION} \ org.freedesktop.Sdk.Extension.node${NODE_VERSION}/${MATRIX_ARCH}/${PLATFORM_VERSION} \ "
flatpak run org.flatpak.Builder --version @@ -84,7 +85,7 @@ run: | python \ ./packaging/linux/flatpak/deps/flatpak-builder-tools/pip/flatpak-pip-generator.py \ --runtime="org.freedesktop.Sdk//${PLATFORM_VERSION}" \ --runtime="org.kde.Sdk//${KDE_PLATFORM_VERSION}" \ --output glad-dependencies \ --build-only \ --requirements-file=./third-party/glad/requirements.txt
|
|
|
.github/workflows/ci-freebsd.yml
|
+2
−1
|
@@ -105,14 +105,15 @@ devel/cmake-core \ devel/evdev-proto \ devel/git \ devel/libayatana-appindicator \ devel/libevdev \ devel/libnotify \ devel/llvm${{ env.FREEBSD_CLANG_VERSION }} \ devel/ninja \ devel/pkgconf \ devel/qt6-base \ ftp/curl \ graphics/libdrm \ graphics/qt6-svg \ graphics/shaderc \ graphics/vulkan-headers \ graphics/vulkan-loader \
|
|
|
.gitmodules
|
+0
−4
|
@@ -2,10 +2,6 @@ path = packaging/linux/flatpak/deps/flatpak-builder-tools url = https://github.com/flatpak/flatpak-builder-tools.git branch = master [submodule "packaging/linux/flatpak/deps/shared-modules"] path = packaging/linux/flatpak/deps/shared-modules url = https://github.com/flathub/shared-modules.git branch = master [submodule "third-party/build-deps"] path = third-party/build-deps url = https://github.com/LizardByte/build-deps.git
|
|
|
cmake/compile_definitions/common.cmake
|
+8
−1
|
@@ -62,7 +62,6 @@ "${CMAKE_SOURCE_DIR}/third-party/moonlight-common-c/src/Rtsp.h" "${CMAKE_SOURCE_DIR}/third-party/moonlight-common-c/src/RtspParser.c" "${CMAKE_SOURCE_DIR}/third-party/moonlight-common-c/src/Video.h" "${CMAKE_SOURCE_DIR}/third-party/tray/src/tray.h" "${CMAKE_SOURCE_DIR}/src/upnp.cpp" "${CMAKE_SOURCE_DIR}/src/upnp.h" "${CMAKE_SOURCE_DIR}/src/cbs.cpp" @@ -159,3 +158,11 @@ ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${PLATFORM_LIBRARIES})
# tray icon if(SUNSHINE_ENABLE_TRAY) list(APPEND SUNSHINE_EXTERNAL_LIBRARIES tray::tray) else() set(SUNSHINE_TRAY 0) message(STATUS "Tray icon disabled") endif()
|
|
|
cmake/compile_definitions/linux.cmake
|
+4
−31
|
@@ -2,6 +2,10 @@
if(FREEBSD) add_compile_definitions(SUNSHINE_PLATFORM="freebsd") # FreeBSD installs packages to /usr/local/lib, which is not in the default linker search path. # link_directories() is directory-scoped and propagates to all subdirectories (including tests/), # so all targets (sunshine, test_sunshine) can resolve libraries found via pkg_check_modules. link_directories(/usr/local/lib) else() add_compile_definitions(SUNSHINE_PLATFORM="linux") endif() @@ -291,37 +295,6 @@ AND NOT ${WAYLAND_FOUND} AND NOT ${X11_FOUND}) message(FATAL_ERROR "Couldn't find either cuda, (libdrm and libcap), libva, kwin, pipewire, portal, wayland or x11") endif()
# tray icon if(${SUNSHINE_ENABLE_TRAY}) pkg_check_modules(APPINDICATOR ayatana-appindicator3-0.1) if(APPINDICATOR_FOUND) list(APPEND SUNSHINE_DEFINITIONS TRAY_AYATANA_APPINDICATOR=1) else() pkg_check_modules(APPINDICATOR appindicator3-0.1) if(APPINDICATOR_FOUND) list(APPEND SUNSHINE_DEFINITIONS TRAY_LEGACY_APPINDICATOR=1) endif () endif() pkg_check_modules(LIBNOTIFY libnotify) if(NOT APPINDICATOR_FOUND OR NOT LIBNOTIFY_FOUND) message(STATUS "APPINDICATOR_FOUND: ${APPINDICATOR_FOUND}") message(STATUS "LIBNOTIFY_FOUND: ${LIBNOTIFY_FOUND}") message(FATAL_ERROR "Couldn't find either appindicator or libnotify") else() include_directories(SYSTEM ${APPINDICATOR_INCLUDE_DIRS} ${LIBNOTIFY_INCLUDE_DIRS}) link_directories(${APPINDICATOR_LIBRARY_DIRS} ${LIBNOTIFY_LIBRARY_DIRS})
list(APPEND PLATFORM_TARGET_FILES "${CMAKE_SOURCE_DIR}/third-party/tray/src/tray_linux.c") list(APPEND SUNSHINE_EXTERNAL_LIBRARIES ${APPINDICATOR_LIBRARIES} ${LIBNOTIFY_LIBRARIES}) endif()
set(SUNSHINE_TRAY_PREFIX "${PROJECT_FQDN}") list(APPEND SUNSHINE_DEFINITIONS SUNSHINE_TRAY_PREFIX="${SUNSHINE_TRAY_PREFIX}") else() set(SUNSHINE_TRAY 0) message(STATUS "Tray icon disabled") endif()
# These need to be set before adding the inputtino subdirectory in order for them to be picked up
|
|
|
cmake/compile_definitions/macos.cmake
|
+0
−7
|
@@ -59,10 +59,3 @@ "${CMAKE_SOURCE_DIR}/third-party/TPCircularBuffer/TPCircularBuffer.h" ${APPLE_PLIST_FILE})
if(SUNSHINE_ENABLE_TRAY) list(APPEND SUNSHINE_EXTERNAL_LIBRARIES ${COCOA}) list(APPEND PLATFORM_TARGET_FILES "${CMAKE_SOURCE_DIR}/third-party/tray/src/tray_darwin.m") endif()
|
|
|
cmake/compile_definitions/windows.cmake
|
+0
−5
|
@@ -106,8 +106,3 @@ wsock32 )
if(SUNSHINE_ENABLE_TRAY) list(APPEND PLATFORM_TARGET_FILES "${CMAKE_SOURCE_DIR}/third-party/tray/src/tray_windows.c") endif()
|
|
|
cmake/dependencies/common.cmake
|
+4
−0
|
@@ -19,6 +19,10 @@ # libdisplaydevice add_subdirectory("${CMAKE_SOURCE_DIR}/third-party/libdisplaydevice")
if(SUNSHINE_ENABLE_TRAY) add_subdirectory("${CMAKE_SOURCE_DIR}/third-party/tray") endif()
# common dependencies include("${CMAKE_MODULE_PATH}/dependencies/nlohmann_json.cmake") find_package(PkgConfig REQUIRED)
|
|
|
cmake/packaging/linux.cmake
|
+42
−18
|
@@ -138,33 +138,57 @@ install(FILES "${CMAKE_SOURCE_DIR}/sunshine.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/apps" RENAME "${PROJECT_FQDN}.svg") install(FILES "${CMAKE_SOURCE_DIR}/sunshine.svg" DESTINATION "${SUNSHINE_ASSETS_DIR}/web/images" RENAME "logo-sunshine.svg")
# tray icon if(${SUNSHINE_TRAY} STREQUAL 1) install(FILES "${CMAKE_SOURCE_DIR}/sunshine.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status" RENAME "${PROJECT_FQDN}-tray.svg") install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-playing.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status" RENAME "${PROJECT_FQDN}-playing.svg") install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-pausing.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status" RENAME "${PROJECT_FQDN}-pausing.svg") install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-locked.svg" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status" RENAME "${PROJECT_FQDN}-locked.svg") # Icons used by the Qt tray backend are no longer installed to the hicolor icon theme, # because Qt6 will not allow icons not part of the theme... so we will use icons from our web directory instead
set(CPACK_DEBIAN_PACKAGE_DEPENDS "\ ${CPACK_DEBIAN_PACKAGE_DEPENDS}, \ libayatana-appindicator3-1, \ libnotify4") ${CPACK_DEBIAN_PACKAGE_DEPENDS}, \ libnotify4" ) set(CPACK_RPM_PACKAGE_REQUIRES "\ ${CPACK_RPM_PACKAGE_REQUIRES}, \ ${CPACK_RPM_PACKAGE_REQUIRES}, \ libnotify >= 0.8.0" ) libappindicator-gtk3 >= 12.10.0") list(APPEND CPACK_FREEBSD_PACKAGE_DEPS devel/libayatana-appindicator devel/libnotify ) if(TRAY_QT_VERSION EQUAL 6) set(CPACK_DEBIAN_PACKAGE_DEPENDS "\ ${CPACK_DEBIAN_PACKAGE_DEPENDS}, \ libqt6widgets6, \ libqt6svg6" ) set(CPACK_RPM_PACKAGE_REQUIRES "\ ${CPACK_RPM_PACKAGE_REQUIRES}, \ qt6-qtbase, \ qt6-qtsvg" ) list(APPEND CPACK_FREEBSD_PACKAGE_DEPS x11-toolkits/qt6-widgets graphics/qt6-svg ) else() set(CPACK_DEBIAN_PACKAGE_DEPENDS "\ ${CPACK_DEBIAN_PACKAGE_DEPENDS}, \ libqt5widgets5, \ libqt5svg5" ) set(CPACK_RPM_PACKAGE_REQUIRES "\ ${CPACK_RPM_PACKAGE_REQUIRES}, \ qt5-qtbase, \ qt5-qtsvg" ) list(APPEND CPACK_FREEBSD_PACKAGE_DEPS x11-toolkits/qt5-widgets graphics/qt5-svg ) endif() endif()
# desktop file
|
|
|
cmake/targets/linux.cmake
|
+7
−5
|
@@ -1,7 +1,9 @@ # linux specific target definitions
# Using newer c++ compilers / features on older distros causes runtime dyn link errors list(APPEND SUNSHINE_EXTERNAL_LIBRARIES -static-libgcc -static-libstdc++ ) if(NOT FREEBSD) # Using newer c++ compilers / features on older distros causes runtime dyn link errors list(APPEND SUNSHINE_EXTERNAL_LIBRARIES -static-libgcc -static-libstdc++ ) endif()
|
|
|
docker/clion-toolchain.dockerfile
|
+2
−1
|
@@ -33,7 +33,6 @@ gdb \ git \ graphviz \ libayatana-appindicator3-dev \ libcap-dev \ libcurl4-openssl-dev \ libdrm-dev \ @@ -55,6 +54,8 @@ libxrandr-dev \ libxtst-dev \ npm \ qt6-base-dev \ qt6-svg-dev \ udev \ wget \ x11-xserver-utils \
|
|
|
docs/building.md
|
+2
−1
|
@@ -26,13 +26,14 @@ devel/cmake \ devel/evdev-proto \ devel/git \ devel/libayatana-appindicator \ devel/libevdev \ devel/libnotify \ devel/ninja \ devel/pkgconf \ devel/qt6-base \ ftp/curl \ graphics/libdrm \ graphics/qt6-svg \ graphics/wayland \ multimedia/libva \ net/miniupnpc \
|
|
|
packaging/linux/Arch/PKGBUILD
|
+2
−1
|
@@ -31,7 +31,6 @@ depends=( 'avahi' 'curl' 'libayatana-appindicator' 'libcap' 'libdrm' 'libevdev' @@ -49,6 +48,8 @@ 'numactl' 'openssl' 'opus' 'qt6-base' 'qt6-svg' 'udev' 'vulkan-icd-loader' 'which'
|
|
|
packaging/linux/copr/Sunshine.spec
|
+20
−6
|
@@ -30,7 +30,7 @@ BuildRequires: libcurl-devel BuildRequires: libdrm-devel BuildRequires: libevdev-devel BuildRequires: libnotify-devel BuildRequires: libnotify-devel >= 0.8.0 BuildRequires: libva-devel BuildRequires: libX11-devel BuildRequires: libxcb-devel @@ -58,7 +58,6 @@ # needed for npm from nvm BuildRequires: libatomic %endif BuildRequires: libayatana-appindicator3-devel BuildRequires: libgudev BuildRequires: mesa-libGL-devel BuildRequires: mesa-libgbm-devel @@ -71,6 +70,8 @@ BuildRequires: pulseaudio-libs-devel BuildRequires: python3-jinja2 BuildRequires: python3-setuptools BuildRequires: qt6-qtbase-devel BuildRequires: qt6-qtsvg-devel BuildRequires: systemd-udev %{?sysusers_requires_compat} # for unit tests @@ -81,7 +82,6 @@ # OpenSUSE-specific BuildRequires BuildRequires: AppStream BuildRequires: appstream-glib BuildRequires: libappindicator3-devel BuildRequires: libgudev-1_0-devel BuildRequires: Mesa-libGL-devel BuildRequires: libgbm-devel @@ -132,6 +132,9 @@ # OpenSUSE Leap 15.x BuildRequires: gcc14 BuildRequires: gcc14-c++ # OpenSUSE Leap: Qt6 not in standard repos, use Qt5 BuildRequires: libqt5-qtbase-devel BuildRequires: libqt5-qtsvg-devel %global gcc_version 14 %global cuda_version 12.9.1 %global cuda_build 575.57.08 @@ -139,6 +142,8 @@ # OpenSUSE Tumbleweed BuildRequires: gcc14 BuildRequires: gcc14-c++ BuildRequires: libqt6-qtbase-devel BuildRequires: libqt6-qtsvg-devel %global gcc_version 14 %global cuda_version 12.9.1 %global cuda_build 575.57.08 @@ -148,12 +153,12 @@ %global cuda_dir %{_builddir}/cuda
# Common runtime requirements Requires: libnotify >= 0.8.0 Requires: miniupnpc >= 2.2.4 Requires: which >= 2.21
%if 0%{?fedora} # Fedora runtime requirements Requires: libayatana-appindicator3 >= 0.5.3 Requires: libcap >= 2.22 Requires: libcurl >= 7.0 Requires: libdrm > 2.4.97 @@ -165,12 +170,13 @@ Requires: numactl-libs >= 2.0.14 Requires: openssl >= 3.0.2 Requires: pulseaudio-libs >= 10.0 Requires: qt6-qtbase Requires: qt6-qtsvg Requires: vulkan-loader %endif
%if 0%{?suse_version} # OpenSUSE runtime requirements Requires: libappindicator3-1 Requires: libcap2 Requires: libcurl4 Requires: libdrm2 @@ -185,6 +191,15 @@ %if !0%{?sle_version} Requires: libvulkan1 %endif %if 0%{?suse_version} <= 1699 # OpenSUSE Leap: built with Qt5 Requires: libQt5Svg5 Requires: libQt5Widgets5 %else # OpenSUSE Tumbleweed: built with Qt6 Requires: libQt6Svg6 Requires: libQt6Widgets6 %endif %endif
%description @@ -421,7 +436,6 @@
# Icons %{_datadir}/icons/hicolor/scalable/apps/*.Sunshine.svg %{_datadir}/icons/hicolor/scalable/status/*.Sunshine-*.svg
# Metainfo %{_datadir}/metainfo/*.metainfo.xml
|
|
|
packaging/linux/flatpak/deps/shared-modules
|
+0
−0
|
|
|
|
|
packaging/linux/flatpak/dev.lizardbyte.app.Sunshine.yml
|
+10
−7
|
@@ -1,10 +1,14 @@ --- app-id: "@PROJECT_FQDN@" runtime: org.kde.Platform runtime-version: "6.10" sdk: org.kde.Sdk add-build-extensions: org.freedesktop.Sdk.Extension.node20: directory: lib/sdk/node20 version: "25.08" no-autodownload: true autodelete: false runtime: org.freedesktop.Platform runtime-version: "24.08" sdk: org.freedesktop.Sdk sdk-extensions: - org.freedesktop.Sdk.Extension.node20 command: sunshine separate-locales: false finish-args: @@ -37,7 +41,6 @@ - "modules/nlohmann_json.json"
# Runtime dependencies - shared-modules/libayatana-appindicator/libayatana-appindicator-gtk3.json - "modules/avahi.json" - "modules/boost.json" - "modules/libevdev.json" @@ -79,13 +82,13 @@ - -DGLAD_SKIP_PIP_INSTALL=ON - -DSUNSHINE_ASSETS_DIR=share/sunshine - -DSUNSHINE_BUILD_FLATPAK=ON - -DSUNSHINE_EXECUTABLE_PATH=/app/bin/sunshine - -DSUNSHINE_ENABLE_CUDA=ON - -DSUNSHINE_ENABLE_DRM=ON - -DSUNSHINE_ENABLE_KWIN=ON - -DSUNSHINE_ENABLE_PORTAL=ON - -DSUNSHINE_ENABLE_WAYLAND=ON - -DSUNSHINE_ENABLE_X11=ON - -DSUNSHINE_EXECUTABLE_PATH=/app/bin/sunshine - -DSUNSHINE_PUBLISHER_NAME='LizardByte' - -DSUNSHINE_PUBLISHER_WEBSITE='https://app.lizardbyte.dev' - -DSUNSHINE_PUBLISHER_ISSUE_URL='https://app.lizardbyte.dev/support'
|
|
|
packaging/linux/flatpak/modules/cuda.json
|
+31
−7
|
@@ -1,7 +1,8 @@ { "name": "cuda", "build-options": { "no_debuginfo": true "no_debuginfo": true, "prepend-ld-library-path": "/app/lib:/app/lib64" }, "buildsystem": "simple", "cleanup": [ @@ -9,18 +10,41 @@ ], "build-commands": [ "chmod u+x ./cuda.run", "./cuda.run --silent --toolkit --toolkitpath=$FLATPAK_DEST/cuda --no-opengl-libs --no-man-page --no-drm --tmpdir=$FLATPAK_BUILDER_BUILDDIR", "rm -r $FLATPAK_DEST/cuda/nsight-systems-*", "./cuda.run --silent --toolkit --toolkitpath=$FLATPAK_DEST/cuda --no-opengl-libs --no-man-page --no-drm --tmpdir=$FLATPAK_BUILDER_BUILDDIR || { echo '=== cuda-installer.log ==='; cat /tmp/cuda-installer.log 2>/dev/null; true; }", "test -f $FLATPAK_DEST/cuda/bin/nvcc", "rm -rf $FLATPAK_DEST/cuda/nsight-systems-*", "rm ./cuda.run" ], "modules": [ { "name": "libxml2", "config-opts": [ "--without-python", "--without-debug", "--without-history" ], "cleanup": [ "/share", "/include", "/bin" ], "sources": [ { "type": "archive", "url": "https://download.gnome.org/sources/libxml2/2.13/libxml2-2.13.9.tar.xz", "sha256": "a2c9ae7b770da34860050c309f903221c67830c86e4a7e760692b803df95143a" } ] } ], "sources": [ { "type": "file", "only-arches": [ "x86_64" ], "url": "https://developer.download.nvidia.com/compute/cuda/13.2.0/local_installers/cuda_13.2.0_595.45.04_linux.run", "sha256": "c599b651582c8f345ebde7bcf089b7dcfcd8afd7d3ea7f50525698c563a239d7", "url": "https://developer.download.nvidia.com/compute/cuda/12.9.1/local_installers/cuda_12.9.1_575.57.08_linux.run", "sha256": "0f6d806ddd87230d2adbe8a6006a9d20144fdbda9de2d6acc677daa5d036417a", "dest-filename": "cuda.run" }, { @@ -28,8 +52,8 @@ "only-arches": [ "aarch64" ], "url": "https://developer.download.nvidia.com/compute/cuda/12.9.1/local_installers/cuda_12.9.1_575.57.08_linux_sbsa.run", "sha256": "64f47ab791a76b6889702425e0755385f5fa216c5a9f061875c7deed5f08cdb6", "url": "https://developer.download.nvidia.com/compute/cuda/13.2.0/local_installers/cuda_13.2.0_595.45.04_linux_sbsa.run", "sha256": "9684ebc64988f71ef1c70846cc9d158fb27950c1355bf37c8795c346346b6a72", "dest-filename": "cuda.run" } ]
|
|
|
packaging/linux/flatpak/modules/xvfb/xvfb.json
|
+3
−0
|
@@ -99,6 +99,9 @@ }, { "name": "libtirpc", "build-options": { "cflags": "-std=gnu17" }, "config-opts": [ "--disable-gssapi" ],
|
|
|
packaging/sunshine.rb
|
+2
−5
|
@@ -66,17 +66,12 @@ depends_on "python3" => :build depends_on "at-spi2-core" depends_on "avahi" depends_on "ayatana-ido" depends_on "cairo" depends_on "gdk-pixbuf" depends_on "glib" depends_on "gnu-which" depends_on "gtk+3" depends_on "harfbuzz" depends_on "libayatana-appindicator" depends_on "libayatana-indicator" depends_on "libcap" depends_on "libdbusmenu" depends_on "libdrm" depends_on "libice" depends_on "libnotify" @@ -96,6 +91,8 @@ depends_on "pango" depends_on "pipewire" depends_on "pulseaudio" depends_on "qtbase" depends_on "qtsvg" depends_on "shaderc" depends_on "systemd" depends_on "vulkan-loader"
|
|
|
scripts/linux_build.sh
|
+22
−7
|
@@ -2,8 +2,8 @@ set -e
# Version requirements - centralized for easy maintenance cmake_min="3.25.0" target_cmake_version="3.30.1" cmake_min="4.0.0" target_cmake_version="4.3.0" doxygen_min="1.10.0" _doxygen_min="${doxygen_min//\./_}" # Convert dots to underscores for URL doxygen_max="1.12.0" @@ -279,7 +279,6 @@ "gcc${gcc_version}-libs" 'git' 'graphviz' 'libayatana-appindicator' 'libcap' 'libdrm' 'libevdev' @@ -301,6 +300,8 @@ 'opus' 'python-jinja' # glad OpenGL/EGL loader generator 'python-setuptools' # glad OpenGL/EGL loader generated, v2.0.0 'qt6-base' 'qt6-svg' 'shaderc' 'udev' 'vulkan-icd-loader' @@ -335,8 +336,8 @@ "gcc-${gcc_version}" "g++-${gcc_version}" "git" "glslang-tools" # Vulkan shader compiler "graphviz" "libayatana-appindicator3-dev" "libcap-dev" # KMS "libcurl4-openssl-dev" "libdrm-dev" # KMS @@ -360,17 +361,27 @@ "libxrandr-dev" # X11 "libxtst-dev" # X11 "libvulkan-dev" # Vulkan "glslang-tools" # Vulkan shader compiler "ninja-build" "npm" # web-ui "python3-jinja2" # glad OpenGL/EGL loader generator "python3-setuptools" # glad OpenGL/EGL loader generated, v2.0.0 "qt6-base-dev" "systemd" "udev" "wget" # necessary for cuda install with `run` file "xvfb" # necessary for headless unit testing )
# Ubuntu 22.04 uses a different package name for Qt6 SVG if [[ "$distro" == "ubuntu" ]] && [[ "$version" == "22.04" ]]; then dependencies+=( "libgl-dev" # OpenGL development headers, needed for qt6-svg "libqt6svg6-dev" ) else dependencies+=("qt6-svg-dev") fi
if [[ "$skip_libva" == 0 ]]; then dependencies+=( "libva-dev" # VA-API @@ -397,5 +408,8 @@ }
function add_ubuntu_deps() { # Enable universe; qt6-base-dev and several other required packages live there. $package_install_command "software-properties-common" ${sudo_cmd} add-apt-repository universe -y add_test_ppa add_debian_based_deps @@ -429,8 +443,8 @@ "gcc${gcc_version}" "gcc${gcc_version}-c++" "git" "glslc" "graphviz" "libappindicator-gtk3-devel" "libappstream-glib" "libcap-devel" "libcurl-devel" @@ -457,9 +471,10 @@ "pulseaudio-libs-devel" "python3-jinja2" # glad OpenGL/EGL loader generator "python3-setuptools" # glad OpenGL/EGL loader generated, v2.0.0 "qt6-qtbase-devel" "qt6-qtsvg-devel" "rpm-build" # if you want to build an RPM binary package "vulkan-loader-devel" "glslc" "wget" # necessary for cuda install with `run` file "which" # necessary for cuda install with `run` file "xorg-x11-server-Xvfb" # necessary for headless unit testing
|
|
|
src/system_tray.cpp
|
+38
−5
|
@@ -14,10 +14,10 @@ #define TRAY_ICON_PAUSING WEB_DIR "images/sunshine-pausing.ico" #define TRAY_ICON_LOCKED WEB_DIR "images/sunshine-locked.ico" #elif defined(__linux__) || defined(linux) || defined(__linux) || defined(__FreeBSD__) #define TRAY_ICON SUNSHINE_TRAY_PREFIX "-tray" #define TRAY_ICON_PLAYING SUNSHINE_TRAY_PREFIX "-playing" #define TRAY_ICON WEB_DIR "images/logo-sunshine.svg" #define TRAY_ICON_PLAYING WEB_DIR "images/sunshine-playing.svg" #define TRAY_ICON_PAUSING WEB_DIR "images/sunshine-pausing.svg" #define TRAY_ICON_LOCKED WEB_DIR "images/sunshine-locked.svg" #define TRAY_ICON_PAUSING SUNSHINE_TRAY_PREFIX "-pausing" #define TRAY_ICON_LOCKED SUNSHINE_TRAY_PREFIX "-locked" #elif defined(__APPLE__) || defined(__MACH__) #define TRAY_ICON WEB_DIR "images/logo-sunshine-16.png" #define TRAY_ICON_PLAYING WEB_DIR "images/sunshine-playing-16.png" @@ -39,7 +39,7 @@ // lib includes #include <boost/filesystem.hpp> #include <boost/process/v1/environment.hpp> #include <tray.h> #include <tray/src/tray.h>
// local includes #include "confighttp.h" @@ -72,5 +72,32 @@ platf::open_url("https://www.paypal.com/paypalme/ReenigneArcher"); }
#if defined(__linux__) || defined(linux) || defined(__linux) || defined(__FreeBSD__) /** * @brief Forwards Qt log messages to Sunshine's BOOST_LOG logger. * @param level Log level: 0=debug, 1=info, 2=warning, 3=error. * @param msg The message string from Qt. */ static void qt_log_to_boost(int level, const char *msg) { if (msg == nullptr) { return; } switch (level) { case 0: BOOST_LOG(debug) << "Qt: " << msg; break; case 1: BOOST_LOG(info) << "Qt: " << msg; break; case 2: BOOST_LOG(warning) << "Qt: " << msg; break; default: BOOST_LOG(error) << "Qt: " << msg; break; } } #endif
void tray_reset_display_device_config_cb([[maybe_unused]] struct tray_menu *item) { BOOST_LOG(info) << "Resetting display device config from system tray"sv; @@ -253,6 +280,12 @@
tray.icon = tray.allIconPaths[0]; #endif
#if defined(__linux__) || defined(linux) || defined(__linux) || defined(__FreeBSD__) tray_set_log_callback(qt_log_to_boost); #endif
tray_set_app_info(PROJECT_NAME, PROJECT_NAME, PROJECT_FQDN);
if (tray_init(&tray) < 0) { BOOST_LOG(warning) << "Failed to create system tray"sv;
|
|
|
third-party/tray
|
+0
−0
|
|
|