session: logout grab focus on open

This commit is contained in:
2 * r + 2 * t 2025-01-21 23:26:47 +11:00
parent 76ded7bb6d
commit 9c3c59fb33

View file

@ -1,10 +1,19 @@
import { execAsync } from "astal"; import { execAsync } from "astal";
import { Astal, Gtk } from "astal/gtk3"; import { App, Astal, Gtk } from "astal/gtk3";
import PopupWindow from "../widgets/popupwindow"; import PopupWindow from "../widgets/popupwindow";
const Item = ({ icon, label, cmd }: { icon: string; label: string; cmd: string }) => ( const Item = ({ icon, label, cmd, isDefault }: { icon: string; label: string; cmd: string; isDefault?: boolean }) => (
<box vertical className="item"> <box vertical className="item">
<button cursor="pointer" onClicked={() => execAsync(cmd).catch(console.error)}> <button
cursor="pointer"
onClicked={() => execAsync(cmd).catch(console.error)}
setup={self =>
isDefault &&
self.hook(App, "window-toggled", (_, window) => {
if (window.name === "session" && window.visible) self.grab_focus();
})
}
>
<label className="icon" label={icon} /> <label className="icon" label={icon} />
</button> </button>
<label className="label" label={label} /> <label className="label" label={label} />
@ -22,7 +31,7 @@ export default () => (
> >
<box vertical halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER} className="inner"> <box vertical halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER} className="inner">
<box> <box>
<Item icon="logout" label="Logout" cmd="uwsm stop" /> <Item icon="logout" label="Logout" cmd="uwsm stop" isDefault />
<Item icon="cached" label="Reboot" cmd="systemctl reboot" /> <Item icon="cached" label="Reboot" cmd="systemctl reboot" />
</box> </box>
<box> <box>