Hyprland plugin + C++ QML extension combo to support a custom shader implementation for nightlight which hooks Hyprland's render pipeline to insert itself after the buffer has been mirrored, meaning the shader doesn't shouldn't show up in screen captures.
New config options
Config.display.nightlight.useNative
Config.display.nightlight.fadeDuration
Fade duration is not available when useNative == false due to insufficient support from hyprsunset.
Backend config migration
We now have a reliable way to migrate objects in the config file, preserving the user's values cleanly. Can be found in Plugins/ZShell/Config/migration.{c,h}pp.
Once migrated, rules are a no-op and can stay indefinitely (though they shouldn't.)
Related issue
No response
Type
New feature
Tested
Build succeeds
Existing tests pass
Manually verified
Breaking changes?
No response
Checklist
CI passes (format, lint, typecheck)
Clean commits
No new warnings
Docs updated if needed
### What & why
## New nightlight shader
Hyprland plugin + C++ QML extension combo to support a custom shader implementation for nightlight which hooks Hyprland's render pipeline to insert itself after the buffer has been mirrored, meaning the shader ~~doesn't~~ shouldn't show up in screen captures.
New config options
- `Config.display.nightlight.useNative`
- `Config.display.nightlight.fadeDuration`
Fade duration is not available when `useNative == false` due to insufficient support from hyprsunset.
## Backend config migration
We now have a reliable way to migrate objects in the config file, preserving the user's values cleanly. Can be found in `Plugins/ZShell/Config/migration.{c,h}pp`.
### Usage
```cpp
// migration.cpp
const QList<ConfigMigrationRule>& ConfigMigrations::rules() {
static const QList<ConfigMigrationRule> s_rules = {
migrate("old.object.path", "new.object.path"),
};
return s_rules;
}
```
Once migrated, rules are a no-op and can stay indefinitely (though they shouldn't.)
### Related issue
_No response_
### Type
New feature
### Tested
- [x] Build succeeds
- [ ] Existing tests pass
- [x] Manually verified
### Breaking changes?
_No response_
### Checklist
- [ ] CI passes (format, lint, typecheck)
- [x] Clean commits
- [x] No new warnings
- [x] Docs updated if needed
zach
changed title from Feat/dashboard tabs processes and settings backend to Feat: Dashboard tabs and repositioning. New processes view. Settings backend changes2026-09-30 15:19:29 +02:00
zach
merged commit 42026ba5e5 into main2026-09-30 16:51:16 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What & why
New nightlight shader
Hyprland plugin + C++ QML extension combo to support a custom shader implementation for nightlight which hooks Hyprland's render pipeline to insert itself after the buffer has been mirrored, meaning the shader
doesn'tshouldn't show up in screen captures.New config options
Config.display.nightlight.useNativeConfig.display.nightlight.fadeDurationFade duration is not available when
useNative == falsedue to insufficient support from hyprsunset.Backend config migration
We now have a reliable way to migrate objects in the config file, preserving the user's values cleanly. Can be found in
Plugins/ZShell/Config/migration.{c,h}pp.Usage
Once migrated, rules are a no-op and can stay indefinitely (though they shouldn't.)
Related issue
No response
Type
New feature
Tested
Breaking changes?
No response
Checklist
Feat/dashboard tabs processes and settings backendto Feat: Dashboard tabs and repositioning. New processes view. Settings backend changes