mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-19 20:32:15 +02:00
UI: Add HighContrastEnabled implementation for Linux
This commit is contained in:
parent
0a9f1e7391
commit
41ba8bdfdd
@ -71,7 +71,7 @@ find_package(CURL REQUIRED)
|
||||
add_subdirectory(frontend-plugins)
|
||||
add_executable(obs)
|
||||
|
||||
find_qt(COMPONENTS Widgets Network Svg Xml COMPONENTS_LINUX Gui)
|
||||
find_qt(COMPONENTS Widgets Network Svg Xml COMPONENTS_LINUX Gui DBus)
|
||||
|
||||
target_link_libraries(obs PRIVATE Qt::Widgets Qt::Svg Qt::Xml Qt::Network)
|
||||
|
||||
@ -459,7 +459,7 @@ elseif(OS_MACOS)
|
||||
|
||||
elseif(OS_POSIX)
|
||||
target_sources(obs PRIVATE platform-x11.cpp)
|
||||
target_link_libraries(obs PRIVATE Qt::GuiPrivate)
|
||||
target_link_libraries(obs PRIVATE Qt::GuiPrivate Qt::DBus)
|
||||
|
||||
target_compile_definitions(obs PRIVATE OBS_INSTALL_PREFIX="${OBS_INSTALL_PREFIX}"
|
||||
"$<$<BOOL:${LINUX_PORTABLE}>:LINUX_PORTABLE>")
|
||||
|
@ -1,6 +1,6 @@
|
||||
target_sources(obs-studio PRIVATE platform-x11.cpp)
|
||||
target_compile_definitions(obs-studio PRIVATE OBS_INSTALL_PREFIX="${OBS_INSTALL_PREFIX}")
|
||||
target_link_libraries(obs-studio PRIVATE Qt::GuiPrivate)
|
||||
target_link_libraries(obs-studio PRIVATE Qt::GuiPrivate Qt::DBus)
|
||||
|
||||
if(TARGET OBS::python)
|
||||
find_package(Python REQUIRED COMPONENTS Interpreter Development)
|
||||
|
@ -5,7 +5,7 @@ find_package(Qt6 REQUIRED Widgets Network Svg Xml)
|
||||
if(OS_LINUX
|
||||
OR OS_FREEBSD
|
||||
OR OS_OPENBSD)
|
||||
find_package(Qt6 REQUIRED Gui)
|
||||
find_package(Qt6 REQUIRED Gui DBus)
|
||||
endif()
|
||||
|
||||
target_link_libraries(obs-studio PRIVATE Qt::Widgets Qt::Svg Qt::Xml Qt::Network)
|
||||
|
@ -21,6 +21,9 @@
|
||||
|
||||
#include <QGuiApplication>
|
||||
#include <QScreen>
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusMessage>
|
||||
#include <QDBusReply>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sstream>
|
||||
@ -272,6 +275,48 @@ void TaskbarOverlaySetStatus(TaskbarOverlayStatus) {}
|
||||
|
||||
bool HighContrastEnabled()
|
||||
{
|
||||
// Note implemented yet
|
||||
return false;
|
||||
QDBusReply<QVariant> reply;
|
||||
QDBusMessage msgXdpSettingsVersion = QDBusMessage::createMethodCall(
|
||||
"org.freedesktop.portal.Desktop",
|
||||
"/org/freedesktop/portal/desktop",
|
||||
"org.freedesktop.DBus.Properties", "Get");
|
||||
msgXdpSettingsVersion << "org.freedesktop.portal.Settings"
|
||||
<< "version";
|
||||
|
||||
reply = QDBusConnection::sessionBus().call(msgXdpSettingsVersion);
|
||||
|
||||
if (!reply.isValid()) {
|
||||
blog(LOG_WARNING,
|
||||
"Get on org.freedesktop.portal.Settings returned an invalid reply");
|
||||
return false;
|
||||
}
|
||||
|
||||
/* NOTE: org.freedesktop.portal.Settings got its contrast settings after
|
||||
* the ReadOne method. So assumes that if ReadOne is not available, contrast
|
||||
* isn't available either. */
|
||||
if (uint32_t version = reply.value().toUInt() < 2) {
|
||||
blog(LOG_WARNING,
|
||||
"org.freedesktop.portal.Settings version %u does not support ReadOne",
|
||||
version);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* NOTE: If contrast is not available if will return 0 (false). */
|
||||
QDBusMessage msgXdpSettingsContrast = QDBusMessage::createMethodCall(
|
||||
"org.freedesktop.portal.Desktop",
|
||||
"/org/freedesktop/portal/desktop",
|
||||
"org.freedesktop.portal.Settings", "ReadOne");
|
||||
|
||||
msgXdpSettingsContrast << "org.freedesktop.appearance"
|
||||
<< "contrast";
|
||||
|
||||
reply = QDBusConnection::sessionBus().call(msgXdpSettingsContrast);
|
||||
|
||||
if (!reply.isValid()) {
|
||||
blog(LOG_WARNING,
|
||||
"ReadOne on org.freedesktop.portal.Settings returned an invalid reply");
|
||||
return false;
|
||||
}
|
||||
|
||||
return reply.value().toUInt() != 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user