Notification monitors (#81)
* added monitor options for notifications * added monitor options for notifications * .. * added changes * Update widget/settings/pages/config/notifications/index.ts * Added the ability for left/right anchors for notifications and updated types to reflect that. * merge (not sure if I did this correct) * Implemented Wallpaper Selector and Matugen's Wallpaper based auto-theming. (#73) * Implement matugen - WIP * Added matugen * Add types and cleanup code * Matugen implementation updates and added more options such as scheme and contrast. * Code cleanup and matugen settings renamed for clarity. * Makon maroon a primary matugen color. * Updates to handle variations of matugen colors * Finalizing matugen and wrapping up variations. * Minor styling updates of the settings dialog. * Do a swww dependency check. * Dependency logic update * Switch shouldn't double trigger notifications now when checking dependency. * Logic was inverted * Add matugen to dependency checker. * Fixed dependency checking conditional * Update dependency list in readme and check for matugen before doing matugen operations * Styling fixes * OSD Fix * Remove unused code from wallpaper service. * Color fixes for matugen. * Nix updates for new dependencies * Change default wallpaper to empty. * Added custom notification service for startup, cleaned up code and updated readme. * added options for bar media module (#88) * added options for bar media module * added reviewed changes * cleaned up * Made the media player more responsive and accurate. (#95) --------- Co-authored-by: Jas Singh <jaskiratpal.singh@outlook.com>
This commit is contained in:
@@ -6,9 +6,17 @@ import { Action } from "./actions/index.js";
|
||||
import { Header } from "./header/index.js";
|
||||
import { Body } from "./body/index.js";
|
||||
import { CloseButton } from "./close/index.js";
|
||||
import { NotificationAnchor } from "lib/types/options";
|
||||
import { getPosition } from "lib/utils.js";
|
||||
const hyprland = await Service.import("hyprland");
|
||||
|
||||
const { position, timeout, cache_actions } = options.notifications;
|
||||
const { position, timeout, cache_actions, monitor, active_monitor } = options.notifications;
|
||||
|
||||
|
||||
const curMonitor = Variable(monitor.value);
|
||||
|
||||
hyprland.active.connect("changed", () => {
|
||||
curMonitor.value = hyprland.active.monitor.id;
|
||||
})
|
||||
|
||||
export default () => {
|
||||
Utils.merge([timeout.bind("value"), cache_actions.bind("value")], (timeout, doCaching) => {
|
||||
@@ -16,24 +24,21 @@ export default () => {
|
||||
notifs.cacheActions = doCaching;
|
||||
});
|
||||
|
||||
const getPosition = (pos: NotificationAnchor): ("top" | "bottom" | "left" | "right")[] => {
|
||||
const positionMap: { [key: string]: ("top" | "bottom" | "left" | "right")[] } = {
|
||||
"top": ["top"],
|
||||
"top right": ["top", "right"],
|
||||
"top left": ["top", "left"],
|
||||
"bottom": ["bottom"],
|
||||
"bottom right": ["bottom", "right"],
|
||||
"bottom left": ["bottom", "left"]
|
||||
};
|
||||
|
||||
return positionMap[pos] || ["top"];
|
||||
}
|
||||
|
||||
return Widget.Window({
|
||||
name: "notifications-window",
|
||||
class_name: "notifications-window",
|
||||
monitor: 2,
|
||||
layer: "top",
|
||||
monitor: Utils.merge([
|
||||
curMonitor.bind("value"),
|
||||
monitor.bind("value"),
|
||||
active_monitor.bind("value")], (curMon, mon, activeMonitor) => {
|
||||
if (activeMonitor === true) {
|
||||
return curMon;
|
||||
}
|
||||
|
||||
return mon;
|
||||
}
|
||||
),
|
||||
layer: "overlay",
|
||||
anchor: position.bind("value").as(v => getPosition(v)),
|
||||
exclusivity: "ignore",
|
||||
child: Widget.Box({
|
||||
|
||||
Reference in New Issue
Block a user