scythe/src/overlay.rs.orig

58 lines
1.9 KiB
Rust

use gtk::prelude::*;
use gtk::{Application, ApplicationWindow, Label, CssProvider, StyleContext};
use gtk_layer_shell::{LayerShell, Layer};
use std::time::Duration;
pub fn show_saved_overlay() {
let app = Application::builder()
.application_id("com.vrec.overlay")
.build();
app.connect_activate(|app| {
let window = ApplicationWindow::builder()
.application(app)
.default_width(300)
.default_height(80)
.build();
gtk_layer_shell::init_for_window(&window);
gtk_layer_shell::set_layer(&window, Layer::Overlay);
gtk_layer_shell::set_namespace(&window, "vrec-overlay");
gtk_layer_shell::set_margin(&window, gtk_layer_shell::Edge::Top, 40);
gtk_layer_shell::set_anchor(&window, gtk_layer_shell::Edge::Top, true);
// Make it transparent and borderless
let css_provider = CssProvider::new();
let css = r#"
window {
background-color: rgba(30, 30, 30, 0.9);
border-radius: 12px;
color: #ffffff;
font-weight: bold;
font-size: 20px;
padding: 15px;
box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.5);
}
"#;
css_provider.load_from_data(css.as_bytes()).unwrap();
StyleContext::add_provider_for_screen(
&gdk::Screen::default().unwrap(),
&css_provider,
gtk::STYLE_PROVIDER_PRIORITY_APPLICATION,
);
let label = Label::new(Some("✅ Replay Saved!"));
window.add(&label);
window.show_all();
// Close after 2 seconds
let window_clone = window.clone();
glib::timeout_add_local(Duration::from_secs(2), move || {
window_clone.close();
glib::ControlFlow::Break
});
});
app.run_with_args(&[] as &[&str]);
}