Files
owlry/src/theme.rs
vikingowl 7cdb97d743 feat: add 7 new providers (system, ssh, clipboard, files, bookmarks, emoji, scripts)
New providers:
- System: shutdown, reboot, suspend, hibernate, lock, logout, reboot into BIOS
- SSH: parse ~/.ssh/config for quick host connections
- Clipboard: integrate with cliphist for clipboard history
- Files: search files using fd or locate (/ or find prefix)
- Bookmarks: read Chrome/Chromium/Brave/Edge browser bookmarks
- Emoji: searchable emoji picker with wl-copy integration
- Scripts: run user scripts from ~/.config/owlry/scripts/

Filter prefixes: :sys, :ssh, :clip, :file, :bm, :emoji, :script

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 18:55:27 +01:00

78 lines
3.3 KiB
Rust

use crate::config::AppearanceConfig;
/// Generate CSS with :root variables from config settings
pub fn generate_variables_css(config: &AppearanceConfig) -> String {
let mut css = String::from(":root {\n");
// Always inject layout config values
css.push_str(&format!(" --owlry-font-size: {}px;\n", config.font_size));
css.push_str(&format!(" --owlry-border-radius: {}px;\n", config.border_radius));
// Only inject colors if user specified them
if let Some(ref bg) = config.colors.background {
css.push_str(&format!(" --owlry-bg: {};\n", bg));
}
if let Some(ref bg_secondary) = config.colors.background_secondary {
css.push_str(&format!(" --owlry-bg-secondary: {};\n", bg_secondary));
}
if let Some(ref border) = config.colors.border {
css.push_str(&format!(" --owlry-border: {};\n", border));
}
if let Some(ref text) = config.colors.text {
css.push_str(&format!(" --owlry-text: {};\n", text));
}
if let Some(ref text_secondary) = config.colors.text_secondary {
css.push_str(&format!(" --owlry-text-secondary: {};\n", text_secondary));
}
if let Some(ref accent) = config.colors.accent {
css.push_str(&format!(" --owlry-accent: {};\n", accent));
}
if let Some(ref accent_bright) = config.colors.accent_bright {
css.push_str(&format!(" --owlry-accent-bright: {};\n", accent_bright));
}
// Provider badge colors
if let Some(ref badge_app) = config.colors.badge_app {
css.push_str(&format!(" --owlry-badge-app: {};\n", badge_app));
}
if let Some(ref badge_bookmark) = config.colors.badge_bookmark {
css.push_str(&format!(" --owlry-badge-bookmark: {};\n", badge_bookmark));
}
if let Some(ref badge_calc) = config.colors.badge_calc {
css.push_str(&format!(" --owlry-badge-calc: {};\n", badge_calc));
}
if let Some(ref badge_clip) = config.colors.badge_clip {
css.push_str(&format!(" --owlry-badge-clip: {};\n", badge_clip));
}
if let Some(ref badge_cmd) = config.colors.badge_cmd {
css.push_str(&format!(" --owlry-badge-cmd: {};\n", badge_cmd));
}
if let Some(ref badge_dmenu) = config.colors.badge_dmenu {
css.push_str(&format!(" --owlry-badge-dmenu: {};\n", badge_dmenu));
}
if let Some(ref badge_emoji) = config.colors.badge_emoji {
css.push_str(&format!(" --owlry-badge-emoji: {};\n", badge_emoji));
}
if let Some(ref badge_file) = config.colors.badge_file {
css.push_str(&format!(" --owlry-badge-file: {};\n", badge_file));
}
if let Some(ref badge_script) = config.colors.badge_script {
css.push_str(&format!(" --owlry-badge-script: {};\n", badge_script));
}
if let Some(ref badge_ssh) = config.colors.badge_ssh {
css.push_str(&format!(" --owlry-badge-ssh: {};\n", badge_ssh));
}
if let Some(ref badge_sys) = config.colors.badge_sys {
css.push_str(&format!(" --owlry-badge-sys: {};\n", badge_sys));
}
if let Some(ref badge_uuctl) = config.colors.badge_uuctl {
css.push_str(&format!(" --owlry-badge-uuctl: {};\n", badge_uuctl));
}
if let Some(ref badge_web) = config.colors.badge_web {
css.push_str(&format!(" --owlry-badge-web: {};\n", badge_web));
}
css.push_str("}\n");
css
}