diff --git a/Cargo.toml b/Cargo.toml index 83ff170..e1a641a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ authors = ["Valeria Fadeeva "] name = "melawy-linux-updater-tray" version = "0.1.0" -edition = "2021" +edition = "2024" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/locales/app.yml b/locales/app.yml index d2b5c5d..fc420ee 100644 --- a/locales/app.yml +++ b/locales/app.yml @@ -4,10 +4,18 @@ label.melawy_linux_updater: en: Melawy Linux Updater ru_RU.UTF-8: Установщик обновлений Melawy Linux +menu.check_updates: + en: Chech updates + ru_RU.UTF-8: Проверить обновления + menu.update_system: en: Update system ru_RU.UTF-8: Обновить систему +menu.update_system_alter: + en: Update system alter method + ru_RU.UTF-8: Обновить систему альтернативным методом + menu.update_flatpak_applications: en: Update flatpak applications ru_RU.UTF-8: Обновить приложения flatpak diff --git a/scripts/checkupdates.sh b/scripts/checkupdates.sh new file mode 100755 index 0000000..d60d648 --- /dev/null +++ b/scripts/checkupdates.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +checkupdates + +echo "Finish!" + +echo "This window may close!" + +sleep 5 diff --git a/scripts/update_system_alter.sh b/scripts/update_system_alter.sh new file mode 100755 index 0000000..ee21335 --- /dev/null +++ b/scripts/update_system_alter.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [[ "$UID" != 0 ]]; then + echo "USER NOT ROOT" + sudo "$0" + exit +else + echo "USER IS ROOT" +fi + +pacman -Syu + +echo "Finish!" + +echo "This window may close!" + +sleep 5 diff --git a/src/main.rs b/src/main.rs index e2cf11b..302f7d2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,14 +14,16 @@ use { enum Message { Quit, NOP, + CheckUpdates, UpdateSystem, + UpdateSystemAlter, UpdateFlatpak, } fn run_cmd(cmd_string: &str, lang_env_var: Option<&str>) { if lang_env_var.is_some() { let key: &str = "LANG"; - std::env::set_var(key, lang_env_var.unwrap_or("C.UTF-8")); + unsafe { std::env::set_var(key, lang_env_var.unwrap_or("C.UTF-8")) }; } let args_vec: Vec<&str> = cmd_string.split_whitespace().collect(); @@ -63,12 +65,26 @@ fn main() { tray.add_label(&t!("label.melawy_linux_updater")).unwrap(); let (tx, rx) = mpsc::sync_channel::(2); + let check_updates_tx = tx.clone(); + tray.add_menu_item(&t!("menu.check_updates"), move || { + check_updates_tx.send(Message::CheckUpdates).unwrap(); + }) + .unwrap(); + let update_system_tx = tx.clone(); tray.add_menu_item(&t!("menu.update_system"), move || { update_system_tx.send(Message::UpdateSystem).unwrap(); }) .unwrap(); + let update_system_alter_tx = tx.clone(); + tray.add_menu_item(&t!("menu.update_system_alter"), move || { + update_system_alter_tx + .send(Message::UpdateSystemAlter) + .unwrap(); + }) + .unwrap(); + let update_flatpak_tx = tx.clone(); tray.add_menu_item(&t!("menu.update_flatpak_applications"), move || { update_flatpak_tx.send(Message::UpdateFlatpak).unwrap(); @@ -87,12 +103,24 @@ fn main() { gtk::main_quit(); glib::ControlFlow::Break } + Ok(Message::CheckUpdates) => { + // println!("Checking Updates"); + let cmd = "/usr/bin/konsole --noclose --separate -e /bin/sh -c /usr/share/melawy-linux-updater-tray/scripts/checkupdates.sh"; + let _ = run_cmd(cmd, None); + glib::ControlFlow::Continue + } Ok(Message::UpdateSystem) => { // println!("Update system"); let cmd = "sudo melawy-linux-updater"; let _ = run_cmd(cmd, None); glib::ControlFlow::Continue } + Ok(Message::UpdateSystemAlter) => { + // println!("Update system alter"); + let cmd = "/usr/bin/konsole --noclose --separate -e /bin/sh -c /usr/share/melawy-linux-updater-tray/scripts/update_system_alter.sh"; + let _ = run_cmd(cmd, None); + glib::ControlFlow::Continue + } Ok(Message::UpdateFlatpak) => { // println!("Update flatpak applications"); let cmd = "/usr/bin/konsole --noclose --separate -e flatpak update";