From 0c5f63eb3afa5e49d425b2c0730c5851bba292dc Mon Sep 17 00:00:00 2001 From: Vladislav Nepogodin Date: Mon, 13 Mar 2023 03:30:31 +0400 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=B7=20use=20msg=20dialog=20to=20inform?= =?UTF-8?q?=20user;=20use=20Exec::cmd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages.rs | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/pages.rs b/src/pages.rs index d3bdfa5..4a6817c 100644 --- a/src/pages.rs +++ b/src/pages.rs @@ -66,16 +66,25 @@ fn create_fixes_section() -> gtk::Box { // Spawn child process in separate thread. std::thread::spawn(move || { // check if you have orphans packages. - let status = std::process::Command::new("pacman") + let mut orphan_pkgs = Exec::cmd("/sbin/pacman") .arg("-Qtdq") - .status() - .expect("Found orphans packages"); + .stdout(Redirection::Pipe) + .capture() + .unwrap() + .stdout_str(); - if status.success() { - let _ = utils::run_cmd_terminal(String::from("pacman -Rns $(pacman -Qtdq)"), true); - } else { - let _ = utils::run_cmd_terminal(String::from("echo 'Not orphans packages'"), false); + // get list of packages separated by space, + // and check if it's empty or not. + orphan_pkgs = orphan_pkgs.replace('\n', " "); + if orphan_pkgs.is_empty() { + let dialog = gtk::MessageDialog::builder() + .message_type(gtk::MessageType::Info) + .text("No orphan packages found!") + .build(); + dialog.show(); + return; } + let _ = utils::run_cmd_terminal(format!("pacman -Rns {orphan_pkgs}"), true); }); }); clear_pkgcache_btn.connect_clicked(on_clear_pkgcache_btn_clicked);