https://github.com/townk/skim
Svalboard Keymap Image Maker is a command-line tool that generates beautiful, publication-ready images of your keyboard layouts. It takes keymap configuration files from popular keyboard firmware tools and produces SVG or PNG images that you can use for documentation, reference cards, or sharing your layouts with the community.
https://github.com/townk/skim
image keyboard keymap layout png svalboard svg typst
Last synced: 4 days ago
JSON representation
Svalboard Keymap Image Maker is a command-line tool that generates beautiful, publication-ready images of your keyboard layouts. It takes keymap configuration files from popular keyboard firmware tools and produces SVG or PNG images that you can use for documentation, reference cards, or sharing your layouts with the community.
- Host: GitHub
- URL: https://github.com/townk/skim
- Owner: Townk
- License: mit
- Created: 2026-01-14T22:48:20.000Z (3 months ago)
- Default Branch: mainline
- Last Pushed: 2026-04-23T03:12:59.000Z (4 days ago)
- Last Synced: 2026-04-23T04:24:20.892Z (4 days ago)
- Topics: image, keyboard, keymap, layout, png, svalboard, svg, typst
- Language: Python
- Homepage: https://townk.github.io/skim/
- Size: 4.35 MB
- Stars: 3
- Watchers: 0
- Forks: 1
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# qmk-skim (Svalboard Keymap Image Maker)
[](https://github.com/Townk/skim)
[](https://www.python.org/downloads/)
[](https://github.com/Townk/skim/actions/workflows/release.yml)
[](https://badge.fury.io/py/qmk-skim)
A Python CLI tool for generating high-quality keymap layout images for the
[Svalboard](https://svalboard.com) keyboard.
## Features
- Generate individual layer keymap images
- Generate overview images showing all layers
- Support for multiple keymap formats:
- Keybard (`.kbi`)
- Vial (`.vil`)
- QMK c2json (`.json`)
- Configurable colors and appearance
- High-quality output in multiple formats:
- Vector: SVG
- Raster: PNG, JPEG, WEBP, AVIF
## Installation
You can install `qmk-skim` using `pip`, `pipx`, or `uv`.
### Using uv (Recommended)
```bash
uv tool install qmk-skim
```
### Using pipx
```bash
pipx install qmk-skim
```
### Using pip
```bash
pip install qmk-skim
```
## Usage
The package installs the `skim` command-line tool.
### Generate keymap images
```bash
# Generate from a keymap file
skim generate --keymap my-keymap.kbi --output-dir ./images
# Generate with custom configuration
skim generate --keymap my-keymap.kbi --config skim-config.yaml --output-dir ./images
# Generate specific layers only
skim generate --keymap my-keymap.kbi --layer 1 --layer 3-5 --layer overview
```
### Configuration helper
```bash
# Create a configuration file from QMK color.h
skim configure --qmk-color-header /path/to/qmk/quantum/color.h --output skim-config.yaml
```
## Development
This project uses `uv` for dependency management and `just` as a command runner.
### Setup
```bash
# Clone the repository
git clone https://github.com/Townk/skim.git
cd skim
# Install dependencies
just sync
```
### Testing
```bash
# Run all tests (unit + integration)
just tests
# Run only unit tests
just unit-tests
# Run only integration tests
just integration-tests
```
### Code Quality
Run the full suite of checks (linting, formatting, type checking) before
submitting a PR:
```bash
just check
```
Individual checks:
```bash
just lint # Run ruff linter
just format # Format code with ruff
just typecheck # Run basedpyright
```
### Building Documentation
```bash
just build-docs
```
## License
MIT License
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.