ade861d6de
At the moment, the session code is far from being extensible. If we decide to add support for libseatd, it will be a challenging task with the current design of session management code. The goal of this refactoring is to fix that. Another motivation behind this change is to prepare session related code for upstreaming to kwayland-server where it belongs.
103 lines
2.5 KiB
C++
103 lines
2.5 KiB
C++
/*
|
|
SPDX-FileCopyrightText: 2020 Vlad Zahorodnii <vlad.zahorodnii@kde.org>
|
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <kwinglobals.h>
|
|
|
|
#include <QObject>
|
|
#include <QString>
|
|
|
|
namespace KWin
|
|
{
|
|
|
|
/**
|
|
* The Session class represents the session controlled by the compositor.
|
|
*
|
|
* The Session class provides information about the virtual terminal where the compositor
|
|
* is running and a way to open files that require special privileges, e.g. DRM devices or
|
|
* input devices.
|
|
*/
|
|
class KWIN_EXPORT Session : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
/**
|
|
* This enum type is used to specify the type of the session.
|
|
*/
|
|
enum class Type {
|
|
Direct,
|
|
Noop,
|
|
ConsoleKit,
|
|
Logind,
|
|
};
|
|
|
|
/**
|
|
* This enum type is used to specify optional capabilities of the session.
|
|
*/
|
|
enum class Capability : uint {
|
|
SwitchTerminal = 0x1,
|
|
};
|
|
Q_DECLARE_FLAGS(Capabilities, Capability)
|
|
|
|
static Session *create(QObject *parent = nullptr);
|
|
static Session *create(Type type, QObject *parent = nullptr);
|
|
|
|
/**
|
|
* Returns @c true if the session is active; otherwise returns @c false.
|
|
*/
|
|
virtual bool isActive() const = 0;
|
|
|
|
/**
|
|
* Returns the capabilities supported by the session.
|
|
*/
|
|
virtual Capabilities capabilities() const = 0;
|
|
|
|
/**
|
|
* Returns the seat name for the Session.
|
|
*/
|
|
virtual QString seat() const = 0;
|
|
|
|
/**
|
|
* Returns the terminal controlled by the Session.
|
|
*/
|
|
virtual uint terminal() const = 0;
|
|
|
|
/**
|
|
* Opens the file with the specified @a fileName. Returns the file descriptor
|
|
* of the file or @a -1 if an error has occurred.
|
|
*/
|
|
virtual int openRestricted(const QString &fileName) = 0;
|
|
|
|
/**
|
|
* Closes a file that has been opened using the openRestricted() function.
|
|
*/
|
|
virtual void closeRestricted(int fileDescriptor) = 0;
|
|
|
|
/**
|
|
* Switches to the specified virtual @a terminal. This function does nothing if the
|
|
* Capability::SwitchTerminal capability is unsupported.
|
|
*/
|
|
virtual void switchTo(uint terminal) = 0;
|
|
|
|
Q_SIGNALS:
|
|
/**
|
|
* This signal is emitted when the session is resuming from suspend.
|
|
*/
|
|
void awoke();
|
|
/**
|
|
* This signal is emitted when the active state of the session has changed.
|
|
*/
|
|
void activeChanged(bool active);
|
|
|
|
protected:
|
|
explicit Session(QObject *parent = nullptr);
|
|
};
|
|
|
|
} // namespace KWin
|
|
|
|
Q_DECLARE_OPERATORS_FOR_FLAGS(KWin::Session::Capabilities)
|