diff -pruN 1.8.0-1/debian/changelog 1.8.0-1ubuntu2/debian/changelog
--- 1.8.0-1/debian/changelog	2025-09-12 19:54:39.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/changelog	2025-09-24 12:52:06.000000000 +0000
@@ -1,3 +1,27 @@
+libadwaita-1 (1.8.0-1ubuntu2) questing; urgency=medium
+
+  * d/p/yaru-accent-colors: Notify yaru-accent change for the default style manager too
+    (LP: #2125422)
+
+ -- Alessandro Astone <alessandro.astone@canonical.com>  Wed, 24 Sep 2025 14:52:06 +0200
+
+libadwaita-1 (1.8.0-1ubuntu1) questing; urgency=medium
+
+  * Merge with debian, containing the new upstream release (LP: #2123885)
+  * d/p/ubuntu/adw-spinner:
+    - Fix yaru theme detection
+  * d/p/yaru-accent-colors:
+    - Adapt the code to upstream changes
+    - Fix stylesheet switching from Yaru to other theme
+    - Use yaru colors for backgrounds (LP: #2123897)
+  * Remaining changes with debian:
+    - Add 2 patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to include a warty brown accent color
+    - Update debian/salsa-ci.yml & debian/gbp.conf for Ubuntu
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Tue, 16 Sep 2025 05:06:29 +0200
+
 libadwaita-1 (1.8.0-1) unstable; urgency=medium
 
   * New upstream release
@@ -29,6 +53,25 @@ libadwaita-1 (1.8~rc-1) experimental; ur
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Sun, 31 Aug 2025 08:59:24 -0400
 
+libadwaita-1 (1.8~beta-1ubuntu2) questing; urgency=medium
+
+  [ Vincent Renzo Quilon ]
+  * debian/patches: Align AdwSpinnerPaintable Design and Animation to
+    YaruCircularProgressIndicator (LP: #2114778)
+
+ -- Daniel van Vugt <daniel.van.vugt@canonical.com>  Tue, 19 Aug 2025 15:56:04 +0800
+
+libadwaita-1 (1.8~beta-1ubuntu1) questing; urgency=medium
+
+  * Merge with debian. Remaining changes:
+    - Add 2 patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to include a warty brown accent color
+    - Update debian/salsa-ci.yml & debian/gbp.conf for Ubuntu
+  * d/p: Refresh
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Wed, 06 Aug 2025 00:36:35 +0200
+
 libadwaita-1 (1.8~beta-1) experimental; urgency=medium
 
   * New upstream release
@@ -37,6 +80,20 @@ libadwaita-1 (1.8~beta-1) experimental;
 
  -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Wed, 06 Aug 2025 00:18:36 +0200
 
+libadwaita-1 (1.8~alpha-0ubuntu1) questing; urgency=medium
+
+  * Merge with debian. Remaining changes:
+    - Add 2 patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to include a warty brown accent color
+    - Update debian/salsa-ci.yml & debian/gbp.conf for Ubuntu
+  * d/p: Drop patch for window buttons padding that was included upstream.
+  * New upstream release
+  * d/p: Rebase on new upstream version
+  * d: Update symbols file
+
+ -- Alessandro Astone <alessandro.astone@canonical.com>  Tue, 15 Jul 2025 17:00:03 +0200
+
 libadwaita-1 (1.7.6-1) unstable; urgency=medium
 
   * Team upload
@@ -115,6 +172,20 @@ libadwaita-1 (1.7.4-1) experimental; urg
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 06 Jun 2025 14:29:05 -0400
 
+libadwaita-1 (1.7.2-1ubuntu1) questing; urgency=medium
+
+  * Merge with debian, containing new upstream release:
+    - Add 2 patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to include a warty brown accent color
+    - Update debian/salsa-ci.yml & debian/gbp.conf for Ubuntu
+  * d/p: Drop unneeded yaru-only patch for window button paddings.
+    Related to LP: #2106784
+  * d/p: Add upstream fix for window buttons padding on default decoration.
+    Related to LP: #2106784
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Fri, 23 May 2025 15:46:22 +0200
+
 libadwaita-1 (1.7.2-1) unstable; urgency=medium
 
   * New upstream release
@@ -127,12 +198,39 @@ libadwaita-1 (1.7.1-1) unstable; urgency
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 11 Apr 2025 10:01:59 -0400
 
+libadwaita-1 (1.7.0-1ubuntu2) plucky; urgency=medium
+
+  * d/p/ubuntu: Increase size for window controls button in stylesheet
+    (LP: #2106784)
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Tue, 15 Apr 2025 19:07:58 +0200
+
+libadwaita-1 (1.7.0-1ubuntu1) plucky; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Add 2 patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to include a warty brown accent color
+    - Update debian/salsa-ci.yml & debian/gbp.conf for Ubuntu
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 14 Mar 2025 16:45:14 -0400
+
 libadwaita-1 (1.7.0-1) unstable; urgency=medium
 
   * New upstream release
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 14 Mar 2025 16:44:37 -0400
 
+libadwaita-1 (1.7~rc-1ubuntu1) plucky; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Add 2 patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to include a warty brown accent color
+    - Update debian/salsa-ci.yml & debian/gbp.conf for Ubuntu
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Thu, 06 Mar 2025 13:47:14 -0500
+
 libadwaita-1 (1.7~rc-1) unstable; urgency=medium
 
   * New upstream release
@@ -140,6 +238,21 @@ libadwaita-1 (1.7~rc-1) unstable; urgenc
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Thu, 06 Mar 2025 13:30:09 -0500
 
+libadwaita-1 (1.7~beta-2ubuntu1) plucky; urgency=medium
+
+  * Merge with Debian containing new upstream release.
+  * d/p/ubuntu: Update accent color patches for libadwaita 1.7
+  * d/p/ubuntu: Do not use special background for wartybrown anymore.
+    20 years anniversary is gone, we still keep the brown for now but we
+    let's not change change anymore the background or add more special
+    casing
+  * Remaining changes with debian:
+    - Add patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to temporarily include a warty brown accent color
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Sat, 15 Feb 2025 20:36:24 +0100
+
 libadwaita-1 (1.7~beta-2) unstable; urgency=medium
 
   * Release to unstable
@@ -171,12 +284,32 @@ libadwaita-1 (1.6.3-1) unstable; urgency
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Tue, 14 Jan 2025 18:51:23 -0500
 
+libadwaita-1 (1.6.2-1ubuntu1) plucky; urgency=medium
+
+  * Merge with Debian (LP: #2090847). Remaining changes:
+    - Add patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to temporarily include a warty brown accent color
+  * debian/salsa-ci.yml: Run CI for Ubuntu Oracular
+
+ -- Nathan Pratta Teodosio <nteodosio@ubuntu.com>  Mon, 02 Dec 2024 16:11:17 +0100
+
 libadwaita-1 (1.6.2-1) unstable; urgency=medium
 
   * New upstream release
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Mon, 25 Nov 2024 11:13:17 -0500
 
+libadwaita-1 (1.6.1-2ubuntu1) plucky; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Add patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to temporarily include a warty brown accent color
+  * debian/salsa-ci.yml: Run CI for Ubuntu Oracular
+
+ -- Alessandro Astone <alessandro.astone@canonical.com>  Tue, 19 Nov 2024 18:00:54 +0100
+
 libadwaita-1 (1.6.1-2) unstable; urgency=medium
 
   * Team upload
@@ -196,6 +329,24 @@ libadwaita-1 (1.6.1-1) unstable; urgency
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Thu, 17 Oct 2024 15:04:30 -0400
 
+libadwaita-1 (1.6.0-1ubuntu2) oracular; urgency=medium
+
+  * d/p/ubuntu/wartybrown: Do not remove yellow accent color yaru support
+    (LP: #2083617)
+  * d/p/accent-colors: Move all wartybrown color bits to different patch.
+    This helps later removal of the patch
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Thu, 03 Oct 2024 16:47:13 +0200
+
+libadwaita-1 (1.6.0-1ubuntu1) oracular; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Add patches to adjust accent colors for Ubuntu
+    - Add patch to set orange as default accent color instead of blue
+    - Add patch to temporarily include a warty brown accent color
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Mon, 16 Sep 2024 22:49:21 -0400
+
 libadwaita-1 (1.6.0-1) unstable; urgency=medium
 
   * New upstream release
@@ -213,6 +364,22 @@ libadwaita-1 (1.6~rc-2) experimental; ur
 
  -- Simon McVittie <smcv@debian.org>  Fri, 13 Sep 2024 11:04:06 +0100
 
+libadwaita-1 (1.6~rc-1ubuntu1) oracular; urgency=medium
+
+  [ Nathan Pratta Teodosio ]
+  * Merge with debian
+  * d/p/u/style-Add-wartybrown-accent-support.patch: Rebase.
+  * d/p/u/style-Add-wartybrown-accent-support.patch: Some more colors matching brown in the tests.
+
+  [ Marco Trevisan (Treviño) ]
+  * d/p/warty-brown: Fix patch syntax
+  * debian/patches: Refresh indexes
+  * d/p/Yaru-accent-colors: Improve computation of colors based on contrast
+  * d/p/Yaru-accent-colors: Properly export yaru accent background color
+  * d/p/wartybrown-accent: Use actual warty window background color
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Fri, 06 Sep 2024 07:44:18 +0200
+
 libadwaita-1 (1.6~rc-1) experimental; urgency=medium
 
   [ Jeremy Bícha ]
@@ -223,6 +390,44 @@ libadwaita-1 (1.6~rc-1) experimental; ur
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 30 Aug 2024 22:09:24 -0400
 
+libadwaita-1 (1.6~beta-1ubuntu4) oracular; urgency=medium
+
+  * debian/control: Add test dependency on mesa-vulkan-drivers
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Tue, 20 Aug 2024 21:08:11 -0400
+
+libadwaita-1 (1.6~beta-1ubuntu3) oracular; urgency=medium
+
+  * d/p/wartybrown-support: Fix detection of nearest color when using brown
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Tue, 20 Aug 2024 20:27:18 -0400
+
+libadwaita-1 (1.6~beta-1ubuntu2) oracular; urgency=medium
+
+  [ Marco Trevisan (Treviño) ]
+  * Merge with debian, containing new upstream release
+  * d/p/ubuntu: Always return orange as default accent color
+  * d/p/yaru-accent-colors:
+    - Update to support upstream accent colors
+    - Use yaru accent color from system settings if any
+    - Always expose and use yaru colors values when in Yaru
+    - Handle overriding yaru colors from inspector
+    - Add definition for yellow color
+    - Drop support for bark and viridian accent colors
+  * d/p/ubuntu: Add temporary warty brown accent color support
+  * Add back missing ubuntu changelog entries
+
+  [ Jeremy Bícha ]
+  * Update debian/gbp.conf
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Thu, 15 Aug 2024 08:29:40 -0400
+
+libadwaita-1 (1.6~beta-1ubuntu1) oracular; urgency=medium
+
+  * Temporarily ignore build test failures on s390x
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 09 Aug 2024 20:20:20 -0400
+
 libadwaita-1 (1.6~beta-1) experimental; urgency=medium
 
   * New upstream release
@@ -247,18 +452,49 @@ libadwaita-1 (1.5.2-2) unstable; urgency
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Wed, 31 Jul 2024 14:38:54 -0400
 
+libadwaita-1 (1.5.2-1ubuntu1) oracular; urgency=medium
+
+  * Merge with Debian (LP: #2067418). Remaining changes:
+    - Add patch to support Yaru accent colors using Adwaita theming
+    - Set minimum GTK4 to 4.13.4
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 28 Jun 2024 15:04:28 -0400
+
 libadwaita-1 (1.5.2-1) unstable; urgency=medium
 
   * New upstream release
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 28 Jun 2024 14:32:35 -0400
 
+libadwaita-1 (1.5.1-1ubuntu1) oracular; urgency=medium
+
+  * Merge with Debian (LP: #2067418). Remaining changes:
+    - Add patch to support Yaru accent colors using Adwaita theming
+    - Set minimum GTK4 to 4.13.4
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Tue, 28 May 2024 15:49:06 -0400
+
 libadwaita-1 (1.5.1-1) unstable; urgency=medium
 
   * New upstream release
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Tue, 28 May 2024 15:46:47 -0400
 
+libadwaita-1 (1.5.0-1ubuntu2) noble; urgency=medium
+
+  * No-change rebuild for CVE-2024-3094
+
+ -- Steve Langasek <steve.langasek@ubuntu.com>  Sun, 31 Mar 2024 01:39:13 +0000
+
+libadwaita-1 (1.5.0-1ubuntu1) noble; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Add patch to support Yaru accent colors using Adwaita theming
+    - Drop all revert patches
+    - Set minimum GTK4 to 4.13.4
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Wed, 20 Mar 2024 15:37:01 -0400
+
 libadwaita-1 (1.5.0-1) unstable; urgency=medium
 
   * New upstream release
@@ -266,6 +502,15 @@ libadwaita-1 (1.5.0-1) unstable; urgency
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Wed, 20 Mar 2024 15:35:07 -0400
 
+libadwaita-1 (1.5~rc-1ubuntu1) noble; urgency=medium
+
+  * Merge with Debian. Remaining change:
+    - Add patch to support Yaru accent colors using Adwaita theming
+  * Drop all revert patches
+  * Set minimum GTK4 to 4.13.4
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Thu, 07 Mar 2024 09:35:48 -0500
+
 libadwaita-1 (1.5~rc-1) unstable; urgency=medium
 
   * New upstream release
@@ -274,6 +519,13 @@ libadwaita-1 (1.5~rc-1) unstable; urgenc
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Thu, 07 Mar 2024 09:14:27 -0500
 
+libadwaita-1 (1.5~beta-1ubuntu1) noble; urgency=medium
+
+  * Merge with Debian. Remaining change:
+    - Add patch to support Yaru accent colors using Adwaita theming
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Sat, 10 Feb 2024 18:59:31 -0500
+
 libadwaita-1 (1.5~beta-1) unstable; urgency=medium
 
   * New upstream release
@@ -282,12 +534,26 @@ libadwaita-1 (1.5~beta-1) unstable; urge
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 09 Feb 2024 16:01:14 -0500
 
+libadwaita-1 (1.4.2-1ubuntu1) noble; urgency=medium
+
+  * Merge with Debian. Remaining change:
+    - Add patch to support Yaru accent colors using Adwaita theming
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Sun, 17 Dec 2023 13:23:40 -0500
+
 libadwaita-1 (1.4.2-1) unstable; urgency=medium
 
   * New upstream release
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Tue, 05 Dec 2023 17:19:41 -0500
 
+libadwaita-1 (1.4.1-1ubuntu1) noble; urgency=medium
+
+  * Merge with Debian. Remaining change:
+    - Add patch to support Yaru accent colors using Adwaita theming
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 01 Dec 2023 12:10:16 -0500
+
 libadwaita-1 (1.4.1-1) unstable; urgency=medium
 
   * New upstream release
@@ -310,12 +576,26 @@ libadwaita-1 (1.4.0-2) unstable; urgency
 
  -- Simon McVittie <smcv@debian.org>  Wed, 15 Nov 2023 12:26:45 +0000
 
+libadwaita-1 (1.4.0-1ubuntu1) mantic; urgency=medium
+
+  * Merge with Debian. Remaining change:
+    - Add patch to support Yaru accent colors using Adwaita theming
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 15 Sep 2023 14:02:13 -0400
+
 libadwaita-1 (1.4.0-1) unstable; urgency=medium
 
   * New upstream release
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Fri, 15 Sep 2023 13:57:32 -0400
 
+libadwaita-1 (1.4~rc-1ubuntu1) mantic; urgency=medium
+
+  * Merge with Debian. Remaining change:
+    - Add patch to support Yaru accent colors using Adwaita theming
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Tue, 05 Sep 2023 10:53:28 -0400
+
 libadwaita-1 (1.4~rc-1) unstable; urgency=medium
 
   * New upstream release
@@ -329,6 +609,15 @@ libadwaita-1 (1.4~beta-3) unstable; urge
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Sun, 27 Aug 2023 20:50:09 -0400
 
+libadwaita-1 (1.4~beta-2ubuntu1) mantic; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - debian/patches: Support yaru accent colors using adwaita theming
+    - debian/patches: Use semi-transparent icons and pictures when disabled
+  * debian/patches: Rebase
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Wed, 23 Aug 2023 02:15:02 +0200
+
 libadwaita-1 (1.4~beta-2) experimental; urgency=medium
 
   * debian/control.in: Have -dev package depend on libappstream-dev
@@ -357,12 +646,41 @@ libadwaita-1 (1.3.3-2) unstable; urgency
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Wed, 19 Jul 2023 07:55:29 -0400
 
+libadwaita-1 (1.3.3-1ubuntu1) mantic; urgency=medium
+
+  [ Marco Trevisan (Treviño) ]
+  * Merge with Debian. Remaining changes:
+    - debian/patches: Support yaru accent colors using adwaita theming
+  * debian/patches: refresh
+  * debian/patches: Reuse GSettings implementation for yaru accents
+    (LP: #2013126)
+
+  [ Grigorii Khvatskii ]
+  * debian/patches: Always init gsettings and legacy settings backends
+    (LP: #2013126)
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Fri, 09 Jun 2023 21:29:44 +0200
+
 libadwaita-1 (1.3.3-1) experimental; urgency=medium
 
   * New upstream release (LP: #2023411)
 
  -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Fri, 09 Jun 2023 20:04:20 +0200
 
+libadwaita-1 (1.3.2-1ubuntu2) mantic; urgency=medium
+
+  * Restore updates to the accent color patch from 1.3.1-1ubuntu2
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Thu, 18 May 2023 07:28:47 -0400
+
+libadwaita-1 (1.3.2-1ubuntu1) mantic; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Depend on gsettings-desktop-schemas, needed for yaru patch
+    - debian/patches: Support yaru accent colors using adwaita theming
+
+ -- Jeremy Bícha <jbicha@ubuntu.com>  Wed, 17 May 2023 10:14:21 -0400
+
 libadwaita-1 (1.3.2-1) experimental; urgency=medium
 
   * New upstream release
@@ -370,6 +688,29 @@ libadwaita-1 (1.3.2-1) experimental; urg
 
  -- Jeremy Bícha <jbicha@ubuntu.com>  Wed, 17 May 2023 10:11:22 -0400
 
+libadwaita-1 (1.3.1-1ubuntu2) lunar; urgency=medium
+
+  * debian/patches: Improve computation of optimized accent color.
+    Use actual background colors as constrant
+  * debian/patches: Optimize accent color contrast for dark themes
+  * debian/patches: Actually use yaru colors on backgrounds.
+    It was already the case in the past but some upstream definitions
+    changed and so the injected code.
+  * debian/patches: Optimize contrast for accented hyperlinks
+  * debian/patches: Cherry-pick upstream fixes from stable branch
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Mon, 27 Mar 2023 18:43:34 +0200
+
+libadwaita-1 (1.3.1-1ubuntu1) lunar; urgency=medium
+
+  * Merge with debian, including new upstream release
+  * debian/patches: Do not crash if setting a theme with Yaru prefix
+  * debian/patches: Expose yaru accent color as style manager property
+  * Remaining changes with debian:
+  - debian/patches: Support yaru accent colors using adwaita theming
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Tue, 21 Mar 2023 01:28:53 +0100
+
 libadwaita-1 (1.3.1-1) experimental; urgency=medium
 
   * New upstream release
@@ -377,6 +718,15 @@ libadwaita-1 (1.3.1-1) experimental; urg
 
  -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Tue, 21 Mar 2023 01:25:04 +0100
 
+libadwaita-1 (1.3~rc-1ubuntu1) lunar; urgency=medium
+
+  * Merge with debian, including new upstream release
+  * debian/patch: Update Yaru accent colors support
+  * Remaining changes with debian:
+    - debian/patches: Support yaru accent colors using adwaita theming
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Thu, 16 Mar 2023 04:10:28 +0100
+
 libadwaita-1 (1.3~rc-1) experimental; urgency=medium
 
   * New upstream release
@@ -393,12 +743,19 @@ libadwaita-1 (1.3~beta-1) experimental;
 
  -- Jeremy Bicha <jbicha@ubuntu.com>  Mon, 13 Feb 2023 13:30:59 -0500
 
-libadwaita-1 (1.2.2-1) unstable; urgency=medium
+libadwaita-1 (1.3~alpha-0ubuntu2) UNRELEASED; urgency=medium
+
+  * Merge changes from 1.2.1-2
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Thu, 12 Jan 2023 16:00:44 -0500
+
+libadwaita-1 (1.3~alpha-0ubuntu1) lunar; urgency=medium
 
   * New upstream release
-  * debian/gbp.conf, debian/control.in: Branch for bookworm
+  * debian/control.in: Bump minimum GTK4 to 4.9.2
+  * debian/libadwaita-1.0.symbols: Add new symbols
 
- -- Jeremy Bicha <jbicha@ubuntu.com>  Mon, 13 Feb 2023 10:12:10 -0500
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Thu, 12 Jan 2023 14:01:27 -0500
 
 libadwaita-1 (1.2.1-2) unstable; urgency=medium
 
@@ -407,18 +764,49 @@ libadwaita-1 (1.2.1-2) unstable; urgency
 
  -- Jeremy Bicha <jbicha@ubuntu.com>  Thu, 12 Jan 2023 14:21:14 -0500
 
+libadwaita-1 (1.2.1-1ubuntu1) lunar; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Depend on gsettings-desktop-schemas, needed for yaru patch
+    - debian/patches: Support yaru accent colors using adwaita theming
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Wed, 11 Jan 2023 08:31:45 -0500
+
 libadwaita-1 (1.2.1-1) unstable; urgency=medium
 
   * New upstream release
 
  -- Jeremy Bicha <jbicha@ubuntu.com>  Mon, 09 Jan 2023 14:18:28 -0500
 
+libadwaita-1 (1.2.0-1ubuntu2) kinetic; urgency=medium
+
+  * debian/patches: Compute the fg accent color taking care of contrast with bg
+    (LP: #1989822)
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Fri, 16 Sep 2022 01:51:02 +0200
+
+libadwaita-1 (1.2.0-1ubuntu1) kinetic; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Depend on gsettings-desktop-schemas, needed for yaru patch
+    - debian/patches: Support yaru accent colors using adwaita theming
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Thu, 15 Sep 2022 13:12:15 -0400
+
 libadwaita-1 (1.2.0-1) unstable; urgency=medium
 
   * New upstream release
 
  -- Jeremy Bicha <jbicha@ubuntu.com>  Thu, 15 Sep 2022 13:05:06 -0400
 
+libadwaita-1 (1.2~rc-1ubuntu1) kinetic; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Depend on gsettings-desktop-schemas, needed for yaru patch
+    - debian/patches: Support yaru accent colors using adwaita theming
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Tue, 06 Sep 2022 15:02:23 -0400
+
 libadwaita-1 (1.2~rc-1) unstable; urgency=medium
 
   * New upstream release
@@ -426,6 +814,14 @@ libadwaita-1 (1.2~rc-1) unstable; urgenc
 
  -- Jeremy Bicha <jbicha@ubuntu.com>  Tue, 06 Sep 2022 14:59:46 -0400
 
+libadwaita-1 (1.2~beta-1ubuntu1) kinetic; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Depend on gsettings-desktop-schemas, needed for yaru patch
+    - debian/patches: Support yaru accent colors using adwaita theming
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Mon, 08 Aug 2022 17:09:34 -0400
+
 libadwaita-1 (1.2~beta-1) unstable; urgency=medium
 
   * New upstream release
@@ -433,6 +829,15 @@ libadwaita-1 (1.2~beta-1) unstable; urge
 
  -- Jeremy Bicha <jbicha@ubuntu.com>  Fri, 05 Aug 2022 18:21:01 -0400
 
+libadwaita-1 (1.2~alpha-1ubuntu1) kinetic; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Depend on gsettings-desktop-schemas, needed for yaru patch
+    - debian/patches: Support yaru accent colors using adwaita theming
+  * Refresh Yaru patch
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Thu, 14 Jul 2022 21:42:13 +0200
+
 libadwaita-1 (1.2~alpha-1) unstable; urgency=medium
 
   * New upstream release
@@ -440,6 +845,14 @@ libadwaita-1 (1.2~alpha-1) unstable; urg
 
  -- Jeremy Bicha <jbicha@ubuntu.com>  Thu, 14 Jul 2022 16:07:50 +0200
 
+libadwaita-1 (1.1.2-1ubuntu1) kinetic; urgency=medium
+
+  * Merge with Debian. Remaining changes:
+    - Depend on gsettings-desktop-schemas, needed for yaru patch
+    - debian/patches: Support yaru accent colors using adwaita theming
+
+ -- Nathan Pratta Teodosio <nathan.teodosio@canonical.com>  Fri, 03 Jun 2022 11:05:32 -0300
+
 libadwaita-1 (1.1.3-1) unstable; urgency=medium
 
   * New upstream release
@@ -468,6 +881,21 @@ libadwaita-1 (1.1.1-1) unstable; urgency
 
  -- Jeremy Bicha <jbicha@ubuntu.com>  Thu, 28 Apr 2022 10:14:08 -0400
 
+libadwaita-1 (1.1.0-1ubuntu2) jammy; urgency=medium
+
+  * Depend on gsettings-desktop-schemas, needed for yaru patch
+
+ -- Jeremy Bicha <jbicha@ubuntu.com>  Wed, 06 Apr 2022 16:03:48 -0400
+
+libadwaita-1 (1.1.0-1ubuntu1) jammy; urgency=medium
+
+  * debian/control: Add libxml2-utils as B-D to get xmllint
+  * debian: Prepare for ubuntu branching
+  * debian/patches: Support yaru accent colors using adwaita theming
+    (LP: #1967777)
+
+ -- Marco Trevisan (Treviño) <marco@ubuntu.com>  Tue, 05 Apr 2022 17:33:10 +0200
+
 libadwaita-1 (1.1.0-1) unstable; urgency=medium
 
   * New upstream release
diff -pruN 1.8.0-1/debian/control 1.8.0-1ubuntu2/debian/control
--- 1.8.0-1/debian/control	2025-09-12 19:54:39.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/control	2025-09-24 12:52:06.000000000 +0000
@@ -1,7 +1,8 @@
 Source: libadwaita-1
 Section: libs
 Priority: optional
-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
+Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
+XSBC-Original-Maintainer: Debian GNOME Maintainers <pkg-gnome-maintainers@lists.alioth.debian.org>
 Uploaders: Guido Günther <agx@sigxcpu.org>, Jeremy Bícha <jbicha@ubuntu.com>, Marco Trevisan (Treviño) <marco@ubuntu.com>
 Build-Depends: debhelper-compat (= 13),
                dh-sequence-gir,
diff -pruN 1.8.0-1/debian/gbp.conf 1.8.0-1ubuntu2/debian/gbp.conf
--- 1.8.0-1/debian/gbp.conf	2025-09-12 19:54:39.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/gbp.conf	2025-09-24 12:52:06.000000000 +0000
@@ -1,6 +1,7 @@
 [DEFAULT]
 pristine-tar = True
-debian-branch = debian/latest
+debian-branch = ubuntu/latest
+debian-tag = ubuntu/%(version)s
 upstream-branch = upstream/latest
 
 [buildpackage]
diff -pruN 1.8.0-1/debian/patches/series 1.8.0-1ubuntu2/debian/patches/series
--- 1.8.0-1/debian/patches/series	2025-09-12 19:54:39.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/patches/series	2025-09-24 12:52:06.000000000 +0000
@@ -1,2 +1,7 @@
 stylesheet-common-Use-disabled-opacity-for-disabled-pictu.patch
 stylesheet-common-Use-opacity-for-all-disabled-gtk-images.patch
+ubuntu/accent-color-Return-return-orange-as-default-color.patch
+ubuntu/style-manager-Support-Yaru-accent-colors.patch
+ubuntu/accent-color-Always-expose-and-use-yaru-accent-colors-val.patch
+ubuntu/style-Add-wartybrown-accent-support.patch
+ubuntu/adw-spinner-paintable-design-and-animation.patch
diff -pruN 1.8.0-1/debian/patches/ubuntu/accent-color-Always-expose-and-use-yaru-accent-colors-val.patch 1.8.0-1ubuntu2/debian/patches/ubuntu/accent-color-Always-expose-and-use-yaru-accent-colors-val.patch
--- 1.8.0-1/debian/patches/ubuntu/accent-color-Always-expose-and-use-yaru-accent-colors-val.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/patches/ubuntu/accent-color-Always-expose-and-use-yaru-accent-colors-val.patch	2025-09-24 12:52:06.000000000 +0000
@@ -0,0 +1,111 @@
+From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
+Date: Wed, 14 Aug 2024 22:27:29 -0400
+Subject: accent-color: Always expose and use yaru accent colors values when
+ in Yaru
+
+When running in yaru mode we want to make sure the apps will always use
+the yaru colors, so expose them both via the css variables and the API
+values
+---
+ src/adw-accent-color.c      | 56 ++++++++++++++++++++++++++++++++++++++-------
+ src/stylesheet/_colors.scss | 12 ++++++++++
+ 2 files changed, 60 insertions(+), 8 deletions(-)
+
+diff --git a/src/adw-accent-color.c b/src/adw-accent-color.c
+index 902329a..0ce6fbd 100644
+--- a/src/adw-accent-color.c
++++ b/src/adw-accent-color.c
+@@ -11,17 +11,19 @@
+ 
+ #include "adw-color-utils-private.h"
+ 
++#include "adw-settings-private.h"
++
+ /**
+  * AdwAccentColor:
+- * @ADW_ACCENT_COLOR_BLUE: Use a blue color (`#3584e4`). This is the default value.
+- * @ADW_ACCENT_COLOR_TEAL: Use a teal color (`#2190a4`).
+- * @ADW_ACCENT_COLOR_GREEN: Use a green color (`#3a944a`).
++ * @ADW_ACCENT_COLOR_BLUE: Use a blue color (`#3584e4` or `#0073e5` in Yaru). This is the default value.
++ * @ADW_ACCENT_COLOR_TEAL: Use a teal color (`#2190a4` or `#4b8501` in Yaru).
++ * @ADW_ACCENT_COLOR_GREEN: Use a green color (`#3a944a` or `#4b8501` in Yaru).
+  * @ADW_ACCENT_COLOR_YELLOW: Use a yellow color (`#c88800`).
+- * @ADW_ACCENT_COLOR_ORANGE: Use a orange color (`#ed5b00`).
+- * @ADW_ACCENT_COLOR_RED: Use a red color (`#e62d42`).
+- * @ADW_ACCENT_COLOR_PINK: Use a pink color (`#d56199`).
+- * @ADW_ACCENT_COLOR_PURPLE: Use a purple color (`#9141ac`).
+- * @ADW_ACCENT_COLOR_SLATE: Use a slate color (`#6f8396`).
++ * @ADW_ACCENT_COLOR_ORANGE: Use a orange color (`#ed5b00` or `#e95420` in Yaru).
++ * @ADW_ACCENT_COLOR_RED: Use a red color (`#e62d42` or `#da3450` in Yaru).
++ * @ADW_ACCENT_COLOR_PINK: Use a pink color (`#d56199` or `#b34cb3` in Yaru).
++ * @ADW_ACCENT_COLOR_PURPLE: Use a purple color (`#9141ac` or `#7764d8` in Yaru).
++ * @ADW_ACCENT_COLOR_SLATE: Use a slate color (`#6f8396` or `#657b69` in Yaru).
+  *
+  * Describes the available system accent colors.
+  *
+@@ -49,6 +51,44 @@ adw_accent_color_to_rgba (AdwAccentColor  self,
+   g_return_if_fail (self <= ADW_ACCENT_COLOR_SLATE);
+   g_return_if_fail (rgba != NULL);
+ 
++  if (G_LIKELY (adw_settings_get_yaru_accent (adw_settings_get_default ())))
++    {
++      switch (self) {
++      case ADW_ACCENT_COLOR_BLUE:
++        hex = "#0073e5";
++        break;
++      case ADW_ACCENT_COLOR_TEAL:
++        hex = "#308280";
++        break;
++      case ADW_ACCENT_COLOR_GREEN:
++        hex = "#4b8501";
++        break;
++      case ADW_ACCENT_COLOR_YELLOW:
++        hex = "#c88800";
++        break;
++      case ADW_ACCENT_COLOR_ORANGE:
++        hex = "#e95420";
++        break;
++      case ADW_ACCENT_COLOR_RED:
++        hex = "#da3450";
++        break;
++      case ADW_ACCENT_COLOR_PINK:
++        hex = "#b34cb3";
++        break;
++      case ADW_ACCENT_COLOR_PURPLE:
++        hex = "#7764d8";
++        break;
++      case ADW_ACCENT_COLOR_SLATE:
++        hex = "#657b69";
++        break;
++      default:
++        g_assert_not_reached ();
++      }
++
++      if (rgba)
++        gdk_rgba_parse (rgba, hex);
++    }
++
+   switch (self) {
+   case ADW_ACCENT_COLOR_BLUE:
+     hex = "#3584e4";
+diff --git a/src/stylesheet/_colors.scss b/src/stylesheet/_colors.scss
+index e8afca2..aa16a02 100644
+--- a/src/stylesheet/_colors.scss
++++ b/src/stylesheet/_colors.scss
+@@ -334,4 +334,16 @@ $is_yaru: false !default;
+ @if $is_yaru {
+   $link_color: var(--yaru-link-color);
+   $link_visited_color: var(--yaru-link-visited-color);
++
++  :root {
++    --accent-blue: #0073e5;
++    --accent-teal: #308280;
++    --accent-green: #4b8501;
++    --accent-yellow: #c88800;
++    --accent-orange: #e95420;
++    --accent-red: #da3450;
++    --accent-pink: #b34cb3;
++    --accent-purple: #7764d8;
++    --accent-slate: #657b69;
++  }
+ }
diff -pruN 1.8.0-1/debian/patches/ubuntu/accent-color-Return-return-orange-as-default-color.patch 1.8.0-1ubuntu2/debian/patches/ubuntu/accent-color-Return-return-orange-as-default-color.patch
--- 1.8.0-1/debian/patches/ubuntu/accent-color-Return-return-orange-as-default-color.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/patches/ubuntu/accent-color-Return-return-orange-as-default-color.patch	2025-09-24 12:52:06.000000000 +0000
@@ -0,0 +1,122 @@
+From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
+Date: Wed, 14 Aug 2024 15:20:44 -0400
+Subject: accent-color: Return return orange as default color
+
+---
+ src/adw-accent-color.c         |  2 +-
+ src/adw-settings-impl-portal.c |  2 +-
+ src/adw-settings-impl.c        |  2 +-
+ src/adw-settings.c             | 10 ++++++----
+ src/adw-style-manager.c        |  4 ++--
+ 5 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/src/adw-accent-color.c b/src/adw-accent-color.c
+index b6bdc5b..902329a 100644
+--- a/src/adw-accent-color.c
++++ b/src/adw-accent-color.c
+@@ -161,7 +161,7 @@ adw_accent_color_nearest_from_rgba (GdkRGBA *original_color)
+ {
+   float L, c, h;
+ 
+-  g_return_val_if_fail (original_color != NULL, ADW_ACCENT_COLOR_BLUE);
++  g_return_val_if_fail (original_color != NULL, ADW_ACCENT_COLOR_ORANGE);
+ 
+   adw_rgb_to_oklch (original_color->red,
+                     original_color->green,
+diff --git a/src/adw-settings-impl-portal.c b/src/adw-settings-impl-portal.c
+index 2fce5c4..eaac7c9 100644
+--- a/src/adw-settings-impl-portal.c
++++ b/src/adw-settings-impl-portal.c
+@@ -130,7 +130,7 @@ get_fdo_accent_color (GVariant *variant)
+   g_variant_get (variant, "(ddd)", &r, &g, &b);
+ 
+   if (r < 0 || g < 0 || b < 0 || r > 1 || g > 1 || b > 1)
+-    return ADW_ACCENT_COLOR_BLUE;
++    return ADW_ACCENT_COLOR_ORANGE;
+ 
+   rgba.red = r;
+   rgba.green = g;
+diff --git a/src/adw-settings-impl.c b/src/adw-settings-impl.c
+index 684ca90..d3d4046 100644
+--- a/src/adw-settings-impl.c
++++ b/src/adw-settings-impl.c
+@@ -266,7 +266,7 @@ adw_settings_impl_get_accent_color (AdwSettingsImpl *self)
+ {
+   AdwSettingsImplPrivate *priv  = adw_settings_impl_get_instance_private (self);
+ 
+-  g_return_val_if_fail (ADW_IS_SETTINGS_IMPL (self), ADW_ACCENT_COLOR_BLUE);
++  g_return_val_if_fail (ADW_IS_SETTINGS_IMPL (self), ADW_ACCENT_COLOR_ORANGE);
+ 
+   return priv->accent_color;
+ }
+diff --git a/src/adw-settings.c b/src/adw-settings.c
+index 1cd1786..c17c27c 100644
+--- a/src/adw-settings.c
++++ b/src/adw-settings.c
+@@ -248,6 +248,8 @@ adw_settings_constructed (GObject *object)
+ 
+   G_OBJECT_CLASS (adw_settings_parent_class)->constructed (object);
+ 
++  self->accent_color = ADW_ACCENT_COLOR_ORANGE;
++
+   init_debug (self, &found_color_scheme, &found_high_contrast, &found_accent_colors);
+ 
+ #ifdef __APPLE__
+@@ -393,7 +395,7 @@ adw_settings_class_init (AdwSettingsClass *klass)
+   props[PROP_ACCENT_COLOR] =
+     g_param_spec_enum ("accent-color", NULL, NULL,
+                        ADW_TYPE_ACCENT_COLOR,
+-                       ADW_ACCENT_COLOR_BLUE,
++                       ADW_ACCENT_COLOR_ORANGE,
+                        G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ 
+   props[PROP_DOCUMENT_FONT_NAME] =
+@@ -470,7 +472,7 @@ adw_settings_get_system_supports_accent_colors (AdwSettings *self)
+ AdwAccentColor
+ adw_settings_get_accent_color (AdwSettings *self)
+ {
+-  g_return_val_if_fail (ADW_IS_SETTINGS (self), ADW_ACCENT_COLOR_BLUE);
++  g_return_val_if_fail (ADW_IS_SETTINGS (self), ADW_ACCENT_COLOR_ORANGE);
+ 
+   if (self->override)
+     return self->accent_color_override;
+@@ -533,7 +535,7 @@ adw_settings_end_override (AdwSettings *self)
+   self->color_scheme_override = ADW_SYSTEM_COLOR_SCHEME_DEFAULT;
+   self->high_contrast_override = FALSE;
+   self->system_supports_accent_colors_override = FALSE;
+-  self->accent_color_override = ADW_ACCENT_COLOR_BLUE;
++  self->accent_color_override = ADW_ACCENT_COLOR_ORANGE;
+ 
+   if (notify_system_supports_color_scheme)
+     g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SYSTEM_SUPPORTS_COLOR_SCHEMES]);
+@@ -613,7 +615,7 @@ adw_settings_override_system_supports_accent_colors (AdwSettings *self,
+     return;
+ 
+   if (!system_supports_accent_colors)
+-    adw_settings_override_accent_color (self, ADW_ACCENT_COLOR_BLUE);
++    adw_settings_override_accent_color (self, ADW_ACCENT_COLOR_ORANGE);
+ 
+   self->system_supports_accent_colors_override = system_supports_accent_colors;
+ 
+diff --git a/src/adw-style-manager.c b/src/adw-style-manager.c
+index 8360b21..fd2b4ae 100644
+--- a/src/adw-style-manager.c
++++ b/src/adw-style-manager.c
+@@ -776,7 +776,7 @@ adw_style_manager_class_init (AdwStyleManagerClass *klass)
+   props[PROP_ACCENT_COLOR] =
+     g_param_spec_enum ("accent-color", NULL, NULL,
+                        ADW_TYPE_ACCENT_COLOR,
+-                       ADW_ACCENT_COLOR_BLUE,
++                       ADW_ACCENT_COLOR_ORANGE,
+                        G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ 
+   /**
+@@ -1114,7 +1114,7 @@ adw_style_manager_get_system_supports_accent_colors (AdwStyleManager *self)
+ AdwAccentColor
+ adw_style_manager_get_accent_color (AdwStyleManager *self)
+ {
+-  g_return_val_if_fail (ADW_IS_STYLE_MANAGER (self), ADW_ACCENT_COLOR_BLUE);
++  g_return_val_if_fail (ADW_IS_STYLE_MANAGER (self), ADW_ACCENT_COLOR_ORANGE);
+ 
+   return adw_settings_get_accent_color (self->settings);
+ }
diff -pruN 1.8.0-1/debian/patches/ubuntu/adw-spinner-paintable-design-and-animation.patch 1.8.0-1ubuntu2/debian/patches/ubuntu/adw-spinner-paintable-design-and-animation.patch
--- 1.8.0-1/debian/patches/ubuntu/adw-spinner-paintable-design-and-animation.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/patches/ubuntu/adw-spinner-paintable-design-and-animation.patch	2025-09-24 12:52:06.000000000 +0000
@@ -0,0 +1,219 @@
+From: Vincent Renzo Quilon <kaurichannel@gmail.com>
+Date: Tue, 19 Aug 2025 15:36:28 +0800
+Subject: Align AdwSpinnerPaintable Design and Animation to
+ YaruCircularProgressIndicator
+
+Forwarded: no, ubuntu only.
+Bug-Ubuntu: https://bugs.launchpad.net/bugs/2114778
+---
+ src/adw-spinner-paintable.c | 155 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 155 insertions(+)
+
+diff --git a/src/adw-spinner-paintable.c b/src/adw-spinner-paintable.c
+index aaf0eac..74ed7d6 100644
+--- a/src/adw-spinner-paintable.c
++++ b/src/adw-spinner-paintable.c
+@@ -11,6 +11,7 @@
+ 
+ #include "adw-animation-util.h"
+ #include "adw-easing.h"
++#include "adw-settings-private.h"
+ #include "adw-timed-animation.h"
+ 
+ #include <math.h>
+@@ -34,6 +35,17 @@
+  * where k is an integer */
+ #define N_CYCLES 53
+ 
++/* Yaru Definitions */
++#define YARU_LARGE_WIDTH 6
++#define YARU_SMALL_WIDTH 2
++#define YARU_START_ANGLE (-G_PI * 0.5)
++#define SEGMENT_ANGLE (2 * G_PI / 3) // 120 degress per segment
++#define YARU_SPIN_DURATION_MS 8000
++#define YARU_N_CYCLES 6
++#define UPPER_MIN_GAP_ANGLE 0.2
++#define LOWER_MIN_GAP_ANGLE 0.1
++#define MAX_GAP_ANGLE 0.5
++
+ /**
+  * AdwSpinnerPaintable:
+  *
+@@ -194,6 +206,28 @@ widget_map_cb (AdwSpinnerPaintable *self)
+   adw_animation_play (self->animation);
+ }
+ 
++static void
++update_animation_style (AdwSpinnerPaintable *self)
++{
++  g_return_if_fail (ADW_IS_TIMED_ANIMATION (self->animation));
++
++  if G_UNLIKELY (!adw_settings_get_yaru_accent (adw_settings_get_default ())) {
++    adw_timed_animation_set_easing (ADW_TIMED_ANIMATION (self->animation),
++                                    ADW_LINEAR);
++    adw_timed_animation_set_duration (ADW_TIMED_ANIMATION (self->animation),
++                                      ADW_DURATION_INFINITE);
++    adw_timed_animation_set_value_to (ADW_TIMED_ANIMATION (self->animation), 0);
++    return;
++  }
++
++  adw_timed_animation_set_easing (ADW_TIMED_ANIMATION(self->animation),
++                                  ADW_EASE_IN_OUT_SINE);
++  adw_timed_animation_set_duration (ADW_TIMED_ANIMATION(self->animation),
++                                    YARU_SPIN_DURATION_MS);
++  adw_timed_animation_set_value_to (ADW_TIMED_ANIMATION(self->animation),
++                                    2 * YARU_N_CYCLES * G_PI);
++}
++
+ static void
+ adw_spinner_paintable_dispose (GObject *object)
+ {
+@@ -282,6 +316,113 @@ adw_spinner_paintable_init (AdwSpinnerPaintable *self)
+ {
+ }
+ 
++static void
++adw_yaru_spinner_paintable_snapshot_symbolic (GtkSymbolicPaintable *paintable,
++                                              GtkSnapshot          *snapshot,
++                                              double                width,
++                                              double                height,
++                                              const GdkRGBA        *colors,
++                                              gsize                 n_colors)
++{
++  AdwSpinnerPaintable *self = ADW_SPINNER_PAINTABLE (paintable);
++  float radius, radius_t, line_width;
++  GdkRGBA color;
++  g_autoptr (GskPathBuilder) builder = NULL;
++  g_autoptr (GskPath) circle_path = NULL;
++  g_autoptr (GskStroke) stroke = NULL;
++  g_autoptr (GskPathMeasure) measure = NULL;
++  double progress;
++  float base_angle, start_angle, end_angle, length;
++  float gap_angle, min_gap_angle, gap_angle_t_actual, gap_angle_t;
++  uint8_t segment_counter;
++  GskPathPoint start_point, end_point;
++
++  radius = MIN (floorf (MIN (width, height) / 2), MAX_RADIUS);
++  radius_t = inverse_lerp (MIN_RADIUS, MAX_RADIUS, radius);
++  line_width = adw_lerp (YARU_SMALL_WIDTH, YARU_LARGE_WIDTH,  radius_t);
++
++  if (radius < line_width / 2)
++    return;
++
++  gtk_snapshot_translate (snapshot,
++                          &GRAPHENE_POINT_INIT (roundf (width / 2),
++                                                roundf (height / 2)));
++
++  stroke = gsk_stroke_new (line_width);
++  gsk_stroke_set_line_cap (stroke, GSK_LINE_CAP_BUTT);
++
++  gtk_snapshot_push_mask (snapshot, GSK_MASK_MODE_LUMINANCE);
++
++  /* Circle */
++
++  builder = gsk_path_builder_new ();
++
++  gsk_path_builder_add_circle (builder,
++                               &GRAPHENE_POINT_INIT (0, 0),
++                               radius - line_width / 2);
++  circle_path = gsk_path_builder_free_to_path (g_steal_pointer (&builder));
++  color.alpha = 1;
++
++  /* Moving part */
++
++  if (self->animation)
++    progress = adw_animation_get_value (self->animation);
++  else
++    progress = START_ANGLE;
++
++
++  segment_counter = 0;
++  base_angle = (float) progress;
++
++  min_gap_angle = adw_lerp(UPPER_MIN_GAP_ANGLE, LOWER_MIN_GAP_ANGLE, radius_t);
++  gap_angle_t_actual = inverse_lerp (0, 2 * G_PI * YARU_N_CYCLES, base_angle);
++  gap_angle_t = 1 - fabs (2 * gap_angle_t_actual - 1);
++  gap_angle = adw_lerp (min_gap_angle, MAX_GAP_ANGLE, gap_angle_t);
++
++  end_angle = base_angle + START_ANGLE - SEGMENT_ANGLE;
++  start_angle = base_angle + START_ANGLE - gap_angle;
++
++  measure = gsk_path_measure_new (circle_path);
++  length = gsk_path_measure_get_length (measure);
++
++  /* Arcs */
++
++  do {
++    g_autoptr(GskPath) arc_path = NULL;
++    g_autoptr(GskPathBuilder) arc_builder = NULL;
++
++    start_angle = normalize_angle (start_angle);
++    end_angle = normalize_angle (end_angle);
++
++    g_assert (gsk_path_measure_get_point (measure,
++                                          start_angle / (G_PI * 2) * length,
++                                          &start_point));
++    g_assert (gsk_path_measure_get_point (measure,
++                                          end_angle / (G_PI * 2) * length,
++                                          &end_point));
++
++    arc_builder = gsk_path_builder_new ();
++    gsk_path_builder_add_segment (arc_builder, circle_path, &end_point, &start_point);
++    arc_path = gsk_path_builder_free_to_path (g_steal_pointer (&arc_builder));
++
++    color.red = color.green = color.blue = 1;
++    gtk_snapshot_append_stroke (snapshot, arc_path, stroke, &color);
++
++    segment_counter++;
++    start_angle += SEGMENT_ANGLE;
++    end_angle += SEGMENT_ANGLE;
++  } while (segment_counter < 3);
++
++  /* Mask with the correct color */
++
++  gtk_snapshot_pop (snapshot);
++
++  gtk_snapshot_append_color (snapshot,
++                             &colors[0],
++                             &GRAPHENE_RECT_INIT (-radius, -radius, radius * 2, radius * 2));
++  gtk_snapshot_pop (snapshot);
++}
++
+ static void
+ adw_spinner_paintable_snapshot_symbolic (GtkSymbolicPaintable *paintable,
+                                          GtkSnapshot          *snapshot,
+@@ -301,6 +442,13 @@ adw_spinner_paintable_snapshot_symbolic (GtkSymbolicPaintable *paintable,
+   GskPathPoint start_point, end_point;
+   GskPathMeasure *measure;
+ 
++  if G_LIKELY (adw_settings_get_yaru_accent (adw_settings_get_default ())) {
++    adw_yaru_spinner_paintable_snapshot_symbolic (paintable, snapshot,
++                                                  width, height,
++                                                  colors, n_colors);
++    return;
++  }
++
+   radius = MIN (floorf (MIN (width, height) / 2), MAX_RADIUS);
+   line_width = adw_lerp (SMALL_WIDTH, LARGE_WIDTH,
+                          inverse_lerp (MIN_RADIUS, MAX_RADIUS, radius));
+@@ -477,6 +625,8 @@ adw_spinner_paintable_set_widget (AdwSpinnerPaintable *self,
+     g_clear_object (&self->animation);
+ 
+     g_signal_handlers_disconnect_by_func (self->widget, widget_map_cb, self);
++    g_signal_handlers_disconnect_by_func (adw_settings_get_default (),
++                                          update_animation_style, self);
+ 
+     g_object_weak_unref (G_OBJECT (self->widget),
+                          (GWeakNotify) widget_notify_cb,
+@@ -500,6 +650,11 @@ adw_spinner_paintable_set_widget (AdwSpinnerPaintable *self,
+     adw_timed_animation_set_repeat_count (ADW_TIMED_ANIMATION (self->animation), 0);
+     adw_timed_animation_set_easing (ADW_TIMED_ANIMATION (self->animation), ADW_LINEAR);
+ 
++    update_animation_style (self);
++    g_signal_connect_object (adw_settings_get_default (), "notify::yaru-accent",
++                             G_CALLBACK (update_animation_style), self,
++                             G_CONNECT_SWAPPED);
++
+     if (gtk_widget_get_mapped (self->widget))
+       adw_animation_play (self->animation);
+ 
diff -pruN 1.8.0-1/debian/patches/ubuntu/style-Add-wartybrown-accent-support.patch 1.8.0-1ubuntu2/debian/patches/ubuntu/style-Add-wartybrown-accent-support.patch
--- 1.8.0-1/debian/patches/ubuntu/style-Add-wartybrown-accent-support.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/patches/ubuntu/style-Add-wartybrown-accent-support.patch	2025-09-24 12:52:06.000000000 +0000
@@ -0,0 +1,224 @@
+From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
+Date: Fri, 14 Jun 2024 18:41:04 +0200
+Subject: style: Add wartybrown accent support
+
+---
+ src/adw-accent-color.c                 | 13 +++++++++++--
+ src/adw-accent-color.h                 |  2 ++
+ src/adw-inspector-page.c               |  2 ++
+ src/adw-settings.c                     |  8 +++++++-
+ src/stylesheet/_colors.scss            |  1 +
+ src/stylesheet/meson.build             |  1 +
+ src/stylesheet/yaru_accent_colors.scss |  2 ++
+ tests/test-accent-color.c              | 20 ++++++++++----------
+ 8 files changed, 36 insertions(+), 13 deletions(-)
+
+diff --git a/src/adw-accent-color.c b/src/adw-accent-color.c
+index 0ce6fbd..79a98ff 100644
+--- a/src/adw-accent-color.c
++++ b/src/adw-accent-color.c
+@@ -48,7 +48,7 @@ adw_accent_color_to_rgba (AdwAccentColor  self,
+   const char *hex = NULL;
+ 
+   g_return_if_fail (self >= ADW_ACCENT_COLOR_BLUE);
+-  g_return_if_fail (self <= ADW_ACCENT_COLOR_SLATE);
++  g_return_if_fail (self <= ADW_ACCENT_COLOR_SLATE || self == ADW_ACCENT_COLOR_BROWN);
+   g_return_if_fail (rgba != NULL);
+ 
+   if (G_LIKELY (adw_settings_get_yaru_accent (adw_settings_get_default ())))
+@@ -81,6 +81,9 @@ adw_accent_color_to_rgba (AdwAccentColor  self,
+       case ADW_ACCENT_COLOR_SLATE:
+         hex = "#657b69";
+         break;
++      case ADW_ACCENT_COLOR_BROWN:
++        hex = "#b39169";
++        break;
+       default:
+         g_assert_not_reached ();
+       }
+@@ -117,6 +120,9 @@ adw_accent_color_to_rgba (AdwAccentColor  self,
+   case ADW_ACCENT_COLOR_SLATE:
+     hex = "#6f8396";
+     break;
++  case ADW_ACCENT_COLOR_BROWN:
++    hex = "#b39169";
++    break;
+   default:
+     g_assert_not_reached ();
+   }
+@@ -144,7 +150,7 @@ adw_accent_color_to_standalone_rgba (AdwAccentColor  self,
+                                      GdkRGBA        *rgba)
+ {
+   g_return_if_fail (self >= ADW_ACCENT_COLOR_BLUE);
+-  g_return_if_fail (self <= ADW_ACCENT_COLOR_SLATE);
++  g_return_if_fail (self <= ADW_ACCENT_COLOR_SLATE || self == ADW_ACCENT_COLOR_BROWN);
+   g_return_if_fail (rgba != NULL);
+ 
+   dark = !!dark;
+@@ -226,6 +232,9 @@ adw_accent_color_nearest_from_rgba (GdkRGBA *original_color)
+   if (h > 115)
+     return ADW_ACCENT_COLOR_GREEN;
+ 
++  if (h > 55 && c < 0.1)
++    return ADW_ACCENT_COLOR_BROWN;
++
+   if (h > 75.5)
+     return ADW_ACCENT_COLOR_YELLOW;
+ 
+diff --git a/src/adw-accent-color.h b/src/adw-accent-color.h
+index c6251ac..35fbb92 100644
+--- a/src/adw-accent-color.h
++++ b/src/adw-accent-color.h
+@@ -26,6 +26,8 @@ typedef enum {
+   ADW_ACCENT_COLOR_PINK,
+   ADW_ACCENT_COLOR_PURPLE,
+   ADW_ACCENT_COLOR_SLATE,
++
++  ADW_ACCENT_COLOR_BROWN = ADW_ACCENT_COLOR_SLATE + 100,
+ } AdwAccentColor;
+ 
+ ADW_AVAILABLE_IN_1_6
+diff --git a/src/adw-inspector-page.c b/src/adw-inspector-page.c
+index 6642e3a..9bf51ea 100644
+--- a/src/adw-inspector-page.c
++++ b/src/adw-inspector-page.c
+@@ -162,6 +162,8 @@ get_accent_color_name (AdwEnumListItem *item,
+     return g_strdup (_("Purple"));
+   case ADW_ACCENT_COLOR_SLATE:
+     return g_strdup (_("Slate"));
++  case ADW_ACCENT_COLOR_BROWN:
++    return g_strdup (_("Brown"));
+   default:
+     g_assert_not_reached ();
+   }
+diff --git a/src/adw-settings.c b/src/adw-settings.c
+index 7d7224a..07f247d 100644
+--- a/src/adw-settings.c
++++ b/src/adw-settings.c
+@@ -192,9 +192,11 @@ init_debug (AdwSettings *self,
+       self->accent_color = ADW_ACCENT_COLOR_PURPLE;
+     } else if (!g_strcmp0 (env, "slate")) {
+       self->accent_color = ADW_ACCENT_COLOR_SLATE;
++    } else if (!g_strcmp0 (env, "brown")) {
++      self->accent_color = ADW_ACCENT_COLOR_BROWN;
+     } else {
+       g_warning ("Invalid accent color %s (Expected one of: blue, teal, green,"
+-                 "yellow, orange, red, pink, purple, slate)", env);
++                 "yellow, orange, red, pink, purple, slate, brown)", env);
+     }
+   }
+ }
+@@ -286,6 +288,8 @@ yaru_accent_to_accent_color (const char     *yaru_accent,
+     rgba_hex = 0xda3450;
+   else if (g_str_equal (yaru_accent, "yellow"))
+     rgba_hex = 0xc88800;
++  else if (g_str_equal (yaru_accent, "wartybrown"))
++    rgba_hex = 0xb39169;
+ 
+   if (G_UNLIKELY (rgba_hex == 0))
+     {
+@@ -360,6 +364,8 @@ compute_yaru_accent_from_system_accent (AdwSettings *self)
+       return "purple";
+     case ADW_ACCENT_COLOR_SLATE:
+       return "sage";
++    case ADW_ACCENT_COLOR_BROWN:
++      return "wartybrown";
+     default:
+       g_return_val_if_reached (NULL);
+   }
+diff --git a/src/stylesheet/_colors.scss b/src/stylesheet/_colors.scss
+index aa16a02..e6cc58b 100644
+--- a/src/stylesheet/_colors.scss
++++ b/src/stylesheet/_colors.scss
+@@ -168,6 +168,7 @@
+   --accent-pink: #d56199;
+   --accent-purple: #9141ac;
+   --accent-slate: #6f8396;
++  --accent-brown: #b39169;
+ 
+   --accent-bg-color: @accent_bg_color;
+   --accent-fg-color: @accent_fg_color;
+diff --git a/src/stylesheet/meson.build b/src/stylesheet/meson.build
+index cd2efbd..a704378 100644
+--- a/src/stylesheet/meson.build
++++ b/src/stylesheet/meson.build
+@@ -24,6 +24,7 @@ if sassc.found()
+         'magenta',
+         'red',
+         'yellow',
++        'wartybrown',
+     ]
+ 
+     base_sheets = ['palette', 'colors']
+diff --git a/src/stylesheet/yaru_accent_colors.scss b/src/stylesheet/yaru_accent_colors.scss
+index 06db5d4..366c6cb 100644
+--- a/src/stylesheet/yaru_accent_colors.scss
++++ b/src/stylesheet/yaru_accent_colors.scss
+@@ -21,6 +21,8 @@
+         $color: #DA3450;
+     } @else if $accent_color == 'yellow' {
+         $color: #C88800;
++    } @else if $accent_color == 'wartybrown' {
++        $color: #B39169;
+     } @else {
+         @error('No known accent color defined!');
+     }
+diff --git a/tests/test-accent-color.c b/tests/test-accent-color.c
+index ff708fd..ab52848 100644
+--- a/tests/test-accent-color.c
++++ b/tests/test-accent-color.c
+@@ -90,11 +90,11 @@ test_adw_accent_color_nearest_from_rgba (void)
+   TEST_NEAREST_ACCENT ("#9141ac", ADW_ACCENT_COLOR_PURPLE); /* purple 3 */
+   TEST_NEAREST_ACCENT ("#813d9c", ADW_ACCENT_COLOR_PURPLE); /* purple 4 */
+   TEST_NEAREST_ACCENT ("#613583", ADW_ACCENT_COLOR_PURPLE); /* purple 5 */
+-  TEST_NEAREST_ACCENT ("#cdab8f", ADW_ACCENT_COLOR_ORANGE); /* brown 1 */
+-  TEST_NEAREST_ACCENT ("#b5835a", ADW_ACCENT_COLOR_ORANGE); /* brown 2 */
+-  TEST_NEAREST_ACCENT ("#986a44", ADW_ACCENT_COLOR_ORANGE); /* brown 3 */
+-  TEST_NEAREST_ACCENT ("#865e3c", ADW_ACCENT_COLOR_ORANGE); /* brown 4 */
+-  TEST_NEAREST_ACCENT ("#63452c", ADW_ACCENT_COLOR_ORANGE); /* brown 5 */
++  TEST_NEAREST_ACCENT ("#cdab8f", ADW_ACCENT_COLOR_BROWN); /* brown 1 */
++  TEST_NEAREST_ACCENT ("#b5835a", ADW_ACCENT_COLOR_BROWN); /* brown 2 */
++  TEST_NEAREST_ACCENT ("#986a44", ADW_ACCENT_COLOR_BROWN); /* brown 3 */
++  TEST_NEAREST_ACCENT ("#865e3c", ADW_ACCENT_COLOR_BROWN); /* brown 4 */
++  TEST_NEAREST_ACCENT ("#63452c", ADW_ACCENT_COLOR_BROWN); /* brown 5 */
+   TEST_NEAREST_ACCENT ("#ffffff", ADW_ACCENT_COLOR_SLATE);  /* light 1 */
+   TEST_NEAREST_ACCENT ("#f6f5f4", ADW_ACCENT_COLOR_SLATE);  /* light 2 */
+   TEST_NEAREST_ACCENT ("#deddda", ADW_ACCENT_COLOR_SLATE);  /* light 3 */
+@@ -115,7 +115,7 @@ test_adw_accent_color_nearest_from_rgba (void)
+   TEST_NEAREST_ACCENT ("#ed5353", ADW_ACCENT_COLOR_RED);    /* strawberry */
+   TEST_NEAREST_ACCENT ("#de3e80", ADW_ACCENT_COLOR_PINK);   /* bubblegum */
+   TEST_NEAREST_ACCENT ("#a56de2", ADW_ACCENT_COLOR_PURPLE); /* grape */
+-  TEST_NEAREST_ACCENT ("#8a715e", ADW_ACCENT_COLOR_ORANGE); /* cocoa */
++  TEST_NEAREST_ACCENT ("#8a715e", ADW_ACCENT_COLOR_BROWN);  /* cocoa */
+   TEST_NEAREST_ACCENT ("#667885", ADW_ACCENT_COLOR_SLATE);  /* slate */
+ 
+   /* KDE (light) */
+@@ -144,7 +144,7 @@ test_adw_accent_color_nearest_from_rgba (void)
+ 
+   /* Ubuntu */
+   TEST_NEAREST_ACCENT ("#e95420", ADW_ACCENT_COLOR_ORANGE);
+-  TEST_NEAREST_ACCENT ("#787859", ADW_ACCENT_COLOR_YELLOW); /* bark */
++  TEST_NEAREST_ACCENT ("#787859", ADW_ACCENT_COLOR_BROWN);  /* bark */
+   TEST_NEAREST_ACCENT ("#657b69", ADW_ACCENT_COLOR_SLATE);  /* sage */
+   TEST_NEAREST_ACCENT ("#4b8501", ADW_ACCENT_COLOR_GREEN);  /* olive */
+   TEST_NEAREST_ACCENT ("#03875b", ADW_ACCENT_COLOR_GREEN);  /* viridian */
+@@ -159,7 +159,7 @@ test_adw_accent_color_nearest_from_rgba (void)
+   TEST_NEAREST_ACCENT ("#1f9ede", ADW_ACCENT_COLOR_BLUE);
+   TEST_NEAREST_ACCENT ("#199ca8", ADW_ACCENT_COLOR_TEAL);
+   TEST_NEAREST_ACCENT ("#35a854", ADW_ACCENT_COLOR_GREEN);
+-  TEST_NEAREST_ACCENT ("#c5a07c", ADW_ACCENT_COLOR_ORANGE);
++  TEST_NEAREST_ACCENT ("#c5a07c", ADW_ACCENT_COLOR_BROWN);
+   TEST_NEAREST_ACCENT ("#70737a", ADW_ACCENT_COLOR_SLATE);
+   TEST_NEAREST_ACCENT ("#ff7139", ADW_ACCENT_COLOR_ORANGE);
+   TEST_NEAREST_ACCENT ("#e82127", ADW_ACCENT_COLOR_RED);
+@@ -183,8 +183,8 @@ test_adw_accent_color_nearest_from_rgba (void)
+   TEST_NEAREST_ACCENT ("#68217c", ADW_ACCENT_COLOR_PURPLE);
+   TEST_NEAREST_ACCENT ("#86043a", ADW_ACCENT_COLOR_PINK);
+   TEST_NEAREST_ACCENT ("#78292e", ADW_ACCENT_COLOR_RED);
+-  TEST_NEAREST_ACCENT ("#624000", ADW_ACCENT_COLOR_ORANGE);
+-  TEST_NEAREST_ACCENT ("#534800", ADW_ACCENT_COLOR_YELLOW);
++  TEST_NEAREST_ACCENT ("#624000", ADW_ACCENT_COLOR_BROWN);
++  TEST_NEAREST_ACCENT ("#534800", ADW_ACCENT_COLOR_BROWN);
+   TEST_NEAREST_ACCENT ("#185529", ADW_ACCENT_COLOR_GREEN);
+   TEST_NEAREST_ACCENT ("#554742", ADW_ACCENT_COLOR_SLATE);
+ 
diff -pruN 1.8.0-1/debian/patches/ubuntu/style-manager-Support-Yaru-accent-colors.patch 1.8.0-1ubuntu2/debian/patches/ubuntu/style-manager-Support-Yaru-accent-colors.patch
--- 1.8.0-1/debian/patches/ubuntu/style-manager-Support-Yaru-accent-colors.patch	1970-01-01 00:00:00.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/patches/ubuntu/style-manager-Support-Yaru-accent-colors.patch	2025-09-24 12:52:06.000000000 +0000
@@ -0,0 +1,1419 @@
+From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= <mail@3v1n0.net>
+Date: Tue, 16 Sep 2025 03:58:28 +0200
+Subject: style-manager: Support Yaru accent colors
+
+Generate the libadwaita color schemes using Yaru accent colors.
+Then, when the Yaru theme is used in the system, use the generated
+variant instead of the default one.
+Also the yaru colors palette is used in such case.
+
+No theme changes are applied, only the accent color is now matching
+the yaru ones.
+
+Forwarded: not-needed
+---
+ meson_options.txt                                |   4 +
+ src/adw-settings-impl-gsettings.c                |   8 +
+ src/adw-settings-impl-portal.c                   |  25 ++
+ src/adw-settings-impl-private.h                  |  12 +
+ src/adw-settings-private.h                       |   2 +
+ src/adw-settings.c                               | 329 +++++++++++++++++++++++
+ src/adw-style-manager.c                          |  72 ++++-
+ src/stylesheet/_colors.scss                      |   6 +
+ src/stylesheet/_palette-yaru.scss                | 166 ++++++++++++
+ src/stylesheet/adwaita-stylesheet.gresources.xml |   2 +
+ src/stylesheet/meson.build                       | 116 +++++++-
+ src/stylesheet/sass-utils.scss                   | 212 +++++++++++++++
+ src/stylesheet/yaru_accent_colors.scss           | 161 +++++++++++
+ src/stylesheet/yaru_main.css.in                  |   7 +
+ 14 files changed, 1116 insertions(+), 6 deletions(-)
+ create mode 100644 src/stylesheet/_palette-yaru.scss
+ create mode 100644 src/stylesheet/sass-utils.scss
+ create mode 100644 src/stylesheet/yaru_accent_colors.scss
+ create mode 100644 src/stylesheet/yaru_main.css.in
+
+diff --git a/meson_options.txt b/meson_options.txt
+index b3fe460..73b093e 100644
+--- a/meson_options.txt
++++ b/meson_options.txt
+@@ -28,3 +28,7 @@ option('tests',
+ option('examples',
+        type: 'boolean', value: true,
+        description: 'Build and install the examples and demo applications (currently not built for MSVC builds)')
++
++option('yaru-accent-colors',
++       type: 'boolean', value: true,
++       description: 'Mimic Yaru accent colors')
+diff --git a/src/adw-settings-impl-gsettings.c b/src/adw-settings-impl-gsettings.c
+index 9800375..071d759 100644
+--- a/src/adw-settings-impl-gsettings.c
++++ b/src/adw-settings-impl-gsettings.c
+@@ -217,3 +217,11 @@ adw_settings_impl_gsettings_new (gboolean enable_color_scheme,
+ 
+   return ADW_SETTINGS_IMPL (self);
+ }
++
++GSettings *
++adw_settings_impl_gsettings_get_interface_settings (AdwSettingsImpl *self)
++{
++  g_return_val_if_fail (ADW_IS_SETTINGS_IMPL_GSETTINGS (self), NULL);
++
++  return ADW_SETTINGS_IMPL_GSETTINGS (self)->interface_settings;
++}
+diff --git a/src/adw-settings-impl-portal.c b/src/adw-settings-impl-portal.c
+index eaac7c9..51521e3 100644
+--- a/src/adw-settings-impl-portal.c
++++ b/src/adw-settings-impl-portal.c
+@@ -361,3 +361,28 @@ adw_settings_impl_portal_new (gboolean enable_color_scheme,
+ 
+   return ADW_SETTINGS_IMPL (self);
+ }
++
++gboolean adw_settings_impl_portal_enabled (AdwSettingsImpl *self) {
++  return ADW_IS_SETTINGS_IMPL_PORTAL (self) &&
++    ADW_SETTINGS_IMPL_PORTAL (self)->settings_portal != NULL;
++}
++
++GDBusProxy *
++adw_settings_impl_portal_get_proxy (AdwSettingsImpl *self)
++{
++  g_return_val_if_fail (ADW_IS_SETTINGS_IMPL_PORTAL (self), NULL);
++
++  return ADW_SETTINGS_IMPL_PORTAL (self)->settings_portal;
++}
++
++gboolean
++adw_settings_impl_portal_read_setting (AdwSettingsImpl  *self,
++                                       const char       *schema,
++                                       const char       *name,
++                                       const char       *type,
++                                       GVariant        **out)
++{
++  g_return_val_if_fail (ADW_IS_SETTINGS_IMPL_PORTAL (self), FALSE);
++
++  return read_setting (ADW_SETTINGS_IMPL_PORTAL (self), schema, name, type, out);
++}
+diff --git a/src/adw-settings-impl-private.h b/src/adw-settings-impl-private.h
+index 80247fb..d199dff 100644
+--- a/src/adw-settings-impl-private.h
++++ b/src/adw-settings-impl-private.h
+@@ -60,6 +60,18 @@ void        adw_settings_impl_set_monospace_font_name (AdwSettingsImpl *self,
+ 
+ gboolean adw_get_disable_portal (void);
+ 
++gboolean adw_settings_impl_portal_enabled (AdwSettingsImpl *self);
++
++#include <gio/gio.h>
++GSettings *adw_settings_impl_gsettings_get_interface_settings (AdwSettingsImpl *self);
++GDBusProxy *adw_settings_impl_portal_get_proxy (AdwSettingsImpl *self);
++
++gboolean adw_settings_impl_portal_read_setting (AdwSettingsImpl  *self,
++                                                const char       *schema,
++                                                const char       *name,
++                                                const char       *type,
++                                                GVariant        **out);
++
+ #ifdef __APPLE__
+ #define ADW_TYPE_SETTINGS_IMPL_MACOS (adw_settings_impl_macos_get_type())
+ 
+diff --git a/src/adw-settings-private.h b/src/adw-settings-private.h
+index 38cb951..e8e53f0 100644
+--- a/src/adw-settings-private.h
++++ b/src/adw-settings-private.h
+@@ -75,4 +75,6 @@ void adw_settings_override_system_supports_accent_colors (AdwSettings *self,
+ void adw_settings_override_accent_color (AdwSettings    *self,
+                                          AdwAccentColor  accent_color);
+ 
++const char *adw_settings_get_yaru_accent (AdwSettings *self);
++
+ G_END_DECLS
+diff --git a/src/adw-settings.c b/src/adw-settings.c
+index c17c27c..7d7224a 100644
+--- a/src/adw-settings.c
++++ b/src/adw-settings.c
+@@ -33,6 +33,10 @@ struct _AdwSettings
+   char *document_font_name;
+   char *monospace_font_name;
+ 
++  gchar *yaru_accent;
++  gboolean yaru_use_system_accent_color;
++  AdwAccentColor yaru_accent_color;
++
+   gboolean override;
+   gboolean system_supports_color_schemes_override;
+   AdwSystemColorScheme color_scheme_override;
+@@ -52,6 +56,7 @@ enum {
+   PROP_ACCENT_COLOR,
+   PROP_DOCUMENT_FONT_NAME,
+   PROP_MONOSPACE_FONT_NAME,
++  PROP_YARU_ACCENT,
+   LAST_PROP,
+ };
+ 
+@@ -59,6 +64,16 @@ static GParamSpec *props[LAST_PROP];
+ 
+ static AdwSettings *default_instance;
+ 
++typedef enum {
++  ADW_YARU_ACCENT_SOURCE_NONE,
++  ADW_YARU_ACCENT_SOURCE_PORTAL,
++  ADW_YARU_ACCENT_SOURCE_GTK,
++  ADW_YARU_ACCENT_SOURCE_GSETTINGS,
++} AdwYaruAccentSource;
++
++static AdwYaruAccentSource
++update_yaru_accent (AdwSettings *self);
++
+ static void
+ set_color_scheme (AdwSettings          *self,
+                   AdwSystemColorScheme  color_scheme)
+@@ -96,6 +111,9 @@ set_accent_color (AdwSettings    *self,
+ 
+   if (!self->override)
+     g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ACCENT_COLOR]);
++
++  if (self->yaru_use_system_accent_color)
++    update_yaru_accent (self);
+ }
+ 
+ static void
+@@ -236,6 +254,288 @@ register_impl (AdwSettings     *self,
+   }
+ }
+ 
++static gboolean
++yaru_accent_to_accent_color (const char     *yaru_accent,
++                             AdwAccentColor *out_accent_color)
++{
++  GdkRGBA rgba;
++  unsigned rgba_hex = 0;
++
++  if (!yaru_accent)
++    return FALSE;
++
++  if (g_str_equal (yaru_accent, "default"))
++    rgba_hex = 0xe95420;
++  else if (g_str_equal (yaru_accent, "bark"))
++    rgba_hex = 0x787859;
++  else if (g_str_equal (yaru_accent, "sage"))
++    rgba_hex = 0x657b69;
++  else if (g_str_equal (yaru_accent, "olive"))
++    rgba_hex = 0x4b8501;
++  else if (g_str_equal (yaru_accent, "viridian"))
++    rgba_hex = 0x03875b;
++  else if (g_str_equal (yaru_accent, "prussiangreen"))
++    rgba_hex = 0x308280;
++  else if (g_str_equal (yaru_accent, "blue"))
++    rgba_hex = 0x0073e5;
++  else if (g_str_equal (yaru_accent, "purple"))
++    rgba_hex = 0x7764d8;
++  else if (g_str_equal (yaru_accent, "magenta"))
++    rgba_hex = 0xb34cb3;
++  else if (g_str_equal (yaru_accent, "red"))
++    rgba_hex = 0xda3450;
++  else if (g_str_equal (yaru_accent, "yellow"))
++    rgba_hex = 0xc88800;
++
++  if (G_UNLIKELY (rgba_hex == 0))
++    {
++      g_warning ("No known yaru accent color '%s'", yaru_accent);
++      return FALSE;
++    }
++
++  rgba.red =   (float) ((rgba_hex >> 16) & 0xff) / 0xff;
++  rgba.green = (float) ((rgba_hex >> 8)  & 0xff) / 0xff;
++  rgba.blue =  (float) ((rgba_hex)       & 0xff) / 0xff;
++  rgba.alpha = 1;
++
++  *out_accent_color = adw_accent_color_nearest_from_rgba (&rgba);
++  return TRUE;
++}
++
++static char *
++compute_yaru_accent_from_theme (AdwSettings *self,
++                                const char *theme_name)
++{
++  if (!g_str_has_prefix (theme_name, "Yaru"))
++    return NULL;
++
++  if (g_str_equal (theme_name, "Yaru") ||
++      g_str_equal (theme_name, "Yaru-dark")) {
++    return g_strdup ("default");
++  }
++
++  if (theme_name[4] == '-') {
++    g_auto (GStrv) theme_variant = NULL;
++
++    theme_variant = g_strsplit (theme_name, "-", -1);
++    if (g_strv_length (theme_variant) <= 1)
++      return NULL;
++
++    /* Migrate from old colors, if they're still configured */
++    if (g_str_equal (theme_variant[1], "viridian"))
++      return g_strdup ("olive");
++    else if (g_str_equal (theme_variant[1], "bark"))
++      return g_strdup ("default");
++
++    return g_strdup (theme_variant[1]);
++  }
++
++  return NULL;
++}
++
++static const char *
++compute_yaru_accent_from_system_accent (AdwSettings *self)
++{
++  AdwAccentColor accent_color = self->accent_color;
++
++  if (self->override)
++    accent_color = self->accent_color_override;
++
++  switch (accent_color) {
++    case ADW_ACCENT_COLOR_BLUE:
++      return "blue";
++    case ADW_ACCENT_COLOR_TEAL:
++      return "prussiangreen";
++    case ADW_ACCENT_COLOR_GREEN:
++      return "olive";
++    case ADW_ACCENT_COLOR_YELLOW:
++      return "yellow";
++    case ADW_ACCENT_COLOR_ORANGE:
++      return "default";
++    case ADW_ACCENT_COLOR_RED:
++      return "red";
++    case ADW_ACCENT_COLOR_PINK:
++      return "magenta";
++    case ADW_ACCENT_COLOR_PURPLE:
++      return "purple";
++    case ADW_ACCENT_COLOR_SLATE:
++      return "sage";
++    default:
++      g_return_val_if_reached (NULL);
++  }
++}
++
++static void
++update_yaru_accent_from_theme (AdwSettings *self,
++                               const char *theme_name)
++{
++  g_autofree char *yaru_accent = NULL;
++  AdwAccentColor yaru_accent_color = ADW_ACCENT_COLOR_ORANGE;
++  gboolean valid_accent_color;
++
++  yaru_accent = compute_yaru_accent_from_theme (self, theme_name);
++  valid_accent_color = yaru_accent_to_accent_color (yaru_accent, &yaru_accent_color);
++
++  if (valid_accent_color && self->yaru_use_system_accent_color)
++    g_set_str (&yaru_accent, compute_yaru_accent_from_system_accent (self));
++
++  if (g_set_str (&self->yaru_accent, yaru_accent))
++    g_object_notify_by_pspec (G_OBJECT (self), props[PROP_YARU_ACCENT]);
++
++  if (self->override)
++    return;
++
++  if (!self->yaru_use_system_accent_color &&
++      self->system_supports_accent_colors != valid_accent_color) {
++    self->system_supports_accent_colors = valid_accent_color;
++    g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SYSTEM_SUPPORTS_ACCENT_COLORS]);
++  }
++
++  if (self->yaru_accent_color != yaru_accent_color) {
++    self->yaru_accent_color = yaru_accent_color;
++    g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ACCENT_COLOR]);
++  }
++}
++
++static gboolean
++update_yaru_accent_from_gsettings (AdwSettings *self)
++{
++  g_autofree char *theme_name = NULL;
++  GSettings *interface_settings;
++
++  if (!self->gsettings_impl)
++    return FALSE;
++
++  interface_settings = adw_settings_impl_gsettings_get_interface_settings (self->gsettings_impl);
++  if G_UNLIKELY (!interface_settings)
++    return FALSE;
++
++  theme_name = g_settings_get_string (interface_settings, "gtk-theme");
++  update_yaru_accent_from_theme (self, theme_name);
++
++  return TRUE;
++}
++
++static gboolean
++update_yaru_accent_from_gtk (AdwSettings *self)
++{
++  GdkDisplay *display = gdk_display_get_default ();
++  g_auto(GValue) value = G_VALUE_INIT;
++
++  if (!display)
++    return FALSE;
++
++  g_value_init (&value, G_TYPE_STRING);
++  if (!gdk_display_get_setting (display, "gtk-theme-name", &value))
++    return FALSE;
++
++  update_yaru_accent_from_theme (self, g_value_get_string (&value));
++
++  return TRUE;
++}
++
++static gboolean
++update_yaru_accent_from_portal (AdwSettings *self)
++{
++  g_autoptr (GVariant) variant = NULL;
++
++  if (!adw_settings_impl_portal_enabled (self->platform_impl))
++    return FALSE;
++
++  if (adw_settings_impl_portal_read_setting (self->platform_impl,
++                                             "org.gnome.desktop.interface",
++                                             "gtk-theme", "s", &variant)) {
++    update_yaru_accent_from_theme (self, g_variant_get_string (variant, NULL));
++    return TRUE;
++  }
++
++  return FALSE;
++}
++
++static void
++on_yaru_display_setting_changed (AdwSettings *self,
++                                 const char  *setting,
++                                 GdkDisplay  *display)
++{
++  if (!g_strcmp0 (setting, "gtk-theme-name"))
++    update_yaru_accent_from_gtk (self);
++}
++
++static void
++on_yaru_settings_portal_changed (GDBusProxy  *proxy,
++                                 const char  *sender_name,
++                                 const char  *signal_name,
++                                 GVariant    *parameters,
++                                 AdwSettings *self)
++{
++  g_autoptr(GVariant) value = NULL;
++  const char *namespace;
++  const char *name;
++
++  if (g_strcmp0 (signal_name, "SettingChanged") != 0)
++    return;
++
++  g_variant_get (parameters, "(&s&sv)", &namespace, &name, &value);
++
++  if (g_strcmp0 (namespace, "org.gnome.desktop.interface") == 0 &&
++      g_strcmp0 (name, "gtk-theme") == 0) {
++    update_yaru_accent_from_theme (self, g_variant_get_string (value, NULL));
++  }
++}
++
++static AdwYaruAccentSource
++update_yaru_accent (AdwSettings *self)
++{
++  if (update_yaru_accent_from_portal (self))
++    return ADW_YARU_ACCENT_SOURCE_PORTAL;
++
++  if (update_yaru_accent_from_gtk (self))
++    return ADW_YARU_ACCENT_SOURCE_GTK;
++
++  if (update_yaru_accent_from_gsettings (self))
++    return ADW_YARU_ACCENT_SOURCE_GSETTINGS;
++
++  return ADW_YARU_ACCENT_SOURCE_NONE;
++}
++
++static void
++init_yaru_accents (AdwSettings *self)
++{
++  AdwYaruAccentSource accent_source;
++
++  if (adw_settings_get_system_supports_accent_colors (self))
++    self->yaru_use_system_accent_color = TRUE;
++
++  accent_source = update_yaru_accent (self);
++
++  switch (accent_source) {
++    case ADW_YARU_ACCENT_SOURCE_PORTAL:
++      g_signal_connect (adw_settings_impl_portal_get_proxy (self->platform_impl),
++                        "g-signal",
++                        G_CALLBACK (on_yaru_settings_portal_changed), self);
++      break;
++
++    case ADW_YARU_ACCENT_SOURCE_GTK:
++      g_signal_connect_object (gdk_display_get_default (),
++                               "setting-changed",
++                               G_CALLBACK (on_yaru_display_setting_changed),
++                               self, G_CONNECT_SWAPPED);
++      break;
++
++    case ADW_YARU_ACCENT_SOURCE_GSETTINGS:
++      g_signal_connect_object (adw_settings_impl_gsettings_get_interface_settings (self->gsettings_impl),
++                               "changed::gtk-theme",
++                               G_CALLBACK (update_yaru_accent_from_gsettings),
++                               self, G_CONNECT_SWAPPED);
++      break;
++
++    case ADW_YARU_ACCENT_SOURCE_NONE:
++    default:
++      g_debug ("No source found for Yaru accent color");
++      break;
++  }
++}
++
+ static void
+ adw_settings_constructed (GObject *object)
+ {
+@@ -304,6 +604,8 @@ adw_settings_constructed (GObject *object)
+ 
+   self->system_supports_color_schemes = found_color_scheme;
+   self->system_supports_accent_colors = found_accent_colors;
++
++  init_yaru_accents (self);
+ }
+ 
+ static void
+@@ -317,6 +619,8 @@ adw_settings_dispose (GObject *object)
+   g_clear_pointer (&self->document_font_name, g_free);
+   g_clear_pointer (&self->monospace_font_name, g_free);
+ 
++  g_clear_pointer (&self->yaru_accent, g_free);
++
+   G_OBJECT_CLASS (adw_settings_parent_class)->dispose (object);
+ }
+ 
+@@ -357,6 +661,10 @@ adw_settings_get_property (GObject    *object,
+     g_value_set_string (value, adw_settings_get_monospace_font_name (self));
+     break;
+ 
++  case PROP_YARU_ACCENT:
++    g_value_set_string (value, adw_settings_get_yaru_accent (self));
++    break;
++
+   default:
+     G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+   }
+@@ -405,6 +713,11 @@ adw_settings_class_init (AdwSettingsClass *klass)
+ 
+   props[PROP_MONOSPACE_FONT_NAME] =
+     g_param_spec_string ("monospace-font-name", NULL, NULL,
++                         DEFAULT_MONOSPACE_FONT,
++                         G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
++
++  props[PROP_YARU_ACCENT] =
++    g_param_spec_string ("yaru-accent", "Yaru Accent", "Yaru Accent",
+                          NULL,
+                          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ 
+@@ -477,6 +790,9 @@ adw_settings_get_accent_color (AdwSettings *self)
+   if (self->override)
+     return self->accent_color_override;
+ 
++  if (self->yaru_accent && !self->yaru_use_system_accent_color)
++    return self->yaru_accent_color;
++
+   return self->accent_color;
+ }
+ 
+@@ -511,6 +827,9 @@ adw_settings_start_override (AdwSettings *self)
+   self->high_contrast_override = self->high_contrast;
+   self->system_supports_accent_colors_override = self->system_supports_accent_colors;
+   self->accent_color_override = self->accent_color;
++
++  if (self->yaru_accent && !self->yaru_use_system_accent_color)
++    self->accent_color_override = self->yaru_accent_color;
+ }
+ 
+ void
+@@ -547,6 +866,8 @@ adw_settings_end_override (AdwSettings *self)
+     g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SYSTEM_SUPPORTS_ACCENT_COLORS]);
+   if (notify_accent_color)
+     g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ACCENT_COLOR]);
++
++  update_yaru_accent (self);
+ }
+ 
+ void
+@@ -634,6 +955,14 @@ adw_settings_override_accent_color (AdwSettings    *self,
+     return;
+ 
+   self->accent_color_override = accent_color;
++  update_yaru_accent (self);
+ 
+   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ACCENT_COLOR]);
+ }
++
++const char *adw_settings_get_yaru_accent (AdwSettings *self) {
++  if (adw_settings_get_high_contrast (self))
++    return NULL;
++
++  return self->yaru_accent;
++}
+diff --git a/src/adw-style-manager.c b/src/adw-style-manager.c
+index fd2b4ae..5a3f27d 100644
+--- a/src/adw-style-manager.c
++++ b/src/adw-style-manager.c
+@@ -93,6 +93,7 @@ enum {
+   PROP_ACCENT_COLOR_RGBA,
+   PROP_DOCUMENT_FONT_NAME,
+   PROP_MONOSPACE_FONT_NAME,
++  PROP_YARU_ACCENT,
+   LAST_PROP,
+ };
+ 
+@@ -249,6 +250,42 @@ update_stylesheet (AdwStyleManager       *self,
+                                               GTK_STYLE_PROVIDER (self->animations_provider),
+                                               10000);
+ 
++  if (flags & (UPDATE_COLOR_SCHEME|UPDATE_ACCENT_COLOR|UPDATE_CONTRAST) &&
++      self->provider) {
++    g_autofree char *style = NULL;
++    g_autofree char *style_name = NULL;
++
++    style_name = g_strdup ("main");
++    const char *yaru_accent = adw_settings_get_yaru_accent (self->settings);
++
++    if G_LIKELY (yaru_accent) {
++      g_autoptr (GFile) gresource = NULL;
++      g_autofree char *variant = NULL;
++      g_autofree char *yaru_variant = NULL;
++      g_autofree char *resource_uri = NULL;
++
++      if (self->dark)
++        variant = g_strdup ("default-dark");
++      else
++        variant = g_strdup ("default-light");
++
++      yaru_variant = g_strdup_printf ("%s-yaru-%s", variant, yaru_accent);
++      resource_uri = g_strdup_printf ("resource:///org/gnome/Adwaita/styles/%s.css", yaru_variant);
++      gresource = g_file_new_for_uri (resource_uri);
++
++      if (g_file_query_exists(gresource, NULL)) {
++        g_set_str (&style_name, yaru_variant);
++        flags &= ~UPDATE_ACCENT_COLOR;
++      } else {
++        g_warning ("No known Yaru accent '%s'", yaru_accent);
++      }
++    }
++
++    style = g_strdup_printf ("/org/gnome/Adwaita/styles/%s.css", style_name);
++    g_debug ("Using style %s", style);
++    gtk_css_provider_load_from_resource (self->provider, style);
++  }
++
+   if (flags & UPDATE_ACCENT_COLOR && self->accent_provider) {
+     char *accent_css = generate_accent_css (self);
+     gtk_css_provider_load_from_string (self->accent_provider, accent_css);
+@@ -446,6 +483,17 @@ notify_high_contrast_cb (AdwStyleManager *self)
+   g_object_notify_by_pspec (G_OBJECT (self), props[PROP_HIGH_CONTRAST]);
+ }
+ 
++static void
++yaru_accent_changed_cb (AdwStyleManager *self)
++{
++  g_debug("Yaru accent changed to: %s",
++          adw_settings_get_yaru_accent(self->settings));
++
++  update_stylesheet (self, UPDATE_ACCENT_COLOR);
++
++  g_object_notify_by_pspec (G_OBJECT (self), props[PROP_YARU_ACCENT]);
++}
++
+ static void
+ adw_style_manager_constructed (GObject *object)
+ {
+@@ -477,8 +525,6 @@ adw_style_manager_constructed (GObject *object)
+                     NULL);
+ 
+       self->provider = gtk_css_provider_new ();
+-      gtk_css_provider_load_from_resource (self->provider,
+-                                           "/org/gnome/Adwaita/styles/main.css");
+       gtk_style_context_add_provider_for_display (self->display,
+                                                   GTK_STYLE_PROVIDER (self->provider),
+                                                   GTK_STYLE_PROVIDER_PRIORITY_THEME);
+@@ -543,6 +589,11 @@ adw_style_manager_constructed (GObject *object)
+                            G_CALLBACK (update_fonts),
+                            self,
+                            G_CONNECT_SWAPPED);
++  g_signal_connect_object (self->settings,
++                           "notify::yaru-accent",
++                           G_CALLBACK (yaru_accent_changed_cb),
++                           self,
++                           G_CONNECT_SWAPPED);
+ 
+   update_dark (self);
+   update_fonts (self);
+@@ -614,6 +665,10 @@ adw_style_manager_get_property (GObject    *object,
+     g_value_set_string (value, adw_style_manager_get_monospace_font_name (self));
+     break;
+ 
++  case PROP_YARU_ACCENT:
++    g_value_set_string (value, adw_settings_get_yaru_accent (self->settings));
++    break;
++
+   default:
+     G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+   }
+@@ -830,6 +885,19 @@ adw_style_manager_class_init (AdwStyleManagerClass *klass)
+                          DEFAULT_MONOSPACE_FONT,
+                          G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ 
++  /**
++   * AdwStyleManager:yaru-accent:
++   *
++   * The Yaru accent color used by the application, if any.
++   * This is only available in ubuntu.
++   *
++   * This cannot be overridden by applications.
++   */
++  props[PROP_YARU_ACCENT] =
++    g_param_spec_string ("yaru-accent", "Yaru Accent", "Yaru Accent",
++                         NULL,
++                         G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
++
+   g_object_class_install_properties (object_class, LAST_PROP, props);
+ }
+ 
+diff --git a/src/stylesheet/_colors.scss b/src/stylesheet/_colors.scss
+index b18d822..e8afca2 100644
+--- a/src/stylesheet/_colors.scss
++++ b/src/stylesheet/_colors.scss
+@@ -329,3 +329,9 @@ $standalone-color-oklab-dark: Max(l, 0.85) a b;
+   --dim-opacity: #{$dim_label_opacity};
+   --disabled-opacity: #{$disabled_opacity};
+ }
++
++$is_yaru: false !default;
++@if $is_yaru {
++  $link_color: var(--yaru-link-color);
++  $link_visited_color: var(--yaru-link-visited-color);
++}
+diff --git a/src/stylesheet/_palette-yaru.scss b/src/stylesheet/_palette-yaru.scss
+new file mode 100644
+index 0000000..4fa10f1
+--- /dev/null
++++ b/src/stylesheet/_palette-yaru.scss
+@@ -0,0 +1,166 @@
++// Keep this in sync with
++//   https://github.com/ubuntu/yaru/blob/master/gtk/src/default/gtk-4.0/_palette.scss
++
++$blue_1: #75d3f4;
++$blue_2: #47c4f1;
++$blue_3: #19b6ee; // Yaru blue
++$blue_4: #007aa6; // Yaru linkblue
++$blue_5: #335280; // Yaru darkblue
++$green_1: #5aed70;
++$green_2: #47d35c;
++$green_3: #34b948;
++$green_4: #219e34;
++$green_5: #0e8420; // Yaru green
++$yellow_1: #fccd87;
++$yellow_2: #fbc16a;
++$yellow_3: #fbb44c;
++$yellow_4: #faa82f;
++$yellow_5: #f99b11; // Yaru yellow
++$orange_1: #f29879;
++$orange_2: #f08763;
++$orange_3: #ed764d;
++$orange_4: #eb6536;
++$orange_5: #e95420; // Yaru orange
++$red_1: #ea485c;
++$red_2: #de374c;
++$red_3: #d3273b;
++$red_4: #c7162b; // Yaru red
++$red_5: #a91224;
++$purple_1: #924d8b; // Yaru aubergine
++$purple_2: #762572; // Yaru purple
++$purple_3: #77216f; // Yaru light aubergine
++$purple_4: #5e2750; // Yaru mid aubergine
++$purple_5: #2c001e; // Yaru dark aubergine
++$brown_1: #e1b289;
++$brown_2: #c5976e;
++$brown_3: #aa7b53;
++$brown_4: #8e6038;
++$brown_5: #72441d;
++$light_1: #ffffff;
++$light_2: #f7f7f7; // Yaru porcelain
++$light_3: #ccc; // Yaru silk
++$light_4: #aea79f; // Yaru warm gray
++$light_5: #878787; // Yaru ash
++$dark_1: #666666; // Yaru graphite
++$dark_2: #5d5d5d; // Yaru slate
++$dark_3: #3d3d3d; // Yaru inkstone
++$dark_4: #181818; // Yaru jet
++$dark_5: #000000;
++
++$blue: $blue_3;
++$linkblue: $blue_4;
++$darkblue: $blue_5;
++$green: $green_5;
++$yellow: $yellow_5;
++$orange: $orange_5;
++$red: $red_4;
++$aubergine: $purple_1;
++$purple: $purple_2;
++$light_aubergine: $purple_3;
++$mid_aubergine: $purple_4;
++$dark_aubergine: $purple_5;
++$porcelain: $light_2;
++$silk: $light_3;
++$warm_gray: $light_4;
++$ash: $light_5;
++$graphite: $dark_1;
++$slate: $dark_2;
++$inkstone: $dark_3;
++$jet: $dark_4;
++
++:root {
++  --blue-1: #{$blue_1};
++  --blue-2: #{$blue_2};
++  --blue-3: #{$blue_3};
++  --blue-4: #{$blue_4};
++  --blue-5: #{$blue_5};
++  --green-1: #{$green_1};
++  --green-2: #{$green_2};
++  --green-3: #{$green_3};
++  --green-4: #{$green_4};
++  --green-5: #{$green_5};
++  --yellow-1: #{$yellow_1};
++  --yellow-2: #{$yellow_2};
++  --yellow-3: #{$yellow_3};
++  --yellow-4: #{$yellow_4};
++  --yellow-5: #{$yellow_5};
++  --orange-1: #{$orange_1};
++  --orange-2: #{$orange_2};
++  --orange-3: #{$orange_3};
++  --orange-4: #{$orange_4};
++  --orange-5: #{$orange_5};
++  --red-1: #{$red_1};
++  --red-2: #{$red_2};
++  --red-3: #{$red_3};
++  --red-4: #{$red_4};
++  --red-5: #{$red_5};
++  --purple-1: #{$purple_1};
++  --purple-2: #{$purple_2};
++  --purple-3: #{$purple_3};
++  --purple-4: #{$purple_4};
++  --purple-5: #{$purple_5};
++  --brown-1: #{$brown_1};
++  --brown-2: #{$brown_2};
++  --brown-3: #{$brown_3};
++  --brown-4: #{$brown_4};
++  --brown-5: #{$brown_5};
++  --light-1: #{$light_1};
++  --light-2: #{$light_2};
++  --light-3: #{$light_3};
++  --light-4: #{$light_4};
++  --light-5: #{$light_5};
++  --dark-1: #{$dark_1};
++  --dark-2: #{$dark_2};
++  --dark-3: #{$dark_3};
++  --dark-4: #{$dark_4};
++  --dark-5: #{$dark_5};
++}
++
++// Sass thinks we're using the colors in the variables as strings and may shoot
++// warning, it's innocuous and can be defeated by using #{$var}.
++
++@define-color blue_1 #{$blue_1};
++@define-color blue_2 #{$blue_2};
++@define-color blue_3 #{$blue_3};
++@define-color blue_4 #{$blue_4};
++@define-color blue_5 #{$blue_5};
++@define-color green_1 #{$green_1};
++@define-color green_2 #{$green_2};
++@define-color green_3 #{$green_3};
++@define-color green_4 #{$green_4};
++@define-color green_5 #{$green_5};
++@define-color yellow_1 #{$yellow_1};
++@define-color yellow_2 #{$yellow_2};
++@define-color yellow_3 #{$yellow_3};
++@define-color yellow_4 #{$yellow_4};
++@define-color yellow_5 #{$yellow_5};
++@define-color orange_1 #{$orange_1};
++@define-color orange_2 #{$orange_2};
++@define-color orange_3 #{$orange_3};
++@define-color orange_4 #{$orange_4};
++@define-color orange_5 #{$orange_5};
++@define-color red_1 #{$red_1};
++@define-color red_2 #{$red_2};
++@define-color red_3 #{$red_3};
++@define-color red_4 #{$red_4};
++@define-color red_5 #{$red_5};
++@define-color purple_1 #{$purple_1};
++@define-color purple_2 #{$purple_2};
++@define-color purple_3 #{$purple_3};
++@define-color purple_4 #{$purple_4};
++@define-color purple_5 #{$purple_5};
++@define-color brown_1 #{$brown_1};
++@define-color brown_2 #{$brown_2};
++@define-color brown_3 #{$brown_3};
++@define-color brown_4 #{$brown_4};
++@define-color brown_5 #{$brown_5};
++@define-color light_1 #{$light_1};
++@define-color light_2 #{$light_2};
++@define-color light_3 #{$light_3};
++@define-color light_4 #{$light_4};
++@define-color light_5 #{$light_5};
++@define-color dark_1 #{$dark_1};
++@define-color dark_2 #{$dark_2};
++@define-color dark_3 #{$dark_3};
++@define-color dark_4 #{$dark_4};
++@define-color dark_5 #{$dark_5};
+diff --git a/src/stylesheet/adwaita-stylesheet.gresources.xml b/src/stylesheet/adwaita-stylesheet.gresources.xml
+index 750c16a..e4d8880 100644
+--- a/src/stylesheet/adwaita-stylesheet.gresources.xml
++++ b/src/stylesheet/adwaita-stylesheet.gresources.xml
+@@ -5,6 +5,8 @@
+     <file>high-contrast.css</file>
+     <file>main.css</file>
+ 
++    @YARU_ACCENTS_CSS@
++
+     <file>assets/bullet-symbolic.svg</file>
+     <file>assets/check-symbolic.svg</file>
+     <file>assets/dash-symbolic.svg</file>
+diff --git a/src/stylesheet/meson.build b/src/stylesheet/meson.build
+index c34bd8e..cd2efbd 100644
+--- a/src/stylesheet/meson.build
++++ b/src/stylesheet/meson.build
+@@ -10,6 +10,88 @@ endif
+ 
+ if sassc.found()
+   sassc_opts = [ '-a', '-M', '-t', 'compact' ]
++  yaru_accent_colors_sassc = []
++  yaru_accent_colors_css = []
++
++  if get_option('yaru-accent-colors')
++    YARU_ACCENTS = [
++        'default',
++        'sage',
++        'olive',
++        'prussiangreen',
++        'blue',
++        'purple',
++        'magenta',
++        'red',
++        'yellow',
++    ]
++
++    base_sheets = ['palette', 'colors']
++    base_sheets_expressions = []
++    base_sheets_imports = []
++
++    default_yaru_defs = configure_file(
++      command: [
++        'sh', '-c',
++          ';'.join([
++            'echo "\$is_yaru: true;"',
++            'grep -v "@import" "$1"',
++          ]), '--', '@INPUT@',
++      ],
++      capture: true,
++      input: 'default.scss',
++      output: 'default-yaru-defs.scss',
++    )
++    base_sheets_imports += '@import \'@0@\';'.format(default_yaru_defs.full_path())
++
++    foreach base : base_sheets
++      assert(fs.exists('@0@.scss'.format(base)) or
++        fs.exists('_@0@.scss'.format(base)))
++
++      base_sheets_expressions += '@import [^a-z]@0@[^a-z]'.format(base)
++      base_sheets_imports += '@import \'@0@\';'.format(base.replace('palette', 'palette-yaru'))
++    endforeach
++
++    default_yaru = configure_file(
++      command: [
++        'grep', '-v', '\|'.join(base_sheets_expressions), '@INPUT@',
++      ],
++      capture: true,
++      input: 'default.scss',
++      output: 'default-yaru.scss',
++    )
++
++    yaru_main = files('yaru_main.css.in')
++    yaru_accent_colors = files('yaru_accent_colors.scss')
++    foreach accent: YARU_ACCENTS
++      foreach variant: ['light', 'dark']
++        yaru_accent_colors_css += configure_file(
++          configuration: {
++            'variant': variant,
++            'yaru_accent_color': accent,
++          },
++          input: yaru_main,
++          output: 'main-@0@-yaru-@1@.css'.format(variant, accent),
++        )
++
++        yaru_accent_colors_sassc += configure_file(
++          configuration: {
++            'yaru_dark_variant': variant == 'dark' ? 'true' : 'false',
++            'yaru_accent_color': accent,
++            'yaru_theme_base_imports': '\n'.join(base_sheets_imports),
++            'yaru_theme_entry_point': default_yaru.full_path(),
++          },
++          input: yaru_accent_colors,
++          output: 'default-@0@-yaru-@1@.scss'.format(variant, accent),
++        )
++      endforeach
++    endforeach
++  endif
++
++  build_yaru_accent_colors = yaru_accent_colors_sassc.length() > 0
++  if build_yaru_accent_colors
++    assert(sassc.found(), 'No SSSC found, needed for accent colors!')
++  endif
+ 
+   scss_deps = files([
+     '_colors.scss',
+@@ -70,10 +152,21 @@ if sassc.found()
+     'high-contrast',
+   ]
+ 
++  if build_yaru_accent_colors
++    foreach accent_definition: yaru_accent_colors_sassc
++      scss_deps += accent_definition
++      scss_files += accent_definition
++    endforeach
++
++    scss_deps += yaru_accent_colors
++    sassc_opts += [ '-I', meson.project_build_root() ]
++    sassc_opts += [ '-I', meson.current_source_dir() ]
++  endif
++
+   foreach scss: scss_files
+-    stylesheet_deps += custom_target('@0@.scss'.format(scss),
+-      input: '@0@.scss'.format(scss),
+-      output: '@0@.css'.format(scss),
++    stylesheet_deps += custom_target('@0@.scss'.format(fs.name(scss)),
++      input: '@0@'.format(scss).endswith('.scss') ? scss : '@0@.scss'.format(scss),
++      output: '@0@.css'.format(fs.stem(scss)),
+       command: [
+         sassc, sassc_opts, '@INPUT@', '@OUTPUT@',
+       ],
+@@ -82,9 +175,24 @@ if sassc.found()
+   endforeach
+ endif
+ 
++accents_css = []
++foreach accent_definition: yaru_accent_colors_sassc + yaru_accent_colors_css
++  accents_css += '<file alias="@0@">@1@/@2@</file>'.format(
++    fs.stem(accent_definition) + '.css', meson.project_build_root(),
++    fs.replace_suffix(accent_definition, '.css'))
++endforeach
++
++gresource_file = configure_file(
++  input: 'adwaita-stylesheet.gresources.xml',
++  output: '@BASENAME@',
++  configuration: {
++    'YARU_ACCENTS_CSS': accents_css.length() > 0 ? '\n'.join(accents_css) : '',
++  }
++)
++
+ libadwaita_stylesheet_resources = gnome.compile_resources(
+   'adwaita-stylesheet-resources',
+-  'adwaita-stylesheet.gresources.xml',
++  gresource_file,
+ 
+   source_dir: [
+     # List in order of preference
+diff --git a/src/stylesheet/sass-utils.scss b/src/stylesheet/sass-utils.scss
+new file mode 100644
+index 0000000..f7ea2c9
+--- /dev/null
++++ b/src/stylesheet/sass-utils.scss
+@@ -0,0 +1,212 @@
++// Copyright © 2022, Canonical Ltd
++//
++// This program is free software; you can redistribute it and/or
++// modify it under the terms of the GNU Lesser General Public
++// License as published by the Free Software Foundation; either
++// version 2.1 of the License, or (at your option) any later version.
++//
++// This program is distributed in the hope that it will be useful,
++// but WITHOUT ANY WARRANTY; without even the implied warranty of
++// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++// Lesser General Public License for more details.
++//
++// You should have received a copy of the GNU Lesser General Public
++// License along with this library. If not, see <http://www.gnu.org/licenses/>.
++// Authors:
++//       Marco Trevisan <marco.trevisan@canonical.com>
++
++@function str-contains($str, $substring) {
++    @return str-index($str, $substring) != null;
++}
++
++@function str-starts-with($str, $substring) {
++    @return str-index($str, $substring) == 1;
++}
++
++@function str-ends-with($str, $substring) {
++    $index: str-index($str, $substring);
++    @if ($index == null) {
++        @return false;
++    }
++
++    @return ($index + str-length($substring) - 1) == str-length($str);
++}
++
++@function str-basename($str, $divider: '/') {
++    $index: str-index($str, $divider);
++
++    @while $index != null {
++        $str: str-slice($str, $index + 1);
++        $index: str-index($str, $divider);
++    }
++
++    @return $str;
++}
++
++@function str-extension($str) {
++    $extension: str-basename($str, '.');
++    @return if($extension == $str, null, $extension);
++}
++
++@function str-dirname($str, $divider: '/') {
++    $str_copy: $str;
++    $index: str-index($str, $divider);
++    $last_index: null;
++
++    @while $index != null {
++        $str: str-slice($str, $index + 1);
++        $last_index: if($last_index, $last_index, 0) + $index;
++        $index: str-index($str, $divider);
++    }
++
++    @return if($last_index, str-slice($str_copy, 1, $last_index - 1), '.');
++}
++
++@function list-length($list) {
++    @return length($list);
++}
++
++@function list-nth($list, $nth) {
++    $length: length($list);
++    @if ($length == 0 or abs($nth) > $length) {
++        @return null;
++    }
++
++    @if ($nth >= 0) {
++        $nth: $nth + 1;
++    }
++
++    @return nth($list, $nth);
++}
++
++@function list-index($list, $item) {
++    $i: 0;
++    @each $e in $list {
++        @if ($e == $item) {
++            @return $i;
++        }
++
++        $i: $i + 1;
++    }
++
++    @return null;
++}
++
++@function pow($base, $exponent, $root: 1) {
++    @if ($exponent == 0) {
++        @return 1;
++    }
++
++    @if ($base == 0) {
++        @return 0;
++    }
++
++    @if ($root != 1) {
++        @if ($exponent == $root) {
++            @return $base;
++        }
++        $base: nth-root($base, $root);
++    }
++
++    @if $exponent < 0 {
++        $base: 1 / $base;
++        $exponent: -$exponent;
++    } @else if ($exponent % 2 == 0) {
++        $half-pow: pow($base, $exponent / 2);
++        @return $half-pow * $half-pow;
++    }
++
++    $i: 1;
++    $val: $base;
++    @while ($i < $exponent) {
++        $val: $val * $base;
++        $i: $i + 1;
++    }
++
++    @return $val;
++}
++
++@function nth-root($value, $n, $max_iterations: 100) {
++    @if ($n <= 0) {
++        @error "Not supported"
++    }
++
++    @if ($n == 1 or $value == 0) {
++        @return $value;
++    }
++
++    $i: 1;
++    $pre-val: 1;
++    @while ($i < $max_iterations) {
++        $val: (1.0 / $n) * ((($n - 1) * $pre-val) + $value / pow($pre-val, $n - 1));
++
++        @if ($pre-val == $val) {
++            @return $val;
++        }
++
++        $pre-val: $val;
++        $i: $i + 1;
++    }
++
++    @error ("Failed to compute " + $n + "th root of " + $value + " in " +
++            $max_iterations + " iterations");
++}
++
++@function truncate($value, $decimals: 10) {
++    @if ($decimals < 0) {
++        @error "Not supported"
++    }
++
++    $multiplier: pow(10, $decimals);
++    @return floor($value * $multiplier) / $multiplier;
++}
++
++// Credits to https://css-tricks.com/snippets/sass/luminance-color-function/
++@function luminance($color) {
++    $colors: (
++        'red': red($color),
++        'green': green($color),
++        'blue': blue($color)
++    );
++
++    @each $name, $value in $colors {
++        $adjusted: 0;
++        $value: $value / 255;
++
++        @if $value < 0.03928 {
++            $value: $value / 12.92;
++        } @else {
++            $value: ($value + .055) / 1.055;
++            $value: pow($value, 12, 5);
++        }
++
++        $colors: map-merge($colors, ($name: $value));
++    }
++
++    @return ((map-get($colors, 'red') * .2126) +
++             (map-get($colors, 'green') * .7152) +
++             (map-get($colors, 'blue') * .0722));
++}
++
++@function color-contrast($color1, $color2) {
++    $c1-luminance: luminance($color1);
++    $c2-luminance: luminance($color2);
++
++    $lighter-luminance: max($c1-luminance, $c2-luminance);
++    $darker-luminance: min($c1-luminance, $c2-luminance);
++
++    @return ($lighter-luminance + 0.05) / ($darker-luminance + 0.05);
++}
++
++@function optimize-contrast($bg, $fg, $large-text: false, $target: 4.5) {
++    @if ($large-text and $target == 4.5) {
++        $target: 3;
++    }
++
++    $dark-bg: luminance($bg) < luminance($fg);
++    @while (color-contrast($bg, $fg) < $target) {
++        $fg: if($dark-bg, lighten($fg, 0.1), darken($fg, 0.1));
++    }
++
++    @return $fg;
++}
+diff --git a/src/stylesheet/yaru_accent_colors.scss b/src/stylesheet/yaru_accent_colors.scss
+new file mode 100644
+index 0000000..06db5d4
+--- /dev/null
++++ b/src/stylesheet/yaru_accent_colors.scss
+@@ -0,0 +1,161 @@
++// Keep this in sync with
++//   https://github.com/ubuntu/yaru/blob/master/common/accent-colors.scss.in
++
++@function get_accent_color($accent_color, $is_dark: false) {
++    $color: null;
++    @if $accent_color == 'default' {
++        $color: #E95420;
++    } @else if $accent_color == 'sage' {
++        $color: #657B69;
++    } @else if $accent_color == 'olive' {
++        $color: #4B8501;
++    } @else if $accent_color == 'prussiangreen' {
++        $color: #308280;
++    } @else if $accent_color == 'blue' {
++        $color: #0073E5;
++    } @else if $accent_color == 'purple' {
++        $color: #7764D8;
++    } @else if $accent_color == 'magenta' {
++        $color: #B34CB3;
++    } @else if $accent_color == 'red' {
++        $color: #DA3450;
++    } @else if $accent_color == 'yellow' {
++        $color: #C88800;
++    } @else {
++        @error('No known accent color defined!');
++    }
++    @debug('Using accent color ' + $accent_color + ': ' + $color);
++    @return $color;
++}
++
++$yaru_is_dark_variant: @yaru_dark_variant@;
++$yaru_accent_bg_color: get_accent_color('@yaru_accent_color@', $yaru_is_dark_variant);
++$accent_bg_color: $yaru_accent_bg_color;
++$accent_color: $yaru_accent_bg_color;
++:root {
++    --yaru-accent-bg-color: #{$yaru_accent_bg_color};
++    --accent-color: #{$yaru_accent_bg_color};
++    --accent-bg-color: #{$yaru_accent_bg_color};
++}
++$accent-fg-color: white;
++@define-color accent_fg_color #{$accent-fg-color};
++@define-color accent_bg_color #{$accent_bg_color};
++@debug("Accent color is @yaru_accent_color@:" + $yaru_accent_bg_color);
++
++// Optimize accent-color definition for default background colors
++@import 'sass-utils';
++
++@yaru_theme_base_imports@
++
++@if str-has-suffix('@yaru_theme_entry_point@' == 'stylesheet/default-yaru.scss') {
++    @define-color accent_color #{$accent_color};
++    $window-bg-color: if(not $yaru_is_dark_variant, #FAFAFA, lighten($jet, 8%));
++    $window-fg-color: if(not $yaru_is_dark_variant, $inkstone, $porcelain);
++    $headerbar-bg-color: if(not $yaru_is_dark_variant,
++        $window-bg-color,
++        lighten($window-bg-color, 5%));
++    $dialog-bg-color: if(not $yaru_is_dark_variant,
++        $window-bg-color,
++        lighten($window-bg-color, 7%));
++    $sidebar-bg-color: if(not $yaru_is_dark_variant,
++        darken($window-bg-color, 6%),
++        $headerbar-bg-color);
++    $sidebar-backdrop-color: if(not $yaru_is_dark_variant,
++        lighten($sidebar-bg-color, 2%),
++        darken($sidebar-bg-color, 3%));
++    $secondary-sidebar-bg-color: $sidebar-backdrop-color;
++    $secondary-sidebar-backdrop-color: if(not $yaru_is_dark_variant,
++        lighten($secondary-sidebar-bg-color, 3%),
++        darken($secondary-sidebar-bg-color, 3%));
++    $overview-bg-color: $sidebar-backdrop-color;
++    $shade-color: if(not $yaru_is_dark_variant,
++        transparentize($jet, 0.92),
++        transparentize(darken($jet, 3%), 0.65));
++    $osd_fg_color: #eeeeec;
++    $osd_bg_color: transparentize(lighten($jet, 2%),0.025);
++    $toast_bg_color: transparentize(lighten($jet, 2%),0.025);
++    $toast_fg_color: white;
++
++    @define-color window_bg_color #{$window-bg-color};
++    @define-color window_fg_color #{$window-fg-color};
++    @define-color dialog_bg_color #{$dialog-bg-color};
++    @define-color popover_bg_color #{$dialog-bg-color};
++    @define-color warning_fg_color #{$window-fg-color};
++    @define-color view_fg_color #{$window-fg-color};
++    @define-color headerbar_fg_color #{$window-fg-color};
++    @define-color headerbar_bg_color #{$headerbar-bg-color};
++    @define-color headerbar_backdrop_color #{$window-bg-color};
++    @define-color headerbar_border_color #{$window-fg-color};
++    @define-color card_fg_color #{$window-fg-color};
++    @define-color dialog_fg_color #{$window-fg-color};
++    @define-color popover_fg_color #{$window-fg-color};
++    @define-color thumbnail_fg_color #{$window-fg-color};
++    @define-color sidebar_bg_color #{$sidebar-bg-color};
++    @define-color sidebar_backdrop_color #{$sidebar-backdrop-color};
++    @define-color secondary_sidebar_bg_color #{$secondary-sidebar-bg-color};
++    @define-color secondary_sidebar_backdrop_color #{$secondary-sidebar-backdrop-color};
++    @define-color sidebar_shade_color #{$shade-color};
++    @define-color sidebar_border_color #{$shade-color};
++    @define-color secondary_sidebar_shade_color #{$shade-color};
++    @define-color secondary_sidebar_border_color #{$shade-color};
++    @define-color card_shade_color #{$shade-color};
++    @define-color popover_shade_color #{$shade-color};
++    @define-color shade_color #{$shade-color};
++    :root {
++        --window-bg-color: #{$window-bg-color};
++        --window-fg-color: #{$window-fg-color};
++        --dialog-bg-color: #{$dialog-bg-color};
++        --popover-bg-color: #{$dialog-bg-color};
++        --warning-fg-color: #{$window-fg-color};
++        --view-fg-color: #{$window-fg-color};
++        --headerbar-fg-color: #{$window-fg-color};
++        --headerbar-bg-color: #{$headerbar-bg-color};
++        --headerbar-backdrop-color: #{$window-bg-color};
++        --headerbar-border-color: #{$window-fg-color};
++        --card-fg-color: #{$window-fg-color};
++        --dialog-fg-color: #{$window-fg-color};
++        --popover-fg-color: #{$window-fg-color};
++        --popover-shade-color: #{$shade-color};
++        --thumbnail-fg-color: #{$window-fg-color};
++        --sidebar-bg-color: #{$sidebar-bg-color};
++        --sidebar-backdrop-color: #{$sidebar-backdrop-color};
++        --sidebar-shade-color: #{$shade-color};
++        --sidebar-border-color: #{$shade-color};
++        --secondary-sidebar-bg-color: #{$secondary-sidebar-bg-color};
++        --secondary-sidebar-backdrop-color: #{$secondary-sidebar-backdrop-color};
++        --secondary-sidebar-shade-color: #{$shade-color};
++        --secondary-sidebar-border-color: #{$shade-color};
++        --overview-bg-color: #{$overview-bg-color};
++        --card-shade-color: #{$shade-color};
++        --shade-color: #{$shade-color};
++    }
++
++    $contrast_target: if(not $yaru_is_dark_variant, 4.51, 4.8);
++    $yaru-accent-color: optimize-contrast($window-bg-color,
++        $yaru_accent_bg_color, $target: $contrast_target);
++    $yaru_accent_bg_color: optimize-contrast($accent_fg_color,
++        $yaru_accent_bg_color, $target: $contrast_target);
++    @define-color yaru_accent_color #{$yaru-accent-color};
++    @define-color yaru_accent_bg_color #{$yaru_accent_bg_color};
++    @define-color accent_color #{$yaru-accent-color};
++    :root {
++        --yaru-accent-color: #{$yaru-accent-color};
++        --yaru-accent-bg-color: #{$yaru_accent_bg_color};
++        --accent-color: #{$yaru-accent-color};
++        --accent-bg-color: #{$yaru_accent_bg_color};
++    }
++
++    @debug("Accent optimized colors for @yaru_accent_color@ are accent " +
++        $yaru-accent-color + ", bg " + $yaru-accent-bg-color);
++
++    $contrast_target: if(not $yaru_is_dark_variant, 6, 5.5);
++    $link-color: optimize-contrast($window-bg-color,
++        $accent-color, $target: $contrast_target);
++    $link-visited-color: color-mix(in srgb, $link-color 80%, $window-fg-color) !default;
++    :root {
++        --yaru-link-color: #{$link-color};
++        --yaru-link-visited-color: #{$link-visited-color};
++    }
++}
++
++@import '@yaru_theme_entry_point@';
+diff --git a/src/stylesheet/yaru_main.css.in b/src/stylesheet/yaru_main.css.in
+new file mode 100644
+index 0000000..fcb82dd
+--- /dev/null
++++ b/src/stylesheet/yaru_main.css.in
+@@ -0,0 +1,7 @@
++@media not (prefers-contrast: more) {
++  @import url("default-@variant@-yaru-@yaru_accent_color@.css");
++}
++
++@media (prefers-contrast: more) {
++  @import url("high-contrast.css");
++}
diff -pruN 1.8.0-1/debian/salsa-ci.yml 1.8.0-1ubuntu2/debian/salsa-ci.yml
--- 1.8.0-1/debian/salsa-ci.yml	2025-09-12 19:54:39.000000000 +0000
+++ 1.8.0-1ubuntu2/debian/salsa-ci.yml	2025-09-24 12:52:06.000000000 +0000
@@ -1,3 +1,3 @@
 ---
 include:
-  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/debian.yml
+  - https://salsa.debian.org/salsa-ci-team/pipeline/raw/master/recipes/ubuntu.yml
