From 904bbaa145aa35728539495b57585c317831e6d1 Mon Sep 17 00:00:00 2001 From: Julian Hofer Date: Sat, 21 Oct 2023 12:03:09 +0200 Subject: [PATCH] Explain spawn_blocking in async context and ashpd --- book/src/img/main_event_loop_ashpd.png | Bin 0 -> 37595 bytes book/src/main_event_loop.md | 28 ++++++++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 book/src/img/main_event_loop_ashpd.png diff --git a/book/src/img/main_event_loop_ashpd.png b/book/src/img/main_event_loop_ashpd.png new file mode 100644 index 0000000000000000000000000000000000000000..30f05e5461b3577d9552123f5f0f75b84fc2096e GIT binary patch literal 37595 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/main_event_loop/6/main.rs ```rust {{#rustdoc_include ../listings/main_event_loop/6/main.rs:callback}} ``` +Asynchronous functions from the glib ecosystem can always be spawned on the glib main loop. +Typically, crates from the async-std/smol ecosystem work as well. +Let us take ashpd for example which allows sandboxed applications to interact with the desktop. +Per default it depends on `async-std`. +We can add it to our dependencies by running the following command. + ``` -cargo add ashpd@0.6 --features gtk4 +cargo add ashpd --features gtk4 ``` +You need to use a Linux desktop environment in order to run the following example locally. +We are using [`ashpd::desktop::account::UserInformation`](https://docs.rs/ashpd/latest/ashpd/desktop/account/index.html) in order to access user information. +We are getting a [`gtk::Native`](https://gtk-rs.org/gtk4-rs/stable/latest/docs/gtk4/struct.Native.html) object from our button, create a [`ashpd::WindowIdentifier`](https://docs.rs/ashpd/latest/ashpd/enum.WindowIdentifier.html) and pass it to the user information request. +That way the dialog that will pop up will be modal. +That means that it will be on top of the window and freezes the rest of the application from user input. + Filename: listings/main_event_loop/7/main.rs ```rust {{#rustdoc_include ../listings/main_event_loop/7/main.rs:callback}} ``` +After pressing the button, a dialog should open that shows the information that will be shared. +If you decide to share it, you user name will be printed on the console. + +
Dialog requesting user information.
+ + ``` cargo add tokio@1 --features rt-multi-thread cargo add reqwest@0.11 --features rustls-tls --no-default-features