Add gamma control and night light (#38)

Add configurable night light, smooth gamma transitions, and shell controls. Update documentation and panel tests, and fix portal test startup synchronization.
This commit is contained in:
Samuel Onoja authored and GitHub committed 2026-10-13 14:37:26 +01:00
1 parent 9163374cdb
commit 2a400b26d0
34 files changed
+940 -20

No files matched your search

+6 -1
View File
@@ -122,6 +122,7 @@ pub enum ItemKind {
Media,
Activities,
QuickSettings,
NightLight,
Network,
Audio,
Recording,
@@ -154,6 +155,7 @@ impl ItemKind {
Self::Media => "Media",
Self::Activities => "Activities",
Self::QuickSettings => "Quick Settings",
Self::NightLight => "Night light",
Self::Network => "Network",
Self::Audio => "Audio",
Self::Recording => "Recording",
@@ -656,6 +658,7 @@ impl Panel {
let controls = vec![
item("media", Media),
item("quick-settings", QuickSettings),
item("night-light", NightLight),
item("network", Network),
item("audio", Audio),
item("recording", Recording),
@@ -765,6 +768,7 @@ mod tests {
"focused-window",
"media",
"quick-settings",
"night-light",
"network",
"audio",
"recording",
@@ -802,6 +806,7 @@ mod tests {
"workspaces",
"focused-window",
"quick-settings",
"night-light",
"recording",
"clock"
]
@@ -818,7 +823,7 @@ mod tests {
}),
all.iter().map(|item| item.id.0.as_str()).collect::<Vec<_>>()
);
assert_eq!(items(&panel).len(), 12);
assert_eq!(items(&panel).len(), 13);
}
#[test]
+9 -2
View File
@@ -744,9 +744,16 @@ mod tests {
#[test]
fn always_overflow_is_reserved_and_unavailable_items_are_not_allocated() {
let mut panel = Panel::default();
panel.end.groups[0].items[2].overflow = OverflowPolicy::Always;
panel
.end
.groups
.iter_mut()
.flat_map(|group| &mut group.items)
.find(|item| item.id.0 == "network")
.unwrap()
.overflow = OverflowPolicy::Always;
let mut measured = measurements(&panel);
measured.remove(3);
measured.retain(|item| item.id.0 != "media");
let resolution = resolve(&panel, &measured, 2000., 32.);
assert!(!resolution.items.contains_key(&ItemId("media".into())));
assert_eq!(resolution.overflow, [ItemId("network".into())]);