👷 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]]
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",

View File

@ -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]

View File

@ -36,6 +36,8 @@ fn create_fixes_section() -> gtk::Box {
let rankmirrors_btn = gtk::Button::with_label("Rank mirrors");
removelock_btn.connect_clicked(move |_| {
// 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")
@ -52,18 +54,28 @@ fn create_fixes_section() -> gtk::Box {
}
}
});
});
reinstall_btn.connect_clicked(move |_| {
// 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 |_| {
// 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 |_| {
// 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);
button_box_f.pack_start(&update_system_btn, true, true, 2);
@ -150,6 +162,8 @@ 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 |_| {
// 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) {
@ -161,6 +175,7 @@ fn create_options_section() -> gtk::Box {
load_enabled_units();
}
});
});
topbox.pack_start(&label, true, false, 1);
box_collection.pack_start(&psd_btn, true, false, 2);
@ -403,10 +418,13 @@ fn on_refreshkeyring_btn_clicked(_: &gtk::Button) {
})
.collect::<String>();
// 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(_: &gtk::Button) {
@ -416,7 +434,10 @@ fn on_update_system_btn_clicked(_: &gtk::Button) {
PacmanWrapper::Paru => ("paru --removemake -Syu", false),
_ => ("pacman -Syu", true),
};
// 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) {
@ -426,7 +447,10 @@ fn on_clear_pkgcache_btn_clicked(_: &gtk::Button) {
PacmanWrapper::Paru => ("paru -Sc", false),
_ => ("pacman -Sc", true),
};
// 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) {