A beautiful Electron application designed for the Hyte Y70ti Infinite Touch screen, featuring vertical widgets with Angular Material design.
- Weather Widget: Displays current weather for Kansas City, MO (64154)
- Time Widget: Shows current time and date
- Media Controls: Play/Pause, Rewind, Fast Forward with media title display
- Volume Control: Slider with mute/unmute and volume mixer toggle
- Power Options: Lock, Log Out, Restart, and Shutdown with confirmation modal
- Angular Material Design: Beautiful card-based UI with Material Icons
- Install dependencies:
npm install-
Get a free OpenWeatherMap API key:
- Visit https://openweathermap.org/api
- Sign up for a free account
- Get your API key
- Open
renderer.jsand replaceYOUR_API_KEY_HEREwith your actual API key
-
Run the application:
npm startFor development mode (with DevTools):
npm run dev- Displays temperature, description, humidity, and wind speed
- Updates every 30 minutes
- Requires OpenWeatherMap API key (free tier available)
- Shows current time (HH:MM:SS format)
- Displays full date (e.g., "Monday, January 1, 2024")
- Updates every second
- Controls system media playback
- Shows current media title (when available)
- Uses Windows media keys for compatibility
- Horizontal slider for master volume
- Mute/Unmute button on the left
- Volume mixer toggle on the right
Note: The volume mixer feature (individual application volume control) requires native Windows APIs. The current implementation shows a placeholder message. To enable this feature, you would need to:
-
Install a native Node.js module that interfaces with Windows Core Audio APIs, such as:
- A custom native addon using
node-addon-api - Or use a package like
win-audio(if available)
- A custom native addon using
-
The Windows Core Audio API (
IAudioSessionManager2) is required to enumerate and control individual application audio sessions.
This feature is currently not fully implemented due to the complexity of interfacing with Windows Core Audio APIs from Electron. The UI is ready, but the backend functionality requires additional native code.
- Four power actions: Lock, Log Out, Restart, Shutdown
- Each action requires confirmation via modal dialog
- Modal appears at the top of the screen (to prevent accidental activation by children)
To change the weather location, edit renderer.js:
const WEATHER_ZIP = '64154'; // Change to your ZIP codeThe app runs in fullscreen mode by default. To modify window settings, edit main.js:
mainWindow = new BrowserWindow({
width: 1920,
height: 1080,
fullscreen: true,
// ... other settings
});- Framework: Electron
- Platform: Windows (primary), with basic support for other platforms
- Styling: Custom CSS with Angular Material design principles
- Icons: Google Material Icons
-
Volume Mixer: Individual application volume control requires native Windows APIs and is not fully implemented. The UI is ready, but backend functionality needs a native module.
-
Media Title: Media title detection relies on the browser's Media Session API, which may not always be available. A fallback message is shown when media info is unavailable.
-
Volume Control: The volume slider uses Windows COM objects, which should work but may have limitations depending on your system configuration.
- Ensure you've set your OpenWeatherMap API key in
renderer.js - Check your internet connection
- Verify the ZIP code is correct
- Ensure media is playing in a supported application
- Some applications may not respond to system media keys
- The app uses Windows COM objects for volume control
- Some antivirus software may block COM object access
- Try running as administrator if issues persist
MIT