68 lines
1.8 KiB
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
|
|
}
|
|
}
|
|
}
|
|
}
|