Skip to content

Commit

Permalink
Added "always on top" option
Browse files Browse the repository at this point in the history
  • Loading branch information
oliverschwendener committed Feb 16, 2024
1 parent 99c4e25 commit 1535a91
Show file tree
Hide file tree
Showing 14 changed files with 217 additions and 163 deletions.
4 changes: 4 additions & 0 deletions src/main/Core/BrowserWindow/BrowserWindowModule.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@ export class BrowserWindowModule {
sendToBrowserWindow(browserWindow, `settingUpdated[${key}]`, { value });
});

eventSubscriber.subscribe("settingUpdated[window.alwaysOnTop]", ({ value }: { value: boolean }) => {
browserWindow.setAlwaysOnTop(value);
});

eventSubscriber.subscribe(
"settingUpdated[window.backgroundMaterial]",
({ value }: { value: BrowserWindowConstructorOptions["backgroundMaterial"] }) => {
Expand Down
4 changes: 3 additions & 1 deletion src/main/Core/BrowserWindow/createBrowserWindow.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ export const createBrowserWindow = (dependencyRegistry: DependencyRegistry<Depen
const operatingSystem = dependencyRegistry.get("OperatingSystem");
const settingsManager = dependencyRegistry.get("SettingsManager");

const startHidden = settingsManager.getValue<boolean>("general.startHidden", false);
const startHidden = settingsManager.getValue<boolean>("window.showOnStartup", false);
const alwaysOnTop = settingsManager.getValue<boolean>("window.alwaysOnTop", false);

const preloadScriptFilePath = join(__dirname, "..", "dist-preload", "index.js");

Expand All @@ -26,6 +27,7 @@ export const createBrowserWindow = (dependencyRegistry: DependencyRegistry<Depen
allowRunningInsecureContent: !app.isPackaged,
spellcheck: false,
},
alwaysOnTop,
};

const extendDefaultBrowserWindowOptions = (browserWindowOptions: BrowserWindowConstructorOptions) => {
Expand Down
2 changes: 2 additions & 0 deletions src/renderer/Core/I18n/getCoreTranslations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -185,11 +185,13 @@ export const getCoreTranslations = (): { namespace: string; translations: Transl
title: "Window",
hideWindowAfterExecution: "Hide window after execution",
hideWindowOnBlur: "Hide window on blur",
alwaysOnTop: "Always on top",
},
"de-CH": {
title: "Fenster",
hideWindowAfterExecution: "Fenster verstecken nach Ausführung",
hideWindowOnBlur: "Fenster verstecken bei Fokusverlust",
alwaysOnTop: "Immer im Vordergrund",
},
},
},
Expand Down
4 changes: 0 additions & 4 deletions src/renderer/Core/Settings/Pages/General/General.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { SectionList } from "../../SectionList";
import { Autostart } from "./Autostart";
import { HotKey } from "./HotKey";
import { Language } from "./Language";
import { StartHidden } from "./StartHidden";

export const General = () => {
return (
Expand All @@ -17,9 +16,6 @@ export const General = () => {
<Section>
<Autostart />
</Section>
<Section>
<StartHidden />
</Section>
</SectionList>
);
};
18 changes: 0 additions & 18 deletions src/renderer/Core/Settings/Pages/General/StartHidden.tsx

This file was deleted.

140 changes: 0 additions & 140 deletions src/renderer/Core/Settings/Pages/Window.tsx

This file was deleted.

14 changes: 14 additions & 0 deletions src/renderer/Core/Settings/Pages/Window/AlwaysOnTop.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { useSetting } from "@Core/Hooks";
import { Field, Switch } from "@fluentui/react-components";
import { useTranslation } from "react-i18next";

export const AlwaysOnTop = () => {
const { t } = useTranslation();
const { value, updateValue } = useSetting({ key: "window.alwaysOnTop", defaultValue: false });

return (
<Field label={t("alwaysOnTop", { ns: "settingsWindow" })}>
<Switch checked={value} onChange={(_, { checked }) => updateValue(checked)} />
</Field>
);
};
25 changes: 25 additions & 0 deletions src/renderer/Core/Settings/Pages/Window/BackgroundMaterial.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import { Dropdown, Field, Option } from "@fluentui/react-components";

type Props = {
backgroundMaterial: string;
setBackgroundMaterial: (backgroundMaterial: string) => void;
};

export const BackgroundMaterial = ({ backgroundMaterial, setBackgroundMaterial }: Props) => {
const backgroundMaterialOptions = ["Acrylic", "Mica", "None", "Tabbed"];

return (
<Field label="Background material">
<Dropdown
value={backgroundMaterial}
onOptionSelect={(_, { optionValue }) => optionValue && setBackgroundMaterial(optionValue)}
>
{backgroundMaterialOptions.map((b) => (
<Option key={`background-material-option-${b}`} value={b}>
{b}
</Option>
))}
</Dropdown>
</Field>
);
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { useSetting } from "@Core/Hooks";
import { Field, Switch } from "@fluentui/react-components";
import { useTranslation } from "react-i18next";

export const HideWindowAfterExecution = () => {
const { t } = useTranslation();

const { value: hideWindowAfterExecution, updateValue: setHideWindowAfterExecution } = useSetting({
key: "window.hideWindowAfterExecution",
defaultValue: true,
});

return (
<Field label={t("hideWindowAfterExecution", { ns: "settingsWindow" })}>
<Switch
checked={hideWindowAfterExecution}
onChange={(_, { checked }) => setHideWindowAfterExecution(checked)}
/>
</Field>
);
};
18 changes: 18 additions & 0 deletions src/renderer/Core/Settings/Pages/Window/HideWindowOnBlur.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { useSetting } from "@Core/Hooks";
import { Field, Switch } from "@fluentui/react-components";
import { useTranslation } from "react-i18next";

export const HideWindowOnBlur = () => {
const { t } = useTranslation();

const { value: hideWindowOnBlur, updateValue: setHideWindowOnBlur } = useSetting({
key: "window.hideWindowOnBlur",
defaultValue: true,
});

return (
<Field label={t("hideWindowOnBlur", { ns: "settingsWindow" })}>
<Switch checked={hideWindowOnBlur} onChange={(_, { checked }) => setHideWindowOnBlur(checked)} />
</Field>
);
};
21 changes: 21 additions & 0 deletions src/renderer/Core/Settings/Pages/Window/Opacity.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { useSetting } from "@Core/Hooks";
import { Field, Slider } from "@fluentui/react-components";

export const Opacity = () => {
const { value: acrylicOpacity, updateValue: setAcrylicOpacity } = useSetting({
key: "window.acrylicOpacity",
defaultValue: 0.6,
});

return (
<Field label={`Opacity: ${acrylicOpacity}`}>
<Slider
min={0}
max={1}
step={0.05}
value={acrylicOpacity}
onChange={(_, { value }) => setAcrylicOpacity(value)}
/>
</Field>
);
};
54 changes: 54 additions & 0 deletions src/renderer/Core/Settings/Pages/Window/Vibrancy.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import { useSetting } from "@Core/Hooks";
import { Dropdown, Field, Option } from "@fluentui/react-components";
import { Virtualizer, useStaticVirtualizerMeasure } from "@fluentui/react-components/unstable";

export const Vibrancy = () => {
const { value: vibrancy, updateValue: setVibrancy } = useSetting({ key: "window.vibrancy", defaultValue: "None" });

const vibrancyOptions = [
"None",
"content",
"fullscreen-ui",
"header",
"hud",
"menu",
"popover",
"selection",
"sheet",
"sidebar",
"titlebar",
"tooltip",
"under-page",
"under-window",
"window",
];

const { virtualizerLength, bufferItems, bufferSize, scrollRef } = useStaticVirtualizerMeasure({
defaultItemSize: 20,
direction: "vertical",
});

return (
<Field label="Vibrancy">
<Dropdown
value={vibrancy}
onOptionSelect={(_, { optionValue }) => optionValue && setVibrancy(optionValue)}
listbox={{ ref: scrollRef, style: { maxHeight: 145 } }}
>
<Virtualizer
numItems={vibrancyOptions.length}
virtualizerLength={virtualizerLength}
bufferItems={bufferItems}
bufferSize={bufferSize}
itemSize={20}
>
{(i) => (
<Option key={`window-vibrancy-option-${vibrancyOptions[i]}`} value={vibrancyOptions[i]}>
{vibrancyOptions[i]}
</Option>
)}
</Virtualizer>
</Dropdown>
</Field>
);
};
Loading

0 comments on commit 1535a91

Please sign in to comment.