From e729b5e1c9cd45fa0e7ca4f1c77d1ef48ef5fab9 Mon Sep 17 00:00:00 2001 From: Vladislav Nepogodin Date: Sun, 27 Nov 2022 19:19:05 +0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=B7=20run=20some=20functions=20in=20ne?= =?UTF-8?q?w=20thread?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 36 ++++++++++----------- Cargo.toml | 2 +- src/pages.rs | 90 +++++++++++++++++++++++++++++++++------------------- 3 files changed, 76 insertions(+), 52 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c678ac8..38262cb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "aho-corasick" -version = "0.7.19" +version = "0.7.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" dependencies = [ "memchr", ] @@ -102,9 +102,9 @@ checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" [[package]] name = "bytes" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" [[package]] name = "cachyos-hello" @@ -153,9 +153,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.76" +version = "1.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f" +checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4" [[package]] name = "cfg-expr" @@ -671,9 +671,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", "hashbrown", @@ -850,9 +850,9 @@ checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" [[package]] name = "openssl" -version = "0.10.42" +version = "0.10.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" +checksum = "020433887e44c27ff16365eaa2d380547a94544ad509aff6eb5b6e3e0b27b376" dependencies = [ "bitflags", "cfg-if", @@ -882,9 +882,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.77" +version = "0.9.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" +checksum = "07d5c8cb6e57b3a3612064d7b18b117912b4ce70955c2504d4b741c9e244b132" dependencies = [ "autocfg", "cc", @@ -936,9 +936,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a528564cc62c19a7acac4d81e01f39e53e25e17b934878f4c6d25cc2836e62f8" +checksum = "5f400b0f7905bf702f9f3dc3df5a121b16c54e9e8012c082905fdf09a931861a" dependencies = [ "thiserror", "ucd-trie", @@ -1175,9 +1175,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.88" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8b3801309262e8184d9687fb697586833e939767aea0dda89f5a8e650e8bd7" +checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" dependencies = [ "itoa", "ryu", @@ -1312,9 +1312,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.21.2" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" +checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3" dependencies = [ "autocfg", "bytes", diff --git a/Cargo.toml b/Cargo.toml index 1e5216b..299cace 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -19,7 +19,7 @@ gdk = "0.16.0" gdk-pixbuf = "0.16.3" glib = "0.16.3" serde = { version = "1.0.147", features = ["derive"] } -serde_json = "1.0.88" +serde_json = "1.0.89" reqwest = { version = "0.11.13", features = ["blocking"] } [profile.release] diff --git a/src/pages.rs b/src/pages.rs index 2dff01b..77c2055 100644 --- a/src/pages.rs +++ b/src/pages.rs @@ -36,33 +36,45 @@ fn create_fixes_section() -> gtk::Box { let rankmirrors_btn = gtk::Button::with_label("Rank mirrors"); removelock_btn.connect_clicked(move |_| { - if Path::new("/var/lib/pacman/db.lck").exists() { - let _ = Exec::cmd("/sbin/pkexec") - .arg("bash") - .arg("-c") - .arg("rm /var/lib/pacman/db.lck") - .join() - .unwrap(); - if !Path::new("/var/lib/pacman/db.lck").exists() { - let dialog = gtk::MessageDialog::builder() - .message_type(gtk::MessageType::Info) - .text("Pacman db lock was removed!") - .build(); - dialog.show(); + // Spawn child process in separate thread. + std::thread::spawn(move || { + if Path::new("/var/lib/pacman/db.lck").exists() { + let _ = Exec::cmd("/sbin/pkexec") + .arg("bash") + .arg("-c") + .arg("rm /var/lib/pacman/db.lck") + .join() + .unwrap(); + if !Path::new("/var/lib/pacman/db.lck").exists() { + let dialog = gtk::MessageDialog::builder() + .message_type(gtk::MessageType::Info) + .text("Pacman db lock was removed!") + .build(); + dialog.show(); + } } - } + }); }); reinstall_btn.connect_clicked(move |_| { - let _ = utils::run_cmd_terminal(String::from("pacman -S $(pacman -Qnq)"), true); + // Spawn child process in separate thread. + std::thread::spawn(move || { + let _ = utils::run_cmd_terminal(String::from("pacman -S $(pacman -Qnq)"), true); + }); }); refreshkeyring_btn.connect_clicked(on_refreshkeyring_btn_clicked); update_system_btn.connect_clicked(on_update_system_btn_clicked); remove_orphans_btn.connect_clicked(move |_| { - let _ = utils::run_cmd_terminal(String::from("pacman -Rns $(pacman -Qtdq)"), true); + // Spawn child process in separate thread. + std::thread::spawn(move || { + let _ = utils::run_cmd_terminal(String::from("pacman -Rns $(pacman -Qtdq)"), true); + }); }); clear_pkgcache_btn.connect_clicked(on_clear_pkgcache_btn_clicked); rankmirrors_btn.connect_clicked(move |_| { - let _ = utils::run_cmd_terminal(String::from("cachyos-rate-mirrors"), true); + // Spawn child process in separate thread. + std::thread::spawn(move || { + let _ = utils::run_cmd_terminal(String::from("cachyos-rate-mirrors"), true); + }); }); topbox.pack_start(&label, true, false, 1); @@ -150,16 +162,19 @@ fn create_options_section() -> gtk::Box { apparmor_btn.connect_clicked(on_servbtn_clicked); ananicy_cpp_btn.connect_clicked(on_servbtn_clicked); dnscrypt_btn.connect_clicked(move |_| { - let pkg_name = "cachyos-dnscrypt-proxy"; - let service_unit_name = "dnscrypt-proxy.service"; - if !check_is_pkg_installed(pkg_name) { - let _ = utils::run_cmd_terminal(format!("pacman -S {}", pkg_name), true); - load_enabled_units(); - return; - } - if !is_local_service_enabled(service_unit_name) { - load_enabled_units(); - } + // Spawn child process in separate thread. + std::thread::spawn(move || { + let pkg_name = "cachyos-dnscrypt-proxy"; + let service_unit_name = "dnscrypt-proxy.service"; + if !check_is_pkg_installed(pkg_name) { + let _ = utils::run_cmd_terminal(format!("pacman -S {}", pkg_name), true); + load_enabled_units(); + return; + } + if !is_local_service_enabled(service_unit_name) { + load_enabled_units(); + } + }); }); topbox.pack_start(&label, true, false, 1); @@ -403,10 +418,13 @@ fn on_refreshkeyring_btn_clicked(_: >k::Button) { }) .collect::(); - let _ = utils::run_cmd_terminal( - format!("pacman-key --init && pacman-key --populate {}", needles), - true, - ); + // Spawn child process in separate thread. + std::thread::spawn(move || { + let _ = utils::run_cmd_terminal( + format!("pacman-key --init && pacman-key --populate {}", needles), + true, + ); + }); } fn on_update_system_btn_clicked(_: >k::Button) { @@ -416,7 +434,10 @@ fn on_update_system_btn_clicked(_: >k::Button) { PacmanWrapper::Paru => ("paru --removemake -Syu", false), _ => ("pacman -Syu", true), }; - let _ = utils::run_cmd_terminal(String::from(cmd), escalate); + // Spawn child process in separate thread. + std::thread::spawn(move || { + let _ = utils::run_cmd_terminal(String::from(cmd), escalate); + }); } fn on_clear_pkgcache_btn_clicked(_: >k::Button) { @@ -426,7 +447,10 @@ fn on_clear_pkgcache_btn_clicked(_: >k::Button) { PacmanWrapper::Paru => ("paru -Sc", false), _ => ("pacman -Sc", true), }; - let _ = utils::run_cmd_terminal(String::from(cmd), escalate); + // Spawn child process in separate thread. + std::thread::spawn(move || { + let _ = utils::run_cmd_terminal(String::from(cmd), escalate); + }); } fn on_appbtn_clicked(button: >k::Button) {