blob: 703bf68fe8775434538ad3767c421902bd900342 (
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
import OpenedApps from "./opened-apps.jsx";
import { useYabaiContext } from "../yabai-context.jsx";
import { useSimpleBarContext } from "../simple-bar-context.jsx";
import * as Utils from "../../utils";
/**
* Stickies component to display sticky windows.
* @param {Object} props - Component properties.
* @param {Object} props.display - The current display information.
* @returns {JSX.Element|null} The rendered component or null if no sticky windows are present.
*/
export default function Stickies({ display }) {
// Get windows from yabai context
const { windows } = useYabaiContext();
// Get settings from simple-bar context
const { settings } = useSimpleBarContext();
const { spacesDisplay } = settings;
const { exclusionsAsRegex, hideDuplicateAppsInSpaces } = spacesDisplay;
// Determine exclusions based on settings
const exclusions = exclusionsAsRegex
? spacesDisplay.exclusions
: spacesDisplay.exclusions.split(", ");
const titleExclusions = exclusionsAsRegex
? spacesDisplay.titleExclusions
: spacesDisplay.titleExclusions.split(", ");
// Get sticky windows using a utility function
const { stickyWindows: apps } = Utils.stickyWindowWorkaround({
windows,
uniqueApps: hideDuplicateAppsInSpaces,
currentDisplay: display,
currentSpace: undefined,
exclusions,
titleExclusions,
exclusionsAsRegex,
});
// Filter out minimized sticky windows
const notMinimizedStikies = apps.filter((app) => {
const { "is-minimized": isMinimized, minimized: __legacyIsMinimized } = app;
return !(isMinimized || __legacyIsMinimized);
});
// Return null if no non-minimized sticky windows are present
if (!notMinimizedStikies?.length) return null;
// Render the sticky windows
return (
<div className="stickies">
<div className="stickies__inner">
<OpenedApps apps={apps} />
</div>
</div>
);
}
|