class Power { constructor() { this._shutdown = document.querySelector("#shutdown-button"); this._restart = document.querySelector("#restart-button"); this._hibernate = document.querySelector("#hibernate-button"); this._suspend = document.querySelector("#suspend-button"); 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"); wait(500).then(() => { this._cover.focus(); }); } 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"); }); this._cover.addEventListener("keydown", () => { this._cover.classList.add("hide"); }); } _setButtons() { this._setShutdown(); this._setRestart(); this._setHibernate(); this._setSuspend(); this._setCover(); } _init() { this._setButtons(); } }