Skip to main content

hello_world/
hello-world.rs

1use libadwaita as adw;
2
3use adw::prelude::*;
4use adw::{ActionRow, Application, ApplicationWindow, HeaderBar};
5use gtk::{Box, ListBox, Orientation};
6
7fn main() {
8    let application = Application::builder()
9        .application_id("com.example.FirstAdwaitaApp")
10        .build();
11
12    application.connect_activate(|app| {
13        // ActionRows are only available in Adwaita
14        let row = ActionRow::builder()
15            .activatable(true)
16            .selectable(false)
17            .title("Click me")
18            .build();
19        row.connect_activated(|_| {
20            eprintln!("Clicked!");
21        });
22
23        let list = ListBox::builder()
24            .margin_top(32)
25            .margin_end(32)
26            .margin_bottom(32)
27            .margin_start(32)
28            .build();
29        list.add_css_class("boxed-list");
30        list.append(&row);
31
32        // Combine the content in a box
33        let content = Box::new(Orientation::Vertical, 0);
34        // Adwaitas' ApplicationWindow does not include a HeaderBar
35        content.append(
36            &HeaderBar::builder()
37                .title_widget(&adw::WindowTitle::new("First App", ""))
38                .build(),
39        );
40        content.append(&list);
41
42        let window = ApplicationWindow::builder()
43            .application(app)
44            .default_width(350)
45            // add content to window
46            .content(&content)
47            .build();
48        window.present();
49    });
50
51    application.run();
52}