feat: fade-in animation, PKGBUILD for system installation

- CSS opacity transition (350ms ease-in) for panel and wallpaper
- PKGBUILD for makepkg/pacman installation
- .gitignore for makepkg build artifacts
This commit is contained in:
2026-03-27 14:46:06 +01:00
parent 63bd7cfea9
commit 004e3d2855
4 changed files with 78 additions and 3 deletions
+13 -3
View File
@@ -107,6 +107,12 @@ class WallpaperWindow(Gtk.ApplicationWindow):
background.set_vexpand(True)
self.set_child(background)
self.connect("map", self._on_map)
def _on_map(self, widget: Gtk.Widget) -> None:
"""Trigger fade-in once the window is visible."""
GLib.idle_add(lambda: self.add_css_class("visible") or GLib.SOURCE_REMOVE)
class PanelWindow(Gtk.ApplicationWindow):
"""Fullscreen power menu window for the primary monitor."""
@@ -242,10 +248,14 @@ class PanelWindow(Gtk.ApplicationWindow):
self.add_controller(controller)
def _on_map(self, widget: Gtk.Widget) -> None:
"""Grab focus on the first action button once the window is visible."""
# Delay focus grab — layer shell keyboard interactivity may not
# be ready at map time
"""Trigger fade-in and grab focus once the window is visible."""
GLib.idle_add(self._fade_in)
def _fade_in(self) -> bool:
"""Add visible class to trigger CSS opacity transition, then grab focus."""
self.add_css_class("visible")
GLib.idle_add(self._grab_initial_focus)
return GLib.SOURCE_REMOVE
def _grab_initial_focus(self) -> bool:
"""Set focus on the first action button."""
+12
View File
@@ -6,11 +6,23 @@ window.panel {
background-color: @theme_bg_color;
background-size: cover;
background-position: center;
opacity: 0;
transition: opacity 350ms ease-in;
}
window.panel.visible {
opacity: 1;
}
/* Wallpaper-only window for secondary monitors */
window.wallpaper {
background-color: @theme_bg_color;
opacity: 0;
transition: opacity 350ms ease-in;
}
window.wallpaper.visible {
opacity: 1;
}
/* Round avatar image */