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"]

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.0.tar.gz (47.2 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.0-py3-none-any.whl (52.6 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for hyprland_schema-0.7.0.tar.gz
Algorithm Hash digest
SHA256 210e9d8db1d168de6d5bce6fe391bd3ec273e70c3a3ac9fea543dc65cef6954a
MD5 452d1e6324ede2f901f29f826c555212
BLAKE2b-256 31766a342483a7465f2fa44049ef2d857241fa4c4c7e3342ac7c809b0a02465f

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyprland_schema-0.7.0.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.0-py3-none-any.whl.

File metadata

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

File hashes

Hashes for hyprland_schema-0.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 639fdc22e83b4d1d9ac012bb7437c8a6cceabe776f57066ae20dd8ed1dffabd2
MD5 c16701c84c84e100c78fa89aea2d8875
BLAKE2b-256 3b0ad9376eef13e97f49160118270ef4d2fd86c673a8d8a9d873f5f18831497e

See more details on using hashes here.

Provenance

The following attestation bundles were made for hyprland_schema-0.7.0-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.

Release history Release notifications | RSS feed

0.7.1

2 files

This release

0.7.0 This release

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

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