You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

83 lines
2.0 KiB

class Power {
constructor() {
this._shutdown = document.querySelector("#shutdown-btn")
this._restart = document.querySelector("#restart-btn")
this._hibernate = document.querySelector("#hibernate-btn")
this._suspend = document.querySelector("#suspend-btn")
this._cover = document.querySelector("#cover")
this._covermsg = document.querySelector("#cover > #message")
this._init()
}
_show_message(text) {
this._covermsg.innerHTML = text
this._cover.classList.remove("hide")
}
async _do_shutdown() {
this._show_message("Shutting down")
await wait(1000)
lightdm.shutdown()
}
async _do_restart() {
this._show_message("Restarting")
await wait(1000)
lightdm.restart()
}
async _do_hibernate() {
this._show_message("Hibernating")
await wait(1000)
lightdm.hibernate()
}
async _do_suspend() {
this._show_message("Suspending")
await wait(1000)
lightdm.suspend()
}
_setShutdown() {
if (!lightdm.can_shutdown) return
this._shutdown.addEventListener("click", () => {
this._do_shutdown()
})
this._shutdown.classList.remove("hide")
}
_setRestart() {
if (!lightdm.can_restart) return
this._restart.addEventListener("click", () => {
this._do_restart()
})
this._restart.classList.remove("hide")
}
_setHibernate() {
if (!lightdm.can_hibernate) return
this._hibernate.addEventListener("click", () => {
this._do_hibernate()
})
this._hibernate.classList.remove("hide")
}
_setSuspend() {
if (!lightdm.can_suspend) return
this._suspend.addEventListener("click", () => {
this._do_suspend()
})
this._suspend.classList.remove("hide")
}
_setCover() {
this._cover.addEventListener("click", () => {
this._cover.classList.add("hide")
})
}
_setButtons() {
this._setShutdown()
this._setRestart()
this._setHibernate()
this._setSuspend()
this._setCover()
}
_init() {
this._setButtons()
}
}