Skip to main content

hyprland-schema

Typed Python schema for every Hyprland configuration option — with defaults, ranges, and descriptions. Generated from Hyprland's option-metadata source (ConfigDescriptions.hpp on v0.54.x and older, ConfigValues.cpp on v0.55.0 and newer, hyprwm/Hyprland#13817). Zero runtime dependencies — stdlib only.

Installation

pip install hyprland-schema

Usage

import hyprland_schema

# Schema version
print(hyprland_schema.HYPRLAND_VERSION)  # "v0.56.1"

# Lookup by key
border = hyprland_schema.OPTIONS_BY_KEY["general:border_size"]
print(border.type, border.default, border.min, border.max)
# int 1 0 20

# Filter by section
for opt in hyprland_schema.get_section("general"):
    print(f"{opt.name}: {opt.type} = {opt.default}")

# Filter by subsection
for opt in hyprland_schema.get_subsection("decoration", "blur"):
    print(f"{opt.name}: {opt.type} = {opt.default}")

# Iterate all options
for opt in hyprland_schema.OPTIONS:
    print(f"{opt.key}: {opt.type}")

# Export as JSON
json_str = hyprland_schema.get_json()

Loading older Hyprland versions

import hyprland_schema

# List all bundled versions (newest first)
print(hyprland_schema.available_versions())

# Load schema for a specific version
schema = hyprland_schema.load("v0.54.2")
print(schema.version, len(schema.options))

# Schema objects have the same filtering API
for opt in schema.get_section("general"):
    print(f"{opt.name}: {opt.type} = {opt.default}")

# Lookup on a Schema
border = schema.options_by_key["general:border_size"]

The version is accepted with or without the v prefix, so the bare number hyprctl reports can be passed straight through; schema.version reports the tag spelling either way.

Resolution order for load():

  1. Latest bundled version — instant (pre-parsed).
  2. Older bundled version — reconstructed via reverse migrations.
  3. Disk cache at ~/.cache/hyprland-schema/ — no network needed.
  4. GitHub fetch — downloads ConfigValues.cpp (or, for older tags, ConfigDescriptions.hpp) and parses it.

API

Symbol Type / Signature Description
HYPRLAND_VERSION str Hyprland tag the schema was built from
OPTIONS tuple[HyprOption, ...] All configuration options
OPTIONS_BY_KEY dict[str, HyprOption] Lookup by dotted key
get_section(s) (str) -> list[HyprOption] Options in a top-level section
get_subsection(s, sub) (str, str) -> list[HyprOption] Options in a nested subsection
get_json() (*, indent=2) -> str Full schema as a JSON string
load(version) (str) -> Schema Load schema for a specific Hyprland version
available_versions() () -> list[str] All bundled versions, newest first
MigrationError Exception Raised when a version migration fails

Schema

Schema is a frozen dataclass returned by load(). It holds options for a specific Hyprland version.

Attribute / Method Type / Signature Description
version str Hyprland version tag
options tuple[HyprOption, ...] All options for this version
options_by_key dict[str, HyprOption] Lookup by dotted key
get_section(s) (str) -> list[HyprOption] Options in a top-level section
get_subsection(s, sub) (str, str) -> list[HyprOption] Options in a nested subsection
get_json() (*, indent=2) -> str Schema as a JSON string

HyprOption fields

Field Type Description
key str "general:border_size"
section tuple[str, ...] ("general",)
name str "border_size"
description str Human-readable text
type str bool, int, float, string, color, gradient, vec2, choice, cssgap, font_weight
default Any Default value
min int | float | None For int/float types
max int | float | None For int/float types
enum_values tuple[str, ...] | None For choice type
default_str str | None Human-readable default for choice type
default_min tuple[float, ...] | None For vec2 type
default_max tuple[float, ...] | None For vec2 type

Requirements

  • Python >= 3.12

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hyprland_schema-0.7.1.tar.gz (47.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hyprland_schema-0.7.1-py3-none-any.whl (53.3 kB view details)

Uploaded Python 3

File details

Details for the file hyprland_schema-0.7.1.tar.gz.

File metadata

  • Download URL: hyprland_schema-0.7.1.tar.gz
  • Upload date:
  • Size: 47.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hyprland_schema-0.7.1.tar.gz
Algorithm Hash digest
SHA256 e73d4a19aece1df602c52b2985df35f6c8bc584b0fa7058ea56e1aab9fc01233
MD5 d9a396a160f6b5a4c66ff471b72d142b
BLAKE2b-256 af4811d41c3740072c309fd1eb61dfbfe4f9897a2b1124c1f10cb17a18dc8172

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyprland_schema-0.7.1.tar.gz:

Publisher: publish.yml on BlueManCZ/hyprland-schema

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hyprland_schema-0.7.1-py3-none-any.whl.

File metadata

  • Download URL: hyprland_schema-0.7.1-py3-none-any.whl
  • Upload date:
  • Size: 53.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for hyprland_schema-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 97637f24ac593232e388f99b079c4166cc8e321775e9097470f3b467cda551dc
MD5 c737d7313c5a613e97ef44697c003dc3
BLAKE2b-256 0f2466d5aad64573e38a5ec31820f3a920ff6a79364a329dba7f3e708bced536

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyprland_schema-0.7.1-py3-none-any.whl:

Publisher: publish.yml on BlueManCZ/hyprland-schema

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page