mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-11-24 03:32:39 +01:00
Resolve "Add Wayland layer shell support"
This commit is contained in:
parent
e2790b9fa2
commit
f546c35f44
1
.gitignore
vendored
1
.gitignore
vendored
@ -261,3 +261,4 @@ cython_debug/
|
|||||||
/ThirdParty/qml-archive/**
|
/ThirdParty/qml-archive/**
|
||||||
/ThirdParty/qml-plausible/
|
/ThirdParty/qml-plausible/
|
||||||
/ThirdParty/ffmpeg/**
|
/ThirdParty/ffmpeg/**
|
||||||
|
/ThirdParty/qt-layer-shell/**
|
||||||
|
@ -18,16 +18,28 @@
|
|||||||
# Otherwise libglib2 needs interaction
|
# Otherwise libglib2 needs interaction
|
||||||
- export DEBIAN_FRONTEND=noninteractive
|
- export DEBIAN_FRONTEND=noninteractive
|
||||||
- apt update -y
|
- apt update -y
|
||||||
- apt install curl wget zip unzip tar git pkg-config libxcb-* libfontconfig-dev apt-transport-https ca-certificates gnupg software-properties-common python3 python3-pip build-essential libgl1-mesa-dev mesa-common-dev lld ninja-build libxkbcommon-* libx11-dev xserver-xorg-dev xorg-dev -y
|
- apt install cmake python3.10-venv libwayland-dev wayland-protocols curl wget zip unzip tar git pkg-config libxcb-* libfontconfig-dev apt-transport-https ca-certificates gnupg software-properties-common python3 python3-pip build-essential libgl1-mesa-dev mesa-common-dev lld ninja-build libxkbcommon-* libx11-dev xserver-xorg-dev xorg-dev -y
|
||||||
- wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null
|
- python3 -m venv env
|
||||||
- echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal-rc main' | tee -a /etc/apt/sources.list.d/kitware.list >/dev/null
|
- source env/bin/activate
|
||||||
- apt update -y
|
|
||||||
- apt install cmake -y
|
|
||||||
- python3 -m pip install -U pip
|
- python3 -m pip install -U pip
|
||||||
- python3 -m pip install -r Tools/requirements.txt
|
- python3 -m pip install -r Tools/requirements.txt
|
||||||
- python3 Tools/setup.py
|
- python3 Tools/setup.py
|
||||||
|
- cd ThirdParty
|
||||||
|
- git clone https://invent.kde.org/frameworks/extra-cmake-modules.git
|
||||||
|
- cd extra-cmake-modules
|
||||||
|
- cmake configure .
|
||||||
|
- make
|
||||||
|
- make install
|
||||||
|
- cd ..
|
||||||
|
- git clone https://invent.kde.org/plasma/layer-shell-qt.git
|
||||||
|
- cd layer-shell-qt
|
||||||
|
- cmake configure . -DCMAKE_PREFIX_PATH="./../../../aqt/6.5.2/gcc_64"
|
||||||
|
- make
|
||||||
|
- make install
|
||||||
|
- cd ..
|
||||||
|
- cd ..
|
||||||
image:
|
image:
|
||||||
name: ubuntu:20.04
|
name: ubuntu:22.04
|
||||||
tags:
|
tags:
|
||||||
- gitlab-org-docker
|
- gitlab-org-docker
|
||||||
artifacts:
|
artifacts:
|
||||||
|
4
.vscode/extensions.json
vendored
4
.vscode/extensions.json
vendored
@ -4,6 +4,8 @@
|
|||||||
"delgan.qml-format",
|
"delgan.qml-format",
|
||||||
"ms-vscode.cpptools-extension-pack",
|
"ms-vscode.cpptools-extension-pack",
|
||||||
"ms-vscode.cmake-tools",
|
"ms-vscode.cmake-tools",
|
||||||
"seanwu.vscode-qt-for-python"
|
"seanwu.vscode-qt-for-python",
|
||||||
|
"mhutchie.git-graph",
|
||||||
|
"vadimcn.vscode-lldb"
|
||||||
]
|
]
|
||||||
}
|
}
|
2
.vscode/launch.json
vendored
2
.vscode/launch.json
vendored
@ -23,7 +23,7 @@
|
|||||||
"visualizerFile": "${workspaceFolder}/.vscode/qt.natvis.xml"
|
"visualizerFile": "${workspaceFolder}/.vscode/qt.natvis.xml"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "macOS Launch",
|
"name": "macOS/linux Launch",
|
||||||
"type": "lldb",
|
"type": "lldb",
|
||||||
"request": "launch",
|
"request": "launch",
|
||||||
"program": "${command:cmake.launchTargetPath}",
|
"program": "${command:cmake.launchTargetPath}",
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
cmake_minimum_required(VERSION 3.23.0)
|
cmake_minimum_required(VERSION 3.22.0)
|
||||||
|
|
||||||
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
|
||||||
include(GetProjectVersion)
|
include(GetProjectVersion)
|
||||||
@ -25,7 +25,13 @@ endif()
|
|||||||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
||||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(THIRD_PARTY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty/")
|
set(THIRD_PARTY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/ThirdParty")
|
||||||
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/modules")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/find-modules")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${THIRD_PARTY_PATH}/ecm/kde-modules")
|
||||||
|
message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
|
||||||
|
|
||||||
|
|
||||||
option(OSX_BUNDLE "Enable distribution macOS bundle" OFF)
|
option(OSX_BUNDLE "Enable distribution macOS bundle" OFF)
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0")
|
set(CMAKE_OSX_DEPLOYMENT_TARGET "13.0")
|
||||||
@ -81,6 +87,14 @@ else()
|
|||||||
set(DATE_ARG "")
|
set(DATE_ARG "")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
# Fixes QWebEngine linker errors on Ubuntu 22.04
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${DATE_COMMAND} ${DATE_ARG}
|
COMMAND ${DATE_COMMAND} ${DATE_ARG}
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||||
@ -104,14 +118,17 @@ add_compile_definitions(BUILD_DATE="${BUILD_DATE}")
|
|||||||
add_compile_definitions(GIT_BRANCH_NAME="${GIT_BRANCH_NAME}")
|
add_compile_definitions(GIT_BRANCH_NAME="${GIT_BRANCH_NAME}")
|
||||||
add_compile_definitions(GIT_COMMIT_HASH="${GIT_COMMIT_HASH}")
|
add_compile_definitions(GIT_COMMIT_HASH="${GIT_COMMIT_HASH}")
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
|
||||||
# Fixes QWebEngine linker errors on Ubuntu 20.04
|
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_subdirectory(CMake)
|
|
||||||
add_subdirectory(ThirdParty)
|
add_subdirectory(ThirdParty)
|
||||||
|
set(ECM_DIR "${THIRD_PARTY_PATH}/ecm")
|
||||||
|
add_subdirectory(CMake)
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
# Needs to be append, because we include ecm as third party on linux
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${ECM_DIR}/cmake")
|
||||||
|
else()
|
||||||
|
|
||||||
|
endif()
|
||||||
add_subdirectory(Tools)
|
add_subdirectory(Tools)
|
||||||
|
|
||||||
add_subdirectory(ScreenPlay)
|
add_subdirectory(ScreenPlay)
|
||||||
@ -149,6 +166,7 @@ message(STATUS "[PROJECT] CMAKE_VERSION = ${CMAKE_VERSION}")
|
|||||||
message(STATUS "[PROJECT] SCREENPLAY_QML_MODULES_PATH = ${SCREENPLAY_QML_MODULES_PATH}")
|
message(STATUS "[PROJECT] SCREENPLAY_QML_MODULES_PATH = ${SCREENPLAY_QML_MODULES_PATH}")
|
||||||
message(STATUS "[PROJECT] CMAKE_TOOLCHAIN_FILE = ${CMAKE_TOOLCHAIN_FILE}")
|
message(STATUS "[PROJECT] CMAKE_TOOLCHAIN_FILE = ${CMAKE_TOOLCHAIN_FILE}")
|
||||||
message(STATUS "[PROJECT] VCPKG_PATH = ${VCPKG_PATH}")
|
message(STATUS "[PROJECT] VCPKG_PATH = ${VCPKG_PATH}")
|
||||||
|
message(STATUS "[PROJECT] CMAKE_MODULE_PATH = ${CMAKE_MODULE_PATH}")
|
||||||
message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET}")
|
message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET}")
|
||||||
message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}")
|
message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}")
|
||||||
message(STATUS "[OPTION] SCREENPLAY_DEPLOY = ${SCREENPLAY_DEPLOY}")
|
message(STATUS "[OPTION] SCREENPLAY_DEPLOY = ${SCREENPLAY_DEPLOY}")
|
||||||
|
@ -74,7 +74,7 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "linux-debug",
|
"name": "linux-generic-debug",
|
||||||
"displayName": "ScreenPlay 64bit Debug Linux",
|
"displayName": "ScreenPlay 64bit Debug Linux",
|
||||||
"description": "Linux only!",
|
"description": "Linux only!",
|
||||||
"generator": "Ninja",
|
"generator": "Ninja",
|
||||||
@ -84,6 +84,40 @@
|
|||||||
"lhs": "${hostSystemName}",
|
"lhs": "${hostSystemName}",
|
||||||
"rhs": "Linux"
|
"rhs": "Linux"
|
||||||
},
|
},
|
||||||
|
"architecture": {
|
||||||
|
"value": "x64",
|
||||||
|
"strategy": "external"
|
||||||
|
},
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_CXX_COMPILER": "g++",
|
||||||
|
"CMAKE_C_COMPILER": "gcc",
|
||||||
|
"CMAKE_BUILD_TYPE": "Debug",
|
||||||
|
"CMAKE_TOOLCHAIN_FILE": "${sourceDir}/../vcpkg/scripts/buildsystems/vcpkg.cmake",
|
||||||
|
"VCPKG_TARGET_TRIPLET": "x64-linux",
|
||||||
|
"SCREENPLAY_STEAM": "OFF",
|
||||||
|
"SCREENPLAY_TESTS": "OFF"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "linux-relwithdebinfo",
|
||||||
|
"displayName": "ScreenPlay 64bit RelWithDebInfo Linux",
|
||||||
|
"inherits": "linux-generic-debug",
|
||||||
|
"binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_GCC_RelWithDebInfo",
|
||||||
|
"cacheVariables": {
|
||||||
|
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "linux-aqt-debug",
|
||||||
|
"displayName": "ScreenPlay 64bit Debug Linux using aqt",
|
||||||
|
"description": "Linux only!",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_GCC_Debug",
|
||||||
|
"condition": {
|
||||||
|
"type": "equals",
|
||||||
|
"lhs": "${hostSystemName}",
|
||||||
|
"rhs": "Linux"
|
||||||
|
},
|
||||||
"environment": {
|
"environment": {
|
||||||
"qt_path": "${sourceDir}/../aqt"
|
"qt_path": "${sourceDir}/../aqt"
|
||||||
},
|
},
|
||||||
@ -101,9 +135,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "linux-relwithdebinfo",
|
"name": "linux-aqt-relwithdebinfo",
|
||||||
"displayName": "ScreenPlay 64bit RelWithDebInfo Linux",
|
"displayName": "ScreenPlay 64bit RelWithDebInfo Linux using aqt",
|
||||||
"inherits": "linux-debug",
|
"inherits": "linux-ubuntu-debug",
|
||||||
"binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_GCC_RelWithDebInfo",
|
"binaryDir": "${sourceDir}/../build_ScreenPlay_Qt_6.5.2_GCC_RelWithDebInfo",
|
||||||
"cacheVariables": {
|
"cacheVariables": {
|
||||||
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
|
||||||
|
@ -74,11 +74,11 @@ Here are some ways you can contribute:
|
|||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
| Feature | Windows | Linux | MacOS |
|
| Feature | Windows | Linux X11 and Wayland (layer shell) | MacOS |
|
||||||
|------------------------ |--------- |------- |------- |
|
|------------------------ |--------- |------- |------- |
|
||||||
| __ScreenPlay Main App__ | ✔ | ✔ | ✔ |
|
| __ScreenPlay Main App__ | ✔ | ✔ | ✔ |
|
||||||
| __Steam Binaries__ | ✔ | ❌ | ✔ |
|
| __Steam Binaries__ | ✔ | ❌ | ✔ |
|
||||||
| __Wallpaper__ | ✔ | ❓ Help Needed for Gnome/KDE/etc! | ✔ |
|
| __Wallpaper__ | ✔ | ✔ | ✔ |
|
||||||
| __Widgets__ | ✔ | ✔ | ✔ |
|
| __Widgets__ | ✔ | ✔ | ✔ |
|
||||||
| __Multilanguage (EN,DE,RU,FR,ES,KO,VI,CH_ZN,PT_BR🆕)__ | ✔ | ✔ | ✔ |
|
| __Multilanguage (EN,DE,RU,FR,ES,KO,VI,CH_ZN,PT_BR🆕)__ | ✔ | ✔ | ✔ |
|
||||||
|
|
||||||
|
@ -101,13 +101,6 @@ public slots:
|
|||||||
void setMainWindowEngine(QQmlApplicationEngine* mainWindowEngine);
|
void setMainWindowEngine(QQmlApplicationEngine* mainWindowEngine);
|
||||||
void setWizards(Wizards* wizards);
|
void setWizards(Wizards* wizards);
|
||||||
|
|
||||||
private:
|
|
||||||
bool setupKDE();
|
|
||||||
bool isKDEInstalled();
|
|
||||||
void installKDEWallpaper();
|
|
||||||
void upgradeKDEWallpaper();
|
|
||||||
void restartKDE();
|
|
||||||
std::optional<bool> isNewestKDEWallpaperInstalled();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QNetworkAccessManager m_networkAccessManager;
|
QNetworkAccessManager m_networkAccessManager;
|
||||||
@ -126,8 +119,5 @@ private:
|
|||||||
std::shared_ptr<MonitorListModel> m_monitorListModel;
|
std::shared_ptr<MonitorListModel> m_monitorListModel;
|
||||||
std::shared_ptr<ProfileListModel> m_profileListModel;
|
std::shared_ptr<ProfileListModel> m_profileListModel;
|
||||||
std::shared_ptr<InstalledListFilter> m_installedListFilter;
|
std::shared_ptr<InstalledListFilter> m_installedListFilter;
|
||||||
|
|
||||||
QString m_kdeWallpaperPath;
|
|
||||||
QString m_appKdeWallapperPath;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,6 @@ class ScreenPlayManager : public QObject {
|
|||||||
|
|
||||||
Q_PROPERTY(int activeWallpaperCounter READ activeWallpaperCounter WRITE setActiveWallpaperCounter NOTIFY activeWallpaperCounterChanged)
|
Q_PROPERTY(int activeWallpaperCounter READ activeWallpaperCounter WRITE setActiveWallpaperCounter NOTIFY activeWallpaperCounterChanged)
|
||||||
Q_PROPERTY(int activeWidgetsCounter READ activeWidgetsCounter WRITE setActiveWidgetsCounter NOTIFY activeWidgetsCounterChanged)
|
Q_PROPERTY(int activeWidgetsCounter READ activeWidgetsCounter WRITE setActiveWidgetsCounter NOTIFY activeWidgetsCounterChanged)
|
||||||
Q_PROPERTY(bool isKDEConnected READ isKDEConnected WRITE setIsKDEConnected NOTIFY isKDEConnectedChanged)
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ScreenPlayManager(QObject* parent = nullptr);
|
explicit ScreenPlayManager(QObject* parent = nullptr);
|
||||||
@ -41,8 +40,6 @@ public:
|
|||||||
int activeWidgetsCounter() const { return m_activeWidgetsCounter; }
|
int activeWidgetsCounter() const { return m_activeWidgetsCounter; }
|
||||||
bool isAnotherScreenPlayInstanceRunning() { return m_isAnotherScreenPlayInstanceRunning; }
|
bool isAnotherScreenPlayInstanceRunning() { return m_isAnotherScreenPlayInstanceRunning; }
|
||||||
|
|
||||||
bool isKDEConnected() const;
|
|
||||||
void setIsKDEConnected(bool isKDEConnected);
|
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void activeWallpaperCounterChanged(int activeWallpaperCounter);
|
void activeWallpaperCounterChanged(int activeWallpaperCounter);
|
||||||
@ -55,8 +52,6 @@ signals:
|
|||||||
void profilesSaved();
|
void profilesSaved();
|
||||||
void displayErrorPopup(const QString& msg);
|
void displayErrorPopup(const QString& msg);
|
||||||
|
|
||||||
void isKDEConnectedChanged(bool isKDEConnected);
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
bool saveProfiles();
|
bool saveProfiles();
|
||||||
|
|
||||||
@ -168,7 +163,6 @@ private:
|
|||||||
QTimer m_saveLimiter;
|
QTimer m_saveLimiter;
|
||||||
|
|
||||||
const quint16 m_webSocketPort = 16395;
|
const quint16 m_webSocketPort = 16395;
|
||||||
bool m_isKDEConnected = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,6 @@ signals:
|
|||||||
void volumeChanged(float volume);
|
void volumeChanged(float volume);
|
||||||
void isLoopingChanged(bool isLooping);
|
void isLoopingChanged(bool isLooping);
|
||||||
void playbackRateChanged(float playbackRate);
|
void playbackRateChanged(float playbackRate);
|
||||||
void messageKDECloseWallpaper();
|
|
||||||
|
|
||||||
void requestSave();
|
void requestSave();
|
||||||
void requestClose(const QString& appID);
|
void requestClose(const QString& appID);
|
||||||
|
@ -72,6 +72,7 @@ public:
|
|||||||
Unknown,
|
Unknown,
|
||||||
OSX,
|
OSX,
|
||||||
Windows,
|
Windows,
|
||||||
|
Wayland,
|
||||||
Cinnamon,
|
Cinnamon,
|
||||||
Enlightenment,
|
Enlightenment,
|
||||||
Gnome,
|
Gnome,
|
||||||
|
@ -200,10 +200,6 @@ void App::init()
|
|||||||
m_mainWindowEngine->addImportPath(guiAppInst->applicationDirPath() + "/qml");
|
m_mainWindowEngine->addImportPath(guiAppInst->applicationDirPath() + "/qml");
|
||||||
guiAppInst->addLibraryPath(guiAppInst->applicationDirPath() + "/qml");
|
guiAppInst->addLibraryPath(guiAppInst->applicationDirPath() + "/qml");
|
||||||
|
|
||||||
if (m_settings->desktopEnvironment() == Settings::DesktopEnvironment::KDE) {
|
|
||||||
setupKDE();
|
|
||||||
}
|
|
||||||
|
|
||||||
QQuickStyle::setStyle("Material");
|
QQuickStyle::setStyle("Material");
|
||||||
m_mainWindowEngine->load(QUrl(QStringLiteral("qrc:/qml/ScreenPlayApp/main.qml")));
|
m_mainWindowEngine->load(QUrl(QStringLiteral("qrc:/qml/ScreenPlayApp/main.qml")));
|
||||||
|
|
||||||
@ -229,112 +225,6 @@ void App::exit()
|
|||||||
guiAppInst->quit();
|
guiAppInst->quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool App::isKDEInstalled()
|
|
||||||
{
|
|
||||||
QProcess plasmaShellVersionProcess;
|
|
||||||
plasmaShellVersionProcess.start("plasmashell", { "--version" });
|
|
||||||
plasmaShellVersionProcess.waitForFinished();
|
|
||||||
QString versionOut = plasmaShellVersionProcess.readAll();
|
|
||||||
if (!versionOut.contains("plasmashell ")) {
|
|
||||||
qWarning() << "Unable to read plasma shell version. ScreenPlay only works on KDE";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void App::installKDEWallpaper()
|
|
||||||
{
|
|
||||||
|
|
||||||
qInfo() << "Install ScreenPlay KDE Wallpaper";
|
|
||||||
QProcess process;
|
|
||||||
process.setWorkingDirectory(m_appKdeWallapperPath);
|
|
||||||
process.start("plasmapkg2", { "--install", "ScreenPlay" });
|
|
||||||
process.waitForFinished();
|
|
||||||
process.terminate();
|
|
||||||
}
|
|
||||||
|
|
||||||
void App::upgradeKDEWallpaper()
|
|
||||||
{
|
|
||||||
|
|
||||||
qInfo() << "Upgrade ScreenPlay KDE Wallpaper";
|
|
||||||
QProcess process;
|
|
||||||
process.setWorkingDirectory(m_appKdeWallapperPath);
|
|
||||||
process.start("plasmapkg2", { "--upgrade", "ScreenPlay" });
|
|
||||||
process.waitForFinished();
|
|
||||||
process.terminate();
|
|
||||||
qInfo() << process.readAllStandardError() << process.readAllStandardOutput();
|
|
||||||
}
|
|
||||||
|
|
||||||
void App::restartKDE()
|
|
||||||
{
|
|
||||||
qInfo() << "Restart KDE ";
|
|
||||||
QProcess process;
|
|
||||||
process.start("kquitapp5", { "plasmashell" });
|
|
||||||
process.waitForFinished();
|
|
||||||
process.terminate();
|
|
||||||
qInfo() << process.readAllStandardError() << process.readAllStandardOutput();
|
|
||||||
process.startDetached("kstart5", { "plasmashell" });
|
|
||||||
qInfo() << process.readAllStandardError() << process.readAllStandardOutput();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::optional<bool> App::isNewestKDEWallpaperInstalled()
|
|
||||||
{
|
|
||||||
|
|
||||||
QFileInfo installedWallpaperMetadata(m_kdeWallpaperPath + "/metadata.desktop");
|
|
||||||
QSettings installedWallpaperSettings(installedWallpaperMetadata.absoluteFilePath(), QSettings::Format::IniFormat);
|
|
||||||
installedWallpaperSettings.beginGroup("Desktop Entry");
|
|
||||||
const QString installedWallpaperVersion = installedWallpaperSettings.value("Version").toString();
|
|
||||||
installedWallpaperSettings.endGroup();
|
|
||||||
const QVersionNumber installedVersionNumber = QVersionNumber::fromString(installedWallpaperVersion);
|
|
||||||
|
|
||||||
QFileInfo currentWallpaperMetadata(m_appKdeWallapperPath + "/ScreenPlay/metadata.desktop");
|
|
||||||
QSettings currentWallpaperSettings(currentWallpaperMetadata.absoluteFilePath(), QSettings::Format::IniFormat);
|
|
||||||
currentWallpaperSettings.beginGroup("Desktop Entry");
|
|
||||||
const QString currentWallpaperVersion = currentWallpaperSettings.value("Version").toString();
|
|
||||||
currentWallpaperSettings.endGroup();
|
|
||||||
const QVersionNumber currentVersionNumber = QVersionNumber::fromString(currentWallpaperVersion);
|
|
||||||
|
|
||||||
qInfo() << "installedVersionNumber" << installedVersionNumber << "currentVersionNumber " << currentVersionNumber;
|
|
||||||
if (installedVersionNumber.isNull() || currentVersionNumber.isNull()) {
|
|
||||||
qInfo() << "Unable to parse version number from:" << currentWallpaperVersion << installedWallpaperVersion;
|
|
||||||
qInfo() << "Reinstall ScreenPlay Wallpaper";
|
|
||||||
return std::nullopt;
|
|
||||||
} else {
|
|
||||||
return { installedVersionNumber >= currentVersionNumber };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*!
|
|
||||||
\brief
|
|
||||||
*/
|
|
||||||
bool App::setupKDE()
|
|
||||||
{
|
|
||||||
|
|
||||||
m_kdeWallpaperPath = QDir(QDir::homePath() + "/.local/share/plasma/wallpapers/ScreenPlay/").canonicalPath();
|
|
||||||
m_appKdeWallapperPath = QGuiApplication::instance()->applicationDirPath() + "/kde";
|
|
||||||
|
|
||||||
if (!isKDEInstalled())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
QFileInfo installedWallpaperMetadata(m_kdeWallpaperPath + "/metadata.desktop");
|
|
||||||
if (!installedWallpaperMetadata.exists()) {
|
|
||||||
installKDEWallpaper();
|
|
||||||
restartKDE();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (auto isNewer = isNewestKDEWallpaperInstalled()) {
|
|
||||||
if (!isNewer.value()) {
|
|
||||||
upgradeKDEWallpaper();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
qInfo() << "All up to date!" << isNewer.value();
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void App::showDockIcon(const bool show)
|
void App::showDockIcon(const bool show)
|
||||||
{
|
{
|
||||||
#if defined(Q_OS_OSX)
|
#if defined(Q_OS_OSX)
|
||||||
|
@ -83,28 +83,6 @@ void ScreenPlayManager::init(
|
|||||||
m_monitorListModel = mlm;
|
m_monitorListModel = mlm;
|
||||||
m_settings = settings;
|
m_settings = settings;
|
||||||
|
|
||||||
if (m_settings->desktopEnvironment() == Settings::DesktopEnvironment::KDE) {
|
|
||||||
m_websocketServer = std::make_unique<QWebSocketServer>(QStringLiteral("ScreenPlayWebSocket"), QWebSocketServer::SslMode::NonSecureMode);
|
|
||||||
const bool success = m_websocketServer->listen(QHostAddress::Any, m_webSocketPort);
|
|
||||||
qInfo() << "Open Websocket:" << success << "port:" << m_webSocketPort;
|
|
||||||
QObject::connect(m_websocketServer.get(), &QWebSocketServer::newConnection, this, [this]() {
|
|
||||||
qInfo() << "New Websocket Connection";
|
|
||||||
auto* socket = m_websocketServer->nextPendingConnection();
|
|
||||||
QObject::connect(socket, &QWebSocket::textMessageReceived, this, [this](const QString& message) {
|
|
||||||
qInfo() << "Message:" << message;
|
|
||||||
});
|
|
||||||
QObject::connect(socket, &QWebSocket::disconnected, this, [this, socket]() {
|
|
||||||
m_connections.removeOne(socket);
|
|
||||||
setIsKDEConnected(false);
|
|
||||||
qInfo() << "Disconnected connection count: " << m_connections.count();
|
|
||||||
});
|
|
||||||
|
|
||||||
m_connections.push_back(socket);
|
|
||||||
setIsKDEConnected(true);
|
|
||||||
// socket->flush();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Reset to default settings if we are unable to load
|
// Reset to default settings if we are unable to load
|
||||||
// the existing one
|
// the existing one
|
||||||
if (!loadProfiles()) {
|
if (!loadProfiles()) {
|
||||||
@ -153,22 +131,6 @@ bool ScreenPlayManager::createWallpaper(
|
|||||||
const QString path = QUrl::fromUserInput(absoluteStoragePath).toLocalFile();
|
const QString path = QUrl::fromUserInput(absoluteStoragePath).toLocalFile();
|
||||||
const QString appID = ScreenPlayUtil::generateRandomString();
|
const QString appID = ScreenPlayUtil::generateRandomString();
|
||||||
|
|
||||||
if (m_settings->desktopEnvironment() == Settings::DesktopEnvironment::KDE) {
|
|
||||||
if (m_connections.empty())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
QJsonObject msg;
|
|
||||||
msg.insert("command", "replace");
|
|
||||||
msg.insert("absolutePath", path);
|
|
||||||
msg.insert("type", static_cast<int>(type));
|
|
||||||
msg.insert("fillMode", static_cast<int>(fillMode));
|
|
||||||
msg.insert("volume", volume);
|
|
||||||
msg.insert("file", file);
|
|
||||||
|
|
||||||
m_connections.first()->sendTextMessage(QJsonDocument(msg).toJson());
|
|
||||||
m_connections.first()->flush();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only support remove wallpaper that spans over 1 monitor
|
// Only support remove wallpaper that spans over 1 monitor
|
||||||
if (monitorIndex.length() == 1) {
|
if (monitorIndex.length() == 1) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@ -207,11 +169,7 @@ bool ScreenPlayManager::createWallpaper(
|
|||||||
QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::requestSave, this, &ScreenPlayManager::requestSaveProfiles);
|
QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::requestSave, this, &ScreenPlayManager::requestSaveProfiles);
|
||||||
QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::requestClose, this, &ScreenPlayManager::removeWallpaper);
|
QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::requestClose, this, &ScreenPlayManager::removeWallpaper);
|
||||||
QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::error, this, &ScreenPlayManager::displayErrorPopup);
|
QObject::connect(wallpaper.get(), &ScreenPlayWallpaper::error, this, &ScreenPlayManager::displayErrorPopup);
|
||||||
if (m_settings->desktopEnvironment() != Settings::DesktopEnvironment::KDE) {
|
|
||||||
if (!wallpaper->start()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m_screenPlayWallpapers.append(wallpaper);
|
m_screenPlayWallpapers.append(wallpaper);
|
||||||
m_monitorListModel->setWallpaperMonitor(wallpaper, monitorIndex);
|
m_monitorListModel->setWallpaperMonitor(wallpaper, monitorIndex);
|
||||||
increaseActiveWallpaperCounter();
|
increaseActiveWallpaperCounter();
|
||||||
@ -286,15 +244,6 @@ bool ScreenPlayManager::removeAllWallpapers()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (m_settings->desktopEnvironment() == Settings::DesktopEnvironment::KDE) {
|
|
||||||
for (auto& connection : m_connections) {
|
|
||||||
QJsonObject obj;
|
|
||||||
obj.insert("command", "quit");
|
|
||||||
connection->sendTextMessage(QJsonDocument(obj).toJson(QJsonDocument::Compact));
|
|
||||||
connection->flush();
|
|
||||||
connection->close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
emit requestSaveProfiles();
|
emit requestSaveProfiles();
|
||||||
|
|
||||||
@ -486,9 +435,6 @@ bool ScreenPlayManager::removeWallpaper(const QString& appID)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_settings->desktopEnvironment() == Settings::DesktopEnvironment::Windows || m_settings->desktopEnvironment() == Settings::DesktopEnvironment::OSX)
|
|
||||||
wallpaper->messageKDECloseWallpaper();
|
|
||||||
|
|
||||||
qInfo() << "Remove wallpaper " << wallpaper->file() << "at monitor " << wallpaper->screenNumber();
|
qInfo() << "Remove wallpaper " << wallpaper->file() << "at monitor " << wallpaper->screenNumber();
|
||||||
|
|
||||||
// The MonitorListModel contains a shared_ptr of this object that needs to be removed
|
// The MonitorListModel contains a shared_ptr of this object that needs to be removed
|
||||||
@ -723,19 +669,6 @@ bool ScreenPlayManager::loadProfiles()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ScreenPlayManager::isKDEConnected() const
|
|
||||||
{
|
|
||||||
return m_isKDEConnected;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ScreenPlayManager::setIsKDEConnected(bool isKDEConnected)
|
|
||||||
{
|
|
||||||
if (m_isKDEConnected == isKDEConnected)
|
|
||||||
return;
|
|
||||||
m_isKDEConnected = isKDEConnected;
|
|
||||||
emit isKDEConnectedChanged(isKDEConnected);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "moc_screenplaymanager.cpp"
|
#include "moc_screenplaymanager.cpp"
|
||||||
|
@ -59,8 +59,8 @@ Settings::Settings(const std::shared_ptr<GlobalVariables>& globalVariables,
|
|||||||
setDesktopEnvironment(DesktopEnvironment::OSX);
|
setDesktopEnvironment(DesktopEnvironment::OSX);
|
||||||
#endif
|
#endif
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
// We only support KDE for now
|
// We only support Wayland wl_roots for now
|
||||||
setDesktopEnvironment(DesktopEnvironment::KDE);
|
setDesktopEnvironment(DesktopEnvironment::Wayland);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
qRegisterMetaType<Settings::Language>("Settings::Language");
|
qRegisterMetaType<Settings::Language>("Settings::Language");
|
||||||
|
@ -30,8 +30,8 @@ elseif(APPLE)
|
|||||||
src/macintegration.h
|
src/macintegration.h
|
||||||
src/macwindow.h)
|
src/macwindow.h)
|
||||||
elseif(UNIX)
|
elseif(UNIX)
|
||||||
set(SOURCES src/linuxx11window.cpp)
|
set(SOURCES src/linuxx11window.cpp src/linuxwaylandwindow.cpp)
|
||||||
set(HEADER src/linuxx11window.h)
|
set(HEADER src/linuxx11window.h src/linuxwaylandwindow.h)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(SOURCES ${SOURCES} main.cpp src/basewindow.cpp)
|
set(SOURCES ${SOURCES} main.cpp src/basewindow.cpp)
|
||||||
@ -86,8 +86,12 @@ elseif(UNIX AND NOT APPLE)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX AND NOT APPLE)
|
if(UNIX AND NOT APPLE)
|
||||||
include(CopyRecursive)
|
find_package(ECM CONFIG REQUIRED NO_MODULE)
|
||||||
copy_recursive(${CMAKE_CURRENT_SOURCE_DIR}/kde/ScreenPlay ${CMAKE_BINARY_DIR}/bin/kde/ScreenPlay "*")
|
set(LayerShellQt "${CMAKE_CURRENT_SOURCE_DIR}/../ThirdParty/layer-shell-qt/")
|
||||||
|
find_package(LayerShellQt REQUIRED)
|
||||||
|
target_link_libraries(
|
||||||
|
${PROJECT_NAME}
|
||||||
|
PRIVATE LayerShellQtInterface)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(APPLE)
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
# ScreenPlay Wallpaper for KDE Plasma Desktop
|
|
||||||
|
|
||||||
One has to install it via the command below. Simply putting it into:
|
|
||||||
* ~/.local/share/plasma/wallpapers/
|
|
||||||
Will not work because KDE uses the kpluginindex.json (that is actually a bz2 file. Do not ask why...) to load all available wallpaper.
|
|
||||||
|
|
||||||
#### Installation
|
|
||||||
```
|
|
||||||
sudo apt install qml-module-qt-websockets qtwebengine5-*
|
|
||||||
|
|
||||||
plasmapkg2 --install ScreenPlay
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Application structure
|
|
||||||
Because Wallpaper and Widgets are already a different application we can extend the logic for KDE. For this we create a local websocket instance to communicate with our main ScreenPlay app.
|
|
||||||
|
|
||||||
### Development
|
|
||||||
1. Make changes
|
|
||||||
1. `plasmapkg2 --upgrade ScreenPlay`
|
|
||||||
1. Open Desktop Settings
|
|
||||||
- Select Wallpaper type Image
|
|
||||||
1. Close Desktop Settings Window
|
|
||||||
1. Open Desktop Settings
|
|
||||||
- Select Wallpaper type ScreenPlay
|
|
||||||
|
|
||||||
```
|
|
||||||
plasmapkg2 --upgrade ScreenPlay ; kquitapp5 plasmashell; kstart5 plasmashell
|
|
||||||
```
|
|
@ -1,15 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<kcfg xmlns="http://www.kde.org/standards/kcfg/1.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://www.kde.org/standards/kcfg/1.0
|
|
||||||
http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" >
|
|
||||||
<kcfgfile name=""/>
|
|
||||||
|
|
||||||
<group name="General">
|
|
||||||
<entry name="MonitorIndex" type="int">
|
|
||||||
<label>Monitor Index aaa</label>
|
|
||||||
<default>0</default>
|
|
||||||
</entry>
|
|
||||||
</group>
|
|
||||||
|
|
||||||
</kcfg>
|
|
@ -1,72 +0,0 @@
|
|||||||
import QtQuick 2.15
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "black"
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: toBeCreated
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "black"
|
|
||||||
opacity: 0
|
|
||||||
|
|
||||||
Text {
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
wrapMode: Text.WordWrap
|
|
||||||
anchors.centerIn: parent
|
|
||||||
text: qsTr("Please start ScreenPlay before launching the wallpaper")
|
|
||||||
color: "White"
|
|
||||||
font.pixelSize: 50
|
|
||||||
}
|
|
||||||
|
|
||||||
OpacityAnimator on opacity {
|
|
||||||
id: createAnimation
|
|
||||||
from: 0
|
|
||||||
to: 1
|
|
||||||
duration: 1000
|
|
||||||
onRunningChanged: {
|
|
||||||
if (!running) {
|
|
||||||
toBeDeleted.opacity = 1;
|
|
||||||
toBeCreated.opacity = 0;
|
|
||||||
destroyAnimation.start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Component.onCompleted: {
|
|
||||||
createAnimation.start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: toBeDeleted
|
|
||||||
opacity: 0
|
|
||||||
anchors.fill: parent
|
|
||||||
color: "black"
|
|
||||||
|
|
||||||
Text {
|
|
||||||
horizontalAlignment: Text.AlignHCenter
|
|
||||||
verticalAlignment: Text.AlignVCenter
|
|
||||||
wrapMode: Text.WordWrap
|
|
||||||
anchors.centerIn: parent
|
|
||||||
text: qsTr("Please start ScreenPlay before launching the wallpaper")
|
|
||||||
color: "White"
|
|
||||||
font.pixelSize: 50
|
|
||||||
}
|
|
||||||
|
|
||||||
OpacityAnimator on opacity {
|
|
||||||
id: destroyAnimation
|
|
||||||
from: 1
|
|
||||||
to: 0
|
|
||||||
duration: 1000
|
|
||||||
running: false
|
|
||||||
onRunningChanged: {
|
|
||||||
if (!running) {
|
|
||||||
toBeDeleted.opacity = 0;
|
|
||||||
toBeCreated.opacity = 0;
|
|
||||||
createAnimation.start();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,86 +0,0 @@
|
|||||||
import QtQuick 2.0
|
|
||||||
import QtQuick.Controls 2.12
|
|
||||||
import QtWebSockets 1.1
|
|
||||||
import QtWebEngine 1.8
|
|
||||||
import QtMultimedia 5.12
|
|
||||||
import Qt.labs.settings 1.1
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: root
|
|
||||||
color: "black"
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
property string fullContentPath
|
|
||||||
property real volume: 1
|
|
||||||
property string fillMode: "Cover"
|
|
||||||
property string type
|
|
||||||
property string projectSourceFileAbsolute
|
|
||||||
property bool loops: true
|
|
||||||
|
|
||||||
function stop() {
|
|
||||||
player1.stop();
|
|
||||||
player2.stop();
|
|
||||||
videoOutput1.visible = false;
|
|
||||||
videoOutput2.visible = false;
|
|
||||||
root.enabled = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function play() {
|
|
||||||
root.enabled = true;
|
|
||||||
videoOutput2.visible = false;
|
|
||||||
videoOutput1.visible = true;
|
|
||||||
|
|
||||||
//if(wallpaper.configuration.DualPlayback){
|
|
||||||
player2.source = root.projectSourceFileAbsolute;
|
|
||||||
player2.play();
|
|
||||||
player2.pause();
|
|
||||||
//}
|
|
||||||
player1.play();
|
|
||||||
}
|
|
||||||
|
|
||||||
MediaPlayer {
|
|
||||||
id: player1
|
|
||||||
volume: root.volume
|
|
||||||
source: root.projectSourceFileAbsolute
|
|
||||||
onStopped: {
|
|
||||||
if (!root.enabled)
|
|
||||||
return;
|
|
||||||
videoOutput1.visible = false;
|
|
||||||
videoOutput2.visible = true;
|
|
||||||
if (player2.source !== root.projectSourceFileAbsolute) {
|
|
||||||
player2.source = root.projectSourceFileAbsolute;
|
|
||||||
}
|
|
||||||
player1.play();
|
|
||||||
player1.pause();
|
|
||||||
player2.play();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MediaPlayer {
|
|
||||||
id: player2
|
|
||||||
volume: root.volume
|
|
||||||
onStopped: {
|
|
||||||
if (!root.enabled)
|
|
||||||
return;
|
|
||||||
videoOutput2.visible = false;
|
|
||||||
videoOutput1.visible = true;
|
|
||||||
player2.play();
|
|
||||||
player2.pause();
|
|
||||||
player1.play();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
VideoOutput {
|
|
||||||
id: videoOutput1
|
|
||||||
fillMode: VideoOutput.PreserveAspectCrop
|
|
||||||
anchors.fill: parent
|
|
||||||
source: player1
|
|
||||||
}
|
|
||||||
|
|
||||||
VideoOutput {
|
|
||||||
id: videoOutput2
|
|
||||||
fillMode: VideoOutput.PreserveAspectCrop
|
|
||||||
anchors.fill: parent
|
|
||||||
source: player2
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,41 +0,0 @@
|
|||||||
import QtQuick 2.0
|
|
||||||
import QtQuick.Controls 2.12
|
|
||||||
import QtWebSockets 1.1
|
|
||||||
import QtWebEngine 1.8
|
|
||||||
import QtMultimedia 5.12
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: container
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
Loader {
|
|
||||||
id: wp
|
|
||||||
anchors.fill: parent
|
|
||||||
source: "Wallpaper.qml"
|
|
||||||
property bool connected: false
|
|
||||||
|
|
||||||
Timer {
|
|
||||||
id: connectTimer
|
|
||||||
interval: 1000
|
|
||||||
running: true
|
|
||||||
repeat: true
|
|
||||||
onTriggered: {
|
|
||||||
if (!wp.connected) {
|
|
||||||
console.log("not connected");
|
|
||||||
wp.source = "";
|
|
||||||
wp.source = "Wallpaper.qml";
|
|
||||||
} else {
|
|
||||||
console.log("connected");
|
|
||||||
screensaver.visible = false;
|
|
||||||
connectTimer.stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Loader {
|
|
||||||
id: screensaver
|
|
||||||
anchors.fill: parent
|
|
||||||
source: "WaitingForScreenplay.qml"
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,28 +0,0 @@
|
|||||||
import QtQuick 2.11
|
|
||||||
import QtQuick.Controls 2.4 as QQC
|
|
||||||
import QtQuick.Window 2.0
|
|
||||||
import QtGraphicalEffects 1.0
|
|
||||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
|
||||||
import org.kde.plasma.wallpapers.image 2.0 as Wallpaper
|
|
||||||
import org.kde.kcm 1.1 as KCM
|
|
||||||
import org.kde.kirigami 2.4 as Kirigami
|
|
||||||
import org.kde.newstuff 1.1 as NewStuff
|
|
||||||
|
|
||||||
Column {
|
|
||||||
id: root
|
|
||||||
|
|
||||||
property alias cfg_MonitorIndex: monitorIndex.text
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
spacing: units.largeSpacing
|
|
||||||
|
|
||||||
Row {
|
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
|
||||||
spacing: units.largeSpacing
|
|
||||||
|
|
||||||
QQC.TextField {
|
|
||||||
id: monitorIndex
|
|
||||||
text: "0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<style type="text/css">
|
|
||||||
video {
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
object-fit: fill;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
body, html{
|
|
||||||
margin: 0px;
|
|
||||||
padding: 0px;
|
|
||||||
overflow: hidden;
|
|
||||||
background:black;
|
|
||||||
}
|
|
||||||
#errorMsg{
|
|
||||||
position: fixed;
|
|
||||||
top: 50%;
|
|
||||||
text-align: center;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100px;
|
|
||||||
z-index: 0;
|
|
||||||
color:white;
|
|
||||||
font-family: "Segoe UI, Roboto, Arial";
|
|
||||||
font-weight: lighter;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<video id="videoPlayer" oncontextmenu="return false;" width="100%" height="100%" loop autoplay>
|
|
||||||
<source id="videoSource" type="video/webm" oncontextmenu="return false;" width="100%" height="100%">
|
|
||||||
</video>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,114 +0,0 @@
|
|||||||
import QtQuick 2.0
|
|
||||||
import QtQuick.Controls 2.12
|
|
||||||
import QtWebSockets 1.1
|
|
||||||
import QtWebEngine 1.8
|
|
||||||
import QtMultimedia 5.12
|
|
||||||
import Qt.labs.settings 1.1
|
|
||||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
|
||||||
|
|
||||||
Rectangle {
|
|
||||||
id: root
|
|
||||||
color: "orange"
|
|
||||||
property bool connected: false
|
|
||||||
|
|
||||||
Settings {
|
|
||||||
id: settings
|
|
||||||
}
|
|
||||||
|
|
||||||
Component.onCompleted: {
|
|
||||||
wallpaper.projectSourceFileAbsolute = settings.value("SP_projectSourceFileAbsolute", "NULL");
|
|
||||||
// if(root.projectSourceFileAbsolute === "NULL")
|
|
||||||
// return
|
|
||||||
wallpaper.type = settings.value("SP_type");
|
|
||||||
wallpaper.fillMode = settings.value("SP_fillMode");
|
|
||||||
//wallpaper.volume = settings.value("SP_volume")
|
|
||||||
wallpaper.play();
|
|
||||||
}
|
|
||||||
|
|
||||||
Wallpaper {
|
|
||||||
id: wallpaper
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
// visible: root.connected
|
|
||||||
onFullContentPathChanged: settings.setValue("SP_fullContentPath", fullContentPath)
|
|
||||||
onVolumeChanged: settings.setValue("SP_volume", volume)
|
|
||||||
onFillModeChanged: settings.setValue("SP_fillMode", fillMode)
|
|
||||||
onTypeChanged: settings.setValue("SP_type", type)
|
|
||||||
onProjectSourceFileAbsoluteChanged: settings.setValue("SP_projectSourceFileAbsolute", projectSourceFileAbsolute)
|
|
||||||
onLoopsChanged: settings.setValue("SP_loops", loops)
|
|
||||||
}
|
|
||||||
|
|
||||||
Timer {
|
|
||||||
id: reconnectTimer
|
|
||||||
interval: 1000
|
|
||||||
running: true
|
|
||||||
repeat: true
|
|
||||||
onTriggered: {
|
|
||||||
if (socket.status === WebSocket.Open)
|
|
||||||
return;
|
|
||||||
socket.active = false;
|
|
||||||
socket.active = true;
|
|
||||||
reconnectTimer.retryCounter += 1;
|
|
||||||
}
|
|
||||||
property int retryCounter: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
WebSocket {
|
|
||||||
id: socket
|
|
||||||
url: "ws://127.0.0.1:16395"
|
|
||||||
onStatusChanged: {
|
|
||||||
if (socket.status === WebSocket.Open)
|
|
||||||
socket.sendTextMessage("Hello World from QML wallpaper");
|
|
||||||
}
|
|
||||||
|
|
||||||
onTextMessageReceived: message => {
|
|
||||||
var obj = JSON.parse(message);
|
|
||||||
root.connected = true;
|
|
||||||
txtCommand.text = obj.command;
|
|
||||||
if (obj.command === "replace") {
|
|
||||||
socket.sendTextMessage("replace");
|
|
||||||
wallpaper.type = obj.type;
|
|
||||||
wallpaper.fillMode = obj.fillMode;
|
|
||||||
wallpaper.volume = obj.volume;
|
|
||||||
wallpaper.projectSourceFileAbsolute = "file://" + obj.absolutePath + "/" + obj.file;
|
|
||||||
print("got: " + root.projectSourceFileAbsolute);
|
|
||||||
wallpaper.play();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (obj.command === "quit") {
|
|
||||||
wallpaper.stop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// WaitingForScreenplay {
|
|
||||||
// anchors.fill: parent
|
|
||||||
// visible: !root.connected
|
|
||||||
// }
|
|
||||||
Column {
|
|
||||||
anchors {
|
|
||||||
horizontalCenter: parent.horizontalCenter
|
|
||||||
bottom: parent.bottom
|
|
||||||
margins: 60
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
id: txtCommand
|
|
||||||
color: "white"
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
color: "white"
|
|
||||||
text: "wallpaper.type: " + wallpaper.type
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
color: "white"
|
|
||||||
text: "projectSourceFileAbsolute " + wallpaper.projectSourceFileAbsolute
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
color: "white"
|
|
||||||
text: "reconnectTimer.retryCounter : " + reconnectTimer.retryCounter
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
color: "white"
|
|
||||||
text: "MonitorIndex: " + wallpaper.configuration.MonitorIndex
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,20 +0,0 @@
|
|||||||
[Desktop Entry]
|
|
||||||
Encoding=UTF-8
|
|
||||||
Name=ScreenPlay
|
|
||||||
Keywords=ScreenPlay
|
|
||||||
Icon=preferences-desktop-wallpaper
|
|
||||||
Version=0.15.0-RC5
|
|
||||||
|
|
||||||
Type=Service
|
|
||||||
|
|
||||||
X-KDE-ServiceTypes=Plasma/Wallpaper
|
|
||||||
X-KDE-ParentApp=
|
|
||||||
X-KDE-PluginInfo-Name=ScreenPlay
|
|
||||||
X-KDE-PluginInfo-EnabledByDefault=true
|
|
||||||
X-KDE-PluginInfo-Version=3
|
|
||||||
X-KDE-PluginInfo-Website=https://gitlab.com/kelteseth/screenplay
|
|
||||||
|
|
||||||
X-Plasma-MainScript=ui/main.qml
|
|
||||||
|
|
||||||
MimeType=image/gif;image/png;image/svg+xml;image/svg+xml-compressed;video/x-mng;
|
|
||||||
X-Plasma-DropMimeTypes=image/gif,image/png,image/svg+xml,image/svg+xml-compressed,video/x-mng
|
|
@ -16,6 +16,7 @@
|
|||||||
Q_IMPORT_QML_PLUGIN(ScreenPlaySysInfoPlugin)
|
Q_IMPORT_QML_PLUGIN(ScreenPlaySysInfoPlugin)
|
||||||
#elif defined(Q_OS_LINUX)
|
#elif defined(Q_OS_LINUX)
|
||||||
#include "src/linuxx11window.h"
|
#include "src/linuxx11window.h"
|
||||||
|
#include "src/linuxwaylandwindow.h"
|
||||||
#elif defined(Q_OS_OSX)
|
#elif defined(Q_OS_OSX)
|
||||||
#include "src/macwindow.h"
|
#include "src/macwindow.h"
|
||||||
#endif
|
#endif
|
||||||
@ -35,13 +36,19 @@ int main(int argc, char* argv[])
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
QGuiApplication app(argc, argv);
|
QGuiApplication app(argc, argv);
|
||||||
|
std::unique_ptr<BaseWindow> window;
|
||||||
|
const auto platformName = QGuiApplication::platformName();
|
||||||
|
|
||||||
#if defined(Q_OS_WIN)
|
#if defined(Q_OS_WIN)
|
||||||
WinWindow window;
|
window = std::make_unique<WinWindow>();
|
||||||
#elif defined(Q_OS_LINUX)
|
#elif defined(Q_OS_LINUX)
|
||||||
LinuxX11Window window;
|
if(platformName == "xcb"){
|
||||||
|
window = std::make_unique<LinuxX11Window>();
|
||||||
|
} else if(platformName == "wayland"){
|
||||||
|
window = std::make_unique<LinuxWaylandWindow>();
|
||||||
|
}
|
||||||
#elif defined(Q_OS_OSX)
|
#elif defined(Q_OS_OSX)
|
||||||
MacWindow window;
|
window = std::make_unique<MacWindow>();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// If we start with only one argument (app path)
|
// If we start with only one argument (app path)
|
||||||
@ -59,17 +66,17 @@ int main(int argc, char* argv[])
|
|||||||
"/wallpaper_video_astronaut_vp9", // 4
|
"/wallpaper_video_astronaut_vp9", // 4
|
||||||
"/wallpaper_video_nebula_h264" // 5
|
"/wallpaper_video_nebula_h264" // 5
|
||||||
};
|
};
|
||||||
const int index = 5;
|
const int index = 1;
|
||||||
QString projectPath = exampleContentPath + contentFolder.at(index);
|
QString projectPath = exampleContentPath + contentFolder.at(index);
|
||||||
|
|
||||||
window.setActiveScreensList({ 0 });
|
window->setActiveScreensList({ 0 });
|
||||||
window.setProjectPath(projectPath);
|
window->setProjectPath(projectPath);
|
||||||
window.setAppID("test");
|
window->setAppID("test");
|
||||||
window.setVolume(1);
|
window->setVolume(1);
|
||||||
window.setFillMode("cover");
|
window->setFillMode("cover");
|
||||||
window.setType(ScreenPlay::InstalledType::InstalledType::VideoWallpaper);
|
window->setType(ScreenPlay::InstalledType::InstalledType::VideoWallpaper);
|
||||||
window.setCheckWallpaperVisible(true);
|
window->setCheckWallpaperVisible(true);
|
||||||
window.setDebugMode(false);
|
window->setDebugMode(false);
|
||||||
} else {
|
} else {
|
||||||
// 8 parameter + 1 OS working directory as the first default paramter
|
// 8 parameter + 1 OS working directory as the first default paramter
|
||||||
if (argumentList.length() != 9) {
|
if (argumentList.length() != 9) {
|
||||||
@ -111,24 +118,24 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
appID = appID.remove("appID=");
|
appID = appID.remove("appID=");
|
||||||
|
|
||||||
window.setActiveScreensList(activeScreensList.value());
|
window->setActiveScreensList(activeScreensList.value());
|
||||||
window.setProjectPath(argumentList.at(2));
|
window->setProjectPath(argumentList.at(2));
|
||||||
window.setAppID(appID);
|
window->setAppID(appID);
|
||||||
window.setVolume(volume);
|
window->setVolume(volume);
|
||||||
window.setFillMode(argumentList.at(5));
|
window->setFillMode(argumentList.at(5));
|
||||||
window.setType(installedType);
|
window->setType(installedType);
|
||||||
window.setCheckWallpaperVisible(checkWallpaperVisible);
|
window->setCheckWallpaperVisible(checkWallpaperVisible);
|
||||||
window.setDebugMode(false);
|
window->setDebugMode(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto setupStatus = window.setup();
|
const auto setupStatus = window->setup();
|
||||||
if (setupStatus != ScreenPlay::WallpaperExitCode::Ok) {
|
if (setupStatus != ScreenPlay::WallpaperExitCode::Ok) {
|
||||||
return static_cast<int>(setupStatus);
|
return static_cast<int>(setupStatus);
|
||||||
}
|
}
|
||||||
const auto startStatus = window.start();
|
const auto startStatus = window->start();
|
||||||
if (startStatus != ScreenPlay::WallpaperExitCode::Ok) {
|
if (startStatus != ScreenPlay::WallpaperExitCode::Ok) {
|
||||||
return static_cast<int>(startStatus);
|
return static_cast<int>(startStatus);
|
||||||
}
|
}
|
||||||
emit window.qmlStart();
|
emit window->qmlStart();
|
||||||
return app.exec();
|
return app.exec();
|
||||||
}
|
}
|
||||||
|
@ -27,7 +27,7 @@ Rectangle {
|
|||||||
loader.source = "qrc:/qml/ScreenPlayWallpaper/qml/MultimediaView.qml";
|
loader.source = "qrc:/qml/ScreenPlayWallpaper/qml/MultimediaView.qml";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (Qt.platform.os === "windows") {
|
if (Qt.platform.os === "windows" || Qt.platform.os === "linux") {
|
||||||
loader.source = "qrc:/qml/ScreenPlayWallpaper/qml/MultimediaView.qml";
|
loader.source = "qrc:/qml/ScreenPlayWallpaper/qml/MultimediaView.qml";
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
70
ScreenPlayWallpaper/src/linuxwaylandwindow.cpp
Normal file
70
ScreenPlayWallpaper/src/linuxwaylandwindow.cpp
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only
|
||||||
|
#include "linuxwaylandwindow.h"
|
||||||
|
#include <QScreen>
|
||||||
|
#include <QGuiApplication>
|
||||||
|
|
||||||
|
#include <LayerShellQt/Window>
|
||||||
|
#include <LayerShellQt/Shell>
|
||||||
|
|
||||||
|
ScreenPlay::WallpaperExitCode LinuxWaylandWindow::start()
|
||||||
|
{
|
||||||
|
|
||||||
|
if (!debugMode()) {
|
||||||
|
connect(m_sdk.get(), &ScreenPlaySDK::sdkDisconnected, this, &LinuxWaylandWindow::destroyThis);
|
||||||
|
}
|
||||||
|
|
||||||
|
qmlRegisterSingletonInstance<LinuxWaylandWindow>("ScreenPlayWallpaper", 1, 0, "Wallpaper", this);
|
||||||
|
|
||||||
|
QDir workingDir(QGuiApplication::instance()->applicationDirPath());
|
||||||
|
m_window.engine()->addImportPath(workingDir.path() + "/qml");
|
||||||
|
m_window.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
|
||||||
|
m_window.setSource(QUrl("qrc:/qml/ScreenPlayWallpaper/qml/Wallpaper.qml"));
|
||||||
|
|
||||||
|
// Get the Wayland display
|
||||||
|
if (QGuiApplication::platformName() == "wayland") {
|
||||||
|
QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface();
|
||||||
|
|
||||||
|
|
||||||
|
auto *layerShell = LayerShellQt::Window::get(&m_window);
|
||||||
|
layerShell->setLayer(LayerShellQt::Window::LayerBackground);
|
||||||
|
layerShell->setAnchors(static_cast<QFlags<LayerShellQt::Window::Anchor>>(
|
||||||
|
LayerShellQt::Window::Anchor::AnchorTop |
|
||||||
|
LayerShellQt::Window::Anchor::AnchorBottom |
|
||||||
|
LayerShellQt::Window::Anchor::AnchorLeft |
|
||||||
|
LayerShellQt::Window::Anchor::AnchorRight
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
m_window.show();
|
||||||
|
return ScreenPlay::WallpaperExitCode::Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinuxWaylandWindow::setupWallpaperForOneScreen(int activeScreen)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinuxWaylandWindow::setupWallpaperForAllScreens()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinuxWaylandWindow::setupWallpaperForMultipleScreens(const QVector<int>& activeScreensList)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinuxWaylandWindow::setVisible(bool show)
|
||||||
|
{
|
||||||
|
m_window.setVisible(show);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinuxWaylandWindow::destroyThis()
|
||||||
|
{
|
||||||
|
QCoreApplication::quit();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LinuxWaylandWindow::terminate()
|
||||||
|
{
|
||||||
|
QCoreApplication::quit();
|
||||||
|
}
|
35
ScreenPlayWallpaper/src/linuxwaylandwindow.h
Normal file
35
ScreenPlayWallpaper/src/linuxwaylandwindow.h
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QQmlContext>
|
||||||
|
#include <QQmlEngine>
|
||||||
|
#include <QQuickView>
|
||||||
|
#include <QScreen>
|
||||||
|
#include <QSettings>
|
||||||
|
#include <QString>
|
||||||
|
#include <QVector>
|
||||||
|
|
||||||
|
#include "basewindow.h"
|
||||||
|
|
||||||
|
class LinuxWaylandWindow : public BaseWindow {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
ScreenPlay::WallpaperExitCode start() override;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void setVisible(bool show) override;
|
||||||
|
void destroyThis() override;
|
||||||
|
void terminate() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QQuickView m_window;
|
||||||
|
void setupWallpaperForOneScreen(int activeScreen);
|
||||||
|
void setupWallpaperForAllScreens();
|
||||||
|
void setupWallpaperForMultipleScreens(const QVector<int>& activeScreensList);
|
||||||
|
};
|
14
ThirdParty/CMakeLists.txt
vendored
14
ThirdParty/CMakeLists.txt
vendored
@ -16,5 +16,19 @@ FetchContent_Populate(
|
|||||||
# https://bugreports.qt.io/browse/QTCREATORBUG-27083
|
# https://bugreports.qt.io/browse/QTCREATORBUG-27083
|
||||||
SOURCE_DIR ${THIRD_PARTY_PATH}/qml-plausible)
|
SOURCE_DIR ${THIRD_PARTY_PATH}/qml-plausible)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
add_subdirectory(qml-plausible)
|
add_subdirectory(qml-plausible)
|
||||||
add_subdirectory(QArchive)
|
add_subdirectory(QArchive)
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
FetchContent_Populate(
|
||||||
|
qt-layer-shell
|
||||||
|
GIT_REPOSITORY https://github.com/KDE/layer-shell-qt.git
|
||||||
|
GIT_TAG 721c0ae334554eb2396a2d4d3358f896b8c77412
|
||||||
|
# Workaround because: 1. QtCreator cannot handle QML_ELEMENT stuff when it is in bin folder
|
||||||
|
# https://bugreports.qt.io/browse/QTCREATORBUG-27083
|
||||||
|
SOURCE_DIR ${THIRD_PARTY_PATH}/qt-layer-shell)
|
||||||
|
add_subdirectory(qt-layer-shell)
|
||||||
|
|
||||||
|
endif()
|
@ -44,16 +44,18 @@ class commands_list():
|
|||||||
|
|
||||||
|
|
||||||
def download(aqt_path: Path, qt_platform: Path):
|
def download(aqt_path: Path, qt_platform: Path):
|
||||||
|
qt_packages = ""
|
||||||
if system() == "Windows":
|
if system() == "Windows":
|
||||||
os = "windows"
|
os = "windows"
|
||||||
elif system() == "Darwin":
|
elif system() == "Darwin":
|
||||||
os = "mac"
|
os = "mac"
|
||||||
elif system() == "Linux":
|
elif system() == "Linux":
|
||||||
|
qt_packages = "qtwaylandcompositor "
|
||||||
os = "linux"
|
os = "linux"
|
||||||
|
|
||||||
# python -m aqt list-qt windows desktop --modules 6.5.2 win64_msvc2019_64
|
# Windows: python -m aqt list-qt windows desktop --modules 6.5.2 win64_msvc2019_64
|
||||||
qt_packages = "qt3d qtquick3d qtconnectivity qt5compat qtimageformats qtmultimedia qtshadertools qtwebchannel qtwebengine qtwebsockets qtwebview qtpositioning"
|
# Linux: python3 -m aqt list-qt linux desktop --modules 6.5.2 gcc_64
|
||||||
|
qt_packages += "qt3d qtquick3d qtconnectivity qt5compat qtimageformats qtmultimedia qtshadertools qtwebchannel qtwebengine qtwebsockets qtwebview qtpositioning"
|
||||||
print(f"Downloading: {qt_packages} to {aqt_path}")
|
print(f"Downloading: {qt_packages} to {aqt_path}")
|
||||||
execute(f"{defines.PYTHON_EXECUTABLE} -m aqt install-qt -O {aqt_path} {os} desktop {defines.QT_VERSION} {qt_platform} -m {qt_packages}")
|
execute(f"{defines.PYTHON_EXECUTABLE} -m aqt install-qt -O {aqt_path} {os} desktop {defines.QT_VERSION} {qt_platform} -m {qt_packages}")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user