Commit e664f4baf13e

Vincent Demeester <vincent@sbr.pm>
2026-02-19 10:48:11
feat(keyboards): generate PNGs for keymap rendering
Added PNG generation via rsvg-convert alongside SVGs so keymap images render on gitmal which supports PNG but not SVG embedding.
1 parent 3fc3cfc
keyboards/eyelash_corne/README.md
@@ -21,7 +21,7 @@ Supports auto-mount (`/run/media/$USER/NICENANO`) and manual mount (`/mnt`).
 
 ## Keymap Visualization
 
-See [eyelash_corne.svg](../eyelash_corne.svg) for the full keymap visualization.
+![Eyelash Corne Keymap](../eyelash_corne.png)
 
 ## Layers
 
keyboards/moonlander/README.md
@@ -20,7 +20,7 @@ Custom QMK firmware for the ZSA Moonlander split keyboard (72 keys, STM32 MCU, R
 
 ## Keymap Visualization
 
-See [moonlander.svg](../moonlander.svg) for the full keymap visualization.
+![Moonlander Keymap](../moonlander.png)
 
 **Note**: Combo definitions are automatically parsed from `keymap.c` during visualization generation via `parse-combos.sh`.
 
keyboards/eyelash_corne.png
Binary file
keyboards/generate-keymaps.sh
@@ -1,5 +1,5 @@
 #! /usr/bin/env nix-shell
-#! nix-shell -i bash -p qmk -p keymap-drawer
+#! nix-shell -i bash -p qmk -p keymap-drawer -p librsvg
 # shellcheck shell=bash
 
 # Generate keymap SVGs for keyboards using keymap-drawer
@@ -75,6 +75,14 @@ resolve_config() {
 	echo "$resolved_config"
 }
 
+# Convert SVG to PNG
+svg_to_png() {
+	local svg="$1"
+	local png="${svg%.svg}.png"
+	rsvg-convert -o "$png" "$svg"
+	log_success "Generated: $png"
+}
+
 # Setup deps and config
 ensure_zmk_helpers
 RESOLVED_CONFIG=$(resolve_config)
@@ -96,6 +104,7 @@ generate_eyelash_corne() {
 		keymap -c "$RESOLVED_CONFIG" draw - >"$output_svg"
 
 	log_success "Generated: $output_svg"
+	svg_to_png "$output_svg"
 }
 
 generate_moonlander() {
@@ -185,6 +194,7 @@ EOF
 	log_info "Drawing SVG with combos..."
 	if keymap -c "$RESOLVED_CONFIG" draw "$keymap_yaml" >"$output_svg" 2>&1; then
 		log_success "Generated: $output_svg"
+		svg_to_png "$output_svg"
 		# Clean up temp files
 		rm -f "$qmk_json" "$keymap_yaml"
 	else
keyboards/moonlander.png
Binary file