summaryrefslogtreecommitdiff
path: root/src/modules/screencorners.tsx
blob: d160349eed4933c170e1134a46c78f6c4f48a55a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import type { Monitor } from "@/services/monitors";
import ScreenCorner from "@/widgets/screencorner";
import { bind } from "astal/binding";
import { Astal } from "astal/gtk3";
import { bar } from "config";
import Cairo from "gi://cairo";

export default ({ monitor }: { monitor: Monitor }) => (
    <window
        namespace="caelestia-screencorners"
        monitor={monitor.id}
        anchor={bind(bar.vertical).as(
            v =>
                Astal.WindowAnchor.BOTTOM |
                Astal.WindowAnchor.RIGHT |
                (v ? Astal.WindowAnchor.TOP : Astal.WindowAnchor.LEFT)
        )}
        setup={self =>
            self.connect("size-allocate", () => self.get_window()?.input_shape_combine_region(new Cairo.Region(), 0, 0))
        }
    >
        <box vertical={bind(bar.vertical)}>
            <ScreenCorner place={bind(bar.vertical).as(v => (v ? "topright" : "bottomleft"))} />
            <box expand />
            <ScreenCorner place="bottomright" />
        </box>
    </window>
);