hyprlang 0.5.0

A scripting language interpreter and parser for Hyprlang and Hyprland configuration files.
Documentation
# Example Hyprlang Configuration
# This demonstrates the features of the Hyprlang parser

# Variables
$SCALE = 2
$WIDTH = 1920
$HEIGHT = 1080
$terminal = kitty
$fileManager = dolphin
$menu = wofi --show drun

# Root level values
monitor = preferred
refresh_rate = 144

# General settings
general {
    gaps_in = 5
    gaps_out = 20
    border_size = 2

    # Colors
    col.active_border = rgba(33ccffee)
    col.inactive_border = rgba(595959aa)

    # Boolean settings
    resize_on_border = false
    allow_tearing = false

    # String values
    layout = dwindle
}

# Decoration settings
decoration {
    rounding = 10
    rounding_power = 2

    # Opacity values
    active_opacity = 1.0
    inactive_opacity = 0.95

    shadow {
        enabled = true
        range = 4
        render_power = 3
        color = rgba(1a1a1aee)
    }

    blur {
        enabled = true
        size = 3
        passes = 1
        vibrancy = 0.1696
    }
}

# Animations
animations {
    enabled = true

    # Using expressions
    speed_multiplier = {{SCALE}}
    default_speed = {{10 * SCALE}}
}

# Input configuration
input {
    kb_layout = us
    kb_variant =
    kb_model =
    kb_options =
    kb_rules =

    follow_mouse = 1
    sensitivity = 0

    touchpad {
        natural_scroll = false
        tap_to_click = true
        drag_lock = false
    }
}

# Miscellaneous settings
misc {
    force_default_wallpaper = -1
    disable_hyprland_logo = false
    vfr = true
}

# Window dimensions using variables and expressions
window {
    width = $WIDTH
    height = $HEIGHT
    calculated_area = {{WIDTH * HEIGHT}}
    half_width = {{WIDTH / 2}}
}

# Example with Vec2
cursor {
    position = (100, 200)
    size = (24, 24)
}

# Hex numbers
colors {
    test_hex = 0xFFAABBCC
    test_decimal = 255
    test_negative = -42
}