summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 0d1ab4c40a239b6b82508c5dca0f5d2767cb785c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# Maintainer: Nora Amita <qiangtianxing@gmail.com>
# Contributor: Mark Wagie <mark dot wagie at proton dot me>
# Contributor: Dušan Simić <dusan.simic1810@gmail.com>

pkgname=adw-gtk-color-git
_pkgname=adw-gtk3
pkgver=6.4.r10.g34a69db
pkgrel=1
pkgdesc="The theme from libadwaita ported to GTK-3 with accent color variants"
arch=('any')
url="https://github.com/lassekongo83/adw-gtk3"
license=('LGPL-2.1-or-later')
makedepends=(
	'dart-sass'
	'git'
)
provides=("adw-gtk-theme-git")
conflicts=("adw-gtk-theme-git" "adw-gtk-theme" "${_pkgname}")
source=('git+https://github.com/lassekongo83/adw-gtk3.git')
sha256sums=('SKIP')

pkgver() {
	cd "${_pkgname}"
	git describe --long --tags --abbrev=7 | sed 's/^v//;s/\([^-]*-g\)/r\1/;s/-/./g'
}

build() {
	cd "${_pkgname}"

	# Accent colors to build
	COLORS=("blue" "teal" "green" "yellow" "orange" "red" "pink" "purple" "slate")

	# Hex codes from adw-gtk3-colorizer
	declare -A HEX_MAP
	HEX_MAP=(
		["blue"]="#3584e4"
		["teal"]="#2190a4"
		["green"]="#3a944a"
		["yellow"]="#c88800"
		["orange"]="#ed5b00"
		["red"]="#e62d42"
		["pink"]="#d56199"
		["purple"]="#9141ac"
		["slate"]="#6f8396"
	)

	# Root directory of adw-gtk3
	SRC_DIR="src"
	VARIANTS_DIR="variants"

	mkdir -p "$VARIANTS_DIR"

	# Original files to override
	DEFAULTS_SCSS="$SRC_DIR/sass/_defaults.scss"
	TWEAKS_SCSS="$SRC_DIR/sass/gtk4/libadwaita-tweaks.scss"

	for color in "${COLORS[@]}"; do
		hex=${HEX_MAP[$color]}
		echo "Building theme variant: $color ($hex)..."

		# --- LIGHT VARIANT ---
		VARIANT_NAME="adw-gtk3-$color"
		OUT_DIR="$VARIANTS_DIR/$VARIANT_NAME"
		mkdir -p "$OUT_DIR/gtk-3.0" "$OUT_DIR/gtk-4.0"

		# 1. index.theme
		sed "s/@VariantThemeName@/adw-gtk3-$color/g" "$SRC_DIR/index.theme.in" >"$OUT_DIR/index.theme"

		# 2. Apply SASS overrides
		# We use git checkout to restore original files before each color to avoid cumulative changes
		git checkout "$DEFAULTS_SCSS" "$TWEAKS_SCSS"

		# Override @define-color accent_bg_color in _defaults.scss
		sed -i "s/@define-color accent_bg_color @blue_3;/@define-color accent_bg_color $hex;/g" "$DEFAULTS_SCSS"
		# Override in libadwaita-tweaks.scss
		sed -i "s/@define-color accent_bg_color @blue_3;/@define-color accent_bg_color $hex;/g" "$TWEAKS_SCSS"
		# Update GTK4 accent variable in tweaks
		sed -i "s/--accent-bg-color: var(--accent-blue);/--accent-bg-color: var(--accent-$color);/g" "$TWEAKS_SCSS"

		# 3. Compile GTK3 CSS
		echo "  Compiling GTK3..."
		sass --no-source-map -I "$SRC_DIR/sass" "$SRC_DIR/sass/gtk.scss" "$OUT_DIR/gtk-3.0/gtk.css"
		sass --no-source-map -I "$SRC_DIR/sass" "$SRC_DIR/sass/gtk-dark.scss" "$OUT_DIR/gtk-3.0/gtk-dark.css"

		# 4. Compile GTK4 CSS
		echo "  Compiling GTK4..."
		cp "$SRC_DIR/theme-light/gtk4/libadwaita.css" "$OUT_DIR/gtk-4.0/libadwaita.css"
		sass --no-source-map -I "$SRC_DIR/sass" "$SRC_DIR/sass/gtk4/libadwaita-tweaks.scss" "$OUT_DIR/gtk-4.0/libadwaita-tweaks.css"

		echo "@import url('libadwaita.css');" >"$OUT_DIR/gtk-4.0/gtk.css"
		echo "@import url('libadwaita-tweaks.css');" >>"$OUT_DIR/gtk-4.0/gtk.css"
		cp "$OUT_DIR/gtk-4.0/gtk.css" "$OUT_DIR/gtk-4.0/gtk-dark.css"

		# 5. Copy Assets
		cp -r "$SRC_DIR/assets" "$OUT_DIR/gtk-3.0/"
		cp "$SRC_DIR/theme-light/thumbnail-light.png" "$OUT_DIR/gtk-3.0/thumbnail.png"

		# --- DARK VARIANT ---
		VARIANT_NAME_DARK="adw-gtk3-$color-dark"
		OUT_DIR_DARK="$VARIANTS_DIR/$VARIANT_NAME_DARK"
		mkdir -p "$OUT_DIR_DARK/gtk-3.0" "$OUT_DIR_DARK/gtk-4.0"

		# 1. index.theme
		sed "s/@VariantThemeName@/adw-gtk3-$color-dark/g" "$SRC_DIR/index.theme.in" >"$OUT_DIR_DARK/index.theme"

		# 2. GTK3 CSS (For standalone dark, gtk.css is the dark one)
		cp "$OUT_DIR/gtk-3.0/gtk-dark.css" "$OUT_DIR_DARK/gtk-3.0/gtk.css"
		cp "$OUT_DIR/gtk-3.0/gtk-dark.css" "$OUT_DIR_DARK/gtk-3.0/gtk-dark.css"

		# 3. GTK4 CSS
		cp "$OUT_DIR/gtk-4.0/"* "$OUT_DIR_DARK/gtk-4.0/"

		# 4. Assets
		cp -r "$SRC_DIR/assets" "$OUT_DIR_DARK/gtk-3.0/"
		cp "$SRC_DIR/theme-dark/thumbnail-dark.png" "$OUT_DIR_DARK/gtk-3.0/thumbnail.png"
	done

	# Final restoration to leave the tree clean
	git checkout "$DEFAULTS_SCSS" "$TWEAKS_SCSS"
}

package() {
	cd "${_pkgname}"
	install -d "$pkgdir/usr/share/themes"
	cp -a variants/* "$pkgdir/usr/share/themes/"
}