Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions como/win/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ target_sources(win
FILE_SET HEADERS
FILES
dbus/appmenu.h
dbus/session_manager.h
dbus/virtual_desktop_manager.h
dbus/virtual_desktop_types.h
deco/bridge.h
Expand Down Expand Up @@ -129,6 +130,7 @@ target_sources(win
PRIVATE
cursor_shape.cpp
dbus/appmenu.cpp
dbus/session_manager.cpp
dbus/virtual_desktop_manager.cpp
dbus/virtual_desktop_types.cpp
deco/palette.cpp
Expand Down Expand Up @@ -184,6 +186,11 @@ qt6_add_dbus_interface(win_dbus_src
${KSCREENLOCKER_DBUS_INTERFACES_DIR}/kf6_org.freedesktop.ScreenSaver.xml
screenlocker_interface
)
qt6_add_dbus_adaptor(win_dbus_src
dbus/org.kde.KWin.Session.xml
dbus/session_manager.h
como::win::dbus::session_manager
)

target_sources(win PRIVATE ${win_dbus_src})

Expand Down Expand Up @@ -295,14 +302,6 @@ target_sources(win-x11
x11/net/win_info.cpp
)

qt6_add_dbus_adaptor(win_x11_dbus_src
dbus/org.kde.KWin.Session.xml
x11/session_manager.h
como::win::x11::session_manager
)

target_sources(win-x11 PRIVATE ${win_x11_dbus_src})

add_library(win-x11-backend SHARED)

target_link_libraries(win-x11-backend
Expand Down Expand Up @@ -342,6 +341,7 @@ target_sources(win-wl
wayland/plasma_window.h
wayland/popup_placement.h
wayland/scene.h
wayland/session_manager.h
wayland/setup.h
wayland/space.h
wayland/space_areas.h
Expand Down
4 changes: 3 additions & 1 deletion como/win/dbus/org.kde.KWin.Session.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
<!-- Shutdown kwin at the end of the session -->
<method name="quit">
</method>
<method name="closeWaylandWindows">
<arg type="b" direction="out" />
</method>
</interface>
</node>

20 changes: 20 additions & 0 deletions como/win/dbus/session_manager.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/*
SPDX-FileCopyrightText: 2024 Roman Gilg <[email protected]>

SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "session_manager.h"

// Include first to not clash with later X definitions in other includes.
#include "sessionadaptor.h"

namespace como::win::dbus
{

session_manager::session_manager()
{
new SessionAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Session"), this);
}

}
50 changes: 50 additions & 0 deletions como/win/dbus/session_manager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/*
SPDX-FileCopyrightText: 2024 Roman Gilg <[email protected]>

SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once

#include <como/win/types.h>
#include <como_export.h>

#include <QObject>

namespace como::win::dbus
{

class COMO_EXPORT session_manager : public QObject
{
Q_OBJECT
public:
session_manager();

public Q_SLOTS:
virtual void setState(uint /*state*/)
{
}
virtual void loadSession(QString const& /*name*/)
{
}
virtual void aboutToSaveSession(QString const& /*name*/)
{
}
virtual void finishSaveSession(QString const& /*name*/)
{
}
virtual bool closeWaylandWindows()
{
return true;
}
virtual void quit()
{
}

Q_SIGNALS:
void stateChanged(session_state prev, session_state next);
void loadSessionRequested(QString const& name);
void prepareSessionSaveRequested(QString const& name);
void finishSessionSaveRequested(QString const& name);
};

}
21 changes: 21 additions & 0 deletions como/win/wayland/session_manager.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/*
SPDX-FileCopyrightText: 2024 Roman Gilg <[email protected]>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once

#include <como/win/dbus/session_manager.h>

namespace como::win::wayland
{

class session_manager : public dbus::session_manager
{
public:
bool closeWaylandWindows() override
{
return true;
}
};

}
5 changes: 4 additions & 1 deletion como/win/wayland/space.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@

#include "subsurface.h"
#include "surface.h"
#include <como/win/wayland/space_setup.h>

#include <como/debug/console/wayland/wayland_console.h>
#include <como/win/input.h>
Expand All @@ -17,7 +16,9 @@
#include <como/win/stacking_order.h>
#include <como/win/stacking_state.h>
#include <como/win/wayland/internal_window.h>
#include <como/win/wayland/space_setup.h>
#include <como/win/wayland/subspace_manager.h>
#include <win/wayland/session_manager.h>

#include <memory>

Expand Down Expand Up @@ -46,6 +47,7 @@ class space
{
space_setup_init(*this, render, input);
init_space(*this);
session_manager = std::make_unique<wayland::session_manager>();
}

virtual ~space()
Expand Down Expand Up @@ -130,6 +132,7 @@ class space
std::vector<win::strut_rects> oldrestrictedmovearea;

std::unique_ptr<wayland::subspace_manager> subspace_manager;
std::unique_ptr<wayland::session_manager> session_manager;

QTimer* m_quickTileCombineTimer{nullptr};
win::quicktiles m_lastTilingMode{win::quicktiles::none};
Expand Down
13 changes: 1 addition & 12 deletions como/win/x11/session_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@
*/
#include "session_manager.h"

// Include first to not clash with later X definitions in other includes.
#include "sessionadaptor.h"

#include <como/win/stacking_order.h>
#include <como/win/x11/geo.h>
#include <como/win/x11/window.h>
Expand All @@ -23,15 +20,7 @@
namespace como::win::x11
{

session_manager::session_manager()
{
new SessionAdaptor(this);
QDBusConnection::sessionBus().registerObject(QStringLiteral("/Session"), this);
}

session_manager::~session_manager()
{
}
session_manager::~session_manager() = default;

session_state session_manager::state() const
{
Expand Down
31 changes: 10 additions & 21 deletions como/win/x11/session_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,28 @@
*/
#pragma once

#include "types.h"
#include <como/win/dbus/session_manager.h>
#include <como/win/types.h>
#include <como_export.h>

#include "como_export.h"

#include <QObject>
#include <QRect>

namespace como::win::x11
{

class COMO_EXPORT session_manager : public QObject
class COMO_EXPORT session_manager : public dbus::session_manager
{
Q_OBJECT
public:
session_manager();
~session_manager() override;

session_state state() const;

Q_SIGNALS:
void stateChanged(session_state prev, session_state next);

void loadSessionRequested(const QString& name);
void prepareSessionSaveRequested(const QString& name);
void finishSessionSaveRequested(const QString& name);

public Q_SLOTS:
// DBus API
void setState(uint state);
void loadSession(const QString& name);
void aboutToSaveSession(const QString& name);
void finishSaveSession(const QString& name);
void quit();
public:
void setState(uint state) override;
void loadSession(const QString& name) override;
void aboutToSaveSession(const QString& name) override;
void finishSaveSession(const QString& name) override;
void quit() override;

private:
void setState(session_state state);
Expand Down