Merge pull request 'lid behavior watcher to lock session' (#115) from lid-switch-behavior into main
Reviewed-on: #115
This commit was merged in pull request #115.
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
BasedOnStyle: LLVM
|
||||||
|
AccessModifierOffset: 0
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignOperands: Align
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: true
|
||||||
|
AllowShortFunctionsOnASingleLine: Inline
|
||||||
|
AllowShortIfStatementsOnASingleLine: Never
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: Yes
|
||||||
|
BinPackArguments: false
|
||||||
|
BinPackParameters: false
|
||||||
|
BreakBeforeBraces: Attach
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializers: BeforeComma
|
||||||
|
ColumnLimit: 80
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: true
|
||||||
|
ConstructorInitializerIndentWidth: 4
|
||||||
|
ContinuationIndentWidth: 4
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
FixNamespaceComments: true
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentWidth: 4
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: false
|
||||||
|
Language: Cpp
|
||||||
|
MaxEmptyLinesToKeep: 2
|
||||||
|
NamespaceIndentation: None
|
||||||
|
PenaltyBreakAssignment: 10
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 100
|
||||||
|
PenaltyBreakComment: 300
|
||||||
|
PenaltyBreakFirstLessLess: 120
|
||||||
|
PenaltyBreakString: 1000
|
||||||
|
PenaltyExcessCharacter: 100
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 200
|
||||||
|
PointerAlignment: Left
|
||||||
|
ReflowComments: false
|
||||||
|
SortIncludes: false
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceAfterTemplateKeyword: true
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeCpp11BracedList: false
|
||||||
|
SpaceBeforeCtorInitializerColon: true
|
||||||
|
SpaceBeforeInheritanceColon: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpaceBeforeRangeBasedForLoopColon: true
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInContainerLiterals: false
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
Standard: c++20
|
||||||
|
TabWidth: 4
|
||||||
|
UseTab: Always
|
||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
Checks: >
|
||||||
|
-*,
|
||||||
|
bugprone-*,
|
||||||
|
clang-analyzer-*,
|
||||||
|
modernize-*,
|
||||||
|
-modernize-use-trailing-return-type,
|
||||||
|
performance-*,
|
||||||
|
readability-braces-around-statements,
|
||||||
|
readability-else-after-return,
|
||||||
|
readability-identifier-naming,
|
||||||
|
readability-redundant-*,
|
||||||
|
readability-simplify-*,
|
||||||
|
CheckOptions:
|
||||||
|
readability-identifier-naming.ClassCase: CamelCase
|
||||||
|
readability-identifier-naming.EnumCase: CamelCase
|
||||||
|
readability-identifier-naming.FunctionCase: camelBack
|
||||||
|
readability-identifier-naming.MemberCase: camelBack
|
||||||
|
readability-identifier-naming.MemberPrefix: m_
|
||||||
|
readability-identifier-naming.MethodCase: camelBack
|
||||||
|
readability-identifier-naming.NamespaceCase: CamelCase
|
||||||
|
readability-identifier-naming.ParameterCase: camelBack
|
||||||
|
readability-identifier-naming.PrivateMemberPrefix: m_
|
||||||
|
readability-identifier-naming.StaticConstantCase: UPPER_CASE
|
||||||
|
readability-identifier-naming.StaticConstantPrefix: k
|
||||||
|
readability-identifier-naming.VariableCase: camelBack
|
||||||
|
WarningsAsErrors: "*"
|
||||||
|
HeaderFilterRegex: ".*"
|
||||||
|
FormatStyle: file
|
||||||
|
|
||||||
|
...
|
||||||
@@ -25,6 +25,7 @@ add_compile_options(
|
|||||||
|
|
||||||
if("plugin" IN_LIST ENABLE_MODULES)
|
if("plugin" IN_LIST ENABLE_MODULES)
|
||||||
add_subdirectory(Plugins)
|
add_subdirectory(Plugins)
|
||||||
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if("shell" IN_LIST ENABLE_MODULES)
|
if("shell" IN_LIST ENABLE_MODULES)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ pragma ComponentBehavior: Bound
|
|||||||
|
|
||||||
import Quickshell
|
import Quickshell
|
||||||
import Quickshell.Wayland
|
import Quickshell.Wayland
|
||||||
|
import ZShell.Internal
|
||||||
import qs.Config
|
import qs.Config
|
||||||
import qs.Helpers
|
import qs.Helpers
|
||||||
|
|
||||||
@@ -29,6 +30,10 @@ Scope {
|
|||||||
Quickshell.execDetached(action);
|
Quickshell.execDetached(action);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LidWatcher {
|
||||||
|
onAboutToSleep: root.lock.lock.locked = true
|
||||||
|
}
|
||||||
|
|
||||||
Variants {
|
Variants {
|
||||||
model: Config.general.idle.timeouts
|
model: Config.general.idle.timeouts
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import qs.Modules.Settings.Categories.Lockscreen
|
import qs.Modules.Settings.Categories.Lockscreen
|
||||||
import qs.Modules.Settings.Controls
|
import qs.Modules.Settings.Controls
|
||||||
|
import qs.Helpers
|
||||||
import qs.Config
|
import qs.Config
|
||||||
|
|
||||||
SettingsPage {
|
SettingsPage {
|
||||||
|
|||||||
@@ -50,6 +50,7 @@ qml_module(ZShell
|
|||||||
Qt::Quick
|
Qt::Quick
|
||||||
Qt::Concurrent
|
Qt::Concurrent
|
||||||
Qt::Sql
|
Qt::Sql
|
||||||
|
Qt::DBus
|
||||||
PkgConfig::Qalculate
|
PkgConfig::Qalculate
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ qml_module(ZShell-internal
|
|||||||
sparklineitem.hpp sparklineitem.cpp
|
sparklineitem.hpp sparklineitem.cpp
|
||||||
arcgauge.hpp arcgauge.cpp
|
arcgauge.hpp arcgauge.cpp
|
||||||
wallpaperimage.hpp wallpaperimage.cpp
|
wallpaperimage.hpp wallpaperimage.cpp
|
||||||
|
lidwatcher.hpp lidwatcher.cpp
|
||||||
LIBRARIES
|
LIBRARIES
|
||||||
Qt::Gui
|
Qt::Gui
|
||||||
Qt::Quick
|
Qt::Quick
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
#include "lidwatcher.hpp"
|
||||||
|
|
||||||
|
#include <QtDBus/qdbusconnection.h>
|
||||||
|
#include <QtDBus/qdbuserror.h>
|
||||||
|
#include <QtDBus/qdbusinterface.h>
|
||||||
|
#include <QtDBus/qdbusreply.h>
|
||||||
|
#include <qloggingcategory.h>
|
||||||
|
|
||||||
|
Q_LOGGING_CATEGORY(lcLidWatcher, "caelestia.internal.logindmanager", QtInfoMsg)
|
||||||
|
|
||||||
|
namespace ZShell::internal {
|
||||||
|
|
||||||
|
LidWatcher::LidWatcher(QObject* parent) : QObject(parent) {
|
||||||
|
auto bus = QDBusConnection::systemBus();
|
||||||
|
if (!bus.isConnected()) {
|
||||||
|
qCWarning(lcLidWatcher)
|
||||||
|
<< "Failed to connect to system bus:" << bus.lastError().message();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ok = bus.connect("org.freedesktop.login1",
|
||||||
|
"/org/freedesktop/login1",
|
||||||
|
"org.freedesktop.login1.Manager",
|
||||||
|
"PrepareForSleep",
|
||||||
|
this,
|
||||||
|
SLOT(handlePrepareForSleep(bool)));
|
||||||
|
|
||||||
|
if (!ok) {
|
||||||
|
qCWarning(lcLidWatcher)
|
||||||
|
<< "Failed to connect to PrepareForSleep signal:"
|
||||||
|
<< bus.lastError().message();
|
||||||
|
}
|
||||||
|
|
||||||
|
QDBusInterface login1("org.freedesktop.login1",
|
||||||
|
"/org/freedesktop/login1",
|
||||||
|
"org.freedesktop.login1.Manager",
|
||||||
|
bus);
|
||||||
|
const QDBusReply<QDBusObjectPath> reply = login1.call("GetSession", "auto");
|
||||||
|
if (!reply.isValid()) {
|
||||||
|
qCWarning(lcLidWatcher) << "Failed to get session path";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const auto sessionPath = reply.value().path();
|
||||||
|
|
||||||
|
ok = bus.connect("org.freedesktop.login1",
|
||||||
|
sessionPath,
|
||||||
|
"org.freedesktop.login1.Session",
|
||||||
|
"Lock",
|
||||||
|
this,
|
||||||
|
SLOT(handleLockRequested()));
|
||||||
|
|
||||||
|
if (!ok) {
|
||||||
|
qCWarning(lcLidWatcher)
|
||||||
|
<< "Failed to connect to Lock signal:" << bus.lastError().message();
|
||||||
|
}
|
||||||
|
|
||||||
|
ok = bus.connect("org.freedesktop.login1",
|
||||||
|
sessionPath,
|
||||||
|
"org.freedesktop.login1.Session",
|
||||||
|
"Unlock",
|
||||||
|
this,
|
||||||
|
SLOT(handleUnlockRequested()));
|
||||||
|
|
||||||
|
if (!ok) {
|
||||||
|
qCWarning(lcLidWatcher) << "Failed to connect to Unlock signal:"
|
||||||
|
<< bus.lastError().message();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LidWatcher::handlePrepareForSleep(bool sleep) {
|
||||||
|
if (sleep) {
|
||||||
|
emit aboutToSleep();
|
||||||
|
} else {
|
||||||
|
emit resumed();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LidWatcher::handleLockRequested() {
|
||||||
|
emit lockRequested();
|
||||||
|
}
|
||||||
|
|
||||||
|
void LidWatcher::handleUnlockRequested() {
|
||||||
|
emit unlockRequested();
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace ZShell::internal
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <qobject.h>
|
||||||
|
#include <qqmlintegration.h>
|
||||||
|
|
||||||
|
namespace ZShell::internal {
|
||||||
|
|
||||||
|
class LidWatcher : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
QML_ELEMENT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit LidWatcher(QObject* parent = nullptr);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void aboutToSleep();
|
||||||
|
void resumed();
|
||||||
|
void lockRequested();
|
||||||
|
void unlockRequested();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void handlePrepareForSleep(bool sleep);
|
||||||
|
void handleLockRequested();
|
||||||
|
void handleUnlockRequested();
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace ZShell::internal
|
||||||
Reference in New Issue
Block a user