👷 run some functions in new thread

This commit is contained in:
Vladislav Nepogodin 2022-11-27 19:19:05 +04:00
parent 39e7df3f4c
commit e729b5e1c9
No known key found for this signature in database
GPG Key ID: B62C3D10C54D5DA9
3 changed files with 76 additions and 52 deletions

36
Cargo.lock generated
View File

@ -4,9 +4,9 @@ version = 3
[[package]] [[package]]
name = "aho-corasick" name = "aho-corasick"
version = "0.7.19" version = "0.7.20"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
dependencies = [ dependencies = [
"memchr", "memchr",
] ]
@ -102,9 +102,9 @@ checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
[[package]] [[package]]
name = "bytes" name = "bytes"
version = "1.2.1" version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c"
[[package]] [[package]]
name = "cachyos-hello" name = "cachyos-hello"
@ -153,9 +153,9 @@ dependencies = [
[[package]] [[package]]
name = "cc" name = "cc"
version = "1.0.76" version = "1.0.77"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f" checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
[[package]] [[package]]
name = "cfg-expr" name = "cfg-expr"
@ -671,9 +671,9 @@ dependencies = [
[[package]] [[package]]
name = "indexmap" name = "indexmap"
version = "1.9.1" version = "1.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"hashbrown", "hashbrown",
@ -850,9 +850,9 @@ checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
[[package]] [[package]]
name = "openssl" name = "openssl"
version = "0.10.42" version = "0.10.43"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" checksum = "020433887e44c27ff16365eaa2d380547a94544ad509aff6eb5b6e3e0b27b376"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"cfg-if", "cfg-if",
@ -882,9 +882,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]] [[package]]
name = "openssl-sys" name = "openssl-sys"
version = "0.9.77" version = "0.9.78"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" checksum = "07d5c8cb6e57b3a3612064d7b18b117912b4ce70955c2504d4b741c9e244b132"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"cc", "cc",
@ -936,9 +936,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
[[package]] [[package]]
name = "pest" name = "pest"
version = "2.4.1" version = "2.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a528564cc62c19a7acac4d81e01f39e53e25e17b934878f4c6d25cc2836e62f8" checksum = "5f400b0f7905bf702f9f3dc3df5a121b16c54e9e8012c082905fdf09a931861a"
dependencies = [ dependencies = [
"thiserror", "thiserror",
"ucd-trie", "ucd-trie",
@ -1175,9 +1175,9 @@ dependencies = [
[[package]] [[package]]
name = "serde_json" name = "serde_json"
version = "1.0.88" version = "1.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e8b3801309262e8184d9687fb697586833e939767aea0dda89f5a8e650e8bd7" checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db"
dependencies = [ dependencies = [
"itoa", "itoa",
"ryu", "ryu",
@ -1312,9 +1312,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c"
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "1.21.2" version = "1.22.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3"
dependencies = [ dependencies = [
"autocfg", "autocfg",
"bytes", "bytes",

View File

@ -19,7 +19,7 @@ gdk = "0.16.0"
gdk-pixbuf = "0.16.3" gdk-pixbuf = "0.16.3"
glib = "0.16.3" glib = "0.16.3"
serde = { version = "1.0.147", features = ["derive"] } serde = { version = "1.0.147", features = ["derive"] }
serde_json = "1.0.88" serde_json = "1.0.89"
reqwest = { version = "0.11.13", features = ["blocking"] } reqwest = { version = "0.11.13", features = ["blocking"] }
[profile.release] [profile.release]

View File

@ -36,33 +36,45 @@ fn create_fixes_section() -> gtk::Box {
let rankmirrors_btn = gtk::Button::with_label("Rank mirrors"); let rankmirrors_btn = gtk::Button::with_label("Rank mirrors");
removelock_btn.connect_clicked(move |_| { removelock_btn.connect_clicked(move |_| {
if Path::new("/var/lib/pacman/db.lck").exists() { // Spawn child process in separate thread.
let _ = Exec::cmd("/sbin/pkexec") std::thread::spawn(move || {
.arg("bash") if Path::new("/var/lib/pacman/db.lck").exists() {
.arg("-c") let _ = Exec::cmd("/sbin/pkexec")
.arg("rm /var/lib/pacman/db.lck") .arg("bash")
.join() .arg("-c")
.unwrap(); .arg("rm /var/lib/pacman/db.lck")
if !Path::new("/var/lib/pacman/db.lck").exists() { .join()
let dialog = gtk::MessageDialog::builder() .unwrap();
.message_type(gtk::MessageType::Info) if !Path::new("/var/lib/pacman/db.lck").exists() {
.text("Pacman db lock was removed!") let dialog = gtk::MessageDialog::builder()
.build(); .message_type(gtk::MessageType::Info)
dialog.show(); .text("Pacman db lock was removed!")
.build();
dialog.show();
}
} }
} });
}); });
reinstall_btn.connect_clicked(move |_| { 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); refreshkeyring_btn.connect_clicked(on_refreshkeyring_btn_clicked);
update_system_btn.connect_clicked(on_update_system_btn_clicked); update_system_btn.connect_clicked(on_update_system_btn_clicked);
remove_orphans_btn.connect_clicked(move |_| { 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); clear_pkgcache_btn.connect_clicked(on_clear_pkgcache_btn_clicked);
rankmirrors_btn.connect_clicked(move |_| { 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); topbox.pack_start(&label, true, false, 1);
@ -150,16 +162,19 @@ fn create_options_section() -> gtk::Box {
apparmor_btn.connect_clicked(on_servbtn_clicked); apparmor_btn.connect_clicked(on_servbtn_clicked);
ananicy_cpp_btn.connect_clicked(on_servbtn_clicked); ananicy_cpp_btn.connect_clicked(on_servbtn_clicked);
dnscrypt_btn.connect_clicked(move |_| { dnscrypt_btn.connect_clicked(move |_| {
let pkg_name = "cachyos-dnscrypt-proxy"; // Spawn child process in separate thread.
let service_unit_name = "dnscrypt-proxy.service"; std::thread::spawn(move || {
if !check_is_pkg_installed(pkg_name) { let pkg_name = "cachyos-dnscrypt-proxy";
let _ = utils::run_cmd_terminal(format!("pacman -S {}", pkg_name), true); let service_unit_name = "dnscrypt-proxy.service";
load_enabled_units(); if !check_is_pkg_installed(pkg_name) {
return; let _ = utils::run_cmd_terminal(format!("pacman -S {}", pkg_name), true);
} load_enabled_units();
if !is_local_service_enabled(service_unit_name) { return;
load_enabled_units(); }
} if !is_local_service_enabled(service_unit_name) {
load_enabled_units();
}
});
}); });
topbox.pack_start(&label, true, false, 1); topbox.pack_start(&label, true, false, 1);
@ -403,10 +418,13 @@ fn on_refreshkeyring_btn_clicked(_: &gtk::Button) {
}) })
.collect::<String>(); .collect::<String>();
let _ = utils::run_cmd_terminal( // Spawn child process in separate thread.
format!("pacman-key --init && pacman-key --populate {}", needles), std::thread::spawn(move || {
true, let _ = utils::run_cmd_terminal(
); format!("pacman-key --init && pacman-key --populate {}", needles),
true,
);
});
} }
fn on_update_system_btn_clicked(_: &gtk::Button) { fn on_update_system_btn_clicked(_: &gtk::Button) {
@ -416,7 +434,10 @@ fn on_update_system_btn_clicked(_: &gtk::Button) {
PacmanWrapper::Paru => ("paru --removemake -Syu", false), PacmanWrapper::Paru => ("paru --removemake -Syu", false),
_ => ("pacman -Syu", true), _ => ("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(_: &gtk::Button) { fn on_clear_pkgcache_btn_clicked(_: &gtk::Button) {
@ -426,7 +447,10 @@ fn on_clear_pkgcache_btn_clicked(_: &gtk::Button) {
PacmanWrapper::Paru => ("paru -Sc", false), PacmanWrapper::Paru => ("paru -Sc", false),
_ => ("pacman -Sc", true), _ => ("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: &gtk::Button) { fn on_appbtn_clicked(button: &gtk::Button) {