hyprparser

Crates.iohyprparser
lib.rshyprparser
version0.1.5
sourcesrc
created_at2024-10-29 16:56:05.616514
updated_at2024-11-04 03:37:55.131454
descriptionA parser for Hyprland's configuration file.
homepage
repositoryhttps://github.com/nnyyxxxx/hyprparser.git
max_upload_size
id1427307
size99,186
nyx (nnyyxxxx)

documentation

README

HyprParser

A parser for Hyprland's configuration files written in Rust 🚀🦀


Crates.io Version

Hyprland Configuration Documentation

Usage

HyprParser is available on Crates.io. It can be added as a dependency with:

$ cargo add hyprparser

Here's an example usage:

# Cargo.toml

[dependencies]
hyprparser = "0.1.2"
// main.rs

use hyprparser::parse_config;
use std::{env, fs, path::Path};

fn main() {
    let config_path = Path::new(&env::var("XDG_CONFIG_HOME").unwrap_or_else(|_| {
        let home = env::var("HOME").unwrap_or_else(|_| ".".to_string());
        format!("{}/.config", home)
    }))
    .join("hypr/hyprland.conf");

    let config_str = fs::read_to_string(&config_path).unwrap();

    let mut parsed_config = parse_config(&config_str);

    parsed_config.add_entry("decoration", "rounding = 10");
    parsed_config.add_entry("decoration.blur", "enabled = true");
    parsed_config.add_entry("decoration.blur", "size = 10");
    parsed_config.add_entry_headless("$terminal", "kitty");

    let updated_config_str = parsed_config.to_string();

    fs::write(&config_path, updated_config_str).unwrap();

    println!("Updated hyprland.conf with new configuration.");
}

TODO

  • Color formatting tests

Credits

Copyright (C) 2024 HyprUtils
Commit count: 28

cargo fmt