Skip to content

A parser for hyprland written in rust πŸš€πŸ¦€

License

Notifications You must be signed in to change notification settings

hyprutils/hyprparser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

32 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HyprParser

A parser for Hyprland's configuration files written in Rust πŸš€πŸ¦€


Crates.io Version
Grind Compliant
An unofficial GUI for configuring Hyprland, built with GTK4 and Rust. πŸš€πŸ¦€

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