diff options
Diffstat (limited to 'linux/home/.config/ags/widget/dock/ToolBoxDock.ts')
| -rw-r--r-- | linux/home/.config/ags/widget/dock/ToolBoxDock.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/linux/home/.config/ags/widget/dock/ToolBoxDock.ts b/linux/home/.config/ags/widget/dock/ToolBoxDock.ts new file mode 100644 index 0000000..21beaeb --- /dev/null +++ b/linux/home/.config/ags/widget/dock/ToolBoxDock.ts @@ -0,0 +1,57 @@ +import options from "options"; +import ToolBox from "./ToolBox.ts"; +const hyprland = await Service.import("hyprland"); +const apps = await Service.import("applications"); + +import type Gtk from "gi://Gtk?version=3.0"; +import { type WindowProps } from "types/widgets/window"; +import { type RevealerProps } from "types/widgets/revealer"; +import { type EventBoxProps } from "types/widgets/eventbox"; + +/** @param {number} monitor */ +const ToolBoxDock = (monitor: number): Gtk.Window & WindowProps => { + + const revealer: Gtk.Revealer & RevealerProps = Widget.Revealer({ + transition: 'slide_left', + transitionDuration: 50, + child: ToolBox(), + }); + + const window = Widget.Window({ + monitor, + halign: 'fill', + layer: "overlay", + name: `toolbox${monitor}`, + click_through: false, + class_name: 'floating-toolbox', + anchor: ['right'], + child: Widget.Box({ + vertical: true, + halign: 'top', + hpack: 'fill', + children: [ + revealer, + Widget.Box({ + class_name: 'padding', + css: 'padding: 14px;', + vertical: true, + halign: 'top', + hpack: 'fill', + }), + ], + }), + }); + + window + .on('enter-notify-event', () => { + revealer.reveal_child = true; + }) + .on('leave-notify-event', () => { + revealer.reveal_child = false; + }) + .bind('visible', options.bar.position, 'value', v => v !== 'left'); + + return window; +}; + +export default ToolBoxDock; |
