TLDR:KDE LockScreenから一時停止する方法?
私はKDEのデフォルトのロック画面を使用していますが、これはある程度設定できます しかし、ロック画面からPCを一時停止する方法が見つからなかったため、パスワードを入力し、必要になるたびに一時停止する必要があり、非常に不便でした。
現在、KDEプラズマロック画面ファイル(特にLockScreenUi.qml)を変更して、一時停止ボタンを追加しています。しかし、おそらくこれを行うためのより簡単な方法ですか?
また、はい、私は redditの投稿 とkdeフォーラムのいくつかの投稿を解決策なしで見ました。
私の設定:
uname -a
Linux neko 4.15.14-1-Arch #1 SMP PREEMPT Wed Mar 28 17:34:29 UTC 2018 x86_64 GNU/Linux
kded5 --version
kded5 5.45.0
plasmashell --version
plasmashell 5.12.5
パッチ自体は、基本的にデフォルトアイコン付きの一時停止ボタンを追加し、PowerDevil KDEサービスを使用して一時停止します(この使用法のログアウトファイルが見つかりました)
使用ATあなた自身のリスク:
--- /usr/share/plasma/look-and-feel/org.kde.breeze.desktop/contents/lockscreen/LockScreenUi.qml 2018-05-01 16:03:40.000000000 +0300
+++ backups/kde-plasma-lockscreen/LockScreenUi.qml 2018-05-05 19:56:59.764353585 +0300
@@ -31,6 +31,18 @@
colorGroup: PlasmaCore.Theme.ComplementaryColorGroup
+ function performOperation(what) {
+ var service = dataEngine.serviceForSource("PowerDevil");
+ var operation = service.operationDescription(what);
+ service.startOperationCall(operation);
+ }
+
+ PlasmaCore.DataSource {
+ id: dataEngine
+ engine: "powermanagement"
+ connectedSources: ["PowerDevil"]
+ }
+
Connections {
target: authenticator
onFailed: {
@@ -174,6 +186,11 @@
onClicked: mainStack.Push(switchSessionPage)
// the current session isn't listed in the model, hence a check for greater than zero, not one
visible: (sessionsModel.count > 0 || sessionsModel.canStartNewSession) && sessionsModel.canSwitchUser
+ },
+ ActionButton {
+ text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Suspend")
+ iconSource: "system-suspend"
+ onClicked: performOperation("suspendToRam")
}
]
EDIT1:
KDEバグトラッカー に関する機能のレポートはすでにあります(リンクをありがとう Lekensteyn )
パッチのおかげで、それは魅力のように機能します!
物理的な電源キーを処理する場合も同じです。
Keys.onPressed: {
+ if (event.key == 16777399) performOperation("suspendToRam")
kded5 5.67.0
およびplasmashell 5.17.5
(Gentoo)で動作することが確認されました。
どうもありがとうございました!うまく機能します。
私のラップトップにもスリープキーがあるので、もう1行追加しました。
Keys.onPressed: {
+ if (event.key == 16908292) performOperation("suspendToRam")
uiVisible = true;
event.accepted = false;