Integrate native Rime and stabilize input, output, and rendering

- Add optional modifier-only Super binding whose tap is cancelled by
  other input, focus changes, grabs, locks, and session teardown.
- Ship the native ferese-rime user service, Rime defaults, installer
  inventory, package dependencies, session environment, and docs.
- Vendor Smithay 8a27023 with the SHM texture-cache format fix and add
  GPU regressions for format changes and resize snapshots.
- Release reused CRTC owners before staging output modes, then restore
  changed outputs before former owners when a transaction fails.
- Wait for resize-capture GPU completion, expand filtered surface
  damage, and preserve IME popup origin under fractional scaling.
- Mark weekends like holidays in both calendar layouts.
This commit is contained in:
aria committed 2026-10-30 03:13:43 +09:00
1 parent a2be421974
commit 993bc0f88f
391 files changed
+130908 -76

No files matched your search

+19 -11
View File
@@ -103,6 +103,12 @@ fn grid_with_density<'a, M: Clone + 'a>(
let month = first.month();
let primary = palette.text.scale_alpha(opacity);
let muted = palette.muted.scale_alpha(opacity);
let holiday_color = if palette.appearance == ferese_config::theme::Appearance::Light {
cosmic::iced::Color::from_rgb8(184, 38, 49)
} else {
cosmic::iced::Color::from_rgb8(244, 110, 120)
}
.scale_alpha(opacity);
let [previous, today_button, next] = navigation;
let header = row![
crate::text(
@@ -133,12 +139,19 @@ fn grid_with_density<'a, M: Clone + 'a>(
} else {
Length::Shrink
});
for label in weekday_labels(ferese_config::locale::resolved()) {
for (weekday, label) in weekday_labels(ferese_config::locale::resolved())
.into_iter()
.enumerate()
{
weekdays = weekdays.push(
container(
crate::text(label, font)
.size(if compact { 9 } else { 11 })
.class(theme::Text::Color(muted)),
.class(theme::Text::Color(if matches!(weekday, 0 | 6) {
holiday_color
} else {
muted
})),
)
.width(cell_width)
.center_x(cell_width),
@@ -161,14 +174,9 @@ fn grid_with_density<'a, M: Clone + 'a>(
let date = date.filter(|_| visible);
let is_today = date == Some(today);
let holiday = date.and_then(|date| settings.holiday_name(date));
let holiday_color = if palette.appearance == ferese_config::theme::Appearance::Light {
cosmic::iced::Color::from_rgb8(184, 38, 49)
} else {
cosmic::iced::Color::from_rgb8(244, 110, 120)
}
.scale_alpha(opacity * if in_month { 1. } else { 0.65 });
let foreground = if holiday.is_some() {
holiday_color
let emphasized = date.is_some() && (holiday.is_some() || matches!(weekday, 0 | 6));
let foreground = if emphasized {
holiday_color.scale_alpha(if in_month { 1. } else { 0.65 })
} else if is_today || in_month {
primary
} else {
@@ -176,7 +184,7 @@ fn grid_with_density<'a, M: Clone + 'a>(
};
let label = date.map_or(String::new(), |date| date.day().to_string());
let font = cosmic::iced::Font {
weight: if holiday.is_some() {
weight: if emphasized {
cosmic::iced::font::Weight::Bold
} else {
cosmic::iced::font::Weight::Normal