fix(flatpak): fix broken desktop file, icons, and service (#3561)
This commit is contained in:
@@ -198,6 +198,14 @@ if(${SUNSHINE_ENABLE_TRAY})
|
|||||||
list(APPEND PLATFORM_TARGET_FILES "${CMAKE_SOURCE_DIR}/third-party/tray/src/tray_linux.c")
|
list(APPEND PLATFORM_TARGET_FILES "${CMAKE_SOURCE_DIR}/third-party/tray/src/tray_linux.c")
|
||||||
list(APPEND SUNSHINE_EXTERNAL_LIBRARIES ${APPINDICATOR_LIBRARIES} ${LIBNOTIFY_LIBRARIES})
|
list(APPEND SUNSHINE_EXTERNAL_LIBRARIES ${APPINDICATOR_LIBRARIES} ${LIBNOTIFY_LIBRARIES})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# flatpak icons must be prefixed with the app id or they will not be included in the flatpak
|
||||||
|
if(${SUNSHINE_BUILD_FLATPAK})
|
||||||
|
set(SUNSHINE_TRAY_PREFIX "${PROJECT_FQDN}")
|
||||||
|
else()
|
||||||
|
set(SUNSHINE_TRAY_PREFIX "sunshine")
|
||||||
|
endif()
|
||||||
|
list(APPEND SUNSHINE_DEFINITIONS SUNSHINE_TRAY_PREFIX="${SUNSHINE_TRAY_PREFIX}")
|
||||||
else()
|
else()
|
||||||
set(SUNSHINE_TRAY 0)
|
set(SUNSHINE_TRAY 0)
|
||||||
message(STATUS "Tray icon disabled")
|
message(STATUS "Tray icon disabled")
|
||||||
|
|||||||
@@ -100,15 +100,31 @@ endif()
|
|||||||
|
|
||||||
# tray icon
|
# tray icon
|
||||||
if(${SUNSHINE_TRAY} STREQUAL 1)
|
if(${SUNSHINE_TRAY} STREQUAL 1)
|
||||||
install(FILES "${CMAKE_SOURCE_DIR}/sunshine.svg"
|
if(NOT ${SUNSHINE_BUILD_FLATPAK})
|
||||||
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status"
|
install(FILES "${CMAKE_SOURCE_DIR}/sunshine.svg"
|
||||||
RENAME "sunshine-tray.svg")
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status"
|
||||||
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-playing.svg"
|
RENAME "sunshine-tray.svg")
|
||||||
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status")
|
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-playing.svg"
|
||||||
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-pausing.svg"
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status")
|
||||||
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status")
|
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-pausing.svg"
|
||||||
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-locked.svg"
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status")
|
||||||
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status")
|
install(FILES "${SUNSHINE_SOURCE_ASSETS_DIR}/common/assets/web/public/images/sunshine-locked.svg"
|
||||||
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/icons/hicolor/scalable/status")
|
||||||
|
else()
|
||||||
|
# flatpak icons must be prefixed with the app id or they will not be included in the flatpak
|
||||||
|
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")
|
||||||
|
endif()
|
||||||
|
|
||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "\
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "\
|
||||||
${CPACK_DEBIAN_PACKAGE_DEPENDS}, \
|
${CPACK_DEBIAN_PACKAGE_DEPENDS}, \
|
||||||
@@ -128,15 +144,8 @@ else()
|
|||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine.desktop"
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine.desktop"
|
||||||
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
|
||||||
RENAME "${PROJECT_FQDN}.desktop")
|
RENAME "${PROJECT_FQDN}.desktop")
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine_kms.desktop"
|
|
||||||
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
|
|
||||||
RENAME "${PROJECT_FQDN}_kms.desktop")
|
|
||||||
endif()
|
endif()
|
||||||
if(${SUNSHINE_BUILD_FLATPAK})
|
if(NOT ${SUNSHINE_BUILD_APPIMAGE} AND NOT ${SUNSHINE_BUILD_FLATPAK})
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine_terminal.desktop"
|
|
||||||
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications"
|
|
||||||
RENAME "${PROJECT_FQDN}_terminal.desktop")
|
|
||||||
elseif(NOT ${SUNSHINE_BUILD_APPIMAGE})
|
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine_terminal.desktop"
|
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sunshine_terminal.desktop"
|
||||||
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
|
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/applications")
|
||||||
endif()
|
endif()
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ elseif (UNIX)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(SUNSHINE_BUILD_FLATPAK)
|
if(SUNSHINE_BUILD_FLATPAK)
|
||||||
set(SUNSHINE_SERVICE_START_COMMAND "ExecStart=${PROJECT_FQDN}")
|
set(SUNSHINE_SERVICE_START_COMMAND "ExecStart=flatpak run --command=sunshine ${PROJECT_FQDN}")
|
||||||
set(SUNSHINE_SERVICE_STOP_COMMAND "ExecStop=flatpak kill ${PROJECT_FQDN}")
|
set(SUNSHINE_SERVICE_STOP_COMMAND "ExecStop=flatpak kill ${PROJECT_FQDN}")
|
||||||
else()
|
else()
|
||||||
set(SUNSHINE_SERVICE_START_COMMAND "ExecStart=${SUNSHINE_EXECUTABLE_PATH}")
|
set(SUNSHINE_SERVICE_START_COMMAND "ExecStart=${SUNSHINE_EXECUTABLE_PATH}")
|
||||||
set(SUNSHINE_SERVICE_STOP_COMMAND "")
|
set(SUNSHINE_SERVICE_STOP_COMMAND "")
|
||||||
endif()
|
endif()
|
||||||
endif ()
|
endif()
|
||||||
|
|||||||
@@ -10,14 +10,12 @@ if(APPLE)
|
|||||||
endif()
|
endif()
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
# configure the .desktop file
|
# configure the .desktop file
|
||||||
set(SUNSHINE_DESKTOP_ICON "sunshine.svg")
|
set(SUNSHINE_DESKTOP_ICON "sunshine")
|
||||||
if(${SUNSHINE_BUILD_APPIMAGE})
|
if(${SUNSHINE_BUILD_APPIMAGE})
|
||||||
configure_file(packaging/linux/AppImage/sunshine.desktop sunshine.desktop @ONLY)
|
configure_file(packaging/linux/AppImage/sunshine.desktop sunshine.desktop @ONLY)
|
||||||
elseif(${SUNSHINE_BUILD_FLATPAK})
|
elseif(${SUNSHINE_BUILD_FLATPAK})
|
||||||
set(SUNSHINE_DESKTOP_ICON "${PROJECT_FQDN}.svg")
|
set(SUNSHINE_DESKTOP_ICON "${PROJECT_FQDN}")
|
||||||
configure_file(packaging/linux/flatpak/sunshine.desktop sunshine.desktop @ONLY)
|
configure_file(packaging/linux/flatpak/sunshine.desktop sunshine.desktop @ONLY)
|
||||||
configure_file(packaging/linux/flatpak/sunshine_kms.desktop sunshine_kms.desktop @ONLY)
|
|
||||||
configure_file(packaging/linux/sunshine_terminal.desktop sunshine_terminal.desktop @ONLY)
|
|
||||||
configure_file(packaging/linux/flatpak/${PROJECT_FQDN}.metainfo.xml
|
configure_file(packaging/linux/flatpak/${PROJECT_FQDN}.metainfo.xml
|
||||||
${PROJECT_FQDN}.metainfo.xml @ONLY)
|
${PROJECT_FQDN}.metainfo.xml @ONLY)
|
||||||
else()
|
else()
|
||||||
|
|||||||
11
packaging/linux/flatpak/scripts/sunshine.sh
Normal file
11
packaging/linux/flatpak/scripts/sunshine.sh
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PORT=47990
|
||||||
|
|
||||||
|
if ! curl -k https://localhost:$PORT > /dev/null 2>&1; then
|
||||||
|
(sleep 3 && xdg-open https://localhost:$PORT) &
|
||||||
|
exec sunshine "$@"
|
||||||
|
else
|
||||||
|
echo "Sunshine is already running, opening the web interface..."
|
||||||
|
xdg-open https://localhost:$PORT
|
||||||
|
fi
|
||||||
@@ -1,20 +1,9 @@
|
|||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Type=Application
|
Categories=AudioVideo;Network;RemoteAccess;
|
||||||
Name=@PROJECT_NAME@
|
|
||||||
Exec=@PROJECT_FQDN@
|
|
||||||
Version=1.0
|
|
||||||
Comment=@PROJECT_DESCRIPTION@
|
Comment=@PROJECT_DESCRIPTION@
|
||||||
|
Exec=sunshine.sh
|
||||||
Icon=@SUNSHINE_DESKTOP_ICON@
|
Icon=@SUNSHINE_DESKTOP_ICON@
|
||||||
Keywords=gamestream;stream;moonlight;remote play;
|
Keywords=gamestream;stream;moonlight;remote play;
|
||||||
Categories=AudioVideo;Network;RemoteAccess;
|
Name=@PROJECT_NAME@
|
||||||
Actions=RunInTerminal;KMS;
|
Type=Application
|
||||||
|
Version=1.0
|
||||||
[Desktop Action RunInTerminal]
|
|
||||||
Name=Run in Terminal
|
|
||||||
Icon=application-x-executable
|
|
||||||
Exec=gio launch @CMAKE_INSTALL_FULL_DATAROOTDIR@/applications/@PROJECT_FQDN@_terminal.desktop
|
|
||||||
|
|
||||||
[Desktop Action KMS]
|
|
||||||
Name=Run in Terminal (KMS)
|
|
||||||
Icon=application-x-executable
|
|
||||||
Exec=gio launch @CMAKE_INSTALL_FULL_DATAROOTDIR@/applications/@PROJECT_FQDN@_kms.desktop
|
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Name=@PROJECT_NAME@ (KMS)
|
|
||||||
Exec=sudo -i PULSE_SERVER=unix:$(pactl info | awk '/Server String/{print$3}') flatpak run @PROJECT_FQDN@
|
|
||||||
Terminal=true
|
|
||||||
Type=Application
|
|
||||||
NoDisplay=true
|
|
||||||
@@ -14,10 +14,10 @@
|
|||||||
#define TRAY_ICON_PAUSING WEB_DIR "images/sunshine-pausing.ico"
|
#define TRAY_ICON_PAUSING WEB_DIR "images/sunshine-pausing.ico"
|
||||||
#define TRAY_ICON_LOCKED WEB_DIR "images/sunshine-locked.ico"
|
#define TRAY_ICON_LOCKED WEB_DIR "images/sunshine-locked.ico"
|
||||||
#elif defined(__linux__) || defined(linux) || defined(__linux)
|
#elif defined(__linux__) || defined(linux) || defined(__linux)
|
||||||
#define TRAY_ICON "sunshine-tray"
|
#define TRAY_ICON SUNSHINE_TRAY_PREFIX "-tray"
|
||||||
#define TRAY_ICON_PLAYING "sunshine-playing"
|
#define TRAY_ICON_PLAYING SUNSHINE_TRAY_PREFIX "-playing"
|
||||||
#define TRAY_ICON_PAUSING "sunshine-pausing"
|
#define TRAY_ICON_PAUSING SUNSHINE_TRAY_PREFIX "-pausing"
|
||||||
#define TRAY_ICON_LOCKED "sunshine-locked"
|
#define TRAY_ICON_LOCKED SUNSHINE_TRAY_PREFIX "-locked"
|
||||||
#elif defined(__APPLE__) || defined(__MACH__)
|
#elif defined(__APPLE__) || defined(__MACH__)
|
||||||
#define TRAY_ICON WEB_DIR "images/logo-sunshine-16.png"
|
#define TRAY_ICON WEB_DIR "images/logo-sunshine-16.png"
|
||||||
#define TRAY_ICON_PLAYING WEB_DIR "images/sunshine-playing-16.png"
|
#define TRAY_ICON_PLAYING WEB_DIR "images/sunshine-playing-16.png"
|
||||||
|
|||||||
Reference in New Issue
Block a user