sankalp 244a913d96 feat(src/services): add config persistence, reload handling and notification pruning on config change
Add ability to persist current configuration to disk and trigger reloads, expose set() and save() methods, monitor the config directory for changes, and adjust notification history based on config modifications.

- New Features
  - Implement `save()` method to write config to file and trigger reload
  - Add `set()` method for in‑memory config updates
  - Extend file monitoring to include parent directory
  - Rename `get_all_config` to `get_config_all`
- Enhancements
  - Refine reload logic to correctly capture previous state via `_last_notified_config`
  - Trigger reloads on additional file‑monitor events (CREATED, DELETED)
  - Prune cached notifications according to config changes (`notification_ignored_apps`, `notification_limited_apps_history`)
- Bug Fixes
  - Resolve race condition where reload‑pending flag could be left set
  - Ensure callbacks are notified on every reload request
  - Fix stale comparison of config values in `has_changed`
2026-05-03 22:06:23 +05:45
2026-04-25 08:30:03 +05:45
2025-09-01 12:39:28 +05:45

Logo

Sparkles A hackable shell for Hyprland Powered by Fabric Sparkles

GitHub stars Hyprland Maintained Discord


Home Screen:

fabric

Lock Screen:

fabric

Installation

Caution

  • You need a working installation of hyprland and knowledge of how it works
  • There may not be all packages in your system install them accordingly
git clone https://github.com/S4NKALP/Modus ~/.config/Modus
cd ~/.config/Modus
./install.sh

Tip

Post Installation

  • Install recommended Icon theme , GTK theme and Cursor Theme
  • Check config/hypr/modus.conf edit it according to your device and copy it to your hyprland config
  • For Lock Screen Bind keys to uv run lock

Rocket Todo

Manual Installation

paru -S fabric-cli-git gtk-session-lock uv apple-fonts cinnamon-desktop hyprshot hypridle hyprpicker grim slurp gnome-bluetooth-3.0 cliphist matugen-bin awww swappy wl-clipboard webp-pixbuf-loader acpi wf-recorder brightnessctl power-profile-daemon uwsm libnotify playerctl ffmpeg --needed
git clone https://github.com/S4NKALP/Modus ~/.config/Modus
cd ~/.config/Modus
uv sync
uv run start
  • Launcher
  • Lock Screen
  • Dock
  • Notification
  • Control Center
  • Music Player
  • Desktop Widgets
  • New Launcher (like Spotlight)
  • Settings
  • Magnifier hover effect on Dock
  • New Application Switcher
  • Panel Widget
  • MacOS like Widget
  • Expandable Notification Centre
  • Installation Script
  • Migrate to a uv managed Python virtual environment
  • Proper Documentation
  • Pomodoro Timer Widget
  • To-do List Widget

Bug Fixes (the bug found till now)

  • WiFi
  • wifi off button looks bigger
  • Metadata Changes delay in Media Player
  • Active Window Title showing Unknown when no active window
  • Notification Escape Char Issue

Team

Special Thanks

A big thank you to the following people for their incredible help with code and creative ideas. Your help made a real difference!

  • darsh: for creating Fabric, which made everything possible.
  • gummy bear album: for sharing fantastic code snippets that saved me time and effort.
  • axenide: for the amazing config that not only inspired parts of mine but also provided some gems I couldn’t resist borrowing.
  • E3nviction: for code snippets and ideas that were incredibly helpful.

I truly appreciate your support

V1.0.0
Latest
2026-07-12 12:39:17 +00:00
Languages
Python 91.3%
CSS 4.6%
C 1.9%
Shell 1.3%
Lua 0.6%
Other 0.3%