galaaz 2.1.10.pre.2 → 2.1.10.pre.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/lib/galaaz/cli.rb +1 -1
- data/logos/icon-font/README.md +8 -2
- data/logos/icon-font/build_font.py +48 -5
- data/logos/icon-font/galaaz-mark.svg +27 -2
- data/logos/icon-font/preview/glyph_16.png +0 -0
- data/logos/icon-font/preview/glyph_24.png +0 -0
- data/logos/icon-font/preview/glyph_48.png +0 -0
- data/script/omarchy/README.md +1 -1
- data/script/omarchy/fonts/galaaz.ttf +0 -0
- data/script/omarchy/omarchy-menu.jsonc +13 -17
- data/version.rb +1 -1
- metadata +4 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c3ee446f657b5eac4bb8ef351c3a7adbe0246b8d750288bffab68c43e83e10bf
|
|
4
|
+
data.tar.gz: e00e643ae69cc1fae159706c6b06b8e9c291e4060814b5b3feafc4abb722454c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7a6fac11ad1080ebb3d4161fb228f5c259dfe979562842d3284af368538fec452f2a3ee78074dcca444f9889f4f3808a86d4e4d9b616805ff4cc0281c9e7400c
|
|
7
|
+
data.tar.gz: 87e43043e7bc22a13e96a691c23e9b9410655ec3b4df22c99766177cf5c9b08961ade4b27e6894ee777c13113abeab23bbd27c719d785f7079091c5ff2b1f36c
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 2.1.10.pre.4
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Omarchy brand icon moved from **U+E900 → U+E920**. E900–E90D belong to
|
|
10
|
+
Omarchy’s own private font (waybar `\ue900`); using E900 made the menu show
|
|
11
|
+
Omarchy’s mark whenever `iconFont: galaaz` failed to win.
|
|
12
|
+
|
|
13
|
+
## 2.1.10.pre.3
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Omarchy brand icon: hand-drawn R + oversized ruby cutout (no PNG auto-trace);
|
|
18
|
+
build fails if gem hole is too small; preview PNGs at 16/24/48px.
|
|
19
|
+
- Omarchy menu: brand icons use `\uE900` + `iconFont: galaaz`; remove separate
|
|
20
|
+
TeX menu row (Knit installs TinyTeX); remove Knit demo (oh_my).
|
|
21
|
+
|
|
5
22
|
## 2.1.10.pre.2
|
|
6
23
|
|
|
7
24
|
### Fixed
|
data/lib/galaaz/cli.rb
CHANGED
|
@@ -268,7 +268,7 @@ module Galaaz
|
|
|
268
268
|
FileUtils.mkdir_p(fonts)
|
|
269
269
|
dest = File.join(fonts, 'galaaz.ttf')
|
|
270
270
|
FileUtils.cp(src, dest)
|
|
271
|
-
puts "galaaz omarchy: #{dest} (family #{OMARCHY_FONT_FAMILY}, U+
|
|
271
|
+
puts "galaaz omarchy: #{dest} (family #{OMARCHY_FONT_FAMILY}, U+E920)"
|
|
272
272
|
if command_present?('fc-cache')
|
|
273
273
|
system('fc-cache', '-r')
|
|
274
274
|
system('fc-cache', '-f', fonts)
|
data/logos/icon-font/README.md
CHANGED
|
@@ -4,7 +4,10 @@ Private TrueType font (`family: galaaz`) with one private-use glyph:
|
|
|
4
4
|
|
|
5
5
|
| Codepoint | Name | Role |
|
|
6
6
|
|-----------|------|------|
|
|
7
|
-
| `U+
|
|
7
|
+
| `U+E920` | `galaaz` | Monochrome R + gem cutout for Install menu rows |
|
|
8
|
+
|
|
9
|
+
Do **not** reuse `U+E900` — Omarchy's private font already maps E900–E90D
|
|
10
|
+
(waybar logo is `\ue900`).
|
|
8
11
|
|
|
9
12
|
## Sources
|
|
10
13
|
|
|
@@ -18,10 +21,13 @@ Rebuild after editing the SVG:
|
|
|
18
21
|
|
|
19
22
|
```bash
|
|
20
23
|
python3 -m venv /tmp/galaaz-font-venv
|
|
21
|
-
/tmp/galaaz-font-venv/bin/pip install fonttools
|
|
24
|
+
/tmp/galaaz-font-venv/bin/pip install fonttools pillow
|
|
22
25
|
/tmp/galaaz-font-venv/bin/python logos/icon-font/build_font.py
|
|
23
26
|
```
|
|
24
27
|
|
|
28
|
+
The build writes `preview/glyph_{16,24,48}.png` and **fails** if the gem
|
|
29
|
+
cutout is too small for menu size. Inspect those PNGs before shipping.
|
|
30
|
+
|
|
25
31
|
`galaaz omarchy` installs the TTF to `~/.local/share/fonts/galaaz/` and the menu
|
|
26
32
|
uses `"iconFont": "galaaz"`. Restart the Omarchy shell after install so Qt
|
|
27
33
|
reloads fonts (`omarchy menu refresh` alone is not enough for a new family).
|
|
@@ -13,12 +13,16 @@ from fontTools.svgLib.path import SVGPath
|
|
|
13
13
|
from fontTools.ttLib import TTFont
|
|
14
14
|
from fontTools.ttLib.tables._g_l_y_f import Glyph as TTGlyph
|
|
15
15
|
from fontTools.ttLib.tables._g_l_y_f import GlyphCoordinates
|
|
16
|
-
from fontTools.ttLib.tables._g_l_y_f import flagOnCurve
|
|
17
16
|
|
|
18
17
|
ROOT = Path(__file__).resolve().parents[2]
|
|
19
18
|
SVG = ROOT / "logos" / "icon-font" / "galaaz-mark.svg"
|
|
20
19
|
OUT = ROOT / "script" / "omarchy" / "fonts" / "galaaz.ttf"
|
|
21
|
-
|
|
20
|
+
PREVIEW_DIR = ROOT / "logos" / "icon-font" / "preview"
|
|
21
|
+
# NOT U+E900: Omarchy's own brand font already owns E900–E90D (waybar logo).
|
|
22
|
+
# Using that slot makes fallback look like Omarchy's mark, not Galaaz.
|
|
23
|
+
CODEPOINT = 0xE920
|
|
24
|
+
# Gem cutout must stay visible at menu size (~16px). Tiny holes collapse.
|
|
25
|
+
MIN_HOLE_AREA_RATIO = 0.04
|
|
22
26
|
|
|
23
27
|
|
|
24
28
|
def extract_path_d(svg_text: str) -> str:
|
|
@@ -69,6 +73,31 @@ def fix_hole_windings(glyph: TTGlyph) -> None:
|
|
|
69
73
|
glyph.numberOfContours = len(new_ends)
|
|
70
74
|
|
|
71
75
|
|
|
76
|
+
def write_previews(ttf_path: Path) -> None:
|
|
77
|
+
"""Write menu-size PNG previews next to the SVG (requires Pillow)."""
|
|
78
|
+
try:
|
|
79
|
+
from PIL import Image, ImageDraw, ImageFont
|
|
80
|
+
except ImportError:
|
|
81
|
+
print(" preview: skipped (pip install pillow)")
|
|
82
|
+
return
|
|
83
|
+
|
|
84
|
+
PREVIEW_DIR.mkdir(parents=True, exist_ok=True)
|
|
85
|
+
for size in (16, 24, 48):
|
|
86
|
+
canvas = max(64, size * 2)
|
|
87
|
+
img = Image.new("RGBA", (canvas, canvas), (30, 30, 30, 255))
|
|
88
|
+
draw = ImageDraw.Draw(img)
|
|
89
|
+
font = ImageFont.truetype(str(ttf_path), size)
|
|
90
|
+
ch = chr(CODEPOINT)
|
|
91
|
+
bbox = draw.textbbox((0, 0), ch, font=font)
|
|
92
|
+
w, h = bbox[2] - bbox[0], bbox[3] - bbox[1]
|
|
93
|
+
x = (canvas - w) // 2 - bbox[0]
|
|
94
|
+
y = (canvas - h) // 2 - bbox[1]
|
|
95
|
+
draw.text((x, y), ch, font=font, fill=(230, 230, 230, 255))
|
|
96
|
+
out = PREVIEW_DIR / f"glyph_{size}.png"
|
|
97
|
+
img.save(out)
|
|
98
|
+
print(f" preview: {out}")
|
|
99
|
+
|
|
100
|
+
|
|
72
101
|
def main() -> int:
|
|
73
102
|
d = extract_path_d(SVG.read_text(encoding="utf-8"))
|
|
74
103
|
transform = Transform(1, 0, 0, -1, 0, 1000)
|
|
@@ -100,12 +129,12 @@ def main() -> int:
|
|
|
100
129
|
{
|
|
101
130
|
"familyName": "galaaz",
|
|
102
131
|
"styleName": "Regular",
|
|
103
|
-
"uniqueFontIdentifier": "galaaz Regular",
|
|
132
|
+
"uniqueFontIdentifier": "galaaz Regular 1.002 U+E920",
|
|
104
133
|
"fullName": "galaaz Regular",
|
|
105
134
|
"psName": "galaaz-Regular",
|
|
106
|
-
"version": "Version 1.
|
|
135
|
+
"version": "Version 1.002",
|
|
107
136
|
"manufacturer": "Galaaz",
|
|
108
|
-
"description": "Monochrome Galaaz mark for Omarchy menu rows (U+
|
|
137
|
+
"description": "Monochrome Galaaz mark for Omarchy menu rows (U+E920).",
|
|
109
138
|
}
|
|
110
139
|
)
|
|
111
140
|
OUT.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -117,12 +146,26 @@ def main() -> int:
|
|
|
117
146
|
coords = list(g.coordinates)
|
|
118
147
|
ends = list(g.endPtsOfContours)
|
|
119
148
|
start = 0
|
|
149
|
+
areas = []
|
|
120
150
|
for i, end in enumerate(ends):
|
|
121
151
|
pts = coords[start : end + 1]
|
|
122
152
|
a = signed_area(pts)
|
|
153
|
+
areas.append(a)
|
|
123
154
|
print(f" contour {i}: {'CW' if a < 0 else 'CCW'} area={a:.0f}")
|
|
124
155
|
start = end + 1
|
|
156
|
+
if len(areas) < 2:
|
|
157
|
+
raise SystemExit("expected outer + gem hole contours")
|
|
158
|
+
outer = abs(areas[0])
|
|
159
|
+
hole = abs(areas[1])
|
|
160
|
+
ratio = hole / outer if outer else 0.0
|
|
161
|
+
print(f" hole/outer area ratio: {ratio:.3f} (min {MIN_HOLE_AREA_RATIO})")
|
|
162
|
+
if ratio < MIN_HOLE_AREA_RATIO:
|
|
163
|
+
raise SystemExit(
|
|
164
|
+
f"gem cutout too small for menu size ({ratio:.3f} < {MIN_HOLE_AREA_RATIO}); "
|
|
165
|
+
"enlarge the hole in galaaz-mark.svg"
|
|
166
|
+
)
|
|
125
167
|
print(f"wrote {OUT} glyph U+{CODEPOINT:04X} family=galaaz")
|
|
168
|
+
write_previews(OUT)
|
|
126
169
|
return 0
|
|
127
170
|
|
|
128
171
|
|
|
@@ -1,7 +1,32 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!--
|
|
2
|
+
<!--
|
|
3
|
+
Monochrome Galaaz mark for Omarchy menu (family galaaz, U+E900).
|
|
4
|
+
Hand-drawn for ~16–24px: bold R + oversized hexagonal ruby cutout.
|
|
5
|
+
Do NOT auto-trace the PNG — stair-step traces collapse into "COBOL" blobs.
|
|
6
|
+
-->
|
|
3
7
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000" fill="#000">
|
|
4
8
|
<path fill-rule="evenodd" d="
|
|
5
|
-
M
|
|
9
|
+
M 180 120
|
|
10
|
+
H 560
|
|
11
|
+
L 700 120
|
|
12
|
+
L 800 230
|
|
13
|
+
L 820 380
|
|
14
|
+
L 740 530
|
|
15
|
+
L 580 590
|
|
16
|
+
L 840 880
|
|
17
|
+
H 620
|
|
18
|
+
L 400 610
|
|
19
|
+
H 320
|
|
20
|
+
V 880
|
|
21
|
+
H 180
|
|
22
|
+
V 120
|
|
23
|
+
Z
|
|
24
|
+
|
|
25
|
+
M 340 250
|
|
26
|
+
L 580 250
|
|
27
|
+
L 660 360
|
|
28
|
+
L 460 530
|
|
29
|
+
L 260 360
|
|
30
|
+
Z
|
|
6
31
|
"/>
|
|
7
32
|
</svg>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/script/omarchy/README.md
CHANGED
|
@@ -31,7 +31,7 @@ Then Super+Space → Install → Development → **Galaaz**.
|
|
|
31
31
|
| `debug-galaaz.sh` | Snapshot doctor/PATH/gem/bridge |
|
|
32
32
|
| `remove-galaaz.sh` | Uninstall gem + marked blogs; leave R |
|
|
33
33
|
| `omarchy-menu.jsonc` | Menu overlay submenu under Install → Development |
|
|
34
|
-
| `fonts/galaaz.ttf` | Monochrome brand mark (`iconFont: galaaz`, U+E900) |
|
|
34
|
+
| `fonts/galaaz.ttf` | Monochrome brand mark (`iconFont: galaaz`, U+E920; not E900) |
|
|
35
35
|
|
|
36
36
|
Menu rows use the Galaaz icon font (not the Ruby-on-Rails Nerd Font gem). Source SVG
|
|
37
37
|
and rebuild script live under `logos/icon-font/`.
|
|
Binary file
|
|
@@ -5,17 +5,20 @@
|
|
|
5
5
|
// Use ~/.local/bin/galaaz (installer wrapper). Do not quote the whole
|
|
6
6
|
// "galaaz add …" as one word — omarchy-launch-tui then does nothing useful.
|
|
7
7
|
//
|
|
8
|
-
// Brand mark:
|
|
9
|
-
// (
|
|
8
|
+
// Brand mark: U+E920 (\uE920) + iconFont "galaaz".
|
|
9
|
+
// Do NOT use U+E900 — that slot is Omarchy's own logo (waybar \ue900,
|
|
10
|
+
// private font family "omarchy", range E900–E90D). Fallback without our
|
|
11
|
+
// font then shows Omarchy's mark, not Galaaz.
|
|
12
|
+
// TTF: script/omarchy/fonts/galaaz.ttf → ~/.local/share/fonts/galaaz/
|
|
10
13
|
|
|
11
14
|
"install.development.galaaz": {
|
|
12
|
-
"icon": "
|
|
15
|
+
"icon": "\uE920",
|
|
13
16
|
"iconFont": "galaaz",
|
|
14
17
|
"label": "Galaaz",
|
|
15
18
|
"description": "R on Rails"
|
|
16
19
|
},
|
|
17
20
|
"install.development.galaaz.core": {
|
|
18
|
-
"icon": "
|
|
21
|
+
"icon": "\uE920",
|
|
19
22
|
"iconFont": "galaaz",
|
|
20
23
|
"label": "Galaaz (core)",
|
|
21
24
|
"description": "gem + setup + blogs (not just gem install)",
|
|
@@ -44,7 +47,7 @@
|
|
|
44
47
|
"when": "test -f ~/.config/galaaz/profiles/core"
|
|
45
48
|
},
|
|
46
49
|
"install.development.galaaz.knit": {
|
|
47
|
-
"icon": "
|
|
50
|
+
"icon": "\uE920",
|
|
48
51
|
"iconFont": "galaaz",
|
|
49
52
|
"label": "Knit (HTML + PDF blogs)",
|
|
50
53
|
"description": "pandoc + knitr/rmarkdown + TinyTeX",
|
|
@@ -52,35 +55,28 @@
|
|
|
52
55
|
"disabled": "test -f ~/.config/galaaz/profiles/knit"
|
|
53
56
|
},
|
|
54
57
|
"install.development.galaaz.arrow": {
|
|
55
|
-
"icon": "
|
|
58
|
+
"icon": "\uE920",
|
|
56
59
|
"iconFont": "galaaz",
|
|
57
60
|
"label": "Arrow",
|
|
58
61
|
"action": "omarchy-launch-tui omarchy-galaaz-add arrow",
|
|
59
62
|
"disabled": "test -f ~/.config/galaaz/profiles/arrow"
|
|
60
63
|
},
|
|
61
|
-
"install.development.galaaz.tex": {
|
|
62
|
-
"icon": "",
|
|
63
|
-
"iconFont": "galaaz",
|
|
64
|
-
"label": "TeX (PDF blogs)",
|
|
65
|
-
"action": "omarchy-launch-tui omarchy-galaaz-add tex",
|
|
66
|
-
"disabled": "test -f ~/.config/galaaz/profiles/tex"
|
|
67
|
-
},
|
|
68
64
|
"install.development.galaaz.bio": {
|
|
69
|
-
"icon": "
|
|
65
|
+
"icon": "\uE920",
|
|
70
66
|
"iconFont": "galaaz",
|
|
71
67
|
"label": "Bioconductor (DESeq2)",
|
|
72
68
|
"action": "omarchy-launch-tui omarchy-galaaz-add bio",
|
|
73
69
|
"disabled": "test -f ~/.config/galaaz/profiles/bio"
|
|
74
70
|
},
|
|
75
71
|
"install.development.galaaz.examples": {
|
|
76
|
-
"icon": "
|
|
72
|
+
"icon": "\uE920",
|
|
77
73
|
"iconFont": "galaaz",
|
|
78
74
|
"label": "Examples",
|
|
79
75
|
"action": "omarchy-launch-tui omarchy-galaaz-add examples",
|
|
80
76
|
"disabled": "test -f ~/.config/galaaz/profiles/examples"
|
|
81
77
|
},
|
|
82
78
|
"install.development.galaaz.ledger": {
|
|
83
|
-
"icon": "
|
|
79
|
+
"icon": "\uE920",
|
|
84
80
|
"iconFont": "galaaz",
|
|
85
81
|
"label": "Ledger (R-on-Rails demo)",
|
|
86
82
|
"description": "Clone app, seed, bin/dev",
|
|
@@ -88,7 +84,7 @@
|
|
|
88
84
|
"disabled": "test -f ~/.config/galaaz/profiles/ledger"
|
|
89
85
|
},
|
|
90
86
|
"remove.development.galaaz": {
|
|
91
|
-
"icon": "
|
|
87
|
+
"icon": "\uE920",
|
|
92
88
|
"iconFont": "galaaz",
|
|
93
89
|
"label": "Galaaz",
|
|
94
90
|
"description": "Core gem (add-on R packages stay)",
|
data/version.rb
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
$gem_name = "galaaz"
|
|
2
|
-
$version="2.1.10.pre.
|
|
2
|
+
$version="2.1.10.pre.4"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: galaaz
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.10.pre.
|
|
4
|
+
version: 2.1.10.pre.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Rodrigo Botafogo
|
|
@@ -405,6 +405,9 @@ files:
|
|
|
405
405
|
- logos/icon-font/README.md
|
|
406
406
|
- logos/icon-font/build_font.py
|
|
407
407
|
- logos/icon-font/galaaz-mark.svg
|
|
408
|
+
- logos/icon-font/preview/glyph_16.png
|
|
409
|
+
- logos/icon-font/preview/glyph_24.png
|
|
410
|
+
- logos/icon-font/preview/glyph_48.png
|
|
408
411
|
- new_bridge_specs/arrow_ipc_async_spec.rb
|
|
409
412
|
- new_bridge_specs/arrow_ipc_export_async_spec.rb
|
|
410
413
|
- new_bridge_specs/benchmark_phase5_5_unboxing_spec.rb
|