refactor(dbus): unify cutefish services bus interface

main
Reion Wong 4 weeks ago
parent a73777d33b
commit 4894403164

@ -24,7 +24,7 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}")
add_subdirectory(polkit-agent)
add_subdirectory(screen-brightness)
add_subdirectory(session)
add_subdirectory(settings-daemon)
add_subdirectory(cutefish-services)
add_subdirectory(cpufreq)
add_subdirectory(sddm-helper)
add_subdirectory(clipboard)

@ -6,15 +6,15 @@ System backend and start session and more.
Install Qt 6, KDE Frameworks 6, NetworkManager, Polkit, Fontconfig, FreeType
and the development tools provided by your distribution. The currently
retained settings daemon has its remaining input-backend dependencies
declared in `settings-daemon/CMakeLists.txt`.
retained services daemon has its remaining input-backend dependencies
declared in `cutefish-services/CMakeLists.txt`.
## Runtime
For the Wayland session, install KWin Wayland and select `Cutefish (KWin
Wayland)` from the display manager. The session entry launches KWin with
Wayland enabled and starts `cutefish-session` inside the
compositor. The session starts the retained settings daemon, which in turn
compositor. The session starts the retained services daemon, which in turn
starts the desktop components after its D-Bus service is ready.
## Build

@ -1,5 +1,5 @@
project(cutefish-settings-daemon)
set(TARGET cutefish-settings-daemon)
project(cutefish-services)
set(TARGET cutefish-services)
find_package(KF6IdleTime REQUIRED)
find_package(KWayland REQUIRED)
@ -30,32 +30,29 @@ set(FORMS "")
set(RESOURCES "")
qt6_add_dbus_adaptor(DBUS_SOURCES
brightness/com.cutefish.Brightness.xml
brightness/com.cutefish.Services.Brightness.xml
brightness/brightnessmanager.h BrightnessManager)
qt6_add_dbus_adaptor(DBUS_SOURCES
theme/com.cutefish.Theme.xml
theme/com.cutefish.Appearance.xml
theme/thememanager.h ThemeManager)
qt6_add_dbus_adaptor(DBUS_SOURCES
battery/com.cutefish.PrimaryBattery.xml
battery/com.cutefish.Battery.xml
battery/battery.h Battery)
qt6_add_dbus_adaptor(DBUS_SOURCES
language/com.cutefish.Language.xml
language/com.cutefish.Services.Language.xml
language/language.h Language)
qt6_add_dbus_adaptor(DBUS_SOURCES
dock/com.cutefish.Dock.xml
dock/com.cutefish.Services.Dock.xml
dock/dock.h Dock)
qt6_add_dbus_adaptor(DBUS_SOURCES
mouse/com.cutefish.Mouse.xml
mouse/com.cutefish.Services.Input.Mouse.xml
mouse/mousemanager.h Mouse)
qt6_add_dbus_adaptor(DBUS_SOURCES
touchpad/com.cutefish.Touchpad.xml
touchpad/com.cutefish.Services.Input.Touchpad.xml
touchpad/touchpadmanager.h TouchpadManager)
qt6_add_dbus_adaptor(DBUS_SOURCES
power/com.cutefish.PowerManager.xml
power/com.cutefish.Power.xml
power/powermanager.h PowerManager)
qt6_add_dbus_adaptor(DBUS_SOURCES
power/com.cutefish.CPUManagement.xml
power/cpumanagement.h CPUManagement)
set_source_files_properties(${DBUS_SOURCES} PROPERTIES SKIP_AUTOGEN ON)
add_executable(${TARGET} ${SOURCES} ${DBUS_SOURCES} ${HEADERS} ${FORMS} ${RESOURCES})

@ -19,7 +19,7 @@
#include "application.h"
#include "dbusadaptor.h"
#include "powermanageradaptor.h"
#include "poweradaptor.h"
#include <QStandardPaths>
#include <QProcess>
#include <QTimer>
@ -47,20 +47,19 @@ Application::Application(int &argc, char **argv)
, m_touchpad(new TouchpadManager(this))
, m_defaultApps(new DefaultApplications)
, m_cpuManagement(new CPUManagement(this))
, m_powerManager(new PowerManager(m_upowerManager, this))
, m_powerManager(new PowerManager(m_upowerManager, m_cpuManagement, this))
{
initTrash();
new DBusAdaptor(this);
// connect to D-Bus and register as an object:
QDBusConnection::sessionBus().registerService(QStringLiteral("com.cutefish.Settings"));
QDBusConnection::sessionBus().registerService(QStringLiteral("com.cutefish.PowerManager"));
QDBusConnection::sessionBus().registerObject(QStringLiteral("/PowerManager"), m_powerManager);
new PowerManagerAdaptor(m_powerManager);
QDBusConnection::sessionBus().registerService(QStringLiteral("com.cutefish.Services"));
new PowerAdaptor(m_powerManager);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/com/cutefish/Services/Power"), m_powerManager);
// Translations
QLocale locale;
QString qmFilePath = QString("%1/%2.qm").arg("/usr/share/cutefish-settings-daemon/translations/").arg(locale.name());
QString qmFilePath = QString("%1/%2.qm").arg("/usr/share/cutefish-services/translations/").arg(locale.name());
if (QFile::exists(qmFilePath)) {
QTranslator *translator = new QTranslator(QApplication::instance());
if (translator->load(qmFilePath)) {

@ -1,6 +1,6 @@
#include "battery.h"
#include "power.h"
#include "primarybatteryadaptor.h"
#include "batteryadaptor.h"
#include <QDateTime>
#include <QDebug>
@ -47,8 +47,8 @@ void Battery::updateCache()
void Battery::init()
{
if (type() == Battery::PrimaryBattery) {
new PrimaryBatteryAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/PrimaryBattery"), this);
new BatteryAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/com/cutefish/Services/Battery"), this);
m_settings = new QSettings(QStringLiteral("cutefishos"), QStringLiteral("PrimaryBattery"));
m_lastChargedPercent = m_settings->value("LastChargedPercent", 0).toInt();

@ -1,6 +1,6 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="com.cutefish.PrimaryBattery">
<interface name="com.cutefish.Services.Battery">
<method name="refresh"></method>
<property name="chargeState" type="i" access="read"/>
@ -34,4 +34,4 @@
<signal name="lastChargedSecsChanged">
</signal>
</interface>
</node>
</node>

@ -34,7 +34,7 @@ BrightnessManager::BrightnessManager(QObject *parent)
{
// init dbus
new BrightnessAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Brightness"), this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/com/cutefish/Services/Brightness"), this);
init();
}

@ -1,6 +1,6 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="com.cutefish.Brightness">
<interface name="com.cutefish.Services.Brightness">
<method name="setValue">
<arg name="value" type="i" direction="in"/>
</method>

@ -1,6 +1,6 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="com.cutefish.Dock">
<interface name="com.cutefish.Services.Dock">
<property name="iconSize" type="i" access="read"/>
<method name="setIconSize">
<arg name="value" type="i" direction="in"/>

@ -37,7 +37,7 @@ Dock::Dock(QObject *parent)
, m_settings(new QSettings(QSettings::UserScope, "cutefishos", "dock"))
{
new DockAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Dock"), this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/com/cutefish/Services/Dock"), this);
if (!m_settings->contains("IconSize"))
m_settings->setValue("IconSize", 64);

@ -1,6 +1,6 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="com.cutefish.Language">
<interface name="com.cutefish.Services.Language">
<method name="setLanguage">
<arg name="value" type="s" direction="in"/>
</method>

@ -35,7 +35,7 @@ Language::Language(QObject *parent)
, m_settings(new QSettings(QStringLiteral("cutefishos"), QStringLiteral("language")))
{
new LanguageAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Language"), this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/com/cutefish/Services/Language"), this);
if (!m_settings->contains("language"))
m_settings->setValue("language", "en_US");

@ -1,6 +1,6 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="com.cutefish.Mouse">
<interface name="com.cutefish.Services.Input.Mouse">
<property name="available" type="b" access="read"/>
<signal name="availableChanged"></signal>

@ -19,7 +19,7 @@ Mouse::Mouse(QObject *parent)
, m_settings(QSettings::UserScope, QStringLiteral("cutefishos"), QStringLiteral("mouse"))
{
new MouseAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Mouse"), this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/com/cutefish/Services/Input/Mouse"), this);
connect(m_backend, &KWinInputBackend::devicesChanged, this, [this] {
restoreSettings();

@ -1,7 +1,13 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="com.cutefish.PowerManager">
<interface name="com.cutefish.Services.Power">
<property name="mode" type="i" access="read"/>
<method name="setMode">
<arg name="value" type="i" direction="in"/>
</method>
<method name="setBatteryScreenOff">
<arg name="value" type="i" direction="in"/>
</method>

@ -18,7 +18,6 @@
*/
#include "cpumanagement.h"
#include "cpumanagementadaptor.h"
#include <QProcess>
#include <QDebug>
@ -29,9 +28,6 @@ CPUManagement::CPUManagement(QObject *parent)
: QObject(parent)
, m_currentMode(PowerSave)
{
new CPUManagementAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/CPUManagement"), this);
// Init cpu items.
QDir dir("/sys/devices/system/cpu");
QStringList dirList = dir.entryList(QDir::Dirs | QDir::NoDot | QDir::NoDotAndDotDot);

@ -54,9 +54,9 @@ constexpr int s_brightnessDimTimeoutFinalDenominator = 4;
DimDisplayAction::DimDisplayAction(QObject *parent)
: Action(parent)
, m_iface("com.cutefish.Settings",
"/Brightness",
"com.cutefish.Brightness", QDBusConnection::sessionBus())
, m_iface("com.cutefish.Services",
"/com/cutefish/Services/Brightness",
"com.cutefish.Services.Brightness", QDBusConnection::sessionBus())
{
QDBusConnection::sessionBus().connect(QString::fromLatin1(s_screenSaverService),
QString::fromLatin1(s_screenSaverPath),

@ -1,6 +1,7 @@
#include "powermanager.h"
#include "../battery/upowermanager.h"
#include "cpumanagement.h"
#include "dimdisplayaction.h"
namespace
@ -30,12 +31,20 @@ int readTimeout(QSettings &settings, const QString &key, const QString &legacyKe
}
PowerManager::PowerManager(UPowerManager *upowerManager, QObject *parent)
PowerManager::PowerManager(UPowerManager *upowerManager,
CPUManagement *cpuManagement,
QObject *parent)
: QObject(parent)
, m_settings(QStringLiteral("cutefishos"), QStringLiteral("power"))
, m_upowerManager(upowerManager)
, m_cpuManagement(cpuManagement)
, m_dimDisplayAction(new DimDisplayAction(this))
{
if (m_cpuManagement) {
connect(m_cpuManagement, &CPUManagement::modeChanged,
this, &PowerManager::modeChanged);
}
loadSettings();
m_onBattery = m_upowerManager && m_upowerManager->onBattery();
@ -55,6 +64,17 @@ PowerManager::PowerManager(UPowerManager *upowerManager, QObject *parent)
m_dimDisplayAction->handleLidClosed();
}
int PowerManager::mode() const
{
return m_cpuManagement ? m_cpuManagement->mode() : -1;
}
void PowerManager::setMode(int mode)
{
if (m_cpuManagement)
m_cpuManagement->setMode(mode);
}
void PowerManager::loadSettings()
{
m_batteryScreenOff = readTimeout(m_settings, QStringLiteral("BatteryScreenOff"),

@ -6,19 +6,29 @@
class DimDisplayAction;
class UPowerManager;
class CPUManagement;
class PowerManager : public QObject
{
Q_OBJECT
Q_PROPERTY(int mode READ mode WRITE setMode NOTIFY modeChanged)
public:
explicit PowerManager(UPowerManager *upowerManager, QObject *parent = nullptr);
explicit PowerManager(UPowerManager *upowerManager,
CPUManagement *cpuManagement,
QObject *parent = nullptr);
int mode() const;
void setMode(int mode);
public slots:
void setBatteryScreenOff(int timeout);
void setACScreenOff(int timeout);
void setDimDisplayTimeout(int timeout);
signals:
void modeChanged();
private slots:
void onBatteryChanged();
void onLidClosedChanged();
@ -30,6 +40,7 @@ private:
QSettings m_settings;
UPowerManager *m_upowerManager;
CPUManagement *m_cpuManagement;
DimDisplayAction *m_dimDisplayAction;
int m_batteryScreenOff = 300;

@ -1,6 +1,6 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="com.cutefish.Theme">
<interface name="com.cutefish.Services.Appearance">
<method name="setDarkMode">
<arg name="darkMode" type="b" direction="in"/>
</method>

@ -18,7 +18,7 @@
*/
#include "thememanager.h"
#include "themeadaptor.h"
#include "appearanceadaptor.h"
#include <QDomDocument>
#include <QTextStream>
@ -61,8 +61,8 @@ ThemeManager::ThemeManager(QObject *parent)
}
// init dbus
new ThemeAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Theme"), this);
new AppearanceAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/com/cutefish/Services/Appearance"), this);
// init value
m_isDarkMode = m_settings->value("DarkMode", false).toBool();

@ -1,6 +1,6 @@
<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
<node>
<interface name="com.cutefish.Touchpad">
<interface name="com.cutefish.Services.Input.Touchpad">
<property name="available" type="b" access="read"/>
<property name="enabled" type="b" access="read"/>
<property name="tapToClick" type="b" access="read"/>

@ -10,7 +10,7 @@ TouchpadManager::TouchpadManager(QObject *parent)
, m_backend(new KWinInputBackend(KWinInputBackend::DeviceType::Touchpad, this))
{
new TouchpadAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Touchpad"), this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/com/cutefish/Services/Input/Touchpad"), this);
connect(m_backend, &KWinInputBackend::devicesChanged, this, [this] {
emit availableChanged();

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save