forked from quickshell/quickshell
x11: add XPanelWindow
This commit is contained in:
parent
908ba3eef5
commit
73cfeba61b
15 changed files with 804 additions and 5 deletions
|
@ -1,5 +1,7 @@
|
|||
#include <qguiapplication.h>
|
||||
#include <qlogging.h>
|
||||
#include <qqml.h>
|
||||
#include <qtenvironmentvariables.h>
|
||||
|
||||
#include "../core/plugin.hpp"
|
||||
|
||||
|
@ -10,7 +12,19 @@
|
|||
namespace {
|
||||
|
||||
class WaylandPlugin: public QuickshellPlugin {
|
||||
bool applies() override { return QGuiApplication::platformName() == "wayland"; }
|
||||
bool applies() override {
|
||||
auto isWayland = QGuiApplication::platformName() == "wayland";
|
||||
|
||||
if (!isWayland && !qEnvironmentVariable("WAYLAND_DISPLAY").isEmpty()) {
|
||||
qWarning() << "--- WARNING ---";
|
||||
qWarning() << "WAYLAND_DISPLAY is present but QT_QPA_PLATFORM is"
|
||||
<< QGuiApplication::platformName();
|
||||
qWarning() << "If you are actually running wayland, set QT_QPA_PLATFORM to \"wayland\" or "
|
||||
"most functionality will be broken.";
|
||||
}
|
||||
|
||||
return isWayland;
|
||||
}
|
||||
|
||||
void registerTypes() override {
|
||||
#ifdef QS_WAYLAND_WLR_LAYERSHELL
|
||||
|
|
|
@ -114,6 +114,18 @@ void WlrLayershell::setAnchors(Anchors anchors) {
|
|||
if (!anchors.verticalConstraint()) this->ProxyWindowBase::setHeight(this->mHeight);
|
||||
}
|
||||
|
||||
bool WlrLayershell::aboveWindows() const { return this->layer() > WlrLayer::Bottom; }
|
||||
|
||||
void WlrLayershell::setAboveWindows(bool aboveWindows) {
|
||||
this->setLayer(aboveWindows ? WlrLayer::Top : WlrLayer::Bottom);
|
||||
}
|
||||
|
||||
bool WlrLayershell::focusable() const { return this->keyboardFocus() != WlrKeyboardFocus::None; }
|
||||
|
||||
void WlrLayershell::setFocusable(bool focusable) {
|
||||
this->setKeyboardFocus(focusable ? WlrKeyboardFocus::OnDemand : WlrKeyboardFocus::None);
|
||||
}
|
||||
|
||||
QString WlrLayershell::ns() const { return this->ext->ns(); }
|
||||
|
||||
void WlrLayershell::setNamespace(QString ns) {
|
||||
|
@ -190,6 +202,8 @@ WaylandPanelInterface::WaylandPanelInterface(QObject* parent)
|
|||
QObject::connect(this->layer, &WlrLayershell::marginsChanged, this, &WaylandPanelInterface::marginsChanged);
|
||||
QObject::connect(this->layer, &WlrLayershell::exclusiveZoneChanged, this, &WaylandPanelInterface::exclusiveZoneChanged);
|
||||
QObject::connect(this->layer, &WlrLayershell::exclusionModeChanged, this, &WaylandPanelInterface::exclusionModeChanged);
|
||||
QObject::connect(this->layer, &WlrLayershell::layerChanged, this, &WaylandPanelInterface::aboveWindowsChanged);
|
||||
QObject::connect(this->layer, &WlrLayershell::keyboardFocusChanged, this, &WaylandPanelInterface::focusableChanged);
|
||||
// clang-format on
|
||||
}
|
||||
|
||||
|
@ -224,6 +238,8 @@ proxyPair(Anchors, anchors, setAnchors);
|
|||
proxyPair(Margins, margins, setMargins);
|
||||
proxyPair(qint32, exclusiveZone, setExclusiveZone);
|
||||
proxyPair(ExclusionMode::Enum, exclusionMode, setExclusionMode);
|
||||
proxyPair(bool, focusable, setFocusable);
|
||||
proxyPair(bool, aboveWindows, setAboveWindows);
|
||||
|
||||
#undef proxyPair
|
||||
// NOLINTEND
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include <qtypes.h>
|
||||
|
||||
#include "../core/doc.hpp"
|
||||
#include "../core/panelinterface.hpp"
|
||||
#include "../core/proxywindow.hpp"
|
||||
#include "wlr_layershell/window.hpp"
|
||||
|
||||
|
@ -54,6 +55,8 @@ class WlrLayershell: public ProxyWindowBase {
|
|||
QSDOC_HIDE Q_PROPERTY(qint32 exclusiveZone READ exclusiveZone WRITE setExclusiveZone NOTIFY exclusiveZoneChanged);
|
||||
QSDOC_HIDE Q_PROPERTY(ExclusionMode::Enum exclusionMode READ exclusionMode WRITE setExclusionMode NOTIFY exclusionModeChanged);
|
||||
QSDOC_HIDE Q_PROPERTY(Margins margins READ margins WRITE setMargins NOTIFY marginsChanged);
|
||||
QSDOC_HIDE Q_PROPERTY(bool aboveWindows READ aboveWindows WRITE setAboveWindows NOTIFY layerChanged);
|
||||
QSDOC_HIDE Q_PROPERTY(bool focusable READ focusable WRITE setFocusable NOTIFY keyboardFocusChanged);
|
||||
QML_ATTACHED(WlrLayershell);
|
||||
QML_ELEMENT;
|
||||
// clang-format on
|
||||
|
@ -92,6 +95,12 @@ public:
|
|||
[[nodiscard]] Margins margins() const;
|
||||
void setMargins(Margins margins); // NOLINT
|
||||
|
||||
[[nodiscard]] bool aboveWindows() const;
|
||||
void setAboveWindows(bool aboveWindows);
|
||||
|
||||
[[nodiscard]] bool focusable() const;
|
||||
void setFocusable(bool focusable);
|
||||
|
||||
static WlrLayershell* qmlAttachedProperties(QObject* object);
|
||||
|
||||
signals:
|
||||
|
@ -161,6 +170,12 @@ public:
|
|||
|
||||
[[nodiscard]] ExclusionMode::Enum exclusionMode() const override;
|
||||
void setExclusionMode(ExclusionMode::Enum exclusionMode) override;
|
||||
|
||||
[[nodiscard]] bool aboveWindows() const override;
|
||||
void setAboveWindows(bool aboveWindows) override;
|
||||
|
||||
[[nodiscard]] bool focusable() const override;
|
||||
void setFocusable(bool focusable) override;
|
||||
// NOLINTEND
|
||||
|
||||
private:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue