aboutsummaryrefslogtreecommitdiff
path: root/users/ryan/modules/simple-bar/simple-bar-source/lib/components/yabai/stickies.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'users/ryan/modules/simple-bar/simple-bar-source/lib/components/yabai/stickies.jsx')
-rwxr-xr-xusers/ryan/modules/simple-bar/simple-bar-source/lib/components/yabai/stickies.jsx56
1 files changed, 56 insertions, 0 deletions
diff --git a/users/ryan/modules/simple-bar/simple-bar-source/lib/components/yabai/stickies.jsx b/users/ryan/modules/simple-bar/simple-bar-source/lib/components/yabai/stickies.jsx
new file mode 100755
index 0000000..703bf68
--- /dev/null
+++ b/users/ryan/modules/simple-bar/simple-bar-source/lib/components/yabai/stickies.jsx
@@ -0,0 +1,56 @@
1import OpenedApps from "./opened-apps.jsx";
2import { useYabaiContext } from "../yabai-context.jsx";
3import { useSimpleBarContext } from "../simple-bar-context.jsx";
4import * as Utils from "../../utils";
5
6/**
7 * Stickies component to display sticky windows.
8 * @param {Object} props - Component properties.
9 * @param {Object} props.display - The current display information.
10 * @returns {JSX.Element|null} The rendered component or null if no sticky windows are present.
11 */
12export default function Stickies({ display }) {
13 // Get windows from yabai context
14 const { windows } = useYabaiContext();
15 // Get settings from simple-bar context
16 const { settings } = useSimpleBarContext();
17 const { spacesDisplay } = settings;
18 const { exclusionsAsRegex, hideDuplicateAppsInSpaces } = spacesDisplay;
19
20 // Determine exclusions based on settings
21 const exclusions = exclusionsAsRegex
22 ? spacesDisplay.exclusions
23 : spacesDisplay.exclusions.split(", ");
24 const titleExclusions = exclusionsAsRegex
25 ? spacesDisplay.titleExclusions
26 : spacesDisplay.titleExclusions.split(", ");
27
28 // Get sticky windows using a utility function
29 const { stickyWindows: apps } = Utils.stickyWindowWorkaround({
30 windows,
31 uniqueApps: hideDuplicateAppsInSpaces,
32 currentDisplay: display,
33 currentSpace: undefined,
34 exclusions,
35 titleExclusions,
36 exclusionsAsRegex,
37 });
38
39 // Filter out minimized sticky windows
40 const notMinimizedStikies = apps.filter((app) => {
41 const { "is-minimized": isMinimized, minimized: __legacyIsMinimized } = app;
42 return !(isMinimized || __legacyIsMinimized);
43 });
44
45 // Return null if no non-minimized sticky windows are present
46 if (!notMinimizedStikies?.length) return null;
47
48 // Render the sticky windows
49 return (
50 <div className="stickies">
51 <div className="stickies__inner">
52 <OpenedApps apps={apps} />
53 </div>
54 </div>
55 );
56}