Warning
Work-In-Progress Use at your own risk!
A lightweight, modern custom top bar for Windows 11 — built with C# and WPF.
TopBar replaces the missing "top taskbar" that Windows 11 removed, adding live weather, a clock, date, reminders, and media controls in a sleek auto-hiding bar pinned to the top of your screen.
- 🌤️ Live Weather — current conditions with icons, auto-detects your location via WiFi
- 🕐 Clock — 24-hour format, centered in the bar
- 📅 Date — displayed on the right side
- 🔔 Reminders — set, view, edit and delete reminders with one-time or repeating schedules
- 🎵 Media Controls — shows play/pause, previous, next and song info when media is playing
- ⚙️ Settings — adjust bar height, opacity, animation speed, temperature unit and weather refresh rate
- 🚀 Launch on Startup — starts automatically with Windows
- 🖱️ Auto-hide — smoothly slides in when you hover the top edge, hides when you move away
- 📍 Auto Location — uses Windows Location API (WiFi-based) for accurate weather, falls back to IP detection
- 💾 Weather Cache — instant weather display on startup using cached data
- 🌦️ 6-Day Forecast — click the weather widget to expand a full forecast popup
- Windows 11 (Windows 10 may work but is untested)
- .NET 10.0
- Internet connection (for weather)
- Location permission (for auto-detect, optional)
- Go "CODE" at the top
- Download the latest
TopBar.zip - Download and install VS Studio (Community Edition)
- Open the solution folder
- Choose "Release" and press
Ctrl + Shift + Bto build the solution - Go to
bin > Release > net10.0-windows10.0.19041.0 > TopBar.exe - Run
TopBar.exe - Right-click the bar → Settings → enable Launch on Startup
| Action | Result |
|---|---|
| Hover top edge of screen | Bar slides down |
| Move mouse away | Bar slides back up |
| Click weather widget | Opens 6-day forecast popup |
| Right-click bar | Opens context menu |
| Right-click → Add Reminder | Opens reminder form |
| Right-click → View Reminders | Opens reminders list |
| Right-click → Settings | Opens settings popup |
| Right-click → Exit | Closes TopBar |
| Setting | Description |
|---|---|
| Bar Height | Adjust the height of the bar (30–60px) |
| Bar Opacity | Control how transparent the bar is |
| Animation Speed | How fast the bar slides in/out |
| Temperature Unit | Switch between °C and °F |
| Weather Refresh | How often weather data is fetched (5–60 min) |
| Launch on Startup | Start TopBar with Windows |
- Language — C#
- Framework — WPF (.NET 10)
- Weather API — Open-Meteo (free, no API key)
- Geocoding — Nominatim / OpenStreetMap (free)
- Location — Windows Location API (WiFi-based)
- Weather Icons — Meteocons by Bas Milius (MIT)
- Media Icons — Lucide Icons (MIT)
- UI Library — ModernWpf (MIT)
- SVG Rendering — SharpVectors (BSD)
TopBar/
├── Assets/
│ ├── Media/ # Media control SVG icons
│ └── Weather/ # Weather condition SVG icons
├── Helpers/
│ ├── AppBarHelper.cs # Window pinning and Win32 APIs
│ ├── AutoHideHelper.cs # Auto-hide slide animation
│ ├── LocationService.cs # WiFi-based location detection
│ ├── ReminderService.cs # Reminder storage and firing
│ ├── SettingsService.cs # Settings persistence
│ ├── StartupHelper.cs # Windows startup registration
│ └── WeatherCache.cs # Weather response caching
├── Models/
│ ├── Reminder.cs # Reminder data model
│ └── ReminderViewModel.cs # Reminder display model
├── Widgets/
│ ├── ClockWidget.xaml # Clock display
│ ├── MediaWidget.xaml # Media controls
│ └── WeatherWidget.xaml # Weather display
├── AddReminderWindow.xaml # Add/edit reminder form
├── RemindersListWindow.xaml # View/manage reminders
├── ReminderPopupWindow.xaml # Reminder alert popup
├── SettingsPopup.xaml # Settings panel
├── WeatherPopupWindow.xaml # Weather detail popup
└── MainWindow.xaml # The main bar window
- WinUI 3 migration (for native Mica Alt support)
- Fullscreen app detection
- Multi-monitor support
- More customizable widgets
- Plugin/widget system
- Weather data by Open-Meteo
- Weather icons by Bas Milius / Meteocons
- Media icons by Lucide
- UI components by ModernWpf
MIT License — see LICENSE for details.
Pull requests are welcome! If you have ideas for new widgets or improvements, feel free to open an issue first to discuss.
- Fork the repo
- Create a feature branch (
git checkout -b feature/AmazingWidget) - Commit your changes (
git commit -m 'Add AmazingWidget') - Push to the branch (
git push origin feature/AmazingWidget) - Open a Pull Request





