mirror of
https://github.com/zephrynis/nix-flake.git
synced 2026-02-19 04:21:55 +00:00
- Add complete colorshell v2.0.3 configuration to home/ags-config/ - Disable runner plugin and NightLight tile (incompatible with NixOS) - Customize SCSS with full opacity (no transparency) - Add dark pale blue color scheme in home/pywal-colors/ - Configure Papirus-Dark icon theme via home-manager - Make ~/.config/ags/ immutable and managed by Nix store - Auto-deploy pywal colors to ~/.cache/wal/colors.json All AGS configuration is now reproducible and version controlled.
61 lines
2.7 KiB
TypeScript
61 lines
2.7 KiB
TypeScript
import { createBinding, createComputed, For, With } from "ags";
|
|
import { Gdk, Gtk } from "ags/gtk4";
|
|
import { variableToBoolean } from "../../../modules/utils";
|
|
|
|
import GObject from "gi://GObject?version=2.0";
|
|
import AstalTray from "gi://AstalTray"
|
|
import Gio from "gi://Gio?version=2.0";
|
|
|
|
|
|
const astalTray = AstalTray.get_default();
|
|
|
|
export const Tray = () => {
|
|
const items = createBinding(astalTray, "items").as(items => items.filter(item => item?.gicon));
|
|
|
|
return <Gtk.Box class={"tray"} visible={variableToBoolean(items)} spacing={10}>
|
|
<For each={items}>
|
|
{(item: AstalTray.TrayItem) => <Gtk.Box class={"item"}>
|
|
<With value={createComputed([
|
|
createBinding(item, "actionGroup"),
|
|
createBinding(item, "menuModel")
|
|
])}>
|
|
{([actionGroup, menuModel]: [Gio.ActionGroup, Gio.MenuModel]) => {
|
|
const popover = Gtk.PopoverMenu.new_from_model(menuModel);
|
|
popover.insert_action_group("dbusmenu", actionGroup);
|
|
popover.hasArrow = false;
|
|
|
|
return <Gtk.Box class={"item"} tooltipMarkup={
|
|
createBinding(item, "tooltipMarkup")
|
|
} tooltipText={
|
|
createBinding(item, "tooltipText")
|
|
} $={(self) => {
|
|
const conns: Map<GObject.Object, number> = new Map();
|
|
const gestureClick = Gtk.GestureClick.new();
|
|
gestureClick.set_button(0);
|
|
|
|
self.add_controller(gestureClick);
|
|
|
|
// Set popover parent to this box
|
|
popover.set_parent(self);
|
|
|
|
conns.set(gestureClick, gestureClick.connect("released", (gesture, _, x, y) => {
|
|
if(gesture.get_current_button() === Gdk.BUTTON_PRIMARY) {
|
|
item.activate(x, y);
|
|
return;
|
|
}
|
|
|
|
if(gesture.get_current_button() === Gdk.BUTTON_SECONDARY) {
|
|
item.about_to_show();
|
|
popover.popup();
|
|
}
|
|
}))
|
|
}}>
|
|
<Gtk.Image gicon={createBinding(item, "gicon")} pixelSize={16} />
|
|
</Gtk.Box>;
|
|
}}
|
|
</With>
|
|
</Gtk.Box>}
|
|
</For>
|
|
</Gtk.Box>
|
|
}
|