summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-01-21 23:26:47 +1100
committer2 * r + 2 * t <61896496+soramanew@users.noreply.github.com>2025-01-21 23:26:47 +1100
commit9c3c59fb33c6f3d325bda7a9ce360c135410b3dd (patch)
tree31d11db53f8dee434f295058bebd401e729e8be0
parentbetter menu styles (diff)
downloadcaelestia-shell-9c3c59fb33c6f3d325bda7a9ce360c135410b3dd.tar.gz
caelestia-shell-9c3c59fb33c6f3d325bda7a9ce360c135410b3dd.tar.bz2
caelestia-shell-9c3c59fb33c6f3d325bda7a9ce360c135410b3dd.zip
session: logout grab focus on open
-rw-r--r--src/modules/session.tsx17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/modules/session.tsx b/src/modules/session.tsx
index 7d04870..1c58d48 100644
--- a/src/modules/session.tsx
+++ b/src/modules/session.tsx
@@ -1,10 +1,19 @@
import { execAsync } from "astal";
-import { Astal, Gtk } from "astal/gtk3";
+import { App, Astal, Gtk } from "astal/gtk3";
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">
- <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} />
</button>
<label className="label" label={label} />
@@ -22,7 +31,7 @@ export default () => (
>
<box vertical halign={Gtk.Align.CENTER} valign={Gtk.Align.CENTER} className="inner">
<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" />
</box>
<box>