{"id":37733301,"url":"https://github.com/townk/skim","last_synced_at":"2026-05-09T05:11:10.779Z","repository":{"id":332673027,"uuid":"1134574878","full_name":"Townk/skim","owner":"Townk","description":"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.","archived":false,"fork":false,"pushed_at":"2026-04-23T03:12:59.000Z","size":4563,"stargazers_count":3,"open_issues_count":3,"forks_count":1,"subscribers_count":0,"default_branch":"mainline","last_synced_at":"2026-04-23T04:24:20.892Z","etag":null,"topics":["image","keyboard","keymap","layout","png","svalboard","svg","typst"],"latest_commit_sha":null,"homepage":"https://townk.github.io/skim/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Townk.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-14T22:48:20.000Z","updated_at":"2026-04-23T03:12:52.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Townk/skim","commit_stats":null,"previous_names":["townk/skim"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/Townk/skim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Townk%2Fskim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Townk%2Fskim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Townk%2Fskim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Townk%2Fskim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Townk","download_url":"https://codeload.github.com/Townk/skim/tar.gz/refs/heads/mainline","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Townk%2Fskim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32166660,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T02:19:40.750Z","status":"ssl_error","status_checked_at":"2026-04-23T02:17:55.737Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["image","keyboard","keymap","layout","png","svalboard","svg","typst"],"created_at":"2026-01-16T13:54:20.422Z","updated_at":"2026-05-09T05:11:10.772Z","avatar_url":"https://github.com/Townk.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qmk-skim (Svalboard Keymap Image Maker)\n\n[![Coverage](https://img.shields.io/badge/coverage-81%25-yellowgreen.svg)](https://github.com/Townk/skim)\n[![Python Version](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![Build Status](https://github.com/Townk/skim/actions/workflows/release.yml/badge.svg)](https://github.com/Townk/skim/actions/workflows/release.yml)\n[![PyPI version](https://badge.fury.io/py/qmk-skim.svg)](https://badge.fury.io/py/qmk-skim)\n\nA Python CLI tool for generating high-quality keymap layout images for the\n[Svalboard](https://svalboard.com) keyboard.\n\n![Overview Keymap](docs/_static/svalboard-overview.svg)\n\n## Features\n\n- Generate individual layer keymap images with layer indicator circles\n- Generate overview images showing all layers with connector lines\n- Supports Tap-dance and Macro keys\n- Interactive TUI configurator for editing configuration files\n- System dependency checker (`skim doctor`)\n- Support for multiple keymap formats:\n  - Keybard (`.kbi`)\n  - Vial (`.vil`)\n  - QMK c2json (`.json`)\n- Configurable colors, layer names, and appearance\n- High-quality output in multiple formats:\n  - Vector: SVG\n  - Raster: PNG, JPEG, WEBP, AVIF\n- Stdin support for piping keymap data in scripts\n\n## Installation\n\nYou can install `qmk-skim` using `pip`, `pipx`, or `uv`.\n\n### Using uv (Recommended)\n\n```bash\nuv tool install 'qmk-skim[playwright,cairo,tui]'\n```\n\nYou can upgrade to a new version using:\n\n```bash\nuv tool upgrade qmk-skim\n```\n\n### Using pipx\n\n```bash\npipx install 'qmk-skim[playwright,cairo,tui]'\n```\n\n### Using pip\n\n```bash\npip install 'qmk-skim[playwright,cairo,tui]'\n```\n\n## Usage\n\nThe package installs the `skim` command-line tool, but if you prefer to use the\ntool without installing it, you can use `uvx`:\n\n```bash\nuvx --python 3.10 --from 'qmk-skim[cairo,playwright]' skim doctor\n```\n\n### Check your environment\n\n```bash\n# Verify system dependencies (render engines, etc.)\nskim doctor\n```\n\n### Generate keymap images\n\n```bash\n# Generate all layers + overview from a keymap file\nskim generate --keymap my-keymap.kbi --output-dir ./images\n\n# Generate with custom configuration\nskim generate --keymap my-keymap.kbi --config skim-config.yaml --output-dir ./images\n\n# Generate specific layers only\nskim generate --keymap my-keymap.kbi --layer 1 --layer 3-5 --layer overview\n\n# Generate PNG output (requires Chromium or Cairo)\nskim generate --keymap my-keymap.kbi --format png --output-dir ./images\n\n# Read keymap from stdin\ncat my-keymap.json | skim generate - --output-dir ./images\n```\n\n### Configure appearance\n\nThe easiest way to tweak your keymap image is to use our interactive\nconfigurator where almost every configurable option is available for you to\nlearn and change.\n\n![skim configurator](docs/_static/tui/keyboard-tab.svg)\n\n```bash\n# Launch the interactive TUI configurator\nskim configure --interactive\n\n# Edit an existing configuration file in the TUI\nskim configure --interactive --config skim-config.yaml\n\n# Generate a config from a Keybard keymap (extracts layer colors, names, custom keycodes)\nskim configure --keymap my-keymap.kbi --output skim-config.yaml\n\n# Import QMK named colors from color.h\nskim configure --keymap my-keymap.kbi --qmk-color-header /path/to/color.h --output skim-config.yaml\n```\n\n## Development\n\nThis project uses `uv` for dependency management and `just` as a command runner.\n\n### Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/Townk/skim.git\ncd skim\n\n# Install dependencies (dev + docs + extras)\njust sync\n```\n\n### Testing\n\n```bash\n# Run all tests (unit + integration) with coverage\njust tests\n\n# Run only unit tests\njust unit-tests\n\n# Run only integration tests\njust integration-tests\n```\n\n### Code Quality\n\n```bash\n# Run all checks (lint, format, type check)\njust check\n\n# Quick feedback loop (format + lint + typecheck)\njust quick-check\n\n# Full CI pipeline (all checks + all tests)\njust ci\n```\n\nIndividual checks:\n\n```bash\njust lint          # Run ruff linter\njust format        # Format code with ruff\njust format-check  # Check formatting without modifying\njust fix           # Auto-fix lint issues\njust typecheck     # Run basedpyright\n```\n\n### Building\n\n```bash\njust build       # Build the package\njust build-docs  # Build Sphinx documentation\njust serve-docs  # Build and open documentation in browser\njust clean       # Remove build artifacts and caches\n```\n\n## License\n\nMIT License\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftownk%2Fskim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftownk%2Fskim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftownk%2Fskim/lists"}