Queue is the paper plane with a clock on it (`md-send_clock`) rather than the plain plane plus the word: the pair is now told apart by the mark, which is what an icon is for, and the word survives as the button's accessible name where a screen reader still needs it. The three composer buttons take their colour from what pressing one does -- green sends now, blue sends later, red takes the running turn away -- and Stop becomes a filled button like the other two. Outlined said it was a qualifier on the primary action; it is a second thing you can do about the turn, and what separates them is the colour and the mark. The fills are named in Theme.kt with their content colour stated beside them, because a semantic colour has to carry its own contrast: these do not change with the surface, so nothing will rescue a foreground that stops being readable. Worth knowing when reading that file: the action greens and reds sit next to a `runningColor` green and a `failedColor` red, which are *states*. Nothing in one set is pressable and nothing in the other is a state, so a reader never has to tell them apart. The usage read-out loses its per-machine cards. A card is a step up the surface ladder and inside a dialog -- already a raised surface -- the step barely rendered while costing 16dp on every side. The machine and the service it answered for are one small quiet line instead of a heading over a subtitle, since the numbers underneath are what somebody opened this to see. The gaps between the bars now go *between* them rather than after each, which is what put a band of empty dialog above Close. The rest of that band was AlertDialog's own spacing, fixed at sizes meant for a sentence of prose and a decision, so this is a plain Dialog with the same container colour and corner and spacing chosen for a dense read-out. Looked at on the emulator: green send, then blue queue beside red stop during a `/slow 20` echo turn, and the dialog over the live session. The account had risen to 78% by then, which showed the five-hour bar and the header glyph going yellow on real numbers rather than forced ones.
63 lines
2.6 KiB
Bash
Executable File
63 lines
2.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Rebuilds androidApp/src/main/res/font/nerd_icons.ttf.
|
|
#
|
|
# The app draws a handful of icons -- a cog, a refresh arrow, send, stop --
|
|
# as text in a Nerd Fonts glyph rather than as vector assets or as ordinary
|
|
# Unicode. Unicode has no character for most of these, and the ones it does
|
|
# have are not reliably in an Android system font, so they land as tofu
|
|
# boxes on somebody's phone. Shipping the subset removes the hope: the
|
|
# glyph is in the APK.
|
|
#
|
|
# The whole symbols font is 3 MB for the handful below, so what is
|
|
# committed is a subset. Add a codepoint to GLYPHS below and to NerdIcons.kt
|
|
# (the two lists have to agree -- a codepoint in the Kotlin but not here is
|
|
# a glyph that silently doesn't exist), then run this and commit the result.
|
|
#
|
|
# Needs python3 and network access; fontTools is fetched into a temporary
|
|
# venv, so nothing has to be installed on the machine.
|
|
#
|
|
# Copied from dev-updater's script of the same name rather than shared
|
|
# through wg-app-link, for the reason Theme.kt gives about the palette: the
|
|
# link is the tunnel, the pinned CA and enrollment, and an icon set is a
|
|
# preference rather than part of that contract.
|
|
set -euo pipefail
|
|
|
|
# Codepoint, then the Nerd Fonts glyph name it came from. Material Design
|
|
# Icons bar one, so they read as one family -- and the first two are
|
|
# deliberately the same two dev-updater uses, since a cog and a refresh
|
|
# arrow mean the same thing in both apps. The exception is noted on its
|
|
# own line, as dev-updater's script does with its two.
|
|
GLYPHS=(
|
|
U+F0493 # md-cog
|
|
U+F0450 # md-refresh
|
|
U+F048A # md-send
|
|
U+F04DB # md-stop
|
|
U+F1163 # md-send_clock
|
|
U+F004D # md-arrow_left
|
|
U+F201 # fa-line_chart -- Font Awesome's, asked for by name
|
|
)
|
|
|
|
url=https://github.com/ryanoasis/nerd-fonts/releases/latest/download/NerdFontsSymbolsOnly.zip
|
|
out="$(cd "$(dirname "$0")" && pwd)/androidApp/src/main/res/font/nerd_icons.ttf"
|
|
work="$(mktemp -d)"
|
|
trap 'rm -rf "$work"' EXIT
|
|
|
|
echo "Fetching $url"
|
|
curl -fsSL -o "$work/nf.zip" "$url"
|
|
python3 -c 'import sys,zipfile; zipfile.ZipFile(sys.argv[1]).extractall(sys.argv[2])' "$work/nf.zip" "$work"
|
|
|
|
python3 -m venv "$work/venv"
|
|
"$work/venv/bin/pip" -q install fonttools
|
|
|
|
unicodes="$(IFS=,; echo "${GLYPHS[*]}")"
|
|
mkdir -p "$(dirname "$out")"
|
|
# The proportional face rather than the Mono one: these are drawn inline
|
|
# beside text, where a fixed advance would pad each icon out to a cell.
|
|
"$work/venv/bin/pyftsubset" "$work/SymbolsNerdFont-Regular.ttf" \
|
|
--unicodes="$unicodes" \
|
|
--layout-features= \
|
|
--drop-tables+=DSIG \
|
|
--output-file="$out"
|
|
|
|
echo "Wrote $out ($(stat -c %s "$out") bytes) with ${#GLYPHS[@]} glyphs"
|