melawy-plasma-plasmoid-pres.../com.github.zren.presentwindows/contents/ui/lib/DesktopEffectToggle.qml

68 lines
1.8 KiB
QML

import QtQuick 2.0
import QtQuick.Controls 1.0
import QtQuick.Layouts 1.0
QtObject {
id: desktopEffectToggle
property string effectId
property bool loaded: false
property bool effectEnabled: false
function toggle() {
executable.toggleState()
}
property ExecUtil executable: ExecUtil {
id: executable
property string readStateCommand: 'qdbus org.kde.KWin /Effects isEffectLoaded ' + effectId
property string toggleStateCommand: 'qdbus org.kde.KWin /Effects toggleEffect ' + effectId
// For some reason, the toggleEffect qdbus function does not save to kwinrc.
// So we need to manually write the new state to it, so that the next time
// kwin is launched (next reboot), the desktop effect is still enabled/disabled.
property string saveStateCommand: 'kwriteconfig5 --file ~/.config/kwinrc --group Plugins --key ' + effectId + 'Enabled' // saveStateCommand + ' ' + value
property bool saveOnRead: false
function readState() {
executable.exec(readStateCommand)
}
function toggleState() {
executable.exec(toggleStateCommand)
}
function saveState() {
var isCurrentlyEnabled = effectEnabled
executable.exec(saveStateCommand + ' ' + (isCurrentlyEnabled ? 'true' : 'false'))
}
Component.onCompleted: {
readState()
}
onExited: {
if (command == readStateCommand) {
var value = executable.trimOutput(stdout)
value = value === 'true' // cast to boolean
effectEnabled = value
loaded = true
if (saveOnRead) {
saveOnRead = false
saveState()
}
} else if (command == toggleStateCommand) {
saveOnRead = true
readState()
} else if (startsWith(command, saveStateCommand)) {
}
}
function startsWith(a, b) {
if (b.length <= a.length) {
return a.substr(0, b.length) == b
} else {
return false
}
}
}
}