diff --git a/src/native/badges.ts b/src/native/badges.ts index 7d8796c..3eae4c7 100644 --- a/src/native/badges.ts +++ b/src/native/badges.ts @@ -1,6 +1,6 @@ import dbus from "@homebridge/dbus-native"; -import { NativeImage, app, nativeImage } from "electron"; +import { NativeImage, app, ipcMain, nativeImage } from "electron"; import { mainWindow } from "./window"; @@ -21,7 +21,7 @@ export async function setBadgeCount(count: number) { nativeIcons[count] = nativeImage.createFromDataURL( await import( `../../assets/desktop/badges/${Math.min(count, 10)}.ico?asset` - ), + ).then((asset) => asset.default), ); mainWindow.setOverlayIcon( @@ -65,3 +65,5 @@ export async function setBadgeCount(count: number) { break; } } + +ipcMain.on("setBadgeCount", (_event, count: number) => setBadgeCount(count)); diff --git a/src/world/window.ts b/src/world/window.ts index ba38cac..2e9957b 100644 --- a/src/world/window.ts +++ b/src/world/window.ts @@ -13,4 +13,6 @@ contextBridge.exposeInMainWorld("native", { minimise: () => ipcRenderer.send("minimise"), maximise: () => ipcRenderer.send("maximise"), close: () => ipcRenderer.send("close"), + + setBadgeCount: (count: number) => ipcRenderer.send("setBadgeCount", count), }); diff --git a/start.sh b/start.sh index ea47c14..14676ec 100755 --- a/start.sh +++ b/start.sh @@ -1,23 +1,19 @@ -I d#!/usr/bin/env bash +#!/usr/bin/env bash # Check if we're on NixOS and set up electron path if needed if [ -f /etc/NIXOS ] || [ -n "$NIX_STORE" ]; then # We're on NixOS, need to find the electron path - if command -v electron &> /dev/null; then - # Electron is in PATH, find its store path - ELECTRON_BIN=$(which electron) - ELECTRON_STORE_PATH=$(dirname "$ELECTRON_BIN") - export ELECTRON_OVERRIDE_DIST_PATH="$ELECTRON_STORE_PATH" - echo "NixOS detected: Using electron from $ELECTRON_STORE_PATH" - elif [ -d /nix/store ]; then - # Try to find electron in nix store matching our version requirement - REQUIRED_VERSION=$(grep '"electron"' package.json | sed -E 's/.*"([0-9]+)\..*/\1/') - ELECTRON_PATH=$(find /nix/store -maxdepth 1 -name "*electron-${REQUIRED_VERSION}*" -type d 2>/dev/null | grep -v unwrapped | head -1) - - if [ -n "$ELECTRON_PATH" ] && [ -d "$ELECTRON_PATH/bin" ]; then - export ELECTRON_OVERRIDE_DIST_PATH="$ELECTRON_PATH/bin" - echo "NixOS detected: Using electron from $ELECTRON_PATH/bin" - fi + # Try to find electron in nix store matching our version requirement + REQUIRED_VERSION=$(grep '"electron"' package.json | sed -E 's/.*"electron"[[:space:]]*:[[:space:]]*"([0-9]+)\..*/\1/') + + # Search for electron in nix store + ELECTRON_PATH=$(ls -d /nix/store/*electron-${REQUIRED_VERSION}* 2>/dev/null | grep -v -E '(unwrapped|\.drv$)' | head -1) + + if [ -n "$ELECTRON_PATH" ] && [ -d "$ELECTRON_PATH/bin" ]; then + export ELECTRON_OVERRIDE_DIST_PATH="$ELECTRON_PATH/bin" + echo "NixOS detected: Using electron from $ELECTRON_PATH/bin" + else + echo "Warning: Could not find electron ${REQUIRED_VERSION} in nix store" fi fi