58 lines
1.9 KiB
Rust
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]);
|
|
}
|