30 lines
970 B
TypeScript
30 lines
970 B
TypeScript
import { hook } from "astal/gtk4";
|
|
import { bind } from "astal";
|
|
|
|
import Tray from "gi://AstalTray";
|
|
|
|
export default function TrayView() {
|
|
const tray = Tray.get_default();
|
|
const items = bind(tray, "items");
|
|
|
|
return <box spacing={items.as(items => items.length)} cssClasses={["tray"]}>
|
|
{items.as(items => items.map(item => {
|
|
const button = <menubutton
|
|
cssClasses={["item"]}
|
|
tooltipMarkup={bind(item, "tooltipMarkup")}
|
|
menuModel={bind(item, "menuModel")}
|
|
hasFrame={false}
|
|
primary
|
|
setup={self => self.insert_action_group("dbusmenu", item.actionGroup)}
|
|
>
|
|
<image gicon={item.gicon} />
|
|
</menubutton>;
|
|
|
|
hook(button, item, "notify::action-group", self => {
|
|
self.insert_action_group("dbusmenu", item.actionGroup);
|
|
});
|
|
|
|
return button;
|
|
}))}
|
|
</box>
|
|
} |